cekidot...
2.1
Requirements Engineering
2.1.1 Definisi Requirements
Menurut Dorfman (1990) Sebuah requirement dalam konteks rekayasa
perangkat lunak adalah sebuah kemampuan yang harus dimiliki dari suatu software.
Kemampuan ini dapat ditujukan untuk memecahkan suatu permasalahan ataupun
diperlukan untuk memenuhi ketentuan-ketentuan tertentu (seperti standar
tertentu, keputusan manajemen, ataupun alasan-alasan politis).
Kumpulan dari berbagai requirement digunakan dalam berbagai aspek
dalam pengembangan sebuah sistem. Dalam tahap perancangan, requirement digunakan
untuk menentukan berbagai fitur yang akan ada di dalam sistem. Pada penghujung
sebuah development effort, himpunan requirement ini digunakan
untuk melakukan validation & verification untuk memastikan
perangkat lunak yang telah dibuat memang sesuai dengan yang diinginkan. Bahkan
selagi pengembangan berjalan, himpunan requirement ini terus
dimodifikasi untuk menyesuaikannya dengan berbagai kebutuhan para stakeholder
serta tenggat waktu dan dana yang tersedia.
Menurut Nuseibeh (2000) Secara luas, software systems requirements
engineering (RE) adalah proses untuk menemukan suatu himpunan requirement
yang tepat sehingga suatu perangkat lunak dapat memenuhi kegunaannya.
Proses ini dilakukan dengan cara mengenali para stakeholder serta
kebutuhan mereka serta mendokumentasikannya di dalam bentuk yang dapat
digunakan untuk analisa, komunikasi, dan implementasi yang mengikutinya
Menurut Zave (1997) memberikan salah satu definisi yang paling jelas dari
RE: Requirements engineering is the branch of software engineering concerned
with the real-world goals for, functions of, and constraints on software
systems. It is also concerned with the relationship of these factors to
precise specifications of software behavior, and to their evolution over
time and across software families.
2.2 Proses RE
Menurut Kotonya (1998) Terdapat lima aktivitas utama di dalam proses requirements
engineering, yaitu :
·
Requirements elicitation
·
Requirements analysis and
negotiation
·
Requirements documentation
·
Requirements validation
·
Requirements management and
evolution
2.2.1 Requirements Elicitation
Menurut Pressman (2001) Pada tahap ini dikumpulkan berbagai requirement dari
para stakeholder. Seorang pelanggan mempunyai masalah yang dapat
ditangani oleh solusi berbasis komputer. Tantangan ini ditanggapi oleh seorang
pengembang. Di sinilah komunikasi dimulai antara pelanggan, pengembang, dan
calon pengguna dari sistem yang akan dibuat. Namun istilah elicitation agak
diperdebatkan. Ada yang menganalogikannya dengan seperti yang dilakukan oleh
para arkeolog ketika mengumpulkan runtuhan-runtuhan di situs purbakala.Ada yang
memberikan istilah requirements capture karena dilakukan terutama dengan
mengumpulkan fakta-fakta. Bahkan menyatakan bahwa requirement sebenarnya
dibuat ketimbang didapatkan (elicitated). Walau yang terakhir ini
nampaknya “lain sendiri”, argumen ini dapat diterima untuk pengembangan software
yang sama sekali baru maupun untuk software-software permainan (games)
yang terkadang permasalahan yang akan dipecahkan oleh game tersebut
cenderung tidak berhubungan dengan solusinya ataupun sebenarnya masalah yang
ada berasal dari bagian marketing2.
Sejalan dengan proses RE secara keseluruhan, tujuan dari requirements
elicitation adalah :
· Untuk mengetahui masalah apa saja
yang perlu dipecahkan dan mengenali perbatasan-perbatasan sistem (system
boundaries).
·
Untuk mengenali siapa saja para stakeholder.
·
Untuk mengenali tujuan dari
sistem; yaitu sasaran-sararan yang harus dicapainya.
Beberapa jenis teknik pengumpulan requirement:
· Traditional techniques merupakan berbagai cara pengumpulan data. Cara-cara ini termasuk kuesioner,
survey, wawancara, serta analisis dari berbagai dokumentasi yang ada seperti
struktur organisasi, petunjuk pelaksanaan (juklak) serta manual-manual
dari sistem yang sudah ada.
· Group elicitation techniques bertujuan untuk mengembangkan dan mendapatkan persetujuan stakeholder,
sementara memanfaatkan dinamika kelompok untuk memperoleh pengertian yang lebih
mendalam. Cara-cara ini termasuk brainstorming dan focus group,
juga berbagai workshop RAD/JAD (workshop untuk membangun sebuah
konsensus dengan menggunakan seorang fasilitator yang netral).
· Prototyping techniques membuat suatu implementasi parsial dari software yang akan dibangun untuk
membantu para pengembang, pengguna, serta pelanggan untuk lebih mengerti
berbagai requirement sistem. Digunakan untuk mendapatkan umpan-balik
yang cepat dari para stakeholder, teknik ini juga dapat digabungkan
dengan berbagai teknik yang lain, seperti misalnya digunakan di dalam sebuah
acara group elicitation ataupun sebagai basis dari sebuah kuesioner.
·
Model-driven techniques menempatkan suatu model khusus dari jenis informasi yang akan dikumpulkan
untuk digunakan sebagai pedoman proses elicitation. Termasuk di
antaranya adalah goal based methods seperti KAOS dan juga cara-cara
berbasis skenario seperti CREWS.
·
Cognitive techniques termasuk serangkaian cara yang semulanya dikembangkan untuk knowledge
acquisistion untuk digunakan di knowledge-based systems. Teknik-teknik
ini termasuk protocol analysis (di mana seorang ahli melakukan sebuah
tugas sembari mengutarakan pikiran-pikirannya), laddering (menggunakan
berbagai pemeriksaan untuk mendapatkan struktur dan isi dari pengetahuan stakeholder),
card sorting (meminta para stakeholder untuk menysun kartu-kartu
secara berkelompok, di mana setiap kartu tertera nama sebuah domain entity),
dan repertory grids (membuat sebuah attribute matrix for entities
di mana para stakeholder diminta untuk mengisi matriks tersebut).
· Contextual techniques muncul pada tahun 1990-an sebagai sebuah pilihan di luar traditional maupun
cognitive techniques. Termasuk di antaranya penggunaan teknik etnografis
seperti pengamatan terhadap para peserta. Juga termasuk ethnomethodogy dan
analisis percakapan, yang keduanya menggunakan analisis terinci untuk mengenali
pola-pola dalam percakapan dan interaksi
Dalam aktivitas requirements elicitation, ada baiknya untuk
mengkategorikan berbagai requirement yang ditemukan. Suatu requirement
dapat diklasifikasi sebagai functional requirement, non-functional
requirement, maupun constraints. Sedangkan mengatakan bahwa suatu requirement
dapat diklasifikasikan menjadi very general requirements, functional
requirements, implementation requirements, performance requirements,
dan usability requirements.
Namun nyatanya klasifikasi (atau cara-cara pengkategorian lainnya) requirement
ini tidak mutlak diperlukan; klasifikasi requirement ditujukan
terutama untuk menuntun proses elicitation. Hal ini perlu diwaspadai
karena gara-gara para anggota tim tidak dapat setuju akan klasifikasi dari
sekumpulan requirement, maka development effort dari sebuah
perusahaan Fortune 500 mengalami stagnasi. Terjebaknya mereka di dalam masalah
semantik ini merupakan salah satu contoh dari analysis paralysis.
2.2.2 Requirements modeling and analysis
Menurut Bennett (2000) Sebuah model adalah perwakilan dari benda lain yang
mempunyai rincian yang cukup untuk membantu penyelesaian tugas-tugas tertentu. Data
modeling bertujuan untuk mendapatkan pengertian dari pemrosesan serta
pengaturan informasi. Behavioral modeling memodelkan berbagai perilaku
dari para stakeholder serta berbagai sistem lain yang berhubungan
dengannya. Domain modeling menyediakan suatu bentuk abstrak dari
dunia tempat beroperasinya sistem yang akan dibuat.
Model-model yang dihasilkan dalam tahap ini ditujukan untuk analisa
terhadap berbagai requirement yang ada. Para stakeholder berunding
untuk mendapatkan suatu himpunan requirement akhir yang akan digunakan
untuk tahap pengembangan selanjutnya. Menurut setelah selesainya tahap idealnya
ini akan berlaku:
·
Berbagai requirement dari
masing-masing stakeholder tidak bertentangan.
·
Informasi di dalam semua requirement
harus lengkap.
·
Berbagai requirement yang
ada harus selaras dengan anggaran yang dimiliki.
Walaupun dengan adanya batasan-batasan tersebut, seluruh requirement sebaiknya
mudah diubah ataupun disesuaikan.
2.2.3 Requirement Documentation
Menurut Kotonya (1998), dokumen ini sebaiknya:
·
Hanya menetapkan perilaku sistem
sebagaimana terlihat dari luar
·
Menetapkan batasan-batasan (constraints)
yang diberikan kepada implementasinya.
·
Mudah diubah.
·
Berguna sebagai alat referensi
untuk pemeliharaan sistem.
·
Memuat gambaran akan siklus
kehidupan sistem di masa yang akan datang.
Untuk meningkatkan readability, beberapa standar dokumentasi SRS
telah dikembangkan. Namun, serangkaian standar dan template apabila
berdiri sendiri tidak dapat digunakan sebagai cara yang mandraguna untuk
memberi struktur bagi sekumpulan requirement; tetapi struktur yang
digunakan haruslah dikembangkan sendiri-sendiri tergantung dari masalah yang
sedang ditangani. Masalah standarisasi notasi dan pendokumentasian requirement
membuat pendekatan sistematis terhadap RE menjadi sulit. Daftar praktis
ciri-ciri yang dinginkan pada sebuah requirements document:
- Unambigous. Idealnya, hanya ada satu interpretasi terhadap sebuah requirements document.
- Complete. Semua aspek yang bersangkutan haruslah dijelaskan secara lengkap di dalam requirements document.
- Consistent. Tidak ada pernyataan yang bertentangan dalam requirement document.
- Verifiable. Setelah sebuah sistem diimplementasikan, sebaiknya dapat dipastikan bahwa sistem tersebut memenuhi requirement awal.
- Validatable. Suatu requirement sebaiknya dapat diperiksa oleh pelanggan untuk memastikan bahwa requirement tersebut memang memenuhi kebutuhannya.
- Modifiable. Perubahan sebaiknya mudah dilakukan dan efek dari perubahan ini terhadap bagian-bagian lain sebaiknya minimal.
- Understandable. Semua stakeholder sebaiknya dapat mengerti requirement seperti ditetapkan di dalam dokumen.
- Testable. Semua requirement sebaiknya cukup kuantitatif untuk digunakan sebagai titik tolak pengujian sistem.
- Traceable. Harus dimungkinkan adanya pengacuan (reference) antar berbagai bagian di dokumen requirement ataupun ke bagian-bagian lain dari proses pembuatan perangkat lunak.
2.2.4 Requirements Validation
Menurut Kotonya (1998) Dalam tahap ini, dokumen dari tahap sebelumnya
diperiksa agar memenuhi kriteriakriteria sebagai berikut :
·
Lengkap.
·
Konsisten.
·
Tunduk pada keputusan-keputusan
yang diambil pada tahap requirements analysis.
Apabila ada requirement yang tidak memenuhi kriteria-kriteria
tersebut, mungkin ada baiknya bagi proses RE untuk kembali ke tahap-tahap
sebelumnya. Beberapa contoh masalah requirement yang terungkap pada
tahap validasi antara lain :
·
Kurang/tidak cocok dengan
bakuan-bakuan kualitas.
·
Kata-kata yang digunakan kurang
baik sehingga requirement menjadi ambigu.
· Berbagai kesalahan yang terdapat
pada model-model baik – model sistem ataupun model permasalahan yang hendak
dipecahkan.
·
Pertentangan antar requirement
yang tidak ditemukan pada tahap analisis.
2.2.5 Requirements management and evolution
Menurut Kotonya (1998) Sebuah software yang sukses pasti akan
berevolusi mengikuti perubahan lingkungannya. Sebaliknya, software yang
sudah tidak diperbaharui berarti telah ditinggalkan oleh para penggunanya.
Dalam perjalanan evolusi sebuah software, requirement akan software
tersebut akan bertambah, berubah, atau terkadang berkurang. Agar perubahan
ini terkendali, perlu adanya aktivitas requirements management (RM).
Proses elicitation, analysis, documentation, dan validation
dalam RE berjalan secara berkesinambungan tanpa adanya batasan-batasan yang
definitif. Fungsi lain dari requirements management adalah untuk
memastikan agar berbagai aktivitas dalam proses RE ini berjalan dengan baik –
agar iterasi demi iterasi dalam RE dilakukan secara terkendali dan (diharapkan)
menuju suatu kemajuan. Maka dari itu requirements management digambarkan
secara paralel dengan pengulangan dari aktivitas-aktivitas RE lainnya.
Dalam aktivitasnya mengendalikan perubahan requirement maupun
mengendalikan proses RE itu sendiri, pada requirements management juga
dilakukan penyusunan berbagai informasi traceability – yaitu
keterhubungan antara berbagai artifak di dalam proses RE (termasuk perubahan requirement).
Traceability itu sendiri merupakan konsep yang penting di dalam RE yang
akan selanjutnya dibahas berikutnya.
2.3 Traceability
Menurut Jarke (1998) Traceability adalah cara untuk membentuk
hubungan-hubungan antara manusia dan sistem dengan model-model di mana mereka
dikelola. Kutipan berikut memberikah sebuah garis besar mengenai pentingnya
traceability di dalam rancangan sistem secara keseluruhan: “Requirement
tracing is emerging as an effective bridge that aligns system evolution
with changing stakeholder needs. It also helps uncover unexpected problems
and innovative opportunities, and lays the groundwork for corporate knowledge
management.”
Secara tradisional ada empat jenis informasi traceability :
·
Forward-from traceability menghubungkan requirement ke rancangan komponen-komponen dan
penerapannya serta memberikan tanggungjawab kepada komponen-komponen sistem
tersebut untuk pencapaian requirementrequirement tertentu.
·
Backward-to traceability menghubungkan rancangan serta komponenkomponen penerapannya kembali kepada requirement
untuk memungkinkan pengujian sistem terhadap pemenuhan requirement tersebut.
·
Forward-to traceability menghubungkan informasi domain beserta informasi lain yang
bersangkutan yang mendahului rancangan sistem ke berbagai requirement. Traceability
ini memungkinkan penaksiran pengaruh perubahan kebutuhan stakeholder maupun
perubahan berbagai asumsi.
·
Backward-from traceability menghubungkan requirement ke sumber-sumbernya pada dokumen-dokumen
ataupun orang-orang lain. Traceability ini memungkinkan diketahuinya
struktur kontribusi yang mendasari berbagai requirement yang ada – yang
sangat penting di dalam validasi requirement.
Dua jenis trace yang pertama sering disebut post-traceability sedangkan
dua yang terakhir disebut pre-traceability. Seperti ditunjukkan di saat
ini post-traceability cenderung lebih dimengerti ketimbang pre-traceability,
walaupun pre-traceability mempunyai kemungkinan untuk menyediakan
hubungan antara bisnis dengan IT3 yang saat ini sangat diperlukan.
Walaupun empat jenis trace tersebut sangat populer di dalam berbagai
literatur, mereka bukanlah satu-satunya jenis traceability yang ada.
Bahkan nampak bahwa untuk setiap proyek mungkin diperlukan jenis-jenis trace-nya
sendiri sesuai dengan kebutuhan proyek tersebut; kemampuan ini disediakan di
banyak alat bantu RE.
2.4 Requirements Patterns
Menurut Gamma (1995), telah ditunjukkan bahwa pattern dapat membawa pengaruh positif dalam
bidang software engineering. Walau buku ini membahas design pattern –
yang notabene adalah artifak dari solution space, semangat yang sama
juga dapat diterapkan pada problem space. Dengan mengumpulkan serta
mengkategorisasikan berbagai pengalaman kolektif dalam bidang RE, tentulah akan
meningkatkan kualitas RE sebagai ilmu praktis.
Sebuah pattern adalah pemecahan yang telah ditemukan untuk suatu
masalah yang umum. Praktis diresmikan oleh Gamma dkk. dalam [Gamm95], suatu pattern
digambarkan sebagai kesatuan dari niatan, alias, motivasi, penggunaan,
akibat, serta contoh penerapannya.
Berbagai keuntungan yang bisa didapatkan dengan mempelajari pattern menjadi
pendorong riset ke arah RE patterns. Sedikit berbeda dengan design
patterns, tujuan dari setiap RE pattern adalah untuk mengurangi
ambiguitas yang dapat terjadi serta pada saat yang bersamaan memberikan
kebebasan terhadap pemenuhan requirement tersebut.
Memang studi RE patterns masih ketinggalan ketimbang yang telah
dilakukan di dalam solution space. Walaupun demikian, telah diberikan
tiga pattern sebagai satu permulaan bagi sebuah katalog yang dapat
menandingi. Ketiga pattern ini telah digunakan dengan sukses di dalam
empat SRS yang berbeda di mana masing-masing menangani problem domain yang
berbeda pula:
·
Specify (Locate) – menggambarkan bagaimana seorang (sebuah) aktor dapat menemukan suatu
obyek di dalam aplikasi.
·
Present (Display) – menggambarkan data yang harus ditampilkan oleh aplikasi.
·
Prioritize (Sort) – untuk
mengkomunikasikan bagaimana suatu aspek aplikasi didahulukan dari yang lain.
Ketiga pattern di atas terutama difokuskan untuk pembuatan berbagai requirement
statement. Tetapi karena RE juga meliputi requirements management,
maka diberikan dua pattern berikut untuk mengatasi berbagai tantangan
politis di dalam RE:
· Requirement As [a] Shield – ketika seseorang mengkritik pekerjaan yang dilakukan, untuk menunjukkan
bahwa kritik yang dilontarkan tidak berhubungan dengan masalah yang sedang
ditangani.
· Requirement As [a] Stick – untuk meniadakan berbagai pendekatan atau strategi yang diusulkan namun
tidak menguntungkan bagi organisasi; dengan mengevaluasi pendekatan-pendekatan
dan strategi ini terhadap requirement yang telah diterima,
kelemahan-kelemahannya akan cepat nampak.
2.5 Alat Bantu RE
Menurut Kotonya (1998) Tipe alat bantu RE yang menjadi fokus proyek ini
adalah alat bantu untuk requirements management. Alat bantu ini berguna
untuk mengumpulkan system requirements di dalam sebuah tempat
penyimpanan serta menyediakan berbagai fasilitas untuk mendapatkan
informasi mengenai berbagai requirement tersebut. Sebuah alat bantu requirements
management umumnya memiliki fasilitasfasilitas berikut:
· Sebuah requirements browser sehingga
para pembaca dapat mengambil suatu requirement yang spesifik dari database
ataupun repository.
· Sebuah query system sehingga
para pengguna dapat mengambil berbagai requirement yang berhubungan.
· Sebuah requirements converter dan
processor linker yang dapat mengubah berbagai requirement di
dalam sebuah dokumen pengolah kata ke dalam bentuk basis data requirement dan
dapat memelihara hubungan antara database dengan perwakilan bahasa alami
dari requirement tersebut.
· Sebuah change control system yang
dapat memelihara informasi mengenai perubahan-perubahan requirement dan
hubungan-hubungan dengan berbagai requirement yang terpengaruhi oleh
perubahan tersebut.
2.6 Arsitektur Alat Bantu
Menurut Wiegers (1999) Secara tradisional, alat bantu RE
menyimpan berbagai requirement di dalam bentuk database atau dokumen.
Menurut [Wieg99], pendekatan berbasis dokumen untuk menyimpan requirement mempunyai beberapa keterbatasan:
·
Sulit untuk menjaga agar semua
dokumen tetap tersinkronisasi dan terkini.
· Mengkomunikasikan
perubahan-perubahan kepada semua anggota tim yang terpengaruh merupakan sebuah
proses manual.
· Sulit untuk membuat
hubungan-hubungan antara functional requirement dengan berbagai use case, rancangan, kode program, pengujian, dan berbagai tugas untuk menghasilkan artifak-artifak
tersebut.
·
Tidak praktis untuk melacak status
dari setiap requirement.
Selain masalah-masalah di atas, masalah umum yang
terjadi dengan bahasa alami sudah umum diketahui. Sebuah pemecahan kepada
masalah-masalah ini adalah dengan menyimpan berbagai requirement di dalam sebuah basis data multi-user serta mengendalikan akses kepadanya dengan alat bantu requirement management. Namun juga ada beberapa batasan dengan pendekatan ini :
·
Format file database seringkali proprietary dan tidak dapat dibaca oleh
manusia.
· Format file database tidak komplementer; apabila sebuah dokumen requirement disimpan di dalam suatu database menggunakan satu alat bantu maka tidaklah
mungkin untuk menambah informasi dengan suatu alat bantu lain yang berbeda. Hal
ini hanya mungkin dengan dokumen, di mana lebih banyak informasi dapat
diberikan dengan menambahkan lebih banyak teks.
· Karena sebenarnya tidak ada
dokumen requirement, maka proses requirement yang ada sangat tergantung dengan alat bantu yang digunakan. Banyak alat
bantu RE yang menggabungkan kedua pendekatan, baik yang berbasis dokumen maupun
dengan database.
Sedangkan INCOSE [Jone95] memberikan empat jenis arsitektur alat bantu requirements
management:
· Arsitektur A – document based. Arsitektur ini menggunakan komponen utama sebuah program spreadsheet (seperti
QuattroProTM, Lotus 1-2-3TM, ExcelTM) atau word processor (seperti
WordPerfectTM, AmiProTM, atau MS WordTM) dengan diberi fungsi-fungsi tambahan
untuk melakukan RM dengan menggunakan fasilitas pemrograman yang diberikan oleh
program paket tersebut (umumnya bahasa macro). Teks di dalam dokumen
diberi tanda-tanda khusus yang menandakan teks tersebut sebagai sebuah requirement.
· Arsitektur B – hybrid. Seperti pada Arsitektur A namun dengan tambahan validasi automatis dari
berbagai requirement yang terdapat di dalam dokumen-dokumen. Alat-alat
ini dapat menghasilkan sebuah daftar yang memuat berbagai requirement yang
terlalaikan ataupun tidak perlu.
· Arsitektur C –
special-purpose-database-based. Alat-alat RM yang termasuk di
dalam kategori ini menyimpan seluruh teks requirement di dalam sebuah
basis data, namun program database yang digunakan adalah bagian dari
program RM itu sendiri.
· Arsitektur D –
general-purpose-database-based. Alat bantu yang termasuk
kategori ini menyimpan teks requirement menggunakan database yang terpisah.
Program DBMS yang digunakan adalah suatu program – umumnya komersial
tersendiri.
Tidak ada komentar:
Posting Komentar