Waterfall Model adalah sebuah metode
pengembangan software yang bersifat sekuensial. Metode ini dikenalkan oleh
Royce pada tahun 1970 dan pada saat itu disebut sebaga isi
klus klasik dan sekarang ini lebih dikenal dengan sekuensial
linier. Selain itu Model ini merupakan model yang paling banyak dipakai
oleh para pengembang software. Inti dari metodewaterfall adalah
pengerjaan dari suatu system dilakukan secara berurutan atau secara linear.
Jadi jika langkah satu belum dikerjakan maka tidak akan bisa melanjutkan
kelangkah 2, 3 dan seterusnya. Secara otomatis tahapan ke-3 akan bisa
dilakukan jika tahap ke-1 dan ke-2 sudah dilakukan. Ada dua gambaran dari
Waterfall Model, biarpun berbeda dalam menggunakan fase tapi intinya sama.
Kelebihan :
§ Kualitas dari sistem yang dihasilkan
akan baik. Ini dikarenakan oleh pelaksanaannya secara bertahap. Sehingga tidak
terfokus pada tahapan tertentu.
§ Document pengembangan system sangat
terorganisir, karena setiap fase harus terselesaikan dengan lengkap sebelum
melangkah ke fase berikutnya. Jadi setiap fase atau tahapan akan
mempunyai dokumen tertentu.
§ Metode ini masih lebih baik
digunakan walaupun sudah tergolong kuno, daripada menggunakan pendekatan
asal-asalan. Selain itu, metode ini juga masih masuk akal jika kebutuhan sudah
diketahui dengan baik.
Kekurangan :
§
Diperlukan
majemen yang baik, karena proses pengembangan tidak dapat dilakukan secara
berulang sebelum terjadinya suatu produk.
§
Kesalahan
kecil akan menjadi masalah besar jika tidak diketahui sejak awal pengembangan
yang berakibat pada tahapan selanjutnya.
§
Pelanggan
sulit menyatakan kebutuhan secara eksplisit sehingga tidak dapat mengakomodasi
ketidak pastian pada saat awal pengembangan.
§
Pelanggan
harus sabar, karena pembuatan perangkat lunak akan dimulai ketika tahap desain
sudah selesai. Sedangkan pada tahap sebelum desain bisa memakan waktu yang lama.
§
Pada
kenyataannya, jarang mengikuti urutan sekuensial seperti pada teori. Iterasi
sering terjadi menyebabkan masalah baru.
2.
Prototipe
Protoyping Model adalah model yang
dapat diterapkan pada model apapun. Model ini tidak memerlukan data yang
lengkap dari sisi client dan banyaknya keraguan dari pembuat software karena
kondisi yang belum diketahui (seberapa besar software, bagaimana sistem
penerapannya). Model ini tepat digunakan jika pihak client menginginkan
prototype dari software dalam waktu yang singkat. Dan prototype inilah yang
akan menjadi acuan dari client untuk memberikan data kebutuhan yang lebih
lengkap pada pembuat software (developer).
Kelebihan:
o
Menghemat
waktu pengembangan.
o
Adanya
komunikasi yang baik antara pengembang dan pelanggan.
o
Pengembang
dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan.
o
Penerapan
menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya.
o
User
dapat berpartisipasi aktif dalam pengembangan sistem.
o
Punya
kemampuan menangkap requirement secara konkret daripada secara abstrak.
o
Untuk
digunakan secara standalone.
o
Digunakan
untuk memperluas SDLC.
Kekurangan:
Ø Pada prototype tentu saja banyak
kebutuhan yang tidak di tampilkan seluruhnya karena data yang dikumpulkan hanya
sebagian.
Ø Prototype yang di setujui oleh
client harus dikembangkan oleh developer tanpa ada data tambahan dari client
dan software dari prototype harus memiliki fungsi yang lengkap.
Ø Banyak ketidak sesuaian pada bentuk
prototype.
Ø Proses analisis dan perancangan
terlalu singkat.
Ø Walaupun pemakai melihat berbagai
perbaikan dari setiap versi prototype, tetapi pemakai mungkin tidak menyadari
bahwa versi tersebut dibuat tanpa memperhatikan kualitas dan pemeliharaan
jangka panjang.
Ø Pengembang kadang-kadang membuat
kompromi implementasi dengan menggunakan sistem operasi yang tidak relevan dan
algoritma yang tidak efisien.
Ø Mengesampingkan alternatif pemecahan
masalah.
Ø Bisanya kurang fleksible dalam
mengahadapi perubahan.
Ø Prototype yang dihasilkan tidak
selamanya mudah dirubah
Ø Pelanggan kadang tidak melihat atau
menyadari bahwa perangkat lunak yang ada belum mencantumkan kualitas perangkat
lunak secara keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk
jangja waktu lama.
Ø Pengembang biasanya ingin cepat
menyelesaikan proyek. Sehingga menggunakan algoritma dan bahasa pemrograman
yang sederhana untuk membuat prototyping lebih cepat selesai tanpa memikirkan
lebih lanjut bahwa program tersebut hanya merupakan cetak biru sistem.
Ø Hubungan pelanggan dengan komputer
yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik.
3.
Model Spiral
Spiral model adalah model proses
yang pendekatannya bersifat realistis pada software besar karena proses dari
awal sampai proses pengiriman dan perbaikan dapat dipahami dnegan baik oleh
clieent dan developer. Model ini mempunyai rangkaian kerja yang iterasi
(peningkatan pada model) awal yang berbentuk prototype dan kemudian iterasi
selanjutnya akan menjadi perkembangan dari model sebelumnya. Model ini dapat
terus digunakan meskipun software sudah dikirimkan karena proses (siklus)dapat
berputar lagi jika ada perubahan pada software sampai tidak ada permintaan
perupbahan pada software oleh client.
Kelebihan :
Ø Setiap tahap pengerjaan dibuat
prototyping sehingga kekurangan dan apa yang diharapkan oleh client dapat
diperjelas dan juga dapat menjadi acuan untuk client dalam mencari kekurangan
kebutuhan.
Ø Lebih cocok untuk pengembangan
sistem dan perangkat lunak skala besar.
Ø Dapat disesuaikan agar perangkat
lunak bisa dipakai selama hidup perangkat lunak komputer.
Ø Pengembang dan pemakai dapat lebih
mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena
perangkat lunak terus bekerja selama proses.
Ø Menggunakan prototipe sebagai
mekanisme pengurangan resiko dan pada setiap keadaan di dalam evolusi produk.
Ø Tetap mengikuti langkah-langkah
dalam siklus kehidupan klasik dan memasukkannya ke dalam kerangka kerja
iteratif.
Ø Membutuhkan pertimbangan langsung
terhadp resiko teknis sehingga mengurangi resiko sebelum menjadi permasalahan yang serius.
Kekurangan
:
Ø konsumen (Client) tidak percaya
bahwa pendekatan secara evolusioner dapat dikontrol oleh kedua pihak. Model
spiral mempunyai resiko yang harus dipertimbangkan ulang oleh konsumen dan
developer.
Ø Memerlukan tenaga ahli untuk
memperkirakan resiko, dan harus mengandalkannya supaya sukses.
Ø Belum terbukti apakah metode ini
cukup efisien karena usianya yang relatif baru.
Ø Memerlukan penaksiran resiko yang
masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak
ditemukan dan diatur.
Ø Butuh waktu lama untuk menerapkan
paradigma ini menuju kepastian yang absolute.
4.
Model
RAD (Rapid Application Development)
Model RAD merupakan model proses
pengembangan perangkat lunak secara linear sequential yang menekankan pada siklus
pengembangan yang sangat singkat.
Kelebihan :
Ø Lebih
efektif dari pendekatan waterfall/sequential linear dalam
menghasilkan system yang memenuhi kebutuhan langsung dari pelanggan.
Ø Cocok
untuk proyek yang memerlukan waktu yang singkat.
Kekurangan :
Ø RAD tidak cocok digunakan untuk
sistem yang mempunyai resiko teknik yang tinggi.
Ø Membutuhkan orang yang banyak untuk
menyelesaikan sebuah proyek berskala besar.
Ø Pengembang dan customer harus punya
komitmen yang kuat untuk menyelesaikan sebuah software.
Ø Jika sistem tidak di bangun dengan
benar maka RAD akan bermasalah.
Ø Jika ada perubahan di tengah-tengah
pengerjaan maka harus membuat kontrak baru antara pengembang dan customer.
5.
Model V
Bisa
dikatakan model ini merupakan perluasan dari model waterfall. Disebut sebagai
perluasan karena tahap-tahapnya mirip dengan yang terdapat dalam model
waterfall. Jika dalam model waterfall proses dijalankan secara linear, maka
dalam model V proses dilakukan bercabang. Dalam model V ini digambarkan
hubungan antara tahap pengembangan software dengan tahap pengujiannya.
Kelebihan :
Ø V
Model sangat fleksibel. V Model mendukung project tailoring dan penambahan dan
pengurangan method dantool secara dinamik. Akibatnya sangat mudah untuk
melakukan tailoring pada V Model agar sesuai dengan suatu proyek tertentu dan
sangat mudah untuk menambahkan method dan tool baru atau menghilangkan method
dan tool yang dianggap sudah obsolete.
Ø V
Model dikembangkan dan di-maintain oleh publik. Userdari V Model berpartisipasi
dalam change control boardyang memproses semua change request terhadap V Model.
Kekurangan :
Ø V
Model adalah model yang project oriented sehingga hanya bisa digunakan sekali
dalam suatu proyek.
Ø V
Model terlalu fleksibel dalam arti ada beberapa activitydalam V Model yang
digambarkan terlalu abstrak sehingga tidak bisa diketahui dengan jelas apa yang
termasuk dalamactivity tersebut dan apa yang tidak.
6.
Incremental
Model
Dalam
model Incremental ini proses pengerjaan perangkat lunak akan dilakukan
perbagian sehingga bagian selanjutnya akan dikerjakan setelah bagian awal telah
selesai dan selanjutnya sampai menghasilkan perangkat lunak yang lengkap dengan
semua fungsi yang diperlukan dan pengerjaan perangkat lunak berakhir. Sebelum
pengerjaan perangkat lunak akan dilakukan perancangan arsitektur software
sebagai kerangka dalam pengerjaan perbagian.
Kelebihan :
Ø Resiko
yang rendah pada pengembangan sistem.
Ø Mengutamakan
fungsi-fungsi pada sistem perangkat lunak sehingga kemudahan pemakaian sistem
yang paling di utamakan.
Ø Tahap
awal adalan dasar dari pembuatan tahap berikutnya (dikerjakan secara terurut).
Ø Cocok
digunakan bila pembuat software tidak banyak/kekurangan pembuat
Ø Mampu
mengakomodasi perubahan kebutuhan customer.
Ø Mengurangi
trauma karena perubahan sistem. Klien dibiasakan perlahan-lahan menggunakan
produknya bagian per bagian.
Ø Memaksimalkan
pengembalian modal investasi konsumen.
Kekurangan :
Ø Hanya
akan berhasil jika tidak ada staffing untuk penerapan secara menyeluruh.
Ø Penambahan
staf dilakukan jika hasil incremental akan dikembangkan lebih lanjut.
Ø Hanya
cocok untuk proyek dengan skala kecil.
Ø kemungkinan
tiap bagian tidak dapat diintegrasikan.
7.
Metode Agile
Software development
Agile Software development adalah salah satu metodelogi
dalam pengembangan sebuah perangkat lunak (software). Kata Agile
berarti bersifat cepat, ringan, bebas bergerak, waspada. Kata ini digunakan
sebagai kata yang menggambarkan konsep model proses yang berbeda dari konsep
model-model proses yang sudah ada. Konsep Agile software
development dicetuskan oleh Kent Beck dan 16 rekannya dengan
menyatakan bahwa Agile Software Development adalah cara membangun software
dengan melakukannya dan membantu orang lain membangunnya sekaligus.
Dalam Agile Software Development
interaksi dan personel lebih penting dari pada proses dan alat, software yang
berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan
klient lebih penting daripada negosiasi kontrak, dan sikap tanggap terhadap
perubahan lebih penting daripada mengikuti rencana. Namun demikian, sama
seperti model proses yang lain, agile software development memiliki kelebihan
dan tidak cocok untuk semua jenis proyek, produk, orang dan situasi. Agile
Software Development memungkinkan model proses yang toleransi terhadap
perubahan kebutuhan sehingga perubahan dapat cepat ditanggapi. Namun di sisi
lain menyebabkan produktiitas menurun.
Kelebihan :
·
Meningkatkan kepuasan kepada klien.
·
Dapat melakukan review pelanggan mengenai
software yang dibuat lebih awal.
·
Pembangunan system dibuat lebih cepat.
·
Mengurangi resiko kegagalan implementasi
software dari segi non-teknis.
·
Jika pada saat pembangunan system terjadi
kegagalan kerugian dari segi materi relatif kecil.
Kekurangan
:
o
Developer
harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
o
Agile
tidak akan berjalan dengan baik jika komitmen tim kurang.
o
Tidak
cocok dalam skala tim yang besar (>20 orang).
o
Perkiraan
waktu release dan harga perangkat lunak sulit ditentukan.