Siapa tak kenal istilah Waterfall. Sebuah metoda yang sangat sering disebut dalam laporan penelitian magang, skripsi atau tugas akhir anak informatika atau jurusan komputer. Menurutmu apasih yang dimaksuda metoda waterfall?
Menurut Pressman (2015:42), model waterfall adalah model klasik yang bersifat sistematis, berurutan dalam membangun software. Nama model ini sebenarnya adalah “Linear Sequential Model”. Model ini sering disebut juga dengan “classic life cycle” atau metode waterfall. Model ini termasuk ke dalam model generic pada rekayasa perangkat lunak dan pertama kali diperkenalkan oleh Winston Royce sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai dalam Software Engineering (SE). Model ini melakukan pendekatan secara sistematis dan berurutan. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan.
Fase-fase dalam Waterfall Model menurut referensi Pressman :
Gambar 2.1 Waterfall Pressman (Pressman, 2015:42)
Berikut Penjelasan Tahapan-tahapannya
- Communication (Project Initiation & Requirements Gathering)
Sebelum memulai pekerjaan yang bersifat teknis, sangat diperlukan adanya komunikasi dengan customer demi memahami dan mencapai tujuan yang ingin dicapai. Hasil dari komunikasi tersebut adalah inisialisasi proyek, seperti menganalisis permasalahan yang dihadapi dan mengumpulkan data-data yang diperlukan, serta membantu mendefinisikan fitur dan fungsi software. Pengumpulan data-data tambahan bisa juga diambil dari jurnal, artikel, dan internet.
- Planning (Estimating, Scheduling, Tracking)
Tahap berikutnya adalah tahapan perencanaan yang menjelaskan tentang estimasi tugas-tugas teknis yang akan dilakukan, resiko-resiko yang dapat terjadi, sumber daya yang diperlukan dalam membuat sistem, produk kerja yang ingin dihasilkan, penjadwalan kerja yang akan dilaksanakan, dan tracking proses pengerjaan sistem.
- Modeling (Analysis & Design)
Tahapan ini adalah tahap perancangan dan permodelan arsitektur sistem yang berfokus pada perancangan struktur data, arsitektur software, tampilan interface, dan algoritma program. Tujuannya untuk lebih memahami gambaran besar dari apa yang akan dikerjakan.
- Construction (Code & Test)
Tahapan Construction ini merupakan proses penerjemahan bentuk desain menjadi kode atau bentuk/bahasa yang dapat dibaca oleh mesin. Setelah pengkodean selesai, dilakukan pengujian terhadap sistem dan juga kode yang sudah dibuat. Tujuannya untuk menemukan kesalahan yang mungkin terjadi untuk nantinya diperbaiki.
- Deployment (Delivery, Support, Feedback). Tahapan Deployment merupakan tahapan implementasi software ke customer, pemeliharaan software secara berkala, perbaikan software, evaluasi software, dan pengembangan software berdasarkan umpan balik yang diberikan agar sistem dapat tetap berjalan dan berkembang sesuai dengan fungsinya. (Pressman, 2015:17)
Kapan sebaiknya metode waterfall digunakan? Ada teori-teori yang menyimpulkan beberapa hal, yaitu :
- Ketika semua persyaratan yang diajukan sudah dipahami dengan baik pada awal pengembangan program
- Definisi produk bersifat stabil dan tidak ada perubahan yang dilakukan saat pengembangan untuk alasan apapun. Oleh karena itu, teknologi yang digunakan juga harus sudah dipahami dengan baik
- Menghasilkan produk baru, atau produk dengan versi baru. Sebenarnya, jika menghasilkan produk dengan versi baru maka itu sudah termasuk incremental development, yang setiap tahapannya sama dengan metode waterfall kemudian diulang-ulang
- Port-ing produk yang sudah ada ke dalam platform baru
Dengan demikian, metode waterfall dianggap pendekatan yang lebih cocok digunakan untuk proyek pembuatan sistem baru dan juga pengembangan software dengan tingkat resiko yang kecil serta waktu pengembangan yang cukup lama.
Tetapi salah satu kelemahan paling mendasar adalah menyamakan pengembangan hardware dan software dengan meniadakan perubahan saat pengembangan. Padahal, error diketahui saat software dijalankan, dan perubahan-perubahan akan sering terjadi.
Keuntungan Waterfall
Keuntungan menggunakan metode waterfall adalah prosesnya lebih terstruktur, hal ini membuat kualitas software baik dan tetap terjaga. Dari sisi user juga lebih menguntungkan, karena dapat merencanakan dan menyiapkan kebutuhan data dan proses yang diperlukan sejak awal.
Penjadwalan juga menjadi lebih menentu, karena jadwal setiap proses dapat ditentukan secara pasti. Sehingga dapat dilihat jelas target penyelesaian pengembangan program. Dengan adanya urutan yang pasti, dapat dilihat pula perkembangan untuk setiap tahap secara pasti. Dari sisi lain, model ini merupakan jenis model yang bersifat dokumen lengkap sehingga proses pemeliharaan dapat dilakukan dengan mudah.
Kelemahan Waterfall
Kelemahan menggunakan metode waterfall adalah
1. Bersifat kaku, sehingga sulit melakukan perubahan di tengah proses. Jika terdapat kekurangan proses/prosedur dari tahap sebelumnya, maka tahapan pengembangan harus dilakukan mulai dari awal lagi. Hal ini akan memakan waktu yang lebih lama. Karena jika proses sebelumnya belum selesai sampai akhir, maka proses selanjutnya juga tidak dapat berjalan. Oleh karena itu, jika terdapat kekurangan dalam permintaan user maka proses pengembangan harus dimulai kembali dari awal. Karena itu, dapat dikatakan proses pengembangan software dengan metode waterfall bersifat lambat.
2. Kelemahan lainnya menggunakan metode waterfall adalah membutuhkan daftar kebutuhan yang lengkap sejak awal. Tetapi, biasanya jarang sekali customer yang dapat memenuhi itu. Untuk menghindari pengulangan tahap dari awal, user harus memberikan seluruh prosedur, data, dan laporan yang diinginkan mulai dari tahap awal pengembangan. Tetapi pada banyak kondisi, user sering melakukan permintaan di tahap pertengahan pengembangan sistem. Dengan metode ini, maka development harus dilakukan mulai lagi dari tahap awal. Karena development disesuaikan dengan desain hasil user pada saat tahap pengembangan awal. Di sisi lain, user tidak dapat mencoba sistem sebelum sistem benar-benar selesai. Selain itu, kinerja personil menjadi kurang optimal karena terdapat proses menunggu suatu tahap selesai terlebih dahulu. Oleh karena itu, seringkali diperlukan personil yang “multi-skilled” sehingga minimal dapat membantu pengerjaan untuk tahapan berikutnya. (Pressman, 2015:42-43)
Software Engineering: A Practitioner’s Approach 7th Edition
Table of Contents
Chapters
1. Software and Software Engineering
Part I – Process
2. Process Models
3. Agile Development
Part II – Modeling
4. Practice: A Generic View
5. Understanding Requirements (new chapter)
6. Requirements Modeling: Scenarios and Data (new chapter)
7. Requirements Modeling: Flow, Classes, and Behavior (new chapter)
8. Design Concepts (new chapter)
9. Architectural Design
10. Component-Level Design
11. Usability design (new chapter)
12. Pattern-based Design (new chapter)
13. WebApp Design
Part III – Quality Management
14. Quality Concepts (new chapter)
15. Software reviews (new chapter)
16. Software Quality Assurance
17. Software Testing Strategies
18. Testing Methods for Conventional Software (new chapter)
19. Testing Methods for OO Software (new chapter)
20. Testing Methods for WebApps
21. Advanced Verification Methods (new chapter)
22. Software Configuration Management
23. Product Metrics
Part IV – Project Management
24. Management Concepts
25. Process and Project Metrics
26. Estimation
27. Scheduling
28. Risk Management
29. Maintenance and Reengineering (new chapter)
Part V-Advanced Topics
30. Software Process improvement (new chapter)
31. Emerging Trends in Software Engineering (new chapter)
32. The Road Ahead
Appendix I – UML Tutorial (new)
Appendix II – OO Concepts (new)