Pengantar
Proses
pengembangan perangkat lunak (Software Process / Development Paradigm) adalah
sekumpulan tahap, tugas dan aktivitas yang dibutuhkan untuk secara effisien
mentransformasikan kebutuhan pemakai ke suatu solusi perangkat lunak yang
efektif. Pemodelan proses perangkat
lunak (Software Process Modeling) bertujuan untuk merepresentasikan aktivitas
yang terjadi selama pembuatan perangkat lunak dan perubahan-perubahannya
(evolusi). Latar belakang penggunaan
model-model tersebut adalah kebutuhan untuk menghasilkan suatu sistem yang
benar sedini mungkin didalam proses pengembangannya. Alasan utama adalah biaya. Semakin dini suatu kesalahan bisa dideteksi
dalam pengembangan sistem, biaya perbaikannya semakin rendah.
Suatu
model proses yang baik dan terstruktur akan (Boehm, 1988):
·
menentukan urutan tahap dalam suatu proses
·
menciptakan kriteria transisi untuk maju ke tahap selanjutnya
Suatu
proses model harus bisa menangani hal-hal sebagai berikut:
·
Kualitas
·
Requirement yang berubah-ubah
·
Kompleksitas
Requirement
dan karakteristik dari sistem perangkat lunak dari jenis aplikasi berbeda
sangat bervariasi, sehingga tidak ada suatu model proses atau paradigma yang
bisa mencakup segala jenis pengembangan sistem perangkat lunak.
Model Waterfall
Model
Waterfall ini juga dikenal dengan nama model tradisional atau model
klasik. Model ini adalah model yang
paling banyak dikenal dan dipakai.
Requirements
analysis and definition
System and
software design
Implementation
and unit-testing
Integration and
system-testing
Gambar 2.1: Model waterfall
Keuntungan:
·
Terstruktur
·
Tiap tahap memiliki metode untuk menghasilkan suatu dokumen yang bisa
diserahkan ke pemakai
·
Dokumen yang dihasilkan tiap tahap bisa di spesifikasikan secara jelas
dan mendetail
Kerugian:
·
Linear, tidak ada umpan balik (feedback)
·
Sumber daya dan penjadwalan harus di perkirakan pada awal proyek
·
Tahap terisolasi, kurang terjalin transisi ke tahap berikutnya. Akibat paling besar terasa pada tahap
requirement
·
Pemakai tidak bisa melihat produk perangkat lunak sampai akhir proyek
·
Penekanan terbesar pada dokumen
Model
waterfall ini cocok untuk produksi suatu aplikasi tunggal yang biayanya rendah
dengan menggunakan:
·
Dekomposisi fungsi top-down
·
3GL konvensional untuk implementasinya
Model Prototyping
Prototyping
adalah suatu proses yang memungkinkan pengembang aplikasi untuk menciptakan
suatu model dari perangkat lunak yang harus dikembangkan. Tujuan utama dari prototyping adalah untuk
mengurangi resiko dan ketidak-pastian selama tahap-tahap awal dari life-cycle
pengembangan perangkat lunak. Prototyping
meneruskan tahap analisa requirement untuk mengurangi biaya pengembangan
perangkat lunak secara keseluruhan.
Establish outline Develop Evaluate
Specify
specifications prototype prototype system
components
Design and Validate
implement system system
Gambar 2.2: Model
prototyping
Keuntungan:
·
Mengurangi kesalah-pahaman antara pengembang dan pemakai perangkat
lunak
·
Contoh sistem bisa diperlihatkan ke pemakai dalam tempo singkat
·
Prototype dipakai sebagai dasar spesifikasi dari sistem
Kerugian:
·
Biaya pengembangan prototype sering merupakan bagian yang cukup besar
dari keseluruhan biaya sistem
·
Dari contoh prototype, harapan pemakai seringkali berlebihan / tidak
sesuai dengan sistem yang sesungguhnya
Selesai
dipakai, prototype tidak boleh diteruskan untuk dipakai oleh sistem
sesungguhnya, karena:
·
Fasilitas penting kemungkinan diabaikan untuk menyederhanakan
implementasi secepatnya
·
Prototype biasanya dikembangkan secara ad-hoc tanpa kontrol
Model Exploratory
Model
ini dipakai dengan awal seadanya. Pengembang sistem tidak sepenuhnya mengerti
dan menguasai requirement dari sistem. Sistem dikembangkan sejalan dengan
adanya requirement baru. Model ini dipakai pada konteks dimana pengembang sulit
sekali untuk membuat suatu spesifikasi. Model ini banyak dipakai pada area yang
memiliki budget tinggi, misalnya militer.
Develop Build Use
outline specifications software system software system
NO
System
adequate?
YES
Deliver
software system
Gambar 2.3: Model
Exploratory
Keuntungan:
·
Terkadang, model ini adalah satu-satunya pendekatan yang masuk akal
(tidak ada pilihan lain)
Kerugian:
·
Manajemen
·
Perubahan yang terus-menerus bisa mengerosi struktur sistem
Model Evolutionary /
Incremental
Model
ini adalah pengembangan lebih lanjut dari model exploratory yang didesain untuk
menjawab kritik terhadap model prototyping.
Requirement didefinisikan dan diserahkan kepada pemakai dalam bentuk incremental
(bertahap). Penyelesaian suatu tahap
adalah dalam bentuk suatu unit perangkat lunak yang sudah berfungsi,
bersama-sama dengan semua materi pendukungnya (misalnya dokumentasi dan user
manual). Secara keseluruhan, model
incremental ini adalah gabungan dari beberapa proses waterfall mini yang saling
berurutan.
Define system deliverables
Specify system Build
system Validate
increment
increment increment
Deliver system NO System
increment complete?
YES
Deliver complete system
Gambar 2.4: Model
Incremental
Keuntungan:
·
Bisa mengantisipasi perubahan
Kerugian:
·
Hanya cocok untuk sebagian kecil dari bermacam-macam sistem, pemakai
dan pengembang sistem
Model Transformational
Model
ini adalah model yang berorientasi pada spesifikasi formal. Spesifikasi ini ditransformasikan melalui
beberapa tahap yang telah diuji kebenarannya sebelum menjadi suatu sistem yang
seutuhnya. Konsepnya: bila setiap tahap
telah dibuktikan kebenarannya dari suatu step ke step selanjutnya, maka sistem
secara keseluruhan bisa diyakini kebenarannya dan sesuai dengan spesifikasi
yang diminta.
Keuntungan:
·
Sistem keseluruhan dijamin kebenarannya sesuai dengan spesifikasi yang
ada
·
Setiap perubahan step terdokumentasi, termasuk alasan-alasan dalam
memutuskan bentuk desain sistem
·
Pemrogram tidak bisa mengubah source-code secara langsung, tetapi harus
melalui transformasi
Kerugian:
·
Masih berorientasi pada riset
·
Membutuhkan alat bantu (tool) yang cukup lengkap
Model Spiral
|
|
|||||||
|
|||||||
|
|||||||
Gambar 2.5 Model Spiral
Langkah-langkah
pengembangan perangkat lunak dengan menggunakan model Spiral:
- Costumer communication
Komunikasi effektif antara pemakai dan pengembang
perangkat lunak
- Planning
Menentukan segala hal yang berhubungan dengan
pengembangan perangkat lunak
- Risk Analisis
Menentukan resiko manajemen dan resiko teknik
- Engineering
Merekayasa perangkat lunak
- Construction and release
Menguji, menginstall dan memberikan segala hal yang
dibutuhkan konsumen (dokumentasi, training)
- Customer evaluation
Mendapatkan masukan dari konsumen tentang perangkat
lunak yang baru dikembangkan.
Keuntungan:
- Dapat digunakan untuk mengembangkan proyek yang sangat besar
Kerugian:
- Dibutuhkan biaya yang besar dalam pengembangan karena proyek yang dikembangkan biasanya proyek yang besar
Model 4GT
Pada
alat bantu 4GT (Fourth Generation Technique) memungkinkan pengembangan
spesifikasi perangkat lunak secara otomatis sesuai dengan yang akan
diterjemahkan ke program. Dengan menggunakan 4GT, software engineering
memusatkan perhatian hanya kepada spesifikasi perangkat lunak yang diinginkan.
Langkah-langkah yang dilakukan pada alat bantu ini adalah:
Gambar 2.6 Model 4GT
Keuntungan:
- Pengembangan dilakukan dengan cepat
Kerugian
- Dibutuhkan skill yang tinggi untuk mengembangkan proyek karena menggunakan teknik 4GT
Model Kombinasi
Model
ini merupakan gabungan dari tiga model sebelumnya yaitu: model waterfall, model
prototyping dan model 4GT.
Gambar 2.7 Model Kombinasi
Kesimpulan
Tahap
pertama dari setiap pengembangan sistem perangkat lunak adalah pemilihan model
proses yang sesuai dengan kebutuhan.
Tidak ada model proses yang bisa memenuhi segala jenis kebutuhan sistem
perangkat lunak yang sangat beraneka ragam.
Model
proses harus mampu untuk menemukan kesalahan dan kesalah-pahaman yang mungkin
terjadi sedini mungkin. Keterlibatan
pemakai sangat penting dalam hal ini.
Dalam
banyak hal, model yang kaku dan tidak fleksibel sebaiknya digantikan oleh
pendekatan-pendekatan yang lebih fleksibel.
·
Model Waterfall :
berorientasi pada dokumentasi (document)
·
Model Prototyping :
berorientasi pada pemakai (user)
·
Model Exploratory :
berorientasi pada unjuk kerja (performance)
·
Model Evolutionary/Incremental :
berorientasi pada penambahan (increment)
·
Model Transformational :
berorientasi pada spesifikasi (specification)
Referensi
·
Pressman, R.S. 1997, Software
Engineering, a practitioner’s approach, 4th ed., McGraw-Hill. (chapter 2)
·
Jones, G.W. 1990, Software
Engineering, John Wiley & Sons, New York ( Chapter 1)
1 komentar:
terimakasih, sangat membantu sekali..
Your comment / Pemodelan Proses Pengembangan Perangkat Lunak