dan Praktek
1 Perkenalan 1
Bab 1 Perkenalan 1
1.1 Apa itu Rekayasa Perangkat Lunak? . . . . . . . . . . . . . . . . . . . . . 5
1.2 Tahapan dalam Pengembangan Perangkat Lunak . . . . . . . . . . . . . . . . 10
1.3 Pemeliharaan atau Evolusi . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Dari Parit . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.1 Ariane 5, Penerbangan 501 . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.2 Therac-25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.3 Layanan Ambulans London. . . . . . . . . . . . . . . . 21
1.4.4 Siapa yang Menghitung Suara? . . . . . . . . . . . . . . . . . . . . 23
1.5 Etika Rekayasa Perangkat Lunak . . . . . . . . . . . . . . . . . . . . . . 25
1.6 Ke mana engkau pergi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.7 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.8 Bacaan lebih lanjut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 Manajemen konfigurasi 7
8
Bab 4 Manajemen konfigurasi 7
8
4.1 Tugas dan Tanggung Jawab . . . . . . . . . . . . . . . . . . . . . . . . 80
4.2 Rencana Manajemen Konfigurasi . . . . . . . . . . . . . . . . . . . . 85
4.3 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.4 Bacaan lebih lanjut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7 Perkiraan biaya 1
4
4
Bab 7 Perkiraan biaya 1
4
4
7.1 Model Algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
7.1.1 Walston--Felix . . . . . . . . . . . . . . . . . . . . . . . . . 151
7.1.2 COCOMO . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
7.1.3 Putnam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.1.4 Analisis Titik Fungsi . . . . . . . . . . . . . . . . . . . . . 156
7.1.5 COCOMO 2: Variasi Tema . . . . . . . . . . . . . 159
7.2 Pedoman Memperkirakan Biaya . . . . . . . . . . . . . . . . . . . . . 166
7.3 Distribusi Tenaga Kerja dari Waktu ke Waktu . . . . . . . . . . . . . . . . . . 169
7.4 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.5 Bacaan lebih lanjut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
10 Pemodelan 246
13.11Ringk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
asan
13.12Bacaan Lebih Lanjut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 Latihan . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 449
14 Pemeliharaan 453
Perangkat Lunak
Bab 14Pemeliharaan 453
Perangkat Lunak
14.1 Tinjauan Kembali Kategori Pemeliharaan . . . . . . . . . . . . . . . . . . . 45614.2 Penyebab
Utama Masalah Pemeliharaan . . . . . . . . . . . . . . . . 45914.3 Rekayasa Balik dan
Pemfaktoran Ulang . . . . . . . . . . . . . . . . . . 46314.3.1 Pemfaktoran Ulang . . . . . . . . . . . . . . .
. . . . . . . . . . . . 466
14.3.2 Batasan Inheren . . . . . . . . . . . . . . . . . . . . . . 469
14.3.3 Alat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47314.4 Evolusi Perangkat Lunak Ditinjau
Kembali . . . . . . . . . . . . . . . . . . . . . . 474
14.5 Masalah Organisasi dan Manajerial . . . . . . . . . . . . . . . . . 476
14.5.1 Organisasi Kegiatan Pemeliharaan . . . . . . . . . . . . 47714.5.2 Pemeliharaan
Perangkat Lunak dari Perspektif Layanan . . . . . . . 48014.5.3 Pengendalian Tugas
Pemeliharaan . . . . . . . . . . . . . . . . . 48614.5.4 Masalah Kualitas . . . . . . . . . . . . . . . . . .
. . . . . . . . 489
14.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Ringkasan
14.7 Bacaan Lebih Lanjut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Latihan . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 492
Bibliografi 514
1
Perkenalan
TUJUAN PEMBELAJARAN
�
2 PERKENALAN
Ilmu komputer masih merupakan bidang yang muda. Komputer pertama dibangun
pada pertengahan 1940-an, sejak saat itu bidang tersebut berkembang pesat.
Aplikasi dari tahun-tahun awal komputerisasi dapat dicirikan sebagai berikut:
programnya cukup kecil, tentunya jika dibandingkan dengan program yang sedang
dibangun; mereka ditulis oleh satu orang; mereka ditulis dan digunakan oleh para
ahli di bidang aplikasi yang bersangkutan. Masalah yang harus dipecahkan
sebagian besar bersifat teknis, dan penekanannya adalah pada ekspresi algoritma
yang dikenal secara efisien dalam beberapa bahasa pemrograman. Input biasanya
terdiri dari data numerik, dibaca dari media seperti punched tape atau punched card.
Outputnya, juga numerik, dicetak di atas kertas. Program dijalankan secara off-line.
Jika program berisi kesalahan, pemrogram mempelajari dump memori oktal atau
heksadesimal. Terkadang, eksekusi program akan diikuti oleh register mesin
pembaca biner di konsol.
Perusahaan pengembangan perangkat lunak independen hampir tidak ada pada
masa itu. Perangkat lunak sebagian besar dikembangkan oleh vendor perangkat
keras dan diberikan secara gratis. Vendor ini terkadang membuat grup pengguna
untuk mendiskusikan persyaratan, dan selanjutnya memasukkannya ke dalam
perangkat lunak mereka. Dukungan pengembangan perangkat lunak ini dilihat
sebagai layanan kepada pelanggan mereka.
Aplikasi masa kini agak berbeda dalam banyak hal. Program masa kini
seringkali sangat besar dan sedang dikembangkan oleh tim yang berkolaborasi
selama beberapa tahun. Tim-tim ini mungkin tersebar di seluruh dunia. Pemrogram
bukan pengguna masa depan dari sistem yang mereka kembangkan dan mereka
tidak memiliki pengetahuan ahli tentang area aplikasi yang dimaksud. Masalah yang
dihadapi semakin menjadi perhatian kehidupan sehari-hari: teller bank otomatis,
reservasi maskapai penerbangan, administrasi gaji, perdagangan elektronik, sistem
otomotif, dll. Menempatkan manusia di bulan tidak dapat dibayangkan tanpa
komputer.
Pada tahun 1960-an, orang mulai menyadari bahwa teknik pemrograman telah
tertinggal dari perkembangan perangkat lunak baik dalam ukuran maupun
kompleksitasnya. Bagi banyak orang, pemrograman masih merupakan sebuah seni
dan belum pernah menjadi keahlian. Masalah tambahan adalah bahwa banyak
pemrogram belum dididik secara formal di lapangan. Mereka telah belajar dengan
melakukan. Di sisi organisasi, upaya solusi untuk masalah sering melibatkan
penambahan lebih banyak programmer ke proyek, yang disebut pendekatan
'juta-monyet'.
Akibatnya, perangkat lunak sering dikirimkan terlambat, program tidak berfungsi
seperti yang diharapkan pengguna, program jarang dapat disesuaikan dengan
keadaan yang berubah, dan banyak kesalahan terdeteksi hanya setelah perangkat
lunak dikirimkan ke pelanggan. Ini
3
dikenal sebagai 'krisis perangkat lunak'.
Jenis masalah ini benar-benar menjadi nyata di tahun 1960-an. Di bawah naungan
NATO, dua konferensi dikhususkan untuk topik pada tahun 1968 dan 1969 (Naur dan
Randell, 1968), (Buxton dan Randell, 1969). Di sini, istilah 'rekayasa perangkat lunak' adalah
diciptakan dalam arti agak provokatif. Bukankah mungkin untuk membangun perangkat lunak
dalam cara membangun jembatan dan rumah, mulai dari landasan teori dan penggunaan
teknik desain dan konstruksi yang baik dan terbukti, seperti di bidang teknik lainnya?
Perangkat lunak melayani beberapa tujuan organisasi. Alasan untuk memulai
proyek pengembangan perangkat lunak bervariasi. Terkadang, solusi untuk suatu masalah tidak
layak tanpa bantuan komputer, seperti prakiraan cuaca, atau otomatis
memberitahu bank. Terkadang, perangkat lunak dapat digunakan sebagai kendaraan untuk teknologi
baru, misalnya
sebagai penyusunan huruf, produksi chip, atau perjalanan luar angkasa berawak. Dalam kasus lain
perangkat lunak dapat meningkatkan layanan pengguna (otomatisasi perpustakaan, e-commerce) atau
hanya menyimpan
uang (kontrol stok otomatis).
Dalam banyak kasus, keuntungan ekonomi yang diharapkan akan menjadi kekuatan pendorong
utama. Mungkin
Namun, tidak selalu mudah untuk membuktikan bahwa otomatisasi menghemat uang (bayangkan saja
otomatisasi kantor) karena selain penghematan biaya langsung, keuntungan ekonomi mungkin
juga memanifestasikan dirinya dalam hal-hal seperti produksi yang lebih fleksibel atau lebih cepat atau
lebih baik
layanan pengguna. Dalam kedua kasus, itu adalah aktivitas yang menciptakan nilai.
Boehm (1981) memperkirakan total pengeluaran untuk perangkat lunak di AS menjadi $40
miliar pada tahun 1980. Ini kira-kira 2% dari GNP. Pada tahun 1985, total pengeluaran
telah meningkat menjadi $70 miliar di AS dan $140 miliar di seluruh dunia. Boehm dan Sullivan
(1999) memperkirakan pengeluaran tahunan untuk pengembangan perangkat lunak pada tahun 1998
menjadi
$300-400 miliar di AS, dan dua kali jumlah itu di seluruh dunia.
Sehingga biaya perangkat lunak sangat penting. Ini tidak hanya menyangkut biaya
mengembangkan perangkat lunak, tetapi juga biaya untuk menjaga agar perangkat lunak tetap
beroperasi satu kali
itu telah disampaikan kepada pelanggan. Dalam perjalanan waktu, biaya perangkat keras telah
menurun drastis. Biaya perangkat keras sekarang biasanya kurang dari 20% dari total
pengeluaran (gambar 1.1). 80% sisanya terdiri dari semua biaya non-perangkat keras: itu
biaya pemrogram, analis, manajemen, pelatihan pengguna, bantuan kesekretariatan, dll.
Aspek yang terkait erat dengan biaya adalah produktifitas. Pada 1980-an, pencarian data
personel pengolah meningkat 12% per tahun, sedangkan populasi orang
bekerja dalam pemrosesan data dan produktivitas orang-orang itu masing-masing tumbuh
sekitar 4% per tahun (Boehm, 1987a). Situasi ini belum fundamental
berubah (Jones, 1999). Efek bersihnya adalah kesenjangan yang semakin besar antara permintaan dan
penawaran.
Hasilnya adalah backlog sehubungan dengan pemeliharaan perangkat lunak yang ada dan
memperlambat pengembangan aplikasi baru. Efek gabungan mungkin
memiliki dampak pada keunggulan kompetitif organisasi, terutama ketika
ada kendala waktu-ke-pasar yang parah. Perkembangan ini telah menyebabkan pergeseran
dari memproduksi perangkat lunak untuk menggunakan perangkat lunak. Kami akan kembali ke topik ini
di bagian 1.6
dan bab ??.
Masalah biaya dan produktivitas pengembangan perangkat lunak patut kita serius
Perhatian. Namun, ini bukan cerita lengkapnya. Masyarakat semakin tergantung
4 PERKENALAN
pada perangkat lunak. Kualitas sistem yang kita kembangkan semakin menentukan
kualitas keberadaan kita. Pertimbangkan sebagai contoh pesan berikut dari surat
kabar Belanda pada tanggal 6 Juni 1980, dengan judul 'Orang Amerika melihat
orang Rusia datang':
Upaya untuk memperbaiki kesalahan itu tampaknya sia-sia, karena pada tanggal 9
Juni 1980 surat kabar yang sama melaporkan:
Tidak selalu dunia yang dalam bahaya. Pada skala yang lebih kecil, kesalahan dalam
perangkat lunak mungkin memiliki konsekuensi yang sangat disayangkan, seperti
kesalahan transaksi dalam lalu lintas bank; pengingat untuk akhirnya membayar
tagihan sebesar $0,00; sistem kontrol stok yang mengeluarkan pesanan terlambat
dan dengan demikian memberhentikan seluruh divisi pabrik.
1.1. APA ITU REKAYASA PERANGKAT LUNAK? 5
Contoh terakhir menunjukkan bahwa kesalahan dalam sistem perangkat lunak mungkin serius
konsekuensi finansial bagi organisasi yang menggunakannya. Salah satu contoh keuangan semacam itu
kerugian adalah perusahaan penerbangan besar AS yang kehilangan $50 juta karena kesalahan dalam
sistem reservasi kursi. Sistem secara keliru melaporkan bahwa kursi murah telah terjual
keluar, padahal tersedia banyak. Masalahnya terdeteksi hanya setelah
hasil kuartalan jauh tertinggal dari kedua periode mereka sebelumnya
dan orang-orang dari pesaing mereka.
Kesalahan dalam sistem otomatis bahkan dapat berakibat fatal. Salah satu ilmu komputer
majalah mingguan berisi pesan berikut pada bulan April 1983:
Pengadilan di D¨usseldorf telah membebaskan seorang wanita (54),
yang diadili karena membunuh putrinya. Pesan yang salah dari sistem
komputerisasi membuat perusahaan asuransi memberitahunya bahwa
dia sakit parah. Dia dikatakan menderita sifilis yang tidak dapat
disembuhkan. Apalagi, dia dikatakan telah menulari kedua anaknya.
Dalam kepanikan, dia mencekik anak perempuannya yang berusia 15
tahun dan mencoba membunuh anak laki-lakinya yang berusia 13 tahun
dan dirinya sendiri. Anak laki-laki itu melarikan diri, dan dengan bantuan
dia meminta seorang wanita untuk mencegah kematian karena
overdosis. Hakim menyalahkan kesalahan komputer dan menganggap
wanita itu tidak bertanggung jawab atas perbuatannya.
Ini semua menandai pentingnya bidang rekayasa perangkat lunak.
Metode dan teknik yang lebih baik untuk pengembangan perangkat lunak dapat menghasilkan keuangan
yang besar
penghematan, dalam metode pengembangan perangkat lunak yang lebih efektif, dalam sistem yang
lebih sesuai
kebutuhan pengguna, dalam sistem perangkat lunak yang lebih andal, dan dengan demikian dalam
lingkungan yang lebih andal
di mana sistem tersebut berfungsi. Kualitas dan produktivitas adalah dua tema sentral dalam
bidang rekayasa perangkat lunak.
Sisi positifnya, sangat penting untuk menunjukkan kemajuan besar yang telah dicapai
telah dibuat sejak tahun 1960-an. Perangkat lunak ada di mana-mana dan banyak sistem yang dapat
dipercaya
telah dibangun. Ini berkisar dari aplikasi spreadsheet kecil hingga pengaturan huruf
sistem, sistem perbankan, browser Web dan perangkat lunak Space Shuttle. Itu
teknik dan metode yang dibahas dalam buku ini telah menyumbangkan tungau mereka ke
keberhasilan ini dan banyak proyek pengembangan perangkat lunak lainnya.
Ini dan definisi lain dari istilah rekayasa perangkat lunak menggunakan kata-kata
yang agak berbeda. Namun, karakteristik esensial bidang selalu, secara eksplisit
atau implisit, hadir:
�
1.1. APA ITU REKAYASA PERANGKAT LUNAK? 7
begitu banyak disebabkan oleh kompleksitas intrinsik dari masalah (seperti
dalam kasus algoritma pengoptimalan kompiler atau algoritma numerik untuk
menyelesaikan persamaan diferensial parsial), melainkan oleh banyaknya
detail yang harus ditangani.
�
8 PERKENALAN
�
1.1. APA ITU REKAYASA PERANGKAT LUNAK? 9
Bahkan dalam disiplin teknik yang matang, katakanlah desain jembatan, kecelakaan bisa saja terjadi.
Jembatan runtuh sesekali. Sebagian besar masalah dalam desain jembatan terjadi saat desainer
mengekstrapolasi di luar model dan keahlian mereka. Contoh terkenal adalah Tacoma
Narrows Bridge gagal pada tahun 1940. Para perancang jembatan itu memperkirakan lebih jauh
pengalaman mereka untuk membuat balok pengaku yang lebih fleksibel untuk jembatan gantung.
Mereka
tidak memikirkan aerodinamika dan respons jembatan terhadap angin. Sebagai akibat,
jembatan itu runtuh tak lama setelah selesai. Jenis ekstrapolasi ini tampaknya
menjadi aturan daripada pengecualian dalam pengembangan perangkat lunak. Kami secara teratur
memulai
pada proyek pengembangan perangkat lunak yang jauh melampaui keahlian kami.
Ada alasan tambahan untuk mempertimbangkan pembangunan perangkat lunak sebagai
sesuatu yang sangat berbeda dari konstruksi produk fisik. Biaya dari
membangun perangkat lunak terjadi selama pengembangan dan bukan selama produksi.
Menyalin perangkat lunak hampir gratis. Perangkat lunak lebih bersifat logis daripada fisik.
Produk fisik aus pada waktunya dan oleh karena itu harus dipertahankan. Perangkat lunak
tidak aus. Kebutuhan untuk memelihara perangkat lunak disebabkan oleh kesalahan yang terdeteksi
terlambat
atau dengan mengubah kebutuhan pengguna. Keandalan perangkat lunak ditentukan oleh
manifestasi kesalahan sudah ada, bukan oleh faktor fisik seperti keausan.
Kami bahkan mungkin berpendapat bahwa perangkat lunak habis dipakai Karena itu sedang
dipertahankan.
Melihat rekayasa perangkat lunak sebagai cabang teknik merupakan masalah bagi
alasan lain juga. Metafora teknik mengisyaratkan pekerjaan yang disiplin, tepat
perencanaan, manajemen yang baik, dan sejenisnya. Ini menunjukkan bahwa kita berurusan dengan
definisi yang jelas
kebutuhan, yang dapat dipenuhi jika kita mengikuti semua langkah yang benar. Banyak pengembangan
perangkat lunak
proyek meskipun melibatkan terjemahan dari beberapa fenomena dunia nyata menjadi digital
membentuk. Pengetahuan yang tertanam dalam fenomena kehidupan nyata ini bersifat diam-diam, tidak
terdefinisi,
tidak terkodifikasi, dan mungkin telah berkembang dalam jangka waktu yang lama. Asumsi bahwa
kita sedang berhadapan dengan masalah yang terdefinisi dengan baik tidak berlaku. Sebaliknya,
desainnya
prosesnya terbuka, dan solusinya muncul seiring berjalannya waktu. dikotomi ini
tercermin dalam pandangan bidang yang ditempatkan di garis depan dari waktu ke waktu (Eischen,
2002). Dalam
hari-hari awal, lapangan dipandang sebagai kerajinan. Sebagai gerakan tandingan, istilah perangkat
lunak
teknik diciptakan, dan banyak konsep pabrik diperkenalkan. Pada akhir 1990-an,
pendulum berayun kembali dan aspek kerajinan ditekankan lagi, di
gerakan lincah (lihat bab 3). Keduanya memiliki aspek seperti teknik dan kerajinan
tempat mereka, dan kami akan memberikan perlakuan yang seimbang dari keduanya.
Dua karakteristik yang membuat proyek pengembangan perangkat lunak menjadi sangat sulit
mengelola adalah visibilitas dan kontinuitas. Jauh lebih sulit untuk melihat kemajuan
konstruksi perangkat lunak daripada memperhatikan kemajuan dalam membangun jembatan. Satu
sering
mendengar ungkapan bahwa program 'hampir selesai'. Seseorang sama-sama sering meremehkan
waktu yang dibutuhkan untuk menyelesaikan potongan-potongan terakhir.
Sindrom '90% selesai' ini sangat meresap dalam pengembangan perangkat lunak. Bukan
mengetahui bagaimana mengukur kemajuan nyata, kita sering menggunakan ukuran pengganti, laju
dari pengeluaran sumber daya. Misalnya, sebuah proyek yang memiliki anggaran 100 orang-
hari dianggap 50% selesai setelah 50 orang-hari dihabiskan. Dengan ketat
berbicara, kami kemudian mengacaukan kecepatan dengan kemajuan. Karena pengukuran yang tidak
tepat
10 PERKENALAN
kemajuan dan kebiasaan meremehkan upaya total, masalah menumpuk seiring
berjalannya waktu.
Sistem fisik seringkali kontinu dalam arti bahwa perubahan kecil pada spesifikasi
menyebabkan perubahan kecil pada produk. Ini tidak benar dengan perangkat
lunak. Perubahan kecil dalam spesifikasi perangkat lunak dapat menyebabkan
perubahan besar pada perangkat lunak itu sendiri. Dengan cara yang sama,
kesalahan kecil dalam perangkat lunak mungkin memiliki efek yang cukup besar.
Roket luar angkasa Mariner ke Venus misalnya hilang karena kesalahan pengetikan
dalam program FORTRAN. Pada tahun 1998, Mars Climate Orbiter hilang, karena
satu tim pengembang menggunakan satuan bahasa Inggris seperti inci dan kaki,
sementara tim lain menggunakan satuan metrik.
Kami juga dapat menarik perbandingan antara rekayasa perangkat lunak dan
ilmu komputer. Ilmu komputer muncul sebagai disiplin yang terpisah pada 1960-an.
Ini terpisah dari matematika dan sangat dipengaruhi oleh matematika. Topik yang
dipelajari dalam ilmu komputer, seperti kompleksitas algoritme, bahasa formal, dan
semantik bahasa pemrograman, memiliki rasa matematika yang kuat. Tesis PhD
dalam ilmu komputer selalu berisi teorema dengan bukti yang menyertainya.
Karena bidang rekayasa perangkat lunak muncul dari ilmu komputer, ia memiliki
kecenderungan yang sama untuk fokus pada aspek bersih pengembangan
perangkat lunak yang dapat diformalkan, baik dalam pengajaran maupun penelitian.
Kami dulu berasumsi bahwa persyaratan dapat sepenuhnya dinyatakan sebelum
proyek dimulai, berkonsentrasi pada sistem yang dibangun dari awal, dan
mengabaikan kenyataan memperdagangkan aspek kualitas dengan anggaran yang
tersedia. Belum lagi parit pemeliharaan perangkat lunak.
Rekayasa perangkat lunak dan ilmu komputer memang memiliki banyak
tumpang tindih. Praktik rekayasa perangkat lunak bagaimanapun juga harus
berurusan dengan hal-hal seperti manajemen proyek pengembangan besar, faktor
manusia (mengenai tim pengembangan dan calon pengguna sistem) dan estimasi
dan kontrol biaya. Insinyur perangkat lunak harus insinyur perangkat lunak.
Rekayasa perangkat lunak memiliki banyak kesamaan baik dengan bidang
teknik lainnya maupun dengan ilmu komputer. Ia juga memiliki wajahnya sendiri
dalam banyak hal.
Itu model proses digambarkan pada gambar 1.2 agak sederhana. Pada kenyataannya, banyak hal
akan terjadi
biasanya menjadi lebih kompleks. Misalnya, fase desain sering dibagi menjadi global,
fase desain arsitektur dan fase desain terperinci, dan seringkali berbagai fase uji
dibedakan. Elemen dasar, bagaimanapun, tetap seperti yang diberikan pada gambar 1.2. Ini
fase harus dilalui dalam setiap proyek. Tergantung jenis proyeknya
dan lingkungan kerja, skema yang lebih rinci mungkin diperlukan.
Pada Gambar 1.2, fase telah digambarkan secara berurutan. Untuk proyek tertentu ini
kegiatan tidak harus dipisahkan secara ketat seperti yang ditunjukkan di sini. Mereka mungkin dan
biasanya akan tumpang tindih. Misalnya, sangat mungkin untuk memulai penerapannya
bagian dari sistem sementara beberapa bagian lainnya belum sepenuhnya dirancang.
Seperti yang akan kita lihat di bagian 1.3, tidak ada perkembangan linier yang ketat dari persyaratan
teknik ke desain, dari desain ke implementasi, dll. Mundur ke sebelumnya
fase terjadi, karena kesalahan ditemukan atau persyaratan berubah. Satu lebih baik
12 PERKENALAN
pikirkan fase-fase ini sebagai rangkaian alur kerja. Sejak awal, sebagian besar
sumber daya dihabiskan untuk alur kerja rekayasa persyaratan. Kemudian, upaya
beralih ke alur kerja implementasi dan pengujian.
Di bawah ini, deskripsi singkat diberikan dari masing-masing elemen dasar dari
gambar 1.2. Berbagai model proses alternatif akan dibahas dalam bab 3.
Model-model alternatif ini dihasilkan dari kritik yang dapat dibenarkan terhadap
model pemikiran sederhana yang digambarkan pada gambar 1.2. Satu-satunya
tujuan dari model sederhana kami adalah untuk menyediakan penataan topik yang
memadai untuk ditangani. Fase pemeliharaan dibahas lebih lanjut di bagian 1.3.
Semua elemen model proses kami akan diperlakukan lebih rumit di bab selanjutnya.
Bagian dari rekayasa kebutuhan adalah a studi kelayakan. Tujuan dari studi
kelayakan adalah untuk menilai apakah ada solusi untuk masalah yang layak secara
ekonomi dan teknis.
Semakin hati-hati kita selama fase rekayasa kebutuhan, semakin besar
kemungkinan bahwa sistem pamungkas akan memenuhi harapan. Untuk itu,
berbagai orang (antara lain pelanggan, calon pengguna, desainer, dan pemrogram)
yang terlibat harus berkolaborasi secara intensif. Orang-orang ini seringkali memiliki
latar belakang yang sangat berbeda, yang tidak memudahkan komunikasi.
Dokumen di mana hasil dari kegiatan ini diletakkan disebutspesifikasi
kebutuhan.
Desain. Selama fase desain, model dari keseluruhan sistem dikembangkan yang,
ketika dikodekan dalam beberapa bahasa pemrograman, memecahkan masalah
bagi pengguna. Untuk tujuan ini, masalahnya didekomposisi menjadi bagian-bagian
yang dapat dikelola yang disebut komponen; fungsi dari komponen tersebut dan
antarmuka di antara mereka ditentukan dengan cara yang sangat tepat. Fase
desain sangat penting. Rekayasa dan desain persyaratan kadang-kadang dilihat
sebagai pengantar pemrograman yang mengganggu, yang sering terlihat
1.2. TAHAP DALAM PENGEMBANGAN 13
PERANGKAT LUNAK
sebagai karya nyata. Sikap ini memiliki pengaruh yang sangat negatif pada kualitas
perangkat lunak yang dihasilkan.
Keputusan desain awal berdampak besar pada kualitas sistem akhir.
Keputusan desain awal ini dapat ditangkap dalam deskripsi global sistem,
yaitu Arsitektur. Arsitektur selanjutnya dapat dievaluasi, berfungsi sebagai template
untuk pengembangan keluarga sistem serupa, atau digunakan sebagai kerangka untuk
pengembangan komponen yang dapat digunakan kembali. Dengan demikian, deskripsi arsitektur dari
sistem adalah dokumen tonggak penting dalam pengembangan perangkat lunak saat ini
proyek.
Selama fase desain kami mencoba untuk memisahkan Apa dari Bagaimana. Kami berkonsentrasi
pada masalah dan tidak boleh membiarkan diri kita terganggu oleh masalah implementasi.
Hasil dari fase desain, (teknis) spesifikasi, berfungsi sebagai awalan
poin untuk tahap implementasi. Kalau spesifikasinya sifatnya formal juga bisa
digunakan untuk memperoleh bukti kebenaran.
Pengujian. Sebenarnya, salah jika mengatakan bahwa pengujian adalah fase setelah implementasi.
Ini menunjukkan bahwa Anda tidak perlu repot dengan pengujian sampai implementasi selesai.
Ini tidak benar. Bahkan adil untuk mengatakan bahwa ini adalah salah satu kesalahan terbesar yang
Anda bisa
membuat.
Perhatian harus diberikan pada pengujian bahkan selama rekayasa persyaratan
fase. Selama fase berikutnya, pengujian dilanjutkan dan disempurnakan. Sebelumnya
bahwa kesalahan terdeteksi, semakin murah untuk memperbaikinya.
Pengujian pada batas fase hadir dalam dua rasa. Kita harus menguji bahwa
transisi antara fase berikutnya benar (ini dikenal sebagai verifikasi). Kami
juga harus memeriksa apakah kami masih berada di jalur yang benar dalam hal memenuhi pengguna
14 PERKENALAN
Hanya kategori pertama yang berhak disebut pemeliharaan. Namun, kategori ini
hanya menyumbang sekitar seperempat dari total upaya pemeliharaan. Kira-kira
seperempat dari upaya pemeliharaan menyangkut mengadaptasi perangkat lunak
untuk perubahan lingkungan, sementara setengah dari biaya pemeliharaan
dihabiskan untuk perubahan untuk mengakomodasi perubahan kebutuhan
pengguna, yaitu peningkatan sistem (lihat gambar 1.4).Perubahan dalam lingkungan
sistem dan persyaratan pengguna tidak dapat dihindari. Model perangkat lunak
adalah bagian dari realitas, dan realitas berubah, suka atau tidak suka. Jadi
perangkat lunak juga harus berubah. Dia memiliki untuk berkembang. Sebagian
besar dari apa yang biasa kita sebut pemeliharaan sebenarnya adalah evolusi.
Pemeliharaan karena kebutuhan pengguna baru terjadi baik pada sistem berkualitas
tinggi maupun rendah. Sebuah sistem yang sukses memerlukan fungsionalitas baru
yang tidak terduga, karena penggunaannya oleh banyak pengguna yang puas.
Sistem yang kurang berhasil harus diadaptasi untuk memuaskan pelanggannya.
1.4. DARI PARU 17
Studi kasus sejarah mengandung kekayaan kebijaksanaan tentang sifat desain dan
metode rekayasa.
(Petroski, 1994)
Dalam bukunya yang luar biasa Paradigma Desain, Sejarah Kasus Kesalahan dan Penilaian dalam
Rekayasa,
Henri Petroski memberi tahu kita tentang beberapa kesuksesan teknik terbesar dan, terutama,
18 PERKENALAN
kegagalan sepanjang masa. Beberapa kisah kegagalan tentang profesi kami juga
muncul. Empat di antaranya dibahas di bagian ini.
Kisah-kisah ini menarik karena mengajarkan kita bahwa rekayasa perangkat
lunak memiliki banyak sisi. Kegagalan dalam proyek pengembangan perangkat
lunak seringkali tidak satu dimensi hanya disebabkan oleh kesalahan teknis dalam
beberapa rutinitas. Mereka tidak hanya disebabkan oleh manajemen yang buruk.
Mereka tidak hanya hasil dari masalah komunikasi manusia. Ini seringkali
merupakan kombinasi dari banyak slip kecil, yang terakumulasi dari waktu ke waktu,
dan akhirnya menghasilkan kegagalan besar. Untuk memparafrasekan pepatah
terkenal Fred Brooks tentang proyek yang terlambat:
Setiap cerita yang dibahas di bawah ini menunjukkan efek kumulatif. Keberhasilan
dalam pengembangan perangkat lunak tidak akan terjadi jika kita hanya
mempekerjakan pemrogram paling cerdas. Atau terapkan filosofi desain terbaru.
Atau dapatkan konsultasi pengguna yang paling ekstensif. Atau bahkan
mempekerjakan manajer terbaik. Anda harus melakukan semua itu. Dan bahkan
lebih.
Berdasarkan data yang salah ini, defleksi nosel penuh diperintahkan. Ini
menyebabkan beban aerodinamis yang sangat tinggi yang menyebabkan terpisahnya booster dari
roket utama. Dan ini pada gilirannya memicu penghancuran diri peluncur.
Ada beberapa level di mana kegagalan Ariane 5 dapat dipahami dan
menjelaskan:
�
20 PERKENALAN
�
1.4. DARI PARU 23
�
24 PERKENALAN
Audit semacam itu dilakukan oleh pihak independen. Perlindungan ini berfungsi
untuk membangun kepercayaan pada hasilnya.
Tapi bagaimana jika pemilu ini didukung oleh komputer? Sebagai pemilih, Anda
cukup menekan sebuah tombol. Tapi apa selanjutnya? Pencatatan dan
penghitungan disembunyikan. Bagaimana Anda tahu suara Anda tidak diutak-atik?
Bagaimana penipuan dapat dihindari? Untuk individu tersebut, diperlukan surat
suara pemilih, misalnya selembar kertas yang mirip dengan tanda terima ATM, yang
berfungsi untuk memverifikasi pilihan pemilih. Surat suara dari semua pemilih
selanjutnya dapat digunakan dalam audit independen atas hasil pemilu. Sebagian
besar sistem pemilihan otomatis saat ini tidak memberikan perlindungan ini.
Bagaimana jika kita melangkah lebih jauh, dan memberi pemilih kita aplikasi web
untuk memberikan suara mereka? Di bawah ini adalah cerita tentang sistem nyata
semacam ini. Aplikasi ini dikembangkan di Jawa. Karena peraturan pemerintah,
model pemungutan suara yang diterapkan meniru model tradisional. Aplikasi ini
memiliki daftar pemilih yang berisi identitas semua pemilih, dan kotak suara tempat
menyimpan suara. Salah satu aturan yang harus dipatuhi sistem adalah anonimitas:
suara di kotak suara tidak boleh dilacak ke nama dalam daftar pemilih. Peraturan
lain menyangkut keamanan: kedua register harus disimpan secara terpisah.
Desain teknis mempertimbangkan dua database terpisah, satu untuk pemilih
dan satu lagi untuk surat suara. Menempatkan suara dan menandai pemilih sebagai
'telah memilih' harus dilakukan dalam satu transaksi: baik kedua tindakan dilakukan,
atau tidak satu pun dari keduanya. Desain ini memenuhi persyaratan kebenaran:
jumlah suara di kotak suara sama dengan jumlah pemilih yang ditandai 'telah
memilih'.
Setidaknya, inilah yang kami harapkan. Pengujian sistem menunjukkan bahwa,
tampaknya pada saat-saat yang serampangan, ada lebih banyak suara di kotak
suara daripada pemilih yang ditandai sebagai 'telah memilih'. Jadi sistem
memungkinkan pemilih lebih dari satu suara.
Melihat ke balik terpal, kesalahan pengkodean terungkap dalam proses
pemungutan suara. Bagian dari algoritme berjalan sebagai berikut:
1. Identifikasi pemilih.
pemilih.getIdentifi
asi()==identifikasi
asi
1.5. ETIKA REKAYASA PERANGKAT LUNAK 25
Pembukaan
Versi singkat dari kode merangkum aspirasi pada abstraksi tingkat tinggi.
Klausa yang disertakan dalam versi lengkap memberikan contoh dan detail
tentang bagaimana aspirasi ini mengubah cara kita bertindak sebagai
profesional rekayasa perangkat lunak. Tanpa aspirasi, detail dapat menjadi
legalistik dan membosankan; tanpa perincian, aspirasi bisa terdengar tinggi
tetapi kosong; bersama-sama, aspirasi dan detail membentuk kode yang
kohesif.
Insinyur perangkat lunak harus berkomitmen untuk membuat analisis,
spesifikasi, desain, pengembangan, pengujian, dan pemeliharaan perangkat
lunak sebagai profesi yang bermanfaat dan dihormati. Sesuai dengan komitmen
mereka terhadap kesehatan, keselamatan, dan kesejahteraan publik,
perekayasa perangkat lunak harus mematuhi Delapan Prinsip berikut:
1. Publik. Insinyur perangkat lunak harus bertindak secara konsisten dengan
kepentingan publik2. Klien dan majikan. Insinyur perangkat lunak harus
bertindak dengan cara yang sesuai dengan kepentingan klien dan pemberi kerja
mereka sesuai dengan kepentingan publik
3. Produk. Insinyur perangkat lunak harus memastikan bahwa produk mereka
dan modifikasi terkait memenuhi standar profesional setinggi mungkin
4. Pertimbangan. Insinyur perangkat lunak harus menjaga integritas dan
independensi dalam penilaian profesional mereka
5. Pengelolaan. Manajer dan pemimpin rekayasa perangkat lunak harus
berlangganan dan mempromosikan pendekatan etis untuk manajemen
pengembangan dan pemeliharaan perangkat lunak
6. Profesi. Insinyur perangkat lunak harus memajukan integritas dan reputasi
profesi yang konsisten dengan kepentingan publik
7. Rekan kerja. Insinyur perangkat lunak harus adil dan mendukung kolega
mereka
8. Diri sendiri. Insinyur perangkat lunak harus berpartisipasi dalam
pembelajaran seumur hidup mengenai praktik profesi mereka dan harus
mempromosikan pendekatan etis terhadap praktik profesi
�
1.6. KEMANA ANDA PERGI? 27
Kode tersebut bukanlah algoritma sederhana untuk membedakan antara yang dapat diterima dan yang
tidak dapat diterima.
perilaku yang dapat diterima. Sebaliknya, prinsip-prinsip yang dinyatakan harus memengaruhi Anda,
sebagai perangkat lunak
insinyur, untuk mempertimbangkan siapa yang terpengaruh oleh pekerjaan Anda. Perangkat lunak yang
Anda kembangkan memengaruhi
masyarakat. Kesehatan, keselamatan dan kesejahteraan masyarakat adalah perhatian utama dari
kode etik ini. Mematuhi kode etik ini, atau yang serupa, bukanlah sesuatu untuk dilakukan
pertimbangkan saja pada hari Jumat sore. Itu harus menjadi cara hidup.
Kode tidak hanya membahas insinyur perangkat lunak. Ini juga membahas manajer, di
bahwa kode menunjukkan apa yang mungkin diharapkan dari perangkat lunak profesional
insinyur.
– Jurnal Sistem dan Perangkat Lunak (Elsevier), jurnal bulanan yang mencakup keduanya
makalah penelitian dan laporan pengalaman praktis;
– Pemeliharaan dan Evolusi Perangkat Lunak: Penelitian dan Praktek (Wiley), jurnal dua bulanan
dikhususkan untuk topik dalam pemeliharaan dan evolusi perangkat lunak.
1.7 Ringkasan
Rekayasa perangkat lunak berkaitan dengan masalah yang berkaitan dengan
konstruksi dari besar program. Saat mengembangkan program semacam itu, pendekatan bertahap
adalah
diikuti. Pertama, masalahnya dianalisis, dan kemudian sistem dirancang, diimplementasikan
dan diuji. Praktek ini memiliki banyak kesamaan dengan rekayasa fisik
produk. Oleh karena itu istilah rekayasa perangkat lunak. Rekayasa perangkat lunak, bagaimanapun,
juga
berbeda dari rekayasa produk fisik dalam beberapa hal penting.
Model perangkat lunak bagian dari dunia nyata di sekitar kita, seperti perbankan atau
vasi kursi maskapai penerbangan. Dunia di sekitar kita ini berubah seiring waktu. Jadi yang sesuai
perangkat lunak juga harus berubah. Itu harus berkembang bersama dengan realitas yang berubah.
Banyak
dari apa yang kami sebut pemeliharaan perangkat lunak, sebenarnya berkaitan dengan memastikan
bahwa
perangkat lunak mengimbangi dunia nyata yang dimodelkan.
Kami kemudian mendapatkan model proses di mana kami mengulangi fase sebelumnya dari waktu
ke waktu.
Kami berbicara tentang siklus hidup perangkat lunak.
Metode tangkas, penggunaan kembali komponen, dan globalisasi adalah beberapa di antaranya
tren terkini yang berdampak besar pada cara kita memandang lapangan. Ada pergeseran
dari memproduksi perangkat lunak hingga menggunakan perangkat lunak. Konsekuensi utama dari sini
adalah bahwa a
organisasi pengembangan kehilangan kendali atas apa yang diberikannya.
Kegagalan Ariane dijelaskan dalam (J'ez'equel dan Meyer, 1997). Saya menemukan laporan
dari
Tim Penyelidikan http://www.
nes.fr/ARCHIVES/news/rapp
1.8. BACAAN LEBIH LANJUT 31
sering menganjurkan bahwa alat otomatis (alat KASUS) akan meningkat secara dramatis
baik kualitas maupun produktivitas. Pelajari alat KASUS komersial dan nilai
sejauh mana itu meningkatkan proses pengembangan perangkat lunak dan itu
hasil.
12. ~
32 PERKENALAN
Untuk setiap prinsip ini, tunjukkan apakah Anda (sangat) setuju atau
(sangat) tidak setuju, dan mengapa. Anda mungkin ingin menilai kembali prinsip-prinsip
ini
setelah mempelajari sisa buku ini.
Bagian I
Manajemen Perangkat
Lunak
ISI
45
bagian 3 Siklus Hidup Perangkat Lunak Ditinjau
Kembali
78
Bab 4 Manajemen konfigurasi
89
Bab 5 Manajemen Orang dan Organisasi Tim
107
Bab 6 Tentang Mengelola Kualitas Perangkat
Lunak 144
Pengantar Perangkat
Lunak
Manajemen Rekayasa
TUJUAN PEMBELAJARAN
�
35
Tidak mudah menyelesaikan proyek pengembangan perangkat lunak dengan sukses. Buku ini
terutama berkaitan dengan aspek teknis pengembangan perangkat lunak: desain, spesifikasi,
implementasi dan pengujian sistem perangkat lunak. Saat kita belajar mengendalikan aspek-aspek ini
lebih baik, kami juga akan belajar untuk memenuhi permintaan pelanggan kami dengan lebih baik.
Organisasi
dan aspek manajerial dari proyek pengembangan perangkat lunak setidaknya sama pentingnya dengan
aspek teknis, meskipun.
Sebelum kita memulai diskusi tentang aspek organisasi dan manajerial ini,
mari kita perhatikan dulu batas-batas proyek pengembangan perangkat lunak sebagai
mereka tergambar dalam buku ini.
Proyek pengembangan perangkat lunak biasanya tidak dimulai dengan isolasi lengkap.
Ada proyek lain dalam organisasi yang dibutuhkan proyek khusus ini
untuk disetel, prioritas antar proyek harus diputuskan, dll. Istilahnya
perencanaan informasi sering digunakan untuk merujuk pada proses perencanaan meta-proyek ini.
Juga dalam pengertian yang lebih teknis, proyek tidak dimulai secara terpisah. Meningkatkan
interoperabilitas antara sistem, pedoman keseluruhan mengenai, misalnya, penggunaan tertentu
standar, format pertukaran data, kebijakan keamanan, tata letak halaman web dan sejenisnya
ditetapkan untuk seluruh organisasi dan dikenakan pada setiap proyek. Dalam produk
pengembangan lini, arsitektur lini produk memandu pengembangan
produk individu.
Proyek yang melebihi aturan ini menghasilkan serangkaian kondisi batas untuk masing-masing
proyek, seperti peraturan zonasi mengatur kondisi untuk proyek bangunan.
Menetapkan aturan di seluruh perusahaan ini merupakan masalah tersendiri, dan tidak akan demikian
ditujukan di sini. (Kami akan, bagaimanapun, memberikan perhatian yang cukup untuk beberapa
masalah yang
umumnya melampaui batas-batas proyek pengembangan perangkat lunak individu, seperti
kontrol konfigurasi, jaminan kualitas dan pengembangan lini produk.)
Juga dalam pengertian yang lebih teknis, perangkat lunak umumnya tidak dikembangkan secara
terpisah.
Dalam kebanyakan kasus, perangkat lunak tidak ditulis dari awal. Itu harus berinteraksi dengan yang
ada
perangkat lunak, memperluas perangkat lunak yang ada, menggunakan pustaka subrutin yang ada,
membangun berdasarkan
kerangka kerja yang ada, dan sebagainya.
Dalam arti tertentu, gagasan 'proyek pengembangan perangkat lunak' adalah keliru.
Kami tidak hanya mengembangkan perangkat lunak, kami mengembangkan sistem. Secara garis besar,
sebuah sistem
mengubah input menjadi output. Perangkat lunak adalah unsur penting dari sistem
kami kembangkan, tetapi itu bukan satu-satunya bahan. Teknis dan pengguna
dokumentasi, perangkat keras, prosedur yang mengatur penggunaan sistem, dan
bahkan orang yang menggunakan perangkat lunak, dapat dianggap sebagai bagian dari sistem yang
sama.
Pertimbangkan misalnya sistem untuk otomatisasi perpustakaan. Sistem akan berisi
36 PENGANTAR MANAJEMEN REKAYASA
PERANGKAT LUNAK
berbagai komponen perangkat lunak, seperti komponen database untuk menyimpan
informasi buku dan pelanggan dan komponen interaksi untuk memproses
permintaan pengguna. Selain pengembangan komponen-komponen tersebut,
perhatian harus diberikan pada hal-hal seperti:
�
2.1. PERENCANAAN PROYEK 37
PENGEMBANGAN PERANGKAT LUNAK
buku pelajaran ilmu komputer. Secara umum, proyek pengembangan perangkat lunak menghasilkan a
kumpulan komponen yang secara kolektif memberi kita fungsionalitas yang diinginkan.
Mengingat kondisi batas proyek, proyek pengembangan perangkat lunak mungkin berhasil
dimulai. Merencanakan proyek adalah langkah pertama yang harus dilakukan. Bagian dari ini
proses perencanaan adalah untuk mengidentifikasi karakteristik proyek dan dampaknya terhadap
proses pengembangan. Hasil dari tahap perencanaan dituangkan dalam sebuah dokumen,
itu rencana proyek, yang bertujuan untuk memberikan gambaran proyek yang jelas kepada kedua
belah pihak
pelanggan dan tim pengembangan. Isi rencana proyek dibahas
di bagian 2.1.
Selama pelaksanaan proyek, sejumlah elemen harus dikelola:
waktu, informasi, organisasi, kualitas, dan uang (lihat bagian 2.2). Masing-masing
elemen diuraikan lebih lanjut dalam bab tersendiri.
6. Risiko Risiko potensial harus diidentifikasi sedini mungkin. Akan selalu ada
risiko: perangkat keras mungkin tidak dikirimkan tepat waktu, personel yang
memenuhi syarat mungkin tidak tersedia saat dibutuhkan, informasi penting
mungkin kurang saat dibutuhkan, dan seterusnya. Agak naif untuk menganggap
bahwa proyek pengembangan perangkat lunak berjalan lancar. Bahkan di bidang
yang mapan seperti konstruksi, selalu ada yang tidak beres. Seseorang harus
mendiagnosis risiko proyek perangkat lunak sejak dini, dan memberikan
langkah-langkah untuk menghadapinya; lihat juga bab 8.
Semakin tidak pasti berbagai aspek proyek, semakin besar risikonya.
2.1. PERENCANAAN PROYEK 39
PENGEMBANGAN PERANGKAT LUNAK
7. Kepegawaian Pada titik waktu yang berbeda, proyek akan membutuhkan
jumlah personel yang berbeda, dengan keahlian yang berbeda. Awal, durasi,
jumlah, dan keahlian kategori personel tercantum di bawah judul ini.
8. Metode dan teknik Di bawah judul ini, metode dan teknik yang akan
digunakan selama rekayasa persyaratan, desain, implementasi dan pengujian
diberikan. Biasanya, cara kontrol versi dan konfigurasi untuk komponen
perangkat lunak ditangani juga dijelaskan di sini. Sebagian besar dokumentasi
teknis akan diproduksi selama fase ini. Oleh karena itu, seseorang harus
menyatakan bagaimana dokumentasi ini akan diurus.
Lingkungan pengujian yang diperlukan dan peralatan pengujian dijelaskan.
Selama pengujian, tekanan yang cukup besar biasanya akan diberikan pada
alat uji. Oleh karena itu, kegiatan ini harus direncanakan dengan matang.
Urutan di mana komponen diintegrasikan dan diuji harus dinyatakan secara
eksplisit. Juga, prosedur yang harus diikuti selama pengujian penerimaan,
yaitu pengujian di bawah pengawasan pengguna, harus diberikan. Pengujian
akan dibahas pada bab 13.
9. Kualitas asuransi Organisasi dan prosedur mana yang akan digunakan untuk
memastikan perangkat lunak yang dikembangkan memenuhi persyaratan
kualitas yang dinyatakan? Banyak aspek Rencana Penjaminan Mutu juga dapat
ditangani dalam dokumen terpisah. Topik penjaminan mutu dibahas pada bab 6.
10. Paket kerja Proyek yang lebih besar harus dipecah menjadi aktivitas,
bagian-bagian yang dapat dikelola yang dapat dialokasikan ke masing-masing
anggota tim. Masing-masing kegiatan ini harus diidentifikasi dalam rencana
proyek. Dekomposisi hirarkis proyek digambarkan dalam struktur perincian
pekerjaan (lihat juga bagian 8.4).
11. Sumber daya Selama proyek, banyak sumber daya yang dibutuhkan.
Perangkat keras, siklus CPU, dan alat yang diperlukan untuk mendukung proyek
dicantumkan di bawah entri ini. Seseorang juga harus menunjukkan personel yang
diperlukan untuk berbagai fase proses.
12. Anggaran dan jadwal Total anggaran untuk proyek harus dialokasikan ke
berbagai kegiatan seperti yang ditunjukkan dalam struktur rincian pekerjaan.
Kegiatan juga harus dijadwalkan pada waktunya, mis. menggunakan grafik PERT
(lihat bagian 8.4). Cara di mana sumber daya dan pengeluaran lainnya dilacak
juga ditunjukkan di bawah judul ini. Topik perkiraan biaya dan waktu akan dibahas
secara luas di bab 7.
- waktu,
– informasi,
- organisasi,
- kualitas,
- uang.
Kemajuan proyek pengembangan perangkat lunak (mis waktu aspek) sulit untuk
diukur. Sebelum sistem yang diusulkan selesai, hanya ada tumpukan kertas (besar).
Ucapan seperti '90% dari kode telah ditulis' harus diambil dengan sedikit garam.
Gambaran yang terlalu cerah tentang keadaan sebenarnya biasanya diberikan.
Pendekatan bertahap yang diperkenalkan di bab 1, dan variannya, bertujuan untuk
menyediakan alat bagi manajer untuk mengukur dan mengendalikan kemajuan.
Waktu yang dibutuhkan untuk membangun sebuah sistem jelas berhubungan
dengan ukuran sistem, dan dengan demikian total tenaga kerja yang dibutuhkan.
Sistem yang lebih besar membutuhkan lebih banyak waktu untuk berkembang,
meskipun kami mungkin mencoba mempersingkat waktu pengembangan dengan
mengalokasikan lebih banyak personel. Bagian dari masalah kontrol untuk proyek
pengembangan perangkat lunak adalah menukar waktu dengan orang.
Menambahkan lebih banyak orang untuk mempersingkat waktu pengembangan
tidak gratis. Semakin banyak orang yang terlibat, semakin banyak waktu yang
dibutuhkan untuk koordinasi dan komunikasi. Setelah titik tertentu, penambahan
orang justru memperpanjang waktu pengembangan.
2.2. PENGENDALIAN PROYEK 41
PENGEMBANGAN PERANGKAT LUNAK
Bagian dari masalah kontrol waktu diutarakan dalam Hukum Brooks: 'Menambahkan orang terlambat
proyek hanya membuatnya nanti '. Kami akan kembali ke masalah ini di bab tentang biaya
perkiraan.
Itu informasi yang harus dikelola, di atas segalanya, adalah dokumentasi. Di samping itu
dokumentasi teknis dan pengguna, ini juga memerlukan dokumentasi pada proyek
diri. Dokumentasi mengenai proyek mencakup hal-hal seperti: keadaan saat ini
urusan, perubahan yang telah disepakati, dan keputusan yang telah dibuat.
Jenis dokumentasi ini paling baik ditangani dalam konteks konfigurasi
pengelolaan. Dalam proyek tangkas, kurang perhatian diberikan pada dokumentasi selama
perkembangan. Pengetahuan yang diperlukan diam-diam, itu berada di kepala orang-orang
terlibat. Namun di sini juga, setelah sistem siap dan diserahkan kepada pelanggannya,
dokumentasi harus disediakan.
Semua anggota tim pengembangan harus memahami peran mereka dalam tim dan
apa yang diharapkan dari mereka. Sangat penting bahwa harapan ini jelas
semua orang yang terlibat. Harapan yang tidak terucapkan dan tidak jelas mengarah pada situasi di
mana
anggota tim individu menetapkan tujuan mereka sendiri, baik secara sadar atau tidak sadar.
Ini organisasiaspek layak perhatian terus menerus dari manajer proyek.
Kedua, pengorganisasian tim dan koordinasi orang-orang yang terlibat
akan, setidaknya sebagian, bergantung pada karakteristik proyek dan lingkungannya.
Ketergantungan ini harus dikenali dan diperhitungkan saat menyiapkan a
tim proyek.
Itu kualitas aspek merupakan hal yang sangat penting. Pelanggan tidak puas dengan
solusi murni teknis yang ditawarkan oleh spesialis komputer. Mereka menginginkan sistem itu
sesuai dengan kebutuhan nyata mereka. Persyaratan kualitas untuk perangkat lunak dan
pengembangannya seringkali
konflik satu sama lain. Pada waktu arsitektur, persyaratan kualitas diseimbangkan dalam a
dialog dengan semua pemangku kepentingan yang terlibat. Selama proyek kita harus menilai apakah
atau tidak persyaratan kualitas terpenuhi. Penilaian kualitas ini harus terjadi
secara teratur, sehingga tindakan tepat waktu dapat dilakukan. Kualitas bukanlah tambahan
fitur, itu harus dibangun di.
Mengontrol pengeluaran (yang uang aspek) sebagian besar berarti mengendalikan biaya tenaga
kerja.
Meskipun biaya perangkat keras dan peralatan tidak dapat diabaikan, hal ini biasanya dapat diabaikan
diperkirakan cukup tepat di awal proyek. Selain itu, ini biasanya jauh lebih sedikit
dari masalah dari biaya personil.
Memperkirakan biaya perangkat lunak berarti kita harus memperkirakan tenaga kerja
diperlukan untuk membangun perangkat lunak. Tenaga kerja yang dibutuhkan sangat tergantung pada
ukuran perangkat lunak, misalnya diukur sebagai jumlah kode yang akan dikirimkan.
Namun, banyak faktor lain yang memengaruhi biaya ini atau, alternatifnya, produktivitas
dengan mana perangkat lunak dapat diproduksi. Tim yang seimbang dengan pengalaman
orang akan jauh lebih produktif daripada tim yang baru dibentuk dengan tidak berpengalaman
rakyat. Kendala kualitas yang sangat ketat, seperti keandalan yang sangat tinggi atau sangat cepat
waktu respons, juga dapat sangat mengurangi produktivitas.
Sejumlah model telah diusulkan yang mencoba mengukur efek dari
pemicu biaya yang berbeda pada tenaga kerja yang dibutuhkan (lihat bab 7). Daripada
42 PENGANTAR MANAJEMEN REKAYASA
PERANGKAT LUNAK
memperkirakan ukuran terlebih dahulu, dan kemudian biayanya, seseorang juga
dapat menetapkan ambang biaya terlebih dahulu, dan bekerja secara bertahap,
pertama pada kebutuhan pengguna yang paling mendesak dan, jika waktu
memungkinkan, pada kebutuhan yang tidak terlalu mendesak. Atau seseorang
dapat menyepakati ambang pertama, dan memutuskan apakah lebih banyak uang
akan dibelanjakan ketika ambang ini tercapai. Pendekatan tambahan untuk estimasi
biaya ini cocok dengan pengembangan proyek yang gesit.
Pengembangan perangkat lunak adalah proses yang sangat padat karya. Salah
satu harapan kami adalah bahwa alat yang lebih baik dan peningkatan penggunaan
alat tersebut akan menghasilkan peningkatan produktivitas yang signifikan dan,
akibatnya, penurunan biaya yang signifikan dalam pengembangan perangkat lunak.
Cara kedua, untuk meningkatkan produktivitas secara dramatis, adalah
menggunakan perangkat lunak daripada membangunnya sendiri. Kedua topik ini
akan dibahas dalam bab-bab berikutnya. Seiring tren ini berlanjut, pengembangan
perangkat lunak mulai menjadi aktivitas padat modal, bukan padat karya (Wegner,
1984). Penilaian berkelanjutan terhadap proyek sehubungan dengan aspek
pengendalian ini adalah yang paling penting dan dari waktu ke waktu akan
mengarah pada penyesuaian waktu, biaya, organisasi, informasi, atau kualitas, atau
beberapa kombinasinya. Manajemen proyek adalah aktivitas yang sangat dinamis.
Agar dapat mengontrol proyek secara memadai, kami membutuhkan data
kuantitatif yang dikumpulkan saat proyek sedang dilaksanakan. Misalnya, data
tentang kesalahan yang ditemukan selama pengujian unit dapat membantu kami
memperkirakan upaya pengujian lebih lanjut yang diperlukan. Data tentang waktu
dan tenaga yang dihabiskan hingga titik tertentu akan memandu kita dalam
memperkirakan ulang jadwal dan biaya. Mengukur adalah mengetahui.
Data ini juga berharga dalam evaluasi post-mortem proyek. Dalam evaluasi
post-mortem kami menilai proyek saat ini untuk meningkatkan kinerja kami pada
proyek yang akan datang: kesalahan apa yang telah kami lakukan, apa yang telah
kami pelajari, apa yang perlu dilakukan secara berbeda pada proyek berikutnya?
Sayangnya, dalam praktiknya sangat sedikit data keras yang pernah
dikumpulkan, apalagi disimpan untuk digunakan nanti. Sebagian besar organisasi
pengembangan perangkat lunak memiliki sedikit wawasan tentang apa yang mereka
lakukan. Mereka cenderung beroperasi dengan cara yang agak kacau, terutama
saat menghadapi krisis. Dengan mengidentifikasi faktor-faktor kunci yang
memengaruhi pengendalian proses pengembangan perangkat lunak, kami dapat
menemukan cara untuk memperbaikinya. Topik ini dibahas lebih lanjut dalam bab 6,
di mana kita membahas Model Kematangan Kemampuan Perangkat Lunak.
2.3 Ringkasan
Bab ini memberikan pengenalan manajemen proyek rekayasa perangkat lunak.
Sebelum kita memulai proyek pengembangan perangkat lunak, itu harus
direncanakan dengan hati-hati. Proses perencanaan ini menghasilkan sebuah
dokumen, rencana proyek, yang memberikan gambaran yang jelas tentang proyek
kepada pelanggan dan tim proyek. Setelah rencana proyek disusun dan proyek
dimulai, pelaksanaannya harus dikontrol. Kami mengidentifikasi lima entitas yang
membutuhkan perhatian berkelanjutan kami untuk pengendalian proyek:
2.3. RINGKASAN 43
�
44 PENGANTAR MANAJEMEN REKAYASA
PERANGKAT LUNAK
9.
~
3
Dikunjungi kembali
TUJUAN PEMBELAJARAN
�
46 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
Di bab 1, kami memperkenalkan model sederhana dari siklus hidup perangkat lunak.
Kami membedakan beberapa fase berturut-turut: rekayasa persyaratan, desain,
implementasi, pengujian, pemeliharaan. Dinyatakan bahwa, dalam praktiknya,
seseorang sering menggunakan model proses yang lebih canggih. Dalam bab ini
kita melanjutkan diskusi ini. Kami memperkenalkan berbagai model alternatif untuk
menyusun proses pengembangan perangkat lunak.
Proyek pengembangan perangkat lunak seringkali merupakan proyek yang
sangat besar. Sejumlah orang bekerja pada proyek semacam itu untuk waktu yang
lama dan oleh karena itu seluruh proses perlu direncanakan dan dikendalikan
dengan hati-hati: kemajuan perlu dipantau, orang dan sumber daya perlu
dialokasikan pada titik waktu yang tepat, dll. menunjukkan bahwa kemajuan proyek
pengembangan perangkat lunak sangat sulit untuk diukur. Untuk mengontrol
kemajuan, kami menggunakan pengembangan bertahap di mana sejumlah tonggak
yang dapat diidentifikasi dengan jelas ditetapkan antara awal dan akhir proyek. Kami
menggunakan mekanisme serupa saat membangun rumah: fondasi diletakkan,
lantai pertama tercapai, rumah tahan cuaca, dan seterusnya. Seringkali,
pembayaran cicilan digabungkan untuk mencapai tonggak sejarah tersebut.
Secara umum, tonggak yang diidentifikasi dalam proyek pengembangan
perangkat lunak sesuai dengan titik waktu di mana dokumen tertentu tersedia:
Metode berbasis dokumen ini juga dikenal sebagai didorong oleh perencanaan atau kelas berat
metode. Didorong oleh perencanaan, karena penekanan pada rencana di muka untuk keseluruhan
proses. Kelas berat, karena menitikberatkan pada proses.
Dalam banyak proyek pengembangan perangkat lunak, perubahan adalah fakta kehidupan. Bahkan
mungkin
kasus di mana klien hanya memiliki gagasan yang kabur tentang persyaratan untuk sistem dia
meminta. Dalam beberapa tahun terakhir, sejumlah ringan, lincah metode telah diusulkan bahwa
sengaja menghadapi keadaan yang berubah dengan cepat ini. Metode ini menganjurkan
untuk tidak 'membuang-buang' waktu untuk kegiatan perencanaan dan desain yang mahal sejak dini,
tetapi untuk mewujudkannya
sesuatu yang berharga bagi pelanggan secepat mungkin. Berdasarkan umpan balik dari
pengguna, langkah selanjutnya kemudian diambil. Metode tangkas telah berevolusi dari pendekatan
seperti pembuatan prototipe dan Pengembangan Aplikasi Cepat yang mencoba membuang beberapa
atau semua kelemahan dari pendekatan berbasis dokumen yang disebutkan di atas. Kami akan
membahas sejumlah pendekatan ringan untuk pengembangan perangkat lunak di bagian 3.2.
Model evolusioner memperhitungkan bahwa banyak dari apa yang disebut pemeliharaan
benar-benar evolusi. Maka akan tampak wajar untuk secara eksplisit menanggung evolusi yang
diantisipasi ini
dalam pikiran sejak awal. Ini biasanya tidak terjadi. Baik di kelas berat maupun
pendekatan pengembangan ringan, pengembangan awal dari sistem perangkat lunak
pada umumnya dipisahkan secara ketat dari fase pemeliharaan berikutnya. Mayor
tujuan proyek pengembangan perangkat lunak kemudian bermuara pada pengiriman versi pertama
dari sistem kepada pengguna. Ini dapat mengakibatkan biaya perawatan yang berlebihan di kemudian
hari.
Agar dapat menilai biaya dan manfaat dengan benar, lebih baik total biaya siklus hidup
dari sekedar biaya pengembangan harus menjadi fokus utama kami. Melangkah lebih jauh, kita
mungkin berpendapat bahwa manajemen harus berkonsentrasi pada serangkaian produk serupa
(disebut
keluarga produk) daripada produk individu, sehingga memberikan insentif keduanya
untuk membangun bagian yang dapat digunakan kembali dan penggunaan kembali (bagian dari) produk
yang ada saat
mengembangkan yang baru.
Dari semua kemungkinan model siklus hidup kita harus memilih salah satu model tertentu
proyek yang diberikan. Pada umumnya, metode kelas berat lebih cocok (sangat) proyek besar, dan
situasi di mana persyaratan dapat diputuskan pada tahap awal. Ringan
metode sesuai dengan situasi perubahan yang cepat, dan proyek yang tidak melibatkan lebih dari,
katakanlah 50 orang. Karakteristik proyek yang berbeda, dan cara yang tepat untuk mengontrol
mereka secara efektif, dibahas dalam bab 8.
Pilihan untuk model siklus hidup tertentu juga melibatkan pendefinisian individu
langkah dan fase, kemungkinan interaksinya, penyampaiannya, dll. Dengan menggunakan an
bahasa pemodelan proses eksplisit, yang mungkin didukung oleh alat, kami mungkin
meningkatkan pemahaman kita tentang proses perangkat lunak, kita diberikan pegangan untuk
meningkatkan kendali kami atas pengembangan perangkat lunak, dan kami diberi garis dasar untuk
proses
peningkatan. Jenis pemodelan proses ini dibahas di bagian 3.6. Karena
dari penekanan yang jauh lebih besar pada perencanaan, jenis pemodelan ini lebih cocok
metode kelas berat.
48 SIKLUS HIDUP PERANGKAT
LUNAK DIKUNJUNGI
3.1 Model Air Terjun
Model air terjun pada dasarnya merupakan variasi kecil dari model yang
diperkenalkan pada bab 1. Model air terjun umumnya dikaitkan dengan Royce
(1970). Namun, pendekatan bertahap yang jelas untuk pengembangan perangkat
lunak, termasuk iterasi dan umpan balik, sudah dapat ditemukan dalam publikasi
dari awal 1960-an.
Model air terjun secara khusus mengekspresikan interaksi antara fase-fase
berikutnya. Menguji perangkat lunak bukanlah aktivitas yang secara ketat mengikuti
fase implementasi. Di dalam setiap fase proses pengembangan perangkat lunak,
kita harus membandingkan hasil yang diperoleh dengan yang dibutuhkan. Dalam
semua fase, kualitas harus dinilai dan dikendalikan.
Pada gambar 3.1, V & V adalah singkatan dari Verifikasi dan Validasi. Verifikasi
menanyakan apakah sistem memenuhi persyaratannya (apakah kita membangun
sistem dengan benar) dan dengan demikian mencoba menilai kebenaran transisi ke
fase berikutnya. Validasi menanyakan apakah sistem memenuhi persyaratan
pengguna (apakah kita membangun sistem yang tepat).
Baik model yang diperkenalkan di Bab 1 maupun model air terjun memiliki tempat yang cukup besar
menekankan pada analisis yang cermat sebelum sistem benar-benar dibangun. Kami ingin mencegah
mengerahkan banyak energi untuk membangun sistem yang kemudian ternyata tidak memuaskan
kebutuhan pengguna.
Karena itu kami mencoba mengidentifikasi dan mengikat kebutuhan pengguna sedini mungkin
mungkin. Persyaratan ini didokumentasikan dalam spesifikasi persyaratan. Pada
berdasarkan dokumen ini kami dapat memverifikasi pada tahap selanjutnya apakah ini atau tidak
persyaratan sedang dipenuhi. Karena dalam praktiknya sulit, jika bukan tidak mungkin, untuk
melakukannya
benar-benar menentukan kebutuhan pengguna, tes reguler juga harus dilakukan
dengan calon pengguna. Tes ini disebut validasi. Melalui validasi tersebut
langkah-langkah kami dapat mencegah sistem yang sedang dikembangkan menyimpang dari, mungkin
ditentukan secara tidak lengkap, persyaratan pengguna.
McCracken dan Jackson (1981) membandingkan model air terjun dengan toko mana
pelanggan wajib memberikan perintah pada saat masuk. Tidak ada kesempatan untuk
melihat-lihat, membandingkan harga, berubah pikiran, atau memutuskan menu yang berbeda untuk
makan malam hari ini. Beberapa hal dapat dipesan melalui surat, tetapi tidak semuanya.
Model air terjun pengembangan perangkat lunak, seperti air terjun Escher, tidak realistis.
Ada banyak bukti kuantitatif yang dimiliki model berbasis dokumen klasik
banyak kekurangan. Dalam banyak proyek pengembangan perangkat lunak, urutan yang ketat dari
fase yang dianjurkan oleh model air terjun sebenarnya tidak dipatuhi. Gambar 3.2 menunjukkan
perincian rata-rata aktivitas di seluruh fase siklus hidup untuk sejumlah proyek. Di dalam
gambar, label 'coding' mengacu pada fase yang mencakup kedua implementasi
dan pengujian unit.
Aktivitas Fase
Desain Pengkodean Integrasi Penerimaan
pengujian pengujian
Gambar 3.2 Perincian aktivitas lintas fase siklus hidup, setelahnya (Zelkowitz, 1988)
Jadi, misalnya, hanya 50% dari upaya desain ditemukan terjadi selama
fase desain aktual, sementara sepertiga dari upaya desain terjadi selama pengkodean
periode. Lebih buruk lagi, lebih dari 16% upaya desain terjadi setelah sistem selesai
seharusnya selesai.
Perilaku desain perangkat lunak dari masing-masing desainer dapat dicirikan sebagai
proses oportunistik (Guindon dan Curtis, 1988). Desainer bergerak bolak-balik
50 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
melintasi tingkat abstraksi mulai dari masalah domain aplikasi hingga masalah
pengkodean. Tanggal tonggak tampaknya agak arbitrer, dan sebagian besar
aktivitas melintasi batas fase.
belum final, sementara. "Kode kerja" membawa makna yang lebih positif. Itu menandakan
sesuatu yang bernilai langsung, meskipun belum sempurna.
Metode tangkas tidak memiliki fase arsitektur atau desain yang luas di muka.
Lagi pula, tidak masuk akal untuk menghabiskan banyak upaya pada desain jika Anda mengetahui
keinginan ini
sangat mungkin membuang-buang waktu. Lebih efektif untuk hanya melakukan desain sejauh
diperlukan untuk langkah segera berikutnya. Metode tangkas seringkali memiliki aktivitas terpisah
meningkatkan desain setelah setiap kenaikan, yang dikenal sebagai pemfaktoran ulang.
Metode tangkas berorientasi pada orang, bukan berorientasi pada proses. Mereka menekankan
elemen manusia dalam pengembangan perangkat lunak. Semangat tim dianggap sangat penting.
Hubungan tim sangat erat. Seringkali, tim yang gesit menempati satu ruangan besar. Para pengguna
berada di lokasi juga. Metode tangkas memiliki siklus komunikasi yang singkat antar pengembang
dan pengguna, dan antara pengembang.
Terakhir, metode tangkas tidak menghabiskan banyak energi untuk dokumentasi. Itu akan terjadi
untuk berubah, jadi mengapa menghabiskan waktu untuk sesuatu yang akan segera usang.
Sebaliknya, metode gesit mengandalkan pengetahuan diam-diam dari orang-orang yang terlibat. kalau
sudah
sebuah pertanyaan, tanyakan pada salah satu temanmu. Jangan berjuang dengan tumpukan kertas
yang besar, cukup
kemungkinan besar tidak akan memberikan jawabannya.
Beberapa orang berpendapat bahwa metode gesit harus 'murni', dan menunjukkan semuanya
karakteristik yang disebutkan di atas. Yang lain percaya bahwa campuran didorong oleh perencanaan
dan metode gesit juga bisa produktif. Kami setuju dengan pandangan yang terakhir. Di dalam
subbagian berikut, pertama kita membahas prototyping dan pengembangan inkremental,
metode awal yang menyadari bahwa pendekatan berbasis perencanaan seringkali tidak cocok dengan
situasi yang tidak stabil di tangan. Pengembangan Aplikasi Cepat dan DSDM menekankan
kolaborasi pelanggan dan peran orang dalam proses, dan dengan demikian menunjukkan a
sejumlah karakteristik kunci dari metode tangkas. Akhirnya, XP adalah metode gesit 'murni'.
– penggunaan bahasa tingkat sangat tinggi, di mana versi yang dapat dieksekusi
dapat dibuat dengan cepat. Versi yang dapat dieksekusi tetapi mungkin agak
tidak efisien ini dapat digunakan untuk menguji kegunaan dari sistem yang
diusulkan;
Keuntungan
Kekurangan
Pembuatan prototipe melibatkan langkah-langkah desain berulang dan, karena perhatian berulang
untuk desain, kualitasnya dapat meningkat. Karena diketahui secara apriori bahwa desainnya
akan berkembang selama langkah pembuatan prototipe berikutnya, perhatian yang lebih besar akan
diberikan kepada
faktor kualitas seperti fleksibilitas dan modularitas dan, sebagai hasilnya, kualitas desain mungkin
meningkatkan juga. Dalam pembuatan prototipe sekali pakai, kualitas desain akhir seringkali ditentukan
lebih tinggi karena pengalaman belajar dari langkah-langkah prototyping. Juga, final ini
langkah desain hampir tidak, jika ada, ditambal karena tindakan pengerjaan ulang. Karena ini
aspek, sistem yang dihasilkan sering ditemukan lebih mudah untuk dipelihara juga.
Di sisi lain, prototyping umumnya tidak menerapkan desain yang ketat dan
standar pembangunan. Jika kita prihatin dengan waktu pengembangan yang singkat, pasti
kegiatan yang diperlukan akan kurang mendapat perhatian. Kemungkinan besar dokumentasi itu
dikorbankan untuk kecepatan. Karena penambahan yang dihasilkan dari langkah pengerjaan ulang yang
sering,
kualitas desain prototipe evolusioner dapat memburuk. Untuk alasan itu juga,
sistem yang dihasilkan kurang dapat dipelihara. Terutama dalam prototipe evolusioner, the
kekokohan sistem seringkali akan kurang dari biasanya dengan yang lebih tradisional
mendekati. Dalam metode tangkas, refactoring diterapkan untuk mengatasi fenomena ini.
Terakhir, performa cenderung lebih buruk karena perhatian difokuskan pada fungsionalitas
dan ukuran kinerja tidak diambil sama sekali atau pada titik waktu tertentu
mereka menjadi terlalu sulit untuk disadari.
Secara umum dirasakan bahwa proyek prototyping membutuhkan tim yang berpengalaman.
Prototipe-
ing melibatkan pengambilan keputusan desain yang luas, terutama selama iterasi awal.
Dalam setiap iterasi, permintaan pengguna harus dipertimbangkan, baik secara timbal balik maupun
terhadap
kemudahan dan biaya realisasinya. Anggota tim yang tidak berpengalaman lebih mungkin
melakukannya
membuat pilihan yang buruk, sehingga sangat mengancam keberhasilan upaya pembuatan prototipe.
Dari diskusi ini, kami dapat mengumpulkan rekomendasi berikut untuk digunakan
teknik pembuatan prototipe:
– pembuatan prototipe sangat berguna dalam situasi di mana persyaratan
pengguna tidak jelas atau ambigu. Pembuatan prototipe tampaknya merupakan
cara yang baik untuk mengklarifikasi persyaratan tersebut;
– pembuatan prototipe juga sangat berguna untuk sistem dengan penekanan yang cukup besar
pada antarmuka pengguna dan yang menunjukkan tingkat interaksi pengguna yang tinggi;
– Selama pemeliharaan, kesalahan yang dilaporkan atau persyaratan yang berubah menjadi
pemicu
untuk melacak spiral.
Dilihat dengan cara ini, model spiral memasukkan model proses lain yang dibahas
jauh.
Pengembangan inkremental sangat dianjurkan oleh Gilb (1988). Itu diragukan
apakah penambahan waktu yang dianjurkan oleh Gilb, hingga maksimal beberapa minggu,
selalu masuk akal. Tetapi keuntungan dari pengembangan inkremental dipertimbangkan
bahkan dengan peningkatan waktu yang berbeda. Kejutan yang mengintai di dalam tradisional
pendekatan dan yang menimbulkan kesulitan yang cukup besar pada sisi manajemen perangkat lunak
proyek pengembangan dapat sangat berkurang ketika perangkat lunak dikembangkan dan
disampaikan secara bertahap.
– desain pengguna,
– konstruksi,
58 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
Gambar 3.5 Model spiral (Sumber: B.W. Boehm, Model spiral pengembangan dan
peningkatan perangkat lunak, Komputer IEEE 21:5 (1988) 1988 IEEE.)
– pemotongan.
Fase perencanaan kebutuhan dan desain pengguna memiliki banyak kesamaan dan
mungkin digabungkan untuk proyek yang lebih kecil. Bersama-sama, mereka
biasanya memakan waktu kurang dari dua bulan. Teknik utama yang digunakan
dalam fase ini dikenal sebagai Perencanaan Kebutuhan Bersama (JRP) dan Desain
Aplikasi Bersama (JAD). Kedua teknik ini banyak menggunakan bengkel tempat
pengembang dan calon pengguna bekerja bersama (maka kata sifat Persendian).
Tujuan dari lokakarya JRP adalah untuk mendapatkan persyaratan yang benar
pada kali pertama. Oleh karena itu, sangat penting bagi pemain kunci, yaitu
pengguna akhir sistem,
3.2. METODE CEPAT 59
hadir. Selama lokakarya JRP juga, persyaratan diprioritaskan, karena kemungkinan
tidak semuanya akan diterapkan di versi pertama sistem. Prioritas kebutuhan ini
dikenal sebagai triase. Triase biasanya berarti proses yang digunakan di medan
perang dan di ruang gawat darurat untuk memilah orang yang terluka ke dalam
kelompok berdasarkan kebutuhan mereka atau kemungkinan mendapat manfaat
dari perawatan medis segera. Di RAD, proses triase digunakan untuk memastikan
bahwa persyaratan yang paling penting ditangani terlebih dahulu. Hasil dari proses
ini sering kali berupa prioritas yang dilambangkan dengan akronim MoSCoW:
�
60 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
Ada banyak variasi model proses RAD yang dijelaskan di atas. Sebagai contoh,
dimungkinkan untuk memiliki kotak waktu yang eksplisit untuk pembangunan
masing-masing prototipe perantara juga. Dimungkinkan juga untuk mengadakan
sesi JRP atau JAD setelah setiap siklus pembuatan prototipe. Namun, bahan
utamanya tetap: pembuatan prototipe, keterlibatan pengguna yang cukup besar, tim
SWAT, dan kotak waktu.
JRP dan JAD memiliki banyak kesamaan dengan metode desain yang dikenal
sebagai ParticipatoryDesign (PD), atau sekolah pengembangan perangkat lunak
Skandinavia. Keduanya menekankan keterlibatan pengguna akhir. Namun, mereka
berbeda dalam tujuan mereka. Keterlibatan pengguna dalam JRP dan JAD terutama
ditujukan untuk mempercepat proses menghasilkan sistem yang tepat. Keterlibatan
pengguna dalam PD dilatarbelakangi oleh minat yang kuat terhadap konteks sosial
lingkungan kerja.
Kerangka kerja terkenal yang dibangun di atas RAD adalah DSDM. DSDM
adalah singkatan dari Metode Pengembangan Sistem Dinamis. DSDM didasarkan
pada sembilan prinsip yang digambarkan pada Gambar 3.6. DSDM adalah kerangka
nirlaba, dikelola oleh DSDMConsortium1. Deskripsi kerangka kerja tingkat tinggi
diberikan dalam (Stapleton, 2003). Rangkaian lengkap praktik DSDM hanya tersedia
untuk anggota Konsorsium DSDM. Proses DSDM memiliki lima fase; lihat juga
gambar 3.7:
�
3.2. METODE CEPAT 6
1
Prinsip
P
er
sy
ar
at
a
n
ti
d
a
k
d
a
p
at
s
e
p
e
n
u
h
n
y
a
di
te
nt
u
k
a
n
di
m
u
k
a.
Si
st
e
m
p
er
lu
b
er
e
v
ol
u
si,
d
a
n
p
e
n
g
er
ja
a
n
ul
a
n
g
a
d
al
a
h
fa
kt
a
k
e
hi
d
u
p
a
n
Jalan yang
salah dapat
diambil, dan
mundur
adalah
kemudian
diharuskan
untuk
sampai ke
titik aman
lagi
Persyaratan
tingkat tinggi
ditentukan
selama
fase studi
bisnis,
sementara
persyaratan
rinci-
ments
ditentukan
selama fase
iteratif
kemudian
Pengujian
tidak
ditunda
sampai
setelah
pengkodean
selesai
selesai. Hal
ini dilakukan
secara
bertahap,
setelah
setiap com-
komponen
ditulis
Tanggung
jawab
dibagi, dan
kebutuhan
pengemban
g
dukungan
dari
pengguna
akhir untuk
memutuska
n apa yang
akan
dikembangk
an
�
62 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
Kelayakan
Belajar
Bisnis
Belajar
tingkat.
Misalnya, kami tahu bahwa pembacaan kode oleh teman Anda, seperti yang
dilakukan dalam penelusuran dan pemeriksaan kode (lihat juga bab 13) adalah
metode pengujian yang sangat efektif. Di XP, seseorang melakukan ini sepanjang
waktu: dua pemrogram bekerja bersama di belakang satu layar komputer. Salah
satu dari mereka melakukan pengkodean, yang lain melihat ke belakang, memberi
nasihat, memperhatikan kesalahan kecil, mengajukan pertanyaan, dan sejenisnya.
Mereka berperan sebagai pilot dan co-pilot. Kapan saja, peran dapat berubah.
Praktek ini disebutpasangan pemrograman.
Kumpulan lengkap praktik XP diberikan pada gambar 3.8. Biasanya, tim XP
tidak terlalu besar, dan menempati satu ruangan. Rapat perencanaan sangat
singkat, dan melibatkan fungsionalitas langsung untuk dikirimkan ke pelanggan.
Perencanaan melibatkan pelanggan dan orang-orang teknis. Pelanggan harus
menetapkan prioritas, menentukan tanggal rilis, dan sejenisnya. Pelanggan
menjelaskan fitur yang diinginkan dari sistem instories, pada kartu indeks.
Orang-orang teknis memperkirakan berapa lama waktu yang diperlukan untuk
mengimplementasikan sebuah cerita, memutuskan urutan cerita mana dalam satu
rilis yang akan diimplementasikan, dll.
Di XP, desain dibuat sesederhana mungkin. Karena masa depan,
bagaimanapun, tidak jelas, tidak ada gunanya merancang skema besar yang
bagaimanapun juga tidak akan diikuti. Sehingga
3.2. METODE CEPAT 63
praktek XP Keterangan
Permainan Perencanaan
Cakupan rilis berikutnya ditentukan dengan cepat.
Rilis kecil Bila perlu, rencana diperbarui
Pertama-tama wujudkan sistem yang sederhana, lalu rilis
Metafora berikutnya
versi dalam siklus pendek
Desain sederhana Penggunaan metafora sederhana untuk keseluruhan sistem
Pastikan desainnya sesederhana mungkin
Pengujian setiap titik waktu. Hapus kerumitan sesegera mungkin
mungkin
Pemfaktoran ulang Pemrogram terus-menerus menulis unit test,
tomers menulis tes penerimaan
Pasangan pemrograman
Restrukturisasi sistem tanpa merubahnya
Kepemilikan kolektif perilaku, untuk meningkatkan kualitas
Semua kode ditulis oleh dua programmer sekaligus
Integrasi berkelanjutan40 mesin
Siapa pun dapat mengubah kode apa pun, di mana pun, kapan
jam seminggu pun
waktu
Pelanggan di tempat Sistem terintegrasi dan dibangun berkali-kali a
hari
Standar pengkodean Sebagai aturan, bekerja 40 jam seminggu. Kerja lembur
harus menjadi pengecualian
Miliki pengguna nyata di tim, penuh waktu
Tetapkan standar pengkodean untuk memudahkan komunikasi
desain hanya mencakup versi sistem saat ini. Setelah suatu tugas diselesaikan,
sistem diperiksa untuk melihat bagaimana hal itu dapat ditingkatkan (hapus kode duplikat, buat
sederhana, membuatnya lebih fleksibel). Ini disebut pemfaktoran ulang. Refactoring ini tidak perlu
terbatas pada kode sendiri. Setiap orang bertanggung jawab atas keseluruhan sistem. Untuk membuat
pekerjaan ini, seseorang perlu menetapkan standar pengkodean.
Ketika sebuah tim bekerja untuk mengimplementasikan sebuah cerita, tim tersebut menulis tes untuk
memeriksa
pelaksanaan cerita itu pada saat yang sama. Sebelum kode baru diperiksa,
semua tes ini harus berjalan dengan sukses. Setelah kode diperiksa, lengkap
test suite dijalankan, dan sekali lagi semua tes harus berjalan dengan sukses. Jika tidak, kode baru
dihapus lagi untuk memperbaikinya. Dengan cara ini, selalu ada sistem yang berjalan.
XP didasarkan pada lima prinsip yang mendorong praktiknya:
�
64 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
bekerja dan apa yang tidak. Dengan sering mengirimkan sistem yang sedang
berjalan kepada pelanggan, pelanggan mempelajari nilai apa yang ditawarkan
sistem, dan fitur apa yang dibutuhkan selanjutnya.
�
3.3. PROSES TERPADU RASIONAL (RUP) 65
Gambar 3.9 Struktur proses RUP (Sumber: P. Kruchten, Proses Kesatuan Rasional, An
Perkenalan, 2003, Addison-Wesley)
di sebelah setiap alur kerja pada gambar 3.9. Struktur ini memungkinkan kita untuk membedakan antara
iterasi yang berurutan, dan tekankan bahwa iterasi yang berbeda memiliki penekanan yang berbeda. Dia
mengakui bahwa rekayasa persyaratan, desain, dll adalah kegiatan yang sedang berlangsung
daripada fase dengan waktu mulai dan akhir yang ketat.
Fase awal berfokus untuk memperjelas tujuan: apa ruang lingkupnya
proyek ini, apa batasannya, apa kriteria penerimaan yang akan
digunakan ketika sistem dikirim ke pelanggannya? Selama fase ini juga, secara keseluruhan
biaya, jadwal dan risiko diperkirakan. Kasus penggunaan kritis dikembangkan, serta a
calon arsitektur. Pada akhir fase ini, kasus bisnis untuk sistem harus
menjadi jelas. Ini mungkin menjadi masukan untuk keputusan go/no-go.
Fase elaborasi terutama ditujukan untuk menganalisis domain masalah, dan
memperoleh arsitektur suara. Pada akhir fase ini, sebagian besar kasus penggunaan akan terjadi
diidentifikasi, dan semua risiko utama harus diselesaikan.
Tahap konstruksi adalah manufaktur, proses pembangunan. Penekanannya
sedang mengembangkan produk yang dapat diterapkan. Komponen lengkap dikembangkan dan
diuji secara menyeluruh. Manual pengguna ditulis. Di akhir fase ini, yang pertama
versi operasional sistem, yaitu rilis beta, siap.
Pada fase transisi, sistem dirilis ke komunitas pengguna dan beta-
diuji. Selama fase ini, database mungkin harus diubah, pengguna dilatih dan,
dalam hal sistem pengganti, sistem lama yang diganti akan dihapus.
RUP didasarkan pada serangkaian praktik terbaik yang telah berkembang selama bertahun-tahun.
Ini
66 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
praktik terbaik tercantum dalam Tabel 3.10. Banyak dari praktik terbaik ini tentu saja
juga hadir dalam model pengembangan lainnya. Poin kuat dari RUP adalah
menyediakan integrasi yang seimbang dari mereka. Mengingat latar belakangnya,
tidak mengherankan jika RUP diarahkan pada pengembangan sistem berorientasi
objek. Tapi RUP cocok untuk proyek dengan karakteristik yang sangat berbeda.
Penyesuaian RUP ke situasi di tangan meskipun diserahkan kepada pengguna
metode.
Dalam bab 1, ditunjukkan bahwa upaya pemeliharaan yang cukup besar tidak dapat
dihindari. Setiap tugas pemeliharaan, apakah itu berkaitan dengan memperbaiki
kesalahan atau menyesuaikan sistem dengan kebutuhan pengguna baru, pada
prinsipnya memerlukan semua aspek siklus pengembangan awal. Selama
pemeliharaan, kami juga harus menganalisis masalah dan menyusun desain yang
kemudian diimplementasikan dan diuji.
Perbedaan besar pertama adalah bahwa perubahan ini dilakukan pada produk
yang sudah ada. Namun, selama pengembangan awal, kami juga sering tidak
memulai dari awal. Jika organisasi yang ada memutuskan untuk mengotomatiskan
administrasi pesanannya, sistem mungkin harus berinteraksi dengan sistem yang
sudah ada untuk, katakanlah, administrasi stok dan pembukuan. Dengan demikian,
aktivitas pemeliharaan berbeda derajatnya dari pengembangan awal, bukan secara
fundamental. Perbedaan relatif ini bahkan lebih jelas ketika sistem dibuat prototipe
atau dikembangkan secara bertahap.
Perbedaan utama kedua, tekanan waktu, memiliki dampak yang jauh lebih
besar. Tekanan waktu paling terasa saat memperbaiki kesalahan, karena itu sangat
mungkin bagian tertentu dari organisasi harus ditutup karena perangkat lunak tidak
beroperasi. Dalam kasus seperti itu, kami harus bekerja melawan waktu untuk
mengidentifikasi dan memperbaiki kesalahan. Seringkali seseorang menambal kode
dan melewatkan langkah analisis dan desain yang menyeluruh. Struktur sistem
cenderung menderita karena tambalan semacam itu. Entropi sistem meningkat,
yang menghambat aktivitas pemeliharaan selanjutnya. Lebih buruk lagi,
dokumentasi sistem mungkin tidak diperbarui. Perangkat lunak dan dokumentasi
terkait kemudian terpisah, yang sekali lagi akan menghambat aktivitas pemeliharaan
di masa mendatang. Pembahasan yang lebih rinci tentang masalah pemeliharaan
diberikan di bab 14.
Lehman dan rekan kerjanya telah secara ekstensif mempelajari dinamika sistem
perangkat lunak yang perlu dipertahankan dan diperbesar ukurannya. Berdasarkan
studi kuantitatif tersebut, mereka merumuskan hukum evolusi perangkat lunak
berikut (dijelaskan di bawah):
Praktek terbaik K
e
t
e
r
a
n
g
a
n
Pengembangan berulang Sistem dikembangkan dengan cara
iteratif. Ini
bukan proses yang tidak terkendali. Iterasi direncanakan,
dan kemajuan diukur dengan hati-hati.
Manajemen persyaratan RUP memiliki pendekatan
sistematis untuk memunculkan,
menangkap
ing dan mengelola persyaratan, termasuk kemungkinan
perubahan persyaratan ini.
Arsitektur dan Penggunaan com- Fase awal RUP menghasilkan
arsitektur
komponen mendatang Arsitektur ini digunakan
di sisa tahun
proyek. Itu dijelaskan dalam pandangan yang berbeda. RUP
mendukung pengembangan sistem berbasis komponen, di
mana setiap komponen adalah perangkat lunak nontrivial
dengan batasan yang jelas.
Pemodelan dan UML Sebagian besar RUP adalah
tentang mengembangkan model,
seperti
model kasus penggunaan, model pengujian, dll. Model ini
dijelaskan dalam UML.
Kualitas proses dan produk Kualitas bukanlah tambahan, tetapi
tanggung jawab dari
uct semua orang yang terlibat. Alur
kerja pengujian ditujukan
dengan sangat yakin bahwa tingkat kualitas yang
diharapkan terpenuhi.
Konfigurasi Dan mengubah Proyek pengembangan berulang
memberikan hasil yang luas
pengelolaan jumlah produk, banyak yang sering
diubah. Ini meminta prosedur yang baik untuk
melakukannya, dan dukungan alat yang sesuai.
Pengembangan berbasis kasus penggunaan Use case menggambarkan perilaku
sistem.
Mereka memainkan peran utama dalam berbagai alur kerja,
terutama persyaratan, desain, pengujian, dan alur kerja
manajemen.
Konfigurasi proses Tidak ada ukuran yang cocok untuk
semua. Meskipun RUP dapat
digunakan "sebagaimana adanya",
itu juga dapat dimodifikasi dan disesuaikan agar lebih sesuai
dengan keadaan tertentu.
Dukungan alat Agar efektif, pengembangan
perangkat lunak membutuhkan alat
mendukung. RUP didukung oleh berbagai macam alat,
terutama di bidang pemodelan visual dan manajemen
konfigurasi.
3. Hukum pengaturan diri Proses evolusi perangkat lunak mengatur sendiri dan
mempromosikan kelancaran pertumbuhan perangkat lunak.
8. Hukum umpan balik sistem Evolusi perangkat lunak harus dilihat sebagai
sistem umpan balik untuk mencapai perbaikan.
Dalam publikasi awal, Lehman (1974) membandingkan pertumbuhan sistem
perangkat lunak dengan pertumbuhan kota dan birokrasi. Dia membuat perbedaan
antara aktivitas progresif dan anti-regresif dalam pengembangan perangkat lunak.
Lehman menganggap model ini juga berlaku untuk sistem sosial ekonomi. Di kota,
misalnya, kegiatan progresif berkontribusi pada peningkatan taraf hidup atau
kualitas hidup. Kegiatan anti-regresif, seperti pengumpulan sampah, berfungsi untuk
mempertahankan status quo. Jika perhatian tidak cukup diberikan pada aktivitas
anti-regresif tersebut, penurunan akan terjadi. Aktivitas anti-regresif seringkali tidak
menarik, secara politis. Ini adalah investasi di masa depan, yang sebaiknya
diserahkan kepada orang lain. (Fenomena yang sama dapat diamati dalam
pertumbuhan industri kimia dan masalah polusi yang diakibatkannya.) Menurut
Lehman, jenis aktivitas yang sama terjadi dalam proyek pengembangan perangkat
lunak. Menghasilkan kode baru dan mengubah kode yang ada adalah aktivitas
progresif. Ini adalah kegiatan yang menarik, menantang dan bermanfaat. Mereka
memberi pengguna fungsionalitas baru atau lebih baik. Menulis dokumentasi,
memperbaiki struktur kode, dan memelihara komunikasi yang baik antara
orang-orang yang terlibat adalah aktivitas anti-regresi. Mengabaikan aktivitas ini
mungkin tidak berbahaya dalam jangka pendek, tetapi pasti dalam jangka panjang.
Untuk setiap sistem, kita harus mencari keseimbangan yang tepat antara kedua
jenis aktivitas tersebut.
Cara kerja hukum ketiga (hukum pengaturan diri) dapat diilustrasikan melalui
gambar 3.11 yang menggambarkan pola pertumbuhan atribut sistem dari waktu ke
waktu. Atribut sistem meliputi panjang (diukur dalam baris kode), jumlah modul,
jumlah fungsi yang dapat dipanggil pengguna, dll. Sumbu waktu dapat menunjukkan
nomor rilis, jumlah bulan sistem beroperasi, atau sejenisnya. (Itu
3.4. INTERMEZZO: PEMELIHARAAN ATAU 69
EVOLUSI
data aktual yang dipelajari oleh Lehman menyangkut hubungan antara jumlah modul
dan nomor rilis sistem operasi OS360.)
Hubungan yang digambarkan pada gambar 3.11 hampir linier. Riak pada gambar adalah
sangat teratur juga. Periode lebih dari pertumbuhan linier bergantian dengan periode
kurang dari pertumbuhan linier. Lehman menjelaskan lebih dari pertumbuhan linier dengan menunjuk
tekanan dari pengguna untuk mendapatkan lebih banyak fungsi secepat mungkin. Para pengembang
atau pengelola cenderung membungkuk di bawah tekanan ini. Akibatnya, seseorang menggunakan trik
dan pintasan dalam kode, dokumentasi tertinggal, kesalahan diperkenalkan dan
sistem tidak cukup diuji. Setelah beberapa saat, lebih banyak perhatian diberikan pada anti-regresi
aktivitas: kode perlu difaktorkan ulang dan dokumentasi diperbarui sebelumnya
pertumbuhan lebih lanjut adalah mungkin. Kedua jenis aktivitas ini stabil dari waktu ke waktu.
Cara melakukan ini melibatkan dua proses: rekayasa domain dan aplikasi
rekayasa.
Dalam rekayasa domain, kami menganalisis domain yang akan kami kembangkan. Ini
proses memiliki siklus hidupnya sendiri. Ini menghasilkan satu set komponen yang dapat digunakan
kembali yang terbentuk
dasar produk yang akan dikembangkan. Biasanya juga, referensi arsitektur untuk
semua produk yang akan dikembangkan diproduksi juga. Langkah penting dalam proses ini
adalah untuk memutuskan ruang lingkup lini produk. Apakah kita akan mengembangkan produk
baris hanya untuk perpustakaan universitas, atau untuk perpustakaan pada umumnya? Yang pertama
lebih sederhana, tapi
memiliki pasar yang lebih terbatas. Yang terakhir berpotensi memiliki pasar yang lebih besar, tetapi
kemungkinan besar
menghasilkan arsitektur keseluruhan yang lebih kompleks dan produk yang lebih kompleks. Pelingkupan
untuk lini produk adalah masalah yang sulit. Itu dipengaruhi oleh strategi organisasi
dan membutuhkan wawasan tentang kemungkinan evolusi domain. Terakhir, domain
proses rekayasa menghasilkan rencana produksi, panduan bagaimana mengembangkan produk
dalam keluarga produk.
Rekayasa aplikasi menyangkut pengembangan produk individual. Dia
biasanya mengikuti skema seperti air terjun. Inputnya adalah output dari domain
proses rekayasa: arsitektur referensi, rencana produksi, dan himpunan
aset yang dapat digunakan kembali.
Organisasi lini produk sering kali memisahkan aktivitas rekayasa domain dari
kegiatan rekayasa aplikasi. Secara efektif, kegiatan ini kemudian menjadi terpisah
proyek. Pengembangan produk individu dapat menghasilkan produk baru atau diadaptasi
komponen yang mengarah pada adaptasi di tingkat keluarga produk, yang pada gilirannya
mempengaruhi
pengembangan produk selanjutnya. Akibatnya, ada loop umpan balik
dari proses rekayasa aplikasi ke proses rekayasa domain dan sebaliknya
sebaliknya.
Lini produk perangkat lunak sangat cocok di domain yang memiliki banyak
variasi produk yang cukup mirip, seperti ponsel, televisi, kamera.
Perusahaan yang beroperasi di domain ini telah memelopori bidang lini produk.
Diskusi yang lebih rumit tentang penggunaan kembali perangkat lunak dan lini produk perangkat
lunak diberikan
dalam bab ??. Arsitektur perangkat lunak dibahas dalam bab 11.
Jaring petri adalah teknik pemodelan yang menarik untuk proses, karena memungkinkan a
sejumlah nondeterminisme dan paralelisme. Misalnya proses pada gambar
3.14 tidak menentukan urutan aktivitas pengkodean dan penjadwalan
dilakukan. Mereka mungkin berjalan secara paralel; sinkronisasi terjadi ketika keduanya
selesai.
Deskripsi yang tepat dari proses perangkat lunak, baik itu dalam bahasa pemrograman
notasi, notasi grafis, atau lainnya, melayani tiga tujuan utama:
�
74 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
proyek, orang harus bekerja sama. Oleh karena itu, mereka perlu memiliki
pandangan bersama tentang proses yang akan dilakukan dan peran yang
harus mereka mainkan dalam proses tersebut. Model proses peninjauan yang
diberikan di atas dapat digunakan untuk tujuan ini.
�
3.7. RINGKASAN 75
�
76 SIKLUS HIDUP PERANGKAT
LUNAK DIKUNJUNGI
3.8 Bacaan lebih
lanjut
Model air terjun umumnya dikaitkan dengan Royce (1970) dan menjadi terkenal
melalui Boehm (1976). Namun, pendekatan bertahap yang jelas untuk
pengembangan perangkat lunak, termasuk iterasi dan umpan balik, sudah dapat
ditemukan di publikasi sebelumnya: (Benington, 1983) dan (Hosier, 1961).
Keuntungan dan kerugian prototyping, berdasarkan analisis dari 22 studi kasus
yang diterbitkan dan 17 akun tangan pertama, diberikan di (Gordon dan Bieman,
1994). (Verner dan Cerpa, 1997) membahas pandangan berbeda yang dipegang
oleh analis dan manajer profesional. dan kontra dari pembuatan prototipe.
Untuk pembahasan RAD yang sangat rumit, lihat (Martin, 1991). DSDM dibahas
dalam (Stapleton, 2003). Desain Partisipatif dijelaskan dalam (Floyd et al.,
1989).(CACM, 1993a) adalah edisi khusus tentang Desain Partisipatif. Ini berisi
artikel yang menjelaskan pengalaman dengan Desain Partisipatif, serta
perbandingan RAD dan Desain Partisipatif. (Kruchten, 2003) memberikan
pengenalan yang baik tentang RUP. Ada banyak buku tentang metode tangkas.
Buku standar XP dibuat oleh penemunya, Kent Beck (2000). Volume pendamping
yang baik adalah (Jeffries et al., 2001). Metode gesit lainnya termasuk Scrum
(Schwaber dan Beedle, 2002) dan keluarga Crystal dari metodologi (Cockburn,
2002). Untuk perbandingan sejumlah metode tangkas, lihat (Abrahamsson et al.,
2002). Boehm dan Turner (2003) membandingkan perencanaan-driven dan metode
gesit, dan memberikan saran kapan menggunakan jenis metode yang mana.
Lehman dan Belady (1985) memberikan ikhtisar tentang karya awal mereka
tentang hukum evolusi perangkat lunak. Lehman dkk. (1997) dan Cook et al. (2006)
memberikan perspektif yang diperbarui. Rumusan yang diberikan dalam bab ini
didasarkan pada (Lehman et al., 1997). Pandangan pengembangan perangkat
lunak seperti pabrik disarankan pada konferensi pertama tentang Rekayasa
Perangkat Lunak (McIlroy, 1968). Istilah 'pabrik perangkat lunak' juga sering
dikaitkan dengan upaya Jepang untuk meningkatkan produktivitas pengembangan
perangkat lunak (Cusumano, 1989). Gagasan lini produk perangkat lunak muncul di
tahun 80-an sebagai cara untuk meningkatkan skala ekonomi. Clements dan
Northrop (2001) dan Pohlet al. (2005) memberikan pembahasan mendalam tentang
rekayasa lini produk perangkat lunak. (Osterweil, 1987) meluncurkan ide
untuk menggambarkan proses pengembangan perangkat lunak sebagai program.
Penilaian kritis terhadap pandangan ini diberikan dalam (Lehman, 1987), (Curtiset
al., 1987) dan (Curtis, 1989). Kecenderungan saat ini dalam pemodelan proses
perangkat lunak dijelaskan dalam (Fuggetta dan Wolf, 1996).
Latihan
12. �
78 SIKLUS HIDUP PERANGKAT LUNAK
DIKUNJUNGI
proses proyek. Apakah menurut Anda ukuran ini cukup? Dapatkah Anda memikirkan
cara yang lebih baik untuk mengukur kemajuan?
18. ~
4
Manajemen konfigurasi
TUJUAN PEMBELAJARAN
�
80 MANAJEMEN KONFIGURASI
– ujung depan untuk bahasa seperti Pascal, C, atau Modula-2. Ujung depan
untuk languageX akan menerjemahkan program dalam bahasa itu ke dalam
codeEM perantara universal;
Kompiler kemudian diperoleh dengan memilih ujung depan untuk bahasa tertentu,
ujung belakang untuk mesin tertentu dan, secara opsional, satu atau lebih
pengoptimal. Setiap kompiler adalah konfigurasi, kombinasi elemen tertentu dari
sistem ACK. Sistem ACK adalah contoh lini produk, dari era sebelum gagasan itu
digunakan. Tugas utama manajemen konfigurasi dibahas di bagian 4.1.
Rencana Manajemen Konfigurasi menetapkan prosedur yang menjelaskan cara
mendekati manajemen konfigurasi. Isi dokumen ini dibahas di bagian 4.2.
Manajemen konfigurasi seringkali didukung oleh alat. Pembahasan alat-alat tersebut
sebagian besar ditunda hingga bab 15.
4.1. TUGAS DAN TANGGUNG JAWAB 81
– spesifikasi kebutuhan,
– dokumentasi desain,
– rencana pengujian,
- kasus uji,
- hasil tes,
– panduan pengguna.
Pada suatu saat, baseline akan berisi spesifikasi kebutuhan. Seiring waktu
lanjutkan, elemen akan ditambahkan: dokumen desain, komponen kode sumber, tes
laporan, dll. Tugas utama manajemen konfigurasi adalah menjaga integritas
set artefak ini.
Hal ini sangat penting jika perubahan harus dimasukkan. Seandainya,
selama pengujian, cacat utama pada beberapa komponen ditemukan. Kami kemudian harus
telusuri kembali langkah-langkah kami dan perbaiki tidak hanya komponen itu tetapi juga komponen
yang sesuai
dokumen desain, dan bahkan mungkin spesifikasi kebutuhan. Ini dapat mempengaruhi
pekerjaan yang dilakukan oleh orang lain masih menggunakan versi lama. Lebih buruk lagi, seseorang
lain mungkin ingin membuat perubahan pada komponen yang sama pada waktu yang sama.
82 MANAJEMEN KONFIGURASI
4.1. TUGAS DAN TANGGUNG JAWAB 83
�
86 MANAJEMEN KONFIGURASI
beberapa urutan angka misterius, sekarang diidentifikasi oleh beberapa garis dasar
ditambah serangkaian perubahan. Kumpulan perubahan mungkin kosong. Kami
dengan demikian menentukan
baseline X plus 'perbaiki masalah ukuran tabel'
daripada
F
4.3. RINGKASAN 87
bagaimana permintaan perubahan ditangani, bagaimana fase pengembangan
ditutup, bagaimana status sistem dipertahankan, bagaimana antarmuka antar
komponen diidentifikasi? Juga, hubungan dengan organisasi fungsional lainnya,
seperti pengembangan perangkat lunak dan penjaminan mutu, digambarkan.
Kegiatan Bagian ini menjelaskan bagaimana konfigurasi akan diidentifikasi dan dikendalikan
dan bagaimana statusnya akan dipertanggungjawabkan dan dilaporkan. Sebuah konfigurasi
diidentifikasi oleh a
baseline: deskripsi konstituen konfigurasi itu. Konfigurasi seperti itu
harus disetujui secara formal oleh pihak-pihak yang terlibat.
Diperlukan prosedur yang jelas dan tepat sehubungan dengan pemrosesan perubahan
permintaan jika proyek pengembangan perangkat lunak akan dikendalikan. Sebuah Konfigurasi
Control Board (CCB) biasanya memiliki tanggung jawab untuk mengevaluasi dan menyetujui atau
menolak
perubahan yang diusulkan. Kewenangan, tanggung jawab, dan keanggotaan CCB harus
dinyatakan. Karena komponen perangkat lunak biasanya tergabung dalam pustaka, prosedur
untuk mengendalikan perpustakaan ini harus ditetapkan juga.
Untuk dapat mengontrol proyek pengembangan perangkat lunak, data harus
dikumpulkan dan diproses. Informasi yang biasanya diperlukan meliputi: saat ini
status komponen, versi dan permintaan perubahan, serta laporan yang disetujui
perubahan dan penerapannya.
Perubahan pada item konfigurasi dapat memengaruhi item di luar cakupan rencana,
seperti barang-barang perangkat keras. Item eksternal ini harus diidentifikasi dan antarmuka mereka
dikendalikan. Dengan nada yang sama, antarmuka ke item yang dikembangkan di luar proyek harus
diidentifikasi dan dikendalikan.
4.3 Ringkasan
Manajemen konfigurasi berkaitan dengan manajemen semua artefak yang
dihasilkan selama proyek pengembangan perangkat lunak. Ini memerlukan kegiatan
utama berikut:
�
88 MANAJEMEN
KONFIGURASI
1. Perkenalan
A. Tujuan
B. Cakupan
C. Definisi dan singkatan
D. Referensi
2. manajemen SCM
A. Organisasi
B. tanggung jawab SCM
C. Kebijakan, arahan dan
3. prosedur yang berlaku
kegiatan SCM
A. Identifikasi konfigurasi
B. Kontrol konfigurasi
C. Akuntansi status konfigurasi
D. Audit dan tinjauan
konfigurasi
e. Kontrol antarmuka
F. Kontrol subkontraktor/vendor
4.
Jadwal SCM
5. sumber daya SCM
6. pemeliharaan rencana SCM
set lengkap dokumen yang berhubungan dengan proyek. Tugasnya dan prosedur
lebih lanjut untuk manajemen konfigurasi diatur dalam dokumen terpisah, Rencana
Manajemen Konfigurasi.
Sejarah dan pengembangan manajemen konfigurasi terkait erat dengan sejarah
dan pengembangan alat manajemen konfigurasi. Pada awalnya, alat ini
menekankan pencatatan perubahan file fisik. Ada sedikit dukungan untuk aspek
proses. Sistem manajemen konfigurasi masa kini menangani aspek proses juga
(manajemen alur kerja) dan banyak yang telah mengadopsi orientasi perubahan di
samping atau alih-alih tampilan konfigurasi berorientasi versi. Semakin banyak, alat
manajemen konfigurasi berfungsi sebagai alat manajemen dokumen yang
mendukung kerja sama di antara sekelompok orang, mungkin didistribusikan ke
beberapa situs, bekerja bersama pada kumpulan objek bersama.
4.4. BACAAN LEBIH LANJUT 89
Latihan
7. ~
5
Organisasi Tim
TUJUAN PEMBELAJARAN
�
91
Menemukan kerangka kerja organisasi yang tepat dan campuran keterampilan yang tepat
untuk a
tim pengembangan adalah masalah yang sulit. Sedikit teori beralasan tersedia
untuk ini. Namun, banyak cerita tentang proyek yang berhasil dan kurang berhasil
beberapa seluk-beluk masalah tim proyek. Bab ini menggambarkan jurusan
masalah yang terlibat.
– Pengarahan tugas Hal ini menyangkut perhatian terhadap hasil yang akan dicapai dan
cara di mana hasil ini harus dicapai.
Hubungan dan pengarahan tugas bisa tinggi atau rendah. Ini mengarah pada empat
kombinasi dasar, seperti yang digambarkan pada gambar 5.1. Jelas, kombinasi ini
sesuai dengan orientasi ekstrim. Untuk setiap dimensi, ada seluruh spektrum
kemungkinan.
Jenis organisasi hirarkis sering mencerminkan struktur global dari sistem yang
akan dikembangkan. Jika sistem memiliki tiga subsistem utama, mungkin ada tiga
tim, satu untuk setiap subsistem, seperti yang ditunjukkan pada gambar 5.2. Seperti
yang ditunjukkan dalam gambar ini, mungkin juga ada unit fungsional yang terkait
dengan tanggung jawab proyek yang spesifik, seperti penjaminan mutu dan
pengujian.
Tidaklah mungkin mengasosiasikan organisasi hierarkis hanya dengan salah
satu mekanisme koordinasi yang diperkenalkan di atas. Untuk setiap unit yang
diidentifikasi, salah satu dari mekanisme koordinasi
disebutkan sebelumnya adalah mungkin. Juga, seseorang tidak perlu
menerapkan mekanisme yang sama di setiap simpul hierarki. Namun, memiliki
mekanisme koordinasi yang berbeda dalam satu proyek yang sama bukan tanpa
masalah.
Berdasarkan analisis karakteristik berbagai subsistem, masing-masing manajer
mungkin ingin memilih gaya manajemen dan mekanisme koordinasi yang paling
sesuai dengan karakteristik tersebut. Jika satu atau lebih dari subsistem bersifat
sangat inovatif, manajemen mereka dapat memilih jenis koordinasi penyesuaian
timbal balik. Tingkat yang lebih tinggi dalam hierarki biasanya akan cenderung ke
arah mekanisme koordinasi berdasarkan beberapa bentuk standarisasi, dengan
memberlakukan aturan dan prosedur seperti dalam birokrasi mesin, atau mengukur
keluaran seperti dalam konfigurasi yang terdivisi. Dalam kasus seperti itu, kekuatan
internal dan eksternal mungkin berbenturan di satu atau lebih tingkat menengah.
Titik kritis lain dalam organisasi hierarki mana pun adalah jarak antara bagian
atas dan bagian bawah piramida hierarki. Pekerjaan 'nyata' umumnya dilakukan di
tingkat yang lebih rendah dari piramida ini. Orang-orang di tingkat yang lebih rendah
ini umumnya memiliki pengetahuan aplikasi yang sebenarnya. Semakin tinggi naik
dalam hierarki, semakin tidak spesifik pengetahuannya (inilah alasan utama
mengapa manajemen pada tingkat yang lebih tinggi ini cenderung ke arah
koordinasi melalui standardisasi). Namun, sebagian besar
5.2. ORGANISASI TIM 99
keputusan diambil pada tingkat yang cukup tinggi. Dalam banyak kasus, sinyal dari level yang lebih
rendah
entah bagaimana dimasukkan di salah satu tingkat menengah.
Jika informasi merembes melalui berbagai tingkatan dalam hierarki, ia cenderung menjadi
semakin berwarna mawar. Skenario berikut ini tidak sepenuhnya fiktif:
Distorsi semacam ini sulit untuk dihindari sama sekali. Mereka, bagaimanapun,
diperkuat oleh fakta bahwa garis organisasi di mana kemajuan dilaporkan
juga merupakan garis di mana kinerja anggota tim diukur dan
dievaluasi. Setiap orang disukai oleh evaluasi positif dan karenanya cenderung berwarna
laporan sebagaimana mestinya. Jika data tentang kemajuan proyek sedang dikumpulkan dan diproses
oleh orang yang tidak terlibat langsung dalam penilaian anggota tim, Anda punya banyak
kemungkinan yang lebih tinggi bahwa informasi yang dikumpulkan memiliki keandalan yang memadai.
Aspek yang sama bermasalahnya dari organisasi hierarkis terletak pada kenyataan bahwa
seseorang dinilai, baik secara sosial maupun finansial, menurut tingkat di mana seseorang berdiri
dalam organisasi. Oleh karena itu wajar untuk bercita-cita ke tingkat yang lebih tinggi dan lebih tinggi di
dalam
hierarki. Namun, sama sekali tidak jelas bahwa ini diinginkan. Prinsip Petrus
mengatakan: dalam organisasi hierarkis setiap karyawan pada umumnya naik hingga mencapai a
tingkat di mana dia tidak kompeten. Programmer yang baik tidak harus menjadi manajer yang baik.
Pemrograman yang baik membutuhkan keterampilan tertentu. Untuk menjadi manajer yang baik,
diperlukan keterampilan yang berbeda
diperlukan. Dalam jangka panjang, tampaknya lebih bijaksana untuk mempertahankan orang pada
tingkat di mana mereka berada
bekerja dengan baik, dan berikan penghargaan yang sesuai.
Dalam situasi seperti itu, manajer proyek bertanggung jawab atas keberhasilan
penyelesaian proyek. Manajer yang membawahi satu atau lebih unit dengan
spesialisasi yang sama memiliki misi jangka panjang, seperti mempertahankan atau
memperluas pengetahuan dan keahlian anggota timnya. Diungkapkan dalam hal
dimensi manajemen dasar yang dibahas sebelumnya, manajer proyek cenderung
menekankan pengarahan tugas, sedangkan manajer unit akan menekankan
pengarahan hubungan. Organisasi seperti itu bisa sangat efektif, asalkan ada rasa
saling percaya yang cukup dan kemauan untuk bekerja sama dan mengejar tujuan
proyek.
Tingkat K
e
Fasih - t
3 e
r
Memisahkan- 2 a
n
Mengikuti- 1 g
a
n
Tim inti
Co−Developer
Pengguna Aktif
Pengguna Pasif
�
104 MANAJEMEN ORGANISASI DAN
ORGANISASI TIM
– Komunikasi antar pengembang
Komunitas open source adalah "perusahaan tanpa dinding" (Fang dan Neufeld,
2006). Orang dapat dengan bebas masuk dan keluar dari komunitas. Pengembang
yang berpartisipasi dalam proyek sumber terbuka jarang melakukannya tanpa
pamrih. Mereka mengharapkan imbalan, seperti kemampuan untuk mempelajari
hal-hal baru, status yang lebih tinggi dalam pekerjaan normal mereka, perhatian
karena merupakan bagian dari proyek yang sukses, dan sejenisnya. Ini seharusnya
tidak mengherankan. Profesional perangkat lunak memiliki kebutuhan pertumbuhan
yang tinggi (Couger dan Zawacki, 1980). Proyek open source yang menantang
keterampilan pengembang, memiliki basis kode termodulasi dengan baik, dan
menggunakan alat canggih memiliki peluang lebih tinggi untuk menarik komunitas
yang berkelanjutan.
Salah satu hal terburuk yang mungkin terjadi pada proyek open source adalah
ketidaksepakatan antara pengembang. Kendala umum dalam proyek open source
adalah ketidaksepakatan tentang kecepatan pengembangan Godfrey dan Tu (2000).
Beberapa pengembang mungkin ingin sering mengeluarkan rilis baru, sementara
yang lain mungkin lebih berhati-hati. Sumber ketidaksepakatan potensial lainnya
adalah ketika pengguna mulai merasa tidak nyaman dengan 'demokrasi yang tidak
demokratis' dari proyek sumber terbuka. Meskipun banyak orang mungkin
mengirimkan perbaikan bug atau permintaan fitur, kekuatan dari apa yang
sebenarnya terjadi biasanya terletak pada satu atau beberapa orang di Tim Inti. Jika
pengajuan pengembang ditolak berkali-kali, dia mungkin frustrasi dan meninggalkan
komunitas atau memutuskan untuk membuat fork: pengembang mengambil salinan
kode sumber dan memulai jalur pengembangan independen.
Komunikasi antar pengembang merupakan masalah di setiap tim yang
didistribusikan. Namun dalam proyek open source, situasinya lebih buruk karena
keanggotaan komunitas mengambang dan kurangnya dokumentasi formal.
Modularisasi kode yang jelas merupakan sarana penting untuk mengurangi
kebutuhan akan komunikasi ekstensif. Komunitas opensource selanjutnya
cenderung menggunakan alat kontrol konfigurasi dan milis untuk komunikasi.
dan orang lain yang bekerja di bidang perangkat lunak. Selain itu, kelompok
besar membutuhkan lebih banyak komunikasi, yang berdampak negatif pada
produktivitas dan menyebabkan lebih banyak kesalahan.
�
106 MANAJEMEN ORGANISASI DAN
ORGANISASI TIM
manajemen proyek perangkat lunak dibahas pada bagian 5.1, bersama dengan
taksonomi terkenal dari mekanisme koordinasi dan gaya manajemen.
Ada berbagai cara untuk mengatur pengembang perangkat lunak dalam sebuah
tim. Bentuk organisasi ini dan beberapa peringatannya dibahas di bagian 5.2.
Organisasi hierarkis dan matriks tidak spesifik untuk pengembangan perangkat
lunak, sedangkan kepala pemrogram, SWAT, dan tim tangkas berasal dari bidang
perangkat lunak. Masing-masing dari yang terakhir entah bagaimana mencoba
untuk mendamaikan dua jenis manajemen yang biasanya diperlukan dalam proyek
pengembangan perangkat lunak: pendekatan pribadi individualistis di mana
seseorang mencoba untuk mendapatkan yang terbaik dari anggota tim, dan gaya
manajemen hierarkis dari atas ke bawah untuk menyelesaikan sesuatu tepat waktu
dan dalam. anggaran. Proyek open source yang sukses biasanya memiliki
organisasi berbentuk bawang.
Latihan
4. Soroti perbedaan antara kepala tim pemrogram, tim SWAT dan tim
yang gesit.
5.4. BACAAN LEBIH LANJUT 107
5. Manakah dari gaya manajemen Reddin yang paling cocok dengan tim yang tangkas?
6. Apa itu Prinsip Peter? Di mana itu muncul dalam pengembangan perangkat lunak?
7. Mengapa tim yang tangkas membutuhkan orang yang lebih baik daripada tim yang mengikuti
a
pendekatan berbasis perencanaan?
8. ~
6
Perangkat Lunak
TUJUAN PEMBELAJARAN
�
109
Dalam buku tengara mereka Mencari Keunggulan, Peters dan Waterman mengidentifikasi a
sejumlah faktor kunci yang membedakan perusahaan yang sangat sukses di dunia
yang kurang berhasil. Salah satu faktor kunci tersebut adalah komitmen terhadap kualitas
perusahaan yang sangat sukses. Rupanya, kualitas terbayar.
Profitabilitas jangka panjang bukan satu-satunya alasan mengapa perhatian terhadap kualitas itu
penting
dalam pengembangan perangkat lunak. Karena kerumitan produk perangkat lunak dan
perubahan sering sering yang harus dimasukkan selama pengembangan
perangkat lunak, perhatian terus menerus, dan penilaian, kualitas produk di bawah
pengembangan diperlukan jika kita ingin mewujudkan produk yang memuaskan. Kebutuhan ini
diperparah dengan meningkatnya penetrasi teknologi perangkat lunak ke dalam kehidupan sehari-hari.
Produk berkualitas rendah akan membuat pelanggan tidak puas, akan membuat pengguna
mengabaikannya
sistem yang seharusnya mendukung pekerjaan mereka, dan bahkan mungkin menelan biaya hidup.
Salah satu contoh menakutkan tentang apa yang mungkin terjadi jika perangkat lunak mengandung
bug, adalah
menjadi dikenal sebagai 'Kerusakan 54'. Therac-25, mesin radiasi terkomputerisasi,
disalahkan dalam insiden yang menyebabkan kematian dua orang dan luka serius
yang lain. Misteri maut itu akhirnya ditelusuri kembali ke bug perangkat lunak, bernama
'Kerusakan 54' setelah pesan ditampilkan di konsol; lihat juga bagian 1.4.2.
Komitmen terhadap kualitas dalam pengembangan perangkat lunak tidak hanya terbayar, tetapi juga
sangat besar
kebutuhan.
Komitmen ini membutuhkan proses pengembangan yang hati-hati. Perhatian ini untuk
proses pengembangan didasarkan pada premis bahwa kualitas suatu produk sebagian besar
berdasarkan kualitas proses yang mengarah ke produk itu, dan proses ini
memang dapat didefinisikan, dikelola, diukur, dan ditingkatkan.
Selain dikotomi produk--proses, dikotomi kesesuaian--perbaikan
dapat dibedakan juga. Jika kami memberlakukan persyaratan kualitas tertentu pada produk
atau proses, kami dapat menyusun teknik dan prosedur untuk memastikan atau menguji bahwa
produk atau proses memang demikian sesuai dengan tujuan-tujuan ini. Atau, skema mungkin
ditujukan membaik kualitas produk atau proses.
Gambar 6.1 memberikan contoh dari empat pendekatan kualitas yang berbeda ini. Paling
rekayasa perangkat lunak berkaitan dengan peningkatan kualitas produk
kami kembangkan, dan label 'praktik terbaik' dalam gambar ini mengacu pada semua kebaikan
disebutkan di tempat lain dalam buku ini. Tiga pendekatan lainnya dibahas dalam hal ini
bab.
Sebelum kita memulai diskusi tentang berbagai pendekatan kualitas, kami akan
pertama menguraikan pengertian kualitas perangkat lunak itu sendiri, dan bagaimana mengukurnya.
Kapan
110 MENGELOLA KUALITAS PERANGKAT
LUNAK
Itu adalah tanda dari pikiran yang diinstruksikan untuk beristirahat dengan puas dengan
tingkat presisi yang dimiliki
sifat subjek mengakui, dan tidak mencari ketepatan ketika hanya perkiraan dari
kebenaran itu mungkin.
[Aristoteles, 330 SM]
Misalkan kita ingin mengungkapkan beberapa atribut kualitas, katakanlah kompleksitas suatu program
teks, dalam nilai numerik tunggal. Nilai yang lebih besar dimaksudkan untuk menunjukkan lebih kompleks
program. Jika seperti pemetaan
C
1 MENGELOLA KUALITAS PERANGKAT LUNAK
1
2 1 prosedur gelembung
2 (dulu A: Himpunan [1..n] dari bilangan bulat; n: bilangan bulat);
3 dulu i, j, temp: bilangan bulat;
4 mulai
5 untuk saya:= 2 ke N Mengerjakan
6 j:= saya;
(A) 7 ketika J
>
6.1. PADA UKURAN DAN ANGKA 113
hasilnya juga sesuai dengan intuisi kita. Pemetaan mana yang dicari?
Apakah salah satu dari mereka 'valid' untuk memulai? Apa arti 'valid' dalam konteks ini?
Sejumlah aspek pengukuran yang relevan, seperti atribut, satuan dan skala
jenis dapat diperkenalkan dan terkait satu sama lain menggunakan kerangka pengukuran
digambarkan pada gambar 6.3. Kerangka kerja ini juga memungkinkan kami untuk menunjukkan
bagaimana metrik dapat melakukannya
digunakan untuk menggambarkan dan memprediksi sifat produk dan proses, dan bagaimana caranya
memvalidasi prediksi ini.
114 MENGELOLA KUALITAS PERANGKAT
LUNAK
pada gambar 6.3 menunjukkan bahwa hubungan ini n ke m.
�
6.1. PADA UKURAN DAN ANGKA 115
pada gambar 6.3 menunjukkan bahwa kita dapat memiliki lebih dari satu model yang sama
relasi atribut.
Pengukuran adalah pemetaan dari dunia empiris, 'nyata' ke dunia formal, relasional
dunia. A ukuran adalah nomor atau simbol yang diberikan pada atribut suatu entitas oleh
pemetaan ini. Nilai yang diberikan jelas memiliki unit tertentu, mis. baris kode. Itu
unit pada gilirannya milik skala tertentu, seperti skala rasio untuk
baris kode, atau skala ordinal untuk keparahan kegagalan.
Dalam matematika, istilah metrik memiliki arti yang sangat spesifik: itu menggambarkan seberapa
jauh
terpisah dua titik. Di bidang kami, istilah ini sering digunakan dengan cara yang agak ceroboh.
Terkadang itu menunjukkan ukuran, terkadang satuan ukuran. Kami akan menggunakan
istilah untuk menunjukkan kombinasi dari:
– atribut entitas,
- tipe skalanya.
Untuk setiap jenis timbangan, operasi tertentu diperbolehkan, sementara yang
lainnya tidak. Secara khusus, kita tidak dapat menghitung rata-rata untuk skala
ordinal, tetapi hanya mediannya (nilai tengah). Misalkan kita mengklasifikasikan
sistem sebagai 'sangat kompleks', 'kompleks', 'rata-rata', 'sederhana' atau 'sangat
sederhana'. Penempatan angka pada nilai-nilai ini agak sewenang-wenang.
Satu-satunya prasyarat adalah bahwa sistem yang diklasifikasikan sebagai,
katakanlah, 'sangat kompleks' diberi nilai yang lebih besar daripada sistem yang
diklasifikasikan sebagai, katakanlah, 'kompleks'. Jika kita sebut pemetaan ini
DI DALAM
116 MENGELOLA KUALITAS PERANGKAT
LUNAK
Kita seringkali tidak dapat mengukur nilai suatu atribut secara langsung.
Misalnya, kecepatan sebuah mobil dapat ditentukan dari nilai dua atribut lainnya:
jarak dan waktu yang dibutuhkan mobil untuk menempuh jarak tersebut. Kecepatan
kemudian diukur secara tidak langsung, dengan mengambil hasil bagi dari dua
ukuran langsung. Dalam hal ini, model atribut-relasi meresmikan hubungan antara
jarak yang ditempuh, waktu, dan kecepatan.
Kita dapat membedakan antara intern Dan luar atribut. Atribut internal dari suatu
entitas dapat diukur murni dalam kaitannya dengan entitas itu sendiri. Modularitas,
ukuran, cacat yang ditemui, dan biaya adalah contoh khas dari atribut internal.
Atribut eksternal suatu entitas adalah atribut yang hanya dapat diukur sehubungan
dengan bagaimana entitas tersebut berhubungan dengan lingkungannya.
Pemeliharaan dan kegunaan adalah contoh dari atribut eksternal. Sebagian besar
faktor kualitas yang kita bahas dalam bab ini adalah atribut eksternal. Atribut
eksternal hanya dapat diukur secara tidak langsung, karena mereka melibatkan
pengukuran atribut lainnya.
Relasi empiris antar objek di dunia nyata harus dipertahankan dalam sistem
relasi numerik yang kita gunakan. Jika kita mengamati mobil itu A
6.2. TAKSONOMI ATRIBUT KUALITAS 117
2Iniadalah definisi keandalan perangkat lunak yang agak sempit. Definisi yang lebih lengkap terdapat dalam
Daftar Istilah Rekayasa Perangkat Lunak IEEE: 'Kemampuan suatu sistem atau komponen untuk
menjalankan fungsi yang diperlukan dalam kondisi yang ditentukan untuk jangka waktu tertentu.' Ini sering
dinyatakan sebagai probabilitas.
118 MENGELOLA KUALITAS PERANGKAT
LUNAK
operasional. Kelas kedua berkaitan dengan pemeliharaan sistem. Kelas ketiga berisi
faktor-faktor yang mencerminkan kemudahan transisi ke lingkungan baru. Ketiga
kategori ini digambarkan dalam tabel 6.3.
Dalam standar ISO 9126, upaya serupa telah dilakukan untuk mendefinisikan
serangkaian karakteristik dan sub-karakteristik kualitas (lihat tabel 6.4). Definisi
mereka diberikan dalam tabel 6.5 dan 6.6. Sedangkan faktor dan kriteria kualitas
seperti yang didefinisikan oleh McCall dan lainnya sangat terkait, yaitu
Skema ISO bersifat hierarkis: setiap sub-karakteristik terkait dengan tepat satu
karakteristik.
Karakteristik kualitas ISO secara ketat mengacu pada perangkat lunak produk.
Definisi mereka tidak menangkap proses masalah kualitas. Misalnya, keamanan
sebagian dapat ditangani oleh ketentuan dalam perangkat lunak dan sebagian lagi
dengan prosedur yang tepat. Hanya yang pertama yang dicakup oleh 'keamanan'
sub-karakteristik dari skema ISO. Selanjutnya, sub-karakteristik menyangkut aspek
kualitas yang ada bisa dilihat kepada pengguna. Reusability, misalnya, tidak
termasuk dalam skema ISO.
6.2. TAKSONOMI ATRIBUT KUALITAS 119
Keandalan Kematangan
Toleransi kesalahan
Dapat dipulihkan
Kepatuhan keandalan
Kegunaan Dapat
dimengerti
Kemampuan belajar
Operabilitas
Daya tarik
Kepatuhan
kegunaan
Efisiensi Perilaku
waktu
Pemanfaatan sumber
daya Pemenuhan
efisiensi
Pemeliharaan Kemampuan
analisis
Dapat diubah
Stabilitas
Testabilitas
Kepatuhan pemeliharaan
Portabilitas Kemampuan
beradaptasi
Dapat diinstal
Hidup berdampingan
Dapat diganti
Kepatuhan portabilitas
6.2. TAKSONOMI ATRIBUT KUALITAS 121
Tabel 6.5 Karakteristik kualitas dari model kualitas eksternal dan internal
ISO 9126 (Sumber: Standar ISO 9126: Karakteristik dan Metrik Kualitas Perangkat Lunak.
Direproduksi dengan izin ISO.)
Perilaku waktu: Kemampuan produk perangkat lunak untuk menyediakan yang sesuai
waktu respons dan pemrosesan serta tingkat throughput saat menjalankannya
fungsi, di bawah kondisi yang dinyatakan.
Pemanfaatan sumber daya: Kemampuan produk perangkat lunak untuk digunakan dengan tepat
jumlah dan jenis sumber daya ketika perangkat lunak menjalankan fungsinya di bawah
kondisi yang dinyatakan.
Kepatuhan efisiensi: Kemampuan produk perangkat lunak untuk mematuhi
standar atau konvensi yang berkaitan dengan efisiensi.
Kemampuan analisis: Kemampuan produk perangkat lunak yang akan didiagnosis
kekurangan atau penyebab kegagalan dalam perangkat lunak, atau untuk bagian yang akan
dimodifikasi
untuk diidentifikasi.
Dapat diubah: Kemampuan produk perangkat lunak untuk mengaktifkan yang ditentukan
modifikasi yang akan diterapkan.
Stabilitas: Kemampuan produk perangkat lunak untuk menghindari efek yang tidak diharapkan
dari modifikasi perangkat lunak.
Testabilitas: Kemampuan produk perangkat lunak untuk mengaktifkan perangkat lunak yang
dimodifikasi
untuk divalidasi.
Kepatuhan pemeliharaan: Kemampuan produk perangkat lunak untuk mematuhi
dengan standar atau konvensi yang berkaitan dengan pemeliharaan.
Kemampuan beradaptasi: Kemampuan produk perangkat lunak diadaptasi untuk berbeda
lingkungan tertentu tanpa menerapkan tindakan atau sarana selain itu
disediakan untuk tujuan ini untuk perangkat lunak yang dipertimbangkan.
Dapat diinstal:Kemampuan produk perangkat lunak untuk diinstal dalam spesifikasi
lingkungan.
Hidup berdampingan: Kemampuan produk perangkat lunak untuk hidup berdampingan dengan yang
lain
perangkat lunak independen dalam lingkungan yang sama berbagi sumber daya yang sama.
Dapat diganti: Kemampuan produk perangkat lunak untuk digunakan di tempat
dari produk perangkat lunak lain yang ditentukan untuk tujuan yang sama di tempat yang sama
lingkungan.
Kepatuhan portabilitas: Kemampuan produk perangkat lunak untuk mematuhi
standar atau konvensi yang berkaitan dengan portabilitas.
Faktor kualitas tidak berdiri sendiri. Beberapa faktor akan mempengaruhi satu sama
lain dalam arti positif, sementara yang lain akan berdampak negatif. Contoh dari
kategori pertama adalah reliabilitas versus kebenaran. Efisiensi, di sisi lain, secara
umum akan berdampak negatif pada sebagian besar faktor kualitas lainnya. Ini
berarti bahwa kita harus membuat trade-off antara faktor kualitas. Jika persyaratan
tinggi diputuskan untuk satu faktor, kita mungkin harus melonggarkan yang lain.
Pengorbanan ini harus diselesaikan pada tahap awal. Tujuan penting dari fase
arsitektur perangkat lunak adalah untuk membawa faktor-faktor kualitas ini ke garis
depan dan membuat pengorbanannya eksplisit, sehingga para pemangku
kepentingan tahu untuk apa mereka berada (lihat bab 11). Dengan melakukan itu,
kita lebih mampu membangun kualitas yang diinginkan, daripada hanya menilainya
setelah fakta.
124 MENGELOLA KUALITAS PERANGKAT
LUNAK
Pengguna akan menilai kualitas sistem perangkat lunak dengan sejauh mana itu
membantu mereka menyelesaikan tugas dan dengan kegembiraan yang mereka
miliki dalam menggunakannya. Manajer pengguna tersebut cenderung menilai
kualitas sistem yang sama berdasarkan manfaatnya. Manfaat ini dapat dinyatakan
dalam penghematan biaya atau dalam layanan yang lebih baik dan lebih cepat
kepada klien.
Selama pengujian, dimensi kualitas yang berlaku adalah jumlah cacat yang
ditemukan dan dihilangkan, atau keandalan yang diukur, atau kesesuaian dengan
spesifikasi. Bagi pemrogram pemeliharaan, kualitas akan dikaitkan dengan
kompleksitas sistem, dokumentasi teknisnya, dan sejenisnya.
Sudut pandang yang berbeda ini semuanya valid. Mereka juga sulit untuk
didamaikan. Garvin membedakan lima definisi kualitas perangkat lunak:
�
6.3. PERSPEKTIF TERHADAP KUALITAS 125
�
126 MENGELOLA KUALITAS PERANGKAT
LUNAK
istilah terukur, seperti jumlah cacat yang ditemukan per bulan orang, atau jumlah
keputusan per modul. Atribut kualitas yang dibahas pada bagian sebelumnya
termasuk dalam kategori ini. Namun persyaratan kualitas tersebut tidak dapat
secara langsung dipetakan ke sudut pandang kualitas pengguna yang agak
subyektif, seperti 'kesesuaian untuk digunakan'. Namun demikian, pengguna dan
pengembang perangkat lunak harus mencapai kesepakatan tentang persyaratan
kualitas yang harus dipenuhi.
Salah satu cara untuk menjembatani kesenjangan ini adalah dengan
mendefinisikan bahasa yang sama antara pengguna dan pengembang perangkat
lunak di mana persyaratan kualitas dapat dinyatakan. Pendekatan ini diambil dalam
(Bass et al., 2003), di mana persyaratan kualitas dinyatakan dalam apa yang disebut
skenario atribut kualitas. Gambar 6.4 memberikan satu contoh bagaimana atribut
kualitas dapat dinyatakan dalam istilah pengguna. Skenario atribut kualitas memiliki
peran tidak hanya dalam menentukan persyaratan, tetapi juga dalam menguji
apakah persyaratan ini (akan) dipenuhi. Misalnya, skenario atribut kualitas banyak
digunakan dalam penilaian arsitektur (lihat juga bab 11).
Gambar 6.4 Skenario atribut kualitas yang dapat digunakan oleh pengguna dan
pengembang
Level 5: Mengoptima
Inovasi dan
penyebaran organisasi
Analisis kausal dan
resolusi
Pengembangan kebutuhan
Solusi teknis
Integrasi produk
Verifikasi
Validasi
Fokus proses organisasi
Definisi proses organisasi
Pelatihan organisasi
manajemen proyek terintegrasi
Manajemen risiko
Analisis keputusan dan resolusi
Manajemen persyaratan
Perencanaan proyek
Pemantauan dan pengendalian proyek
Manajemen perjanjian pemasok
Pengukuran dan analisis
Jaminan kualitas proses dan produk
Manajemen konfigurasi
Besarnya perhatian organisasi untuk mendapatkan sertifikasi CMM atau ISO 9000
memegang bahaya bahwa fokus bergeser dari pengembangan perangkat lunak ke proses
pengembangan.
Namun, organisasi bersertifikat tidak menjamin kualitas perangkat lunak
dikembangkan di bawahnya. Proses pengembangan yang matang bukanlah peluru perak. Sebuah
bingkai
sertifikat pasti tidak.
Model Kematangan Kemampuan SEI tampaknya paling cocok untuk yang sangat besar
perusahaan. Diragukan apakah perusahaan kecil mampu membayar waktu dan uang
diperlukan oleh program perbaikan proses seperti yang dianjurkan oleh CMM. Itu juga
diragukan apakah mereka mampu untuk menerapkan beberapa bidang proses, seperti
sebagai area proses 'fokus proses organisasi', yang memerlukan pengaturan dan
kelompok proses organisasi. Meskipun Proses Perangkat Lunak Pribadi dapat meringankan sebagian
atas kritik tersebut, PSP tidak memiliki status yang sama dengan CMM.
CMM berfokus pada disiplin: proses kerja terstruktur, rencana ketat, standar-
isasi. Ini lebih cocok untuk perusahaan besar daripada perusahaan kecil. Ini juga lebih cocok untuk
aktivitas
yang memberikan pendekatan yang ketat, seperti manajemen konfigurasi dan
pengujian. Analisis kebutuhan dan desain meminta sejumlah kreativitas, dan
pendekatan CMM murni mungkin memiliki efek mencekik di sini. Dikotomi yang dicatat dalam
bab 1 antara aspek permukaan rekayasa perangkat lunak seperti pabrik dan kerajinan
disini juga.
138 MENGELOLA KUALITAS PERANGKAT
LUNAK
Tingkat kematangan asli CMM merupakan skala lima poin yang agak kasar. Jika
penilaian terhadap organisasi tingkat 2 mengungkapkan bahwa ia gagal memenuhi
kriteria tingkat 3 hanya pada satu masalah kecil, putusannya agak keras: organisasi
tersebut tetap berada pada tingkat 2. Hal ini mungkin tidak meningkatkan moral
setelah dua tahun kerja keras dan investasi yang signifikan. Untuk satu Hal ini,
implikasi dari penilaian jatuh tempo menempatkan tuntutan tinggi pada
keandalannya.
Penilaian organisasi yang agak kasar pada skala lima poin mungkin memiliki
konsekuensi luas lainnya. Pemerintah AS mewajibkan sertifikasi level 3 untuk
memenuhi syarat kontrak. Apakah ini berarti bahwa organisasi level 1 dan level 2
harus bekerja di bawah standar? Jika sertifikasi level 3 adalah yang terpenting,
apakah layak untuk membidik level 4 atau 5?
Level asli CMM seperti panel instrumen pesawat terbang dengan satu pengukur,
yang lebih dari itu hanya dapat menampilkan beberapa nilai diskrit dan dengan
demikian memberikan informasi yang sangat sedikit kepada pilot. Seseorang juga
dapat membayangkan 'panel instrumen' kematangan perangkat lunak dengan
banyak pengukur, yang masing-masing menunjukkan banyak detail. BOOTSTRAP
danSPICE adalah kerangka kerja yang menghasilkan profil kematangan, bukan skor
tunggal. Hal yang sama berlaku untuk CMMI, yang hadir dalam dua varian: a model
bertahap yang, seperti CMM asli, hanya memiliki lima tingkat kematangan, dan a
model kontinu di mana peningkatan proses dilakukan berdasarkan per area
proses.
6.8 Mulai
Pada bagian sebelumnya kita membahas berbagai cara untuk meninjau kualitas
produk perangkat lunak dan proses pengembangan terkait. Organisasi
pengembangan itu sendiri harus secara aktif mengejar produksi produk berkualitas,
dengan menetapkan sasaran kualitas, menilai kinerjanya sendiri, dan mengambil
tindakan untuk meningkatkan proses pengembangan. Ini membutuhkan
pemahaman tentang kemungkinan ketidakcukupan dalam proses pengembangan
dan kemungkinan penyebabnya. Pemahaman tersebut diperoleh melalui
pengumpulan data baik proses maupun produk yang dihasilkan, serta interpretasi
yang tepat atas angka-angka tersebut. Agak mudah untuk mengumpulkan data
dalam jumlah besar dan menerapkan berbagai jenis teknik pemasangan kurva untuk
data tersebut. Agar dapat menafsirkan tren yang diamati dengan benar, mereka
harus didukung oleh hipotesis yang masuk akal. Sebuah contoh yang
memang konyol diberikan dalam gambar 6.7. Angka pada tabel ini menunjukkan
bahwa sapi hitam menghasilkan lebih banyak susu daripada sapi putih. Penafsiran
yang agak naif adalah bahwa produktivitas dapat ditingkatkan secara signifikan
dengan mengecat ulang semua sapi putih.
Meskipun contoh itu sendiri konyol, mitranya dalam rekayasa perangkat lunak
tidak terlalu dibuat-buat. Banyak penelitian, misalnya, mencoba menentukan
hubungan antara angka yang menunjukkan kompleksitas komponen perangkat
lunak dan kualitas komponen tersebut. Beberapa dari studi tersebut menemukan
korelasi positif antara angka kompleksitas tersebut dan, katakanlah, jumlah cacat
yang ditemukan selama pengujian. Interpretasi langsung dari temuan tersebut
kemudian adalah untuk memaksakan
6.8. MULAI 139
Gambar 6.7 Hubungan hipotesis antara warna sapi dan susu rata-rata
produksi
beberapa batas atas pada kompleksitas yang diizinkan untuk setiap komponen. Namun, ada
mungkin menjadi alasan bagus untuk komponen tertentu yang memiliki kompleksitas tinggi. Contohnya,
(Redmond dan Ah-Chuen, 1990) mempelajari metrik kompleksitas sejumlah besar
modul dari sistem operasi MINIX. Beberapa di antaranya, seperti modul itu
menangani urutan karakter melarikan diri dari keyboard, dianggap dapat dibenarkan
kompleks. Para ahli menilai dekomposisi lebih lanjut dari modul-modul ini tidak dibenarkan.
Menempatkan hanya batas atas pada nilai yang diizinkan dari metrik kompleksitas tertentu juga
pendekatan yang sederhana.
Organisasi harus menemukan peluangnya untuk perbaikan proses. Itu
cara yang lebih disukai untuk melakukannya adalah dengan mengikuti pendekatan bertahap dan
evolusioner di mana
langkah-langkah berikut dapat diidentifikasi:
1. Merumuskan hipotesis
3. Kumpulkan data
dan angka aktual menunjukkan bahwa perbedaan relatif meningkat menjelang akhir
proyek. Ditemukan bahwa salah satu alasan utama perbedaan antara rencana dan
kenyataan adalah 'lebih banyak waktu dihabiskan untuk pekerjaan lain daripada
yang direncanakan'. Hasilnya ditafsirkan selama pertemuan dengan pemimpin
proyek dan manajer departemen. Diskusi mengkonfirmasi dan mengukur beberapa
kesan yang ada. Bagi sebagian orang, diskusi tersebut memberikan informasi baru.
Ini menunjukkan bahwa tindakan pemeliharaan terus-menerus mengganggu
pekerjaan pengembangan. Pertemuan tersebut mencakup diskusi tentang
kemungkinan tindakan untuk perbaikan. Diputuskan untuk menjadwalkan
pemeliharaan sejauh mungkin dalam 'pekan pemeliharaan' dan memasukkannya ke
dalam rencana triwulanan. Studi analisis lain dimulai untuk mendapatkan wawasan
lebih lanjut tentang kegiatan pemeliharaan.
Studi ini memberikan sejumlah wawasan yang berguna, beberapa di antaranya
memperkuat pernyataan yang dibuat sebelumnya:
�
6.9. RINGKASAN 141
metrik. Pendekatannya bersifat inkremental, di mana studi memberi peluang
untuk perbaikan kecil, dan menunjukkan jalan untuk studi selanjutnya.
6.9 Ringkasan
Dalam bab ini, kami menaruh banyak perhatian pada gagasan kualitas. Kualitas perangkat lunak
tidak datang secara gratis. Itu harus dikejar secara aktif. Penggunaan model yang terdefinisi dengan baik
dari proses pengembangan perangkat lunak dan analisis yang baik, desain dan implementasi
teknik adalah prasyarat. Namun, kualitas juga harus dikontrol dan dikelola.
Untuk dapat melakukannya, itu harus didefinisikan secara ketat. Ini bukan tanpa masalah,
seperti yang telah kita lihat di bagian 6.2 dan 6.3. Ada banyak taksonomi kualitas
atribut. Untuk setiap atribut ini, kita memerlukan definisi yang tepat, bersama dengan a
metrik yang dapat digunakan untuk menyatakan tujuan kualitas, dan untuk memeriksa bahwa tujuan
kualitas tersebut
memang merasa puas. Sebagian besar atribut kualitas berhubungan dengan aspek yang terutama dari
kepentingan pengembang perangkat lunak. Pandangan kualitas yang berorientasi pada insinyur ini sulit
untuk berdamai dengan aspek 'kesesuaian penggunaan' yang berorientasi pada pengguna.
Untuk sebagian besar atribut kualitas, hubungan antara apa yang sebenarnya diukur
(struktur modul, cacat yang ditemui, dll.) dan atribut yang kami minati adalah
tidak cukup didukung oleh hipotesis yang kuat. Misalnya, meskipun program dengan a
sejumlah besar keputusan seringkali rumit, ada contoh tandingan yang menunjukkan hal itu
jumlah keputusan (pada dasarnya kompleksitas siklomatik McCabe) bukanlah hal yang baik
ukuran kompleksitas program. Masalah metrik perangkat lunak dan yang terkait
masalah lebih lanjut dibahas dalam bab 12.
Standar utama untuk sistem mutu telah ditetapkan oleh ISO dan IEEE. Ini
standar memberikan pedoman rinci mengenai pengelolaan kualitas. Kualitas
jaminan dengan sendirinya tidak menjamin kualitas produk. Itu harus ditambah
oleh program kualitas dalam organisasi pengembangan. Bagian 6.8 menganjurkan an
pendekatan evolusioner untuk membangun program kualitas. Pendekatan seperti itu memungkinkan kita
untuk secara bertahap membangun keahlian dalam penggunaan data kuantitatif untuk menemukan
peluang
perbaikan proses.
Kami akhirnya membuat sketsa kerangka kerja kematangan perangkat lunak yang dikembangkan
oleh Perangkat Lunak
Institut Teknik. Kerangka kerja ini menawarkan sarana untuk menilai keadaan perangkat lunak
praktik rekayasa, serta sejumlah langkah untuk meningkatkan pengembangan perangkat lunak
proses. Salah satu kontribusi utama CMM dan inisiatif serupa adalah fokus mereka
pada perbaikan terus-menerus. Garis pemikiran ini kemudian berhasil
diterapkan ke daerah lain, menghasilkan antara lain People-CMM, Formal
spesifikasi-CMM, dan Pengukuran-CMM.
Latihan
6. Yang merupakan tiga kategori faktor kualitas perangkat lunak dibedakan oleh
McCall?
8. Manakah dari definisi kualitas Garvin yang paling banyak digunakan oleh perangkat lunak
pengembang? Dan mana yang paling banyak digunakan oleh pengguna?
13. Mengapa anggota proyek harus mendapatkan umpan balik tentang penggunaan data
berkualitas mereka
serahkan ke Grup Penjaminan Mutu?
15. Apa perbedaan utama antara level 2 dan level 3 dari Capability
Model Kedewasaan?
18. �
144 MENGELOLA KUALITAS PERANGKAT
LUNAK
20.~
6.10. BACAAN LEBIH LANJUT 145
Dapatkah Anda memikirkan kemungkinan kesimpulan negatif dari kumpulan data yang
sama ini,
yaitu bahwa situasinya telah menjadi lebih buruk sejak 1988?
7
Perkiraan biaya
TUJUAN PEMBELAJARAN
�
147
Pengembangan perangkat lunak membutuhkan waktu dan uang. Saat menugaskan sebuah
bangunan
proyek, Anda mengharapkan estimasi biaya dan waktu pengembangan yang andal
depan. Mendapatkan perkiraan biaya dan jadwal yang dapat diandalkan untuk
pengembangan perangkat lunak
proyek sebagian besar masih mimpi. Biaya pengembangan perangkat lunak terkenal
sulit diperkirakan secara andal pada tahap awal. Karena kemajuan sulit untuk 'melihat'
--kapan sebuah perangkat lunak 50% selesai? --schedule selip sering terjadi
tidak terdeteksi selama beberapa waktu, dan overruns jadwal adalah aturannya, bukan
pengecualian. Dalam bab ini, kita melihat berbagai cara untuk memperkirakan perangkat
lunak
biaya dan jadwal.
jadi, kami memperkirakan biaya yang diharapkan karena terukur properti dari proyek
di tangan. Sama seperti biaya menata taman mungkin merupakan kombinasi
tertimbang dari sejumlah atribut yang relevan (ukuran taman, ukuran area rumput,
ya/tidak untuk kolam), jadi kami ingin memperkirakan biaya pengembangan
perangkat lunak proyek. Pada bagian ini, kita membahas upaya untuk mendapatkan
model algoritmik untuk memperkirakan biaya perangkat lunak. Pada pendahuluan
bab ini, kita melihat bahwa upaya pemrograman berkorelasi kuat dengan ukuran
program. Ada berbagai model (non-linear) yang mengekspresikan korelasi ini.
Bentuk umumnya adalah
DAN
15 PERKIRAAN BIAYA
2
menurunkan biaya per unit. Dengan demikian, kami menyadari peningkatan laba atas investasi.
Dalam kasus sebaliknya, kita menemukan skala disekonomis: setelah titik tertentu, produksi
unit tambahan menimbulkan biaya tambahan.
Dalam hal perangkat lunak, baris kode adalah produknya. Jika kita berasumsi bahwa
memproduksi banyak kode akan lebih murah per baris kode, formula seperti itu
Walston-Felix (
7.1. MODEL ALGORITMI 153
7.1.1 Walston--Felix
Persamaan dasar model Walston dan Felix (Walston dan Felix, 1977) adalah
0:91
1 PERKIRAAN BIAYA
5
4
Nilai variabel J
7.1. MODEL ALGORITMI 155
Jumlah faktor yang dipertimbangkan dalam model ini cukup tinggi (29 faktor dari
51 proyek). Juga tidak jelas sejauh mana berbagai faktor mempengaruhi masing-masing
lainnya. Terakhir, jumlah alternatif per faktor hanya tiga, dan sepertinya tidak
untuk menawarkan pilihan yang cukup dalam situasi praktis.
Namun demikian, pendekatan yang diambil oleh Walston dan Felix serta daftar biayanya
driver telah memainkan peran yang sangat penting dalam mengarahkan penelitian selanjutnya di bidang
ini.
7.1.2 KELAPA
COCOMO (COst COst MODel) adalah salah satu model estimasi biaya algoritmik
yang paling baik didokumentasikan. Dalam bentuknya yang paling sederhana,
disebut Basic COCOMO, rumus yang menghubungkan upaya dengan ukuran
perangkat lunak, berbunyi
DAN
156
ME organik
MBL 1:05
OKI
R
7.1. MODEL ALGORITMI 157
Gambar 7.5 Kurva Rayleigh untuk jadwal perangkat lunak (Sumber: M.L. Shooman, Tutorial
pada model biaya perangkat lunak, Katalog IEEE nr TH0067-9 (1979), 1979 IEEE.)
karena informasi yang diperlukan untuk menentukan peringkat dari berbagai pemicu biaya adalah
pada umumnya tidak tersedia. Jadi kita hanya memiliki kemungkinan untuk menguji dasar
model. Di sini, kami memperoleh perbedaan yang cukup besar antara upaya yang diperkirakan dan
upaya nyata yang diperlukan.
Keuntungan utama COCOMO adalah kami mengetahui semua detailnya. Pembaruan besar
dari model COCOMO, lebih mencerminkan praktik perangkat lunak saat ini dan masa depan
dibahas di bagian 7.1.5.
7.1.3 Putnam
Norden mempelajari distribusi tenaga kerja dari waktu ke waktu di sejumlah proyek
pengembangan perangkat lunak pada 1960-an. Dia menemukan bahwa distribusi ini
seringkali memiliki bentuk yang sangat khas yang dapat didekati dengan baik oleh
distribusi Rayleigh. Berdasarkan temuan ini, Putnam mengembangkan model
estimasi biaya dimana tenaga kerja yang dibutuhkan (
TN
158 PERKIRAAN BIAYA
untuk produk dari kapasitas pemecahan masalah yang tersedia dan sebagian kecil
dari masalah yang belum terpecahkan. Jika jumlah total pekerjaan yang harus
dilakukan diatur ke 1, ini menghasilkan:
D DI DALAM
7.1. MODEL ALGORITMI 159
indikator ukuran. FPA sangat cocok untuk proyek yang ditujukan untuk mewujudkan bisnis
aplikasi untuk, dalam aplikasi ini, struktur data memainkan peran yang sangat dominan
peran. Metode ini kurang cocok untuk proyek yang struktur datanya berperan a
peran yang kurang menonjol, dan penekanannya adalah pada algoritma (seperti kompiler dan
kebanyakan
perangkat lunak waktu nyata).
Lima entitas berikut memainkan peran sentral dalam model FPA:
�
160 PERKIRAAN BIAYA
Tingkat kerumitan
Jenis
Sederhana Rata-ra Komple
ta ks
Memasukkan ( SAYA
7.1. MODEL ALGORITMI 161
komunikasi data
Fungsi terdistribusi
Pertunjukan
Konfigurasi yang banyak digunakan
Tingkat transaksi
entri data online
Efisiensi pengguna akhir
Pembaruan daring
Pemrosesan yang kompleks
Dapat digunakan kembali
Kemudahan instalasi
Kemudahan operasional
Beberapa situs
Memfasilitasi perubahan
2. Tentukan tingkat kerumitan setiap layar dan laporan (sederhana, sedang, atau
sulit). Komponen 3GL dianggap selalu sulit. Kompleksitas layar bergantung pada
jumlah tampilan dan tabel yang ada di dalamnya. Kompleksitas laporan
bergantung pada jumlah bagian dan tabel yang ada di dalamnya. Sebuah tabel
klasifikasi mirip dengan FPA (lihat gambar 7.9 untuk contoh) digunakan untuk
menentukan tingkat kompleksitas.
7.1. MODEL ALGORITMI 163
3. Gunakan angka yang diberikan pada gambar 7.10 untuk menentukan usaha relatif (pada Object
Points) untuk mengimplementasikan objek.
5. Perkirakan persentase penggunaan ulang, yang menghasilkan jumlah Poin Objek Baru
(NOP) sebagai berikut:
NOP
164 PERKIRAAN BIAYA
Model Desain Awal menggunakan titik fungsi yang tidak disesuaikan (UFP) sebagai
ukuran dasarnya. Poin fungsi yang tidak disesuaikan ini dihitung dengan cara yang
sama seperti dihitung di FPA. Selanjutnya, titik fungsi yang tidak disesuaikan diubah
menjadi Source Lines Of Code (SLOC), menggunakan rasio SLOC/UFP yang
bergantung pada bahasa pemrograman yang digunakan. Dalam lingkungan tipikal,
setiap UFP dapat berhubungan dengan, katakanlah, 91 baris Pascal, 128 baris C,
29 baris C++, atau 320 baris bahasa rakitan. Jelas, angka-angka ini spesifik untuk
lingkungan.
Model Early Design tidak menggunakan skema FPA untuk memperhitungkan
karakteristik aplikasi. Sebagai gantinya, ia menggunakan tujuh penggerak biaya,
yang merupakan kombinasi dari penggerak biaya lengkap model Post-Arsitektur.
Penggerak biaya menengah dan tereduksi adalah:
�
7.1. MODEL ALGORITMI 165
Ini berbeda dari model COCOMO asli dalam set driver biayanya, penggunaan jalur
kode sebagai ukuran dasarnya, dan rentang nilai eksponen B
166 PERKIRAAN BIAYA
�
7.1. 167
MODEL
ALGORI
TMI Peringkat
P Sangat Rendah Nominal Tinggi Sangat Tambaha
e n
m
i
c
u
b
i
a
y
a
rendah tinggi tinggi
F
a 0,75 0,88 1.00 1.15 1.39
k
t
o
r
p
r
o
d
u
k
D
i
p
e
r
l
u
k
a
n
k
e
a
n
d
a
l
a
n
U 0,93 1.00 1.09 1.19
k 0,75 1.66
u
r
a
n
b
a
s
i
s
d
a
t
a
K 0,88 1.00 1.15 1.30
o
m
p
l
e
k
s
i
t
a
s
p
r
o
d
u
k
D 0,91 1.00 1.14 1.29 1.49
i 0,89
p
e
r
l
u
k
a
n
p
e
n
g
g
u
n
a
a
n
k
e
m
b
a
l
i
Kebutuhan 0,95 1.00 1.06 1.13
dokumentasi
F
a 1.00 1.11 1.31 1.67
k
t
o 0,87
r
p
l 1,50
a
t
f
o
r
m
K
e
n
d
a
l
a
w
a
k
t
u
e
k
s
e
k
u
s
i
K 1.00 1.06 1.21 1.57
e
n
d
a
l
a
p
e
n
y
i
m
p
a
n
a
n
u
t
a
m
a
V 1.00 1.15 1.30
o
l
a
t
i
l
i
t
a
s
p
l
a
t
f
o
r
m
F
a 1.22 1.00 0,83 0,67
k
t
o
r
p
e
r
s
o
n
e
l
K
e
m
a
m
p
u
a
n
a
n
a
l
i
s
Kemampuan 1.37 1.16 1.00 0,87 0,74
pemrogram
Pengalaman 1.22 1.10 1.00 0,89 0,81
aplikasi
P 1.24 1.10 1.00 0,92 0,84
e
n
g
a
l
a 0,78
m
a
n
p
l
a
t
f
o
r
m
Peng 1.25 1.12 1.00 0,88 0,81
alama
n
bahas
a dan
alat
K 1.24 1.10 1.00 0,92 0,84
o
n
t
i
n
u
i
t
a
s
p
e
r
s
o
n
i
l
F
a 1.24 1.12 1.00 0,86 0,72
k
t
o
r
p
r
o
y
e
k
P
e
n
g
g
u
n
a
a
n
p
e
r
a
n
g
k
a
t
l
u
n
a
k
P 1.25 1.10 1.00 0,92 0,84
e
n
g
e
m
b
a
n
g
a
n
m
u
l
t
i
-
s
i
t
u
s
Jadwal 1.29 1.10 1.00 1.00 1.00
pengemb
angan
yang
dibutuhka
n
berkisar dari 0% (tidak diperlukan usaha ekstra) hingga 8% (ujian ekstensif, evaluasi dan
dokumentasi yang diperlukan).
Kedua persentase ini ditambahkan ke faktor penyesuaian AAF
168 PERKIRAAN BIAYA
7.2 Pedoman
Memperkirakan
Biaya
Model-model yang dibahas di bagian sebelumnya didasarkan pada data tentang
proyek-proyek sebelumnya. Salah satu masalah utama dalam menerapkan model-model
ini adalah semata-mata kekurangan data kuantitatif tentang proyek masa lalu. Tidak ada
cukup data yang tersedia. Meskipun pentingnya basis data seperti itu sekarang telah
diakui secara luas, kami masih belum secara rutin mengumpulkan data pada
proyek-proyek saat ini. Sepertinya kita tidak bisa menyisihkan waktu untuk
mengumpulkan data; kita harus menulis perangkat lunak. DeMarco (1982) membuat
perbandingan dengan tukang cukur abad pertengahan yang juga bertindak sebagai
dokter. Dia bisa membuat keberatan yang sama: 'Kami tidak punya waktu untuk
mengukur suhu pasien kami, karena kami harus memotong rambutnya.' Karena itu kami
harus beralih ke metode lain untuk memperkirakan biaya. Metode lain ini
didasarkan pada keahlian estimator. Dalam melakukannya, perangkap tertentu harus
dielakkan. Sangat penting untuk mencegah argumen politik memasuki arena. Garis
penalaran khas yang mencerminkan penalaran politik adalah:
�
7.2. PEDOMAN UNTUK ESTIMASI BIAYA 169
– Penyedia perangkat lunak berbeda dalam optimisme dalam perkiraan biaya yang paling
mungkin:
ada yang terlalu optimis, ada yang realistis, dan ada yang pesimis.
– Penyedia perangkat lunak dengan perkiraan terlalu optimis cenderung memiliki tawaran
terendah.
123 72361
4
Di sisi lain, keadaan khusus dan karakteristik tertentu dari proyek tertentu
cenderung kurang mendapat perhatian jika biaya diestimasi melalui perbandingan
dengan proyek sebelumnya. Misalnya, perubahan skala yang sederhana
(otomatisasi perpustakaan lokal dengan 25.000 volume sebagai kebalikan dari
perpustakaan universitas dengan lebih dari 1.000.000 volume), persyaratan kinerja
yang sedikit lebih keras, jadwal yang dipadatkan (yang memerlukan tim yang lebih
besar dan dengan demikian meningkatkan biaya overhead karena komunikasi )
mungkin berdampak signifikan pada upaya yang diperlukan dalam hal man-months.
Penerapan metode perbandingan perkiraan biaya yang ceroboh menyebabkan
perkiraan seperti: biaya proyek ini sama dengan biaya proyek sebelumnya.
Kami juga dapat melibatkan lebih dari satu pakar dalam proses estimasi. Dalam
melakukannya, setiap ahli memberikan perkiraan berdasarkan pengalaman dan
keahliannya sendiri. Faktor-faktor yang sulit diukur, seperti karakteristik kepribadian
dan karakteristik proyek yang khas, dapat diperhitungkan. Di sini juga, kualitas
estimasi tidak bisa melebihi kualitas para ahli. Para ahli yang berpartisipasi dalam
estimasi harus memiliki pengalaman dalam proyek serupa. Itu tidak banyak
membantu untuk meminta saran dari seorang ahli dalam jenis sistem otomatisasi
kantor untuk memberikan perkiraan untuk sistem kontrol lalu lintas udara.
Estimasi menimbulkan ketidakpastian. Perkiraan biaya, katakanlah, 100 bulan
kerja mungkin berarti ada kemungkinan 75% bahwa biaya sebenarnya dari proyek
ini adalah antara 80 dan 120 bulan kerja. Dia bukan estimasi titik. Salah satu
metode yang bertujuan untuk mendapatkan estimasi yang lebih andal adalah
dengan meminta pakar menghasilkan lebih dari satu estimasi. Kita semua memiliki
kecenderungan untuk menganggap perkiraan optimis sebagai realistis. (Pernahkah
Anda mendengar tentang sistem perangkat lunak yang disampaikan sebelumnya?)
Untuk menghindari kecenderungan ini, kita dapat menggunakan teknik di mana
pakar diminta untuk tiga perkiraan:
7.3. DISTRIBUSI TENAGA KERJA SEPANJANG 171
WAKTU
estimasi optimis
A
172
Walston- T
-Felix
7.4. 173
RING
KASA
N
anggota P
lain,
jumlah
link
komunika
si
174 PERKIRAAN
BIAYA
Individu T
Ukuran tim o
t
a
l
produktifitas produ
ktifita
s
1 5 5
0 0
0 0
2 4 9
5 0
0 0
3 4 1
0 2
0 0
0
4 3 1
5 4
0 0
0
5 3 1
0 5
0 0
0
5.5 2 1
7 5
5 1
2
6 2 1
5 5
0 0
0
7 2 1
0 4
0 0
0
8 1 1
5 2
0 0
0
Gambar 7.15 Wilayah yang mustahil (Sumber: B.W. Boehm, Ekonomi Rekayasa
Perangkat Lunak, ara. 27-8/halaman 471, 1981, Dicetak ulang atas izin
Prentice-Hall, Inc., Englewood Cliffs,NJ)
Model algoritmik biasanya dihasilkan dari penerapan teknik statistik seperti regresi
analisis terhadap sekumpulan data proyek tertentu. Untuk proyek baru, parameter dari
model harus ditentukan, dan model menghasilkan perkiraan dan, dalam beberapa kasus, a
selang kepercayaan.
Masalah yang sifatnya agak berbeda adalah sebagai berikut: Dalam pengantar ini
bab kita membandingkan estimasi biaya perangkat lunak dengan estimasi biaya untuk lay out a
kebun. Saat menata taman, kita sering mengikuti garis pemikiran yang agak berbeda,
yaitu: diberi anggaran, katakanlah, $10.000, kemungkinan apa yang ada? Apa yang terjadi
176 PERKIRAAN BIAYA
jika kita menukar kolam dengan sesuatu yang lain?
Hal serupa juga dimungkinkan dengan perangkat lunak. Dengan anggaran
sebesar $100.000 untuk otomatisasi perpustakaan, kemungkinan apa yang ada?
Antarmuka pengguna mana yang dapat kita harapkan, berapa kecepatan
transaksinya, seberapa andal sistemnya? Untuk dapat menjawab jenis pertanyaan
ini, kita harus dapat menganalisis sensitivitas estimasi terhadap berbagai nilai atribut
yang relevan. Mengingat ketidakpastian tentang atribut mana yang relevan untuk
memulai, masalah trade-off ini sebagian besar masih belum terpecahkan.
Akhirnya, memperkirakan biaya proyek pengembangan perangkat lunak adalah
aktivitas yang sangat dinamis. Kami tidak hanya dapat beralih dari satu model ke
model lainnya selama proyek berlangsung, perkiraan juga akan disesuaikan
berdasarkan pengalaman yang diperoleh. Beralih ke model lain selama pelaksanaan
proyek dimungkinkan, karena kami mungkin berharap untuk mendapatkan data yang
lebih andal saat proyek sedang berjalan. Kita dapat, misalnya, membayangkan
menggunakan rangkaian model COCOMO 2 yang semakin detail.
Kami tidak dapat, dan tidak boleh, mengandalkan perkiraan biaya statistik sekali
pakai. Mengontrol proyek pengembangan perangkat lunak menyiratkan
pemeriksaan kemajuan secara teratur, pemeriksaan perkiraan yang dibuat secara
teratur, menetapkan kembali prioritas dan menimbang taruhan, saat proyek sedang
berlangsung.
Latihan
8. Dalam pengertian apa Function Point Analysis (FPA) mencerminkan orientasi batch
dunia tahun 1970-an?
11. Misalkan Anda terlibat dalam sebuah proyek yang diperkirakan memakan
waktu 100 bulan kerja. Bagaimana Anda memperkirakan waktu kalender
nominal yang diperlukan untuk ini
proyek? Misalkan proyek akan selesai dalam waktu enam bulan kalender. Melakukan
menurut Anda kompresi jadwal seperti itu layak dilakukan?
12. Mengapa model biaya perangkat lunak harus dikalibrasi ulang dari waktu ke waktu?
13. �
8
Proyek
TUJUAN PEMBELAJARAN
�
8.1. TINJAUAN SISTEM KONTROL PROYEK 179
Dalam bab ini saya mencoba merekonsiliasi berbagai pendekatan yang diuraikan dalam
bab-bab
3--7. Taksonomi proyek pengembangan perangkat lunak diberikan, bersama dengan
praktik manajemen yang direkomendasikan untuk menangani proyek semacam itu. Itu
bab juga membahas manajemen risiko dan beberapa teknik terkenal untuk
perencanaan dan pengendalian proyek.
Proyek pengembangan perangkat lunak sangat berbeda. Perbedaan-perbedaan ini tercermin dalam
cara di mana proyek-proyek ini diatur dan dikelola. Untuk beberapa proyek,
anggaran tetap dan tujuan proyek adalah untuk memaksimalkan kualitas
produk akhir. Bagi yang lain, kendala kualitas ditetapkan sebelumnya, dan
tujuannya adalah untuk menghasilkan sistem yang efektif yang memenuhi batasan kualitas tersebut. Jika
mengembangkan organisasi memiliki pengalaman yang cukup dengan domain aplikasi
dan persyaratannya tetap dan stabil, pendekatan yang terstruktur dengan ketat dapat menghasilkan
solusi yang memuaskan. Dalam aplikasi dengan persyaratan kabur dan sedikit sebelumnya
pengalaman dalam tim pengembangan, pendekatan yang lebih gesit mungkin diinginkan.
Penting untuk mengidentifikasi karakteristik proyek tersebut sejak dini, karena mereka
akan mempengaruhi cara proyek diatur, direncanakan dan dikendalikan. Di bagian 8.1,
kita akan membahas kontrol proyek dari sudut pandang sistem. Ini memungkinkan kita untuk
mengidentifikasi dimensi utama di mana proyek pengembangan perangkat lunak berbeda.
Dimensi ini mengarah pada taksonomi proyek pengembangan perangkat lunak, yang akan
dibahas di bagian 8.2. Untuk setiap kategori proyek yang dibedakan, kami akan
menunjukkan cara terbaik untuk mengontrol berbagai entitas yang diidentifikasi dalam bab sebelumnya.
Ini
jenis penilaian harus dilakukan pada tahap perencanaan proyek.
Penilaian ini menghubungkan kategori risiko global dengan situasi kontrol pilihan. Sehari-hari
prakteknya, bagaimanapun, adalah lebih kompleks. Proyek aktual menghadapi banyak risiko,
masing-masing
yang harus ditangani secara bergantian. Bahkan risiko yang kami harapkan telah ditemukan
solusi yang memadai, dapat berubah menjadi masalah di kemudian hari. Oleh karena itu, faktor risiko
harus
dipantau, dan rencana darurat harus dikembangkan. Identifikasi awal
risiko dan pengembangan dan pelaksanaan strategi untuk mengurangi risiko ini
dikenal sebagai manajemen risiko. Manajemen risiko dibahas di bagian 8.3.
Proyek pengembangan perangkat lunak terdiri dari sejumlah tugas yang saling terkait. Beberapa
ini harus ditangani secara berurutan (modul tidak dapat diuji sampai selesai
telah diimplementasikan), sementara yang lain dapat ditangani secara paralel (modul yang berbeda bisa
dilaksanakan secara bersamaan). Ketergantungan antar tugas dapat digambarkan dalam
jaringan dari mana jadwal proyek dapat diturunkan. Ini dan alat serupa untuk
perencanaan tingkat mikro dan kontrol proyek pengembangan perangkat lunak dibahas
di bagian 8.4.
�
184 PERENCANAAN DAN PENGENDALIAN
PROYEK
Mengenai estimasi biaya, kita mungkin berhasil menggunakan salah satu
model biaya yang lebih formal. Alternatifnya, para ahli di bidang tersebut
dapat memberikan perkiraan yang andal. Perkiraan biaya yang diperoleh
dapat digunakan untuk menjaga kemajuan proyek dan menghasilkan target
yang ingin dicapai.
�
8.2. TAKSONOMI PROYEK PENGEMBANGAN 185
PERANGKAT LUNAK
untuk beralih dari model pengembangan linier ke model bertahap. Preferensi ini
akan meningkat seiring dengan meningkatnya ketidakpastian.
Estimasi biaya harus bergantung pada pengalaman masa lalu. Kami biasanya
tidak memiliki cukup data untuk menggunakan salah satu model estimasi
biaya yang lebih formal. Dalam situasi ini juga, kita memerlukan analisis
sensitivitas. Kebutuhan ini akan lebih mendesak daripada situasi sebelumnya,
karena ketidakpastiannya lebih besar. Manajer proyek akan tertarik pada
kepekaan estimasi biaya terhadap penggerak biaya tertentu. Dia mungkin
tertarik pada pertanyaan seperti: apa yang akan terjadi pada jadwal
pengembangan jika dua analis tambahan ditugaskan untuk proyek ini, atau:
apa pengaruhnya terhadap biaya total jika kita mempersingkat waktu
pengembangan dengan
X
186 PERENCANAAN DAN PENGENDALIAN
PROYEK
panduan tentang besarnya proyek. Berdasarkan perkiraan ini, upaya dan
waktu dapat dialokasikan untuk proyek tersebut, misalnya untuk
menghasilkan sejumlah prototipe, studi kelayakan, implementasi percontohan
sebagian produk, atau untuk memulai sejumlah kotak waktu tertentu.
Harapannya adalah pada waktunya ketidakpastian akan cukup berkurang
sehingga proyek bergeser ke salah satu situasi lainnya.
Keempat situasi pengendalian yang dibahas di atas sekali lagi digambarkan dalam
Gambar 8.2, bersama dengan karakterisasi singkat dari berbagai aspek
pengendalian yang dibahas di atas. Untuk proyek besar, mungkin efektif untuk
menggunakan mekanisme kontrol yang berbeda pada tingkat makro dan mikro,
masing-masing (Karlstr¨om dan Runeson, 2005). Di tingkat makro, manajemen
mungkin harus mengoordinasikan pekerjaan tim yang berbeda, dan melapor ke
manajemen yang lebih tinggi. Ini mungkin memerlukan pendekatan di mana tahapan
eksplisit dan tonggak yang sesuai dibedakan. Namun, pada tingkat subtim kecil,
seseorang mungkin masih menerapkan metode gesit untuk mengontrol pekerjaan
sehari-hari.
Dengan mempertimbangkan berbagai aspek kontrol selama tahap perencanaan
proyek pengembangan perangkat lunak, kita dapat menyesuaikan manajemen
proyek dengan situasi yang dihadapi. Dengan demikian, kami menyadari bahwa
proyek pengembangan perangkat lunak tidak semuanya sama. Mengabaikan
karakteristik khusus proyek tersebut kemungkinan besar akan mengakibatkan
kegagalan proyek, kegagalan yang sering dilaporkan dalam literatur, tetapi sama
seringnya tetap tersembunyi dari publik secara luas.
Gambar 8.2 Empat situasi kontrol (Sesudah: F.J. Heemstra, Berapa biaya perangkat lunak,
Administrasi Bisnis Kluwer, 1989.)
Mempertaruhkan Keterangan
�
190 PERENCANAAN DAN PENGENDALIAN
PROYEK
�
8.4. TEKNIK UNTUK PERENCANAAN DAN PENGENDALIAN 191
PROYEK
Proyek
Kode B
Gambar 8.5 Struktur perincian kerja sederhana untuk proyek pengembangan perangkat lunak
Aktivitas biasanya menghabiskan sumber daya, seperti orang atau waktu komputer,
dan selalu memiliki durasi tertentu. Kegiatan harus sering dijalankan dalam urutan
tertentu. Misalnya, kita tidak dapat menguji modul sebelum dikodekan. Jenis
hubungan antara tugas dapat dinyatakan sebagai kendala. Biasanya, kendala
menyangkut hubungan temporal antara kegiatan. Kendala semacam itu juga disebut
hubungan prioritas. Perencanaan proyek melibatkan penjadwalan semua kegiatan
sehingga kendala terpenuhi dan batas sumber daya tidak terlampaui. Beberapa
teknik tersedia untuk mendukung tugas penjadwalan ini.
192 PERENCANAAN DAN PENGENDALIAN
PROYEK
Kegiatan dari WBS sederhana dari proyek pengembangan perangkat lunak,
bersama-sama dengan durasi dan kendala temporal, diberikan pada Gambar 8.6.
Perhatikan bahwa gambar 8.6 berisi lebih banyak informasi tentang hubungan
temporal daripada yang diberikan dalam WBS. Meskipun pembacaan WBS dari kiri
ke kanan menyarankan urutan waktu tertentu, itu tidak memberikan hubungan
prioritas yang tepat antara aktivitas.
Aktivitas Durasi K
e
n
d
a
l
a
Desain 10 -
-
Rencana pengujian 5 De
sai
n
sel
esa
i
Kode A 10 De
sai
n
sel
esa
i
Kode B 5 De
sai
n
sel
esa
i
Tes 10 Kode selesai,
Rencana pengujian
selesai
Himpunan aktivitas dan batasannya juga dapat digambarkan dalam sebuah jaringan.
Sebagai contoh, jaringan ini diberikan pada Gambar 8.7. Node dalam jaringan
menunjukkan aktivitas. Jenis jaringan ini oleh karena itu dikenal sebagai jaringan
'aktivitas-on-node'. Setiap node juga membawa bobot, durasi aktivitas yang sesuai.
Panah dari simpul A ke simpul B menunjukkan bahwa aktivitas A harus diselesaikan
sebelum aktivitas B dapat dimulai.
Diagram jaringan ini sering disebut grafik PERT. PERT adalah singkatan dari
Program Evaluation and Review Technique. Bagan PERT dikembangkan dan pertama
kali berhasil digunakan dalam pengelolaan program misil Polaris pada tahun 1950-an.
Sementara teknik PERT asli hanya berkaitan dengan rentang waktu aktivitas dan
keterkaitannya, perkembangan selanjutnya telah menghasilkan berbagai teknik yang
mengakomodasi semakin banyak faktor proyek.
Dari grafik PERT kita dapat menghitung titik waktu paling awal di mana proyek dapat
diselesaikan. Mari kita asumsikan bahwa jaringan memiliki simpul awal B dan simpul
akhir E yang unik. Jika ada lebih dari satu simpul dengan derajat 0 (yaitu tidak memiliki
pendahulu dalam jaringan), simpul awal baru B dibuat dengan tepi keluar ke semua
simpul yang memiliki in-degree 0. Node baru B ini mendapat bobot nol (durasi).
Prosedur serupa diikuti untuk membuat simpul akhir E jika ada lebih dari satu simpul
yang memiliki derajat di luar 0.
Kami selanjutnya memberi label pada setiap node
Saya
8.4. TEKNIK UNTUK PERENCANAAN DAN PENGENDALIAN 193
PROYEK
Rencana uji 5
Desain 10 Kode A 10
Kode B5
2. Untuk semua simpul tak berlabel yang semua pendahulunya adalah simpul berlabel, paling
awal
waktu mulai yang mungkin adalah waktu selesai paling akhir dari semua node sebelumnya:
S
8.4. TEKNIK UNTUK PERENCANAAN DAN 195
PENGENDALIAN PROYEK
Rencana pengujian
5
kegiatan A telah dimulai. Kami juga dapat memperluas teknik sehingga menangani sumber daya
kendala. Misalnya, jika kita hanya memiliki satu programmer yang tersedia, bagan Gantt
Gambar 8.6 tidak akan berfungsi, karena diasumsikan bahwa pengkodean modul A dan B telah selesai
secara paralel. Teknik PERT bahkan dapat diperluas lebih jauh untuk memungkinkan kepekaan
analisis. Dengan mengizinkan apa yang disebut pertanyaan 'bagaimana-jika' ('bagaimana jika kita
mengalokasikan tiga desainer
daripada empat ',' bagaimana jika modul pengkodean A memakan waktu dua bulan daripada satu ') kami
merasakan kepekaan jadwal terhadap variasi tertentu dalam tingkat sumber daya,
jadwal overruns, dan sejenisnya.
Metode Jalur Kritis -- CPM -- adalah, seperti namanya, teknik yang sangat mirip
untuk PERT dan dikembangkan di sekitar waktu yang sama.
Dalam diskusi kami, kami menyajikan bagan Gantt sebagai visualisasi grafis dari a
jadwal yang dihasilkan dari analisis jaringan. Sebenarnya, kita dapat menggunakan Gantt chart sebagai
a
mekanisme penjadwalan dengan sendirinya. Kami mungkin hanya mendaftar semua kegiatan dan
menunjukkan
waktu mulai paling awal dan waktu berakhir paling akhir di kalender. Bagan Gantt oleh
sendiri, bagaimanapun, tidak membawa informasi tentang ketergantungan antar aktivitas.
Hal ini membuat sulit untuk menyesuaikan jadwal, misalnya saat ada aktivitas tertentu yang meleset.
Sejauh
seiring berjalannya perencanaan, oleh karena itu kami lebih memilih penggunaan bagan Gantt sebagai
sarana untuk memvisualisasikan
hasil analisis jaringan.
Menggunakan informasi yang terdapat dalam bagan Gantt dan pengetahuan personel
sumber daya yang diperlukan untuk setiap aktivitas, kami dapat menetapkan rencana personel yang
menunjukkan caranya
banyak orang yang dibutuhkan dalam setiap satuan waktu. Karena biaya orang adalah bagian utama
pengeluaran proyek, rencana personalia ini menyediakan sarana langsung untuk merencanakan proyek
pengeluaran.
Ketika proyek sedang berjalan, kontrolnya didasarkan pada pemantauan proyek
kemajuan dan pengeluaran. Waktu yang dihabiskan per kegiatan per anggota proyek bisa
dicatat pada kartu waktu. Kartu waktu ini adalah dasar untuk menentukan kumulatif
usaha dan pengeluaran. Data kumulatif ini dapat dibandingkan dengan yang direncanakan
tingkat usaha dan pengeluaran. Untuk benar menilai apakah proyek tersebut masih
di jalur, manajemen membutuhkan informasi kemajuan juga. Cara paling umum untuk
asalkan ini melalui laporan tonggak: kegiatan tidak dapat dianggap selesai sampai
196 PERENCANAAN DAN PENGENDALIAN
PROYEK
laporan yang tepat telah diproduksi dan diterima.
Bagan Gantt menyediakan sarana yang sangat langsung untuk membandingkan
status proyek aktual dengan jadwal proyek. Slippage jadwal segera muncul dengan
sendirinya. Slippage aktivitas pada jalur kritis memerlukan tindakan manajemen
yang cepat: negosiasi ulang jadwal, penyampaian proyek, atau keduanya.
Perhatikan bahwa selip jadwal adalah urusan yang licik; proyek tertinggal satu hari
pada suatu waktu. Perhatikan juga bahwa jadwal proyek harus mencerminkan
proyek yang sebenarnya. Perubahan yang diterima memerlukan pertimbangan
ulang jadwal.
8.5 Ringkasan
Dalam bab ini kita melihat kontrol proyek dari sudut pandang sistem dan
memperoleh wawasan tentang bagaimana berbagai jenis proyek dapat dikelola dan
dikendalikan. Kami mengidentifikasi empat situasi pola dasar, yang menuntut model
proses, mekanisme koordinasi, dan gaya manajemen yang berbeda.
Proyek nyata menghadapi banyak risiko, dan manajer proyek yang bijaklah yang
memperhatikannya sejak dini. Risiko adalah kemungkinan peristiwa negatif di masa
depan yang dapat memengaruhi kesuksesan. Ini belum menjadi masalah, tetapi
mungkin menjadi masalah. Manajemen risiko berkaitan denganmencegah risiko
menjadi masalah. Ini melibatkan langkah-langkah berikut:
4. Tangani risiko: pantau faktor risiko dan ambil tindakan bila diperlukan.
Di bagian 8.4, kami berfokus pada perencanaan dan pengendalian aktivitas dalam
proyek. Dengan menggambarkan serangkaian aktivitas dan hubungan temporalnya
dalam grafik, teknik seperti PERT menawarkan cara yang sederhana namun kuat
untuk menjadwalkan dan mengontrol aktivitas ini (lihat, misalnya, (Boehm, 1981)).
Latihan
2. Apakah pendekatan air terjun cocok untuk masalah tipe realisasi? Jika demikian, mengapa?
3. Apakah pendekatan air terjun cocok untuk masalah tipe eksplorasi? Jika demikian, mengapa?
6. Ulangi pemicu biaya dari model estimasi biaya COCOMO sebagai risiko
faktor.
10. �
198 PERENCANAAN DAN PENGENDALIAN
PROYEK
dia pekerjaan ini karena dia melakukan dengan sangat baik. Diskusikan kemungkinan
tindakan
untuk mencegah karyawan tersebut meninggalkan organisasi.
15. ~
Bagian II
Lunak
ISI
Rekayasa Persyaratan
TUJUAN PEMBELAJARAN
�
202 TEKNIK PERSYARATAN
Gagasan 'spesifikasi' dengan demikian memiliki beberapa arti. Untuk mencegah kebingungan, kami
akan selalu menggunakan awalan 'persyaratan' jika itu menunjukkan hasil dari persyaratan
fase rekayasa.
Lebih buruk lagi, fase di mana persyaratan pengguna dianalisis
dan didokumentasikan juga terkadang disebut spesifikasi. Kami merasa ini agak
dari nama yang salah dan tidak akan menggunakan istilah seperti itu.
Kami menggunakan istilah rekayasa persyaratan daripada pengertian yang lebih sempit tentang
Analisa Kebutuhan untuk menekankan bahwa ini adalah proses yang iteratif dan kooperatif
menganalisis masalah, mendokumentasikan pengamatan yang dihasilkan, dan memeriksa
ketepatan pemahaman yang didapat. Rekayasa kebutuhan tidak hanya melibatkan
masalah teknis tentang bagaimana merepresentasikan persyaratan. Aspek sosial dan kognitif
memainkan peran dominan juga.
Persyaratan rekayasa dan desain umumnya tidak dapat dipisahkan secara ketat
waktu. Dalam beberapa kasus, spesifikasi kebutuhan sangat formal dan dapat dilihat
sebagai spesifikasi desain tingkat tinggi dari sistem yang akan dibangun. Seringkali, pendahuluan
desain dilakukan setelah serangkaian persyaratan awal telah ditentukan. Berdasarkan
hasil dari upaya desain ini, spesifikasi kebutuhan dapat diubah dan
Dihilangkan. Jenis iterasi ini juga terjadi ketika teknik pembuatan prototipe sedang dilakukan
digunakan. Dalam proyek pengembangan tangkas murni, persyaratan muncul bersamaan dengan
sistem up-and-running. Teknik terkenal seperti diagram aliran data dan UML
diagram kelas digunakan untuk menyusun dan mendokumentasikan kedua spesifikasi kebutuhan
dan desain.
Hanya untuk kemudahan presentasi persyaratan rekayasa dan desain
fase dipisahkan secara ketat dan diperlakukan secara berurutan dalam buku ini.
Selama rekayasa persyaratan, sejumlah hal yang sangat berbeda sedang dilakukan
ditujukan. Mari kita lihat sebuah contoh dan pertimbangkan kasus (hipotetis) dari a
perpustakaan universitas mengotomatiskan operasinya. Kami akan mulai dengan perpustakaan yang
berisi
sejumlah lemari. Lemari ini menyimpan banyak sekali kartu, satu per buku.
Setiap kartu berisi nama penulis, judul buku, ISBN, tahun terbit,
dan data berguna lainnya. Kartu diurutkan berdasarkan abjad dengan nama yang pertama
penulis setiap buku.
Sistem pemesanan ini sebenarnya menghadirkan masalah besar karena hanya berfungsi dengan
baik jika kita
tahu nama penulis pertama. Jika kita hanya tahu judulnya, atau jika kita tertarik dengan buku
pada topik tertentu, katalog penulis sedikit atau tidak membantu.
Solusi perangkat lunak tampak jelas. Jika kita menyimpan data untuk setiap buku satu kali dalam a
database, kami selanjutnya dapat mengurutkan entri dengan berbagai cara. Sesuai
alat dapat memungkinkan pengguna untuk mencari database secara interaktif. Dengan menyediakan
internet
akses ke database, layanan dapat sangat ditingkatkan.
Selama fase rekayasa persyaratan, sejumlah persyaratan pengguna akan
dinaikkan. Beberapa dari persyaratan tersebut akan menyangkut memperbarui database, yaitu
menambah, menghapus dan mengubah record. Orang lain akan memperhatikan fungsi yang akan
disediakan
kepada anggota biasa perpustakaan, seperti:
– Berikan daftar semua buku yang ditulis oleh X;
204 TEKNIK PERSYARATAN
Spesifikasi
Perundingan
Dalam contoh perpustakaan kami, kami dapat dengan mudah mengabaikan fakta bahwa dalam
sebuah angka
Dalam beberapa kasus, nama penulis seperti yang tertera di sampul buku bukan 'kanonik'
nama penulis. Fenomena ini terjadi khususnya dengan penulis dari negara-negara itu
menggunakan skrip non-Latin. Transkripsi nama Rusia 4EXOB berbunyi 'Chekhov'
dalam bahasa Inggris dan 'Tsjechow' dalam bahasa Belanda. Dalam kasus seperti itu, pustakawan ingin
memasukkan
nama penulis dua kali: sekali nama dieja seperti yang tertera di buku, dan sekali
nama dieja seperti yang digunakan dalam berbagai proses pencarian. Sebuah jawaban atas sebuah
pertanyaan
seperti 'buku Chekhov mana yang dimiliki perpustakaan kita?' juga harus memberi tahu kita
judul non-Inggris.
Ketidakcocokan halus antara gagasan analis tentang istilah dan konsep dan mereka
makna yang tepat dalam domain yang dimodelkan dapat memiliki efek mendalam. Seperti
ketidakcocokan paling mudah terjadi di domain yang sudah kita 'ketahui', seperti perpustakaan. Sebuah
menerangi diskusi tentang masalah potensial dalam (secara formal) menentukan persyaratan
dari sistem perpustakaan dapat ditemukan di (Wing, 1988). Masalah yang dicatat antara lain:
�
210 TEKNIK PERSYARATAN
cara lengkap. Itu harus dikomunikasikan kepada orang yang pada umumnya
memiliki latar belakang yang agak berbeda. Analis seringkali tidak memiliki
pengetahuan yang cukup mendalam tentang domain aplikasi di mana masalah
tersebut berasal. Dia harus mempelajari bahasa domain aplikasi dan mengenal
terminologi, konsep, dan prosedurnya. Terutama dalam proyek-proyek besar,
pengetahuan aplikasi cenderung tersebar di antara para spesialis yang terlibat, yang
dengan mudah menyebabkan kesulitan integrasi dan koordinasi.
Dalam contoh kita sebelumnya, pustakawanlah yang harus mengungkapkan
keinginannya. Ada kemungkinan pencantuman dua nama penulis ('Tsjechow' dan
'Chekhov') dipandang sebagai detail yang jelas yang tidak perlu dikemukakan
secara eksplisit. Analis di sisi lain meja mungkin masih mendapat kesan bahwa dia
memiliki gambaran lengkap tentang sistem. Jenis kelalaian ini mungkin memiliki
konsekuensi yang parah.
Beberapa tahun yang lalu sistem pertahanan udara otomatis yang
besar sedang dikembangkan di AS. Selama salah satu pengujian akhir
sistem ini, sinyal alarm dikeluarkan. Salah satu komputer mendeteksi
rudal yang tidak dikenal. Ternyata itu adalah bulan. Kemungkinan ini
belum terpikirkan.
Mendapatkan informasi yang benar dan lengkap merupakan prasyarat penting untuk
sukses. Hal ini ternyata agak bermasalah dalam praktiknya. Menanyakan kepada
calon pengguna apa yang diinginkan biasanya tidak berhasil. Seringkali kita
mendapatkan gambaran situasi yang agak tidak lengkap dan tidak akurat. Alasan
penting untuk ini adalah keterbatasan manusia untuk memproses informasi, memilih
informasi, dan memecahkan masalah. Kemampuan manusia yang terbatas ini
diperparah oleh faktor-faktor seperti:
– kompleksitas dan variasi persyaratan yang dapat dikenakan perangkat
lunak;
– perbedaan latar belakang antara klien, atau pengguna, dan perangkat lunak
spesialis.
Dalam penelitian tentang pemrosesan informasi manusia sering menggunakan
model di mana memori manusia terdiri dari dua komponen: memori jangka pendek
di mana informasi sedang diproses, dan memori jangka panjang di mana
pengetahuan permanen disimpan. Memori jangka pendek memiliki kapasitas
terbatas: sering dikatakan memiliki sekitar tujuh slot. Memori jangka panjang di sisi
lain memiliki kapasitas yang sangat besar.
Jadi, informasi diproses dalam bagian memori manusia yang relatif kecil. Memori
jangka panjang diakses dengan cara tidak langsung. Selain itu, manusia juga
menggunakan ingatan eksternal ketika informasi sedang diproses: papan tulis,
selembar kertas, dll.
Jika seseorang yang diwawancarai selama rekayasa persyaratan hanya
menggunakan memori jangka pendeknya, keterbatasannya dapat berdampak pada
hasil. Hal ini dapat dengan mudah terjadi jika memori eksternal tidak digunakan.
Banyak hal bisa dilupakan, hanya karena ingatan jangka pendek kita memiliki
kapasitas yang terbatas.
Manusia juga cenderung berprasangka buruk dalam memilih dan menggunakan
informasi. Kita, khususnya, cenderung membiarkan peristiwa terkini berlaku. Dalam
membuat persyaratan
9.1. PEMERIKSAAN PERSYARATAN 211
spesifikasi, ini mengarah pada persyaratan yang sesuai dengan situasi saat ini, saat ini
informasi yang tersedia, peristiwa terkini, dll.
Manusia tidak terlalu mampu berpikir rasional. Mereka akan menyederhanakan banyak hal dan
menggunakan model yang tidak sesuai dengan kenyataan. Keterbatasan lain yang mempengaruhi kami
model realitas ditentukan oleh faktor-faktor seperti pendidikan, prasangka, praktik, dll.
Jenis penyederhanaan yang sama ini terjadi ketika persyaratan perangkat lunak disusun.
Dan hasilnya akan dibatasi oleh faktor yang sama.
Kami tidak selalu dapat mengharapkan pengguna untuk dapat secara tepat menyatakan
kebutuhannya di
tahap awal. Salah satu alasan untuk menyelidiki peluang otomatisasi sering kali
karena ketidakpuasan tertentu dengan situasi saat ini. Seseorang tidak puas dengan
situasi saat ini dan memiliki kesan bahwa otomatisasi akan membantu. Apakah ini
benar atau tidak -- banyak masalah pemrosesan data adalah masalah organisasi -- secara sederhana
mengotomatiskan situasi saat ini tidak selalu menjadi solusi. Sesuatu yang berbeda adalah
diinginkan, meskipun tidak jelas apa. Hanya ketika wawasan tentang kemungkinan
otomatisasi diperoleh, akankah persyaratan nyata muncul dengan sendirinya. Ini adalah salah satu dari
alasan untuk besarnya masalah pemeliharaan. Sekitar setengah dari pemeliharaan
upaya menyangkut penyesuaian perangkat lunak dengan persyaratan (baru) pengguna. Untuk
menangkal
tren ini, model proses pengembangan perangkat lunak yang mengakui pembelajaran ini
proses, seperti pembuatan prototipe, pengembangan inkremental, dan metode gesit harus dilakukan
disukai daripada yang tidak, yaitu model air terjun dan variannya.
Melalui analisis yang cermat, kami berharap dapat membangun perspektif pengguna yang baik
persyaratan dan mengantisipasi perubahan di masa depan. Namun, tidak peduli berapa banyak waktu
dihabiskan dalam dialog dengan calon pengguna, perubahan di masa depan tetap sulit diramalkan.
Kami
bahkan mungkin melangkah lebih jauh dan menetapkan bahwa persyaratan akan tidak pernah menjadi
lengkap. Di dalam
dalam hal ini, menentukan persyaratan memiliki banyak kesamaan dengan prakiraan cuaca:
ada batas seberapa jauh masa depan dapat diprediksi.
Dalam situasi di mana tujuan proyek pengembangan perangkat lunak adalah untuk meningkatkan
'sistem' yang ada, baik itu proses manual atau (sebagian) otomatis, umumnya
membantu untuk secara eksplisit membedakan dua langkah pemodelan. Pada langkah pertama, arus
situasi dimodelkan. Berdasarkan analisis kekuatan dan kelemahan dari
situasi saat ini, situasi-to-be selanjutnya dimodelkan. Desain Ulang Proses Bisnis, di
khususnya, menekankan perbedaan antara dua langkah pemodelan ini.
Agar tahap rekayasa persyaratan berhasil, kita memerlukan metode dan
teknik yang mencoba melewati kesulitan yang digambarkan di atas. Sejauh mana
teknik yang kuat diperlukan tergantung pada pengalaman orang-orang yang terlibat di dalamnya
fase rekayasa persyaratan (baik pengguna dan analis) dan keahlian dari
analis dengan domain aplikasi. Bagian 9.1.2 membahas sejumlah teknik
untuk elisitasi persyaratan.
Namun sebelum kita membahas teknik-teknik tersebut, terlebih dahulu kita uraikan di bagian 9.1.1
bagaimana caranya
pandangan dunia yang berbeda menghasilkan pendekatan yang berbeda untuk rekayasa kebutuhan.
Di bagian 9.1.3 kita membahas bagaimana persyaratan terkait dengan sasaran tingkat yang lebih tinggi,
dan
bagaimana sudut pandang yang berbeda dapat menghasilkan kumpulan yang berbeda, dan terkadang
saling bertentangan
persyaratan. Mengikuti bagian 9.1.3 kita membahas bagaimana memprioritaskan persyaratan, dan
212 TEKNIK PERSYARATAN
efisiensi dapat diuji secara objektif, dengan tes yang serupa dengan yang digunakan dalam rekayasa
lainnya
disiplin ilmu.
Sosial-relativisme (subjektif--urutan). Dalam paradigma ini, analis beroperasi
sebagai fasilitator. Realitas bukanlah sesuatu yang tidak dapat diubah 'di luar sana',
tetapi dibangun di dalam pikiran manusia. Analis adalah agen perubahan. Dia
berusaha memfasilitasi pembelajaran semua orang yang terlibat.
Radikal-strukturalisme (objektif--konflik). Dalam paradigma radikal asumsi
kuncinya adalah bahwa pengembangan sistem campur tangan dalam konflik antara
dua atau lebih kelas sosial untuk kekuasaan, prestise, dan sumber daya. Sistem
sering dikembangkan untuk mendukung kepentingan pemilik, dengan
mengorbankan kepentingan tenaga kerja. Untuk memulihkan keseimbangan
kekuatan, paradigma ini menunjukkan bahwa analis harus bertindak sebagai
partisan buruh. Persyaratan sistem harus berkembang dari kerjasama antara tenaga
kerja dan analis. Pendekatan ini dianggap mengarah pada sistem yang
meningkatkan keahlian dan kondisi kerja.
Neohumanisme (subyektif--konflik). Tema sentral dalam paradigma ini adalah
emansipasi. Sistem dikembangkan untuk menghilangkan pengaruh distorsi dan
hambatan lain untuk wacana rasional. Pengembang sistem bertindak sebagai
terapis sosial dalam upaya untuk menyatukan, dalam diskusi terbuka, kelompok
individu yang beragam, termasuk pelanggan, tenaga kerja, dan berbagai tingkat
manajemen.
Diakui, paradigma ini mencerminkan orientasi ekstrim. Dalam praktiknya, beberapa campuran
asumsi biasanya akan memandu proses rekayasa kebutuhan. Namun itu adil untuk
mengatakan bahwa mayoritas teknik pengembangan sistem menekankan fungsionalis
melihat.
Dalam dimensi subjektivis-objektivis, penting untuk menyadari bahwa suatu kebaikan
kesepakatan subjektivisme mungkin terlibat dalam pembentukan UoD. Jika kita harus
mengembangkan sistem untuk, katakanlah, mengendalikan mesin fotokopi, kita dapat dengan aman
menggunakan fungsional
berdiri. Kita mungkin berharap mesin seperti itu beroperasi secara rasional murni. Dalam analisis
proses, kami mencantumkan fungsi mesin, sinyal internalnya, kondisi, dan sebagainya
untuk mendapatkan gambaran yang memuaskan tentang sistem yang akan dikembangkan. Setelah ini
persyaratan diidentifikasi, mereka dapat dibekukan dan beberapa model proses seperti air terjun
dapat digunakan untuk merealisasikan sistem.
Namun, jika tugas kita adalah mengembangkan sistem untuk mendukung orang dalam melakukan
pekerjaan mereka
pekerjaan, seperti beberapa sistem otomasi kantor, pandangan dunia yang murni fungsional
dapat dengan mudah mengarah pada sistem yang disalahpahami. Dalam kasus tersebut, partisipasi
pengguna akhir dalam
membentuk UoD adalah sangat penting. Melalui dialog terbuka dengan
orang yang bersangkutan, kami dapat mendorong calon pengguna untuk mempengaruhi sistem
untuk dikembangkan. Bagian dari tugas analis dalam hal ini adalah mendamaikan pandangan
peserta dalam proses analisis. Umpan balik terus menerus selama aktual
fase konstruksi dengan kemungkinan pengalihan dapat semakin meningkatkan peluang
kesuksesan. Ini adalah pengguna masa depan yang akan bekerja dengan sistem. Itu tidak
memanfaatkan untuk menghadapi mereka dengan sistem yang tidak memenuhi kebutuhan mereka.
214 TEKNIK PERSYARATAN
Jika model konseptual peserta berbeda, kita dapat mencari kompromi, atau memilih
salah satu pandangan yang diungkapkan. Tidak mungkin untuk memberikan
pedoman umum tentang bagaimana menangani kasus-kasus seperti itu. Mencari
kompromi bisa menjadi urusan yang membosankan dan dapat mengarah pada
sistem yang tidak disukai siapa pun. Memilih satu pandangan tertentu tentang dunia
akan membuat satu pihak senang, tetapi dapat mengakibatkan pihak lain sama
sekali mengabaikan sistem yang dikembangkan. Lebih buruk lagi, mereka mungkin
memutuskan untuk mengembangkan sistem persaingan.
Gambar 9.3 mencantumkan sejumlah teknik elisitasi, yang dijabarkan lebih lanjut
di bawah. Angka tersebut juga memberi tahu kita bahwa pengguna adalah sumber utama informasi
dalam beberapa teknik, sementara domain dominan pada yang lain. Selanjutnya,
angka menunjukkan apakah setiap teknik sangat berguna untuk memodelkan arus, seperti
bertentangan dengan masa depan yang diantisipasi, situasi.
Biasanya Anda harus menyedot karpet dalam dua arah, bukan satu arah; juga,
Anda harus menggunakan beberapa teknik elisitasi persyaratan.
Meminta Kami mungkin hanya bertanya kepada pengguna apa yang mereka harapkan dari sistem.
Sebuah pra-
posisinya kemudian adalah bahwa pengguna dapat melewati batasan dan prasangkanya sendiri.
Bertanya dapat berupa wawancara, curah pendapat, atau kuesioner. Dalam sebuah
wawancara terbuka, pengguna dengan bebas berbicara tentang tugasnya. Ini adalah bentuk yang paling
mudah
persyaratan elisitasi, tetapi menderita dari semua kekurangan yang disebutkan sebelumnya.
Dalam wawancara terstruktur, analis mencoba mengatasinya dengan mengarahkan pengguna, untuk
misalnya melalui pertanyaan tertutup atau menyelidik.
Dalam sesi diskusi dengan sekelompok pengguna, kami sering menemukan beberapa pengguna
jauh lebih artikulatif daripada yang lain, dan dengan demikian memiliki pengaruh yang lebih besar pada
hasilnya.
Konsensus yang dicapai dengan demikian tidak perlu seimbang. Untuk mengatasi masalah tersebut, a
Teknik Delphi dapat digunakan. Teknik Delphi adalah teknik iteratif
di mana informasi dipertukarkan dalam bentuk tertulis sampai konsensus tercapai.
Misalnya, peserta dapat menuliskan kebutuhannya, diurutkan berdasarkan urutannya
pentingnya. Set persyaratan yang diperoleh didistribusikan ke semua peserta,
216 TEKNIK PERSYARATAN
Analisis tugas adalah teknik untuk mendapatkan hierarki tugas dan subtugas yang
harus dilakukan oleh orang yang bekerja di domain tersebut. Salah satu teknik lain
yang dibahas dapat digunakan untuk mendapatkan informasi yang diperlukan untuk
menggambar hierarki ini. Tidak ada aturan yang jelas tentang kapan harus
menghentikan tugas yang membusuk. Heuristik utama adalah bahwa pada
beberapa titik pengguna cenderung 'menolak' untuk menguraikan tugas lebih jauh.
Misalnya, ketika ditanya bagaimana identifikasi anggota diperiksa, petugas
perpustakaan mungkin mengatakan 'Baiklah, saya periksa saja identitasnya.' Pada
titik ini, dekomposisi lebih lanjut tidak ada artinya.
Analisis tugas sering diterapkan pada tahap ketika (detail tentang) komponen
interaksi manusia-komputer diputuskan. Ini meremehkan potensinya sebagai teknik
elisitasi persyaratan umum. Ini juga memberikan kesan (salah) bahwa pengguna
hanya mementingkan 'tampilan dan nuansa' antarmuka.
Analisis berbasis skenario Alih-alih mencari rencana umum seperti dalam
wawancara atau analisis tugas, analis dapat belajar contoh tugas. Skenario adalah
cerita yang memberi tahu kita bagaimana contoh tugas tertentu dijalankan. Skenario
bisa nyata atau buatan. Contoh skenario nyata adalah analis mengamati bagaimana
pegawai perpustakaan menangani permintaan pengguna yang sebenarnya. Kami
dapat meminta pegawai perpustakaan untuk mengungkapkan secara lisan apa yang
dia lakukan dan membuat rekaman audio atau videonya. Ini berpikir keras metode
adalah teknik yang cukup tidak mencolok untuk mempelajari orang di tempat kerja.
Ini sering digunakan untuk menilai prototipe atau sistem informasi yang ada.
Alternatifnya, kami dapat membuat skenario buatan dan mendiskusikannya
dengan pengguna. Sebagai langkah pertama, kami dapat, misalnya, membuat
skenario berikut untuk mengembalikan buku:
9.1. PEMERIKSAAN PERSYARATAN 217
1. Tanggal jatuh tempo buku diperiksa. Jika buku terlambat, anggota
diminta untuk membayar denda yang sesuai.
– Apa yang terjadi jika orang yang mengembalikan buku bukan anggota terdaftar
dari perpustakaan?
– Apa yang terjadi jika anggota yang mengembalikan buku ini memiliki buku lain yang ada
terlambat atau reservasi luar biasa untuk buku lain?
‘Jika anggota ingin meminjam buku sementara dia masih memiliki tunggakan denda, akan
Anda:
218 TEKNIK PERSYARATAN
Pilihan biner ini tidak perlu memetakan praktik yang sebenarnya. Pegawai
perpustakaan dapat, misalnya, mengabulkan permintaan asalkan bagian dari denda
yang belum dibayar diselesaikan atau jika dia mengetahui bahwa anggota tersebut
dapat dipercaya.
Protokol berpikir keras didasarkan pada gagasan bahwa pengguna memiliki
tujuan dan subtujuan yang terdefinisi dengan baik, dan bahwa mereka melintasi
pohon tujuan tersebut dengan cara top-down yang rapi. Namun orang-orang sering
tidak memiliki rencana yang telah terbentuk sebelumnya, melainkan melanjutkan
dengan cara yang agak oportunistik.
Kerugian dari analisis tugas adalah menganggap tugas individu dari individu,
tanpa memperhitungkan lingkungan sosial dan organisasi di mana tugas-tugas ini
dilaksanakan.
Metode etnografi diklaim tidak memiliki kekurangan seperti itu. Dalam etnog-rafi,
sekelompok orang dipelajari dalam latar alamiahnya. Ini terkenal dari sosiologi, di
mana misalnya suku-suku Polinesia dipelajari dengan tinggal bersama mereka
untuk jangka waktu yang lama. Demikian pula, persyaratan pengguna dapat
dipelajari dengan berpartisipasi dalam pekerjaan sehari-hari mereka untuk jangka
waktu tertentu, misalnya dengan menjadi pegawai perpustakaan. Analis magang,
mengakui bahwa pengguna sistem di masa depan adalah ahli nyata dalam
pekerjaan mereka. Metode etnografi lebih mungkin mengungkap pengetahuan
diam-diam daripada kebanyakan teknik elisitasi lainnya.
Analisis bentuk Banyak informasi tentang domain yang dimodelkan seringkali
dapat ditemukan dalam berbagai bentuk yang digunakan. Misalnya, untuk meminta
beberapa prosiding konferensi dari perpustakaan lain, pengguna mungkin harus
mengisi formulir seperti yang diberikan pada gambar 9.4.
– Ada daftar anggota staf yang berwenang untuk menandatangani permintaan tersebut;
Akuisisi judul
Sebelum permintaan untuk memperoleh gelar dapat dipenuhi, formulir B harus diisi
dengan tidak lengkap. Permintaan tidak dapat ditangani jika tidak ditandatangani
oleh anggota staf yang berwenang atau akun yang akan diisi ('Siswa' atau 'Staf')
tidak disebutkan. Permintaan tidak akan dikabulkan jika judul yang diminta sudah
ada dalam katalog judul, kecuali ditandai 'Dicuri' atau 'Hilang', atau akunnya adalah
'Siswa'.
Seringkali, deskripsi (dan formulir) bahasa alami memberikan latar belakang kepada analis
informasi yang akan digunakan bersama dengan teknik elisitasi lainnya seperti
wawancara. Deskripsi bahasa alami khususnya cenderung menganggap banyak diam-diam
pengetahuan oleh pembaca. Misalnya, jika formulir B berisi ISBN, ini akan menyimpan
pegawai perpustakaan beberapa pekerjaan, tetapi permintaan mungkin masih akan ditangani jika ini
informasi tidak disediakan. Masalah praktis dengan deskripsi bahasa alami
adalah bahwa mereka sering tidak diperbarui. Seperti dokumentasi perangkat lunak, validitasnya
cenderung memburuk seiring berjalannya waktu.
Deskripsi bahasa alami sering diambil sebagai titik awal dalam berorientasi objek
teknik analisis. Ini dibahas lebih lanjut di bagian 12.3.
220 TEKNIK PERSYARATAN
Turunan dari sistem yang ada Mulai dari sistem yang sudah ada, misalnya sistem
serupa di beberapa organisasi lain atau deskripsi dalam buku teks, kami dapat
merumuskan persyaratan sistem baru. Jelas, kita harus berhati-hati dan
mempertimbangkan keadaan khusus dari situasi saat ini.
Daripada melihat satu sistem tertentu, kita juga dapat mempelajari sejumlah
sistem dalam beberapa domain aplikasi. Proses analisis persyaratan meta ini dikenal
sebagai analisis domain. Tujuannya umumnya adalah untuk mengidentifikasi
komponen, konsep, struktur, dan sejenisnya yang dapat digunakan kembali.
Berbahaya untuk mencari persyaratan yang dapat digunakan kembali di domain yang
belum matang. Persyaratan kemudian dapat digunakan kembali hanya karena
tersedia, bukan karena sesuai dengan situasi yang dihadapi. Mereka menjadi 'kayu
mati'. Dalam konteks analisis kebutuhan, analisis domain dapat dilihat sebagai teknik
untuk menurunkan model 'referensi' untuk sistem dalam domain tertentu. Model
referensi semacam itu menyediakan kerangka (arsitektur) yang dapat ditambah dan
diadaptasi agar sesuai dengan situasi spesifik yang dihadapi.
Analisis domain dibahas lebih lanjut dalam bab ??, dalam konteks penggunaan
kembali perangkat lunak dan pengembangan lini produk perangkat lunak.
5. Desain dan prototipe proses baru. Ini adalah langkah terakhir. Pembuatan prototipe
mungkin untuk mencoba struktur baru, sehingga mengurangi risiko kegagalan.
BPR sebenarnya bukan teknik elisitasi kebutuhan yang tepat. Disebutkan di sini
karena menekankan masalah penting untuk ditangani selama persyaratan
fase rekayasa. Proses bisnis tidak boleh didorong oleh teknologi informasi
ogy. Sebaliknya, teknologi informasi harus memungkinkan mereka. Padahal BPR lengkap
upaya tidak diperlukan atau layak dalam banyak situasi, memikirkan kembali proses yang ada
dan prosedur adalah langkah yang terlalu sering dilewati tanpa berpikir dalam perangkat lunak
proyek pengembangan.
Sebagai contoh, pertimbangkan proyek otomasi perpustakaan kami sekali lagi. Hati-hati
pemeriksaan situasi saat ini mungkin mengungkapkan bahwa semuanya tidak terlalu buruk.
Namun, kesannya adalah jumlah permintaan yang tidak bisa dikabulkan
terus meningkat dalam beberapa tahun terakhir. Hal ini ditengarai sebagai penyebab utama kenaikan
tersebut
jumlah pengguna yang tidak puas. Karena pelayanan kepada pelanggannya memiliki prioritas tinggi,
salah satunya
tujuannya adalah untuk mengurangi jumlah permintaan yang tidak dapat dipenuhi sebesar 50%
dalam waktu dua tahun. Untuk ini menjadi mungkin, perpustakaan harus diperbolehkan untuk
menghabiskan
anggaran yang tersedia atas kebijakannya sendiri, bukannya dipicu oleh sinyal dari
peneliti saja (ini terdengar radikal, bukan). Oleh karena itu diputuskan untuk menambah
sistem otomatis yang ada dengan modul untuk melacak keberhasilan dan
permintaan yang gagal. Berdasarkan wawasan yang diperoleh dari proses pengukuran ini
dalam jangka waktu tiga bulan akan diambil keputusan berapa besar persentasenya
anggaran tahunan akan dialokasikan kembali.
Pembuatan prototipe Mengingat fakta bahwa sulit, jika bukan tidak mungkin, untuk
membangun sistem yang benar dari awal, kita dapat memutuskan untuk
menggunakan prototipe. Mulai dari persyaratan pertama, prototipe sistem dibangun.
Prototipe ini digunakan untuk percobaan, yang mengarah pada persyaratan baru
dan lebih banyak wawasan tentang kemungkinan penggunaan sistem. Dalam satu
atau lebih langkah berikutnya, serangkaian persyaratan yang lebih pasti
dikembangkan. Pembuatan prototipe dibahas di bagian 3.2.1. Proses tangkas
lainnya mengikuti strategi serupa di mana persyaratan dengan cepat diterjemahkan
ke dalam sistem yang berjalan untuk dinilai oleh penggunanya.
Dari teknik-teknik elisitasi persyaratan ini, bertanya adalah strategi yang paling tidak
pasti, sedangkan pembuatan prototipe adalah yang paling tidak pasti. Selain
pengalaman baik pengguna maupun analis, ketidakpastian proses juga dipengaruhi
oleh stabilitas lingkungan, kompleksitas produk yang akan dikembangkan dan
keakraban dengan bidang masalah yang dimaksud. Kami dapat mencoba
memperkirakan dampak dari faktor-faktor tersebut pada kerentanan dari spesifikasi
persyaratan yang dihasilkan, dan kemudian memutuskan metode utama tertentu
untuk memperoleh persyaratan berdasarkan perkiraan ini.
222 TEKNIK PERSYARATAN
Untuk masalah yang dipahami dengan baik, dengan analis yang sangat
berpengalaman, mewawancarai calon pengguna mungkin cukup. Namun, jika
menyangkut masalah lanjutan dan kurang dipahami dari dalam lingkungan yang
berubah dengan cepat dan analis memiliki sedikit atau tidak ada pengalaman dalam
domain tersebut, tampaknya bijaksana untuk mengikuti proses yang gesit.
Ketidakpastian persyaratan bukanlah satu-satunya masalah yang harus dihadapi
manajer proyek, dan proses yang berbeda bukanlah satu-satunya solusi yang
mereka pilih. Aspek politik (seperti agenda tersembunyi dan konflik antar pemangku
kepentingan) seringkali dipandang sebagai risiko yang lebih besar daripada sekadar
ketidakpastian persyaratan (Moynihan, 2000). Tentu saja, ini terkait. Dalam kedua
kasus tersebut, kemungkinan besar persyaratan akan berubah. Manajer proyek
sering mengikuti rute formal untuk menangani perbedaan pendapat antara
pemangku kepentingan, dan membiarkan pelanggan menandatangani dokumen
persyaratan. Apakah ini jawaban dalam jangka panjang masih dipertanyakan.
Ketika ketidakpastian berkurang, efek menguntungkan dari partisipasi pengguna
dalam rekayasa persyaratan berkurang. Namun, jika ketidakpastian meningkat,
partisipasi pengguna yang lebih besar memiliki efek positif pada kualitas rekayasa
persyaratan. Biasanya bijaksana untuk memiliki banyak tautan
pelanggan-pengembang dalam proyek pengembangan perangkat lunak, dan
khususnya selama rekayasa persyaratan. Keil dan Carmel (1995) mempelajari
hubungan antara keberhasilan proyek dan jumlah dan jenis hubungan
pelanggan-pengembang tersebut. Penulis mengamati korelasi yang kuat antara
jumlah tautan dan keberhasilan proyek: lebih banyak tautan menyiratkan lebih
banyak proyek yang berhasil. Kontribusi relatif terhadap kesuksesan proyek
berkurang seiring bertambahnya jumlah mata rantai; tidak perlu memiliki lebih dari,
katakanlah, setengah lusin tautan. Pengamatan lebih lanjut yang menarik dari
penelitian ini adalah bahwa link dengan langsung pengguna memiliki lebih banyak
dampak pada keberhasilan proyek daripada tautan tidak langsung pengguna seperti
perwakilan pengguna atau tenaga penjualan. Akhirnya, dicatat bahwa proyek
pengembangan yang didorong oleh pelanggan cenderung menggunakan dan lebih
menyukai jenis tautan yang berbeda daripada proyek pengembangan yang
digerakkan oleh pasar. Misalnya, tautan favorit untuk pengembangan kustom -- tim
yang difasilitasi -- tidak digunakan oleh pengembang paket, sedangkan tautan
favorit untuk pengembang paket -- jalur dukungan -- jarang digunakan untuk proyek
kustom.
Kita harus sangat berhati-hati dalam menilai teknik elisitasi persyaratan mana
yang harus dipilih. Terlalu umum untuk terlalu optimis tentang kemampuan kita untuk
menilai persyaratan perangkat lunak dengan benar.
Sebagai contoh, perhatikan anekdot berikut dari sebuah surat kabar Belanda.
Sebuah perusahaan dalam bisnis otomasi peternakan telah mengembangkan
sebuah sistem di mana microchip dimasukkan ke dalam telinga sapi. Selanjutnya,
setiap individu sapi dapat dilacak: pasokan makanan dan air diatur dan disesuaikan,
jumlah dan kualitas susu secara otomatis dicatat dan dianalisis, dll. Secara alami,
teknik yang sama ini selanjutnya berhasil diterapkan pada babi. Setelah itu,
dicobakan pada kambing. Peternakan kambing otomatis bernilai jutaan dolar
dibangun. Namun sayang, semuanya tidak berjalan dengan baik untuk kambing.
Berbeda dengan sapi dan babi, kambing memakan segalanya, termasuk keripik
temannya.
9.1. PEMERIKSAAN PERSYARATAN 223
melayani pelanggan
Gambar 9.7 Representasi grafik dari sudut pandang yang saling bertentangan
'diambil oleh' dan 'pendukung'. Menangkap jenis informasi ini dalam sistem otomatis
menawarkan kemungkinan untuk menyimpan, melacak, dan memanipulasi jenis informasi yang sangat
beragam
dikumpulkan selama fase rekayasa persyaratan. Sistem awal bersama
baris ini adalah gIBIS, sebuah sistem yang dirancang untuk menangkap keputusan desain awal.
Dua sudut pandang khususnya penting selama rekayasa persyaratan: itu
sudut pandang bisnis dan sudut pandang pribadi. Sudut pandang bisnis biasanya
disebarkan oleh pemangku kepentingan manajemen, sedangkan sudut pandang pribadi biasanya
disebarkan oleh pengguna akhir. Namun, pengguna akhir cenderung juga menganggap bisnis
persyaratan, setidaknya pada tahap awal. Misalnya, ketika John ditanya apakah
denda adalah tambahan yang disambut baik untuk subsidi yang didapat perpustakaan dari pemerintah,
a
kemungkinan jawabannya adalah 'ya'. Persyaratan ini dipandang sebagai persyaratan bisnis, bukan
kebutuhan pribadi John. Hanya ketika dia dihadapkan dengan konsekuensinya,
akankah dia menyadari bahwa ini bukanlah yang dia inginkan. Dan permintaan untuk mengubah
sistem akan mengikuti.
Dalam kebanyakan kasus, tidak semua persyaratan dapat direalisasikan, jadi kami
harus membuat pilihan. Di bagian 3.2.3 kami menyebutkan bentuk prioritas
persyaratan yang sangat sederhana yang disebuttriase. Varian yang sering
digunakan dikenal sebagai MoSCoW (huruf o hanya ada untuk dapat melafalkan
kata). Menggunakan MoSCoW, kami membedakan empat jenis persyaratan:
�
9.1. PEMERIKSAAN PERSYARATAN 227
puas
satu dimensi
menarik
disfungsional fungsional
harus
tidak puas
Krit Berat A B C
eria
Pertunju 2 1 3 5
kan
Pe 1 2 2 5
mas
ok
Kegunaa 3 4 5 1
n
T 16 23 18
o
t
a
l
Kelemahan utama WSM adalah bahwa setiap kriteria dapat dikompensasi oleh
kriteria lainnya. Dalam contoh dari tabel 9.1, komponen C lolos ke babak berikutnya
meskipun skor fungsionalitasnya sangat rendah. Skema pemeringkatan yang lebih
kompleks, seperti Analytic Hierarchy Process (AHP) mengatasi kekurangan ini
((Saaty, 1990)).
1.2.3.
Perkenalan
1.1 Tujuan
1.2 Lingkup
1.3 Definisi, akronim dan singkatan
1.4 Referensi
1.5 Gambaran Umum
Deskripsi keseluruhan
2.1 Perspektif produk
2.2 Fungsi produk
2.3 Karakteristik Pengguna
2.4 Kendala
2.5 Asumsi dan ketergantungan
2.6 Persyaratan subset
Persyaratan khusus
Untuk sistem nontrivial apa pun, persyaratan terperinci akan menjadi bagian
terbesar dari dokumen persyaratan. Oleh karena itu, akan sangat membantu untuk
mengkategorikan persyaratan terperinci ini. Hal ini dapat dilakukan sepanjang
dimensi yang berbeda, seperti:
�
232 TEKNIK PERSYARATAN
�
9.2. PERSYARATAN DOKUMENTASI DAN 233
MANAJEMEN
1.2 Cakupan. Produk yang dimaksud mengotomatiskan fungsi perpustakaan
yang dijelaskan di DOC1. Tujuannya adalah untuk memberikan pelayanan
yang lebih efektif kepada pengguna perpustakaan, khususnya melalui fasilitas
pencarian online yang ditawarkan. Rincian lebih lanjut dari persyaratan kinerja
diberikan di bagian 3.3 dokumen ini. Setelah sistem ini diinstal,
penggabungan judul baru akan berjalan dari rata-rata 15 menit menjadi
rata-rata 5 menit.
1.3 Definisi, akronim dan singkatan. Anggota perpustakaan: . . . , Petugas
perpustakaan:. . . , Pengguna: Istilah pengguna dapat merujuk pada anggota
perpustakaan dan personel perpustakaan, dan digunakan untuk menunjukkan
salah satu kelas pengguna. Katalog judul: . . . ,PICA: . . . , dll.
1.4 Referensi. DOC1: . . . , DOC2: . . . , dll.
1.5 Ringkasan. Bagian 2 dari dokumen ini memberikan gambaran umum
tentang sistem. Bagian 3 memberikan persyaratan yang lebih spesifik untuk
fungsi yang ditawarkan. Fungsi-fungsi ini dikategorikan menurut kelas
pengguna yang didukungnya: anggota (eksternal) perpustakaan dan petugas
perpustakaan.
2. Deskripsi keseluruhan.
2.1 Perspektif produk. Sistem database X yang telah terinstal akan digunakan
untuk menyimpan berbagai katalog serta administrasi anggota perpustakaan.
Tidak ada antarmuka ke sistem lain. Sistem akan direalisasikan pada
konfigurasi Y. Kapasitas penyimpanan eksternal maksimum untuk katalog
sistem adalah 1500 MB. Petugas perpustakaan akan menggunakan barcode
reader untuk memasukkan identitas anggota, buku dan jurnal. Protokol
antarmuka ke pembaca kode batang dijelaskan dalam DOC4.
2.2 Fungsi produk. Sistem menyediakan dua jenis fungsi:
– Fungsi dimana pengguna dapat mencari katalog buku dan jurnal
artikel. Daftar fungsi-fungsi ini diberikan dalam DOC1. Sebuah lebih rinci
deskripsi diberikan dalam bagian 3.2.1.
– Fungsi-fungsi dimana petugas perpustakaan dapat memperbaharui
administrasi
judul pinjaman dan katalog sistem; lihat bagian 3.2.2.
Pengguna sistem memilih salah satu fungsi yang ditawarkan melalui
menu utama (bagian 3.2.1.1 dan 3.2.2.1).
2.3 Karakteristik pengguna. Anggota perpustakaan adalah pengguna
insidental dari sistem dan memiliki sedikit pengetahuan tentang sistem
otomatis semacam ini. Oleh karena itu, sistem harus menginstruksikan diri
sendiri. Persyaratan khusus dirumuskan dalam bagian 3.1.1 dan 3.3. Petugas
perpustakaan akan dilatih dalam penggunaan sistem; lihat bagian 3.1.1.
2.4 Kendala. Anggota perpustakaan hanya dapat mencari katalog buku dan
artikel jurnal; mereka tidak diperbolehkan memperbarui katalog atau
administrasi pengguna. Fungsi yang terakhir ditawarkan hanya melalui
antarmuka khusus yang dilindungi kata sandi.
234 TEKNIK PERSYARATAN
3. Persyaratan khusus.
Kerangka kerja IEEE untuk spesifikasi persyaratan adalah model berbasis dokumen
yang sesuai untuk proses pengembangan perangkat lunak: model air terjun
236 TEKNIK PERSYARATAN
– identifikasi kebutuhan,
– persyaratan ketertelusuran.
Setiap persyaratan harus memiliki identifikasi unik. Bentuk paling sederhana adalah
dengan memberi nomor saja. Jika ada organisasi hierarkis, seperti dalam hierarki
tujuan, hal itu dapat tercermin dalam skema penomoran. Karena persyaratan sering
diubah dan diperbarui, sebaiknya sertakan juga informasi pembuatan versi.
Akhirnya, kita mungkin
9.2. PERSYARATAN DOKUMENTASI DAN MANAJEMEN 237
terlalu dini
membekukan
stabilitas kebutuhan
persyaratan
orang aneh
waktu
menambahkan beberapa atribut pada setiap persyaratan, seperti status, prioritas, pemangku
kepentingan utama
terlibat, dan sejenisnya. Kebutuhan alat teknik biasanya memiliki sarana untuk menyimpan
persyaratan dalam repositori terstruktur.
Perubahan persyaratan harus dikelola dengan baik. Dengan melihat setiap kebutuhan-
ment sebagai item konfigurasi, aturan dan prosedur dari manajemen konfigurasi
(bab 4) dapat diterapkan.
Kami dapat menghubungkan persyaratan ke elemen solusi seperti elemen desain atau
bahkan komponen perangkat lunak yang mewujudkan persyaratan tersebut. Dengan cara ini, kami
membangun
ketertelusuran dari persyaratan ke kode dan sebaliknya. Hal ini memungkinkan kita untuk melacak di
mana
persyaratan direalisasikan (forward traceability), dan mengapa solusi tertentu dipilih
(penelusuran mundur). Informasi ketertelusuran penting dalam semua pengembangan
fase. Dapat digunakan untuk menjawab berbagai pertanyaan, seperti:
Cara membuat hubungan antara persyaratan dan solusi ini secara eksplisit
terkait erat dengan analisis desain ruang. Dalam analisis ruang desain, tujuannya
adalah untuk secara eksplisit memodelkan semua kemungkinan kombinasi
kebutuhan dan solusi. Analisis ruang desain berasal dari bidang interaksi
manusia-komputer. Notasi terkenal untuk Analisis Ruang Desain dikenal sebagai
QOC (Pertanyaan, Pilihan, dan Kriteria). Pertanyaan sesuai dengan persyaratan,
Opsi adalah jawaban yang mungkin untuk persyaratan tersebut, dan Kriteria
mengacu pada alasan untuk memilih opsi tertentu. Misalnya, kami dapat
menampilkan hasil permintaan berita dari pelanggan perpustakaan (pertanyaan)
baik diurutkan berdasarkan tanggal publikasi, atau berdasarkan nama penulis (opsi).
Kriteria untuk menggunakan salah satu urutan dapat menjadi sumber item berita :
mengurutkan artikel koran berdasarkan tanggal, dan artikel jurnal berdasarkan nama
penulis.
Di satu sisi, analisis ruang desain menghasilkan struktur yang kaya di mana
catatan ekstensif dibangun dari alasan untuk solusi spesifik. Mengapa sistem ini
dibangun seperti itu? Alternatif mana yang kami pertimbangkan tetapi tolak?
Persyaratan mana yang selamat dari pengorbanan yang harus kami lakukan? Di sisi
lain, menangkap semua informasi ini mahal, dan manfaat langsungnya sulit
dibuktikan, jika memang ada. Ini adalah alasan utama mengapa pemikiran desain
pada umumnya gagal ditransfer ke praktik.
Dalam praktiknya, prevalensi yang blak-blakan untuk bahasa ahli pengguna menunjukkan dirinya
sendiri.
Kami kemudian dapat menggunakan konsep yang ada dari lingkungan di mana sistem itu berada
akan digunakan. Memang, konsep-konsep ini tidak didefinisikan secara tajam, tetapi secara umum
tidak ada kesalahpahaman antara para ahli dalam domain aplikasi
makna dari konsep-konsep itu. Deskripsi dalam hal konsep-konsep itu masih bisa
menjadi sangat tepat. Karena tujuan pertama dari spesifikasi kebutuhan adalah untuk mendapatkan a
menyelesaikan
deskripsi masalah yang harus dipecahkan, bahasa ahli pengguna kemudian akan menjadi
bahasa terbaik untuk spesifikasi persyaratan.
Namun, ada kelemahan tertentu yang melekat pada penggunaan bahasa alami.
Meyer (1985) memberikan sebuah contoh yang mengilustrasikan dengan sangat baik apa yang salah
ketika terjadi
bahasa alami digunakan dalam spesifikasi kebutuhan. Meyer mendaftar tujuh dosa yang mana
mungkin menimpa analis saat menggunakan bahasa alami:
�
240 TEKNIK PERSYARATAN
�
9.4. VERIFIKASI DAN VALIDASI 241
9.5 Ringkasan
Selama rekayasa persyaratan kami mencoba untuk mendapatkan deskripsi yang
lengkap dan jelas tentang masalah yang harus dipecahkan dan kendala yang harus
dipenuhi oleh setiap solusi untuk masalah itu. Selama fase ini, kami tidak hanya
mempertimbangkan fungsi yang akan disampaikan, tetapi kami juga memperhatikan
persyaratan yang diberlakukan oleh lingkungan. Tahap rekayasa kebutuhan
menghasilkan serangkaian model yang berkonsentrasi pada berbagai aspek sistem
(seperti fungsinya, antarmuka pengguna, dan struktur komunikasi) dan perspektif
(audiens) yang berbeda. Hasil dari proses ini didokumentasikan dalam spesifikasi
kebutuhan. Kerangka kerja yang baik untuk isi persyaratan
9.5. RINGKASAN 243
Dalam banyak kasus, menyelesaikan rekayasa persyaratan secara penuh sebelum desain dan
konstruksi
tion mulai tidak layak. Dalam proses pengembangan yang gesit, rekayasa persyaratan adalah
terkait dengan desain dan konstruksi.
Selama rekayasa persyaratan, kami memodelkan bagian dari realitas. Bagian dari
realitas yang kita minati disebut sebagai semesta wacana (UoD). Itu
proses pemodelan disebut pemodelan konseptual.
Orang yang terlibat dalam UoD memiliki model konseptual implisit dari UoD tersebut.
Selama pemodelan konseptual, model implisit diubah menjadi model eksplisit. Itu
model konseptual eksplisit digunakan untuk berkomunikasi dengan orang lain, seperti pengguna
dan desainer, dan untuk menilai validitas sistem yang sedang dikembangkan selama ini
fase selanjutnya. Selama proses pemodelan, analis dihadapkan pada dua hal
jenis masalah: masalah analisis dan masalah negosiasi. Masalah analisis
harus dilakukan dengan mendapatkan persyaratan yang benar. Masalah negosiasi muncul karena
orang berbeda yang terlibat mungkin memiliki pandangan berbeda tentang UoD yang akan dimodelkan,
kepentingan yang bertentangan, dan sebagainya.
Pendekatan yang ada untuk rekayasa persyaratan sebagian besar bersifat Taylorian.
Mereka sesuai dengan pandangan fungsional pengembangan perangkat lunak di mana persyaratannya
fase rekayasa berfungsi untuk memperoleh persyaratan pengguna 'nyata'. Hal ini semakin menjadi
mengakui bahwa pendekatan Taylorian tidak perlu menjadi pendekatan yang paling tepat
untuk rekayasa kebutuhan. Banyak UoD yang dipertimbangkan melibatkan orang-orang yang
model dunia tidak lengkap, tidak rasional, atau bertentangan dengan pandangan dunia orang lain.
Dalam kasus seperti itu, analis bukanlah pengamat luar yang pasif dari UoD, tetapi secara aktif
berpartisipasi dalam membentuk UoD. Analis terlibat dalam masalah negosiasi
dan harus memilih pandangan dari beberapa pihak yang terlibat, atau membantu mendapatkan
beberapa
kompromi.
Teknik deskripsi berikut sering digunakan untuk persyaratan yang ditentukan
kation:
– bahasa alami,
- gambar, dan
- bahasa formal.
244 TEKNIK PERSYARATAN
Latihan
4. Dalam arti apa sebagian besar teknik rekayasa persyaratan Taylorian masuk
alam?
14. Sebutkan dan diskusikan persyaratan kualitas utama untuk dokumen persyaratan.
15. Sebutkan dan diskusikan kelemahan utama penggunaan bahasa alami untuk
menentukan persyaratan.
16.�
9.6. BACAAN LEBIH LANJUT 247
26. �
10
Pemodelan
TUJUAN PEMBELAJARAN
�
249
Entitas adalah 'benda' yang dapat diidentifikasi secara unik. Entitas biasanya digambarkan
dalam ERD sebagai persegi panjang. Contoh entitas adalah:
– objek berwujud, seperti salinan buku, yang diidentifikasi dengan beberapa nomor;
– objek tidak berwujud, seperti buku yang diidentifikasi berdasarkan ISBN-nya,
atau anggota dari beberapa konstruksi organisasi, seperti pegawai perpustakaan
yang diidentifikasi berdasarkan nomor pegawainya.
Entitas memiliki sifat yang dikenal sebagai atribut. Misalnya, beberapa pegawai perpustakaan
mungkin memiliki nama 'Jones'. Di sini, 'Jones' adalah nilai atribut yang disebut 'nama'.
Atribut biasanya digambarkan sebagai lingkaran atau elips.
Baik entitas maupun nilai atribut memiliki a jenis. Sebagai pemodel, kita cenderung melihat sebuah
tipe
sebagai satu set properti yang dibagikan oleh instansnya. Sebagai pelaksana, kami cenderung melihat
tipe
sebagai seperangkat nilai dengan sejumlah operasi terkait. Untuk atribut 'nomor
buku pinjaman ', himpunan nilai bisa menjadi himpunan 0 .. 10 dengan operasi seperti itu
sebagai pertambahan dan pengurangan. Untuk 'salinan buku' jenis entitas, operasi kandidat
akan 'meminjam', 'mengembalikan', dan seterusnya.
Entitas terhubung melalui relasi. Misalnya, hubungan 'meminjam'
melibatkan entitas 'salinan buku' dan 'anggota perpustakaan'. Paling sering, suatu hubungan adalah
biner, yaitu menghubungkan dua entitas. Hubungan dilambangkan dengan berlian yang terkait dengan
entitas yang terlibat.
Entitas-model hubungan memberlakukan pembatasan pada kardinalitas hubungan.
Dalam bentuknya yang paling sederhana, hubungannya adalah 1--1, 1--N, atau N--M. Hubungan
'meminjam' adalah 1--N: salinan buku hanya dapat dipinjam oleh satu anggota, sedangkan a
anggota boleh meminjam lebih dari satu eksemplar buku. Dalam ERD, kardinalitas ini
kendala sering ditunjukkan dengan hiasan kecil panah yang menghubungkan entitas.
Contoh entitas--diagram hubungan diberikan pada gambar 10.2. Kardinalitas
kendala telah ditunjukkan dengan secara eksplisit menunjukkan serangkaian kemungkinan. Dengan
demikian,
252 PEMODELAN
ERD ini menyatakan bahwa satu salinan buku dapat dipinjam oleh paling banyak
satu anggota, dan seorang anggota dapat meminjam hingga 10 salinan buku.
Model hubungan entitas dapat diperoleh dengan menggunakan salah satu teknik
elisitasi yang telah dibahas sebelumnya. Secara khusus, analisis bentuk dan
analisis deskripsi bahasa alami sering digunakan. Karena ERM hanya menceritakan
sebagian dari cerita, teknik tambahan harus digunakan untuk memodelkan aspek
lain. Banyak teknik StructuredAnalysis, misalnya, menggabungkan ERM untuk
memodelkan aspek data. Pemodelan entitas-hubungan adalah hasil alami dari
pemodelan basis data. Awalnya, ERM dimaksudkan untuk memodelkan struktur
logis data, bukan struktur logis UoD. Dalam heuristik tentang cara mendapatkan
entitas--model hubungan yang 'baik', akar ini masih terlihat. Sebagai contoh,
beberapa heuristik menyerupai kendala normalisasi dari teori database. Ini mungkin
menjelaskan mengapa beberapa orang tidak memuji entitas - pemodelan hubungan
sebagai teknik spesifikasi persyaratan (lihat, misalnya (Davis, 1993)).
ERM masa kini memiliki banyak kesamaan dengan teknik analisis berorientasi
objek. Sebagai contoh, relasi subtipe-supertipe antara tipe entitas termasuk dalam
banyak teknik ERM. Sebaliknya, diagram kelas UML (lihat bagian 10.3.1) mencakup
banyak elemen dari ERM.
Entitas eksternal merupakan sumber atau tujuan transaksi. Entitas ini berada di
luar domain yang dipertimbangkan dalam diagram aliran data. Entitas eksternal
ditunjukkan sebagai kotak.
Proses mengubah data. Proses dilambangkan dengan lingkaran.
Arus data antara proses, entitas eksternal, dan penyimpanan data. Aliran data
ditunjukkan oleh panah. Aliran data adalah jalur yang dilalui oleh struktur data.
Penyimpanan data terletak di antara dua proses. Hal ini ditunjukkan dengan nama
penyimpan data di antara dua garis sejajar. Penyimpanan data adalah tempat di
mana struktur data disimpan hingga dibutuhkan.
Diagram aliran data dihasilkan dari proses dekomposisi top-down. Proses pada
level tertinggi hanya memiliki satu proses, yang menunjukkan 'sistem'. Selanjutnya,
diagram tingkat atas ini diuraikan lebih lanjut. Untuk contoh perpustakaan kami, ini
dapat mengarah ke diagram aliran data pada gambar 10.4. Permintaan klien
pertama kali dianalisis dalam proses berlabel 'pemrosesan awal'. Akibatnya, salah
satu 'meminjam judul' atau 'mengembalikan judul' diaktifkan. Kedua proses ini
memperbarui penyimpanan data berlabel 'administrasi katalog'. Permintaan klien
dicatat dalam 'file log' penyimpanan data. Penyimpanan data ini digunakan untuk
menghasilkan laporan manajemen.
Metode desain yang paling banyak digunakan bersama dengan diagram aliran
data dibahas di bagian 12.2.2. Di sana, kami juga akan memberikan lebih banyak
contoh diagram aliran data.
Kolaborator. Kartu CRC dikembangkan sebagai tanggapan atas kebutuhan untuk mendokumentasikan
keputusan desain kolaboratif. Kartu CRC sangat membantu di fase awal
pengembangan perangkat lunak, untuk membantu mengidentifikasi komponen, mendiskusikan masalah
desain di berbagai
tim disipliner, dan menentukan komponen secara informal. Kartu CRC dapat disebut
alat berteknologi rendah, berbeda dengan alat berteknologi tinggi yang biasa kita gunakan. Namun
mereka
sangat berguna. Mereka juga menyenangkan untuk diajak bekerja sama dalam pertemuan bisnis kami
yang terlalu serius.
Kartu CRC tidak hanya digunakan dalam sesi desain kolaboratif. Di dalam desain
komunitas pola, misalnya, mereka digunakan untuk mendokumentasikan elemen-elemen itu
berpartisipasi dalam pola
Kata ‘kelas’ dalam CRC merupakan peninggalan sejarah. Kartu CRC dapat digunakan untuk
menggambarkan
setiap elemen desain. Namun, kami akan tetap menggunakan terminologi aslinya. Kelas
nama muncul di sudut kiri atas kartu. Daftar tanggung jawab
256 PEMODELAN
muncul di bawah nama kelas dan daftar kolaborator muncul di bagian kanan kartu.
Gambar 10.5 memberikan contoh kartu CRC untuk sebuah komponen Reservasi
dalam sistem perpustakaan kami. Tanggung jawab utama komponen ini adalah
menjaga daftar reservasi terkini dan menangani reservasi berdasarkan FIFO.
Kolaboratornya adalah komponen katalog dan komponen sesi pengguna. Jenis
interaksi dengan komponen-komponen tersebut ditunjukkan pada gambar 10.16.
Dunia di sekitar kita penuh dengan benda, hidup dan mati, konkret dan
abstrak:pohon dan meja, mobil, dan kasus hukum. Menurut beberapa orang,
analisis dan desain adalah tentang memodelkan objek dunia nyata tersebut. Secara
umum, pandangan ini berasal dari sekolah desain bahasa pemrograman
Skandinavia (SIMULA-67) dan pengembangan perangkat lunak. Ini mungkin disebut
pandangan Eropa. Menurut yang lain, analisis dan desain adalah tentang
mengidentifikasi komponen yang dapat digunakan kembali dan membangun hierarki
warisannya. Pandangan yang terakhir ini, yang dapat disebut pandangan Amerika,
dengan jelas menunjukkan dirinya dalam kutipan di atas.
Lalu bagaimana adalah Sebuah Objek? Seperti yang mungkin diharapkan, ada
pandangan berbeda tentang apa yang dimaksud dengan gagasan objek. Kami
dapat membedakan sudut pandang berikut:
10.2. PADA BENDA DAN HAL-HAL TERKAIT 257
�
258 PEMODELAN
�
10.2. PADA BENDA DAN HAL-HAL TERKAIT 259
Hubungan Contoh
Jika kita memiliki objek Meja Dan Kursi, kita juga dapat mendefinisikan objek
yang lebih umumMebel. Meja Dan Kursi dikatakan spesialisasi dari Mebel, ketika
Mebeladalah generalisasi dari Meja Dan Kursi. Relasi ini juga dikenal sebagai relasi
'is-a'. Relasi is-a adalah konsep terkenal dari Entity--Relationship Modeling.
Hubungan generalisasi/spesialisasi dapat diekspresikan dalam struktur hirarkis
seperti pada gambar 10.7. Dalam bentuknya yang paling umum, struktur klasifikasi
adalah grafik asiklik terarah (DAG). Banyak struktur klasifikasi dapat digambarkan
sebagai pohon, dalam hal ini setiap objek adalah turunan langsung dari satu objek
lainnya. Pada tingkat bahasa pemrograman, pewarisan tunggal sesuai dengan
struktur pohon, sementara pewarisan berganda sesuai dengan DAG.
Objek yang berbeda mungkin memiliki beberapa atribut yang sama. Baik meja
maupun kursi memiliki ketinggian, misalnya. Daripada mendefinisikan set lengkap
atribut untuk setiap objek, kita dapat mendefinisikan atribut umum pada tingkat yang
lebih tinggi dalam hierarki objek dan membiarkan turunannya mewarisi atribut
tersebut. Karena itu kami dapat mendefinisikan atribut Tinggi pada tingkatan Mebel
bukan pada tingkat masing-masing keturunannya. Jelas, ini hanyalah cara lain untuk
melihat hierarki objek. Fakta bahwa Kursi DanMeja sama-sama keturunan Mebel
sudah menunjukkan bahwa mereka berbagi properti tertentu, properti yang umum
untuk berbagai jenis furnitur. Fakta bahwa mereka adalah keturunan yang berbeda
Mebel juga menunjukkan bahwa mereka masing-masing memiliki sifat unik.
Atau, kita dapat melihat hierarki objek sebagai a jenis hirarki. Kursi DanMeja
adalah subtipe dari Mebel, seperti Kardinal adalah subtipe dari Bilangan bulat.
Dalam pandangan ini, sebuah objek adalah batasan dari objek-objek yang menjadi
spesialisasinya. Setiap kursi adalah perabot, tetapi kebalikannya umumnya tidak
benar.
10.2. PADA BENDA DAN HAL-HAL TERKAIT 261
262 PEMODELAN
seperti Ukuran, sehingga Meja juga dapat dilihat sebagai agregat dari jenis pertama.
Secara umum, objek majemuk terdiri dari sejumlah (referensi ke) objek lain dan
sejumlah atribut 'sederhana', yaitu nilai.
Dalam kasus Meja, bagian-dari relasi adalah bagian-dari relasi dunia nyata.
Dalam kasus Publikasi, Penerbit tidak sesuai dengan beberapa bagian dari objek
dunia nyata yang mendasarinya. Ini hanyalah bagian dari perwakilan dari objek
PublikasiKadang-kadang, perbedaan eksplisit dibuat antara bagian dunia nyata dari
relasi dan bagian representasional dari (atau komponen dari) relasi. Di UML mereka
dipanggilkomposisi Dan pengumpulan, masing-masing.
Dalam banyak metode pemodelan, bagian dari relasi menggolongkan anggota
dari relasi. Relasi anggota digunakan untuk memodelkan hubungan antara suatu
himpunan dan anggotanya. Namun demikian, terkadang berguna untuk dapat
membedakan antara sifat-sifat organisasi ini. Misalnya, bagian-dari relasi umumnya
dianggap transitif, sedangkan anggota-dari relasi tidak. Jika Buku adalah anggota
dari Perpustakaan,Dan Perpustakaan adalah anggota dari Lembaga Publik, kami
tidak ingin menyimpulkan itu Bukuadalah anggota dari Lembaga Publik.
Diagram Keterangan
Mesin negara (D) Untuk memodelkan keadaan di mana suatu objek dapat
berada, dan
transisi antar negara. Lihat bagian 10.3.2
Waktu (D) Untuk memodelkan perubahan status objek dari waktu ke
waktu
Gunakan kasus (D) Untuk memodelkan kasus penggunaan. Lihat bagian 10.3.6
objek. Dengan mendekorasi ujung-ujungnya, banyak jenis hubungan yang bisa dimodelkan. Ini
hubungan jatuh ke dalam dua kelas: generalisasi Dan asosiasi.
Contoh paling umum dari diagram kelas tipe generalisasi adalah diagram
menggambarkan subclass--superclass hirarki. Gambar 10.7 adalah contoh kelas semacam itu
diagram. Kelas dilambangkan dengan persegi panjang yang memiliki tiga kompartemen. Ini
kompartemen berisi, dari atas ke bawah:
- nama kelas,
Publikasi
isbn: String
penerbit: String
arsip()
10.3. BAHASA PEMODELAN TERPADU 265
Itu atribut dari kelas menunjukkan properti dari kelas itu. Misalnya., penerbit adalah properti
dari Publikasi. Di samping atribut, UML memiliki cara lain untuk menunjukkan properti
sebuah kelas, mis. asosiasi. Asosiasi UML digambarkan sebagai garis padat yang menghubungkan dua
kelas. Baris ini dapat dihiasi dengan berbagai mesin terbang dan informasi tekstual
memberikan rincian lebih lanjut dari hubungan tersebut. Sebuah asosiasi sederhana antara
perpustakaan
dan kliennya digambarkan pada gambar 10.10a. Nama asosiasi (opsional) adalah
dicetak di dekat jalan. Segitiga padat menunjukkan arah di mana kata kerja berada
untuk dibaca. Perhatikan bahwa asosiasi bersifat dua arah: klien adalah anggota perpustakaan,
dan perpustakaan memiliki anggota. Perhiasan lebih lanjut dapat ditambahkan untuk menunjukkan
properti
asosiasi. Pada gambar 10.10a kami telah menambahkan informasi multiplisitas: seorang klien bisa
menjadi anggota dari satu atau lebih perpustakaan, sedangkan perpustakaan mungkin memiliki nol atau
lebih klien.
Sebenarnya, tidak ada perbedaan antara atribut dan asosiasi.
Pada gambar 10.10b, kami telah menggambarkan Klien sebagai atribut dari Perpustakaan. Biasanya,
sederhana
properti seperti angka dan tanggal dimodelkan sebagai atribut, sementara lebih signifikan
konsep dimodelkan sebagai asosiasi.
Asosiasi seperti Anggota dari juga memiliki properti kelas. Misalnya, ini
asosiasi memiliki atribut, mis. Tanda Anggota, dan operasi, seperti Menjadi Anggota
Dan Berhenti Menjadi Anggota. Sebagai alternatif, kita dapat mengatakan kelas itu Keanggotaan
memiliki
sifat asosiasi. Di UML, elemen model ini disebut kelas asosiasi. Dia
dapat digambarkan sebagai simbol kelas yang dilampirkan oleh garis putus-putus ke jalur asosiasi,
seperti pada gambar 10.10c. Kami bahkan dapat mempromosikan kelas asosiasi ke kelas penuh, seperti
di figuUML10.10d. Perhatikan bahwa multiplisitas telah berpindah. Keanggotaan (dari
klien) dapat ke satu atau lebih perpustakaan, sedangkan keanggotaan (perpustakaan)
berhubungan dengan nol atau lebih klien.
Bagian dari relasi disebut pengumpulan atau komposisi di UML. Secara ag-
ation, objek dapat menjadi bagian dari lebih dari satu objek lainnya. Misalnya, jika perpustakaan kita
memelihara daftar bacaan wajib untuk mata kuliah tertentu, maka buku yang diberikan mungkin a
bagian dari lebih dari satu daftar bacaan wajib. Agregasi dilambangkan dengan terbuka
mengajukan berlian sebagai perhiasan peran asosiasi. Komposisi adalah gagasan yang kuat tentang
agregasi, di mana objek bagian mungkin hanya dimiliki oleh satu objek utuh. Dengan
komposisi, bagian-bagian diharapkan hidup dan mati bersama keseluruhan. Jika meja adalah
terdiri dari empat kaki dan meja, meja memiliki bagian-bagian ini. Mereka tidak bisa menjadi bagian
dari meja lain pada waktu yang sama. Komposisi dilambangkan dengan intan berisi padat sebagai
perhiasan peran asosiasi, seperti pada gambar 10.11a. Gambar 10.11a menunjukkan a Buku dengan
bagian judul, pengarang, Dan isbn. Sebuah buku memiliki satu judul dan satu ISBN, jadi bagian-bagian
ini memiliki
multiplisitas 1. Kami berasumsi di sini bahwa sebuah buku dapat memiliki hingga tiga penulis, jadi bagian
itu
memiliki kelipatan 1..3. Di seluruh akhir komposisi, multiplisitasnya adalah 1
atau 0..1. Bagian dari hubungan ini adalah hubungan antara kelas dan kelas
atributnya. Oleh karena itu, notasi alternatif untuk bagian-hubungan ini terdiri dari
dua bagian atas diagram untuk kelas, seperti pada gambar 10.11b.
Di samping generalisasi dan asosiasi, ada banyak cara lain
elemen dari diagram kelas dapat saling bergantung satu sama lain. Misalnya, satu kelas mungkin
memanggil operasi dari kelas lain, membuat instance dari kelas lain, dan seterusnya. Seperti
266 PEMODELAN
A
A) d
a
l
a
h
-
a
n
g
B) g
o
t
a
-
d
a
r
i
C) 1
.
.
*
Perpustakaan
*
D) Klien
Perpustakaan
K
Adal
ah-a
nggo
ta-da
ri1..
*
Perpustakaan
*
10.3. BAHASA PEMODELAN TERPADU 267
Gambar 10.11 Diagram kelas UML: komposisi sebagai (a) hiasan peran asosiasi dan
(b) diagram kelas sederhana
Kelas abstrak Daftar mungkin memiliki operasi abstrak juga, seperti mendapatkan, yang dapat
hanya dibuat konkrit pada tingkat subkelas. Pada tingkatan Daftar, kita kemudian hanya
nyatakan bahwa setiap subkelasnya akan menyediakan implementasi dari mendapatkan. Di
perpustakaan kami
contoh, kita bisa ditunjuk Publikasi sebagai kelas abstrak. Kelas abstrak
ditunjukkan dengan mencetak nama mereka dalam huruf miring.
Sebuah antarmuka adalah kelas yang semua fiturnya abstrak. Itu tidak memiliki implementasi.
Antarmuka adalah sarana yang berguna untuk membagi himpunan properti kelas menjadi himpunan
bagian, di
kasus kelas lain hanya membutuhkan akses ke himpunan bagian dari properti tersebut. Misalnya, kelas
Publikasi mungkin memiliki properti yang dapat diakses oleh pelanggan perpustakaan, seperti
serta properti yang hanya untuk penggunaan internal, seperti harganya, siapa yang berwenang
akuisisi, dan sebagainya. Kami kemudian dapat mendefinisikan dua antarmuka untuk Publikasi itu
dibuat tersedia untuk berbagai kelas lain dalam sistem. Publikasi Kemudian menyediakan
antarmuka yang berbeda untuk kelas klien yang berbeda, yang pada gilirannya memerlukan antarmuka.
Antarmuka
ditandai dengan kata kunci �
268 PEMODELAN
Karyawan
Publikasi
Klien
Biasanya, model finite state machine dan diagram transisi keadaan terkaitnya (lihat
bagian 10.1.2) diperluas dalam beberapa cara saat digunakan dalam memodelkan
perilaku objek dari waktu ke waktu:
�
10.3. BAHASA PEMODELAN TERPADU 269
peristiwa memicu transisi. Saat seseorang menjadi anggota perpustakaan, ini
memicu transisi awal; ketika dia meminjam buku, itu memicu transisi dari
suatu keadaan, katakanlah, telah-meminjam-7-bukuke sebuah negara bagian
telah-meminjam-8-buku.Jika model memiliki variabel lokal, transisi keadaan
terakhir dapat mengakibatkan perubahan nilai variabel lokal tersebut. Pada
gambar 10.13, event input dinotasikan sebagai string yang melabeli transisi
state (seperti Awal Dan Meminjam).
Metode pemodelan yang berbeda memiliki cara yang berbeda untuk
menangani tindakan keluaran. Terkadang, tindakan keluaran dikaitkan dengan
transisi (ini dikenal sebagai mesin Mealy), terkadang tindakan keluaran
dikaitkan dengan keadaan (mesin Moore). Dalam kasus terakhir, aksi output
dilakukan segera setelah state dimasukkan. Secara formal, mesin Mealy dan
mesin Moore memiliki kekuatan ekspresif yang sama.
�
270 PEMODELAN
270
Seperti halnya diagram kelas, UML memiliki notasi yang kaya untuk diagram keadaan.
Kami akan mengilustrasikan bahan utama melalui beberapa contoh; lihat juga gambar 10.13
dan 10.14.
Keadaan adalah beberapa kondisi dalam kehidupan suatu objek. Itu ditampilkan sebagai
persegi panjang dengan sudut membulat. Keadaan awal (pseudo) ditampilkan sebagai
lingkaran kecil berisi. Kondisi awal ini hanyalah perangkat notasi; objek tidak bisa dalam
keadaan seperti itu. Ini menunjukkan transisi ke keadaan 'nyata' pertama. Keadaan akhir
(pseudo) ditampilkan sebagai lingkaran kecil yang mengelilingi lingkaran kecil berisi. Keadaan
akhir ini juga merupakan perangkat notasi. Transisi ditunjukkan sebagai panah padat dari satu
keadaan ke keadaan lainnya. Ketika perubahan keadaan terjadi, transisi itu dikatakan 'api'.
Transisi memiliki label yang terdiri dari tiga bagian. Bentuk umumnya adalah trigger-signature
[penjaga]/aktivitas. Ketiga bagian itu opsional. Tanda tangan pemicu menunjukkan peristiwa
yang memicu transaksi, seperti peminjaman buku. Acara tersebut mungkin dijaga oleh ekspresi
Boolean. Misalnya, transisi dari keadaan adalah anggota ke membersihkan pada gambar 10.13
dijaga oleh ekspresi
' N
10.3. BAHASA PEMODELAN TERPADU 271
Gambar 10.14 UML state diagram: object Buku, (a) tampilan global dan (b) diperluas
melihat
1: l naik
juga
2: ya
3: [
jud
ul
6: b
6: r
10.3. BAHASA PEMODELAN TERPADU 273
dari luar, sumber yang tidak diketahui. Pesan ini disebut dengan menemukan pesan. Itu
pengguna kemudian mengirimkan permintaan ke katalog untuk mencari judul tertentu. Katalog bereaksi
dengan mengirimkan data tentang judul itu ke pengguna. Jika judul tidak tersedia (ini ditunjukkan
oleh ekspresi boolean, penjaga, di dalam tanda kurung siku), permintaan untuk mencadangkannya
judul dikirim ke objek yang menangani reservasi. Beberapa waktu kemudian, judul itu akan
menjadi tersedia lagi dan reservasi akan diberitahu. Objek reservasi
kemudian akan mengirim pesan ke katalog untuk menyimpan buku itu dan akan memberi tahu pengguna
bahwa judulnya sekarang tersedia. Urutan kedua pesan itu tidak relevan, jadi
mereka membawa nomor urut yang sama. Pengguna sekarang dapat meminjam judul dan
reservasi terkait akan dihapus.
Sekali lagi, UML memiliki kosa kata notasi yang kaya untuk diagram urutan. Itu mungkin
untuk membedakan pengiriman pesan asinkron dari pengiriman pesan sinkron, ke
menunjukkan iterasi, untuk menunjukkan pembuatan dan penghancuran objek, dan seterusnya. Itu
Namun tujuan utama dari sequence diagram tetap sama: mudah dibaca
ikhtisar penyampaian pesan dalam urutan interaksi tertentu.
awal
6: hapus res
6:
meminjam
judul
274 PEMODELAN
Gambar 10.16 menunjukkan urutan interaksi yang sama dengan skenario yang
digambarkan pada sequence diagram pada gambar 10.15. Diagram komunikasi
menekankan objek dan hubungannya yang relevan dengan interaksi tertentu. Untuk
memberikan detail lebih lanjut tentang interaksi, atribut yang relevan dapat
ditampilkan di dalam node (dengan menambahkan kompartemen lain seperti dalam
diagram kelas) dan atribut ini dapat dimasukkan ke dalam label tepi juga.
Sequence diagram menekankan urutan pesan. Dalam diagram urutan, nomor
urut bersifat opsional; dalam diagram komunikasi, mereka wajibkarena pemesanan
tidak menunjukkan dirinya secara grafis.
10.4 Ringkasan
Selama persyaratan rekayasa dan desain, berbagai notasi pemodelan sedang
diterapkan. Sebagian besar menggunakan semacam diagram kotak dan garis.
Notasi pemodelan arus utama hari ini berasal dari UML --- Bahasa Pemodelan
Terpadu. Banyak diagram UML pada gilirannya didasarkan pada atau berasal dari
jenis diagram sebelumnya. Dalam bab ini, kita membahas pilihan notasi pemodelan
klasik serta jenis diagram UML utama.
Notasi pemodelan klasik yang dibahas adalah:
�
10.5. BACAAN LEBIH LANJUT 277
7. Untuk apa kartu CRC dan skenario kasus penggunaan digunakan dalam berorientasi objek
analisis dan desain?
8. Dalam hal apa diagram status UML berbeda dari transisi status
diagram?
9.~
11
TUJUAN PEMBELAJARAN
�
279
Arsitektur perangkat lunak menyangkut struktur berskala besar dari sistem perangkat
lunak.
Struktur skala besar ini mencerminkan keputusan desain awal yang penting. Ini
proses keputusan melibatkan negosiasi dan keseimbangan fungsional dan kualitas
persyaratan di satu sisi, dan kemungkinan solusi di sisi lain. Perangkat lunak
arsitektur bukanlah fase yang secara ketat mengikuti rekayasa persyaratan, tetapi
keduanya terjalin. Dalam bab ini, kita membahas bagaimana merancang,
mendokumentasikan
dan mengevaluasi arsitektur perangkat lunak.
Desain yang baik adalah kunci dari produk yang sukses. Hampir 2000 tahun yang lalu,
Arsitek Romawi Vitruvius mencatat apa yang membuat sebuah desain bagus: daya tahan (ketegasan),
kegunaan (utilitas), dan pesona (kecantikan). Persyaratan kualitas ini masih berlaku, untuk
bangunan serta sistem perangkat lunak. Sistem yang dirancang dengan baik mudah diimplementasikan
dimengerti dan dapat diandalkan, dan memungkinkan untuk kelancaran evolusi. Sistem yang dirancang
dengan buruk
mungkin berhasil pada awalnya, tetapi sulit dipertahankan, sulit diuji, dan tidak dapat diandalkan.
Selama fase desain, sistem didekomposisi menjadi sejumlah interaksi
komponen. Dekomposisi tingkat atas dari suatu sistem menjadi komponen-komponen utama
bersama dengan karakterisasi tentang bagaimana komponen ini berinteraksi, disebut its
arsitektur perangkat lunak. Dilihat dengan cara ini, arsitektur perangkat lunak identik dengan
desain global. Namun, ada lebih banyak arsitektur perangkat lunak daripada sekadar global
desain.
Arsitektur perangkat lunak melayani tiga tujuan utama:
�
280 ARSITEKTUR PERANGKAT LUNAK
�
281
Desain tradisional melihat ke dalam: diberi serangkaian persyaratan, bagaimana kita bisa
menghasilkan sistem yang memenuhi persyaratan tersebut. Arsitektur perangkat lunak memiliki tampilan
luar
fokus juga: memperhitungkan bagaimana sistem cocok dengan lingkungannya. Perangkat lunak
arsitek termasuk negosiasi dan keseimbangan persyaratan fungsional dan kualitas
di satu sisi, dan kemungkinan solusi di sisi lain. Ini dijabarkan lebih lanjut
di bagian 11.1. Persyaratan penyeimbang juga mengharuskan perangkat lunak kandidat
arsitektur dinilai. Ini adalah bentuk pengujian, dibahas di bagian 11.5.
Salah satu definisi awal arsitektur perangkat lunak adalah (Shaw et al., 1995):
Arsitektur
perjanjian
perjanjian
perkembangan
perkembangan)
(A) (B)
Gambar 11.1 Siklus hidup perangkat lunak tanpa (a) dan dengan (b) perhatian eksplisit terhadap
perangkat lunak
Arsitektur
konteks
perpaduan
286 ARSITEKTUR PERANGKAT LUNAK
Elemen Keterangan
Masalah Masalah desain sedang ditangani oleh keputusan
Keputusan ini
Status Keputusan diambil
Status keputusan, mis. tertunda, disetujui
Asumsi
Asumsi yang mendasari tentang lingkungan
Alternatif dimana keputusan diambil
Alasan Alternatif dipertimbangkan untuk keputusan ini
Implikasi Penjelasan mengapa keputusan itu dipilih
Implikasi dari keputusan ini, seperti kebutuhan
Catatan akan
keputusan atau persyaratan lebih lanjut
Setiap informasi tambahan yang mungkin
diinginkan
menangkap
menyukai. Hubungan antara keputusan desain ini menyerupai jenis hubungan yang
mungkin ada antara persyaratan, seperti yang dibahas di bagian 9.1.3. Demikian
pula, notasi dan alat yang digunakan untuk menangkap informasi ini juga sangat
mirip. Cara sederhana untuk menyusun keputusan desain secara hierarkis adalah
dalam bentuk pohon keputusan. Contoh di sini diberikan pada gambar 11.5.
Elemen Ket
Masalah era
ng
an
Keputusan Sistem harus terstruktur sedemikian rupa
sehingga dapat dipertahankan, dapat
digunakan kembali, dan kuat.
Status Arsitektur 3-tier, terdiri dari lapisan
presentasi, lapisan logika bisnis, dan
lapisan manajemen data.
Asumsi
Disetujui.
Sistem tidak memiliki persyaratan hard
Alternatif real-time Alternatifnya adalah Arsitektur
Berorientasi Layanan (SOA), atau jenis
arsitektur X-tier yang berbeda (misalnya
Alasan satu dengan klien gemuk termasuk
presentasi dan logika bisnis, dan tingkat
manajemen data). Pemeliharaan adalah
Implikasi didukung dan ekstensi mudah
direalisasikan karena sambungan
longgar antar lapisan. Lapisan presentasi
Catatan dan lapisan manajemen data dapat
digunakan kembali seperti pada aplikasi
lain. Kekokohan didukung karena lapisan
yang berbeda dapat dengan mudah
dipisahkan pada media yang berbeda,
dan antarmuka lapisan yang terdefinisi
dengan baik memungkinkan pengujian
yang lebih lancar.
Performa terhambat karena semua
lapisan harus dilalui untuk sebagian
besar tindakan pengguna.
Tidak ada.
Standar IEEE 1471 (IEEE, 2000) memberikan struktur umum untuk representasi
arsitektur perangkat lunak. Elemen utama dari standar ini adalah:
�
11.3. TAMPILAN ARSITEKTUR 289
3 tingkat
pengamat
290 ARSITEKTUR PERANGKAT LUNAK
Berlapis. Sudut pandang berlapis adalah kasus khusus dari sudut pandang
penggunaan. Ini berguna jika kita ingin melihat sistem sebagai rangkaian
lapisan, dimana elemen dari lapisan N
11.3. TAMPILAN ARSITEKTUR 291
Data bersama Sudut pandang ini menunjukkan bagaimana data yang persisten
diproduksi, disimpan, dan dikonsumsi. Ini sangat berguna jika sistem berpusat
pada manipulasi data dalam jumlah besar. Ini dapat digunakan untuk menilai
kualitas seperti kinerja dan integritas data.
Server klien Untuk menggambarkan sistem yang terdiri dari klien dan server
yang bekerja sama. Penghubungnya adalah protokol dan pesan yang
dipertukarkan oleh klien dan server. Sudut pandang ini mengungkapkan
pemisahan perhatian dan distribusi fisik elemen pemrosesan.
Penerapan Sudut pandang ini menunjukkan bagaimana perangkat lunak dipetakan ke file
struktur. Ini digunakan dalam pengelolaan kegiatan pengembangan dan untuk membangun
proses.
Server
logika bisnis
pengelola data
basis data
1Pandangan bisnis ini dibuat oleh Cuno de Boer, Raymond Backus, Yoeri op ’t Roodt dan ReinierL’ab´ee,
mahasiswa kursus Arsitektur Perangkat Lunak tahun 2005 saya.
11.4. GAYA ARSITEKTUR 2
9
3
Peramal
risiko: ++
waktu ke pasar: +
biaya: --
Penyimpanan
Mengajuka MySQL
n risiko: ++
mempertaruhkan: -- waktu ke pasar: +
waktu ke pasar: o biaya:++
biaya: +
MVC
risiko: ++
waktu ke pasar: +
Tingkat X tidak berlapis biaya: + Lapisan
mempertaruhkan: - mempertaruhkan: --
waktu ke pasar: - waktu ke pasar: +
biaya: - biaya: +
Pola Aleksandria bukanlah buku masak, resep kotak hitam untuk arsitek, lebih dari
kamus adalah alat untuk seorang novelis. Sebaliknya, sebuah pola adalah skema
generik yang fleksibel yang memberikan solusi untuk suatu masalah dalam konteks
tertentu. Dalam bentuk naratif, aplikasinya terlihat seperti ini:
di dalamnya
11.4. GAYA ARSITEKTUR 297
Jenis Keterangan
Gambar 11.11 Beberapa tipe komponen (Sumber: M. Shaw & D. Garlan, Arsitektur
Perangkat Lunak: Perspektif tentang Disiplin yang Muncul, halaman 149, 1996,
Dicetak ulang atas izin Prentice-Hall)
pola. Kami akan menggunakan kerangka kerja ini untuk menggambarkan sejumlah yang terkenal dan
klasik
gaya arsitektur. Kerangka memiliki entri berikut:
�
298 ARSITEKTUR PERANGKAT LUNAK
blok arsitektur perangkat lunak. Mereka biasanya mewujudkan semacam
elemen komputasi (seperti prosedur), tetapi komponen juga bisa menjadi
penyimpanan data (seperti database). Konektor menjelaskan bagaimana
komponen berinteraksi.3
Beberapa tipikal tipe komponen dan konektor diberikan pada gambar 11.11
dan 11.12.
Urutan eksekusi komponen diatur oleh struktur kontrol. Struktur kontrol
menangkap bagaimana kontrol ditransfer selama eksekusi.
Pilihan komponen dan konektor tidak independen. Biasanya, gaya dicirikan
oleh kombinasi jenis komponen dan konektor tertentu, serta struktur kontrol
tertentu. Itu model sistem menangkap intuisi di balik kombinasi semacam itu.
Ini menggambarkan rasa umum dari sistem.
�
11.4. GAYA ARSITEKTUR 299
Jenis Keterangan
Masalah Sistem dapat digambarkan sebagai hirarki definisi prosedur. Gaya ini
merupakan hasil alami dari dekomposisi fungsional suatu sistem (lihat bab 12).
Modul tingkat atas bertindak sebagai program utama. Tugas utamanya adalah
memanggil modul lain dalam urutan yang benar. Akibatnya, biasanya hanya ada
satu rangkaian kendali.
Konteks Gaya ini secara alami cocok dengan bahasa pemrograman yang
memungkinkan untuk bersarang definisi prosedur dan modul.
Larutan
Model sistem Prosedur dan modul didefinisikan dalam hierarki. Modul tingkat yang lebih tinggi
memanggil modul tingkat yang lebih rendah. Hirarki mungkin ketat, di
modul kasus
N
mana di
tingkat
11.4. GAYA ARSITEKTUR 301
Larutan
Varian Metode atau bahasa yang tidak berorientasi objek hanya memungkinkan kita
untuk menyembunyikan representasi data dalam modul. Metode atau bahasa
berorientasi objek berbeda dalam hal fasilitasnya untuk menghubungkan objek
serupa (pewarisan tunggal atau ganda) dan pengikatan pesan ke operasi (waktu
kompilasi atau waktu proses); lihat juga bab 12.
Contoh (Parnas, 1972); Booch (1994) memberikan sejumlah contoh yang berhasil.
Gambar 11.14 Gaya arsitektur tipe data abstrak (Sumber: M. Shaw, Beberapa Pola
untuk Arsitektur Perangkat Lunak, di dalam J.M. Vlissides et al., Pola Bahasa
Desain Program 2,Direproduksi atas izin Addison-Wesley.)
buat struktur data perantara ini. Sebaliknya, kita dapat menggunakan mode operasi
pipa-dan-filter yang terkenal dari UNIX dan secara langsung mengumpankan output
dari satu transformasi ke transformasi berikutnya. Komponen disebut filter dan
konektor FIFO disebut pipa. Karakteristik penting dari skema ini adalah bahwa
setiap struktur yang dikenakan pada data yang akan diteruskan antara filter yang
berdekatan harus secara eksplisit
302 ARSITEKTUR PERANGKAT LUNAK
Larutan
Varian Ada dua kategori utama sistem yang mengeksploitasi pemanggilan implisit.
Kategori pertama terdiri dari apa yang disebut kerangka integrasi alat seperti yang
dicontohkan oleh banyak lingkungan pendukung pengembangan perangkat lunak.
Mereka terdiri dari sejumlah 'alat' yang berjalan sebagai proses terpisah. Acara
ditangani oleh proses operator terpisah yang menggunakan beberapa dukungan
sistem operasi dasar seperti soket UNIX; lihat misalnya (Reiss, 1990). Kategori
kedua terdiri dari bahasa dengan notasi khusus dan dukungan untuk pemanggilan
implisit, seperti fitur 'saat diperbarui' dari beberapa bahasa berorientasi objek; lihat
misalnya (Sutton et al., 1990).
Gambar 11.15 Gaya arsitektur implisit-doa (Sumber: M. Shaw, Beberapa Pola untuk
Arsitektur Perangkat Lunak, di dalam J.M. Vlissides et al., Pola Bahasa Desain
Program 2,Direproduksi atas izin Addison-Wesley.)
11.4. GAYA ARSITEKTUR 303
Larutan
Model sistem Sistem yang dihasilkan dicirikan oleh aliran data berkelanjutan
antar komponen, di mana komponen secara bertahap mengubah aliran data.
Komponen Komponennya adalah filter yang melakukan pemrosesan lokal;
yaitu mereka membaca sebagian dari data input mereka, mengubah data, dan
menghasilkan sebagian dari output mereka. Mereka memiliki sedikit keadaan
internal.
Konektor Datastreams (biasanya ASCII biasa, seperti di UNIX).
Struktur kontrol Aliran data antar komponen. Setiap komponen biasanya
memiliki alur kontrolnya sendiri.
Varian Filter murni memiliki sedikit keadaan internal dan memproses inputnya
secara lokal. Dalam kasus degenerasi, mereka mengkonsumsi semua masukan
mereka sebelum menghasilkan keluaran apa pun. Dalam hal ini, hasilnya bermuara
pada jenis sistem pemrosesan batch.
dikodekan dalam aliran data yang menghubungkan filter ini. Skema pengkodean ini
melibatkan keputusan yang banyak diketahui oleh kedua filter. Data harus diurai
oleh onefilter sedangkan filter berikutnya harus mengurai inputnya untuk
membangun kembali struktur itu. Tumit Achilles dari skema pipa-dan-penyaringan
adalah penanganan kesalahan. Jika satu filter mendeteksi kesalahan, akan sulit
untuk meneruskan pesan kesalahan yang dihasilkan melalui filter perantara sampai
ke hasil akhir. Filter juga harus dapat mensinkronisasi ulang setelah kesalahan
terdeteksi dan filter lebih jauh ke hilir harus dapat menoleransi
304 ARSITEKTUR PERANGKAT LUNAK
Gaya: Gudang
Konteks Gaya ini seringkali membutuhkan dukungan yang cukup besar, dalam
bentuk sistem runtime yang ditambah dengan database. Definisi data mungkin
harus diproses untuk menghasilkan dukungan untuk mempertahankan struktur data
yang benar.
Larutan
Varian Sistem basis data tradisional dicirikan oleh sifatnya yang berorientasi pada
transaksi. Proses komputasi independen dan dipicu oleh permintaan yang masuk.
Kompiler modern, dan lingkungan pendukung pengembangan perangkat lunak,
adalah sistem yang menambah informasi yang terkandung dalam repositori. Sistem
papan tulis berasal dari AI. Mereka telah digunakan untuk aplikasi yang kompleks
seperti pengenalan ucapan, di mana elemen komputasi yang berbeda
masing-masing memecahkan sebagian dari masalah dan memperbarui informasi di
papan tulis.
Gambar 11.17 Gaya arsitektur repositori (Sumber: M. Shaw, Beberapa Pola untuk
Arsitektur Perangkat Lunak, di dalam J.M. Vlissides et al., Pola Bahasa Desain
Program 2, Direproduksi atas izin Addison-Wesley.)
11.4. GAYA ARSITEKTUR 305
Gaya: Berlapis
Masalah Kami dapat mengidentifikasi kelas layanan yang berbeda yang dapat
diatur secara hierarkis. Sistem dapat digambarkan sebagai rangkaian lingkaran
konsentris, dimana layanan dalam satu lapisan bergantung pada (panggilan)
layanan dari lapisan dalam. Cukup sering, sistem seperti itu dibagi menjadi tiga
lapisan: satu untuk layanan dasar, satu untuk utilitas umum, dan satu lagi untuk
utilitas khusus aplikasi.
Larutan
Model sistem Sistem yang dihasilkan terdiri dari hierarki lapisan. Biasanya,
visibilitas lapisan dalam dibatasi.
Komponen Komponen-komponen pada setiap layer biasanya terdiri dari
kumpulan-kumpulan dari
Prosedur.
Konektor Komponen umumnya berinteraksi melalui pemanggilan prosedur. Karena
dari visibilitas terbatas, interaksi terbatas.
Struktur kontrol Sistem ini memiliki satu utas kontrol.
Varian Lapisan dapat dilihat sebagai mesin virtual, menawarkan satu set 'instruksi'
ke lapisan berikutnya. Dilihat demikian, lapisan periferal menjadi semakin abstrak.
Lapisan juga dapat dihasilkan dari keinginan untuk memisahkan fungsionalitas, mis.
menjadi lapisan antarmuka pengguna dan lapisan logika aplikasi. Varian skema
berlapis mungkin berbeda dalam hal visibilitas komponen ke lapisan luar. Dalam
kasus yang paling terbatas, visibilitas terbatas pada lapisan berikutnya.
Contoh (van der Linden dan M¨uller, 1995), (Ho dan Olsson, 1996), (Bohrer et al.,
1998).
di samping ketika pernyataan dan panggilan prosedur. Jika visibilitas dibatasi, kita mungkin berakhir
up menyalin fungsionalitas ke tingkat yang lebih tinggi tanpa meningkatkan tingkat abstraksi.
van der Linden dan M¨uller (1995) memberikan contoh gaya arsitektur berlapis
untuk digunakan dalam telekomunikasi. Dalam contoh ini, lapisan tidak sesuai dengan yang berbeda
tingkat abstraksi. Sebaliknya, fungsionalitas sistem telah dipisahkan. Dua
pedoman utama mengarahkan penugasan fungsionalitas ke lapisan dalam arsitektur ini:
– fungsionalitas yang bergantung pada perangkat keras harus ditempatkan di lapisan tingkat
yang lebih rendah daripada
fungsionalitas yang bergantung pada aplikasi.
Terjemahkan ke
properti kualitas
Gambar 11.19 Hubungan antara penilaian arsitektur perangkat lunak dan perilaku
sistem aktual
Ada dua kelas teknik yang luas untuk mengevaluasi arsitektur perangkat lunak.
Kelas pertama terdiri dari teknik pengukuran, dan bergantung pada informasi
kuantitatif. Contohnya termasuk metrik arsitektur dan simulasi. Kelas kedua terdiri
dari teknik bertanya, di mana seseorang menyelidiki bagaimana arsitektur bereaksi
11.5. PENILAIAN ARSITEKTUR PERANGKAT 309
LUNAK
situasi tertentu. Ini sering dilakukan dengan bantuan skenario. Di sekuelnya, kita
berkonsentrasi pada yang terakhir.
Ada berbagai jenis skenario yang dapat digunakan dalam penilaian arsitektur.
Jenis umum adalah:
�
310 ARSITEKTUR PERANGKAT LUNAK
Waktu merespon
Pertunjukan
Hasil 100
transaksi/deti
k
Pelatihan
Kegunaan Kegunaan
Operasi normal
S
Simpul daun pada gambar 11.21 dicetak miring. Deskripsi ini tidak lengkap.
Representasi penuh harus mengandung lebih banyak informasi, misalnya jenis
informasi yang terkandung dalam skenario atribut kualitas (lihat bagian 6.3).
Pohon utilitas lengkap mungkin berisi lebih banyak skenario daripada yang
dapat dianalisis selama penilaian. Ini kemudian berguna untuk memprioritaskan
skenario. ATAM menyarankan dua kriteria untuk melakukannya. Dengan
menggunakan kriteria pertama, pemangku kepentingan menunjukkan seberapa
penting skenario tersebut (misalnya menggunakan skala 3 poin sederhana: Tinggi,
Sedang, Rendah). Dengan menggunakan kriteria kedua, arsitek mengurutkan
skenario berdasarkan seberapa sulit dia percaya akan memenuhi skenario tersebut,
dengan menggunakan skala 3 poin yang sama. Di sisa penilaian, seseorang dapat
misalnya berkonsentrasi pada skenario yang mendapat skor Tinggi pada kedua
skala.
Pada langkah 6, skenario dibahas satu per satu. Untuk setiap skenario, arsitek
memandu pemangku kepentingan melalui arsitektur, menjelaskan bagaimana
arsitektur mendukung skenario tersebut. Ini dapat memicu diskusi lebih lanjut
tentang pendekatan arsitektur yang dipilih. Hasil akhirnya adalah daftar poin
sensitivitas yang terdokumentasi, tradeoff
11.6. RINGKASAN 311
poin, risiko dan nonrisiko, yang berkaitan dengan keputusan arsitektural yang dibuat dengan yang
relevan
atribut kualitas.
A titik kepekaan adalah properti dari arsitektur yang sangat penting untuk tertentu
atribut kualitas. Misalnya, kemungkinan untuk membatalkan tindakan pengguna sangat mempengaruhi
kegunaan sistem perpustakaan kami, dan oleh karena itu properti ini merupakan titik sensitif
sehubungan dengan kegunaan. Pada saat yang sama, keputusan ini juga merupakan titik sensitif
sehubungan dengan kinerja. Jika keputusan adalah titik sensitivitas untuk lebih dari satu
atribut kualitas, hal itu disebut a titik pertukaran. Jika kinerja adalah yang paling penting, maka
keputusan untuk memasukkan fasilitas undo mungkin a mempertaruhkan. Jika keputusan ini tidak kritis,
itu adalah a
tidak berisiko.
Pohon utilitas didasarkan pada driver utama yang digunakan selama desain
Arsitektur. Pembangunannya dilakukan dengan berkonsultasi dengan para pengambil keputusan utama.
Ada pemangku kepentingan lain, seperti manajer pemeliharaan atau pakar keamanan, yang
juga dapat disurvei untuk skenario tambahan. Ini dilakukan pada langkah 7. Dan mirip dengan langkah
5, skenario ini diprioritaskan, dan seleksi dibuat untuk studi lebih lanjut. Serupa
ke langkah 6, skenario tambahan ini dianalisis pada langkah 8. Terakhir, dikumpulkan
informasi dirangkum dan disajikan kepada semua pemangku kepentingan pada langkah 9.
Hasil penilaian arsitektur jauh melampaui daftar sensitivitas
poin, poin tradeoff, risiko dan nonrisiko. Para pemangku kepentingan, termasuk arsitek,
sering membangun pemahaman yang jauh lebih dalam tentang arsitektur, yang mendasarinya
keputusan, dan konsekuensinya. Juga, dokumentasi yang lebih baik seringkali
disampaikan sebagai produk sampingan dari penilaian. Ini mirip dengan manfaat tambahan
inspeksi dan penelusuran perangkat lunak memiliki selain identifikasi perangkat lunak
kesalahan (lihat bagian 13.4.2).
Dalam praktiknya, organisasi sering melakukan penilaian arsitektur perangkat lunak dalam waktu
yang lebih singkat
rasa kaku dari yang disarankan oleh deskripsi ATAM di atas. Biasanya, seperti kafetaria
pendekatan diikuti, dimana elemen-elemen dari ATAM dan metode serupa
dipilih yang paling sesuai dengan situasi yang dihadapi (Kazman et al., 2006).
11.6 Ringkasan
Arsitektur perangkat lunak berkaitan dengan deskripsi elemen dari mana
sistem dibangun, interaksi di antara elemen-elemen tersebut, pola yang memandu mereka
komposisi, dan kendala pada pola tersebut. Desain arsitektur perangkat lunak
didorong oleh masalah kualitas. Arsitektur perangkat lunak yang dihasilkan dijelaskan dalam
pandangan yang berbeda, yang masing-masing membahas masalah khusus atas nama tertentu
pemangku kepentingan. Ini menyerupai cara gambar bangunan yang berbeda ditekankan
aspek yang berbeda atas nama pemangku kepentingan yang berbeda.
Penting untuk tidak hanya mendokumentasikan solusi yang dihasilkan, tetapi juga keputusannya
yang mengarah ke solusi itu, alasannya, dan informasi lain yang berguna untuk memandu
evolusi selanjutnya.
Arsitektur perangkat lunak adalah gagasan penting, karena lebih dari satu alasan:
312 ARSITEKTUR PERANGKAT LUNAK
�
11.7. BACAAN LEBIH LANJUT 313
Latihan
2. Apa perbedaan antara arsitektur perangkat lunak dan desain tingkat atas?
10. Jelaskan dengan kata-kata Anda sendiri inti dari arsitektur pemanggilan implisit
gaya tural.
11. Dalam arti apa gaya arsitektur tipe data abstrak membatasi
perancang?
314 ARSITEKTUR PERANGKAT LUNAK
12. Mengapa penanganan kesalahan sulit dalam gaya arsitektur pipa dan filter?
15. Tentukan jenis konektor berikut: aliran data, pengiriman pesan, bersama
data.
16. Dalam arti apa lapisan dalam arsitektur berlapis dapat dilihat sebagai virtual
mesin?
19. �
12
TUJUAN PEMBELAJARAN
�
316 DESAIN PERANGKAT LUNAK
– abstraksi,
– modularitas,
- menyembunyikan informasi,
- kompleksitas, dan
– struktur sistem.
Untuk sistem berorientasi objek, serangkaian heuristik kualitas dan metrik terkait
telah ditentukan. Metrik berorientasi objek utama dibahas di bagian 12.1.6.
12.1.1 Abstraksi
Abstraksi berarti kita berkonsentrasi pada fitur-fitur esensial dan mengabaikan,
abstractfrom, detail yang tidak relevan dengan level yang sedang kami kerjakan.
Pertimbangkan, misalnya, modul pengurutan tipikal. Dari luar kita tidak bisa (dan
tidak perlu bisa) membedakan dengan tepat bagaimana proses penyortiran
berlangsung. Kita hanya perlu mengetahui bahwa output memang disortir. Pada
tahap selanjutnya, ketika rincian modul pengurutan sudah diputuskan, maka kita
dapat memeras otak tentang algoritma pengurutan yang paling cocok.
1Jelas, fitur desain yang lebih penting adalah bahwa sistem yang sesuai harus melakukan tugas yang
diperlukan dengan cara yang ditentukan. Untuk tujuan ini, desain harus divalidasi terhadap persyaratan.
12.1. PERTIMBANGAN DESAIN 321
Kompleksitas sebagian besar masalah perangkat lunak membuat penerapan abstraksi menjadi sulit
kebutuhan. Dalam diskusi selanjutnya, kami membedakan dua jenis abstraksi: prosedural
abstraksi Dan abstraksi data.
Gagasan abstraksi prosedural cukup tradisional. Sebuah bahasa pemrograman
gauge menawarkan if-constructs, loop-constructs, pernyataan penugasan, dan sejenisnya. Itu
transisi dari masalah yang harus dipecahkan ke konstruksi bahasa primitif ini adalah a
besar dalam banyak kasus. Untuk tujuan ini masalah pertama-tama didekomposisi menjadi submasalah,
yang masing-masing ditangani secara bergiliran. Submasalah ini sesuai dengan tugas utama untuk
dicapai. Mereka dapat dikenali dari deskripsi mereka di mana beberapa kata kerja
memainkan peran sentral (misalnya: membaca masukan, menyortir semua catatan, proses pengguna
berikutnya
meminta, menghitung gaji bersih). Jika perlu, submasalah didekomposisi lebih lanjut menjadi
submasalah yang lebih sederhana. Akhirnya kita sampai pada submasalah yang standarnya
solusi tersedia. Jenis dekomposisi (dari atas ke bawah) ini adalah inti dari
gaya arsitektur main-program-with-subroutines.
Hasil dari jenis dekomposisi bertahap ini adalah struktur hierarkis. Itu
node atas struktur menunjukkan masalah yang harus dipecahkan. Tingkat selanjutnya menunjukkannya
dekomposisi pertama menjadi submasalah. Daun menunjukkan masalah primitif. Ini
digambarkan secara skematis pada gambar 12.1.
Konsep prosedur memberi kita notasi untuk submasalah yang dihasilkan dari
proses dekomposisi ini. Penerapan konsep ini dikenal sebagai prosedural
abstraksi. Dengan abstraksi prosedural, nama prosedur (atau metode, dalam
bahasa berorientasi objek) digunakan untuk menunjukkan urutan tindakan yang sesuai.
Ketika nama itu digunakan dalam sebuah program, kita tidak perlu pusing tentang tepatnya
cara di mana efeknya direalisasikan. Yang penting, setelah panggilan, pasti
persyaratan prestated terpenuhi.
Cara menjalani proses ini sangat cocok dengan cara manusia
cenderung memecahkan masalah. Manusia juga cenderung untuk penanganan bertahap
masalah. Abstraksi prosedural dengan demikian menawarkan sarana penting untuk menangani
perangkat lunak
masalah.
Saat merancang perangkat lunak, kami cenderung menguraikan masalahnya sedemikian rupa
hasilnya memiliki orientasi waktu yang kuat. Suatu masalah didekomposisi menjadi submasalah
yang saling mengikuti dalam waktu. Dalam bentuknya yang paling sederhana, pendekatan ini
menghasilkan input-
-proses-skema keluaran: sebuah program pertama-tama harus membaca dan menyimpan datanya,
selanjutnya beberapa
proses menghitung output yang diperlukan dari data ini, dan hasilnya akhirnya adalah output.
Penerapan teknik ini dapat mengakibatkan program yang sulit diadaptasi dan
sulit untuk dipahami. Menerapkan abstraksi data menghasilkan dekomposisi yang
menunjukkan penderitaan ini ke tingkat yang jauh lebih rendah.
Abstraksi prosedural ditujukan untuk menemukan hierarki dalam kontrol program
struktur: langkah mana yang harus dijalankan dan urutannya. Abstraksi data adalah
bertujuan menemukan hierarki dalam data program. Penawaran bahasa pemrograman
struktur data primitif untuk bilangan bulat, bilangan real, nilai kebenaran, karakter dan
mungkin beberapa lagi. Menggunakan blok bangunan ini kita dapat membangun lebih rumit
struktur data, seperti tumpukan dan pohon biner. Struktur seperti itu digunakan secara umum di
322 DESAIN PERANGKAT LUNAK
aplikasi perangkat lunak. Mereka terjadi pada tingkat yang cukup rendah dalam
hierarki struktur data. Objek berorientasi aplikasi, seperti 'paragraf' dalam perangkat
lunak pengolah teks atau 'buku' dalam sistem perpustakaan kami, ditemukan di
tingkat yang lebih tinggi dari hierarki struktur data. Ini secara skematis digambarkan
pada Gambar 12.2.
Untuk data juga, kami ingin mengabstraksi dari detail yang tidak relevan pada tingkat tertentu.
Faktanya, kami sudah melakukannya saat menggunakan struktur data primitif yang ditawarkan
oleh bahasa pemrograman kami. Dalam menggunakan ini, kami abstrak dari detail seperti
representasi internal angka dan cara penambahan dua angka direalisasikan. Pada tingkat
bahasa pemrograman kita dapat melihat bilangan bulat sebagai satu set
objek (0, 1, -1, 2, -2, . . .
) dan sekumpulan
operasi pada objek
tersebut ( +
12.1. PERTIMBANGAN DESAIN 323
objek (semua pohon biner yang dapat dibayangkan) dan serangkaian operasi pada objek tersebut.
Kapan
menggunakan pohon biner, representasi mereka dan implementasi yang sesuai
operasi tidak perlu menjadi perhatian kita. Kita hanya perlu memastikan efek yang diinginkan dari
operasi.
Menerapkan abstraksi data selama desain terkadang disebut Berorientasi pada objek
desain, karena jenis objek dan operasi terkait dienkapsulasi menjadi satu
modul. Namun kata kunci 'berorientasi objek' juga memiliki arti yang sedikit berbeda.
Kami akan menguraikan lebih lanjut gagasan ini di bagian 12.3.
Bahasa seperti Ada, Java dan C++ menawarkan konstruksi bahasa (disebut kemasan,
kelas, Dan struct, masing-masing) yang memungkinkan kita mempertahankan pemisahan sintaksis
antara implementasi dan spesifikasi tipe data. Perhatikan bahwa itu juga
mungkin untuk menerapkan abstraksi data selama desain ketika bahasa pamungkas tidak
menawarkan konsep Namun, kemudian menjadi lebih rumit untuk berpindah dari desain
untuk kode.
Kami perhatikan sebelumnya bahwa abstraksi prosedural sangat cocok dengan cara manusia
cenderung mengatasi masalah. Bagi kebanyakan orang, abstraksi data sedikit lebih rumit.
Saat mencari solusi untuk masalah perangkat lunak, kami akan menemukan bahwa
solusi membutuhkan struktur data tertentu. Pada titik tertentu kita juga harus memilih a
representasi untuk struktur data ini. Daripada membuat keputusan itu lebih awal
panggung dan memaksakan hasilnya pada semua komponen lain, Anda lebih baik jika Anda
membuatnya
submasalah terpisah dan hanya membuat prosedural, implementasi-independen,
antarmuka publik. Abstraksi data dengan demikian adalah contoh utama dari penyembunyian informasi.
Perkembangan teknik abstraksi ini berjalan beriringan dengan yang lain
perkembangan, khususnya yang ada di ranah bahasa pemrograman. Prosedur
awalnya diperkenalkan untuk menghindari pengulangan urutan instruksi. Nanti
tahap kami melihat nama prosedur sebagai abstraksi yang sesuai
urutan instruksi. Baru pada saat itulah gagasan abstraksi prosedural mendapatkan miliknya
konotasi kekinian. Dalam nada yang sama, perkembangan di bidang tipe data formal
spesifikasi dan gagasan bahasa untuk modul (dimulai dengan kelas konsep dari
SIMULA-67) sangat berkontribusi pada gagasan abstraksi data kami saat ini.
Sebagai catatan terakhir kami berkomentar bahwa kami dapat mengidentifikasi jenis abstraksi ketiga,
kontrol abstraksi.Dalam abstraksi kontrol, kami mengabstraksi dari urutan yang tepat
urutan peristiwa yang harus ditangani. Meskipun abstraksi kontrol seringkali tersirat
ketika abstraksi prosedural digunakan, terkadang nyaman untuk dapat secara eksplisit
memodelkan jenis ketidaktentuan ini, misalnya ketika menentukan sistem bersamaan.
Topik ini berada di luar cakupan buku ini.
12.1.2 Modularitas
Selama desain, sistem didekomposisi menjadi sejumlah modul dan hubungan antar
modul tersebut ditunjukkan. Dalam desain lain dari sistem yang sama, modul yang
berbeda mungkin muncul dan mungkin ada hubungan yang berbeda antar modul.
Kita dapat mencoba membandingkan desain tersebut dengan mempertimbangkan
keduanya a
324 DESAIN PERANGKAT LUNAK
tipologi untuk masing-masing modul dan jenis koneksi di antara mereka. Ini
membawa kita ke dua kriteria desain struktural: kohesi Dan kopel.
Kohesi dapat dipandang sebagai perekat yang menyatukan modul. Ini adalah
ukuran afinitas timbal balik dari elemen modul. Secara umum kami ingin membuat
kohesi sekuat mungkin. Dalam teks klasik mereka aktif Desain Terstruktur, Yourdon
dan Constantine mengidentifikasi tujuh tingkat kohesi kekuatan yang meningkat
berikut ini:
�
12.1. PERTIMBANGAN DESAIN 325
�
326 DESAIN PERANGKAT LUNAK
�
12.1. PERTIMBANGAN DESAIN 327
�
328 DESAIN PERANGKAT LUNAK
Dalam pengertian yang sangat umum, kompleksitas suatu masalah mengacu pada
jumlah sumber daya yang diperlukan untuk solusinya. Kita dapat mencoba
menentukan kompleksitas dengan cara ini dengan mengukur, katakanlah, waktu
yang dibutuhkan untuk menyelesaikan suatu masalah. Inilah yang disebut
luaratribut: kita tidak melihat entitas itu sendiri (masalahnya), tetapi bagaimana
perilakunya. Dalam konteks sekarang, kompleksitas mengacu pada atribut
perangkat lunak yang mempengaruhi upaya yang diperlukan untuk membangun
atau mengubah perangkat lunak. Ini adalah internatribut: mereka dapat diukur murni
dalam hal perangkat lunak itu sendiri. Misalnya, kita tidak perlu menjalankan
perangkat lunak untuk menentukan nilainya.
Kedua pengertian ini sangat berbeda dengan kompleksitas komputasi yang
dilakukan (berkaitan dengan waktu atau memori yang dibutuhkan). Yang terakhir
adalah bidang yang mapan di mana banyak hasil telah diperoleh. Ini kurang benar
untuk jenis kompleksitas yang kita minati. Kompleksitas perangkat lunak dalam
pengertian ini masih merupakan gagasan yang sulit dipahami.
Upaya serius telah dilakukan untuk mengukur kompleksitas perangkat lunak
secara kuantitatif. Metrik yang dihasilkan dimaksudkan untuk digunakan sebagai titik
jangkar untuk dekomposisi sistem, untuk menilai kualitas desain atau program,
untuk memandu upaya rekayasa ulang, dll. Kami kemudian mengukur atribut
tertentu dari sistem perangkat lunak, seperti panjangnya, jumlah pernyataan if, atau
aliran informasi antar modul, dan mencoba menghubungkan angka yang diperoleh
dengan kompleksitas sistem. Jenis atribut perangkat lunak yang dianggap dapat
dikategorikan secara luas menjadi dua kelas:
a:=b
ketika P "
330 DESAIN
PERANGKAT
1 prosedur menyortir(dulu x: larik; n: bilangan LUNAK
bulat);
2 dulu i, j, simpan: bilangan bulat;
3 mulai
4 untuk saya:= 2 ke N Mengerjakan
5 untuk j:= 1 ke Saya
Mengerjakan
6 jika x[i]
<
12.1. PERTIMBANGAN DESAIN 331
Ini adalah jumlah bit minimal yang diperlukan untuk disimpan N
332 DESAIN
PERANGKAT
LUNAK
Tabel 12.2 Nilai untuk 'ilmu perangkat lunak'
entitas untuk contoh program di
gambar 12.3
Kesatuan Nilai
Kosakata ukuran 21
Panjang program 60
Perkiraan panjang program 73
Volume program 264
Tingkat abstraksi 0,044
Perkiraan tingkat abstraksi 0,040
Upaya pemrograman 6000
Perkiraan waktu pemrograman 333s
Orang yang berbeda menggunakan definisi yang sangat berbeda tentang pengertian
operator dan operan, yang dapat menyebabkan hasil yang sangat berbeda untuk
nilai entitas. Namun, karya Halstead sangat berpengaruh. Itu adalah badan
kerja besar pertama yang menunjukkan potensi metrik perangkat lunak untuk
pengembangan perangkat lunak.
Metrik kompleksitas seperti yang dimiliki Halstead, McCabe, dan banyak lainnya,
semua atribut ukuran yang dalam arti tertentu terkait dengan ukuran tugas yang
harus diselesaikan, baik itu waktu dalam bulan kerja, jumlah baris kode, atau yang
lainnya. Dengan demikian mereka dapat melayani berbagai tujuan: menentukan
ukuran modul yang optimal, memperkirakan jumlah kesalahan dalam modul, atau
memperkirakan biaya perangkat lunak.
Namun, semua metrik kompleksitas yang diketahui mengalami beberapa
kekurangan serius:
�
12.1. PERTIMBANGAN DESAIN 335
seharusnya tidak mengejutkan. Program besar cenderung memiliki lebih banyak
pernyataan if daripada program kecil. Namun, yang penting adalah kepadatan
dengan mana pernyataan-jika itu terjadi. Ini menunjukkan metrik kompleksitas
formulir
CV
336 DESAIN PERANGKAT LUNAK
Gambar 12.5 Hirarki modul. (a) grafik berarah, (b) grafik asiklik berarah, (c) grafik
berlapis, (d) pohon
12.1. PERTIMBANGAN DESAIN 337
�
338 DESAIN PERANGKAT LUNAK
untuk mengidentifikasi prosedur UNIX yang rawan perubahan dan mengevaluasi
potensi perubahan desain. (Shepperd, 1990) mempelajari ukuran aliran informasi
secara ekstensif dan mengusulkan beberapa penyempurnaan, sehingga
memperoleh metrik yang 'lebih murni'. Menggunakan definisi Shepperd, ukuran
aliran informasi didasarkan pada gagasan aliran data lokal dan global berikut:
�
12.1. PERTIMBANGAN DESAIN 339
pengelompokan ini menghasilkan tipe data abstrak atau, lebih umum, modul yang memiliki tinggi
kohesi. Jika ukuran didasarkan pada jumlah pengikatan data antar elemen,
hasilnya cenderung memiliki nilai yang rendah untuk metrik arus informasi.
Ukuran yang dipilih, dalam arti tertentu, menentukan bagaimana kita mendefinisikan 'persahabatan'
antara
elemen. Teman dekat harus dikelompokkan dalam modul yang sama sedangkan kerabat jauh
mungkin berada di modul yang berbeda. Berbagai desain kualitatif dan kuantitatif
kriteria yang kita bahas di atas memiliki definisi yang berbeda, tetapi pada dasarnya sangat mirip
persahabatan.
Meskipun masih banyak pekerjaan yang harus dilakukan, penggunaan metrik desain yang tersedia
dengan bijaksana
sudah menjadi alat yang berharga dalam desain dan jaminan kualitas sistem perangkat lunak.
WMC adalah ukuran untuk ukuran kelas. Asumsinya adalah bahwa kelas yang lebih besar
pada umumnya kurang diminati. Mereka membutuhkan lebih banyak waktu untuk
mengembangkan dan memelihara, dan memang begitu
P
Jika kita melihat metode sebagai gelembung, dan kopling sebagai koneksi antar
gelembung, CBO hanya menghitung jumlah koneksi untuk setiap gelembung. Pada
kenyataannya, kami menganggap beberapa jenis kopling lebih buruk daripada yang
lain: beberapa koneksi 'lebih tebal' daripada yang lain, dan beberapa koneksi ke
gelembung 'lebih jauh'. Untuk perwakilan
4Hukum Demeter adalah heuristik desain yang diterima secara umum untuk sistem berorientasi objek.
Dikatakan bahwa metode kelas seharusnya hanya bergantung pada struktur tingkat atas kelas mereka
sendiri. Lebih khusus lagi, dalam konteks kelas C dengan metode M, M seharusnya hanya mengirim pesan
ke:
– parameter C, atau
– variabel keadaan C, atau
– C itu sendiri.
12.1. PERTIMBANGAN DESAIN 341
kondisi teori pengukuran untuk dipegang, hubungan empiris ini harus tercermin
dalam sistem relasi numerik.
Martin (2002) mendefinisikan tindakan penggabungan pada tingkat paket:
�
342 DESAIN PERANGKAT LUNAK
selama desain, dan ditemukan memiliki hubungan yang kuat dengan upaya
pemeliharaan. Keunggulan DIT dan NCO masih belum jelas.
Perhatikan bahwa banyak dari metrik ini berkorelasi dengan ukuran kelas. Orang
mungkin berharap bahwa kelas yang lebih besar memiliki lebih banyak metode,
memiliki lebih banyak turunan, memiliki lebih banyak sambungan dengan kelas lain,
dll. El Emam et al. (2001) memang menemukan bahwa ukuran kelas memiliki efek
perancu pada nilai-nilai metrik di atas. Dengan demikian tetap dipertanyakan apakah
metrik ini memberi tahu lebih dari jumlah LOC biasa.
Tabel keputusan Representasi matriks dari logika keputusan yang kompleks pada detailnya
tingkat desain.
E--R Entitas--Model Hubungan. Keluarga teknik grafis untuk
mengungkapkan data-hubungan; lihat juga bab 10.
Bagan alur Teknik diagram sederhana untuk menunjukkan aliran kontrol pada level
desain detail. Ada dalam banyak rasa; lihat (Tripp, 1988) untuk tinjauan
FSM umum.
Mesin Negara Hingga. Suatu cara untuk menggambarkan suatu sistem
JSD sebagai sekumpulan keadaan dan kemungkinan transisi antara keadaan
tersebut; diagram yang dihasilkan disebut diagram transisi keadaan;
lihat juga bab 10. Pengembangan Sistem Jackson; lihat bagian 12.2.3.
JSP Penerus, dan lebih rumit dari, JSP; memiliki rasa berorientasi objek.
Dalam bentuknya yang murni, baik teknik top-down maupun bottom-up sepertinya
tidak akan sering digunakan. Kedua teknik tersebut layak hanya jika proses
desainnya murni dan rasional. Dan ini adalah idealisasi realitas. Ada banyak alasan
mengapa proses desain tidak bisa rasional. Beberapa di antaranya berkaitan
dengan proses desain yang tidak berwujud, beberapa berasal dari kecelakaan yang
menimpa banyak proyek perangkat lunak. Parnas dan Clements (1986)
mencantumkan alasan berikut, antara lain:
– Sebagian besar, pengguna tidak tahu persis apa yang mereka inginkan dan
mereka tidak tahu semua yang mereka tahu.
– Dalam banyak proyek kami tidak memulai dari awal, tetapi kami membangun
dari yang sudah ada perangkat lunak.
Desain menunjukkan karakter 'yo-yo': sesuatu dirancang, dicoba, ditolak lagi, ide-ide
baru muncul, dll. Desainer sering melakukan cara yang agak oportunistik. Mereka
sering beralih dari masalah domain aplikasi tingkat tinggi ke masalah pengkodean
dan desain terperinci, dan menggunakan berbagai cara untuk mengumpulkan
wawasan tentang masalah yang harus dipecahkan. Paling-paling, kami dapat
menyajikan hasil dari proses desain seolah-olah itu terjadi melalui proses yang
rasional.
Masalah umum dengan segala bentuk dekomposisi fungsional adalah bahwa
seringkali tidak jelas sepanjang dimensi mana sistem tersebut didekomposisi. Jika
kita mendekomposisi sepanjang sumbu waktu, hasilnya seringkali berupa program
utama yang mengontrol urutan pemanggilan sejumlah modul bawahan. Dalam
klasifikasi Yourdon, jenis kohesi yang dihasilkan bersifat sementara. Jika kita
menguraikan sehubungan dengan pengelompokan data, kita memperoleh tipe
kohesi data yang diperlihatkan dalam tipe data abstrak. Kedua dekomposisi
fungsional ini dapat dilihat sebagai contoh dari beberapa gaya arsitektur. Daripada
mengkhawatirkan dimensi mana yang menjadi fokus selama dekomposisi
fungsional, Anda lebih baik memilih gaya arsitektur tertentu dan membiarkan gaya
tersebut memandu dekomposisi.
Pada beberapa tingkat menengah, kumpulan komponen yang saling terkait
terdiri dari arsitektur perangkat lunak seperti yang dibahas dalam bab 11. Arsitektur
perangkat lunak ini adalah produk yang melayani berbagai tujuan: dapat digunakan
untuk mendiskusikan desain dengan
12.2. METODE DESAIN KLASIK 347
pemangku kepentingan yang berbeda; dapat digunakan untuk mengevaluasi
kualitas desain; itu bisa menjadi dasar untuk struktur rincian pekerjaan; itu dapat
digunakan untuk memandu proses pengujian, dll. Jika arsitektur perangkat lunak
diperlukan, itu memerlukan pendekatan desain di mana, pada tahap yang cukup
awal, setiap komponen dan koneksi hadir. Pendekatan bottom-up atau top-down
tidak tidak memenuhi persyaratan ini, karena dalam kedua pendekatan ini hanya
sebagian dari solusi yang tersedia pada titik tengah waktu. Parnas (1978)
menawarkan panduan berguna berikut untuk dekomposisi fungsional yang baik:
1. Cobalah untuk mengidentifikasi subsistem. Mulailah dengan a minimal subset dan tentukan
minimal
ekstensi untuk subset ini.
Gagasan di balik panduan ini adalah sangat sulit, jika bukan tidak mungkin,
untuk mendapatkan gambaran lengkap tentang sistem selama rekayasa
persyaratan. Orang terlalu banyak bertanya atau mereka menanyakan hal
yang salah. Mulai dari subsistem minimal, kami dapat menambahkan
fungsionalitas secara bertahap, menggunakan pengalaman yang diperoleh
dengan penggunaan sistem yang sebenarnya. Idenya sangat mirip dengan
pendekatan tangkas, dibahas di bab 3.
Karya Parnas ini menandai beberapa gagasan yang kemudian diakui sebagai
prinsip panduan penting dalam bidang arsitektur perangkat lunak. Gagasan subset
minimal yang ekstensi didefinisikan sangat mirip dengan gagasan arsitektur lini
produk: arsitektur dasar dari mana keluarga sistem serupa dapat diturunkan.
Pendekatan berlapis adalah salah satu gaya arsitektur dasar yang dibahas pada
bagian 11.4.
penyempurnaan menghasilkan penyempurnaan data yang sesuai. Proses analisis demikian memiliki
aspek desain juga.
Structured Design, menjadi strategi untuk memetakan arus informasi yang terkandung di dalamnya
diagram aliran data ke dalam struktur program, merupakan komponen asli dari (detail)
fase desain.
Hasil utama dari Analisis Terstruktur adalah rangkaian diagram aliran data. Empat jenis
entitas data dibedakan dalam diagram ini:
Entitas eksternal merupakan sumber atau tujuan transaksi. Entitas ini berada di
luar domain yang dipertimbangkan dalam diagram aliran data. Entitas eksternal
ditunjukkan sebagai kotak.
Proses mengubah data. Proses dilambangkan dengan lingkaran.
Arus data antara proses, entitas eksternal, dan penyimpanan data. Aliran data adalah
ditunjukkan oleh anak panah. Aliran data adalah jalur yang dilalui oleh struktur data.
Penyimpanan data terletak di antara dua proses. Hal ini ditunjukkan dengan nama
penyimpan data di antara dua garis sejajar. Penyimpanan data adalah tempat di
mana struktur data disimpan hingga dibutuhkan.
Kami akan mengilustrasikan berbagai langkah proses SA/SD dengan menganalisis dan merancang a
sistem otomasi perpustakaan sederhana. Sistem ini memungkinkan klien perpustakaan untuk meminjam
dan
mengembalikan buku. Ini juga melaporkan kepada manajemen perpustakaan tentang bagaimana
perpustakaan digunakan oleh
kliennya (misalnya, jumlah rata-rata buku yang dipinjamkan dan jumlah pengarang yang banyak
tuntutan).
Pada level tertinggi kita menggambar a diagram konteks. Diagram konteks adalah aliran data
diagram dengan satu proses, yang menunjukkan 'sistem'. Tujuan utamanya adalah untuk
menggambarkan
interaksi sistem dengan lingkungan (kumpulan entitas eksternal).
Untuk sistem perpustakaan sederhana kami ini dilakukan pada gambar 12.8. Diagram ini belum ada
dilengkapi dengan deskripsi struktur input dan output ke
proses sentral.
Selanjutnya, diagram tingkat atas ini diuraikan lebih lanjut. Sebagai contoh kita, ini
bisa mengarah ke diagram aliran data pada gambar 12.9. Dalam diagram ini, kami
telah memperluas
350 DESAIN PERANGKAT LUNAK
node proses pusat dari diagram konteks. Permintaan klien pertama kali dianalisis
dalam proses berlabel 'pemrosesan awal'. Akibatnya, salah satu dari 'hak pinjam'
atau 'hak pengembalian' diaktifkan. Kedua proses ini memperbarui penyimpanan
data berlabel 'administrasi katalog'. Permintaan klien dicatat dalam 'file log'
penyimpanan data. Penyimpanan data ini digunakan untuk menghasilkan laporan
manajemen.
Untuk aplikasi yang lebih rumit, berbagai diagram dapat digambar, satu untuk
setiap subsistem diidentifikasi. Subsistem ini selanjutnya diuraikan menjadi diagram
pada tingkat yang lebih rendah. Kami dengan demikian mendapatkan hierarki
diagram. Sebagai contoh, kemungkinan penyempurnaan node 'pemrosesan awal'
diberikan pada gambar 12.10. Dalam diagram tingkat rendah juga, entitas eksternal
biasanya dihilangkan.
Dekomposisi top-down berhenti ketika proses menjadi cukup lurus ke depan dan
tidak memerlukan perluasan lebih lanjut. Proses primitif ini adalah
12.2. METODE DESAIN KLASIK 351
Isi aliran data dalam DFD direkam dalam kamus data. Meskipun nama ini
menunjukkan sesuatu yang besar, itu tidak lebih dari deskripsi yang tepat dari
struktur data. Ini sering dilakukan dalam bentuk ekspresi reguler, seperti
12.2. METODE DESAIN KLASIK 353
sampai tidak dapat lagi dianggap masukan. Hal yang sama dilakukan, ke arah lain,
untuk keluaran. Gelembung di antara bertindak sebagai transformasi sentral. Jika kita melihat
gelembung dalam DFD sebagai manik-manik, dan data mengalir sebagai utas, kami mendapatkan yang
sesuai
bagan struktur dengan memilih manik-manik yang sesuai dengan transformasi pusat
dan mengocok DFD.5 Proses dalam diagram aliran data menjadi modul
dari bagan struktur yang sesuai dan aliran data menjadi panggilan modul. Catatan
bahwa panah dalam bagan struktur menunjukkan panggilan modul, sedangkan panah dalam data
diagram alir menunjukkan aliran data. Panah ini sering menunjuk ke arah yang berlawanan;
aliran data dari A ke B sering direalisasikan melalui pemanggilan B ke A. Kadang-kadang
sulit untuk memilih satu transformasi sentral. Dalam hal ini, elemen root dummy
ditambahkan dan skema Input--Proses--Output yang dihasilkan adalah dari bentuk yang digambarkan
gambar 12.13.
Karena orientasi transformasi bagan struktur, hubungan
antara modul dalam grafik memiliki karakter produsen-konsumen. Satu modul
menghasilkan aliran data yang kemudian dikonsumsi oleh modul lain. Kontrol
aliran adalah salah satu dimana modul memanggil modul bawahan untuk mewujudkan yang dibutuhkan
transformasi. Ada aliran informasi yang berpotensi kompleks antara
modul, sesuai dengan aliran data yang dilewatkan antara produsen dan
konsumen. Kontribusi utama Desain Terstruktur ditemukan dalam pedoman
yang bertujuan untuk mengurangi kompleksitas interaksi antar modul. Ini
pedoman menyangkut kriteria kohesi dan kopling yang dibahas di bagian 12.1.
5Kami melakukan hal yang sama saat mengubah pohon bebas menjadi pohon berorientasi. Pohon bebas tidak memiliki akar.
Dengan memilih
satu simpul pohon sebagai akar, hubungan orangtua-anak terjadi.
354 DESAIN PERANGKAT LUNAK
gambar 12.14. Dalam teks struktur, 'seq' menunjukkan urutan, 'itr' menunjukkan
iterasi, 'sel' menunjukkan pemilihan, dan 'alt' menunjukkan alternatif.
Gambar 12.15 Log buku yang dipinjam dan dikembalikan, dalam notasi JSP
buku yang diberikan diambil bersama-sama. Jadi, mutasi harus disortir terlebih dahulu. Kita harus
merestrukturisasi sistem, misalnya seperti yang digambarkan pada gambar 12.19.
Kerugian yang jelas dari struktur yang diperoleh adalah bahwa sekarang ada
berkas perantara. Pemeriksaan lebih dekat menunjukkan bahwa kita tidak benar-benar membutuhkan
file ini. Ini
langsung jelas jika kita gambarkan strukturnya seperti pada gambar 12.20.
Di sini, kita mungkin membalikkan komponen A1 dan beri kode sedemikian rupa sehingga berfungsi
sebagai pengganti
dari komponen B2. Alternatifnya (dan dalam hal ini lebih mungkin), kami dapat membalikkan B1
dan gantikan hasilnya dengan komponen A2. Dalam kedua kasus, tipe first-in-first-out
file perantara antara dua komponen dihapus dengan membuat salah satunya
komponen menjadi bawahan dari yang lain.
Contoh ini menunjukkan masalah mendasar yang terlibat dalam penggunaan JSP:
membuat tajuk
sampai EOF lingkaran
penulis proses:
sampai akhir dari pengarang lingkaran
proses mutasi:
... akhir lari
akhir lari.
Gambar 12.18 Struktur tingkat atas dari program untuk menghasilkan laporan
Langkah pertama dalam JSD adalah memodelkan bagian dari realitas yang kita
minati, Universe of Discourse (UoD). JSD memodelkan UoD sebagai sekumpulan
entitas, objek di dunia nyata yang berpartisipasi dalam urutan tindakan yang diatur
waktu. Untuk setiap entitas proses
358 DESAIN PERANGKAT LUNAK
dibuat yang memodelkan siklus hidup entitas itu. Tindakan adalah peristiwa yang
terjadi pada suatu entitas. Misalnya, di perpustakaan siklus hidup suatu entitas Buku
seperti yang digambarkan pada gambar 12.21. Siklus hidup sebuah buku dimulai
saat diperoleh. Setelah itu dapat dipinjam dan dikembalikan beberapa kali. Siklus
hidup berakhir saat buku diarsipkan atau dibuang. Siklus hidup digambarkan
menggunakandiagram struktur proses (PSD). PSD adalah diagram hierarkis yang
menyerupai diagram struktur JSP, dengan primitifnya untuk menunjukkan rangkaian
(pengurutan dalam waktu), pengulangan, dan pemilihan. PSD memiliki persamaan
pseudocode yang disebut strukturteks yang terlihat seperti logika skema JSP.
Diagram struktur proses adalah diagram keadaan terbatas. Dalam diagram
keadaan terbatas tradisional, gelembung (node) mewakili kemungkinan keadaan
entitas yang dimodelkan sementara panah menunjukkan kemungkinan transisi antar
keadaan. Kebalikannya berlaku untuk PSD. Dalam PSD, simpul menunjukkan
transisi keadaan dan panah menunjukkan keadaan.
Mengikuti alur pemikiran ini, sebuah entitas Anggota dapat digambarkan seperti
pada gambar 12.22: anggota memasuki sistem perpustakaan, setelah itu mereka
dapat meminjam dan mengembalikan buku sampai berhenti menjadi anggota.
Tahap pemodelan berkaitan dengan mengidentifikasi entitas dan peristiwa
(tindakan) yang terjadi pada mereka. Tindakan ini secara kolektif merupakan siklus
hidup suatu entitas.
12.2. METODE DESAIN KLASIK 359
Seperti metode desain lainnya, tidak ada resep sederhana untuk menentukan himpunan
entitas dan tindakan. Pendekatan yang diambil umumnya memiliki sikap linguistik. Dari catatan,
dokumentasi, wawancara dan sejenisnya, kami dapat menyusun daftar tindakan awal
dan entitas. Salah satu heuristik adalah mencari objek dunia nyata yang menjadi tujuan sistem
berinteraksi. Karena perpustakaan adalah tentang buku, sebuah entitas Buku segera menunjukkan
dirinya.
Dari pernyataan seperti 'anggota meminjam buku' kita dapat menyimpulkan bahwa suatu peristiwa
Meminjam
terjadi dalam siklus hidup buku dan anggota. Setelah daftar pendahuluan seperti itu
dibuat, refleksi lebih lanjut harus mengarah pada siklus hidup yang dibatasi dengan tepat
entitas yang diidentifikasi.
Entitas terdiri dari tindakan. Tindakan ini bersifat atomik, artinya tidak mungkin
diuraikan lebih lanjut menjadi sub-subaksi. Tindakan menanggapi peristiwa di dunia nyata. Itu
tindakan Mendapatkan yang merupakan bagian dari siklus hidup entitas Buku dipicu ketika a
peristiwa dunia nyata, akuisisi buku yang sebenarnya, terjadi. Dalam struktur proses
diagram, tindakan muncul sebagai simpul daun.
Acara dikomunikasikan ke sistem melalui pesan data, disebut atribut.
Dalam arti prosedural atribut ini merupakan parameter dari tindakan. Untuk
tindakan Mendapatkan kita mungkin memiliki atribut seperti ISBN, tanggal akuisisi, judul Dan
penulis.
Entitas juga memiliki atribut: variabel lokal yang menyimpan informasi dari
masa lalu dan secara kolektif menentukan keadaannya. Entitas Buku misalnya dapat dipertahankan
beberapa atau semua informasi yang diberikan pada saat akuisisi (ISBN, judul, dll).
360 DESAIN PERANGKAT LUNAK
Entitas juga memiliki dua atribut khusus. Pertama, atribut pengenal secara unik
mengidentifikasi entitas. Kedua, setiap entitas memiliki atribut yang menunjukkan
statusnya. Atribut ini dapat dilihat sebagai penunjuk ke beberapa simpul daun dari
diagram struktur proses. Setiap entitas dapat dilihat sebagai proses yang terpisah
dan berjalan lama. Dalam contoh perpustakaan, setiap buku dan setiap anggota
memiliki siklus hidupnya sendiri. Proses meskipun tidak sepenuhnya independen.
Selama tahap jaringan, sistem dimodelkan sebagai jaringan proses yang saling
berhubungan. Jaringan ini digambarkan dalam a diagram spesifikasi sistem (SSD).
JSD memiliki dua mekanisme dasar untuk komunikasi antarproses:
�
12.3. METODE ANALISIS DAN DESAIN 361
BERORIENTASI OBJEK
berlian pada gambar 12.23. Dalam sebuah implementasi, komunikasi vektor negara adalah
biasanya ditangani melalui akses database.
Jika sistem kami adalah untuk mencatat informasi tentang buku yang dipinjam, kami dapat membuat
model
ini melalui aliran data dari suatu entitas Buku kepada suatu entitas Catatan. Aliran data
ditangani secara FIFO; itu berperilaku seperti filter UNIX. Notasi untuk
jenis komunikasi datastream diberikan pada gambar 12.24.
Gambar 12.23 State vector communication (SV) antara Anggota Dan Buku
Tahap akhir dari JSD adalah tahap implementasi. Pada tahap implementasi model
konkuren yang merupakan hasil dari tahap jaringan diubah menjadi sistem yang
dapat dieksekusi. Salah satu konsep kunci untuk tahap ini adalah inversi program:
komunikasi antar proses diganti dengan pemanggilan prosedur, sehingga satu
proses menjadi bawahan dari proses lainnya. Ini sangat mirip dengan gagasan
inversi program seperti yang ada di JSP.
1. mengidentifikasi objek;
Jelas, langkah-langkah ini sangat saling terkait dan beberapa bentuk iterasi akan
diperlukan sebelum desain akhir diperoleh. Gambaran yang dihasilkan dari sistem
sebagai kumpulan objek dan keterkaitannya menggambarkan statis struktur
(dekomposisi) dari sistem. Model statis ini secara grafis digambarkan dalam
beberapa varian diagram kelas seperti yang dijelaskan pada bagian 10.3.1.
Instance objek dibuat, diperbarui nol kali atau lebih, dan akhirnya dihancurkan.
Diagram status terbatas yang menggambarkan kemungkinan status objek dan
transisi di antara status tersebut merupakan bantuan yang baik dalam memodelkan
siklus hidup ini. Metode berorientasi objek umumnya menggunakan beberapa varian
diagram mesin keadaan UML untuk menunjukkan ini dinamis model perilaku
komponen sistem; lihat bagian 10.3.2. Komponen sistem berkomunikasi
dengan mengirimkan pesan. Pesan-pesan ini adalah bagian dari tugas yang harus
dilakukan sistem. Kita dapat mengetahui pesan mana yang dibutuhkan, dan dalam
urutan apa pesan tersebut harus ditukar, dengan mempertimbangkan skenario
penggunaan yang khas. Analisis skenario adalah teknik elisitasi kebutuhan. Di
kalangan berorientasi objek, teknik ini dikenal sebagai analisis kasus penggunaan.
Model yang dihasilkan dari komunikasi antar komponen sistem digambarkan dalam
urutan atau diagram komunikasi; lihat bagian 10.3.3 dan 10.3.4. Pandangan ini juga
merupakan bagian dari model dinamis.
Pedoman untuk menemukan objek dan atribut serta layanannya sebagian besar
bersifat linguistik, seperti yang disebutkan dalam pembahasan kita tentang JSD di
bagian 12.2.3. Memang, tahap pemodelan JSD juga berorientasi objek. Pedoman
yang disajikan di bawah ini secara longgar didasarkan pada (Coad dan Yourdon,
1991) dan (Rumbaughet al., 1991). Rasa umumnya mirip dengan yang ditemukan
dalam pendekatan berorientasi objek lainnya. Model proses global dari beberapa
metode berorientasi objek yang terkenal dibahas di bagian 12.3.1--12.3.2.
Pernyataan masalah untuk sistem otomasi perpustakaan yang diberikan pada
gambar 12.25 akan berfungsi sebagai contoh untuk mengilustrasikan
langkah-langkah utama dalam analisis dan desain berorientasi objek. Kami akan
mengelaborasi bagian dari masalah ini dalam teks, dan membiarkan sejumlah
masalah terperinci sebagai latihan.
Prinsip panduan utama untuk mengidentifikasi objek adalah mencari konsep
penting dari domain aplikasi. Objek yang dapat ditemukan di perpustakaan termasuk
Buku,Lemari File, Pelanggan, dll. Di lingkungan kantor, kita mungkin pernah
mengalaminya Folder,Surat, Pegawai, dll. Entitas khusus domain ini adalah kandidat
utama kami untuk objek. Mereka mungkin objek dunia nyata, seperti buku; peran
dimainkan, seperti pelanggan perpustakaan; unit organisasi, seperti departemen;
lokasi, seperti kantor; atau perangkat, seperti printer. Objek potensial juga dapat
ditemukan dengan mempertimbangkan struktur klasifikasi atau rakitan (seluruh
bagian) yang ada. Dari wawancara, dokumentasi, dan sebagainya, dapat dilakukan
inventarisasi objek terlebih dahulu.
12.3. METODE ANALISIS DAN DESAIN 363
BERORIENTASI OBJEK
Pernyataan masalah
Merancang perangkat lunak untuk mendukung pengoperasian perpustakaan umum. Sistem tersebut
memiliki
jumlah stasiun untuk transaksi pelanggan. Stasiun-stasiun ini dioperasikan oleh perpustakaan
karyawan. Ketika sebuah buku dipinjam, kartu identitas klien dibaca.
Selanjutnya, pembaca kode batang stasiun membaca kode buku. Ketika sebuah buku dikembalikan,
kartu identitas tidak diperlukan dan hanya kode buku yang perlu dibaca.
Klien dapat mencari katalog perpustakaan dari salah satu dari sejumlah PC yang terletak di
perpustakaan. Saat melakukannya, pertama-tama pengguna diminta untuk menunjukkan bagaimana
pencarian itu akan dilakukan
dilakukan: oleh penulis, judul, atau kata kunci.
...
Fungsionalitas khusus dari sistem menyangkut perubahan isi katalog dan
penanganan denda. Fungsionalitas ini terbatas pada personel perpustakaan. Kata sandi
diperlukan untuk fungsi-fungsi ini.
...
Dari paragraf pertama uraian masalah pada gambar 12.25 berikut ini
daftar objek kandidat dapat disimpulkan, hanya dengan mendaftar semua kata benda:
perangkat lunak
perpustakaan
sistem
stasiun
pelanggan
transaksi
buku
pegawai perpustakaan
kartu identitas
klien
pembaca barcode
kode buku
Namun, beberapa objek dalam daftar kandidat ini harus dihilangkan. Perangkat lunak, mis.,
adalah konstruk implementasi yang seharusnya tidak disertakan dalam model saat ini
titik waktu. Nasib serupa harus menimpa istilah seperti algoritma atau daftar tertaut. Pada
tahap desain rinci, mungkin ada alasan untuk memperkenalkan (atau memperkenalkan kembali) mereka
objek berorientasi solusi.
Istilah yang tidak jelas harus diganti dengan istilah yang lebih konkret atau dihilangkan. Sistem
adalah
istilah yang tidak jelas dalam daftar kandidat kami. Stasiun dan PC akan terhubung ke yang sama
komputer host, jadi sebaiknya kita gunakan gagasan itu komputer alih-alih sistem.
364 DESAIN PERANGKAT LUNAK
Pelanggan Dan klien adalah istilah sinonim dalam pernyataan masalah. Oleh
karena itu, hanya satu dari mereka yang dipertahankan. Kita harus berhati-hati
dalam membuat model klien Danpegawai perpustakaan. Satu orang fisik dapat
mengambil kedua peran. Apakah berguna untuk memodelkan ini sebagai objek
yang berbeda atau sebagai peran yang berbeda dari satu objek sulit untuk
diputuskan pada saat ini. Kami akan memperlakukannya sebagai objek terpisah
untuk saat ini, namun perlu diingat bahwa ini dapat berubah saat model
disempurnakan.
Syarat transaksi mengacu pada operasi yang diterapkan pada objek, bukan
objek itu sendiri. Ini melibatkan urutan tindakan seperti menyerahkan kartu identitas
dan salinan buku kepada karyawan, memasukkan kartu identitas di stasiun,
membaca kode batang buku, dan sebagainya. Hanya jika transaksi itu sendiri
memiliki fitur yang penting bagi sistem, mereka harus dimodelkan sebagai objek.
Misalnya, jika sistem harus menghasilkan informasi profil tentang preferensi klien,
akan berguna untuk memiliki objek transaksi.
Syarat buku agak rumit dalam konteks ini. Sebuah buku dalam sistem
perpustakaan dapat menunjukkan salinan fisik dan kunci abstrak yang menunjukkan
hal tertentu F
12.3. METODE ANALISIS DAN DESAIN 365
BERORIENTASI OBJEK
Pengetahuan diam-diam:
Layanan ini menyangkut keadaan objek: mereka membaca dan menulis objek
atribut. Layanan yang memberikan informasi tentang keadaan suatu objek dapat atau
mungkin tidak melibatkan beberapa jenis perhitungan. Perhatikan bahwa selalu mungkin untuk
mengoptimalkan implementasi aktual dengan menjaga informasi yang berlebihan di negara sebagai
itu dipertahankan oleh objek. Misalnya, kami dapat memutuskan untuk memasukkan nomor
buku pinjaman di negara bagian sebagaimana diterapkan, daripada menghitungnya kapan
diperlukan. Ini tidak perlu menjadi perhatian kita pada tahap ini. Apakah layanan sebenarnya
diimplementasikan dengan cara komputasi atau dengan prosedur pencarian sederhana tidak terlihat
objek yang meminta informasi.
Wawasan lebih lanjut tentang layanan mana yang diperlukan dapat diperoleh dengan menyelidiki
skenario penggunaan. Kami dapat menyiapkan dialog tipikal antar komponen sistem
baik dalam situasi normal maupun luar biasa. Misalnya, kita dapat mempertimbangkan situasinya
di mana klien berhasil meminjam buku, yang di dalamnya identitas klien
kartu tidak berlaku lagi, di mana dia masih harus membayar denda terutang, dan sebagainya
pada. Diagram urutan untuk situasi normal peminjaman buku ditunjukkan pada
gambar 12.28. Sejumlah peristiwa terjadi saat interaksi ini berlangsung. Ini
peristiwa akan ditangani oleh operasi objek yang terlibat.
Layanan hanyalah salah satu cara di mana objek mungkin terkait. Hubungan
yang memberi sistem rasa yang benar-benar berorientasi objek adalah yang dihasilkan dari
klasifikasi keseluruhan-bagian dan generalisasi-spesialisasi.
Bagian dari klasifikasi objek dapat dihasilkan dari dunia nyata yang sudah ada sebelumnya
klasifikasi yang harus ditangani oleh sistem. Pengelompokan lebih lanjut objek menjadi an
hierarki objek melibatkan pencarian hubungan antar objek. Untuk mulai dengan, kami
366 DESAIN PERANGKAT LUNAK
Gambar 12.29 Model proses Booch (Sumber: G.Booch, Analisis Berorientasi Objek
dan Desain, Benjamin Cummings, 1994. Direproduksi dengan izin.)
– Model proses yang buruk: sulit untuk memutuskan kapan harus mengulang,
dan apa yang harus dilakukan dalam iterasi tertentu.
12.3.2 Fusi
Metode Fusion untuk analisis dan desain berorientasi objek memiliki dua fase
utama: analisis dan desain. Model proses globalnya ditunjukkan pada gambar
12.30.
Tahap analisis ditujukan untuk menentukan objek sistem dan interaksinya.
Struktur statis ditunjukkan dalam diagram kelas (disebut an model objekdi Fusion),
dan didokumentasikan dalam kamus data. Dinamika ditampilkan dalam model
antarmuka. Model antarmuka terdiri dari model siklus hidup untuk setiap objek,
dilambangkan dengan ekspresi reguler (yaitu representasi datar dari diagram mesin
negara) dan spesifikasi semantik dari setiap operasi dalam gaya sebelum dan
sesudah kondisi. Proses analisis diasumsikan sebagai proses iteratif. Iterasi ini
berhenti ketika model sudah lengkap dan konsisten.
Fase desain Fusion menghasilkan empat model, yang pada dasarnya diturunkan
dalam urutan yang ditunjukkan pada Gambar 12.30. Grafik interaksi objek
menyerupai grafik komunikasi. Mereka menjelaskan bagaimana objek berinteraksi
saat runtime: objek apa yang terlibat dalam perhitungan dan bagaimana mereka
digabungkan untuk mewujudkan spesifikasi yang diberikan. Visibilitygraphs
menjelaskan bagaimana komunikasi antar objek diwujudkan. Untuk setiap objek,
ditentukan objek lain mana yang harus dirujuk dan bagaimana caranya. Berbagai
jenis referensi dibedakan, dengan mempertimbangkan aspek-aspek seperti masa
pakai referensi dan apakah referensi dapat dibagikan. Selanjutnya, model objek,
grafik interaksi, dan grafik visibilitas digunakan untuk mendapatkan deskripsi dari
setiap kelas. Operasi dan kumpulan atribut awal untuk setiap objek ditetapkan pada
tahap ini. Akhirnya, relasi pewarisan diputuskan, dan digambarkan dalam grafik
pewarisan, yang merupakan diagram kelas. Deskripsi kelas kemudian diperbarui
untuk mencerminkan struktur pewarisan ini.
Karakteristik Fusion yang paling menonjol adalah:
�
12.3. METODE ANALISIS DAN DESAIN 371
BERORIENTASI OBJEK
dan transisi. Alur kerja menggambarkan aktivitas yang akan dilakukan, sedangkan
fase menunjukkan organisasi sepanjang sumbu waktu. Sebagian besar alur kerja
meluas ke sebagian besar fase.
Di sini, kami membahas alur kerja analisis dan desain, di mana persyaratan
diubah menjadi desain. RUP merupakan proses iteratif, sehingga transformasi ini
dilakukan dalam beberapa iterasi juga. Iterasi pertama terjadi pada fase elaborasi
RUP. Pada fase itu, arsitektur sistem ditentukan. Cara RUP melakukan desain
arsitektur cukup sesuai dengan model alur kerja global yang dibahas pada bagian
11.2. Dalam iterasi berikutnya, mengenai desain tingkat rendah, aktivitas utama
disebut Menganalisis perilaku Dan Komponen desain.
Tujuan dari langkah Analisis perilaku adalah untuk mengubah kasus
penggunaan menjadi sekumpulan elemen desain yang bersama-sama berfungsi
sebagai model dari domain masalah. Ini adalah tentangApa sistem ini untuk
menyampaikan. Ini menghasilkan model kotak hitam dari solusi. Tujuan dari langkah
elemen Desain adalah untuk menyempurnakan definisi elemen desain ke dalam
kelas, hubungan, antarmuka, dan sejenisnya. Dalam kegiatan ini, kotak hitam
Apamodel berubah menjadi kotak putih Bagaimana model.
Selama kedua aktivitas, desain yang dihasilkan ditinjau, dan hasilnya
diumpankan kembali ke iterasi berikutnya.
Karakteristik penting dari RUP adalah:
�
12.4. CARA MEMILIH METODE DESAIN 373
berat pada pengetahuan heuristik dari para desainer. Teknik Jackson tampaknya
menderita kurang dari kebutuhan ini. Terutama jika benturan struktur tidak terjadi, JSP menyediakan
kerangka kerja yang terdefinisi dengan baik untuk bagaimana menangani desain. Sifat preskriptif JSP
mungkin menjelaskan sampai batas tertentu keberhasilannya, terutama di bidang administrasi
pengolahan data. JSD menawarkan keunggulan serupa. Tampilannya yang ketat untuk mendeskripsikan
data
struktur sebagai daftar peristiwa dapat menyebabkan masalah, bagaimanapun, jika struktur data
melakukannya
tidak cocok dengan model ini. JSP memiliki tampilan data statis. Lebih penting lagi, itu tidak memberi
tahu
kita Bagaimana untuk mengatur data. Dengan demikian, teknik ini tampaknya paling cocok untuk
masalah
dimana struktur datanya telah diperbaiki sebelumnya. JSD dan berorientasi objek
metode menawarkan dukungan yang lebih baik dalam hal penataan data. Padahal metode ini
memberikan heuristik yang berguna untuk identifikasi objek, mendapatkan set yang seimbang
objek masih sangat tergantung pada keterampilan desainer.
Teknik aliran data memiliki tampilan yang lebih dinamis dari aliran data yang ada
dasar dari sistem yang akan dibuat. Kita mungkin sering melihat gelembung dari aliran data
diagram sebagai pegawai yang melakukan transformasi tertentu pada data yang masuk untuk
menghasilkan
data petugas lainnya. Teknik ini tampaknya cocok untuk keadaan di mana sebuah
sistem manual yang ada harus diganti dengan yang terkomputerisasi. Bahaya nyata,
Namun, apakah sistem yang ada hanya disalin, sedangkan persyaratan tambahan
diabaikan.
Jika kita memperhitungkan bahwa sebagian besar dari biaya perangkat lunak dihabiskan
memelihara perangkat lunak itu, jelas bahwa faktor-faktor seperti fleksibilitas, kelengkapan
dan modularitas harus memainkan peran penting saat memilih teknik desain tertentu.
Gagasan dan pedoman Parnas sangat relevan dalam hal ini. Itu
filosofi berorientasi objek menggabungkan ide-ide ini dan cocok dengan arus
bahasa pemrograman, yang memungkinkan transisi yang lebih mulus antara yang berbeda
fase pengembangan.
Beberapa upaya telah dilakukan untuk mengklasifikasikan metode desain dengan berbagai cara
dimensi, seperti produk yang mereka berikan, jenis representasi yang digunakan, atau
tingkat formalitas mereka. Sebuah kerangka sederhana namun bermanfaat diusulkan dalam (Blum,
1994). Dia
memiliki dua dimensi: dimensi orientasi dan dimensi model.
Dalam dimensi orientasi, dibedakan antara berorientasi pada masalah
teknik dan teknik berorientasi produk. Teknik berorientasi masalah
berkonsentrasi pada menghasilkan pemahaman yang lebih baik dari masalah dan solusinya.
Teknik berorientasi masalah berorientasi pada manusia. Tujuan mereka adalah untuk menggambarkan,
berkomunikasi
bagus, dan mendokumentasikan keputusan. Teknik berorientasi masalah biasanya memiliki satu kaki
dalam domain rekayasa persyaratan. Sebaliknya, teknik berorientasi produk
fokus pada transformasi yang benar dari spesifikasi ke implementasi. Itu
Dimensi kedua berkaitan dengan produk, yaitu model yang merupakan hasil dari desain
proses. Dalam dimensi ini, perbedaan dibuat antara model konseptual dan
model formal. Model konseptual bersifat deskriptif. Mereka menggambarkan realitas eksternal,
semesta wacana. Kesesuaiannya ditetapkan melalui validasi.
Model formal di sisi lain bersifat preskriptif. Mereka menentukan perilaku dari
sistem yang akan dikembangkan. Model formal dapat diverifikasi.
374 DESAIN
PERANGKAT
LUNAK
Berorientasi
masalah Berorientasi
produk
Konseptual SA II
YA
pemodelan SI Desain
Terstruktur
Analisis Terstruktur Desain OO
Analisis OO
IV) Membuat unit implementasi Kategori ini berisi teknik khusus bertujuan
untuk membuat unit implementasi seperti modul.
Gambar 12.32 'Jarak' antara OOA, OOD dan masalah serta solusinya
Ada alasan bagus untuk membedakan aktivitas tipe OOA dan aktivitas tipe
OOD, seperti yang dilakukan di Fusion, misalnya. Selama desain, perhatian
difokuskan pada menentukan cara membuat dan menghancurkan objek, pada
identifikasi generalisasi (abstrak, jika perlu) objek untuk mempromosikan
penggunaan kembali atau pemeliharaan, dan sebagainya. Sebuah Objek Publikasi
sebagai generalisasi dari Buku Dan Jurnal tidak perlu dipertimbangkan selama
analisis, karena tidak meningkatkan pemahaman kita tentang domain. Di sisi lain,
objek seperti kartu identitas mungkin menghilang dari model selama desain.
Sebagian besar organisasi pengembangan perangkat lunak telah
mengumpulkan banyak pengalaman dalam mengembangkan perangkat lunak
mengikuti gaya tradisional, berorientasi pada fungsi atau proses. Banyak perangkat
lunak warisan telah dikembangkan dan didokumentasikan dengan cara itu.
Konsekuensinya, pengetahuan tentang metode ini masih dibutuhkan di banyak
organisasi.
12.5. POLA DESAIN 377
Konteks Seorang klien membutuhkan layanan dari komponen lain. Padahal akses
langsung mungkin, ini mungkin bukan pendekatan terbaik.
8lihat (Buschmann et al., 1996, hlm 277--290) untuk penjelasan yang lebih terperinci.
12.5. POLA DESAIN 381
5. Itu penguji unit harus memiliki informasi rinci tentang komponen, seperti
algoritma yang digunakan, diperlukan inisialisasi, dan data yang diperlukan.
6. Itu penguji integrasi harus tahu tentang hubungan antara komponen dan
fungsi dan penggunaan komponen yang terlibat.
7. Itu pemrogram pemeliharaan harus memiliki gambaran tentang hubungan
antar komponen. Dia harus tahu bagaimana kebutuhan pengguna direalisasikan
oleh berbagai komponen. Ketika perubahan harus diwujudkan, ia berperan
sebagai perancang.
Dalam Standar IEEE 1016, dokumentasi proyek digambarkan sebagai model
informasi. Entitas dalam model ini adalah komponen yang diidentifikasi selama
tahap desain. Kami menggunakan istilah 'modul' untuk entitas ini. Masing-masing
modul ini memiliki sejumlah atribut yang relevan, seperti nama, fungsi, dan
dependensinya. Kita sekarang dapat membuat matriks yang menunjukkan atribut
mana yang diperlukan untuk peran pengguna mana. Matriks ini digambarkan pada
Gambar 12.35.
A
t 1
r
i
b �
u
t
384 DESAIN PERANGKAT LUNAK
�
12.6. DOKUMENTASI DESAIN 385
berkonsentrasi pada aspek-aspek tertentu dari desain. Ini dapat dianggap sebagai
aplikasi dari praktik yang direkomendasikan IEEE untuk deskripsi arsitektural IEEE
(2000) jauh sebelum standar tersebut dikembangkan.
Tabel Tampilan pada desain (Sumber: H.J. Barnard et al, Praktik yang direkomendasikan untuk
12.4
menjelaskan desain perangkat lunak: Proyek Standar IEEE 1016, Transaksi IEEE pada Perangkat Lunak
Rekayasa SE-12, 2, Hak Cipta 1986, IEEE.)
12.8 Ringkasan
Sama seperti mendesain rumah, mendesain perangkat lunak adalah aktivitas yang
menuntut kreativitas dan pengerjaan yang adil. Kualitas desainer sangat penting
dalam proses ini. Desainer yang biasa-biasa saja tidak akan menghasilkan desain
yang luar biasa. Inti dari proses desain adalah bahwa sistem didekomposisi
menjadi bagian-bagian yang masing-masing memiliki kompleksitas yang lebih kecil
daripada keseluruhannya. Beberapa bentuk abstraksi selalu digunakan dalam
proses ini. Kami telah mengidentifikasi beberapa prinsip panduan untuk dekomposisi
sistem menjadi modul. Prinsip-prinsip ini menghasilkan properti yang diinginkan
untuk hasil dari proses desain, satu set modul dengan saling ketergantungan:
�
12.8. RINGKASAN 387
�
388 DESAIN PERANGKAT LUNAK
Latihan
jika;
12.9. BACAAN LEBIH LANJUT 393
10. Apakah kompleksitas siklomatik merupakan indikator yang baik dari kompleksitas sistem?
11. Gambarlah grafik panggilan untuk program nontrivial yang telah Anda tulis, dan tentukan
kenajisan pohonnya. Apakah angka yang didapat sesuai dengan ide intuitif kita
tentang 'kualitas' dekomposisi?
12. Hitung metrik aliran informasi Henri dan Kafura untuk desain dua
sistem tempat Anda terlibat. Apakah angka-angka ini sesuai dengan intuisi kami
memahami?
13. Mengapa DIT -- kedalaman kelas dalam pohon pewarisan -- merupakan metrik yang berguna
untuk
pertimbangkan ketika menilai kualitas sistem berorientasi objek?
16. Diskusikan kelebihan dan kekurangan relatif dari dalam dan sempit versus lebar
dan pohon warisan yang dangkal.
20. Apa perbedaan utama antara berorientasi masalah dan berorientasi produk
metode desain?
21. Diskusikan rasa umum alur kerja Analisis dan Desain RUP.
22. Apa perbedaan antara desain berorientasi objek dan yang sederhana
penerapan prinsip penyembunyian informasi?
24. ~
394 DESAIN PERANGKAT LUNAK
prosedur P;
mulai
jika X Kemudian DAN kalau tidak
DENGAN berakhir jika
akhir P;
Gambarkan diagram alur untuk program ini serta untuk program yang diperoleh
dengan mengganti badan prosedur P Di barisan. Tentukan siklomatik
kompleksitas kedua varian, menggunakan kedua formula. Lihat juga (Henderson Sellers,
1992).)
25. �
12.9. BACAAN LEBIH LANJUT 3
9
5
D. Untuk semua
G
grafik
13
TUJUAN PEMBELAJARAN
�
397
Pengujian tidak boleh dibatasi hanya untuk menjalankan sistem untuk melihat apakah
input yang diberikan menghasilkan output yang benar. Selama fase sebelumnya, menengah
produk dapat, dan harus, diuji juga. Pengujian yang baik itu sulit. Dia
memerlukan perencanaan dan dokumentasi yang cermat. Ada sejumlah besar
teknik tes. Kami membahas kelas utama teknik pengujian dengan mereka
karakteristik.
Misalkan Anda diminta untuk menjawab jenis pertanyaan yang diajukan (Baber, 1982):
– Apakah Anda akan mempercayai pembangkit listrik tenaga nuklir yang sepenuhnya otomatis?
– Apakah Anda mempercayai pilot yang sepenuhnya otomatis yang perangkat lunaknya ditulis
oleh
dirimu sendiri? Bagaimana jika itu ditulis oleh salah satu rekan Anda?
Anda (mungkin) akan kesulitan menjawab semua pertanyaan ini secara afirmatif.
Mengapa? Perangkat keras sebuah pesawat mungkin sama rumitnya dengan perangkat lunak untuk
pesawat terbang
pilot otomatis. Namun, kebanyakan dari kita naik pesawat tanpa berpikir dua kali.
Karena ketergantungan masyarakat kita pada otomatisasi semakin meningkat, kualitas
sistem yang kami berikan semakin menentukan kualitas keberadaan kami. Kita tidak bisa
bersembunyi dari tanggung jawab ini. Peran otomatisasi dalam aplikasi kritis dan
ancaman yang ditimbulkan oleh aplikasi ini harus membuat kita merenung. Catatan Rekayasa Perangkat
Lunak ACM
menjalankan kolom 'Risiko kepada publik dalam sistem komputer' di mana kami diberi tahu
banyak (hampir) kecelakaan yang disebabkan oleh kegagalan perangkat lunak. Pembahasan tentang
perangkat lunak
keandalan yang diprovokasi oleh Inisiatif Pertahanan Strategis adalah contohnya (Parnas,
1985; Myers, 1986; Parnas, 1987). Diskusi, seperti tentang Therac-25
kecelakaan atau penerbangan perdana Ariane 5 (lihat bagian 1.4), harus diwajibkan
membaca untuk setiap insinyur perangkat lunak.
Rekayasa perangkat lunak adalah rekayasa. Insinyur mengincar solusi sempurna, tapi
tahu tujuan ini umumnya tidak dapat dicapai. Selama konstruksi perangkat lunak, kesalahan adalah
dibuat. Untuk menemukan dan memperbaiki kesalahan tersebut melalui pengujian yang berlebihan
adalah urusan yang melelahkan dan
kebanyakan tidak semua kesalahan ditemukan. Pengujian yang baik setidaknya sama sulitnya dengan
desain yang baik.
Dengan keadaan terkini kami tidak dapat memberikan perangkat lunak bebas kesalahan.
Studi yang berbeda menunjukkan bahwa 30--85 kesalahan per 1000 baris kode sumber dibuat.
Angka-angka ini tampaknya tidak membaik dari waktu ke waktu. Selama pengujian, beberapa dari
mereka
kesalahan ditemukan dan kemudian diperbaiki. Namun, beberapa kesalahan tetap tidak terdeteksi.
Myers (1986) memberikan contoh perangkat lunak yang diuji secara ekstensif yang masih berisi 0,5--3
kesalahan per 1000 baris kode. Kesalahan dalam sistem reservasi kursi maskapai besar
perusahaan mengalami kerugian sebesar $50 juta dalam satu kuartal. Sistem komputerisasi dilaporkan
bahwa kursi murah sudah habis terjual padahal kenyataannya tidak demikian. Sebagai konsekuensi,
398 PENGUJIAN PERANGKAT LUNAK
klien dirujuk ke perusahaan lain. Masalahnya tidak ditemukan sampai hasil kuartalan
ditemukan jauh tertinggal dari para pesaing mereka. Pengujian sering diartikan
menjalankan program untuk melihat apakah itu menghasilkan output yang benar untuk
input yang diberikan. Ini melibatkan pengujian produk akhir, perangkat lunak itu sendiri.
Akibatnya, kegiatan pengujian seringkali tidak mendapatkan perhatian yang layak.
Pada saat perangkat lunak telah ditulis, kami sering terdesak waktu, yang tidak
mendorong pengujian menyeluruh.
Menunda kegiatan pengujian terlalu lama adalah salah satu kesalahan paling
parah yang sering dilakukan dalam proyek pengembangan perangkat lunak.
Penundaan ini membuat pengujian menjadi urusan yang agak mahal. Gambar 13.1
menunjukkan hasil studi awal Boehm tentang biaya koreksi kesalahan relatif terhadap
fase di mana kesalahan ditemukan. Gambaran ini menunjukkan bahwa kesalahan
yang tidak ditemukan sampai perangkat lunak telah menjadi operasional menimbulkan
biaya 10 sampai 90 kali lebih tinggi daripada kesalahan yang ditemukan selama fase
desain. Rasio ini masih berlaku untuk sistem besar dan kritis (Boehm dan Basili,
2001). Untuk sistem kecil dan tidak kritis rasionya mungkin lebih seperti 1 banding 5.
Metode dan teknik pengembangan yang diterapkan pada tahap pra implementasi
relatif kurang berkembang. Oleh karena itu tidak mengherankan jika sebagian besar
kesalahan terjadi pada fase awal tersebut. Sebuah studi awal oleh Boehm
menunjukkan bahwa lebih dari 60% kesalahan diperkenalkan selama fase desain,
berlawanan dengan 40% selama implementasi (Boehm, 1975). Lebih buruk lagi, dua
pertiga dari kesalahan yang diperkenalkan pada fase desain tidak ditemukan sampai
setelah perangkat lunak beroperasi. Oleh karena itu, kami berkewajiban
untuk merencanakan dengan hati-hati kegiatan pengujian kami sedini mungkin. Kita
juga harus memulai kegiatan pengujian yang sebenarnya pada tahap awal. Bentuk
ekstremnya adalah pengembangan yang digerakkan oleh tes, salah satu praktik XP, di
mana pengembangan dimulai dengan tes tertulis. Jika kita tidak memulai pengujian
sampai setelah tahap implementasi, kita benar-benar terlambat. Spesifikasi
persyaratan, desain, dan spesifikasi desain juga dapat diuji. Kekakuan di sini
bergantung pada bentuk pengungkapan dokumen-dokumen ini. Hal ini telah
diisyaratkan pada bab-bab sebelumnya. Pada bagian 13.2, kami akan menyoroti
kembali berbagai aktivitas verifikasi dan validasi yang dapat diterapkan pada berbagai
fase siklus hidup perangkat lunak. Perencanaan dan dokumentasi kegiatan ini dibahas
di bagian 13.3. Sebelum kita memutuskan
pendekatan tertentu untuk pengujian, kita harus menentukan tujuan pengujian kita.
Jika tujuannya adalah untuk menemukan kesalahan sebanyak mungkin, kami akan
memilih strategi yang ditujukan untuk mengungkap kesalahan. Jika tujuannya adalah
untuk meningkatkan kepercayaan diri kita pada berfungsinya perangkat lunak dengan
benar, kita mungkin akan memilih strategi yang sama sekali berbeda. Jadi tujuan akan
berdampak pada pendekatan pengujian yang dipilih, karena hasilnya harus ditafsirkan
sehubungan dengan tujuan yang ditetapkan. Tujuan pengujian yang berbeda dan
sejauh mana pendekatan pengujian sesuai dengan tujuan ini adalah topik bagian 13.1.
Perangkat lunak pengujian hanya menunjukkan adanya kesalahan, bukan
ketidakhadirannya. Dengan demikian, ini menghasilkan hasil yang agak negatif: hanya
sampai sekarang N
399
Gambar 13.1 Biaya Relatif Koreksi Kesalahan (Sumber: Barry B. Boehm, Ekonomi
Rekayasa Perangkat Lunak, ara. 4.2, halaman 40, 1981, Dicetak ulang atas izin
Prentice Hall, Inc.Englewood Cliffs, NJ)
benar. Dalam prakteknya hal ini jarang terjadi. Sebuah program sederhana seperti
memiliki
400 PENGUJIAN PERANGKAT LUNAK
Dengan demikian kita dipaksa untuk membuat pilihan. Sangatlah penting untuk
memilih serangkaian kasus uji yang cukup kecil, namun memadai. Teknik pengujian
dapat diklasifikasikan menurut kriteria yang digunakan untuk mengukur kecukupan
serangkaian kasus uji:
Atau, kami dapat mengklasifikasikan teknik uji berdasarkan sumber informasi yang
digunakan untuk menurunkan kasus uji:
Kami akan menggunakan klasifikasi pertama, dan membahas berbagai teknik untuk
pengujian berbasis cakupan, berbasis kesalahan, dan berbasis kesalahan di bagian
13.5--13.7. Teknik-teknik ini melibatkan eksekusi sebenarnya dari sebuah program.
Teknik manual yang tidak melibatkan eksekusi program, seperti pembacaan kode
dan inspeksi, dibahas di bagian 13.4. Pada bagian 13.8 kami menilai beberapa studi
empiris dan teoretis yang bertujuan untuk menempatkan teknik pengujian yang
berbeda ini dalam perspektif.
Teknik di atas diterapkan terutama pada tingkat komponen. Tingkat pengujian ini
sering dilakukan bersamaan dengan tahap implementasi. Itu juga disebutpengujian
satuan. Selain level komponen, kita juga harus menguji integrasi sekumpulan
komponen ke dalam sistem. Kemungkinan juga, sistem final akan diuji sekali lagi di
bawah pengawasan langsung dari calon pengguna. Pada bagian 13.9 kita akan
membuat sketsa fase pengujian yang berbeda ini.
Pada tingkat sistem, tujuan yang dikejar sering bergeser dari mendeteksi
kesalahan menjadi membangun kepercayaan, dengan menilai keandalan secara
kuantitatif. Keandalan perangkat lunak dibahas pada bagian 13.10.
13.1. TUJUAN UJI 401
1Itu IEEE Glosarium Terminologi Rekayasa Perangkat Lunak memberikan empat definisi dari kata
'kesalahan'. Untuk membedakan antara definisi ini, kata 'kesalahan', 'kesalahan', 'kegagalan' dan 'kesalahan'
digunakan. Kata 'kesalahan' dalam Glosarium digunakan untuk menunjukkan kesalahan pengukuran,
sedangkan 'kesalahan' digunakan untuk menunjukkan kesalahan manusia. Meskipun 'kesalahan' memiliki
keuntungan karena tidak terlalu menyalahkan, kami mengikuti literatur rekayasa perangkat lunak yang
diterima dalam hal ini. Definisi kami tentang 'kesalahan' dan 'kegagalan' sama dengan yang ada
diGlosarium.
402 PENGUJIAN PERANGKAT LUNAK
dalam konteks yang ada, kemungkinan besar kita mendapat masalah jika program
diubah atau sebagian digunakan kembali di lingkungan yang berbeda.
Sebagai contoh, perhatikan penerbangan perdana Ariane 5. Dalam waktu 40
detik setelah lepas landas, di ketinggian 3700 meter, peluncurnya meledak. Ini pada
akhirnya disebabkan oleh luapan dalam konversi variabel dari angka floating point
64-bit ke bilangan bulat bertanda 16-bit. Sepotong perangkat lunak yang
mengandung kesalahan ini digunakan kembali dari Ariane 4 dan telah tidak pernah
menyebabkan masalah di salah satu penerbangan Ariane 4. Hal ini dijelaskan oleh
fakta bahwa Ariane 5 membangun kecepatan jauh lebih cepat daripada Ariane 4,
yang pada gilirannya menghasilkan nilai yang berlebihan untuk parameter yang
dimaksud; lihat juga bagian 1.4.1.
Dengan definisi kesalahan dan kesalahan di atas, program semacam itu harus
dianggap salah, bahkan jika kita tidak dapat merancang kasus uji yang
mengungkapkan kesalahan tersebut. Ini masih menyisakan pertanyaan tentang
bagaimana mendefinisikan kesalahan. Karena kita tidak bisa tidak menebak apa
maksud sebenarnya dari programmer itu, ini hanya dapat diputuskan oleh seorang
oracle. Mengingat fakta bahwa pengujian lengkap tidak layak, proses pengujian
dapat dianggap seperti yang digambarkan pada Gambar 13.2. Kotak berlabel P
menunjukkan objek (program, dokumen desain, dll.) yang akan diuji. Strategi tes
melibatkan pemilihan subset dari domain input. Untuk setiap elemen subset ini, P
digunakan untuk 'menghitung' output yang sesuai. Output yang diharapkan
ditentukan oleh oracle, sesuatu di luar aktivitas pengujian. Terakhir, kedua jawaban
tersebut dibandingkan.
Langkah yang paling penting dalam proses ini adalah pemilihan subset dari
inputdomain yang akan berfungsi sebagai test set. Set tes ini harus memadai
sehubungan dengan beberapa kriteria tes yang dipilih. Pada bagian 13.1.1 kami
menguraikan gagasan kecukupan pengujian.
Teknik pengujian umumnya menggunakan beberapa cara sistematis untuk
menurunkan kasus uji. Kasus-kasus uji ini dimaksudkan untuk memprovokasi
kegagalan. Jadi, tujuan utamanya adalah deteksi kesalahan. Sebagai alternatif,
tujuan pengujian kami adalah untuk meningkatkan kepercayaan diri kami pada
perilaku bebas kegagalan. Tujuan tes yang sangat berbeda ini, dan dampaknya
pada masalah pemilihan tes, adalah topik dari bagian 13.1.2.
13.1. TUJUAN UJI 403
Untuk menguji apakah tujuan tercapai, uji kasus diadili agar kesalahan itu terjadi
menampakkan diri. Pendekatan yang sangat berbeda adalah melihat pengujian sebagai pencegahan
kesalahan.
Ini membawa kita ke dimensi lain dari tujuan pengujian, yang sebagian besar paralel
evolusi strategi pengujian selama bertahun-tahun. Evolusi ini dibahas di
bagian 13.1.3.
Akhirnya, gambaran sejauh ini menganggap setiap kesalahan sama berbahayanya. Pada
kenyataannya,
ada berbagai jenis kesalahan, dan beberapa kesalahan lebih berbahaya daripada yang lain. Semua
teknik yang akan dibahas dalam bab ini dapat dengan mudah digeneralisasikan untuk mencakup banyak
hal
kelas kesalahan, masing-masing dengan kriteria penerimaannya sendiri.
Beberapa kesalahan sangat penting dan kami harus mengerahkan diri untuk menemukannya
kesalahan kritis. Teknik khusus, seperti analisis pohon kesalahan, telah dikembangkan
untuk akhir ini. Menggunakan analisis pohon kesalahan, kami mencoba menurunkan kontradiksi dengan
penalaran
mundur dari situasi akhir yang diberikan, tidak diinginkan. Jika kontradiksi tersebut dapat
diturunkan, kami telah menunjukkan bahwa situasi tertentu tidak pernah dapat dicapai.
Gelperin dan Hetzel (1988) mengidentifikasi empat model pengujian utama. Ini
kira-kira paralel dengan perkembangan historis praktik pengujian. Model dan tujuan
utamanya diberikan pada Gambar 13.4.
Tujuan utama dari model demonstrasi adalah untuk memastikan bahwa program
berjalan dan memecahkan masalah. Strateginya seperti bukti matematis yang
konstruktif. Jika perangkat lunak lulus semua tes dari set tes, itu diklaim memenuhi
persyaratan. Strategi tersebut tidak memberikan panduan tentang bagaimana cara
mendapatkan perangkat tes semacam itu. Set pengujian yang dipilih secara salah
dapat menutupi kualitas perangkat lunak yang buruk.
Sebagian besar pemrogram akan terbiasa dengan proses pengujian program
mereka sendiri dengan membaca atau menjalankannya dengan hati-hati dengan
data masukan yang dipilih. Jika ini dilakukan dengan sangat hati-hati, itu bisa
bermanfaat. Namun, metode ini juga memiliki beberapa bahaya. Kita mungkin
cenderung menganggap bentuk pengujian ini sebagai metode untuk meyakinkan
13.1. TUJUAN UJI 407
diri kita sendiri atau orang lain yang dilakukan perangkat lunak tersebut bukan mengandung kesalahan.
Kami kemudian akan,
sebagian secara tidak sadar, mencari kasus uji yang mendukung hipotesis ini. Jenis ini
pendekatan berorientasi demonstrasi untuk pengujian tidak dianjurkan.
Pengujian yang tepat adalah proses yang sangat merusak. Suatu program harus diuji dengan
tujuan untuk menemukan kesalahan sebanyak mungkin. Tes hanya dapat dianggap berhasil
jika itu mengarah pada penemuan setidaknya satu kesalahan. (Dengan cara yang sama, kunjungan ke
dokter hanya berhasil jika dia menemukan 'kesalahan' dan kami biasanya akan mempertimbangkannya
kunjungan tidak memuaskan jika kami dipulangkan dengan pesan bahwa tidak ada yang salah
ditemukan.)
Untuk meningkatkan peluang menghasilkan sistem berkualitas tinggi, kita harus
membalikkan strategi dan mulai mencari kasus uji itu Mengerjakan mengungkapkan kesalahan. Ini
mungkin
disebut pembuktian dengan kontradiksi. Set tes kemudian dinilai dari kemampuannya untuk mendeteksi
kesalahan.
Karena kita tidak tahu apakah ada sisa kesalahan yang tersisa, sulit untuk memutuskannya
kapan harus menghentikan pengujian di salah satu model ini. Dalam model berorientasi demonstrasi,
kriteria yang paling sering digunakan untuk menentukan titik waktu ini tampaknya adalah sebagai
berikut:
– berhenti jika anggaran tes habis;
– berhenti jika semua test case telah dijalankan tanpa ada kegagalan yang terjadi.
Kriteria pertama tidak ada gunanya, karena tidak memberi tahu kami apa pun tentang kualitas
dari upaya pengujian. Jika tidak ada uang sama sekali, kriteria ini paling mudah dipenuhi.
Kriteria kedua juga tidak ada gunanya, karena tidak memberi tahu kita apa pun tentang
kualitas kasus uji.
Model yang berorientasi kehancuran biasanya memerlukan beberapa cara sistematis untuk
menurunkannya
kasus uji. Kami kemudian dapat mendasarkan kriteria berhenti kami pada kriteria kecukupan uji itu
sesuai dengan teknik tes yang digunakan. Contohnya mungkin: 'Kami berhenti menguji
jika 100% cabang dicakup oleh kumpulan kasus uji, dan semua kasus uji menghasilkan
hasil yang gagal’.
Kedua model ini memandang pengujian sebagai salah satu fase dalam proses pengembangan
perangkat lunak.
Seperti disebutkan sebelumnya, ini bukan strategi yang sangat baik. Model pengujian siklus hidup
diperpanjang
kegiatan pengujian ke fase sebelumnya. Dalam model berorientasi evaluasi, penekanannya
adalah teknik analisis dan peninjauan untuk mendeteksi kesalahan dalam persyaratan dan desain
dokumen. Dalam model pencegahan, penekanannya adalah pada perencanaan dan desain yang cermat
dari kegiatan tes. Misalnya, desain awal kasus uji dapat mengungkapkan hal itu
persyaratan tidak dapat diuji dan dengan demikian aktivitas semacam itu membantu mencegah
kesalahan
yang dibuat di tempat pertama. Pengembangan berbasis tes juga termasuk dalam kategori ini.
Kami dapat mengamati pergeseran penekanan secara bertahap dalam praktik pengujian, dari
demonstrasi-
seperti pendekatan metode berorientasi pencegahan. Padahal masih banyak organisasi
memusatkan upaya pengujian mereka di akhir siklus hidup pengembangan, berbagai organisasi
telah menunjukkan bahwa kegiatan pengujian hulu dapat menjadi yang paling efektif. Kuantitatif
buktinya diberikan di bagian 13.8.3.
Pengujian tidak hanya menghasilkan perangkat lunak dengan lebih sedikit kesalahan. Pengujian
juga menghasilkan
pengetahuan berharga (konstruksi rawan kesalahan dan sebagainya) yang dapat dimasukkan kembali
408 PENGUJIAN PERANGKAT LUNAK
proses pembangunan. Dalam pandangan ini, pengujian adalah proses
pembelajaran, yang dapat diberikan tempat yang tepat dalam proses perbaikan.
Fase Kegiatan
Rekayasa kebutuhanDesain
- menentukan strategi pengujian
-- spesifikasi persyaratan tes
- menghasilkan data uji fungsional
Penerapan -- periksa konsistensi antara desain dan
kebutuhan-
spesifikasi
- mengevaluasi arsitektur perangkat lunak
Pemeliharaan -- uji desainnya
- menghasilkan data uji struktural dan fungsional
-- periksa konsistensi antara desain dan
implementasi-
pemikiran
-- uji implementasi
- menghasilkan data uji struktural dan fungsional
-- jalankan tes
- ulangi tes di atas sesuai dengan
derajat pembangunan kembali
Gambar 13.5 Aktivitas dalam berbagai fase siklus hidup perangkat lunak (Diadaptasi
dariW.R. Adrion, M.A. Branstad & J.C. Cherniavski, Validasi, verifikasi, dan
pengujian perangkat lunak komputer, Survei Komputasi ACM 14, 2 (1982),
Direproduksi dengan izin dari Associationfor Computing Machinery, Inc.)
– informasi yang salah (tidak dapat dilacak, tidak dapat diuji, ambigu, dan
sebagainya);
13.2.2 Desain
Kriteria yang disebutkan dalam sub-bagian sebelumnya (kelengkapan, konsistensi,
kelayakan, dan keterujian) juga penting untuk desain. Kesalahan yang paling
mungkin terjadi dalam desain menyerupai jenis kesalahan yang cenderung
dilakukan seseorang dalam spesifikasi persyaratan: informasi yang hilang, salah,
dan asing. Untuk desain juga, standar dokumentasi yang tepat sangat membantu
dalam mencegah jenis kesalahan ini. IEEE Standard1016, dibahas dalam bab 12,
adalah salah satu standar tersebut.
Selama fase desain, kami menguraikan sistem total menjadi subsistem dan
komponen, mulai dari spesifikasi kebutuhan. Kami kemudian dapat
mengembangkan tes berdasarkan proses dekomposisi ini. Desain bukanlah proses
sekali pakai. Selama proses desain sejumlah penyempurnaan berturut-turut akan
dilakukan, menghasilkan lapisan yang menunjukkan detail yang meningkat.
Mengikuti proses desain ini, tes yang lebih rinci dapat dikembangkan saat lapisan
bawah desain diputuskan.
Selama fase desain arsitektur, model konseptual tingkat tinggi dari sistem
dikembangkan dalam hal komponen dan interaksinya. Arsitektur ini dapat dinilai,
misalnya dengan membuat skenario yang mengungkapkan masalah kualitas seperti
pemeliharaan dan fleksibilitas dalam istilah yang sangat konkret, dan selanjutnya
mengevaluasi bagaimana arsitektur menangani skenario ini; lihat juga bagian 11.5.
Selama fase desain, kami juga dapat menguji desain itu sendiri. Ini termasuk
elemen penelusuran dari spesifikasi persyaratan ke elemen terkait di
13.2. PENGUJIAN DAN SIKLUS HIDUP 411
PERANGKAT LUNAK
deskripsi desain, dan sebaliknya. Teknik terkenal untuk melakukannya adalah, di antaranya
lainnya, simulasi, penelusuran desain, dan inspeksi desain.
Pada tahap rekayasa persyaratan, kemungkinan untuk secara formal mendokumentasikan
spesifikasi yang dihasilkan terbatas. Sebagian besar spesifikasi persyaratan dibuat
penggunaan deskripsi bahasa alami yang berlebihan. Untuk tahap desain, jumlahnya cukup banyak
peluang untuk secara resmi mendokumentasikan spesifikasi yang dihasilkan. Semakin formal
desain ditentukan, semakin banyak kemungkinan yang kita miliki untuk menerapkan teknik verifikasi,
serta pemeriksaan formal untuk konsistensi dan kelengkapan.
13.2.3 Penerapan
Selama fase implementasi, kami melakukan pengujian 'nyata'. Salah satu yang paling efektif
teknik untuk menemukan kesalahan dalam teks program adalah dengan hati-hati membaca teks itu, atau
membacanya.
Teknik ini telah berhasil diterapkan sejak lama. Agak diformalkan
varian dikenal sebagai pemeriksaan kode dan penelusuran kode. Kami juga dapat menerapkan
teknik abstraksi bertahap. Dalam abstraksi bertahap, fungsi kode adalah
ditentukan dalam beberapa langkah abstraksi, mulai dari kode itu sendiri. Berbagai
teknik uji manual akan dibahas pada bagian 13.4.
Ada banyak alat untuk mendukung pengujian kode. Kita dapat membedakan antara
alat untuk analisis statis dan alat untuk analisis dinamis. Alat analisis statis memeriksa
kode program tanpa mengeksekusinya. Mereka termasuk tes seperti: memiliki semua variabel
telah dideklarasikan dan diberi nilai sebelum digunakan?
Alat analisis dinamis digunakan bersamaan dengan eksekusi sebenarnya dari
kode, misalnya alat yang melacak bagian mana dari kode tersebut
ditutupi oleh tes sejauh ini.
Kami dapat mencoba membuktikan kebenaran kode menggunakan verifikasi formal
teknik.
Semua teknik di atas ditujukan untuk mengevaluasi kualitas kode sumber
serta kesesuaiannya dengan spesifikasi desain dan dokumentasi kode.
Sangat penting untuk mengontrol informasi pengujian dengan benar saat menguji kode. Peralatan
dapat membantu kami dalam melakukannya, misalnya test driver, test stubs dan test data generators.
Test driver adalah alat yang menghasilkan lingkungan pengujian untuk komponen yang akan dibuat
diuji. Rintisan uji melakukan yang sebaliknya: ia mensimulasikan fungsi komponen bukan
belum tersedia. Dalam pengujian bottom-up, secara umum kita akan banyak menggunakan test driver,
sementara pengujian top-down menyiratkan penggunaan bertopik uji. Strategi pengujian (top-down
versus bottom-up) mungkin sebagian dipengaruhi oleh teknik desain yang digunakan. Jika tinggi
tingkat, desain arsitektur diimplementasikan sebagai sistem kerangka yang belum memiliki lubang
untuk diisi, sistem kerangka itu dapat digunakan sebagai test driver.
Alat mungkin juga menguntungkan saat menjalankan tes (test harnesses dan test
sistem). Alat yang sederhana namun efektif adalah alat yang membandingkan hasil tes dengan
hasil yang diharapkan. Mata adalah media yang sangat tidak bisa diandalkan. Setelah waktu yang
singkat, semua hasil
terlihat baik-baik saja. Keuntungan tambahan dari jenis dukungan alat ini adalah membantu
mencapai format tes standar. Hal ini pada gilirannya membantu dengan pengujian regresi.
412 PENGUJIAN
PERANGKAT LUNAK
13.2.4 Pemeliharaan
Rata-rata, lebih dari 50% dari total biaya siklus hidup dihabiskan untuk
pemeliharaan. Jika kita memodifikasi perangkat lunak setelah sistem beroperasi
(karena kesalahan ditemukan belakangan, atau karena sistem harus diadaptasi
untuk mengubah persyaratan), kita harus menguji sistem lagi. Ini disebut pengujian
regresi. Agar ini berjalan lancar, kualitas dokumentasi dan kemungkinan dukungan
alat, merupakan faktor penting.
Di sebuah tes ulang-semua pendekatan, semua tes dijalankan kembali. Karena
ini mungkin menghabiskan banyak waktu dan tenaga, kami juga dapat memilih a tes
ulang selektif, di mana hanya beberapa tes yang dijalankan ulang. Teknik pemilihan
tes regresi kemudian digunakan untuk memutuskan subset mana yang harus
dijalankan. Kami ingin teknik ini menyertakan semua pengujian di mana program
yang dimodifikasi dan asli menghasilkan hasil yang berbeda, sambil menghilangkan
pengujian yang menghasilkan hasil yang sama.
1. Tambahkan tes
2. Jalankan semua tes, dan amati bahwa yang ditambahkan akan gagal
Dalam Pemrograman eXtreme murni, iterasi sangat kecil, dan mungkin memakan waktu beberapa menit
hingga, katakanlah, satu jam. Tetapi pengembangan yang digerakkan oleh tes juga dapat dilakukan
dengan lompatan yang lebih besar, dan
dikombinasikan dengan pendekatan yang lebih tradisional.
Pengembangan berbasis tes lebih dari sekadar metode pengujian. Ini adalah cara yang berbeda
mengembangkan perangkat lunak. Upaya dimasukkan ke dalam pengembangan dimuka kekuatan kasus
uji
satu untuk berpikir lebih hati-hati tentang apa artinya iterasi saat ini berhasil atau
gagal. Menulis kasus uji eksplisit memasukkan bagian dari pekerjaan analisis dan desain.
Daripada membuat diagram UML selama analisis kebutuhan, kami memproduksi
tes. Dan tes ini langsung digunakan, oleh orang yang sama yang mengimplementasikannya
fungsi yang latihan tes. Pengujian kemudian bukanlah renungan, tetapi menjadi
bagian integral dari proses pembangunan. Manfaat lain adalah bahwa kita memiliki tes
menetapkan dan kriteria uji untuk memutuskan keberhasilan iterasi. Eksperimen dengan
pengembangan berbasis tes menunjukkan bahwa itu meningkatkan produktivitas dan mengurangi cacat
tarif.
1. Tujuan
2. Dokumen referensi
3. Definisi
4. Ikhtisar verifikasi dan validasi
4.1. Organisasi
4.2. Jadwal induk
4.3. Ringkasan sumber
daya
4.4. Tanggung jawab
4.5. Alat, teknik dan
metodologi
5. Verifikasi dan validasi siklus hidup (V&V)
5.1. Manajemen V&V
5.2. Persyaratan fase
V&V
5.3. Fase desain V&V
5.4. Fase implementasi
V&V
5.5. Fase uji V&V
5.6. Fase instalasi dan
checkout V&V
5.7. Fase operasi dan
pemeliharaan V&V
6. Pelaporan verifikasi dan validasi perangkat lunak
7. Prosedur administrasi verifikasi dan validasi
7.1. Pelaporan dan
resolusi anomali
7.2. Kebijakan iterasi
tugas
7.3. Kebijakan
penyimpangan
7.4. Prosedur kontrol
7.5. Standar, praktik, dan
konvensi
Gambar 13.6 p Rencana Verifikasi dan Validasi (Sumber: Standar IEEE untuk
Rencana Verifikasi dan Validasi Perangkat Lunak, Standar IEEE 1012, 1986. Direproduksi dengan izin
dari IEEE.)
urutan tindakan untuk pelaksanaan setiap tes. Bersama-sama, empat dokumen pertama
menggambarkan input untuk eksekusi tes.
Test Item Transmittal Report menentukan item mana yang akan diuji. Dia
mencantumkan item, menentukan di mana menemukannya, dan status setiap item. Itu membentuk
informasi rilis untuk eksekusi pengujian yang diberikan.
Tiga item terakhir adalah output dari pelaksanaan tes. Test Log memberi
catatan kronologis peristiwa. Test Incident Report mendokumentasikan semua kejadian
diamati yang memerlukan penyelidikan lebih lanjut. Secara khusus, ini termasuk tes yang
output tidak seperti yang diharapkan. Terakhir, Laporan Rangkuman Ujian memberikan ikhtisar
dan evaluasi temuan. Penjelasan rinci tentang isi dari berbagai ini
dokumen diberikan dalam Standar IEEE untuk Dokumentasi Perangkat Lunak (IEEE829,
416 PENGUJIAN PERANGKAT LUNAK
1998).
Rencana Uji
Spesifikasi Desain Tes
Spesifikasi Kasus Uji
Spesifikasi Prosedur Uji
Laporan Pengiriman Butir Uji
Log Uji
Laporan Insiden Uji
Laporan Ringkasan Tes
13.4.1 Membaca
Kita semua membaca, dan membaca ulang, dan membaca ulang, teks program kita. Ini adalah tes
paling tradisional
teknik yang kita ketahui. Ini juga merupakan teknik yang sangat berhasil untuk menemukan kesalahan
dalam suatu program
teks (atau spesifikasi, atau desain).
Secara umum, lebih baik meminta orang lain membaca teks Anda. Penulis sebuah
teks tahu betul apa yang seharusnya dilakukan oleh program (atau jenis dokumen lainnya).
mengangkut. Untuk alasan ini, penulis mungkin cenderung mengabaikan hal-hal yang menderita
semacam kebutaan perdagangan.
Alasan kedua mengapa membaca oleh penulis sendiri mungkin kurang bermanfaat adalah karena
sulit untuk mengadopsi sikap destruktif terhadap pekerjaan sendiri. Namun seperti itu
sikap diperlukan untuk keberhasilan pengujian.
Bentuk membaca program satu sama lain yang agak dilembagakan diketahui
sebagai tinjauan sejawat. Ini adalah teknik untuk menilai program secara anonim
kualitas, keterbacaan, kegunaan, dan sebagainya.
Setiap orang yang mengambil bagian dalam peer review diminta untuk menyerahkan dua program:
'terbaik'
program dan salah satu kualitas yang lebih rendah. Program-program ini kemudian didistribusikan
secara acak
diantara peserta. Setiap peserta menilai empat program: dua program 'terbaik'
dan dua program dengan kualitas lebih rendah. Setelah semua hasil dikumpulkan, masing-masing
peserta mendapatkan evaluasi (anonim) dari program mereka, serta
statistik dari seluruh tes.
Tujuan utama dari tes ini adalah untuk memberikan programmer wawasan sendiri
kemampuan. Praktik peer review menunjukkan bahwa programmer cukup mumpuni
menilai kualitas perangkat lunak rekan-rekan mereka.
Prasyarat yang diperlukan untuk berhasil membaca kode orang lain adalah bisnis-
seperti sikap. Weinberg (1971) menciptakan istilah tersebut pemrograman tanpa ego untuk ini. Banyak
programmer melihat kode mereka sebagai sesuatu yang pribadi, seperti buku harian. Komentar
menghina
('bagaimana Anda bisa begitu bodoh untuk melupakan inisialisasi itu') dapat merusak
efektivitas penilaian tersebut. Peluang untuk sikap antisosial seperti itu
terjadi tampaknya agak lebih kecil dengan teknik manual yang lebih formal.
Dalam penelusuran, tim dipandu melalui kode menggunakan data uji. Tes ini
data sebagian besar dari jenis yang cukup sederhana. Jika tidak, segera telusuri logika program
menjadi terlalu rumit. Data uji lebih berfungsi sebagai sarana untuk memulai diskusi
daripada sebagai ujian serius dari program. Dalam setiap langkah dari proses ini, perancang dapat
dipertanyakan tentang alasan keputusan tersebut. Dalam banyak kasus, panduan
bermuara pada semacam simulasi manual.
Baik penelusuran dan inspeksi dapat diterapkan secara menguntungkan pada semua tahap
siklus hidup perangkat lunak. Satu-satunya prasyarat adalah adanya dokumen yang jelas dan dapat
diuji.
Diperkirakan metode peninjauan ini mendeteksi 50 hingga 90% cacat (Boehm dan
Basili, 2001). Kedua teknik tersebut tidak hanya berfungsi untuk mencari kesalahan. Jika diterapkan
dengan benar, ini
teknik dapat membantu untuk mempromosikan semangat tim dan moral. Pada tingkat teknis, the
orang yang terlibat dapat belajar dari satu sama lain dan memperkaya pengetahuan mereka tentang
algoritma,
gaya pemrograman, teknik pemrograman, konstruksi rawan kesalahan, dan sebagainya.
Dengan demikian, teknik ini juga berfungsi sebagai kendaraan untuk perbaikan proses. Di bawah
payung umum 'peer review', mereka adalah bagian dari area proses kunci level 3 CMM
Verifikasi (lihat bagian 6.6).
Bahaya potensial dari jenis ulasan ini adalah bahwa ulasan tersebut masih terlalu dangkal. Itu
orang yang terlibat menjadi kewalahan dengan informasi, mereka mungkin tidak cukup
pengetahuan tentang domain masalah, tanggung jawab mereka mungkin belum jelas
digambarkan. Akibatnya, proses peninjauan tidak membuahkan hasil yang memadai.
Parnas dan Weiss (1987) menjelaskan jenis proses peninjauan di mana orang-orang
terlibat harus berperan lebih aktif. Parnas membedakan antara berbagai jenis
tinjauan desain khusus. Masing-masing ulasan ini berkonsentrasi pada keinginan tertentu
sifat dari desain. Konsekuensinya, tanggung jawab orang-orang yang terlibat
jelas. Peninjau harus menjawab daftar pertanyaan ('dalam kondisi apa
semoga fungsi ini disebut ',' apa efek dari fungsi ini pada perilaku
fungsi lain, dan sejenisnya). Dengan cara ini, peninjau dipaksa untuk belajar dengan hati-hati
informasi desain yang diterima. Masalah dengan kuesioner dan dokumentasi
dapat diajukan ke desainer, dan kuesioner yang telah diisi didiskusikan oleh
desainer dan reviewer. Eksperimen menunjukkan bahwa inspeksi dengan tinjauan khusus
peran lebih efektif daripada inspeksi di mana peran review tidak terspesialisasi.
Komponen yang sangat penting dari inspeksi Fagan adalah pertemuan di mana
dokumen dibahas. Karena pertemuan dapat menimbulkan biaya atau jeda waktu yang cukup besar,
seseorang dapat mencoba melakukannya tanpa mereka. Eksperimen menunjukkan bahwa nilai tambah
kelompok
pertemuan, sejauh menyangkut jumlah masalah yang teridentifikasi, cukup kecil.
1 prosedur binsearch
2 (A: Himpunan [1..n] dari bilangan bulat; x: bilangan
bulat): bilangan bulat;
3 dulu rendah, tinggi, sedang: bilangan bulat; ditemukan:
boolean;
4 mulai rendah:= 1; tinggi:= n; ditemukan:= salah;
5 ketika (rendah
�
422 PENGUJIAN PERANGKAT
LUNAK
13.5 Teknik Tes Berbasis
Cakupan
Pertanyaan: Apa yang Anda lakukan ketika Anda melihat grafik?
Jawab: Tutupi!
(Beizer, 1995)
Dalam teknik coverage-based test, kecukupan pengujian dinyatakan dalam cakupan produk
yang akan diuji, misalnya persentase pernyataan yang dieksekusi atau persentase persyaratan
fungsional yang diuji.
Pengujian berbasis cakupan seringkali didasarkan pada jumlah instruksi, cabang, atau jalur
yang dikunjungi selama eksekusi suatu program. Sangat membantu untuk mendasarkan diskusi
tentang jenis pengujian berbasis cakupan ini pada gagasan tentang grafik kontrol. Dalam grafik
kontrol ini, simpul menunjukkan tindakan, sedangkan tepi (diarahkan) menghubungkan tindakan
dengan tindakan selanjutnya (dalam waktu). Path adalah urutan node yang dihubungkan oleh
edge.
Grafik mungkin berisi siklus, yaitu P
jalur
13.5. TEKNIK UJI BERBASIS CAKUPAN 4
2
1 prosedur gelembung 3
2 (dulu A: Himpunan [1..n] dari bilangan bulat; n:
bilangan bulat);
3 dulu i, j, temp: bilangan bulat;
4 mulai
5 untuk saya:= 2 ke N Mengerjakan
6 jika a[i]
�
424 PENGUJIAN PERANGKAT LUNAK
akan melakukan. Kemungkinan kombinasi lain dari nilai kebenaran predikat atom
(Saya = 1,J = 0 dan Saya = 0, J = 0) tidak perlu dipertimbangkan untuk mencapai
cakupan cabang. Cakupan berbagai kondisi mensyaratkan bahwa semua
kemungkinan kombinasi predikat elementer dalam kondisi dicakup oleh perangkat
uji. Kriteria ini disebut juga dengan cakupan cabang yang diperluas.
Terakhir, metrik kompleksitas siklomatik McCabe (McCabe, 1976) juga telah
diterapkan pada pengujian. Kriteria ini juga didasarkan pada representasi grafik
kontrol dari suatu program.
Himpunan basis adalah himpunan jalur bebas linier maksimal melalui grafik.
Kompleksitas siklomatis (
CV
13.5. TEKNIK UJI BERBASIS CAKUPAN 425
Sebagai contoh, perhatikan teks program pada gambar 13.10. Grafik kontrol yang
sesuai diberikan pada gambar 13.11. Untuk grafik ini,
Dia
426 PENGUJIAN PERANGKAT LUNAK
– Cakupan semua def hanya membutuhkan set tes sedemikian rupa sehingga
setiap definisi digunakan setidaknya sekali.
gunakan model grafik ini untuk mendapatkan kasus uji dan menerapkan salah satu cakupan aliran
kontrol
kriteria untuk menilai kecukupannya.
Fungsi Memesan memungkinkan pengguna untuk memesan buku baru. Pengguna ditampilkan
mengisi-in-the-
layar kosong dengan bidang seperti Pengarang, Judul, Penerbit, Harga Dan Departemen. Itu
Judul, Harga Dan Departemen bidang adalah wajib. Itu Departemen lapangan digunakan
untuk memeriksa apakah anggaran departemen cukup besar untuk membeli buku ini. Jika
jadi, buku itu dipesan dan
anggaran departemen dikurangi sesuai dengan itu.
Rute yang sangat mirip dapat diikuti jika persyaratan dinyatakan dalam bentuk
kasus penggunaan. Gambar 13.14 memberikan kemungkinan penulisan ulang fragmen dari gambar
13.12.
Ini menggunakan format dari (Cockburn, 2001). Kasus penggunaan menggambarkan keduanya normal
kasus, yang disebut Skenario Sukses Utama, serta ekstensi yang mencakup situasi
yang bercabang dari jalur normal karena beberapa kondisi. Untuk setiap ekstensi,
kondisi dan langkah-langkah yang diambil dicantumkan. Perhatikan gambar 13.13 secara langsung
meniru deskripsi use case dari 13.14. Deskripsi use case juga memungkinkan kita
untuk secara langsung menurunkan kasus uji dan menerapkan kriteria cakupan aliran kontrol.
Secara umum, masalah utama dalam menentukan satu set kasus uji adalah
mempartisi domain program menjadi sejumlah (kecil) kelas kesetaraan. Kami mencoba untuk
lakukan sedemikian rupa sehingga menguji elemen representatif dari kelas sudah cukup untuk
seluruh kelas. Menggunakan kriteria cakupan aliran kontrol, misalnya, kami berasumsi bahwa ada
tes beberapa node atau cabang sama baiknya dengan tes lainnya. Dalam contoh di atas,
misalnya, kita berasumsi bahwa setiap eksekusi node berlabel 'check dept. anggaran'
akan melakukan.
Titik lemah dalam prosedur ini adalah asumsi yang mendasari program tersebut
berperilaku sama pada semua data dari kelas tertentu. Jika asumsi tersebut benar, maka
partisi sempurna dan begitu juga dengan set pengujian.
Akan tetapi asumsi tersebut pada umumnya tidak berlaku (lihat juga bagian 13.1.2).
Andaikan itu M
430 PENGUJIAN PERANGKAT LUNAK
Teknik lain adalah membuat program diuji secara independen oleh dua
kelompok. Kesalahan yang ditemukan oleh kelompok pertama kemudian dapat
dianggap sebagai kesalahan unggulan untuk kelompok kedua. Namun, dalam
menggunakan teknik ini, kita harus menyadari bahwa ada kemungkinan bahwa
kedua kelompok akan mendeteksi kesalahan sederhana (jenis yang sama).
Akibatnya, gambar mungkin terdistorsi.
Aturan praktis yang berguna untuk teknik ini adalah sebagai berikut: jika kita
menemukan banyak kesalahan yang diunggulkan dan yang lainnya relatif sedikit,
hasilnya dapat dipercaya. Sebaliknya tidak benar. Fenomena ini berlaku lebih
umum: jika, selama pengujian komponen tertentu, banyak kesalahan ditemukan, ini
tidak boleh dianggap sebagai tanda positif. Justru sebaliknya, ini merupakan indikasi
bahwa komponen tersebut mungkin berkualitas rendah. Seperti yang diamati Myers:
'Kemungkinan adanya lebih banyak kesalahan dalam suatu bagian dari suatu
program sebanding dengan jumlah kesalahan yang sudah ditemukan di bagian itu.'
(Myers, 1979). Fenomena yang sama telah diamati dalam beberapa percobaan, di
mana kuat hubungan linier ditemukan antara jumlah cacat yang ditemukan selama
fase awal pengembangan dan jumlah cacat yang ditemukan kemudian.
Ada dua varian utama dari pengujian mutasi: pengujian mutasi yang kuat Dan
pengujian mutasi lemah. Misalkan kita punya
P
program
43 PENGUJIAN PERANGKAT LUNAK
2
garis
13.8. PERBANDINGAN TEKNIK PENGUJIAN 433
Salah satu strategi pengujian tersebut berkonsentrasi pada poin ON dan OFF. Titik ON adalah
titik di perbatasan subdomain. Jika subdomain terbuka sehubungan dengan suatu
perbatasan, maka titik OFF perbatasan adalah titik tepat di dalam perbatasan itu. Jika
subdomain ditutup sehubungan dengan beberapa perbatasan, maka titik OFF terletak tepat di
luar perbatasan itu. Dua subdomain yang berdekatan berbagi titik ON yang sama; mereka
mungkin berbagi OFF yang sama
titik. Pada gambar 13.16, lingkaran padat di garisusia
434 PENGUJIAN PERANGKAT LUNAK
– Beberapa kesalahan unggulan ditemukan dengan cepat, beberapa
memerlukan beberapa pengujian, dan beberapa tetap tidak terdeteksi bahkan
setelah 25.000 pengujian. Pola ini ditemukan pada masing-masing dari 17
program;
Di masa lalu, beberapa upaya telah dilakukan untuk mendapatkan lebih banyak
wawasan tentang aspek teoretis dari teknik pengujian. Contohnya adalah penelitian
yang bertujuan untuk menghubungkan kriteria kecukupan tes yang berbeda. Kriteria
kecukupan tes berfungsi sebagai aturan yang digunakan untuk menentukan apakah
pengujian dapat dihentikan atau tidak. Isu penting kemudian adalah untuk
memutuskan apakah salah satu kriteria tersebut adalah 'lebih baik' dari yang lain.
Pada bagian 13.8.1, kami membandingkan kekuatan sejumlah kriteria kecukupan
pengujian yang dibahas pada bagian sebelumnya. Pada bagian 13.8.2 kami
menyelidiki sejumlah sifat mendasar dari kriteria kecukupan pengujian. Jenis
penelitian ini bertujuan untuk mendapatkan wawasan yang lebih dalam tentang
sifat-sifat teknik pengujian yang berbeda.
Beberapa percobaan telah dilakukan untuk membandingkan teknik pengujian
yang berbeda. Data nyata dari sejumlah proyek juga tersedia pada kemampuan
deteksi kesalahan dari teknik pengujian yang digunakan dalam proyek tersebut.
Pada bagian 13.8.3 kami membahas beberapa temuan ini yang dapat memberikan
beberapa wawasan praktis tentang keunggulan sejumlah teknik pengujian.
jika A <
13.8. PERBANDINGAN TEKNIK PENGUJIAN 435
jika BENAR
Kemudian x:= 1
kalau tidak x:= 2
Cabang-else tidak pernah dieksekusi, namun sebagian besar kriteria kecukupan mengharuskan cabang
ini
diambil. Jalur yang tidak layak juga dihasilkan dari perulangan. Jika sebuah loop berbentuk
tidak akan ada jalur layak yang melintasi siklus yang dihasilkan dalam grafik yang lain
dari sepuluh kali.
Tidak ada skala linier sederhana yang menjadi kekuatan semua
kriteria kecukupan berbasis program dapat digambarkan. Untuk kriteria yang dibahas di
bagian 13.5--13.7, hierarki subsum digambarkan pada gambar 13.17, sejauh ini
diketahui. Sebuah anak panah A !
436 PENGUJIAN PERANGKAT LUNAK
Gambar 13.19 Hasil efektivitas biaya ditemukan di (Collofello dan Woodfield, 1989)
Akhirnya, sistem perangkat lunak bukanlah entitas statis. Perangkat lunak sering
diimplementasikan dan diuji secara bertahap. Keandalan sistem yang berkembang
sulit diungkapkan. Dalam diskusi selanjutnya, kami berasumsi bahwa sistem kami
stabil dari waktu ke waktu. Kami dapat mencirikan perilaku kegagalan perangkat
lunak dengan cara yang berbeda. Misalnya, kita dapat mempertimbangkan waktu
yang diharapkan untuk kegagalan berikutnya, interval waktu yang diharapkan antara
kegagalan yang berurutan, atau jumlah kegagalan yang diharapkan dalam interval
waktu tertentu. Dalam semua kasus, kami memperhatikan variabel acak, karena
kami tidak tahu persis kapan perangkat lunak akan gagal. Setidaknya ada dua
alasan untuk ketidakpastian ini. Pertama, kami tidak tahu di mana pemrogram
membuat kesalahan. Kedua, hubungan antara input tertentu dan urutan eksekusi
set instruksi yang sesuai biasanya tidak diketahui. Oleh karena itu, kami dapat
memodelkan kegagalan berikutnya sebagai proses stokastik. Proses stokastik
seperti itu dicirikan oleh, antara lain, bentuk dan distribusi probabilitas dari variabel
acak.
Saat perangkat lunak gagal, kami mencoba menemukan dan memperbaiki
kesalahan yang menyebabkan kegagalan ini. Secara khusus, situasi ini muncul
selama fase pengujian siklus hidup perangkat lunak. Karena kita mengasumsikan
situasi yang stabil, penerapan model keandalan sangat tepat selama pengujian
sistem, ketika masing-masing komponen telah diintegrasikan ke dalam satu sistem.
Situasi pengujian sistem ini khususnya akan dibahas di bawah ini.
Dalam situasi ini, perilaku kegagalan tidak akan mengikuti pola konstan tetapi
akan berubah dari waktu ke waktu, karena kesalahan yang terdeteksi kemudian
diperbaiki. Proses stokastik yang distribusi probabilitasnya berubah dari waktu ke
waktu disebut tidak homogen. Variasi waktu antara kegagalan yang berurutan dapat
digambarkan dalam bentuk fungsi
�(�
13.10. MEMPERKIRAKAN KEANDALAN 445
PERANGKAT LUNAK
kami memperoleh
�(�)
446 PENGUJIAN PERANGKAT LUNAK
gambar ini. Ini belum tentu demikian. Itu tergantung pada nilai sebenarnya dari parameter
model.)
�
Kedua model
memiliki dua
parameter:
13.10. MEMPERKIRAKAN KEANDALAN PERANGKAT LUNAK 4
4
7
sebesar penurunan intensitas kegagalan. Telah ditemukan bahwa BM masih memodelkan
situasi cukup baik dalam hal profil operasional yang cukup tidak seragam.
Dengan profil operasional non-seragam yang kuat, kurva intensitas kegagalan akan terjadi
bentuk cembung, seperti pada LPM. Beberapa kelas input kemudian akan dipilih secara relatif sering.
Akibatnya, kesalahan tertentu akan muncul lebih awal dan diperbaiki lebih cepat. Ini
koreksi akan berdampak lebih besar pada penurunan intensitas kegagalan.
Pada kedua model tersebut,
�
448 PENGUJIAN PERANGKAT LUNAK
panjang
13.11. RINGKASAN 449
berbasis proyek per proyek. Karena kita tidak mengetahui sebelumnya model mana
yang akan berkinerja terbaik, adalah bijaksana untuk mengadopsi pendekatan
eklektik, dan menggunakan sejumlah model yang berbeda secara bersamaan.
13.11 Ringkasan
Dalam bab ini kita membahas sejumlah besar teknik tes. Kami menekankan
pentingnya deteksi kesalahan dini. Penting untuk memperhatikan pengujian selama
tahap awal proses pengembangan perangkat lunak. Aktivitas pengujian awal adalah
aktivitas yang paling hemat biaya. Kegiatan pengujian awal memberikan peluang
untuk mencegah kesalahan dibuat sejak awal. Bentuk ekstrim dari pengembangan
yang digerakkan oleh tes, di mana tes menulis adalah hal pertama yang kami
lakukan.
450 PENGUJIAN PERANGKAT LUNAK
Latihan
1. Apa yang dimaksud dengan kriteria kecukupan tes? Jenis kegunaan apa yang dimilikinya?
4. Apa perbedaan antara pengujian kotak hitam dan pengujian kotak putih?
dapat berkonsultasi dengan teks apa pun tentang struktur data untuk mempelajari lebih
lanjut tentang tumpukan.) The
rutin diuji menggunakan input berikut:
n = 5, k = 2,
A[1] = 80, A[2] = 60, A[3] = 90, A[4] = 70, A[5] = 10.
Apakah tes di atas menghasilkan cakupan pernyataan 100%? Jika tidak, berikan satu atau
lebih banyak kasus uji tambahan sehingga cakupan pernyataan 100% diperoleh.
10. Untuk contoh rutin dari latihan 9, buatlah rangkaian tes yang menghasilkan 100%
cakupan cabang.
11. Untuk contoh rutin dari latihan 9, buatlah satu set tes yang mencapai
Cakupan Semua Penggunaan.
Fragmen 1:
ditemukan:= salah; penghitung:= 1;
ketika (menangkal <
454 PENGUJIAN PERANGKAT LUNAK
18. Apa perbedaan utama antara model waktu eksekusi dasar dan model
waktu eksekusi logaritmik Poisson dari keandalan perangkat lunak?
19. Berikan definisi keandalan perangkat lunak. Berikan alasan untuk berbagai
bagian dari definisi ini.
23. �
13.12. BACAAN LEBIH LANJUT 455
Tentukan fungsi (melalui kondisi awal dan akhir) dari rutin ini
menggunakan abstraksi bertahap.
26. ~
456 PENGUJIAN PERANGKAT LUNAK
32. ~
14
TUJUAN PEMBELAJARAN
�
458 PEMELIHARAAN PERANGKAT LUNAK
Perangkat lunak, tidak seperti anak kecil, tidak tumbuh lebih pintar dan
lebih cakap; sayangnya, tampaknya menjadi tua dan rewel.
(Lyons, 1981)
Pertimbangkan UBank, bank multinasional, tipikal organisasi besar yang sangat bergantung
pada otomatisasi untuk operasi hariannya. UBank adalah hasil dari sejumlah merger dan
pengambilalihan.
UBank memiliki ratusan kantor yang tersebar di seluruh dunia. Ini memiliki sejumlah
mainframe di situs pusat, serta ribuan workstation dan printer
terhubung. Ini memiliki 24
konektivitas internet, di
seluruh dunia, dan
diperjuangkan
459
Proses memodifikasi sistem atau komponen perangkat lunak setelah
pengiriman untuk memperbaiki kesalahan, meningkatkan kinerja atau
atribut lainnya, atau beradaptasi dengan lingkungan yang berubah.
Jadi pemeliharaan perangkat lunak, khususnya, bukan terbatas pada koreksi kesalahan laten.
Perbedaan antara pengembangan dan pemeliharaan kabur, untuk sedikitnya. Ini
membuat sulit untuk sangat berani tentang persentase dan jenis kategori pemeliharaan.
Pada bagian 14.1, kita meninjau kembali pembahasan tentang jenis kegiatan pemeliharaan dari
bab 1 dan memberikan pandangan yang lebih seimbang.
Perubahan lingkungan sistem dan kebutuhan pengguna tidak dapat dihindari.
Perangkat lunak memodelkan bagian dari realitas, dan realitas berubah, suka atau tidak suka. Sehingga
perangkat lunak juga harus berubah. Itu harus berkembang. Persentase besar dari apa yang kita
gunakan
untuk memanggil pemeliharaan, sebenarnya adalah evolusi.
Saat mencari cara untuk mengurangi masalah pemeliharaan, ada baiknya untuk ikut serta
perhatikan klasifikasi aktivitas pemeliharaan yang diberikan di bab 1. Solusi yang memungkinkan
untuk dipertimbangkan meliputi:
�
460 PEMELIHARAAN PERANGKAT LUNAK
proyek pengembangan dengan fase analisis dan desain yang menghasilkan
presentasi logis dari fungsi sistem yang terjadi lebih tinggi biaya pemeliharaan
daripada proyek yang tidak menghasilkan presentasi seperti itu. Penjelasannya
adalah bahwa pengguna akhirnya mempelajari apa yang wajar ditanyakan selama
pemeliharaan. Jika mereka tahu pendekatan terstruktur telah diikuti, mereka
mengharapkan peningkatan dapat diminta, dan akan direalisasikan. Jadi mereka
akan meminta peningkatan. Jika mereka tahu tidak ada pendekatan terstruktur yang
diikuti, mereka berharap hanya perbaikan bug yang diperlukan yang dapat
dilakukan, dan permintaan pemeliharaan akan tetap moderat. Jadi kualitas yang
lebih tinggi mungkin memerlukan biaya perawatan yang lebih tinggi.
Masalah pemeliharaan tetap ada. Beberapa dari masalah ini bersifat inheren --
sistem menurun ketika diubah berulang kali -- sementara yang lain disebabkan oleh
fakta kehidupan yang sederhana: aktivitas pengembangan dan pemeliharaan nyata
dilakukan dengan cara yang kurang sempurna. Penyebab utama dari masalah
pemeliharaan yang dihasilkan dibahas di bagian 14.2.
Pembahasan masalah pemeliharaan ini menyarankan dua pendekatan untuk
memperbaiki situasi. Bagian 14.3 membahas berbagai cara untuk menemukan
kembali fakta yang hilang ('apa yang dicapai rutin ini', 'desain mana yang mendasari
sistem tertentu', dan sejenisnya) dan merestrukturisasi sistem perangkat lunak yang
ada untuk meningkatkan kemampuan pemeliharaannya. Pendekatan kedua,
dibahas dalam bagian 14.5, memerlukan sejumlah tindakan organisasi dan
manajerial untuk meningkatkan pemeliharaan perangkat lunak.
Data pada gambar 14.1 didasarkan pada (Lientz dan Swanson, 1980) dan
mencerminkan keadaan praktik pada tahun 1970-an. Studi selanjutnya
menunjukkan bahwa situasinya tidak berubah menjadi lebih baik. Nosek dan Palvia
(1990) sekali lagi mengangkat masalah pemeliharaan utama dan sampai pada
kesimpulan yang mengganggu bahwa masalah pemeliharaan tetap hampir sama,
terlepas dari kemajuan dalam metodologi dan teknik pengembangan terstruktur.
Penelitian lain, seperti Basili et al. (1996) memberikan hasil yang kurang lebih sama.
Distribusi relatif kegiatan pemeliharaan adalah tentang
462 PEMELIHARAAN PERANGKAT LUNAK
sama seperti 20 tahun yang lalu. Meskipun sistem telah menjadi lebih besar, staf
pemeliharaan telah bertambah, ada lebih banyak sistem, dan ada kecenderungan
yang pasti untuk peningkatan upaya pemeliharaan relatif terhadap upaya
pengembangan.
Beberapa penelitian memberikan hasil yang cukup berbeda dengan gambaran
umum di atas. Schach dkk. (2003), misalnya, menyelidiki upaya pemeliharaan
dalam tiga sistem dan menemukan persentase pemeliharaan korektif sebesar 50%
atau lebih, dan persentase yang sangat rendah untuk pemeliharaan adaptif. Tidak
ada argumen yang meyakinkan untuk perbedaan ini.
Di banyak organisasi, definisi pemeliharaan perangkat lunak tidak mengikuti
definisi IEEE. Beberapa organisasi misalnya mendefinisikan upaya perubahan lebih
besar dari, katakanlah, tiga bulan, sebagai pengembangan daripada pemeliharaan.
Ini mengaburkan gambar lebih jauh. Dalam praktiknya juga, orang sulit
membedakan antara pemeliharaan adaptif dan perfeksif. Yang tersisa kemudian
adalah perbedaan antara memperbaiki kesalahan dan 'sisanya'. Yang terakhir
sebagian besar melayani 75% atau lebih dari upaya pemeliharaan. Kategori
pemeliharaan dari (Lientz dan Swanson, 1980) mengacu pada perangkat lunak saja.
Menjaga perangkat lunak tetap hidup juga menimbulkan biaya lain. Misalnya,
pengguna baru harus dilatih, dan helpdesk perlu memiliki staf. Saat ini, tidak jarang
biaya pendukung ini mencapai sekitar 25% dari biaya pemeliharaan sistem.
Cara lain untuk melihat distribusi biaya pemeliharaan dan jenis tugas
pemeliharaan yang berlaku adalah sepanjang dimensi waktu. Kami dapat
membedakan tahapan siklus hidup pemeliharaan berikut:
�
14.2. PENYEBAB UTAMA MASALAH 463
PEMELIHARAAN
lazim. Bennett dan Rajlich (2000) menggunakan istilah tersebut tahap evolusi Dan pelayanan
panggung untuk membedakan antara periode di mana sistem dapat berhasil berkembang
dan periode berikutnya di mana hal ini tidak lagi terjadi. Pada tahap terakhir, perubahan
menjadi taktis. Misalnya, perubahan yang diperlukan diwujudkan melalui tambalan dan
pembungkus.
Akhirnya, kita dapat mempertimbangkan distribusi usaha atas aktivitas tunggal
tugas pemeliharaan. Untuk tugas-tugas terkait kode, kegiatan utamanya adalah:
�
464 PEMELIHARAAN PERANGKAT LUNAK
Orang yang merekayasa ulang perangkat lunak berhak berpikir bahwa ini
bukanlah cara yang tepat untuk bereaksi terhadap perangkat keras yang tidak
berfungsi. Pesawat tempur terbang di ketinggian yang sangat tinggi atau sangat
dekat dengan tanah. Mereka tidak terbang di antaranya. Jadi dia menghubungi
pejabat yang bertanggung jawab dan meminta izin untuk menampilkan pesan
peringatan yang jelas, seperti 'PULL UP' yang berkedip.
Izin untuk mengubah nilai yang ditampilkan ditolak. Generasi pilot tempur
sekarang dilatih untuk bereaksi dengan tepat terhadap pesan default saat ini.
Manual pelatihan mereka bahkan menyatakan frasa peringatan seperti 'Jika
pembaca altimeter menampilkan nilai 3000 selama lebih dari satu detik, PULL UP'.
Cerita ini tidak mungkin benar. Atau bisakah? Itu menggambarkan beberapa
penyebab utama masalah pemeliharaan:
– pemeliharaan perangkat lunak memiliki citra buruk (ini tidak diilustrasikan oleh
anekdot tapi jelas merupakan masalah pemeliharaan).
14.2. PENYEBAB UTAMA MASALAH 465
PEMELIHARAAN
Kode tidak terstruktur digunakan di sini sebagai istilah umum untuk sistem yang dirancang dengan buruk
atau diberi kode. Itu memanifestasikan dirinya dalam berbagai cara: penggunaan gotos, prosedur
panjang,
penamaan yang buruk dan tidak konsisten, kompleksitas modul tinggi, kohesi lemah dan kuat
penggabungan, kode yang tidak dapat dijangkau, pernyataan if bersarang dalam, dan sebagainya.
Bahkan jika sistem pada awalnya dirancang dan dibangun dengan baik, mereka mungkin telah
menjadi seperti itu
lebih sulit untuk mempertahankan dalam perjalanan waktu. Banyak perangkat lunak yang harus
dipertahankan adalah
dikembangkan di era pemrograman pra-terstruktur. Sebagian darinya mungkin masih tertulis
bahasa campuran. Itu dirancang dan ditulis untuk mesin dengan pemrosesan terbatas
dan kapasitas memori. Itu mungkin telah dipindahkan ke perangkat keras atau perangkat lunak yang
berbeda
platform lebih dari sekali tanpa struktur dasarnya berubah.
Ini juga bukan keseluruhan cerita. Struktur buruk dari banyak sistem masa kini
pada tingkat desain dan kode tidak semata-mata disebabkan oleh usia mereka. Sebagai hasil dari
studi mereka tentang dinamika sistem perangkat lunak, Lehman dan Belady merumuskan a
serangkaian Hukum Evolusi Perangkat Lunak (lihat juga bab 3). Yang paling bertahan
pemeliharaan perangkat lunak adalah:
Sistem perangkat lunak besar cenderung bertahan dalam produksi untuk waktu yang lama. Setelah
dimasukkan ke dalam
produksi, peningkatan tidak bisa dihindari. Sebagai konsekuensi dari penerapan
perangkat tambahan ini, entropi sistem perangkat lunak meningkat dari waktu ke waktu. Inisial
struktur menurun dan kompleksitas meningkat. Ini pada gilirannya memperumit perubahan di masa
depan
ke sistem. Sistem perangkat lunak seperti itu menunjukkan tanda-tanda radang sendi. Pemeliharaan
preventif
dapat menunda timbulnya entropi tetapi, biasanya, hanya pencegahan dalam jumlah terbatas
pemeliharaan dilakukan.
Akhirnya, sistem tidak dapat dipertahankan dengan baik lagi. Dalam praktiknya, itu
seringkali tidak mungkin untuk sepenuhnya mengganti sistem lama dengan yang baru. Mengembangkan
sistem yang benar-benar baru dari awal terlalu mahal, atau akan berisi
terlalu banyak kesalahan sisa untuk memulai, atau tidak mungkin mengartikulasikan ulang yang asli
persyaratan. Biasanya, kombinasi dari faktor-faktor ini berlaku. Meningkatkan perhatian adalah
oleh karena itu diberikan cara untuk 'meremajakan' atau 'mendaur ulang' sistem perangkat lunak yang
ada, cara untuk
membuat versi terstruktur dari sistem operasional yang ada agar menjadi
lebih mudah dipelihara.
Entropi tidak hanya disebabkan oleh pemeliharaan. Dalam metode tangkas, seperti XP, memang
begitu
tahap perantara yang diterima. Metode ini memiliki langkah eksplisit untuk meningkatkan
kode. Ini dikenal sebagai pemfaktoran ulang. Refactoring didasarkan pada identifikasi 'bau tidak sedap'
dan ulang kode untuk menyempurnakan desainnya (lihat juga bagian 14.3.1).
466 PEMELIHARAAN PERANGKAT LUNAK
Pada tingkat rendah proses perbaikan kode dapat didukung oleh alat-alat seperti
restruktur kode dan pemformat ulang. Untuk mendapatkan abstraksi tingkat yang
lebih tinggi umumnya membutuhkan bimbingan manusia dan pemahaman sistem
yang cukup.
Ini membawa kita ke masalah pemeliharaan kedua: sedikitnya pengetahuan
yang dimiliki pemrogram pemeliharaan tentang sistem atau domain aplikasi.
Perhatikan bahwa kurangnya pengetahuan domain aplikasi berkaitan dengan
pengembangan perangkat lunak secara umum (Curtiset al., 1988). Situasi
sehubungan dengan pemeliharaan perangkat lunak diperparah oleh fakta bahwa
biasanya hanya ada sedikit sumber yang dapat digunakan untuk membangun
pemahaman semacam itu. Dalam banyak kasus, kode sumber adalah satu-satunya
sumber terpercaya. Masalah utama dalam pemeliharaan perangkat lunak kemudian
adalah mendapatkan pemahaman yang cukup tentang sistem dari kode sumbernya.
Semakin mirip spageti kode ini, semakin sulit untuk menguraikannya. Pemahaman
yang tidak memadai menghasilkan perubahan yang mungkin memiliki efek riak tak
terduga yang pada gilirannya menimbulkan tugas pemeliharaan lebih lanjut.
Pemeliharaan juga terhambat jika dokumentasi tidak ada, tidak mencukupi, atau
kedaluwarsa. Pemrogram berpengalaman telah belajar untuk tidak mempercayai
dokumentasi: sebuah pengamatan yang mengecewakan, meskipun realistis.
Selama pengembangan awal, dokumentasi seringkali gagal karena tenggat waktu
dan batasan waktu lainnya. Pemeliharaan itu sendiri sering terjadi dalam mode
'perbaikan cepat' di mana kode ditambal untuk mengakomodasi perubahan.
Dokumentasi teknis dan deskripsi perangkat lunak tingkat tinggi lainnya kemudian
tidak diperbarui. Pemrogram pemeliharaan yang harus berurusan dengan sistem ini
telah menjadi sebagian sejarawan, sebagian detektif, dan sebagian peramal (Corby,
1989). Prosedur kerja yang hati-hati dan perhatian manajemen dapat mencegah
hal tersebut terjadi. Tetapi meskipun demikian kami tidak yakin bahwa jenis
dokumentasi yang tepat akan dihasilkan. Dua masalah patut mendapat perhatian
kita dalam hal ini:
�
14.3. REVERSE ENGINEERING DAN 467
REFACTORING
programmer pemeliharaan menghalangi mereka untuk menjadi cukup akrab dengan
perangkat lunak yang akan dipertahankan yang pada gilirannya menghambat pemeliharaan di masa
mendatang.
Akan jauh lebih baik untuk memiliki sikap yang lebih positif terhadap pemeliharaan.
Mempertahankan perangkat lunak adalah pekerjaan yang sangat sulit. Konten pekerjaan pemeliharaan
programmer lebih menuntut daripada konten pekerjaan programmer pengembangan.
Program biasanya ditulis oleh orang lain, orang yang seringkali tidak bisa
berkonsultasi karena mereka telah meninggalkan perusahaan atau terjerat dalam pengembangan
sistem baru. Saat membuat perubahan dalam sistem yang ada, seseorang terikat dengan sangat
struktur sistem itu. Biasanya ada tekanan waktu yang kuat pada pemeliharaan
personil. Pekerjaan pemeliharaan membutuhkan lebih banyak keterampilan dan pengetahuan daripada
pengembangan
melakukan. Ini lebih sulit (Chapin, 1987).
Kelompok pemeliharaan sangat penting. Merekalah yang membuat semuanya berjalan.
Adalah tugas mereka untuk memastikan bahwa perangkat lunak mengikuti realitas yang selalu berubah.
Dibandingkan dengan pengembangan perangkat lunak, pemeliharaan perangkat lunak lebih berdampak
pada
kesejahteraan suatu organisasi.
Sangat modis dalam perdagangan kami untuk membuat istilah baru sesekali dan menawarkannya
sebagai
obat mujarab untuk krisis perangkat lunak. Salah satu istilah magisnya adalah rekayasa balik.
Itu datang dengan samaran yang berbeda dan berarti hal yang sama sekali berbeda untuk berbeda
rakyat. Dalam pembahasan di bawah ini kita akan menggunakan terminologi dari (Chikofsky dan
Lintas II, 1990). Istilah yang berbeda diilustrasikan pada Gambar 14.5.
Chikofsky mendefinisikan reverse engineering sebagai 'proses menganalisis sistem subjek
ke
– membuat representasi sistem dalam bentuk lain atau pada tingkat yang lebih tinggi
abstraksi.'
Menurut definisi ini, rekayasa balik hanya menyangkut pemeriksaan suatu sistem.
Adaptasi sistem dan segala bentuk restrukturisasi, seperti mengubah gotos menjadi
konstruksi kontrol terstruktur, tidak termasuk dalam definisi ketat rekayasa balik.
Reverse engineering mirip dengan rekonstruksi cetak biru yang hilang. Mengisi
ulang kamar mandi atau menambah kamar tidur baru adalah urusan yang sama
sekali berbeda. Jika pembedaan ini tidak dibuat dengan hati-hati, arti dari istilah
reverseengineering terlalu encer dan direduksi menjadi sinonim mewah untuk
pemeliharaan.
468 PEMELIHARAAN PERANGKAT LUNAK
Gambar 14.5 Reverse engineering dan gagasan terkait (Sumber: E.J. Chikofsky &
J.H. CrossII, Rekayasa balik dan pemulihan desain, Perangkat Lunak IEEE 7, 1
(1990) hlm 13--18, 1990 IEEE.)
Rekayasa terbalik sebagian besar tidak akan terbatas pada dokumentasi ulang
dalam arti sempit. Kita akan sering cenderung bertanya mengapa hal-hal tertentu
dilakukan dengan cara yang sama, apa arti dari fragmen kode tertentu, dan
sejenisnya. Karena itu kita harus menyelidiki bagaimana programmer mempelajari
teks program. Relevansi isu-isu ini terlihat dari hasil studi kegiatan pemeliharaan
(Fjelstad dan Hamlen, 1979), dikonfirmasi oleh Yu dan Chen (2006):
�
474 PEMELIHARAAN PERANGKAT LUNAK
– strategi sistematis.
Dalam strategi sesuai kebutuhan, teks program dibaca dari awal sampai akhir
seperti sebuah prosa dan hipotesis dirumuskan berdasarkan informasi lokal.
Pemrogram yang tidak berpengalaman khususnya cenderung menggunakan
strategi ini. Dalam strategi sistematika, pemahaman keseluruhan tentang sistem
dibentuk oleh studi top-down yang sistematis dari teks program. Pendekatan
sistematis memberikan wawasan yang lebih baik tentang hubungan sebab akibat
antara komponen program.
Hubungan sebab akibat ini memainkan peran penting saat menerapkan
perubahan. Apa yang disebut rencana terdelokalisasi, di mana potongan kode yang
terkait secara konseptual terletak di bagian program yang terpisah secara fisik,
dapat menghambat aktivitas pemeliharaan secara serius. Penggunaan warisan yang
berlebihan meningkatkan penggunaan rencana yang terdelokalisasi. Jika
pemahaman kita didasarkan pada petunjuk lokal saja, modifikasi dapat dengan
mudah menghasilkan apa yang disebut efek riak, yaitu perubahan yang benar
secara lokal tetapi menimbulkan masalah baru di tempat yang berbeda dan tidak
terduga. Penggunaan strategi yang diperlukan meningkatkan kemungkinan efek
riak.
14.3. REVERSE ENGINEERING DAN 475
REFACTORING
Selama proses pemahaman programmer menggunakan pengetahuan yang berasal
dari luar teks program yang sebenarnya. Untuk mengilustrasikan fenomena ini,
pertimbangkan teks program dari gambar 14.7.
Gambar 14.7 Algoritma Warshall untuk menghitung penutupan transitif suatu graf
Fragmen program pada gambar 14.7 memanipulasi matriks boolean A. Sebelum ini
fragmen dieksekusi matriks akan memiliki nilai tertentu. Matriks dilintasi di
cara yang agak rumit (berpotensi, setiap elemen dikunjungi N kali) dan sekali dalam a
sementara elemen array diatur ke BENAR. Tapi apa fragmen ini berarti? Apa
melakukannya Mengerjakan?
Seorang ahli akan 'mengenali' algoritme Warshall. Algoritma Warshall menghitung
penutupan transitif suatu relasi (grafik). Gagasan 'penutupan transitif', 'hubungan'
dan 'grafik' memiliki arti yang tepat dalam domain pengetahuan tertentu. Jika tidak
mengetahui arti dari gagasan-gagasan ini, engkau belum membuat kemajuan apa pun dalam
pemahaman
algoritma baik.
Pada tingkat abstraksi lainnya, makna fragmen ini dapat dijelaskan
sebagai berikut. Misalkan kita mulai dengan kumpulan kota.
A
Relasi
476 PEMELIHARAAN PERANGKAT LUNAK
batas jendela lain disorot. Kursor diposisikan di jendela yang sekarang disorot dan
proses jendela itu dimulai ulang. Jika kita menambahkan beberapa komentar pada
rutin, teksnya menjadi cukup mudah untuk diinterpretasikan. Nama dan komentar
yang bermakna bersama-sama menyediakan semantik informal dari kode ini yang
cukup untuk pemahaman yang tepat.
Semantik informal ini melangkah lebih jauh daripada membangun pengetahuan
lokal tentang makna suatu komponen. Pengembang menggunakan konvensi
penamaan juga untuk menemukan jalannya dalam sistem besar. Organisasi sering
meresepkan konvensi penamaan justru karena alasan ini. Ketika dokumentasi
desain dan arsitektur tidak diperbarui, konvensi penamaan ini berfungsi sebagai
proxy untuk dokumentasi tersebut.
Umum untuk dua contoh ini serta anekdot altimeter dari bagian 14.2 adalah yang
kita butuhkan di luar informasi untuk interpretasi yang tepat dari fragmen kode.
Informasi luar menyangkut konsep dari domain pengetahuan tertentu atau alasan
desain yang hanya ada di kepala pemrogram.
Contoh manajemen jendela adalah ilustrasi untuk alasan lain. Alat memanipulasi
urutan simbol. Pada prinsipnya, alat tidak memiliki pengetahuan tentang makna
(eksternal) dari simbol yang dimanipulasi. Secara khusus, alat rekayasa balik tidak
memiliki pengetahuan tentang 'jendela', 'kursor', dan sejenisnya. Gagasan ini
14.3. REVERSE ENGINEERING DAN 477
REFACTORING
memperoleh maknanya dari domain aplikasi, bukan dari teks program itu sendiri.
Dari sudut pandang alat, teks dari gambar 14.8 dan 14.9 sama-sama bermakna.
Pengamatan di atas berdampak pada sejauh mana alat dapat mendukung rekayasa
balik dan restrukturisasi proses. Alat semacam itu tidak dapat mengubah sistem
yang dirancang dengan buruk menjadi sistem yang baik. Mereka tidak dapat
menyimpulkan pengetahuan dari teks sumber yang belum terkandung dalam teks itu
tanpa menggunakan pengetahuan eksternal sebagai bantuan. Secara khusus,
pemulihan desain yang sepenuhnya otomatis tidak dapat dilakukan. Anda tidak bisa
membuat babi dari sosis.
14.3.3 Peralatan
Selama proses reverse engineering, programmer membangun pemahaman tentang
apa yang coba dicapai oleh perangkat lunak dan mengapa hal-hal dilakukan dengan
cara yang sama. Beberapa kelas alat dapat mendukung tugas pemahaman
program:
�
478 PEMELIHARAAN PERANGKAT LUNAK
�
14.4. EVOLUSI PERANGKAT LUNAK 479
DIKUNJUNGI
pada informasi dari masa lalu. Misalnya, kami dapat memutuskan komponen mana yang akan
merekayasa ulang dengan melihat komponen yang banyak berubah di masa lalu. Itu
asumsi kemudian adalah bahwa komponen yang banyak berubah di masa lalu, kemungkinan besar
untuk berubah dalam waktu dekat juga. Gˆırba et al. (2004) menggunakan istilah tersebut cuaca kemarin
ke
mencirikan gagasan ini: jika kita tidak memiliki informasi lebih lanjut, kita dapat menebaknya hari ini
cuaca akan seperti kemarin.
Gˆırba dan Ducasse (2006) membedakan dua jenis analisis evolusioner
data: analisis berpusat pada versi Dan analisis yang berpusat pada sejarah. Berpusat pada versi
analisis, perbedaan antara versi sistem yang berurutan dipelajari. Hasil
biasanya digambarkan dalam gambar dengan waktu (yaitu versi yang berurutan) sepanjang satu sumbu
dan aspek yang relevan dari sistem yang lain. Sebagai contoh, kita dapat mempertimbangkan
ukuran relatif dari komponen yang berbeda dari sistem dari waktu ke waktu, seperti yang diilustrasikan
dalam
gambar 14.10 (diadaptasi dari (Gˆırba dan Ducasse, 2006)).
komponen
1 2 3 4 5 versi
Setiap persegi panjang pada gambar 14.10 menunjukkan sebuah komponen. Lebar
dan tinggi persegi panjang masing-masing berdiri untuk atribut komponen itu.
Misalnya, lebar menunjukkan jumlah kelas komponen, sedangkan tinggi
menunjukkan jumlah antarmuka. Gambar 14.10 memberitahu kita bahwa komponen
A stabil dan kecil,
480 PEMELIHARAAN PERANGKAT LUNAK
sedangkan komponen D stabil dan besar. Komponen C menunjukkan pertumbuhan
yang stabil dari satu versi ke versi berikutnya, dan komponen B menunjukkan
beberapa efek riak di versi 2 dan 3, dan stabil sejak saat itu.
Dalam analisis yang berpusat pada sejarah, sudut pandang tertentu dipilih, dan
evolusi suatu sistem digambarkan sehubungan dengan sudut pandang tersebut.
Misalnya, gambar 14.11 menunjukkan seberapa sering komponen yang berbeda
diubah secara bersamaan. Setiap simpul menunjukkan komponen, dan ketebalan
tepi menunjukkan seberapa sering dua komponen yang terhubung diubah bersama
(disebut perubahan bersama). Tepi yang lebih tebal di antara komponen
menunjukkan perubahan bersama yang lebih sering. Informasi terakhir mungkin
misalnya berasal dari basis data versi.
alur kerja/utama
Pada bagian ini kami membahas masalah ini dari perspektif pemeliharaan. Kami
memberikan perhatian khusus pada masalah yang menimbulkan masalah dan
tantangan khusus untuk pemeliharaan. Isu-isu ini adalah: organisasi kegiatan
pemeliharaan, perbedaan utama antara pengembangan dan pemeliharaan,
pengendalian tugas pemeliharaan, dan penilaian kualitas.
Perhatikan bahwa pengembangan sistem baru tidak terjadi dalam ruang hampa.
Perancang sistem baru akan menggunakan kembali desain yang ada dan harus
mempertimbangkan kendala yang ditimbulkan oleh sistem yang ada. Pemrogram
yang terlibat dalam proyek pengembangan harus berurusan dengan antarmuka ke
perangkat lunak yang ada, basis data yang ada, dll. Dalam skema Tipe-W,
perbedaan antara pekerjaan pengembangan dan pemeliharaan terutama
merupakan perbedaan antara berbagai asal dari penugasan kerja.
Bentuk kedua dari departementalisasi adalah sesuai dengan bidang aplikasinya,
yaitu skema Tipe-A. Saat ini, aplikasi terkomputerisasi telah merambah hampir ke
seluruh pelosok perusahaan. Sistem menjadi lebih beragam. Keahlian domain
aplikasi telah menjadi semakin penting untuk keberhasilan implementasi sistem
informasi. Pengetahuan mendalam tentang domain aplikasi adalah sumber daya
yang berharga tetapi langka. Memelihara keahlian ini di antara staf adalah salah
satu cara untuk meningkatkan kualitas dan produktivitas baik dalam pengembangan
maupun pemeliharaan. Oleh karena itu, dalam organisasi yang lebih besar, kami
dapat menemukan unit dengan keahlian khusus dalam domain aplikasi tertentu,
seperti sistem keuangan, otomatisasi kantor, atau kontrol proses waktu nyata.
Akhirnya, kita dapat melakukan departementalisasi menurut fase siklus hidup,
seperti yang dilakukan dalam skema Tipe-L. Secara khusus, kita dapat
membedakan antara pembangunan
14.5. MASALAH ORGANISASI DAN 483
MANAJERIAL
dan pemeliharaan. Dengan meningkatnya portofolio sistem yang harus dipertahankan dan
kebutuhan bisnis yang semakin meningkat untuk menjaga basis sistem informasi yang terus
berkembang
bekerja dengan memuaskan, pembagian pengembangan dan pemeliharaan menjadi terpisah
unit organisasi lebih sering ditemukan.
Memisahkan pengembangan dan pemeliharaan memiliki kelebihan dan kekurangan.
Keuntungan utamanya adalah:
�
484 PEMELIHARAAN PERANGKAT LUNAK
perhatian manajerial yang tepat untuk pekerjaan pemeliharaan sangat
membantu mengurangi masalah moral. Misalnya, sebuah organisasi dapat
memutuskan untuk mempekerjakan orang baru dalam pengembangan saja
dan secara eksplisit mempertimbangkan transfer ke pemeliharaan sebagai
promosi. (Sebagian besar organisasi melakukan sebaliknya.)
�
14.5. MASALAH ORGANISASI DAN MANAJERIAL 485
14.5.2 Pemeliharaan
Perangkat Lunak dari
Perspektif Layanan
Organisasi pemeliharaan perangkat lunak perlu menyadari bahwa mereka berada dalam
layanan pelanggan
bisnis.
(Pigoski, 1996)
Pengembangan perangkat lunak menghasilkan produk, perangkat lunak. Pemeliharaan perangkat lunak
dapat dilihat sebagai penyediaan layanan. Ada perbedaan mencolok antara produk dan
layanan, yang berarti bahwa kualitas produk dan layanan dinilai berbeda.
Akibatnya, kualitas pengembangan perangkat lunak dan pemeliharaan perangkat lunak
juga dinilai berbeda dan organisasi pemeliharaan harus memperhatikan
aspek kualitas spesifik layanan.
Ternyata, hal ini belum banyak diketahui. Dalam pemeliharaan perangkat lunak
domain, fokusnya masih pada aspek produk. Tahap akhir dari pengembangan perangkat lunak
seharusnya menyangkut pengiriman manual operasi, menginstal perangkat lunak,
menangani permintaan perubahan dan memperbaiki bug. Dalam praktiknya, peran departemen TI
adalah
jauh lebih luas selama tahap penyebaran, seperti yang diilustrasikan oleh bantuan di mana-mana
meja.
Hal ini dikonfirmasi oleh St˚alhane et al. (1997) yang melaporkan survei untuk menemukannya
aspek kualitas perangkat lunak yang dianggap paling penting oleh pelanggan. Wawasan utama
yang akan diperoleh dari studi mereka adalah penekanan kuat pelanggan pada layanan
kualitas. Lima faktor teratas yang ditemukan dalam penelitian mereka adalah: ketanggapan layanan,
layanan
kapasitas, keandalan produk, efisiensi layanan, dan fungsionalitas produk. Mereka juga
mengutip hasil yang menarik dari studi berkualitas di domain telekomunikasi.
Untuk pertanyaan ‘Apakah Anda akan merekomendasikan orang lain untuk membeli dari perusahaan
ini?’, a
100% ya diperoleh dari kategori pengguna yang pernah mengeluh dan mendapat a
hasil yang memuaskan. Untuk kategori yang tidak mengeluh, persentasenya adalah
87%. Ternyata, lebih penting mendapatkan pelayanan yang memuaskan daripada tidak
masalah sama sekali.
Perbedaan utama antara produk dan layanan adalah sebagai berikut:
�
486 PEMELIHARAAN PERANGKAT LUNAK
�
14.5. MASALAH ORGANISASI DAN 487
MANAJERIAL
pelanggan. Kualitas bauran produk-layanan semacam itu dinilai dari kedua produk
dan aspek pelayanan: apakah makanannya enak dan disajikan dengan cepat.
Mari kita kembali ke domain rekayasa perangkat lunak. Perbedaan utama antara
pengembangan perangkat lunak dan pemeliharaan perangkat lunak adalah fakta bahwa pengembangan
perangkat lunak
menghasilkan a produk, sedangkan pemeliharaan perangkat lunak menghasilkan a melayani sedang
dikirim
kepada pelanggan. Pemeliharaan perangkat lunak memiliki lebih banyak aspek seperti layanan daripada
perangkat lunak
pengembangan, karena nilai pemeliharaan perangkat lunak terletak pada aktivitas yang dihasilkannya
dalam manfaat bagi pelanggan, seperti kesalahan yang diperbaiki dan fitur baru. Kontras
ini dengan pengembangan perangkat lunak, di mana kegiatan pengembangan itu sendiri tidak
memberikan manfaat kepada pelanggan. Ini adalah sistem perangkat lunak yang dihasilkan yang
menyediakan
manfaat tersebut.
Sebagaimana dicatat, perbedaan antara produk dan layanan tidak jelas. Menipu-
secara berurutan, ini juga berlaku untuk pengembangan perangkat lunak dan pemeliharaan perangkat
lunak.
Gambar 14.14 menunjukkan rangkaian produk-layanan dengan contoh-contoh dari perangkat lunak
domain rekayasa.
Gambar 14.14 Kontinum layanan produk untuk pengembangan dan pemeliharaan perangkat lunak
nance
Gap 1 Layanan yang diharapkan seperti yang dirasakan oleh penyedia layanan
berbeda dengan pelayanan yang diharapkan oleh pelanggan. Di bidang
pemeliharaan perangkat lunak, perbedaan ini sering disebabkan oleh
kurangnya fokus hubungan penyedia layanan. Sebagai contoh, departemen
pemeliharaan mungkin bertujuan untuk memenuhi batasan ketersediaan
tertentu seperti ketersediaan 99%, sedangkan perhatian pelanggan
sebenarnya adalah dengan downtime maksimum.
14.5. MASALAH ORGANISASI DAN 489
MANAJERIAL
tidak sesuai dengan persyaratan layanan seperti yang dirasakan oleh
penyedia layanan. Misalnya, pelanggan mengharapkan sistem dimulai ulang
dengan cepat, sementara prosedur standar organisasi pemeliharaan
difokuskan pada analisis alasan kerusakan tersebut.
Kegiatan pemeliharaan sebagaimana ditentukan dalam perjanjian tingkat
layanan harus direncanakan. Ini termasuk perencanaan aktivitas itu sendiri,
transfer hasil ke pelanggan, perencanaan rilis, estimasi sumber daya yang
dibutuhkan, penjadwalan aktivitas pemeliharaan, dan identifikasi risiko yang
mungkin terjadi. Secara eksplisit mendasarkan perencanaan kegiatan
pemeliharaan pada komitmen yang disepakati dengan pelanggan membantu
menutup kesenjangan ini.
Gap 4 Komunikasi tentang layanan tidak sesuai dengan penyampaian layanan yang
sebenarnya. Hal ini dapat disebabkan oleh pengelolaan harapan pelanggan yang
tidak efektif, terlalu banyak menjanjikan, atau komunikasi horizontal yang tidak
efektif. Misalnya, pelanggan tidak diberitahu tentang perbaikan bug yang dia
laporkan.
Instrumen penting untuk membantu menutup celah ini adalah manajemen
acara. Manajemen acara menyangkut pengelolaan acara yang
menyebabkan atau mungkin menyebabkan kegiatan pemeliharaan yang
dilakukan menyimpang dari tingkat yang dijanjikan.
490 PEMELIHARAAN PERANGKAT LUNAK
dalam perjanjian tingkat layanan. Suatu peristiwa dapat berupa permintaan
perubahan, seperti permintaan pengguna untuk fitur baru, atau insiden.
Insiden adalah bug perangkat lunak dan bahaya lain yang telah dijanjikan
oleh organisasi pemeliharaan untuk ditangani, seperti, katakanlah, server
mati.
Tujuan utama manajemen acara adalah untuk mengelola semua acara
tersebut. Untuk melakukannya, sistem perpustakaan manajemen acara
digunakan, seringkali dalam bentuk 'sistem helpdesk'. Sistem perpustakaan
manajemen acara menyediakan penyimpanan, pembaruan, dan
pengambilan catatan acara, dan berbagi dan mentransfer catatan acara
antara pihak yang terlibat. Sistem perpustakaan manajemen acara ini
mendukung komunikasi dengan pelanggan tentang layanan pemeliharaan
yang disampaikan. Ini juga merupakan 'memori' yang sangat berharga bagi
para pengelola: mereka mungkin menggunakan perpustakaan acara untuk
mencari insiden serupa, untuk melihat mengapa komponen tertentu diubah
sebelumnya, dll.4
Karena gap kelima disebabkan oleh empat gap lainnya, persepsi kualitas layanan
dapat ditingkatkan dengan menutup keempat gap pertama tersebut, sehingga
membawa persepsi kualitas sejalan dengan kualitas yang diharapkan. Karena
organisasi pemeliharaan perangkat lunak pada dasarnya adalah penyedia layanan,
mereka perlu mempertimbangkan masalah di atas. Mereka perlu mengelola produk
mereka -- pemeliharaan perangkat lunak -- sebagai layanan agar dapat memberikan
kualitas tinggi.
Gambar 14.17 Model perbaikan cepat pemeliharaan perangkat lunak (Sumber: V.R.
Basili, Melihat pemeliharaan sebagai pengembangan perangkat lunak berorientasi
penggunaan ulang, Perangkat Lunak IEEE 7, 1 (1990) 19--25, 1990IEEE.)
Dalam skema yang terakhir, tambalan dibuat di atas tambalan dan struktur
sistem menurun dengan cepat. Karena hasil peningkatan kompleksitas sistem dan
inkonsistensi dokumen, pemeliharaan masa depan menjadi jauh lebih sulit. Agar
realistis, model perbaikan cepat tidak dapat sepenuhnya dielakkan. Dalam situasi
darurat, hanya ada satu hal yang penting: mengaktifkan dan menjalankan kembali
sistem secepat mungkin. Namun jika memungkinkan, model perbaikan cepat harus
dihindari. Jika digunakan sama sekali, kegiatan pemeliharaan preventif harus
dijadwalkan untuk memperbaiki kerusakan struktural yang dilakukan.
Dalam situasi normal dan non-darurat, permintaan perubahan sering
digabungkanrilis. Pengguna kemudian tidak mendapatkan versi baru setelah setiap
perubahan direalisasikan, tetapi setelah sejumlah permintaan perubahan ditangani,
atau setelah jangka waktu tertentu. Tiga cara umum untuk memutuskan konten dan
waktu rilis berikutnya adalah:
�
14.5. MASALAH ORGANISASI DAN 493
MANAJERIAL
adalah beberapa fleksibilitas untuk konten rilis berikutnya, sejak pengelola
dan pelanggan tidak memperbaiki isinya terlebih dahulu.
�
494 PEMELIHARAAN PERANGKAT LUNAK
�
14.7. BACAAN LEBIH LANJUT 495
Pemeliharaan yang sempurna terutama berkaitan dengan mengakomodasi pengguna baru atau yang
diubah
persyaratan.
Pemeliharaan preventif menyangkut kegiatan yang ditujukan untuk meningkatkan pemeliharaan sistem
kemampuan.
Latihan
8. Mengapa pemeliharaan korektif memiliki lebih banyak aspek seperti layanan daripada
aspek seperti produk?
9. Diskusikan model peningkatan iteratif dan perbaikan cepat dari pemeliharaan perangkat lunak
nance.
11. Diskusikan keuntungan dukungan kontrol konfigurasi perangkat lunak selama perangkat lunak
pemeliharaan.
13. ~
498 PEMELIHARAAN PERANGKAT LUNAK
17. �
15
Alat Perangkat
Lunak
TUJUAN PEMBELAJARAN
�
500 ALAT PERANGKAT LUNAK
a
pen
ggu
na
Jumlah situs
Skala
proses
Dukungan
proses
Paradigma eksekusi
503
banyak kebebasan diserahkan kepada pengembang individu, sementara sejumlah aturan
disepakati untuk mengatur interaksi kritis antara pengembang.
Model ini tidak sesuai lagi jika proyek menjadi sangat besar. Lebih besar
populasi membutuhkan aturan yang lebih rumit dan pembatasan kebebasan individu.
Dalam keluarga saya, beberapa aturan sederhana sudah cukup (Jasper dan Marieke mencuci secara
bergiliran
hidangan), dan penyesuaian serta penyimpangan lokal mudah dilakukan (Jasper mengadakan pesta
hari ini dan meminta Marieke untuk mengambil alih). Dalam sebuah perusahaan besar, kebijakan harus
dipatuhi lebih ketat dan kerjasama antar individu ditegakkan (seperti di kota).
Demikian pula, perangkat untuk mendukung pengembangan sistem besar harus menegakkan
kerjasama yang baik antara masing-masing pengembang.
Sebuah negara dapat dilihat sebagai kumpulan kota. Perusahaan dapat dipandang sebagai a
koleksi proyek. Dalam model negara, perhatian utamanya adalah pada kesamaan dan
standardisasi, untuk memungkinkan pengembang beralih antar proyek, agar dapat digunakan kembali
kode, desain, rencana pengujian, dll.
Jika pengembangan dilakukan di lebih dari satu situs, kami membutuhkan alat untuk memfasilitasi
kolaborasi dan koordinasi. Di satu sisi, alat seperti itu untuk konfigurasi
manajemen dan persyaratan manajemen perlu memberikan dukungan untuk berkoordinasi
pekerjaan pembangunan di beberapa lokasi. Di sisi lain, alat dari ranah
Kerja Koperasi yang Didukung Komputer (CSCW) dapat menjadi bagian dari rangkaian alat.
Dimensi ini juga terkait erat dengan skala pengguna dan dimensi ukuran sistem,
karena proyek yang lebih besar cenderung didistribusikan ke beberapa lokasi; lihat juga bab ??.
Skala proses menentukan apakah produk CASE mendukung produksi kode
aktivitas, aktivitas orang, atau keduanya. Produk CASE berfokus pada produksi kode
berkonsentrasi pada dukungan untuk evolusi perangkat lunak. Mereka berisi alat untuk menulis,
kompilasi, uji, debug, dan konfigurasikan kode. Ini semua adalah aktivitas yang dilakukan oleh komputer.
Produk CASE lainnya berkonsentrasi pada interaksi personel, seperti penjadwalan
dari pertemuan tinjauan. Yang lain lagi melakukan keduanya. Nilai sepanjang sumbu ini dapat disebut
produk, orang, dan produk-dan-orang.
Produk CASE mungkin mendukung atau tidak mendukung pengembangan proses. Jika
pengembangan-
didukung, beberapa alat melakukannya berdasarkan model yang telah ditentukan sebelumnya
proses. Lainnya memungkinkan pengguna untuk menentukan model prosesnya sendiri. Jika produk
KASUS
mendukung proses pembangunan, mungkin mempekerjakan berbagai sarana internal untuk memandu
eksekusi (atau pemberlakuan) proses pengembangan, seperti mesin negara, Petri
jaring, aturan produksi, atau prosedur.
Berbagai pendekatan untuk kumpulan alat perangkat lunak dibahas dalam beberapa bagian
15.1 sampai 15.4, menggunakan skema klasifikasi sederhana dari gambar 15.1. Toolkit adalah
dibahas di bagian 15.1. UNIX adalah contoh utama dari kategori ini. Bagian 15.2
membahas lingkungan yang berpusat pada bahasa. Ini mencakup kedua lingkungan
dibuat secara manual di sekitar beberapa bahasa pemrograman tertentu, dan lingkungan yang
dihasilkan
Dinilai dari deskripsi tata bahasa dari struktur program yang dimanipulasi. Di dalam
kedua kasus, dukungan yang ditawarkan sebagian besar menyangkut programmer individu. Bagian
15.3 dan 15.4 masing-masing membahas lingkungan yang terintegrasi dan berpusat pada proses.
Karena sebagian besar meja kerja dapat dilihat sebagai lingkungan terintegrasi yang dipangkas,
504 ALAT PERANGKAT LUNAK
meja kerja juga dibahas di bagian 15.3.
Pembahasan di bawah ini cukup bersifat global. Kami akan membaca sekilas
detail masing-masing alat. Tujuan kami adalah untuk membuat sketsa tren yang
terlihat di area ini dan untuk melihat secara kritis kemungkinan peran alat dalam
proses pengembangan perangkat lunak.
15.1 Toolkit
Dengan toolkit, pengembang didukung oleh kumpulan alat yang agak longgar, yang
masing-masing melayani tugas spesifik yang terdefinisi dengan baik. Analogi
dengan tukang kayu sudah jelas. Perkakasnya berisi palu, obeng, gergaji, dan
sejenisnya. Alat-alat ini masing-masing melayani tugas tertentu. Namun, mereka
tidak 'terintegrasi' seperti bor dan lampirannya.
Contoh utama dari lingkungan toolkit adalah UNIX. UNIX dapat dipandang
sebagai lingkungan pendukung umum, tidak ditujukan untuk satu bahasa
pemrograman tertentu, metode pengembangan, atau model proses. UNIX
menawarkan sejumlah blok bangunan yang sangat nyaman, namun sangat
sederhana, yang dengannya hal-hal yang lebih rumit dapat direalisasikan
(Kernighan dan Mashey, 1981):
�
15.2. LINGKUNGAN YANG BERPUSAT 505
BAHASA
�
506 ALAT PERANGKAT LUNAK
Lingkungan yang berpusat pada bahasa saat ini umumnya datang dengan sejumlah
komponen yang sangat memudahkan pengembangan perangkat lunak. Contoh
lingkungan tersebut termasuk Microsoft Studio .NET dan Eclipse. Dukungan yang
ditawarkan berkisar dari satu set API untuk menghasilkan antarmuka pengguna
(seperti Swing), hingga fasilitas untuk menangani persistensi (EJB) atau membuat
aplikasi web (Ajax). Kekayaan fitur datang dengan harga: kurva belajar yang agak
panjang.
– simulasi;
Alat yang mendukung kerja sama tim dalam proyek besar patut mendapat perhatian khusus. Di sebuah
lingkungan tipikal, sekelompok pemrogram akan bekerja pada sistem yang sama.
Sistem akan memiliki banyak komponen, dikembangkan, diuji, dan diubah secara berbeda
rakyat. Selama evolusi sistem, versi komponen yang berbeda akan berbeda
hasil. Dukungan otomatis untuk mengontrol rangkaian komponen tersebut, baik secara teknis
dan organisasi, adalah kebutuhan belaka.
Salah satu sistem awal untuk kontrol konfigurasi adalah Kontrol Kode Sumber
System (SCCS), awalnya dikembangkan untuk IBM OS dan paling dikenal dari UNIX. SCCS
memungkinkan pengguna untuk melacak modifikasi dalam file (yang mungkin berisi file tersebut
beragam hal seperti kode program, dokumentasi, atau set pengujian). Sistem memungkinkan
pengguna untuk menghasilkan versi sistem apa pun. Versi baru dapat dibuat tanpa
versi lama hilang. Aspek penting SCCS adalah:
– tidak ada salinan versi terpisah yang disimpan: hanya modifikasi (disebut delta)
ke versi sebelumnya disimpan;
– akses ke file dilindungi: hanya pengguna yang berwenang yang dapat membuat perubahan;
– setiap file diidentifikasi oleh penulis, nomor versi, dan tanggal dan waktu
modifikasi;
– sistem meminta informasi kepada pengguna tentang alasan perubahan, yang mana
perubahan dilakukan, di mana, dan oleh siapa.
Gambar 15.5 mengilustrasikan operasi utama yang disediakan oleh SCCS. Dalam SCCS, semua
informasi disimpan dalam apa yang disebut s-files. Operasi membuat membuat s-file untuk
pertama kali. Jika file asli bernama prog, maka file SCCS diberi nama s.prog.
Operasi mendapatkan menghasilkan salinan read-only dari file yang diminta. Salinan hanya-baca ini
dapat digunakan untuk kompilasi, pencetakan, dan sejenisnya. Dia bukan dimaksudkan untuk diedit.
Operasi sunting mengambil salinan untuk diedit. SCCS menangani perlindungan di
pengertian bahwa hanya satu orang yang dapat mengedit file pada satu waktu. Akhirnya, delta
operasi menyimpan versi revisi dari file yang diedit.
Versi file SCCS diberi nomor, 1.1, 1.2, 1.3, 2.1, dll. Nomor ke
kiri periode adalah nomor versi utama (nomor rilis). Nomor ke
kanan periode adalah nomor versi minor. Versi pertama diberi nomor 1.1.
Secara default, mendapatkan Dan sunting mengambil versi terbaru dari file, while delta menghasilkan
sebuah
peningkatan nomor versi minor. Jika diperlukan versi yang lebih lama atau yang utama
nomor versi akan ditingkatkan, ini harus ditentukan secara eksplisit.
510 ALAT PERANGKAT LUNAK
peran formalisme yang berbeda dalam pemodelan proses. Di sini, kita akan
menggunakannya untuk membahas perannya dalam lingkungan rekayasa
perangkat lunak yang berpusat pada proses.
15.5 Ringkasan
Perkembangan di bidang koleksi alat (terintegrasi) bergerak sangat cepat. Untuk
banyak aspek dari proses pengembangan perangkat lunak, alat yang baik tersedia.
Dalam bab ini, kita telah membahas perkembangan utama dalam hal rekayasa
perangkat lunak berbantuan komputer (CASE). Kami telah melakukannya dengan
menggunakan klasifikasi produk CASE satu dimensi yang sederhana, yang
mengungkapkan bagian-bagian dari siklus hidup yang mereka dukung:
�
516 ALAT PERANGKAT LUNAK
�
15.6. BACAAN LEBIH LANJUT 517
produk diberikan dalam (Lott, 1993). Paradigma sosiologis (individu, keluarga,
dll) untuk skala pengguna berasal dari (Perry dan Kaiser, 1991).
Barstow dkk. (1984) adalah kumpulan artikel mani tentang lingkungan pemrograman
ronments, termasuk pendekatan toolkit UNIX dan lingkungan awal yang berpusat pada bahasa
ronment seperti Interlisp. Sistem Kontrol Kode Sumber (SCCS) dijelaskan dalam
(Rochkind, 1975). Keadaan seni dalam manajemen konfigurasi tercermin dalam
(Estublier et al., 2005). Alat bangunan tidak banyak berubah sejak Make (Feldman,
1978). Perkembangan terkini di bidang ini di dunia Jawa adalah Semut (Serrano dan
Ciordia, 2004).
Pada 1980-an, penelitian alat berfokus pada penciptaan lingkungan yang terintegrasi. (Tah-
vanainen dan Smolander, 1990) adalah bibliografi beranotasi artikel tentang perangkat lunak
lingkungan teknik dari periode itu. Penelitian selanjutnya di bidang alat
berfokus pada PSEE. Keadaan seni di bidang ini tercermin dalam (Fuggetta dan Wolf,
1996) dan (Ambriola et al., 1997). Kasus untuk lebih banyak fleksibilitas dalam rekayasa perangkat lunak
lingkungan dibuat di (Jankowski, 1994), (Cugola et al., 1996), (Jarzabek dan
Huang, 1998) dan (Cugola dan Ghezzi, 1998).
Masalah integrasi alat dibahas di (Sharon dan Bell, 1995). Penilaian alat
adalah topik (Software, 1996b). Studi adopsi dan penggunaan alat dapat ditemukan di
(Iivari, 1996) dan (Post et al., 1998).
Latihan
- alat,
- meja kerja,
- lingkungan.
– alat bantu,
– lingkungan yang berpusat pada bahasa,
- lingkungan yang terintegrasi, dan
– lingkungan yang berpusat pada proses.
8. ~
Bibliografi
Abdel-Hamid, T., Sengupta, K., dan Ronan, D. (1993). Kontrol Proyek Perangkat
Lunak: Investigasi Eksperimental Penghakiman dengan Informasi yang Salah.
Rekayasa Perangkat Lunak Transaksi IEEE, 19(6):603--612.
Aberdour, M. (2007). Mencapai Kualitas dalam Perangkat Lunak Sumber Terbuka. Perangkat Lunak
IEEE,
24(1):58--64.
Abrahamsson, P., Salo, O., Ronkainen, J., dan Warsta, J. (2002). Perangkat Lunak Agile
Metode Pengembangan. Laporan teknis, Publikasi VTT 478, VTT, Finlandia.
Abran, A. dan Robillard, P. (1992). Poin Fungsi: Studi tentang Proses Pengukuran
dan Transformasi Skalanya. Jurnal Sistem dan Perangkat Lunak, 25(2):171--184.
Abran, A. dan Robillard, P. (1996). Analisis Poin Fungsi: Studi Empiris Proses
Pengukurannya. Transaksi IEEE pada Rekayasa Perangkat Lunak, 22(12):895--910.
Adams, E. (1984). Mengoptimalkan Layanan Preventif Produk Perangkat Lunak. Jurnal IBM
Penelitian dan Pengembangan, 28(1):2--14.
Albrecht, A. dan Gaffney, J. (1983). Fungsi Perangkat Lunak, Baris Sumber Kode,
dan Prediksi Upaya Pengembangan: Validasi Ilmu Perangkat Lunak. Transaksi IEEE
pada Rekayasa Perangkat Lunak, 9(6):639--648.
Alexander, C. (1999). Asal Usul Teori Pola. Perangkat Lunak IEEE, 16(5):71--82.
Alexander, C., Ishikawa, S., dan Silverstein, M. (1977). Bahasa Pola. Oxford
Pers Universitas.
Ambriola, V., Conradi, R., dan Fuggetta, A. (1997). Menilai Lingkungan Rekayasa
Perangkat Lunak yang Berpusat pada Proses. Transaksi ACM pada Rekayasa
Perangkat Lunak dan Metodologi, 6(3):283--328.
520 BIBLIOGRAFI
Arisholm, A. dan Sjøberg, D. (2004). Mengevaluasi Pengaruh Gaya Kontrol yang
Didelegasikan versus Terpusat pada Kemampuan Pemeliharaan Perangkat Lunak
Berorientasi Objek.Transaksi IEEE pada Rekayasa Perangkat Lunak,
30(8):521--534.
Armor, P. (2001). Zeppelin dan Pesawat Jet: Metafora untuk Perangkat Lunak
Modern Proyek. Komunikasi ACM, 44(10):13--15.
Banker, R., Datar, S., Kemerer, C., dan Zweig, D. (1993). Kompleksitas Perangkat
Lunak dan Biaya perawatan. Komunikasi ACM, 36(11):81--94.
Bankir, R., Kauffman, R., dan Kumar, R. (1991). Uji Empiris Metrik Pengukuran
Output Berbasis Objek di Lingkungan Computer Aided Software Engineering
(CASE). Jurnal Sistem Informasi Manajemen, 8(3):127--150.
Baram, G. dan Steinberg, G. (1989). Kriteria Seleksi untuk Analisis dan Desain
KASUS Peralatan. Catatan Rekayasa Perangkat Lunak ACM, 14(6):73--80.
Barnard, H., Metz, R., dan Harga, A. (1986). Praktik yang Direkomendasikan untuk
Menggambarkan
Desain Perangkat Lunak: Proyek Standar IEEE Transaksi IEEE pada Perangkat Lunak
1016.
Rekayasa, 12(2):258--263.
Barstow, D., Shrobe, H., dan Sandewall, E., editor (1984). Pemrograman Interaktif
Lingkungan. McGraw-Hill.
Basili, V. (1990). Melihat Pemeliharaan sebagai Pengembangan Perangkat Lunak
Berorientasi Penggunaan Ulang. Perangkat Lunak IEEE, 7(1):19--25.
Basili, V., Briand, L., Condon, S., Kim, Y.-M., Melo, W., dan Valen, J. (1996).
Memahami dan Memprediksi Proses Rilis Pemeliharaan Perangkat Lunak. Di
dalamProsiding Konferensi Internasional tentang Pemeliharaan Perangkat Lunak
(ICSM’96), halaman 464--474.IEEE.
BIBLIOGRAFI 521
Basili, V. dan Selby, R. (1987). Membandingkan Efektivitas Pengujian Perangkat Lunak
Strategi. Transaksi IEEE pada Rekayasa Perangkat Lunak, 13(12):1278--1296.
Bass, L., Clements, P., dan Kazman, R. (2003). Arsitektur Perangkat Lunak dalam Praktek. Addison
Wesley, edisi kedua.
Batini, C., Ceri, S., dan Navathe, S. (1992). Desain Basis Data Konseptual: Entitas--
Pendekatan Hubungan. Benyamin Cummings.
Bennett, K. dan Rajlich, V. (2000). Pemeliharaan dan Evolusi Perangkat Lunak: Peta
Jalan. Dalam Finkelstein, A., editor, Masa Depan Rekayasa Perangkat Lunak,
halaman 73--87. Pers ACM.
Bergland, G. dan Gordon, R. (1981). Tutorial: Strategi Desain Perangkat Lunak. IEEE, EZ389.
Bersoff, E. dan Davis, A. (1991). Dampak Model Siklus Hidup pada Perangkat
Lunak
Manajemen konfigurasi. Komunikasi ACM, 34(8):104--118.
Bieman, J., Jain, D., dan Yang, H. (2001). Pola Desain OO, Struktur Desain, dan
Perubahan Program: Studi Kasus Industri. Di dalam Prosiding Pemeliharaan
Perangkat Lunak Konferensi Internasional (ICSM’01), halaman 580--589. IEEE.
Bisbal, J., Lawless, D., Wu, B., dan Grimson, J. (1999). Sistem Informasi Warisan:
Isu dan Arah. Perangkat Lunak IEEE, 16(5):103--111.
Boehm, B. (1984a). Faktor Siklus Hidup Perangkat Lunak. Dalam Vick, C. dan Ramamoorthy, C.,
editor, Buku Pegangan Rekayasa Perangkat Lunak, halaman 494--518. Van Nostrand Reinhold.
Boehm, B. (1987b). Daftar 10 Teratas Metrik Perangkat Lunak Industri. Perangkat Lunak
IEEE, 4(5):84--85.
Boehm, B., Brown, J., Kaspar, H., Lipow, M., MacLeod, G., dan Merrit, M.
(1978).Karakteristik Kualitas Perangkat Lunak. Nomor 1 dalam TRW Series of
Software Technology.North-Holland.
BIBLIOGRAFI 523
Boehm, B., Clark, B., Horowitz, E., Westland, C., Madachy, R., dan Selby, R. (1995).
Model Biaya untuk Proses Siklus Hidup Perangkat Lunak Masa Depan: COCOMO
2.0. Sejarah Rekayasa Perangkat Lunak, 1:57--94.
Boehm, B. dan Sullivan, K. (1999). Ekonomi perangkat lunak: status dan prospek.
Teknologi Informasi dan Perangkat Lunak, 41(14):937--946.
Boehm et al., B. (1997). Manual Definisi Model COCOMO II. Laporan teknikal,
Universitas California Selatan.
B¨ohm, C. dan Jacopini, G. (1966). Diagram Alir, Mesin Turing, dan Bahasa
Dengan Hanya Dua Aturan Formasi. Komunikasi ACM, 9(5):366--371.
Bohrer, K., Johnson, V., Nilsson, A., dan Rudin, B. (1998). Proses bisnis
Komponen untuk Aplikasi Objek Komunikasi ACM,
Terdistribusi.
41(6):43--48.
Booch, G., Rumbaugh, J., dan Jacobson, I. (1999). Panduan Pengguna UML. Addison Wesley.
Bounds, G., Yorks, L., Adams, M., dan Ranney, G. (1994). Melampaui Kualitas Total
Pengelolaan. McGraw-Hill.
Brown, W., Malveau, R., III, H. M., dan Mowbray, T. (1998). AntiPola: Refactoring
Perangkat Lunak, Arsitektur, dan Proyek dalam Krisis. John Wiley & Sons.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., dan Stal, M. (1996). A
Sistem Pola. John Wiley & Sons.
Buxton, J. dan Randell, B., editor (1969). Teknik Rekayasa Perangkat Lunak,
Laporan a Konferensi. Divisi Urusan Ilmiah NATO, Roma.
Cameron, J. (1989). JSP & JSD, Pendekatan Jackson untuk Pengembangan Perangkat Lunak. IEEE.
Carmel, E., Whitaker, R., dan George, J. (1993). PD dan Desain Aplikasi Bersama:
A Perbandingan Transatlantik. Komunikasi ACM, 36(6):40--48.
Cha, S., Leveson, N., dan Shimeall, T. (1988). Verifikasi Keamanan di MURPHY
menggunakan Fault-Tree Analysis. Di dalam Prosiding Konferensi Internasional
ke-10 tentang Rekayasa Perangkat Lunak (ICSE10), halaman 377--386. IEEE.
Chapin, N., Hale, J., Khan, K., amil, J., dan Tan, W.-G. (2001). Jenis evolusi
perangkat lunak dan pemeliharaan perangkat lunak. Jurnal Pemeliharaan dan
Evolusi Perangkat Lunak: Penelitian dan Praktek, 13:3--30.
Chikofsky, E. dan Cross II, J. (1990). Rekayasa Balik dan Pemulihan Desain: A
Taksonomi. Perangkat Lunak IEEE, 7(1):13--18.
Churcher, N. dan Shepperd, M. (1995). Komentar pada 'Suite Metrik untuk Objek
Desain Berorientasi '. Transaksi IEEE pada Rekayasa Perangkat Lunak,
21(3):263--265.
Clarke, L., Podgurski, A., Richardson, D., dan Zeil, S. (1989). Evaluasi Formal
Kriteria Pemilihan Jalur Aliran Data. Transaksi IEEE pada Rekayasa Perangkat Lunak,
15(11):1318--1332.
Clements, P., Bachman, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R., dan
Stafford, J. (2003). Mendokumentasikan Arsitektur Perangkat Lunak: Views and
Beyond. AddisonWesley.
Clements, P., Kazman, R., dan Klein, M. (2002). Mengevaluasi Arsitektur Perangkat Lunak: Metode
dan Studi Kasus. Addison-Wesley.
Clements, P. dan Northrop, L. (2001). Lini Produk Perangkat Lunak: Praktik dan Pola.
Addison-Wesley.
(2002).
526 BIBLIOGRAFI
Conradi, R., Fuggetta, A., dan Jaccheri, M. (1998). Enam Tesis tentang Software
ProcessResearch. Di Gruhn, V., editor, Teknologi Proses Perangkat Lunak, bengkel
Eropa ke-6, EWSPT'98. Springer Verlag, LNCS 1487.
Constantine, L. (1993). Organisasi Kerja: Paradigma untuk Manajemen Proyek dan
Organisasi. Komunikasi ACM, 36(10):34--43.
Conte, S., Dunsmore, H., dan Shen, V. (1986). Metrik dan Model Rekayasa
Perangkat Lunak. Benyamin Cummings.
Cook, S., Harrison, R., Lehman, M., dan Wernick, P. (2006). Evolusi dalam sistem
perangkat lunak: dasar untuk skema klasifikasi SPE. Jurnal Pemeliharaan dan
Evolusi Perangkat Lunak: Penelitian dan Praktek, 18(1):1--35.
Cˆot'e, M.-A., Suryn, W., dan Georgiadou, E. Model Kualitas Perangkat Lunak
(2006).
Persyaratan untuk Rekayasa Kualitas Perangkat Lunak. Di dalam Prosiding Manajemen
Kualitas Perangkat Lunak Internasional ke-14 & Konferensi INSPIRE.
Cugola, G., di Nitto, E., Fuggetta, A., dan Ghezzi, C. (1996). Kerangka kerja untuk
Memformalkan Inkonsistensi dan Penyimpangan dalam Sistem yang Berpusat pada
Manusia. ACMTransactions tentang Rekayasa dan Metodologi Perangkat Lunak,
5(3):191--230.
Cugola, G. dan Ghezzi, C. (1998). Proses Perangkat Lunak: Retrospektif dan Jalan
menuju masa depan. Proses Perangkat Lunak -- Peningkatan dan Praktek,
4(3):101--123.
Currit, P., Dyer, M., dan Mills, H. (1986). Mensertifikasi Keandalan Perangkat Lunak.
Transaksi IEEE pada Rekayasa Perangkat Lunak, 12(1):3--11.
Curtis, B. (1989). Tiga Masalah Diatasi dengan Model Perilaku dari Proses
Pengembangan Perangkat Lunak. Di dalam Prosiding Konferensi Internasional
ke-11 tentang Rekayasa Perangkat Lunak (ICSE11), halaman 398--399. IEEE.
Curtis, B., Krasner, H., dan Iscoe, N. (1988). Studi Lapangan Desain Perangkat
Lunak Proses untuk Sistem Besar. Komunikasi ACM, 31(11):1268--1287.
Curtis, B., Krasner, H., Shen, V., dan Iscoe, N. (1987). Pada Membangun Model
Proses Perangkat Lunak Di Bawah Tiang Lampu. Di dalam Prosiding Konferensi
Internasional ke-9 tentang Rekayasa Perangkat Lunak (ICSE9), halaman 96--103.
BIBLIOGRAFI 527
Curtis, B., Sheppard, S., dan Milliman, P. (1979). Mantra Ketiga Kali: Lebih Kuat
Prediksi Kinerja Pemrogram dengan Metrik Di dalam
Kompleksitas Perangkat Lunak.
Prosiding Konferensi Internasional ke-4 tentang Rekayasa Perangkat Lunak (ICSE4), halaman
356--360.IEEE.
Darcy, D. dan Kemerer, C. (2005). Metrik OO dalam Praktek. Perangkat Lunak IEEE, 22(6):17--
19.
Dart, S., Ellison, R., Feiller, P., dan Habermann, A. (1987). pengembangan perangkat lunak
Lingkungan. Komputer IEEE, 20(11):18--28.
Davenport, T. (1993). Inovasi Proses: Pekerjaan Rekayasa Ulang melalui Teknologi Informasi.
Harvard Business School Press, Cambridge, MA.
Davis, A. (1993). Persyaratan Perangkat Lunak: Objek, Fungsi, dan Status. Prentice-Hall, kedua
mengedit.
Dekleva, S. (1992). Studi Delphi tentang Masalah Pemeliharaan Perangkat Lunak. Di dalam Proses
Konferensi Internasional tentang Pemeliharaan Perangkat Lunak (ICSM’92), halaman 10--17. IEEE.
DeMarco, T. dan Lister, T. (1999). Peopleware: Proyek dan Tim Produktif. Dorset
Rumah, edisi kedua.
DeMillo, R., Lipton, R., dan Perlis, A. (1979). Proses Sosial dan Buktinya Teorema
dan Program. Komunikasi ACM, 22(5):271--280.
DeRemer, F. dan Kron, H. (1976). Pemrograman-dalam-besar Versus
Pemrograman- di-yang-kecil. Transaksi IEEE pada Rekayasa Perangkat Lunak,
2(2):80--86.
Devanbu, P., Brachman, R., Selfridge, P., dan Ballard, B. (1991). LASI: A
Sistem Informasi Perangkat Komunikasi ACM,
Lunak Berbasis Pengetahuan.
34(5):34--49.
Dolotta, T., Haight, R., dan Mashey, J. (1978). Sistem Berbagi Waktu UNIX: The
Meja Kerja Programmer. Jurnal Teknis Sistem Bell, 57(6):2177--2200.
Downs, E., Clare, P., dan Coe, I. (1992). SSADM: Analisis dan Desain Sistem
Terstruktur metode. Prentice-Hall, edisi kedua.
Ducasse, S., Gˆırba, T., dan Peta Distribusi. Di dalam Proses
Kuhn, A. (2006).
Konferensi Internasional tentang Pemeliharaan Perangkat Lunak (ICSM’06), halaman 203--212. IEEE.
Dunsmore, A., Roper, M., dan Wood, M. (2002). Investigasi Lebih Lanjut ke
Pengembangan dan Evaluasi Teknik Membaca untuk Inspeksi Kode Berorientasi
Objek. Di dalam Prosiding Konferensi Internasional ke-24 tentang Rekayasa
Perangkat Lunak (ICSE24), halaman 47--57. IEEE.
El Emam, K., Drouin, J., dan Melo, W. (1997). SPICE: Teori dan Praktek Perangkat
Lunak Peningkatan Proses dan Penentuan Kemampuan. IEEE.
El Emam, K. dan Madhavji, N. (1995). Keandalan Pengukuran Organisasi
Kematangan. Proses Perangkat Lunak -- Peningkatan dan Praktek, 1(1):3--25.
BIBLIOGRAFI 529
Elshoff, J. (1976). Mengukur Program PL-1 Komersial Menggunakan Kriteria Halstead.
Pemberitahuan SIGPLAN ACM, 11(5):38--76.
Fagan, M. (1986). Kemajuan dalam Pemeriksaan. Transaksi IEEE pada Rekayasa Perangkat Lunak,
12(7):744--751.
Fayad, M. (1997). Proses Pengembangan Perangkat Lunak: Kejahatan yang Diperlukan. Komunikasi
dari ACM, 40(9):101--103.
Fenton, N. dan Pfleeger, S. L. (1996). Metrik Perangkat Lunak: Pendekatan Ketat & Praktis.
Thomson Computer Press, edisi kedua.
Fitzsimmons, A. dan Cinta, T. (1978). Tinjauan dan Evaluasi Ilmu Perangkat Lunak.
Survei Komputasi ACM, 10(1):3--18.
Floyd, C., Mehl, W.-M., Reisin, F.-M., Schmidt, G., dan Wolf, G. (1989). Keluar dari
Skandinavia: Pendekatan Alternatif untuk Desain Perangkat Lunak dan
Pengembangan Sistem.Interaksi Manusia-Komputer, 4:253--350.
Folmer, E., van Gurp, J., dan Bosch, J. (2003). Kerangka Kerja untuk Menangkap
Hubungan antara Kegunaan dan Arsitektur Perangkat Lunak. Peningkatan dan
Praktek Proses Perangkat Lunak, 8(2):67--87.
Frankl, P., Weiss, S., dan Hu, C. (1997). Semua Penggunaan vs Pengujian Mutasi: An
Perbandingan Eksperimental Efektivitas. Jurnal Sistem dan Perangkat Lunak,
38(3):235--253.
Freeman, P. dan Wasserman, A., editor (1983). Tutorial: Teknik Desain Perangkat
Lunak. IEEE EZ514.
Fuggetta, A. dan Wolf, A., editor (1996). Proses Perangkat Lunak -- Peningkatan
dan Praktek. John Wiley & Sons.
BIBLIOGRAFI 531
Gamma, E., Helm, R., Johnson, R., dan Vlissides, J. (1995). Pola Desain: Elemen dari
Perangkat Lunak Berorientasi Objek yang Dapat Digunakan Kembali. Addison-Wesley.
Gane, C. dan Sarson, T. (1979). Analisis Terstruktur dan Analisis Sistem: Alat dan
Teknik. Prentice-Hall.
Garlan, D., Kaiser, G., dan Notkin, D. (1992). Menggunakan Abstraksi Alat untuk Menulis
Sistem. Komputer IEEE, 25(6):30--38.
Garmus, D. dan Herron, D. (1996). Mengukur Proses Perangkat Lunak: Panduan Praktis untuk
Pengukuran Fungsional. Prentice-Hall.
Garvin, D. (1984). Apa yang sebenarnya dimaksud dengan 'Kualitas Produk'? Tinjauan Manajemen
Sloan.
Gˆırba, T. dan Ducasse, S. (2006). Sejarah pemodelan untuk menganalisis evolusi perangkat lunak.
Jurnal Pemeliharaan dan Evolusi Perangkat Lunak: Penelitian dan Praktek, 18:207--236.
Gˆırba, T., Ducasse, S., dan Lanza, M. (2004). Cuaca Kemarin: Memandu upaya
rekayasa balik awal dengan meringkas evolusi perubahan. Di dalam
ProsidingKonferensi Internasional tentang Pemeliharaan Perangkat Lunak
(ICSM'04), halaman 40--49. IEEE.
Godfrey, M. dan Tu, Q. (2000). Evolusi dalam Perangkat Lunak Sumber Terbuka:
Studi Kasus.In Prosiding 2000 Konferensi Internasional tentang Pemeliharaan
Perangkat Lunak (ICSM’00), halaman131--142. IEEE.
Goguen, J. (1986). Pengantar OBJ: Bahasa untuk Menulis dan Menguji Spesifikasi
Program Aljabar Formal. Dalam Gehani, N. dan McGettrick, A., editor, Teknik
Spesifikasi Perangkat Lunak, halaman 391--419. Addison-Wesley.
Goguen, J. dan Jirotka, M., editor (1994). Rekayasa Persyaratan: Sosial dan Teknis
Masalah. Pers Akademik, Boston.
Gopal, A., Krishnan, M., Mukhopadhyay, T., dan Goldenson, D. (2002). Mea-
Tentu Program dalam Pengembangan Perangkat IEEE
Lunak: Penentu Kesuksesan.
Transaksi pada Rekayasa Perangkat Lunak, 28(9):863--875.
Grady, R. dan van Slack, T. (1994). Pelajaran Penting dalam Mencapai Inspeksi
Luas Menggunakan. Perangkat Lunak IEEE, 11(4):46--57.
Greevy, O., Ducasse, S., dan Gˆırba, T. (2006). Menganalisis evolusi perangkat
lunak melalui tampilan fitur. Jurnal Pemeliharaan dan Evolusi Perangkat Lunak:
Penelitian dan Praktek, halaman425--456.
Gyim'othy, T., Ferenc, R., dan Siket, I. (2005). Validasi Empiris Metrik Berorientasi
Objek pada Perangkat Lunak Sumber Terbuka untuk Prediksi Kesalahan. Rekayasa
Perangkat Lunak Transaksi IEEE, 31(10):897--910.
Hall, T. dan Fenton, N. (1997). Menerapkan Program Metrik Perangkat Lunak yang
Efektif. Perangkat Lunak IEEE, 14(2):55--65.
Harrold, M. (1999). Menguji Perangkat Lunak yang Jurnal Sistem dan Perangkat
47(2/3):173--181. Berkembang. Lunak,
Harrold, M., Offutt, A., dan Tewary, K. (1997). Pendekatan Fault Modeling dan Fault
Seeding Menggunakan Program Dependence Graph. Jurnal Sistem dan Perangkat
Lunak,36(3):273--295.
Hatley, D. dan Pirbhai, I. (1988). Strategi untuk Spesifikasi Sistem Real-Time. Dorset
Rumah.
Heemstra, F. (1989). Berapa Biaya Perangkat Lunak. Tesis PhD, Universitas Teknik
Eindhoven, Belanda. Dalam bahasa Belanda.
Henri, S. dan Kafura, D. (1981). Metrik Struktur Perangkat Lunak Berdasarkan Informasi
Mengalir. Transaksi IEEE pada Rekayasa Perangkat Lunak, 7(5):510--518.
Herbsleb, J., Zubrow, D., Goldenson, D., Hayes, W., dan Paulk, M. (1997). Kualitas
Perangkat Lunak dan Model Kematangan Kemampuan. Komunikasi ACM,
40(6):30--40.
Hitz, M. dan Montazeri, B. (1996). Suite Metrik Chidamber dan Kemerer: Perspektif
Teori Pengukuran. IEEETransactionsonSoftware Engineering, 22(4):267--271.
Ho, W. dan Olsson, R. (1996). Model Berlapis untuk Membangun Debugging dan
Alat Pemantau. Jurnal Sistem dan Perangkat Lunak, 34(3):211--222.
Hofman, H. dan Lehner, F. (2001). Rekayasa Kebutuhan sebagai Faktor Keberhasilan dalam
Proyek Perangkat Lunak. Perangkat Lunak IEEE, 18(4):58--66.
Hofmeister, C., Kruchten, P., Nord, R., Obbink, H., Ran, A., and America, P. (2007).
Model Umum Desain Arsitektur Perangkat Lunak Berasal dari Lima Pendekatan
Industri. Jurnal Sistem dan Perangkat Lunak, 80(1):106--126.
534 BIBLIOGRAFI
Hops, J. dan Sherif, J. (1995). Pengembangan dan Penerapan Model Kompleksitas
Komposit dan Metrik Kompleksitas Relatif dalam Lingkungan Pemeliharaan
Perangkat Lunak. Jurnal Sistem dan Perangkat Lunak, 31(2):157--169.
Hosier, W. (1961). Jebakan dan Perlindungan dalam Sistem Digital Real-Time Dengan
Penekanan pada Pemrograman. Transaksi IRE pada Manajemen Rekayasa, halaman
99--115.
Berburu, A. dan Thomas, D. (2003). Pengujian Unit Pragmatis. Rak Buku Pragmatis.
IEEE (2000). Praktik yang Direkomendasikan IEEE untuk Deskripsi Arsitektur
Perangkat Lunak- Sistem Intensif. Laporan teknis, IEEE.
IEEE1012 (1986). Standar IEEE untuk Paket Verifikasi dan Validasi Perangkat
Lunak. Standar IEEE 1012.
IEEE610 (1990). Daftar Istilah Standar IEEE untuk Terminologi Rekayasa Perangkat
Lunak. Standar IEEE 610.12.
IEEE730 (1989). Standar IEEE untuk Rencana Jaminan Kualitas Perangkat Lunak. IEEE Std 730.
IEEE830 (1993). Praktik yang Direkomendasikan IEEE untuk Spesifikasi Persyaratan Perangkat Lunak.
Standar IEEE
830.
IEEE983 (1986). Standar IEEE tentang perencanaan Jaminan Kualitas Perangkat Lunak. IEEE Std 983.
Iivari, J. (1996). Mengapa alat CASE tidak digunakan? Komunikasi ACM, 39(10):94-
-103.
Ishikawa, K. (1985). Apa itu Kontrol Kualitas Total? Cara Jepang. Prentice-Hall.
ISO9126 (2001). ISO/IEC 9126-1: Rekayasa Perangkat Lunak -- Kualitas Produk -- Bagian 1: Kualitas
Model. ISO.
Jarzabek, S. dan Huang, R. (1998). Kasus untuk Alat KASUS yang Berpusat pada Pengguna.
Komunikasi ACM, 41(8):93--98.
Jeffries, R., Anderson, A., dan Hendrickson, C. (2001). Pemrograman Ekstrim Terpasang.
Addison-Wesley.
Jeske, D. dan Zhang, X. (2005). Beberapa pendekatan sukses untuk keandalan perangkat lunak
pemodelan dalam industri. Jurnal Sistem dan Perangkat Lunak, 74(1):85--100.
J'ez'equel, J.-M. dan Meyer, M. (1997). Desain dengan Kontrak: Pelajaran dari Ariane.
Komputer IEEE, 30(1):129--130.
Johnson, L. (1998). Pandangan Dari Tahun 1960-an: Bagaimana Industri Perangkat Lunak Dimulai.
IEEE
Sejarah Sejarah Komputasi, 20(1):36--42.
Jones, C. (1989). Pemodelan Peningkatan Perangkat Lunak. Jurnal Pemeliharaan Perangkat Lunak:
Penelitian dan Praktek, 1(2):91--100.
536 BIBLIOGRAFI
Jones, C. (1999). Euro, Y2K, dan Urut Tenaga Kerja Perangkat Lunak AS.
Perangkat Lunak IEEE, 16(3):55--61.
JSS (1995). Edisi khusus tentang Metrik Perangkat Lunak. Jurnal Sistem dan
Perangkat Lunak, 31(2).
Juristo, N., Moreno, A., dan Silva, A. (2002). Apakah dia Industri Eropa Bergerak
menuju Memecahkan Masalah Rekayasa Persyaratan? Perangkat Lunak IEEE,
19(6):70--77.
Juristo, N., Moreno, A., dan Vegas, S. (2004). Meninjau 25 Tahun Pengujian
Eksperimen Teknik. Rekayasa Perangkat Lunak Empiris, 9:7--44.
Kamsties, E. dan Lott, C. (1995). Evaluasi Empiris dari Tiga Teknik Deteksi Cacat. Di
Sch¨afer, W. dan Botella, P., editor, Rekayasa Perangkat Lunak -- ESEC ’95,LNCS
989, halaman 362--383. Springer Verlag.
Kaner, C. dan Bond, W. (2004). Metrik Rekayasa Perangkat Lunak: Apa yang
Mereka Ukur dan Bagaimana Kita Tahu. Di dalam Prosiding Simposium Metrik
Perangkat Lunak Internasional ke-10 (Metrik 2004), halaman 1--12. IEEE.
Kano (1993). Metode Kano untuk Memahami Kualitas yang Ditentukan Pelanggan.
Tengah untuk Jurnal Kualitas Manajemen, 2(4):3--36.
Karlstrom, D. dan Runeson, P. (2005). Menggabungkan Metode Agile dengan
State-Gate Manajemen proyek. Perangkat Lunak IEEE, 22(3):43--49.
Kazman, R., Bass, L., dan Klein, M. (2006). Komponen penting dari perangkat lunak
desain dan analisis arsitektur. Jurnal Sistem dan Perangkat Lunak, 79(8):1207--1216.
Raja, D. (1988). Membuat Perangkat Lunak yang Efektif: Perancangan Program Komputer
Menggunakan Jackson
Metodologi. Yourdon Press.
Kitchenham, B. dan Pfleeger, S. (1996). Kualitas Perangkat Lunak: Target yang Sulit Dipahami. IEEE
Perangkat lunak, 13(1):12--21.
Klein, G., Jiang, J., dan Tesch, D. (2002). Dicari: Tim Proyek dengan Perpaduan IS
Orientasi Profesional. Komunikasi ACM, 45(6):81--87.
Kohno, T., Stubblefield, A., Rubin, A., dan Wallach, D. (2004). Analisis Sistem
Pemungutan Suara Elektronik. Di dalam Prosiding Simposium IEEE tentang
Keamanan dan Privasi, halaman27--42.
Kraut, R. dan Streeter, L. (1995). Koordinasi dalam Pengembangan Perangkat Lunak. Komunikasi-
kation ACM, 38(3):69--81.
Kuvaja, P., Simila, J., Krzanik, L., Bicego, A., Koch, G., dan Saukonen, S. (1994).
Penilaian dan Peningkatan Proses Perangkat Lunak: pendekatan BOOTSTRAP.
Penerbit Blackwell, Oxford, Inggris.
Lehman, M. dan Belady, L., editor (1985). Evolusi Program. Nomor 27 di APIC
Studi dalam Pengolahan Data. Pers Akademik.
BIBLIOGRAFI 539
Lehman, M., Ramil, J., Wernick, P., Perry, D., dan Turski, W. (1997). Metrik dan
Hukum Evolusi Perangkat Lunak -- Pandangan Tahun Sembilan Puluh. Di dalam
Prosiding Simposium Internasional ke-4 Tentang Metrik Perangkat Lunak (Metrik
97), halaman 20--32. IEEE.
Lethbridge, T., Singer, J., dan Maju, A. (2003). Bagaimana Insinyur Perangkat Lunak Menggunakan
Dokumentasi: Keadaan Praktek. Perangkat Lunak IEEE, 20(6):35--39.
Leveson, N. (1986). Keamanan Perangkat Lunak: Apa, Mengapa, dan Bagaimana. Survei Komputasi
ACM,
18(2):125--164.
Leveson, N. (1992). Mesin Uap Tekanan Tinggi dan Perangkat Lunak Di dalam
Komputer.
Prosiding Konferensi Internasional ke-14 tentang Rekayasa Perangkat Lunak (ICSE14), halaman
2--14.IEEE.
Li, W. dan Henry, S. (1993). Metrik Berorientasi Objek yang Memprediksi Keterawatan.
Jurnal Sistem dan Perangkat Lunak, 23(2):111--122.
Linger, R., Mills, H., dan Witt, B. (1979). Pemrograman Terstruktur, Teori dan Praktek.
Addison-Wesley.
Lott, C. (1993). Dukungan Proses dan Pengukuran di SEE. Rekayasa Perangkat Lunak ACM
Catatan, 18(4):83--93.
Lubars, M., Meredith, G., Potts, C., dan Richter, C. (1992). Analisis Berorientasi
Objek untuk Sistem Berkembang. Di dalam Prosiding Konferensi Internasional ke-14
tentang Rekayasa Perangkat Lunak (ICSE14), halaman 173--185. IEEE.
Lyons, M. (1981). Menyelamatkan Aset Perangkat Lunak Anda (Pemeliharaan Berbasis Alat). Di dalam
Prosiding Konferensi AFIPS, jilid 50, halaman 337--341.
Lyu, M., editor (1995). Handbook Rekayasa Keandalan Perangkat Lunak. McGraw-Hill.
Macala, R., Stuckey, Jr., L., dan Gross, D. (1996). Mengelola Khusus Domain,
Pengembangan Lini Produk. Perangkat Lunak IEEE, 13(3):57--68.
540 BIBLIOGRAFI
MacLean, A., Muda, R., Bellotti, V., dan Moran, T. (1991). Pertanyaan, Pilihan, dan
Kriteria: Elemen Desain Analisis Ruang. Interaksi Manusia-Komputer, 6:201--250.
M¨antyl¨a, M., Vanhanen, J., dan Lassenius, C. (2003). Taksonomi dan Studi Empiris
Awal tentang Bau Buruk dalam Kode. Di dalam Prosiding Konferensi Internasional
tentang Pemeliharaan Perangkat Lunak (ICSM'03), halaman 381--384.
Maranzano, J., Rozsypal, S., Zimmerman, G., Warnken, G., Wirth, P., dan Weiss,
D.(2005). Ulasan Arsitektur: Praktek dan Pengalaman. Perangkat Lunak IEEE,
22(2):34--43.
Martin, R. (2002). Pengembangan Perangkat Lunak Agile, Prinsip, Pola, dan Praktik.
Prentice-Hall.
McCall, J., Richards, P., dan Walters, G. (1977). Faktor-faktor dalam Kualitas Perangkat Lunak.
Laporan Teknis RADC-TR-77-369, Departemen Perdagangan AS.
McClure, R. (1968). Aspek Manajemen Produksi. Dalam Naur dan Randell (1968),
halaman 72.
Mens, T. dan Tourw'e, T. (2004). Survei Refactoring Perangkat Lunak. Transaksi IEEE
tentang Rekayasa Perangkat Lunak, 30(2):126--139.
Meyer, B. (1985). Pada Formalisme dalam Spesifikasi. Perangkat Lunak IEEE, 2(1):6--26.
Meyer, B. (1996). Realitas: Sepupu dua kali dipindahkan. Komputer IEEE, 29(7):96--97.
Miller, B., Fredrikson, L., dan Jadi, B. (1990). Sebuah Studi Eksperimental Keandalan
Fasilitas UNIX. Komunikasi ACM, 33(12):32--44.
Mills, H., Dyer, M., dan Linger, R. (1987). Rekayasa Perangkat Lunak Kamar Bersih. IEEE
Perangkat lunak, 4(5):19--25.
Mintzberg, H. (1983). Struktur dalam Panca: Merancang Organisasi yang Efektif. Prentice-Hall.
Mockus, A., Fielding, R., dan Herbsleb, J. (2000). Studi Kasus Pengembangan
Perangkat Lunak Sumber Terbuka: Server Apache. Di dalam Prosiding 22nd
International Conferenceon Software Engineering (ICSE22), halaman 263--272.
IEEE.
Moran, T. dan Carroll, J. (1994). Dasar Pemikiran Desain: Konsep, Teknik, dan Penggunaan. Lawrence
Asosiasi Erlbaum.
Morisio, M., Seaman, C., Basili, V., Parra, A., Kraft, S., and Condon, S. (2002).
Pengembangan perangkat lunak berbasis COTS: Proses dan masalah terbuka.
Jurnal Sistem dan Perangkat Lunak, 61(3):189--199.
Musa, J., Iannino, A., dan Okumoto, K. (1987). Keandalan Perangkat Lunak:
Pengukuran,
Prediksi, Aplikasi. McGraw-Hill.
542 BIBLIOGRAFI
Mustapic, G., Wall, A., Norstr¨om, C., Crnkovic, I., Sandstr¨om, K., Fr¨oberg, J.,
andAndersson, J. (2004). Pengaruh Dunia Nyata pada Arsitektur Perangkat Lunak --
Wawancara dengan Pakar Sistem Industri. Di dalam Prosiding 4th Working
IEEE/IFIP Conference on Software Architecture (WICSA4), halaman 101--111.
IEEE.
Myers, G. (1979). Seni Pengujian Perangkat Lunak. John Wiley & Sons.
Myers, W. (1986). Bisakah Perangkat Lunak untuk SDI Bebas dari Kesalahan?
Komputer IEEE, 19(10):61--67.
Niessink, F. dan van Vliet, H. (1998a). Menuju Layanan TI yang Matang. Proses
Perangkat Lunak -- Peningkatan dan Latihan, 4(2):55--71.
Niessink, F. dan van Vliet, H. (1998b). Menuju Program Pengukuran Matang. Dalam
Nesi, P. dan Lehner, F., editor, Prosiding Konferensi Euromicro ke-2 tentang
Pemeliharaan dan Reengineering Perangkat Lunak, halaman 82--88. IEEE.
Niessink, F. dan van Vliet, H. (1999). Pemeliharaan Perangkat Lunak dari Layanan
Perspektif. Laporan teknis, Universitas Gratis.
Norden, P. (1970). Alat yang Berguna untuk Manajemen Proyek. Dalam Starr, M.,
editor, Manajemen Produksi, halaman 71--101. Buku Pinguin.
Offutt, A., Harrold, M., dan Kolte, P. (1993). Sistem Metrik Perangkat Lunak untuk
Modul Kopel. Jurnal Sistem dan Perangkat Lunak, 20(3):295--308.
BIBLIOGRAFI 543
Oz, E. (1994). Ketika Standar Profesional Lax: Kegagalan CONFIRM dan itu
Pelajaran. Komunikasi ACM, 37(10):29--36.
Halaman, D., Williams, P., dan Boyd, D. (1993). Laporan Penyelidikan ke Ambulans London
Melayani. Otoritas Kesehatan Daerah Thames Barat Daya.
Parnas, D. (1972). Tentang Kriteria yang Akan Digunakan dalam Mengurai Sistem Menjadi Modul.
Komunikasi ACM, 15(12):1053--1058.
Parnas, D. (1985). Aspek Perangkat Lunak Sistem Pertahanan Strategis. Perangkat Lunak ACM
Catatan Rekayasa, 10(5):15--23.
Parnas, D. (1987). SDI 'Red Herrings' Miss the Boat. Komputer IEEE, 20(2):6--7.
Parnas, D. dan Clements, P. (1986). Proses Desain Rasional: Bagaimana dan Mengapa
Berpura-pura. Transaksi IEEE pada Rekayasa Perangkat Lunak, 12(2):251--257.
Parnas, D. dan Lawford, M. (2003a). Peran Inspeksi dalam Asuransi Kualitas Perangkat Lunak.
Perangkat Lunak IEEE, 20(4):16--20.
Parnas, D. dan Lawford, M. (2003b). Peran Inspeksi dalam Kualitas Perangkat Lunak
Jaminan. Transaksi IEEE pada Rekayasa Perangkat Lunak, 29(8):674--676.
Parnas, D. dan Weiss, D. (1987). Tinjauan Desain Aktif: Prinsip dan Praktik.
Jurnal Sistem dan Perangkat Lunak, 7(4):259--265.
Patel, S., Chu, W., dan Baxter, R. (1992). Ukuran untuk Kohesi Modul Komposit.In
Prosiding Konferensi Internasional ke-14 tentang Rekayasa Perangkat Lunak
(ICSE14), halaman 38--48.IEEE, Melbourne.
Perry, D. dan Kaiser, G. (1991). Model Lingkungan Pengembangan Perangkat Lunak.
Transaksi IEEE pada Rekayasa Perangkat Lunak, 17(3):283--295.
Perry, D. dan Wolf, A. (1992). Dasar untuk Studi Arsitektur Perangkat Lunak.
Catatan Rekayasa Perangkat Lunak ACM, 17(4):40--52.
544 BIBLIOGRAFI
Pigoski, T. (1996). Pemeliharaan Perangkat Lunak Praktis. John Wiley & Sons.
Pohl, K. (1993). Tiga Dimensi Rekayasa Kebutuhan. Di Rolland, C., Bodart, F., dan
Cauvet, C., editor, Prosiding Konferensi Internasional Kelima tentang Rekayasa
Sistem Informasi Lanjutan (CAiSE’93), halaman 275--292. Springer Verlag.
Pohl, K., B¨ockle, G., dan van der Linden, F. (2005). Rekayasa Lini Produk
Perangkat Lunak. penerbit Springer.
Porter, A., Siy, H., Mockus, A., dan Votta, L. (1998). Memahami Sumber Variasi
dalam Inspeksi Perangkat Lunak. Transaksi ACM pada Rekayasa Perangkat Lunak
dan Metodologi, 7(1):41--79.
Porter, A., Siy, H., Toman, C., dan Votta, L. (1997). Eksperimen untuk Menilai
Biaya-Manfaat dari Inspeksi Kode dalam Pengembangan Perangkat Lunak Skala
Besar. Transaksi IEEE pada Rekayasa Perangkat Lunak, 23(6):329--346.
Porter, A., Votta, Jr., L., dan Basili, V. (1995). Membandingkan Metode Deteksi untuk
Inspeksi Persyaratan Perangkat Lunak: Eksperimen yang Direplikasi. Transaksi
IEEE pada Rekayasa Perangkat Lunak, 21(6):563--575.
Post, G., Kagan, A., dan Keim, R. (1998). Evaluasi Komparatif Alat KASUS.
Jurnal Sistem dan Perangkat Lunak, 44(2):87--96.
Power, L. dan Weiss, Z., editor (1987). Tambahan Prosiding OOPSLA87. ACM.
Putnam, L. (1978). Solusi Empiris Umum untuk Ukuran Perangkat Lunak Makro dan
Masalah Estimasi. Transaksi IEEE pada Rekayasa Perangkat Lunak,
4(4):345--361.
BIBLIOGRAFI 545
Raba (2004). Laporan Agen Tepercaya Sistem Pemungutan Suara Diebold AccuVote-TS. RABA
Teknologi.
Rahgozar, M. dan Oroumchian, F. (2003). Strategi yang efektif untuk evolusi sistem
lama. Jurnal Pemeliharaan dan Evolusi Perangkat Lunak: Penelitian dan Praktek,
15:325--344.
Rainer, A. dan Hall, T. (2003). Analisis faktor secara kuantitatif dan kualitatif
mempengaruhi proses perangkat lunak. Jurnal Sistem dan Perangkat Lunak, 66(1):7--22.
Ramos, I., Berry, D., dan Carvalho, J. (2005). Rekayasa kebutuhan untuk organisasi
transformasi zasional. Teknologi Informasi dan Perangkat Lunak, 47(5):479--495.
Redwine, S. dan Teka-teki, W. (1985). Pematangan Teknologi Perangkat Lunak. Di dalam Proses
Konferensi Internasional ke-8 tentang Rekayasa Perangkat Lunak (ICSE8), halaman 189--200. IEEE.
Rochkind, M. (1975). Sistem Kontrol Kode Sumber. Transaksi IEEE pada Perangkat Lunak
Rekayasa, 1(4):364--370.
Royce, W. (1998). Manajemen Proyek Perangkat Lunak: Kerangka Kerja Terpadu. Addison-Wesley.
Rozanski, N. dan Woods, E. (2005). Arsitektur Sistem Perangkat Lunak: Bekerja dengan Pemangku
Kepentingan
menggunakan Sudut Pandang dan Perspektif. Addison-Wesley.
546 BIBLIOGRAFI
Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., dan Lorensen, W. (1991).
Pemodelan dan Desain Berorientasi Objek. Prentice-Hall.
Rumbaugh, J., Jacobson, I., dan Booch, G. (1999). Referensi Bahasa Pemodelan
Terpadu Manual. Addison Wesley.
Schach, S., Jin, B., Yu, L., Heler, G., dan Offutt, J. Menentukan
(2003).
Distribusi Kategori Pemeliharaan: Survei versus Pengukuran. Rekayasa Perangkat Lunak
Empiris, 8:351--365.
Sebillotte, S. (1988). Perencanaan Hirarki sebagai Metode Analisis Tugas: Contoh Analisis
Tugas Kantor. Perilaku dan Teknologi Informasi, 7(3):275--293.
Selby, R., Basili, V., dan Baker, F. (1987). Pengembangan Perangkat Lunak
Cleanroom. IEEE Transaksi pada Rekayasa Perangkat Lunak, 13(9):1027--1037.
Shaw, M., DeLine, R., Klein, D., Ross, T., Young, D., dan Zelesnik, G. (1995).
Abstraksi untuk Arsitektur Perangkat Lunak dan Alat untuk
Mendukungnya.Rekayasa Perangkat Lunak IEEETransaction, 21(4):314--335.
Shepperd, M. dan Ince, D. (1993). Kritik terhadap Tiga Metrik. Jurnal Sistem dan
Perangkat lunak, 26(3):197--210.
Simmons, P. (1996). Hasil Kualitas: Menentukan Nilai Bisnis. Perangkat Lunak IEEE,
13(1):25--32.
Singer, J., Eles, R., dan Storey, M.-A. (2005). NavTracks: Mendukung Navigasi
dalam Pemeliharaan Perangkat Lunak. Di dalam Prosiding Konferensi Internasional
tentang Pemeliharaan Perangkat Lunak (ICSM'05), halaman 325--334. IEEE.
Perangkat Lunak (1994). Masalah khusus tentang Peningkatan Proses. Perangkat Lunak IEEE, 11(4).
Perangkat Lunak (1996a). Edisi Khusus tentang Mengelola Proyek Perangkat Lunak Besar. Perangkat
Lunak IEEE,
13(4).
Perangkat Lunak (1996b). Edisi Khusus tentang Software Tools Assessment. Perangkat Lunak IEEE,
13(5).
Perangkat Lunak (1997a). Edisi khusus tentang Mengelola Risiko. Perangkat Lunak IEEE, 14(3).
Perangkat Lunak (1997b). Masalah khusus tentang Pengukuran. Perangkat Lunak IEEE, 14(2).
Perangkat Lunak (1999). Edisi Khusus tentang Faktor Kesuksesan Kritis. Perangkat Lunak IEEE, 16(3).
Perangkat Lunak (2000). Edisi Khusus: Estimasi Perangkat Lunak. Perangkat Lunak IEEE, 17(6):22--70.
Perangkat Lunak (2003). Edisi Khusus: Keadaan Praktik dalam Rekayasa Perangkat Lunak. IEEE
Perangkat lunak, 20(6).
Perangkat Lunak (2005). Masalah khusus: Mengadaptasi Agility. Perangkat Lunak IEEE, 22(3):17--49.
Perangkat Lunak (2006). Masalah khusus: Arsitektur Perangkat Lunak. Perangkat Lunak IEEE,
23(2):22--87.
Soloway, E. (1986). Belajar Memprogram = Belajar Menyusun Mekanisme dan
Penjelasan. Komunikasi ACM, 29(9):850--858.
Sommerville, I., Bentley, R., Rodden, T., dan Sawyer, P. (1994). Sistem Koperasi
Desain. Jurnal Komputer, 37(5):357--366.
548 BIBLIOGRAFI
Soni, D., Nord, R., dan Hofmeister, C. (1995). Arsitektur Perangkat Lunak dalam
Aplikasi Industri. Di dalam Prosiding Konferensi Internasional ke-17 tentang
Rekayasa Perangkat Lunak (ICSE17), halaman 196--207. IEEE.
St˚alhane, T., Borgersen, P., dan Arnesen, K. (1997). Dalam Pencarian Pelanggan
Tampilan Berkualitas. Jurnal Sistem dan Perangkat Lunak, 38(1):85--94.
Stevens, W., Myers, G., dan Constantine, L. (1974). Desain Terstruktur. Sistem IBM
Jurnal, 13(2):115--139.
Succi, G., Pedrycz, W., Stefanovic, M., dan Miller, J. (2003). Penilaian praktis model
untuk identifikasi kelas rawan cacat dalam sistem komersial berorientasi objek
menggunakan metrik desain. Jurnal Sistem dan Perangkat Lunak, 65(1):1--12.
Suryn, W., Hailey, V., dan Coster, A. (Juli/Agustus 2004). Hoge basis pengguna
potensial untuk ISO/IEC 90003. Sistem Manajemen ISO, halaman 34--39.
Taivalsaari, A. (1993). Tentang Pengertian Obyek. Jurnal Sistem dan Perangkat Lunak,
21(1):3--16.
Tan, W.-G. dan Gable, G. (1998). Sikap Personil Pemeliharaan Terhadap Pekerjaan
Pemeliharaan: Sebuah Analisis Komparatif. Jurnal Pemeliharaan Perangkat Lunak:
Penelitian dan Praktek, 10:59--74.
Tanenbaum, A., van Staveren, H., Keizer, E., dan Stevenson, J. (1983). Alat Praktis
untuk Membuat Kompiler Portabel. Komunikasi ACM, 26(9):654--662.
Trammell, C., Binder, L., dan Snyder, C. (1992). Sistem Dokumentasi Kontrol
Produksi Otomatis: Studi Kasus dalam Rekayasa Perangkat Lunak Cleanroom.
ACMTransactions tentang Rekayasa dan Metodologi Perangkat Lunak, 1(1):81--94.
TRSE (1998). Edisi Khusus Manajemen Skenario. Transaksi IEEE pada Perangkat Lunak
Rekayasa, 24(12).
van der Linden, F. dan M¨uller, J. (1995). Membuat Arsitektur dengan Blok Bangunan.
Perangkat Lunak IEEE, 12(6):51--60.
van Deursen, A., Hofmeister, C., Koschke, R., Moonen, L., dan Riva, C.
(2004).Symphony: Rekonstruksi Arsitektur Perangkat Lunak Berbasis Tampilan. Di
dalam Prosiding 4thWorking IEEE/IFIP Conference on Software Architecture
(WICSA4), halaman 122--132. IEEE.
van Genuchten, M. (1991). Menuju Pabrik Perangkat Lunak. Tesis PhD, Universitas Teknik
Eindhoven, Belanda.
550 BIBLIOGRAFI
Verner, J. dan Cerpa, N. (1997). Prototyping: Apakah Pandangan Anda tentang
Keuntungannya Tergantung Pekerjaan Anda. Jurnal Sistem dan Perangkat
Lunak, 36(1):3--16.
Wallace, L. dan Keil, M. (2004). Risiko Proyek Perangkat Lunak dan Pengaruhnya
terhadap Proyek Hasil. Komunikasi ACM, 47(4):68--73.
Wegner, P. (1984). Teknologi Perangkat Lunak Padat Modal. Perangkat Lunak IEEE,
1(3):7--45.
Weidenhaupt, K., Pohl, K., Jarke, M., dan Haumer, P. (1998). Skenario di System
Pengembangan: Praktik Saat Ini. Perangkat Lunak IEEE, 15(2):34--45.
Weller, E. (1993). Pelajaran dari Tiga Tahun Data Inspeksi. Perangkat Lunak IEEE,
10(5):38--45.
Weyuker, E. (1990). Biaya Pengujian Aliran Data: Studi Empiris. IEEE Transaksi
pada Rekayasa Perangkat Lunak, 16(2):121--128.
Whittaker, J. (2000). Apa itu Pengujian Perangkat Lunak? Dan Mengapa Begitu Sulit. IEEE
Perangkat lunak, 17(1):70--79.
Whittaker, J. dan Voas, J. (2000). Menuju Teori Perangkat Lunak yang Lebih Andal
Keandalan. Komputer IEEE, 33(12):36--42.
Wiegers, K. (2002). Ulasan Sejawat dalam Perangkat Lunak --- Panduan Praktis. Addison-Wesley.
Wieringa, R. (1996). Rekayasa Persyaratan: Kerangka Kerja untuk Pemahaman. John Wiley &
Anak laki-laki.
Wieringa, R. (1998). Survei Spesifikasi Perangkat Lunak Terstruktur dan Berorientasi Objek
Metode dan Teknik kation. Survei Komputasi ACM, 30(4):459--527.
Wolverton, R. (1974). Biaya Pengembangan Perangkat Lunak Berskala Besar. Transaksi IEEE
di Komputer, halaman 615--636.
Kayu, M., Roper, M., Brooks, A., dan Miller, J. (1997). Membandingkan dan
Menggabungkan Teknik Deteksi Cacat Perangkat Lunak. Dalam Jazayeri, M. dan
Schauer, H., editor,Prosiding Konferensi Rekayasa Perangkat Lunak Eropa ke-6,
LNCS 1301, halaman 262--277.Springer Verlag.
Yeh, D. dan Jeng, J.-H. (2002). Studi empiris tentang pengaruh departementalisasi
dan posisi organisasi pada pemeliharaan perangkat lunak. Jurnal Pemeliharaan dan
Evolusi Perangkat Lunak: Penelitian dan Praktek, 14:65--82.
Zelkowitz, M. (1988). Pemanfaatan Sumber Daya Selama Pengembangan Perangkat Lunak. Jurnal
Sistem dan Perangkat Lunak, 8(4):331--336.
552 BIBLIOGRAFI
Zhu, H. (1996). Analisis Formal Subsume Hubungan Antara Pengujian Perangkat
Lunak Kriteria Kecukupan. Transaksi IEEE pada Rekayasa Perangkat Lunak,
22(4):248--255.
Zhu, H., Hall, P., dan Mei, J. (1997). Cakupan dan Kecukupan Pengujian Unit
Perangkat Lunak. Survei Komputasi ACM, 29(4):366--427.
Zucconi, L. (1989). Memilih Alat KASUS. Catatan Rekayasa Perangkat Lunak ACM,
14(2):42- -44.