Goal-based Requirement Analysis Method (GBRAM)

***Goal-based Requirement Analysis Method*** **(GBRAM)** adalah salah satu metode dari pendekatan ''Goal-oriented Requirement Engineering'' (GORE). Metode berbasis *[[:en:Goal|goal]]* ini menekankan perlunya mengkarakterisasi, mengkategorikan, menguraikan dan menyusun *goal* sebagai kebutuhan, tetapi biasanya gagal menawarkan strategi untuk mengidentifikasi *goal*, dan menerima begitu saja bahwa *goal* telah didokumentasikan. Penekanan *Goal-based Requirement Analysis Method* (GBRAM)  adalah pada identifikasi awal dan abstraksi *goal* dari berbagai sumber informasi. Metode Ini mengasumsikan bahwa tidak ada *goal* yang telah didokumentasikan atau diperoleh dari para pemangku kepentingan (*stakeholder)* dan dengan demikian dapat menggunakan diagram, pernyataan tekstual, transkrip wawancara, dll. untuk mendapatkan *goal* tersebut. Metode ini berguna untuk mengidentifikasi, menguraikan, dan mengatur *goal* untuk spesifikasi kebutuhan. Pendekatan berbasis *goal* fokus pada mengapa sistem dibangun, memberikan motivasi dan alasan untuk membenarkan kebutuhan perangkat lunak. Serupa dengan pendekatan GORE lainnya, sistem dan lingkungannya di GBRAM direpresentasikan sebagai kumpulan agen. Di sini, agen didefinisikan sebagai entitas atau proses yang berusaha untuk mencapai *goal* dalam suatu organisasi atau sistem berdasarkan tanggung jawab yang diasumsikan untuk *goal*. Dalam GBRAM, *goal*, agen, pemangku kepentingan, dll. ditentukan dalam bentuk tekstual dalam *goal schema*. Anehnya, metode ini tidak memberikan notasi grafis untuk mewakili *goal*, penyempurnaan *goal (goal refinement)*, agen, dll. GBRAM melibatkan kegiatan berikut: *goal analysis* dan *goal refinement*.

## ''Goal Analysis''
*Goal* adalah sasaran tingkat tinggi dari sebuah bisnis, organisasi, atau sistem. *Goal* tersebut menangkap alasan mengapa suatu sistem diperlukan dan memandu keputusan di berbagai tingkatan dalam perusahaan. Proses *goal analysis* adalah tentang eksplorasi sumber informasi untuk identifikasi *goal* diikuti oleh organisasi dan klasifikasi *goal* itu sendiri. *Goal analysis* merupakan proses eksplorasi dokumen yang dikumpulkan, dimulai dari informasi tentang organisasi (misalnya tujuan perusahaan) ke informasi spesifik sistem (misalnya kebutuhan sistem). Sering diasumsikan bahwa sistem perangkat lunak dibangun dengan beberapa *goal* atau tujuan, tetapi terkadang *goal* atau tujuan tersebut tidak jelas, tujuan perusahaan tidak selalu mencerminkan apa yang sebenarnya terjadi. Dengan demikian, penting untuk mengumpulkan informasi sebanyak mungkin untuk mendapatkan pemahaman yang luas tentang domain, organisasi, proses dan sistem.

Kegiatan ini selanjutnya dibagi menjadi:

* Eksplorasi (*Explore Activities*): mengeksplorasi informasi yang tersedia.
* Identifikasi (*Identify Activities*): penggalian *goal* dan agen yang bertanggung jawab dari informasi yang telah didapatkan pada kegiatan eksplorasi.
* Organisir (*Organize Activities*): mengklasifikasikan dan mengatur *goal* sesuai dengan hubungan ketergantungannya.

*Goal* dapat diekstraksi dari berbagai jenis informasi yang dikumpulkan termasuk deskripsi proses seperti diagram alir atau diagram ''Entity Relationship'' (ER). Penting untuk mengidentifikasi *goal* dari deskripsi proses dengan cara mencari pernyataan yang tampaknya memandu keputusan desain di berbagai tingkatan dalam suatu sistem atau organisasi. Ketika digunakan sebagai sumber informasi eksklusif, deskripsi proses tidak cukup untuk mencapai ketelitian dan kelengkapan. Oleh karena itu, jika memungkinkan, praktisi harus mempertimbangkan sumber-sumber lain yang mungkin seperti transkrip wawancara dengan para pemangku kepentingan. Namun, para pemangku kepentingan cenderung untuk mengungkapkan kebutuhan mereka dalam hal operasi dan tindakan daripada dalam bentuk *goal*. Dengan demikian, mencari kata-kata tindakan adalah cara yang berguna untuk mengekstrak *goal* dari deskripsi pemangku kepentingan. Contohnya, pada menu penjadwalan rapat, pemangku kepentingan mungkin akan menggunakan kata kerja semacam "menjadwalkan" dan "memesan" yang akan menjadi *goal* seperti "menjadwalkan rapat" dan "memesan ruang rapat".

Selain *goal*, ada pula agen, pemangku kepentingan, dan batasan (*constraint*) juga harus diidentifikasi. Pendekatan yang paling masuk akal adalah mengidentifikasi sedini mungkin agen yang bertanggung jawab dengan menentukan agen apa yang pada akhirnya bertanggung jawab untuk mencapai dan memelihara suatu *goal*. Contohnya, *goal* "menjadwalkan rapat" merupakan tanggung jawab dari penjadwal rapat. Batasan berguna karena mereka memberikan informasi tambahan mengenai kebutuhan yang harus dipenuhi agar *goal* tertentu dapat diselesaikan. Batasan diidentifikasi dengan mencari penghubung temporal, seperti kata "selama", "sebelum", dan "sesudah", atau varian apa pun darinya. Batasan juga dapat diidentifikasi dengan mencari hubungan ketergantungan. Bayangkan goal "Rapat dijadwalkan" pada sistem penjadwalan rapat dengan batasan: Ruang rapat harus tersedia selama rapat berlangsung (tanggal/waktu). Setelah *goal*, tanggung jawab agen dan pemangku kepentingan diidentifikasi dan ditentukan, goal tersebut kemudian diklasifikasikan sesuai dengan kondisi target mereka dan mulai dikembangkan.

## ''Goal Refinement''
Kebutuhan akan berubah-ubah dan terus berubah, banyaknya iterasi dalam proses penyempurnaan adalah hanya karena kebutuhan tersebut disalahtafsirkan. Setiap pemangku kepentingan memiliki kebutuhan dan prioritas yang berbeda, dan terkadang saling bertentangan. Sering kali, strategi untuk identifikasi dan penyelesaian konflik tidak memadai. *Goal* berkembang karena para pemangku kepentingan mengubah pikiran mereka dan memperbaiki serta mengoperasionalkan *goal* tersebut menjadi kebutuhan perilaku (*[[:en:Behavior|behavioural]] requirement*). Seiring berjalannya waktu, *goal* dari pemangku kepentingan dapat berubah atau, setidaknya, prioritas sasaran mereka cenderung berubah. Perubahan *goal* pertama adalah elaborasi (*elaboration*) dan yang kedua adalah penyempurnaan (*refinement*). Oleh karena itu, evolusi *goal* dipengaruhi melalui *goal elaboration* dan *goal refinement*. Teknik penting dalam *goal elaboration* adalah mengidentifikasi hambatan *goal*, menganalisis skenario  dan batasannya, dan mengoperasikan *goal*. G*oal refinement* menyangkut evolusi *goal* dari saat mereka pertama kali diidentifikasi hingga saat mereka diterjemahkan ke dalam kebutuhan operasional untuk spesifikasi sistem.

Kegiatan ini dibagi menjadi:

* Pemangkasan (*Pruning Activities*): Kegiatan pemangkasan seperangkat *goal*, yaitu menghilangkan *goal* yang bermakna sama
* Penguraian (*Elaborate Activities*): Kegiatan yang merujuk pada proses menganalisis *goal* yang ditetapkan dengan mempertimbangkan kemungkinan adanya hambatan  (perilaku atau *goal* lain yang mencegah atau menghalangi pencapaian *goal* yang diberikan). Mengidentifikasi hal yang dapat menghambat *goal* untuk mempertimbangkan cara yang mungkin membuat *goal* gagal tercapai, memungkinkan seseorang untuk mengantisipasi kasus pengecualian (''exception''). Ketika prioritas sasaran berubah, skenario akan memfasilitasi evaluasi prioritas baru ini.
* Membangun skenario (deskripsi perilaku dari suatu sistem dan lingkungannya yang timbul dari situasi terbatas) untuk mengungkap *goal* dan kebutuhan yang tersembunyi
* Mengoperasionalkan (*Operationalize Activities*): Kegiatan yang mewakili penerjemahan *goal* menjadi kebutuhan operasional.

*Goal refinement* terjadi ketika *goal* identik direkonsiliasi, ketika *goal* digabungkan ke dalam kategorisasi *sub-goal*, ketika kendala diidentifikasi, dan ketika *goal* dioperasionalkan. Dalam GBRAM, *achievement goal* digabung dan didaftar sesuai dengan hubungan dan ketergantungan yang mendahuluinya. Susunan ini memungkinkan untuk menentukan kondisi prasyarat (*[[:en:Precondition|precondition]]*) dan kondisi pasca (*[[:en:Postcondition|post-condition]]*) dari sebuah *goal*. Dengan demikian, salah satu kegiatan yang dibutuhkan GBRAM selama fase *goal refinement* adalah identifikasi prioritas *goal*. Hal ini pada dasarnya mewakili kebutuhan untuk mengidentifikasi *goal* mana yang harus dicapai sebelum yang lain. Metode ini menyarankan untuk mengajukan pertanyaan seperti “*Goal* apa yang harus mengikuti *goal* ini?” dan seterusnya. Metode lain yang berguna untuk menentukan hubungan prioritas adalah untuk mencari dependensi agen. Begitu prioritas *goal* telah ditetapkan, tabel diproduksi dengan *goal* yang disusun sesuai dengan urutan prioritas itu.

Goal disempurnakan dengan menghilangkan redudansi dan merekonsiliasi goal yang identik. Misalnya, "Rapat diatur" dan "Rapat dijadwalkan" memiliki maksud yang sama dan dapat direkonsiliasi. Pendekatan terbaik untuk menghilangkan redudansi adalah setelah *goal* digabung menjadi satu set *goal* yang diurutkan. Lebih mudah untuk mengidentifikasi *goal* yang identik karena mereka biasanya terdaftar berdekatan satu sama lain dalam set yang disusun karena mereka cenderung berbagi hubungan prioritas yang sama. *Goal* yang dioperasionalkan, agen yang bertanggung jawab, pemangku kepentingan, hambatan dan skenario akhirnya dikonsolidasikan ke dalam serangkaian *goal schema* yang dapat dengan mudah diterjemahkan ke dalam spesifikasi kebutuhan. Artefak yang dihasilkan, meskipun tidak formal, memberikan representasi tekstual dari kebutuhan sistem yang diatur sesuai dengan tujuan sistem.

## Referensi