Requirements Engineering
Merancang dan membangun perangkat lunak komputer merupakan tantangan yang
menantang, kreatif, dan menyenangkan. Bahkan, membangun perangkat lunak begitu
menarik sehingga banyak pengembang perangkat lunak ingin segera terlibat tanpa
pemahaman yang jelas tentang apa yang diperlukan. Mereka berargumen bahwa hal-
hal akan menjadi jelas seiring dengan pembangunan, bahwa para pemangku
kepentingan proyek hanya akan dapat memahami kebutuhan setelah mengamati
iterasi awal perangkat lunak, bahwa segalanya berubah begitu cepat sehingga upaya
untuk memahami kebutuhan secara rinci adalah pemborosan waktu, bahwa inti dari
segalanya adalah menghasilkan program yang berfungsi dan segala yang lain menjadi
sekunder. Hal yang membuat argumen tersebut menarik adalah bahwa mereka
mengandung elemen-elemen kebenaran. Namun, setiap argumen tersebut memiliki
kekurangan dan dapat mengakibatkan proyek perangkat lunak gagal.
Rentang tugas dan teknik yang luas yang mengarah pada pemahaman kebutuhan
disebut rekayasa kebutuhan. Dari perspektif proses perangkat lunak, rekayasa
kebutuhan adalah tindakan utama dalam rekayasa perangkat lunak yang dimulai
selama aktivitas komunikasi dan berlanjut ke dalam aktivitas pemodelan. Ini harus
disesuaikan dengan kebutuhan dari proses, proyek, produk, dan orang-orang yang
melakukan pekerjaan.Orang lain mungkin menyarankan bahwa jembatan dimulai
dengan definisi sistem yang lebih luas, di mana perangkat lunak hanya merupakan
satu komponen dari domain sistem yang lebih besar. Tetapi terlepas dari titik awalnya,
perjalanan melintasi jembatan membawa Anda tinggi di atas proyek, memungkinkan
Anda untuk memeriksa konteks dari pekerjaan perangkat lunak yang akan dilakukan;
kebutuhan spesifik yang harus diatasi oleh desain dan konstruksi; prioritas yang
mengarahkan urutan penyelesaian pekerjaan; dan informasi, fungsi, serta perilaku
yang akan memiliki dampak yang signifikan pada desain yang dihasilkan. Ini
mencakup tujuh tugas yang berbeda: perintisan, pengungkapan, elaborasi, negosiasi,
spesifikasi, validasi, dan manajemen. Penting untuk dicatat bahwa beberapa dari
tugas-tugas ini terjadi secara bersamaan dan semuanya disesuaikan dengan kebutuhan
proyek.
1) Perintisan
Dalam beberapa kasus, percakapan informal sudah cukup untuk memicu
upaya rekayasa perangkat lunak yang besar. Tetapi secara umum, kebanyakan
proyek dimulai ketika sebuah kebutuhan bisnis diidentifikasi atau potensi
pasar atau layanan baru ditemukan. Para pemangku kepentingan dari
komunitas bisnis (misalnya, manajer bisnis, orang-orang pemasaran, manajer
produk) mendefinisikan alasan bisnis untuk ide tersebut, mencoba
mengidentifikasi luas dan kedalaman pasar, melakukan analisis kelayakan
kasar, dan mengidentifikasi deskripsi kerja dari cakupan proyek. Semua
informasi ini dapat berubah, tetapi sudah cukup untuk memicu diskusi dengan
organisasi rekayasa perangkat lunak. Pada perintisan proyek, Anda
membentuk pemahaman dasar tentang masalahnya, orang-orang yang
menginginkan solusi, sifat solusi yang diinginkan, dan efektivitas komunikasi
dan kolaborasi awal antara pemangku kepentingan lainnya dan tim perangkat
lunak.
2) Pengungkapan
Pada pandangan pertama, ini tampak cukup sederhana—bertanya kepada
pelanggan, pengguna, dan orang lain mengenai tujuan sistem atau produk, apa
yang harus dicapai, bagaimana sistem atau produk tersebut memenuhi
kebutuhan bisnis, dan terakhir, bagaimana sistem atau produk tersebut
digunakan dalam kegiatan sehari-hari.
Masalah cakupan
Batas sistem kurang jelas atau pelanggan/pengguna menentukan detail
teknis yang tidak perlu yang mungkin membingungkan, bukan
mengklarifikasi, tujuan keseluruhan sistem.
Masalah pemahaman
Pelanggan/pengguna tidak sepenuhnya yakin dengan apa yang
dibutuhkan, memiliki pemahaman yang buruk tentang kemampuan dan
batasan lingkungan komputasi mereka, tidak memiliki pemahaman
penuh tentang domain masalah, kesulitan dalam berkomunikasi
kebutuhan kepada insinyur sistem, mengabaikan informasi yang
dianggap "jelas", menentukan persyaratan yang bertentangan dengan
kebutuhan pelanggan/pengguna lainnya, atau menentukan persyaratan
yang ambigu atau tidak dapat diuji.
Masalah volatilitas
Persyaratan berubah seiring waktu.
Untuk membantu mengatasi masalah-masalah ini, Anda harus
mendekati pengumpulan persyaratan secara terorganisir.
3) Elaborasi
Informasi yang diperoleh dari pelanggan selama perintisan dan pengungkapan
diperluas dan disempurnakan selama elaborasi. Elaborasi didorong oleh
penciptaan dan penyempurnaan skenario pengguna yang menjelaskan
bagaimana pengguna akhir (dan aktor lainnya) akan berinteraksi dengan
sistem. Setiap skenario pengguna dipilah untuk mengekstrak kelas analisis—
entitas domain bisnis yang terlihat oleh pengguna akhir. Atribut dari setiap
kelas analisis didefinisikan, dan layanan yang diperlukan oleh setiap kelas
diidentifikasi. Hubungan dan kolaborasi antar kelas diidentifikasi, dan
berbagai diagram tambahan diproduksi.
4) Negosiasi
Tidak jarang bagi pelanggan dan pengguna untuk meminta lebih dari yang
dapat dicapai, mengingat sumber daya bisnis yang terbatas. Juga relatif umum
bagi pelanggan atau pengguna yang berbeda untuk mengusulkan persyaratan
yang bertentangan, dengan alasan bahwa versi mereka "penting untuk
kebutuhan khusus kami." Kita harus mendamaikan konflik-konflik ini melalui
proses negosiasi. Pelanggan, pengguna, dan pemangku kepentingan lain
diminta untuk memberi peringkat pada persyaratan, lalu mendiskusikan
konflik dalam prioritasnya. Dengan menggunakan pendekatan iteratif yang
memprioritaskan persyaratan, menilai biaya dan risikonya, serta menangani
konflik internal, persyaratan dieliminasi, digabungkan, dan/atau dimodifikasi
sehingga setiap pihak mencapai sebagian kepuasan.
5) Spesifikasi
Dalam konteks sistem berbasis komputer (dan perangkat lunak), istilah
spesifikasi memiliki arti yang berbeda bagi setiap orang. Sebuah spesifikasi
bisa berupa dokumen tertulis, serangkaian model grafis, model matematika
formal, kumpulan skenario penggunaan, sebuah prototipe, atau kombinasi dari
hal-hal tersebut.
6) Validasi
Produk kerja yang dihasilkan sebagai hasil dari rekayasa kebutuhan dievaluasi
untuk kualitasnya selama tahap validasi. Validasi kebutuhan memeriksa
spesifikasi untuk memastikan bahwa semua persyaratan perangkat lunak telah
dinyatakan secara jelas; bahwa inkonsistensi, kelalaian, dan kesalahan telah
terdeteksi dan diperbaiki; dan bahwa produk kerja sesuai dengan standar yang
ditetapkan untuk proses, proyek, dan produk tersebut.
7) Manajemen kebutuhan
Kebutuhan untuk sistem berbasis komputer dapat berubah, dan keinginan
untuk mengubah kebutuhan tetap ada sepanjang masa hidup sistem tersebut.
Manajemen kebutuhan adalah serangkaian kegiatan yang membantu tim
proyek mengidentifikasi, mengendalikan, dan melacak kebutuhan serta
perubahan pada kebutuhan kapan pun saat proyek berlangsung. Banyak dari
kegiatan ini identik dengan manajemen konfigurasi perangkat lunak.
2. Landasan Dasar
Dalam suasana yang ideal, para pemangku kepentingan dan insinyur perangkat lunak
bekerja bersama dalam tim yang sama. Dalam kasus seperti itu, rekayasa kebutuhan
hanya merupakan masalah berkomunikasi dengan kolega yang merupakan anggota
tim yang sudah dikenal dengan baik. Namun, kenyataannya seringkali jauh berbeda.
Pelanggan atau pengguna akhir mungkin berada di kota atau negara yang berbeda,
mungkin hanya memiliki gambaran samar tentang apa yang dibutuhkan, mungkin
memiliki pendapat yang bertentangan mengenai sistem yang akan dibangun, mungkin
memiliki pengetahuan teknis yang terbatas, dan mungkin memiliki waktu terbatas
untuk berinteraksi dengan insinyur kebutuhan. Tidak ada dari hal-hal ini yang
diinginkan, tetapi semuanya cukup umum, dan seringkali Anda terpaksa bekerja
dalam batasan yang diberlakukan oleh situasi ini.