Memahami requirements perangkat lunak, merupakan langkah awal dalam pengembangan perangkat lunak. Apa sebenarnya yang dimaksud dengan requirements tersebut? Ada yang mengartikan requirements sebagai pendefinisian perangkat lunak. Beberapa pakar software engineering, mengartikan requirements perangkat lunak sebagai kebutuhan atau persyaratan perangkat lunak; yakni setiap fungsi yang dapat dilakukan perangkat lunak.
Menurut hemat saya, proses pendefinisian perangkat lunak, haruslah merupakan proses penyelesaian masalah. Jika kita berparadigma bahwa perangkat lunak dibangun dengan tujuan khusus tertentu, untuk melaksanakan fungsi khusus tertentu, maka sebagai sebuah produk, tentu saja, perangkat lunak ditujukan untuk menyelesaikan masalah tertentu. Pendekatan problem-solving ini, merupakan pendekatan rekayasa.
Lihat sebuah Gambar dibawah ini:
Gambar diatas merupakan langkah-langkah untuk menyelesaikan masalah tertentu. Proses requirements software pun mengikuti pola yang demikian. Pressman menyebutkan bahwa requirements engineering helps software engineers better understand the problems they are trying to solve. Ini berarti Pressman mengikuti paradigma software for solving problems. Jadi, proses pendefisian kebutuhan perangkat lunak adalah sebuah proses dimana pengembang dan stakeholders berusaha memahami permasalahan dan mencarikan solusi permasalahan tersebut, dengan mengembangkan perangkat lunak. Jiwa "problem solving" inilah yang harus dikembangkan tim pengembang perangkat lunak.
Tentu saja, melakukan pendefisinian kebutuhan perangkat lunak HARUS melibatkan stakeholders secara intim. Karena pada dasarnya, permasalahan stakeholder-lah yang ingin diselesaikan, oleh dan dengan perangkat lunak yang akan dikembangkan. Seperti yang diungkapkan Pressman bahwa ... it is very important to understand the customer’s wants and needs before you begin designing or building a computer-based solution ...
Selanjutnya Pressman menulis bahwa ... the intent of requirements engineering is to produce a written understanding of the customer’s problem ... Ini harus dipahami sebagai tujuan yang harus dicapai oleh stakeholders dan tim pengembang, yakni permasalahan yang ingin diselesaikan haruslah dalam bentuk tertulis (written problems). Tinjauan permasalahan yang tertulis merupakan hal penting lainnya dalam proses pendefinisian perangkat lunak, karena sifat manusia (baik stakeholders dan pengembang) yang cenderung berubah-ubah, maka mendapatkan written problems merupakan hal yang mandatory. Biasanya dokumentasi kebutuhan perangkat lunak itu ditulis sebagai SRS (software requirements specification). SRS akan berisi scenario users, daftar fungsi dan fitures yang akan dikembangkan, model diagram analisis kebutuhan hingga spesifikasi sistem yang akan dikembangkan.
Selanjutnya Pressman menulis bahwa ... the intent of requirements engineering is to produce a written understanding of the customer’s problem ... Ini harus dipahami sebagai tujuan yang harus dicapai oleh stakeholders dan tim pengembang, yakni permasalahan yang ingin diselesaikan haruslah dalam bentuk tertulis (written problems). Tinjauan permasalahan yang tertulis merupakan hal penting lainnya dalam proses pendefinisian perangkat lunak, karena sifat manusia (baik stakeholders dan pengembang) yang cenderung berubah-ubah, maka mendapatkan written problems merupakan hal yang mandatory. Biasanya dokumentasi kebutuhan perangkat lunak itu ditulis sebagai SRS (software requirements specification). SRS akan berisi scenario users, daftar fungsi dan fitures yang akan dikembangkan, model diagram analisis kebutuhan hingga spesifikasi sistem yang akan dikembangkan.
1) Inception (software engineers use context-free questions to establish a basic understanding of the problem, the people who want a solution, the nature of the solution, and the effectiveness of the collaboration between customers and developers)
2) Elicitation (find out from customers what the product objectives are, what is to be done, how the product fits into business needs, and how the product is used on a day to day basis)
3) Elaboration (focuses on developing a refined technical model of software function, behavior, and information)
4) Negotiation (requirements are categorized and organized into subsets, relations among requirements identified, requirements reviewed for correctness, requirements prioritized based on customer needs)
5) Specification (written work products produced describing the function, performance, and development constraints for a computer-based system)
6) Requirements validation (formal technical reviews used to examine the specification work products to ensure requirement quality and that all work products conform to agreed upon standards for the process, project, and products)
7) Requirements management (activities that help project team to identify, control, and track requirements and changes as project proceeds, similar to software configuration management (SCM) techniques
Dalam prakteknya, pendefinisian persyaratan merupakan ketrampilan, sehingga harus dilatih agar supaya menjadi mahir. Semakin sering, seorang pengembang melakukan komunikasi-terbuka dengan stakeholders maka, pendefinisian perangkat lunak akan semakin clear dan sharp.
Selanjutnya, silahkan melihat tulisan saya berikut ini, sebagai bagian lanjutan dari Memahami Requirements Perangkat Lunak: