Menyegarkan Kembali Pemahaman tentang Requirement Engineering
Requirements engineering adalah fase terdepan dari proses rekayasa perangkat lunak (software engineering), dimana software requirements (kebutuhan) dari user (pengguna) dan customer (pelanggan) dikumpulkan, dipahami dan ditetapkan. Para pakar software engineering sepakat bahwa requirements engineering adalah suatu pekerjaan yang sangat penting. Fakta membuktikan bahwa kebanyakan kegagalan pengembangan software disebabkan karena adaya ketidakkonsistenan (inconsistent), ketidaklengkapan (incomplete), maupun ketidakbenaran (incorrect) dari requirements specification (spesifikasi kebutuhan).
Banyak definisi yang diungkapkan oleh para peneliti tentang requirements engineering. Satu definisi yang cukup jelas dan diterima secara umum adalah yang diuraikan oleh Pamela Zave [Zave-97]:
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 (dalam satu famili).
Studi di The Standish Group mencatat bahwa prosentase akumulatif kegagalan sebuah project pengembangan software sebagian besar disebabkan oleh masalah requirements dan spesifikasinya [Standish-94].
Untuk merangkum masalah yang ingin dipecahkan dalam cabang ilmu requirements engineering, kebanyakan pakar mengamini ungkapan Ed Yourdon dalam foreword yang ditulisnya untuk buku Managing Software Requirements – A Unified Approach karya Dean Leffingwell [Leffingwell-00]. Ed Yourdon menggunakan istilah “the rock problem (masalah batu) sebagai diskusi dasar masalah yang selalu muncul dalam proses pengerjaan proyek software.
Customer (pelanggan) yang datang kepada kita untuk mengerjakan sebuah proyek pengembangan software, adalah ibarat seseorang yang mengatakan kepada kita, “Tolong buatkan saya batu”. Ketika kita memberikan kepadanya sebuah batu, dia akan melihatnya sebentar dan mengatakan kepada kita, “Ya terima kasih, tapi sebenarnya yang saya inginkan adalah sebuah batu kecil berwarna biru”. Dan ketika kita bawakan untuknya batu kecil berwarna biru, dia mengatakan bahwa yang diinginkan adalah yang “bentuknya bulat”. Demikian seterusnya proses iterasi (iteration) terjadi berulangkali sampai akhirnya kita dapatkan yang sebenarnya diinginkan customer kita adalah “batu pualam kecil berwarna biru”. Meskipun mungkin sebenarnya bukan “tepat yang diinginkan”, tapi paling tidak “paling dekat” dengan yang diinginkan customer. Dan mungkin saja terjadi, customer kita mengubah pikiran tentang requirements pada saat proses interaksi dengan pengembang terjadi (dari iterasi pertama yang sekedar batu, sampai iterasi terakhir yang menghasilkan batu pualam kecil berwarna biru).
Frustasi terjadi baik di pihak pengembang maupun customer. Pengembang frustasi karena merasakan perbedaan signifikan antara requirements pertama yang dijelaskan customer dengan yang sebenarnya diinginkan customer, belum lagi waktu dan biaya besar sudah dikeluarkan pengembang dalam tiap iterasi. Di lain pihak, customer juga frustasi karena merasa sudah menjelaskan dengan baik dan pengembang tidak bisa memahami yang diinginkan, sehingga memerlukan waktu yang sangat lama.
Fenomena senada dengan masalah batu diatas sering juga disebut dengan “Yes, But Syndrome” (That is what I meant, but not exactly what I meant) dan “Undiscovered Ruins Syndrome” (Now that I see it, I have another requirement to add) [Romi-02].
Dari ilustrasi diatas, muncul keinginan untuk menerapkan pendekatan engineering (engineering approach) untuk memecahkan masalah tersebut, yang akhirnya membawa arus deras kemunculan cabang ilmu requirements engineering.
Hasil dari fase requirements engineering terdokumentasi dalam requirements specification. Requirements specification berisi kesepakatan bersama tentang permasalahan yang ingin dipecahkan antara pengembang dan customer, dan merupakan titik start menuju proses berikutnya yaitu software design. Sistemisasi proses negosiasi pengembang dan customer dalam requirements engineering dibagi dalam 3 proses besar yaitu: elicitation, specification, validation and verification. Formula ini kemudian juga dikenal dengan nama The Three Dimensions of Requirements Engineering. Proses requirements engineering ini dilakukan secara iterasi dengan mengakomodasi adanya feedback dari customer (user).
Requirements Elicitation
Adalah proses mengumpulkan dan memahami requirements dari user. Kadang masalah yang muncul berakar dari gap masalah knowledge domain (perbedaan disiplin ilmu yang dimiliki). Customer adalah expert pada domain yang softwarenya ingin dikembangkan (domain specialist), dilain pihak sang pengembang (requirements analyst) adakalanya sama sekali buta terhadap knowledge domain tersebut, meskipun tentu memahami dengan benar bagaimana sebuah software harus dikembangkan. Gap knowledge domain tersebut yang diharapkan bisa diatasi dengan adanya interaksi terus menerus dan berulang (iterasi) antara pengembang dan customer. Proses interaksi tersebut kemudian dimodelkan menjadi beberapa teknik dan metodologi diantaranya adalah interviewing, brainstorming, prototyping, use case, dsb.
Requirements Specification
Setelah masalah berhasil dipahami, pengembang mendeskripsikannya dalam bentuk dokumen spesifikasi dokumen. Spesifikasi ini berisi tentang fitur dan fungsi yang diinginkan oleh customer, dan sama sekali tidak membahas bagaimana metode pengembangannya. IEEE mengeluarkan standard untuk dokumen spesifikasi requirements yang terkenal dengan nama IEEE Recommended Practice for Software Requirements Specifications [IEEE-830]. Dokumen spesifikasi requirements bisa berisi functional requirements, performance requirements, external interface requirements, design constraints, maupun quality requirements.
Requirements Validation and Verification
Setelah spesifikasi requirements berhasil dibuat, perlu dilakukan dua usaha: Validation (validasi), yaitu proses untuk memastikan bahwa requirements yang benar sudah ditulis. Verification (verifikasi), yaitu proses untuk memastikan bahwa requirements sudah ditulis dengan benar. Proses validasi dan verifikasi ini melibatkan customer (user) sebagai pihak yang menilai dan memberi feedback berhubungan dengan requirements.
REFERENSI
[Leffingwell-00] Dean Leffingwell and Don Widrig, Managing Software Requirements: A Unified Approach, Addison Wesley, 2000.
[Romi-02] Romi Satria Wahono and Jingde Cheng, Extensible Requirements Patterns of Web Application, IEEE International Symposium on Cyber Worlds (CW 2002), Japan, 2002.
[Romi-03] Romi Satria Wahono, Analyzing Requirements Engineering Problems, IECI Japan Workshop 2003 (IJW-2003), Japan, 2003.
[Standish-94] The Standish Group, Charting the Seas of Information Technology Chaos, The Standish Group International, 1994.
[Zave-97] Pamela Zave, Classification of Research Efforts in Requirements Engineering, ACM Computing Surveys, 29(4), pp. 315-321, 1997.
penerapan IEEE-830 kok sepertinya membuat dokumentasi yang mengawang-awang, mungkin perlu membiasakan membuat standarnya.
Benar mas Adi, memang IEEE std 830 meskipun disebut recommended practice, tetap tidak praktis 😉 Biasanya supaya applicable kita harus mengikuti tafsir dan terjemahan beberapa pakar lain yang menjelaskan dengan dilengkapi best practice.
Om romi, requirement engineering dalam sistem informasi perusahaan sama gak dengan business analysis ? mohon pencerahannya
Business analysis ini sebenarnya kan business logic (proses) analysis, atau bahasa gampangnya analisa terhadap kegiatan apa yang terjadi dalam suatu institusi yang kita ingin bangun sistemnya. Dan yang kita analisa itu sebenarnya adalah suatu kebutuhan, kebutuhan dari pengguna (customer) tentang sistem yang akan dibangun. Jadi itu masuk dalam ruang lingkup requirement engineering.
Benar, saya sering mengalami hal yang sama, lalu bagaimana solusi terbaik? Apa perlu dibuat suatu standart form requirement? Bagaimana sebaiknya form requirement tersebut?
Bagaimana pula sebaiknya pasal yang menekankan hal ini dalam kontrak kerja? Mohon solusi terbaik atas permasalahan tersebut.
Ini masuk dalam tema metodologi untuk requirement capturing. Ada banyak baik yang formal, semi formal maupun non formal. Paling tidak untuk tekniknya bisa dengan brainstorming, interviewing, prototiping, dsb. Standard formnya bisa menggunakan std IEEE atau dari best practice yang dibuat oleh praktisi dan peneliti software engineering. Mudah-mudahan bisa kita bahas lagi di lain waktu tentang ini. Thanks.
Hmmmm…..
Ada hubungannya dengan Specification Language gak?
std IEEE itu ada yg versi gratisnya gak ya? kok mbayar semua alias harus beli buku?
Sepertinya bisa download dari internet, kalau versi aslinya memang bayar 😉 google.com saja std IEEE yang dicari apa.
salam kenal pa’ romi saya bayhakki mo tanya seputar masalah agent,software agent dan aplikasi agent itu seperti apa seh?saya harap pa’ romi bisa bantu saya.
thanks B4
# Bayhakki: sudah baca tulisan saya di ilmukomputer.com tentang software agent?
om, boleh tanya devinisi dari Software Engginering tuh apa toh, makasih sebelumnya, kalau boleh dapat dijawab lewat email aku…??? (steven_david06@yahoo.com)
# David: Coba artikel yang ini dibaca dulu: https://romisatriawahono.net/2006/05/30/meluruskan-salah-kaprah-tentang-rekayasa-perangkat-lunak/
Mohon pendapat pak Romi. Jika terjadi reqirement change dalam rangka pengembangan perangkat lunak apakah langkah yang paling efektif dilakukan agar tetap efisien.
Mohon jika Pak Romi memiliki artikel atau paper tentang klasifikasi requirement change untuk di kirim ke email saya: martasari@cs.its.ac.id, saya sangat terbantu sebagai referensi penelitian yang sedang saya kerjakan. Terimakasih
Mohon bantuannya om
Minta tolong contoh desain dari SRS apa aja om, yg mudah dan sederhana aja, penting bgt. Lagi buat tugas ngembangin software yang sudah ada/dibuat, referensinya apa aja, programnya gak usah dibuat cuma desainnya aja. Mohon ya om, Tanggal 05 Nopember ini mo presentasi.
Makasih banyak om.
Pak Romi,di software engineering saya pernah baca ada istilah functional model dan object oriented model, sebenarnya plus-minus dari kedua model tersebut apa ? Atau Pak Romi bisa memberikan alamat di internet sebagai referensi? Mohon bantuannya, terima kasih….
Permisi Pak Romi mau tanya.
Saya ada pertanyaan yang sama dengan Yola,
1. Apakah functional model yg disebut pada IEEE830
adalah model yang menerapkan Function Decomposition
Method’s (DFD – Data Flow Diagram) dan object
oriented model (UML) ?
2. Trus di IEEE830 dikatakan pemilihan penggunaan
model tersebut tergantung pada tingkat kompleksitas
dan besarnya program, lantas kalau kompleks dan
besar pake yang mana DFD atau UML.
Pak Romi mohon jawabannya, karena Saya penasaran dengan hal ini, terkait masalah DFD vs UML, memang dua-duanya dapat digunakan untuk analisa kebutuhan calon pengguna, tetapi yang jadi masalah adalah kalau sudah mengarah ke orientasi system informasi (bukan aplication oriented), karena system informasi-kan kompleks dan besar.
Issue DFD vs UML ini bisa mengarah ke kurikulum di jurusan SI(Sistem Informasi) dan TI(Teknik Informatika-SE). Model mana yang tepat digunakan pada jurusan SI dan model yang mana yang tepat digunakan pada jurusan TI.
opini Saya:
– DFD digunakan dalam analisa system pada jurusan SI
karena terkait dengan system (lebih kompleks dan
luas)
– UML digunakan dalam analisa pada jurusan TI
khususnya untuk SE(software engineering).
beberapa opini lain:
– SSAD (DFD) sudah old fashioned, sudah harus diganti
dengan OOM (UML)
– Beberapa orang mengatakan sulit membuat DFD (that’s
depend’s) tidak mencerminkan object, so harus
diganti dengan UML.
mohon bantuannya Pak….
hal ini menyangkut arah pembelajaran, terutama fokus dalam hal implementasi pada konsentrasi/jurusan.
Terima kasih
gury
my email:
gury.mail@gmail.com
#Auguri: Saya jawab ya mas.
IEEE-830 tentang SRS tidak menunjuk tool dan notasi untk requirement. Silakan digunakan apa saja asal sesuai dengan guidelines yang ada di IEEE-830.
UML memang mengarah ke pendekatan berorientasi obyek (OO), meskipun secara konsep awal tidak hanya digunakan untuk OO. Hal ini bisa kita lihat bahwa tidak semua diagram UML khusus untuk OO, hanya class diagram yang spesifik mengarah ke OO.
Yang digunakan untk requirement capturing pada UML sebenarnya hanya Use Case Diagram, dan sekarang muncul satu notasi lagi yang mengarah ke requirement elicitation bernama BPNM (Business Process Notation Model).
Saya kok tidak setuju bahwa sistem informasi itu lebih kompleks dan besar daripada aplikasi 😉 Keduanya bisa sama-sama kompleks dan besar.
DFD itu seharusnya bukan alat untuk requirement elicitation, UMLpun hanya di Use Case Diagram dan BPMN. Kalau alat untuk software design itu mungkin lebih tepat, sesuai dengan tahapan RPL: requirement specification -> design -> coding -> testing -> maintenace
Mana yang harus digunakan? Tidak ada yang memaksa. Hanya saya lihat standard di software house di dunia, semua mengarah ke UML karena secara dejure dan defacto UML lah yang diakui sebagai tonggak berhentinya perang notasi dan metodologi di era 1970-1996.
Wahhh thank’s nih pak Romi, atas penjelasannya.
Sekarang clear deh. So.. mungkin agar lebih siap menyosong dunia kerja, lebih baik mhs lebih dianjurkan untuk menggunakan UML dalam design ya?
khan standard di software house di dunia, semua mengarah ke UML.
thank’s
Gury
Kok tidak menyinggung soal traceability, bukankah ini justru yang wajib dalam sebuah requirement engineering ?
Juga sebagai promotor opensource, kenapa keberadaan alat bantu OSRMT tidak disinggung ?
salam kenal sebelumnya mas…
saya mau tanya, kalau kita mau buat penelitian Tugas Akhir, dimana alasan untuk membuat tugas akhir tersebut (selain karena tuntutan sebagai tugas akhir tentunya) bukan karena adanya suatu masalah, tapi karena adanya suatu kesempatan (challenge), bagaimana? bisa gak? khususnya untuk bagian analysis requirement/requirement engineering?
terima kasih atas pencerahannya..
karena dari penjelasan dari narasumber yang saya dapat bahwa, suatu penelitian itu dilakukan karena dua alasan, yaitu karena ada masalah dan karena adanya kesempatan..
bagaimana menurut pendapat mas Romi??
Om Romi, salam kenal dulu. Ada beberapa issue ni om:
1. Setelah baca IEEE Std 830, daku agak mengalami kebingungan di point 3, yaitu specific requirement, yang berdasarkan annexures nya ada banyak macam pendekatan, mau object, feature, model, dsb. Untuk kondisi sekarang, menurut om Romi lebih condong menggunakan pendekatan yang mana ? mengingat tu standard kan terbit taun Juni 1998, ada kemungkinan perubahan standard ga Om setelah 10th berlalu ? Maklum, baru terjun di dunia software engineering.
2. Klo di dunia kerja ada posisi tersendiri ga si Om, untuk requirement engineering ini ? atau memang sudah dirangkap dalam satu title yaitu Software Engineering?
Mohon penjelasannya, sebelumnya.. thx berat.
Pak Romi, bagaimana cara menghadapi dan melakukan proses Requirement apabila customer tidak tahu persis apa yang mereka inginkan?
Ibaratnya, customer ingin untuk dibuatkan sebuah batu. Tapi ketika ditanya mereka ingin batu yang seperti apa, mereka tidak tahu pasti. “Yang penting batu!”jawabnya.
Mohon pencerahannya…terima kasih
Om romi, mohon bantuannya.
1.kalo dalam pengembangan requirement management tool digunakan metodologi apa ya? kalo ada, apa yang paling cocok untuk mengembangkan RM Tool.
Terima kasih.
Hallo Mas
Mo tny mengenai requirements abstraction tks
Pak Romi yth.
Pak Romi apa sih yang di maksud dengan “implement the requirements”, apakah hal ini ada bahasannya dalam requirement engineering? Bingung nich Pak
Yth Pak Romi, saya sedang melakukan penulisan untuk tugas mata kuliah saya tentang Requirement Management…
koq download lengkapnya dah ga bisa ya…bisa tolong kasih tau ga, tulisan lengkap pak Romi ini…
dari dulu saya selalu memakai bahan2 dari Pak Romi
Termasuk recommended practice juga ya. Jh
thank atas infonya mas romi
keep up posting mas,.. ini ilmu yang sangat dicari banyak orang
Terimakasih atas info nya Mas,,,
thank’s
atas informasi
..semoga sukses terus..
YM C.S kami ada hanya 2 ,Yaitu :
Salam kenal Pak Romi
Mohon pencerahannya,
Apakah validasi requirement aplikasi sama dengan validasi pada requirement sistem informasi ?
Salam kenal Pak Romi..
Tolong dong beri Contoh Penulisan Hasil Pengumpulan Requirement dan tolong juga bagaimana cara menentukan Fungsional Requirement dan non fungsional requirement terimakasih sebelumnya.
biasa aja
Untuk bahwa startup lokal bukan sekedar hype memang memerlukan waktu. Jadi, kita lihat saja startup mana saja yang bisa bertahan sampai beberapa tahun ke depan. Terima kasih kritik dan sarannya untuk komunitas startup lokal, sangat membantu kami-kami yang bergerak di startup untuk bertambah semangat
Kalau saya memang tidak tahu sama sekali ilmu ini, jadi ini sekaligus pembelajaran baru bagi saya. terima kasih pak
pak romi saya mau bertanya, solusi agar tidak terjadi “unstable requirements” gimana yaa?
Terimakasih penjelasannya. Sangat membantu belajar