Requirement adalah gambaran dari layanan-layanan dan batasan-batasan bagi sistem yang akan dibangun. Dalam pengertian terkait, Requirement adalah gambaran pelayanan dan batasan yang disediakan oleh sistem dan bisa berupa definisi matematis dari fungsi-fungsi sistem.
Beberapa hal yang perlu diketahui dalam proses requirement, yaitu:
Â
- Requirement tidak hanya ditulis oleh pembangun (developer), tapi sebelumnya justru Klien menuliskan requirement dalam bentuk abstrak tentang kebutuhannya.
 - Requirement diserahkan kepada tim pembangun.
 - Setelah ada persetujuan, developer kemudian menuliskan kemampuan sistem yang bisa dipahami oleh klien.
Requirement berfungsi sebagai dasar penawaran suatu kontrak, sehingga proses requirement harus terbuka terhadap masukan dari klien. Selain menjadi dasar untuk penwaran, juga menjadi dasar dibuatnya kontrak, sehingga harus didefiniskan secara jelas atau detil.
Proses menemukan, menganalisis, mendokumentasikan dan pengujian layanan-layanan dan batasan tersebut disebut Requirement Engineering.
Requirements engineering adalah cabang dari software engineering yang mengurusi masalah yang berhubungan dengan: tujuan (dunia nyata), fungsi, dan batasan-batasan pada sistem software. Termasuk hubungan faktor-faktor tersebut dalam menetapkan spesifikasi yang tepat dari suatu software, proses evolusinya baik berhubungan dengan masalah waktu maupun dengan software lain. (Pengertian menurut Pamela Zave [Zave-97]: Romisatriawahono.net).
Beberapa metode yang perlu dipertimbangkan dalam proses Requirement, yaitu:
Â1. Interviews
Untuk mendapatkan informasi yang akurat, melakukan interview adalah satu hal yang sangat diperlukan. Sehingga persepsi yang keliru dalam rangka pengembangan sofware yang diinginkan menjadi berkurang.
Â2. Questionnaires
Semakin baik jika Questionnaires banyak melibatkan orang dan tersebar
Â3. Observation
Melakukan observasi adalah merupakan kegiatan melihat dari dekat kebutuhan klien di lapangan. Observasi yang baik menjadikan pengembangan software menjadi lebih tepat sasaran.
Â4. Searching
Carilah informasi sebanyak-banyaknya, karena informasi yang terbatas, cenderung tidak komprehensif dan bisa berakibat kekeliruan yang dapat menjadi masalah.
Ada beberapa macam Requirement dilihat dari segi kebutuhannya, yaitu:
Â1. Kebutuhan pengguna (User requirement)
a) Berisi pernyataan atau gambaran tentang layanan yang disediakan oleh sistem dan tentang batasan-batasan operasionalnya.
b) Pernyataan atau gambaran ini dapat dilengkapi dengan gambar/diagram yang dapat mudah dimengerti oleh klien.
User requirement menggambarkan functional dan non-functional requirement yang dapat dipahami oleh pengguna yang tidak memiliki latar belakang teknis yang cukup. Disini juga menjelaskan prilaku luar dari sistem, tidak secara teknis, karena itu perlu bahasa yang sederhana atau mudah dimengerti pada umumnya.
Â2. Kebutuhan sistem (System requirement)
a) Sekumpulan layanan/kemampuan sistem dan batasan-batasannya yang ditulis secara detil.
b) System requirement document sering disebut functional specification (spesifikasi fungsional), harus menjelaskan dengan tepat dan detil.
c) Ini bisa berlaku sebagai kontrak antara klien dan pembangun.
Kebutuhan sistem merupakan deskripsi sistem yang lebih detil dari user requirement, ini bisa berlaku sebagai kontrak pembangunan sistem dan bisa terdiri dari macam model system seperti model object atau model data-flow. System requirement menyatakan apa yang harus dikerjakan sistem, dan bukan bagaimana sistem diimplementasikan.
Â3. A software design specification
Adalah gambaran yang masih abstrak dari rancangan sebuah software yang menjadi dasar bagi perancangan dan implementasi yang lebih detil.
Penyebab Kegagalan Pengembangan Software Kegagalan dalam mengembangkan software tidak diinginkan semua pihak, baik pengembang ataupun klien. Pada umumnya kegagalan dalam pengembangan software disebabkan:
Â1. Tidak konsisten (inconsistent). Baik pihak pengembang atau klien jika kedua-duanya atau salah satunya tidak konsisten dalam melaksanakan kesepakatan yang sebelumnya sudah disetujui bersama, maka sistem yang akan atau sedang dikembangkan bisa terganggu atau bahkan bisa gagal. Sehingga sikap konsisten dari keduanya (pengembang dan klien) sangat diperlukan agar proyek pengembangan software menjadi sukses.
Â2. Tidak lengkap (incomplete). Ketidaklengkapan bisa disebabkan karena kelalaian secara sengaja dan bisa juga tidak disengaja. Sehingga perlu adanya ketelitian. Dalam pengembangan sistem, kelengkapan prosedur, kelengkapan bagian/obyek dari software yang diinginkan klien, dan kelengkapan lainnya yang sudah menjadi kesepakatan harus dipenuhi untuk menghindari kegagalan.
Â3. Tidak benar (incorrect) dari requirements specification (spesifikasi kebutuhan). Dalam mengembangkan software, ketidakbenaran dari spesifikasi kebutuhan hampir dipastikan pengembangan sofware menjadi amburadul dan sia-sia saja. Karena tidak nyambung. Apa yang dikerjakan dan apa yang diminta klien, tidak ketemu. Pengembangan software tidak berdasarkan dengan persepsi dan intuisi tetapi harus berdasarkan spesifikasi kebutuhan klien.
Sumber:
Â- Sommerville, Ian. "Software Engineering" .6th . Addison Wesley. 2001
Â- http://dosen.amikom.ac.id
Â- http://romisatriawahono.net
Â- Kamus Wikipedia