Prerequisites
Pokok Bahasan
• Membangun PL
• Appeal to Analogy
• Problem-Definition Prerequisite
• Architecture Prerequisite
• Typical Architectural Components
Membangun PL
Jika Anda menekankan kualitas pada awal proyek, Anda
merencanakan, mengharuskan, dan merancang produk
berkualitas tinggi. Jika Anda memulai proses dengan desain Anda
dapat menguji semua yang Anda inginkan, dan itu tidak akan
pernah berubah menjadi membangun yang terbaik, tetapi jika
Anda menginginkan harus merencanakan dari awal untuk
membangun perangkat lunak, Anda melakukan perencanaan
seperti itu ketika menentukan masalah, ketika Anda menentukan
solusinya, dan ketika Anda merancang solusinya, akan mudah
melakukannya.
Karena konstruksi berada di tengah-tengah proyek perangkat
lunak, pada saat Anda mencapai konstruksi, bagian-bagian awal
proyek telah meletakkan beberapa dari landasan untuk
keberhasilan atau kegagalan. Namun, selama konstruksi,
setidaknya harus dapat menentukan seberapa baik situasi yang
mendukung, jika melihat awan hitam kegagalan menjulang di
cakrawala. Apakah Anda benar-benar siap untuk memulai
konstruksi.
Anda mungkin berpikir bahwa semua programmer
profesional tahu tentang pentingnya persiapan dan memeriksa
apakah prasyarat telah dipenuhi sebelum terjun ke konstruksi.
Sayangnya, itu tidak benar.
Penyebab umum dari persiapan yang tidak lengkap adalah
bahwa pengembang yang menandatangani kontrak untuk
mengerjakan kegiatan hulu tidak memiliki keahlian untuk
melaksanakan tugas mereka. Keterampilan yang diperlukan
untuk merencanakan suatu proyek, membuat kasus bisnis yang
menarik, mengembangkan persyaratan yang komprehensif dan
akurat, dan membuat arsitektur berkualitas tinggi jauh dari
mudah, tetapi sebagian besar pengembang belum menerima
pelatihan tentang cara melakukan kegiatan ini.
Kapan pengembang tidak tahu caranya melakukan pekerjaan
hulu, rekomendasi untuk "melakukan lebih banyak pekerjaan
hulu" terdengar seperti omong kosong: Jika pekerjaan itu tidak
dilakukan dengan baik di tempat pertama, melakukan lebih dari
itu tidak akan berguna! Menjelaskan bagaimana melakukan
kegiatan-kegiatan ini berada di luar cakupan ini.
Beberapa programmer benar-benar tahu bagaimana
melakukan kegiatan hulu, tetapi mereka tidak siap karena
mereka tidak dapat menahan keinginan untuk mulai
mengkodekan sesegera mungkin. Jika Anda memberi makan
kuda Anda di palung ini, saya punya dua saran.
Saran 1: Baca argumen di bagian selanjutnya. Mungkin
memberi tahu Anda beberapa hal yang belum Anda pikirkan.
Saran 2: Perhatikan masalah yang Anda alami. Hanya perlu
beberapa program besar untuk mengetahui bahwa Anda dapat
menghindari banyak kebingungan dengan merencanakan
sebelumnya. Biarkan pengalaman Anda sendiri menjadi panduan
Anda.
Alasan terakhir yang tidak dipersiapkan programmer adalah
bahwa manajer terkenal tidak simpatik kepada programmer yang
menghabiskan waktu untuk prasyarat konstruksi. Orang-orang
seperti Barry Boehm, Grady Booch, dan Karl Wiegers telah
menggedor persyaratan dan desain drum selama 25 tahun, dan
Anda berharap bahwa manajer akan mulai memahami bahwa
pengembangan perangkat lunak lebih dari sekadar pengkodean.
Appeal to Analogy
Jika Anda merencanakan proyek yang sangat iteratif, Anda
perlu mengidentifikasi persyaratan penting dan elemen
arsitektur yang berlaku untuk setiap bagian yang Anda
susun sebelum Anda memulai konstruksi. Seorang
pembangun yang sedang membangun pembangunan
perumahan tidak perlu mengetahui setiap detail dari setiap
rumah dalam pembangunan, sebelum memulai konstruksi
di rumah pertama. Tetapi pembangun akan mensurvei situs,
memetakan saluran pembuangan dan saluran listrik, dan
sebagainya. Jika pembangun tidak menyiapkan dengan baik,
konstruksi mungkin tertunda ketika saluran pembuangan
harus digali di bawah rumah yang sudah dibangun.
Problem-Definition Prerequisite
Prasyarat pertama yang harus Anda penuhi sebelum memulai
konstruksi adalah pernyataan yang jelas tentang masalah yang
seharusnya diselesaikan oleh sistem. Kadang-kadang ini disebut
"visi produk," "pernyataan misi," dan "definisi produk." Di sini
disebut "definisi masalah." Karena buku ini tentang konstruksi,
akan memberi tahu Anda bagaimana mengenali apakah telah
ditulis sama sekali dan apakah yang ditulis akan membentuk
fondasi yang baik untuk konstruksi.
Definisi masalah mendefinisikan apa masalahnya tanpa
merujuk pada solusi. Ini pernyataan sederhana, mungkin satu
atau dua halaman, dan seharusnya terdengar seperti masalah.
Gambar 1. The problem definition lays the foundation for the rest
of the programming process.
Definisi masalah harus dalam bahasa pengguna, dan
masalahnya harus dijelaskan dari sudut pandang pengguna.
Biasanya tidak dinyatakan dalam istilah teknis komputer. Solusi
terbaik mungkin bukan program komputer. Misalkan Anda
memerlukan laporan yang menunjukkan laba tahunan Anda.
Anda sudah memiliki laporan terkomputerisasi yang
menunjukkan keuntungan triwulanan. Jika Anda terkunci di set
programmer, Anda akan beralasan bahwa menambahkan
laporan tahunan ke sistem yang sudah melakukan laporan harus
mudah. Maka Anda akan membayar seorang programmer untuk
menulis dan men-debug program yang memakan waktu
menghitung laba tahunan. Jika Anda tidak mengunci pola pikir
komputer, Anda akan membayar sekretaris Anda untuk
membuat angka-angka tahunan dengan mengambil satu menit
untuk menambahkan angka-angka triwulanan pada kalkulator.
Persyaratan menjelaskan secara terperinci apa yang
seharusnya dilakukan oleh sistem perangkat lunak, dan mereka
adalah langkah pertama menuju solusi. Aktivitas persyaratan
juga dikenal sebagai "pengembangan persyaratan," "analisis
persyaratan," "analisis," "'memerlukan definisi persyaratan
perangkat lunak," "spesifikasi," "spesifikasi fungsional," dan
"spesifikasi.
Gambar 2. Without a good problem definition, you might put effort into solving
the wrong problem. Be sure you know what you’re aiming at before you shoot.
Menentukan persyaratan secara memadai adalah kunci
keberhasilan proyek, bahkan mungkin lebih penting daripada
teknik konstruksi yang efektif. Banyak buku bagus telah ditulis
tentang cara menentukan persyaratan dengan baik. Akibatnya,
beberapa bagian berikutnya tidak memberi tahu Anda cara
melakukan pekerjaan dengan baik dengan menetapkan
persyaratan, mereka memberi tahu Anda cara menentukan
apakah persyaratan telah dilakukan dengan baik dan bagaimana
469 memanfaatkan sebaik-baiknya persyaratan yang Anda miliki.
Architecture Prerequisite
Arsitektur perangkat lunak adalah bagian tingkat tinggi dari
desain perangkat lunak, bingkai yang memegang bagian-
bagian yang lebih detail dari desain (Buschman, Fowler; Bass
Clements, Kazman; Clements). Arsitektur juga dikenal sebagai
"arsitektur sistem," "desain tingkat tinggi," dan "desain tingkat
atas." Biasanya, arsitektur dijelaskan dalam satu dokumen
yang disebut sebagai "spesifikasi arsitektur" atau "top-
arsitektur". Beberapa orang membuat perbedaan antara
arsitektur dan desain tingkat tinggi, arsitektur mengacu pada
kendala desain yang diterapkan di seluruh sistem, sedangkan
desain tingkat tinggi mengacu pada batasan desain yang
diterapkan pada subsistem atau tingkat kelas ganda. , tetapi
tidak harus sistem yang luas.
Kualitas arsitektur menentukan integritas konseptual sistem.
Itu pada gilirannya menentukan kualitas tertinggi dari sistem.
Arsitektur yang dipikirkan dengan baik menyediakan struktur
yang diperlukan untuk mempertahankan integritas konseptual
sistem dari tingkat atas ke tingkat bawah. Ini memberikan
panduan kepada programmer pada tingkat detail yang sesuai
dengan keterampilan programmer dan pekerjaan yang sedang
dihadapi. Ini mempartisi kerja sehingga banyak pengembang
atau beberapa tim pengembangan dapat bekerja secara
independen. Arsitektur yang baik membuat konstruksi menjadi
mudah. Arsitektur yang buruk membuat konstruksi hampir
mustahil.
Typical Architectural Components
1. Program Organization