Sebagaimana sulitnya membuat dan memprioritaskan produk backlog, menentukan metode pengembangan software yang akan digunakan juga bukanlah hal yang mudah. Setiap metodologi berusaha untuk memastikan bahwa software yang dikembangkan sesuai dengan requirement yang dibutuhkan. Setiap metode yang ada memiliki value proposition sendiri dan kelebihan serta kekurangannya masing-masing. Berikut ini adalah penjelasan mengenai metodologi pengembangan software yang paling populer saat ini.
1. Model Waterfall
Waterfall adalah metode pengembangan software yang paling tua. Secara substansi ia mensimplifikasi proses software engineering ke dalam diagram proses yang linear dimana penyelesaian dari task sebelumnya sangat penting bagi pengembang untuk bisa mengerjakan pekerjaan yang lain.
- Keunggulan
- Mudah dimengerti, sehingga baik digunakan oleh pemula
- Mudah untuk di-manage karena setiap fase memiliki deliverablesnya masing-masing dan proses review
- Cepat untuk diimplementasi untuk proyek dengan skala kecil dimana requirement dapat dimengerti dengan baik
- Desain yang sederhana membuatnya mudah untuk ditesting dan dianalisis
- Kelemahan
- Metode ini hanya cocok untuk proyek dengan requirement yang sudah sangat jelas dengan detail requirement yang bisa di-deliver diawal
- Metode ini tidak cocok untuk proyek maintenance atau proyek jangka panjang
- Tidak fleksibel: ketika aplikasi di launch, tidak memungkinkan untuk memodifikasi atau merubah sistem yang dibuat
- Tidak bisa membuat software yang lain sampai seluruh proses waterfall selesai
2. Metode Prototype
Model ini mendukung developer untuk membuat prototype sehingga mereka bisa mendemonstrasikan fungsionalitas softwarenya kepada klien dan membuat modifikasi berdasarkan feedback yang di berikan. Metode ini mirip dengan membuat MVP, kita menciptakan versi pre-develop dulu sebelum menginvestasikan waktu dan uang untuk menciptakan produk yang lebih lengkap.
- Keunggulan
- Dengan metode ini, kita bisa memberikan klien experience yang lebih awal untuk software yang akan digunakan dan memperbaiki serta melengkapinya dengan feedback yang diberikan klien
- Karena kita telah mengidentifikasi risiko dan isu yang mungkin terjadi di awal, kita juga dapat mengurangi risiko kegagalan
- Komunikasi antara klien dan tim pengembang yang intens akan memperkuat hubungan antara kedua belah pihak
- Kelemahan
- Prototyping cukup mahal. Disisi lain, prototyping dapat mengurangi risiko, sehingga kita dapat meminimalisir potensi budget terbuang di-awal waktu
- Pelibatan diawal dengan klien bisa saja menjadi hal yang buruk, mereka mungkin akan terlalu banyak ikut campur dan meminta banyak perubahan tanpa sepenuhnya memahami proyek secara keseluruhan
- Terlalu banyak modifikasi akan mengganggu workflow dari tim development
3. Metode Agile Software Development
Metode pengembangan software berbasis agile fokus pada perencanaan yang adaptif, evolutionary development, dan improvement yang berkelanjutan melalui respon yang fleksibel terhadap perubahan. Tujuan akhir dari metode ini adalah release yang lebih cepat dengan risiko bugs/issue yang lebih sedikit
- Keunggulan
- Pendekatan yang adaptif sehingga dapat merespon perubahan requirement dengan sangat cepat dan efisien
- Feedback yang berkesinambungan akan meminimalisir risiko dengan signifikan
- Komunikasi yang berkelanjutan meningkatkan transparansi antara klien dan tim development
- Fokus pada pengerjaan software, sehingga tidak perlu terlalu khawatir pada dokumentasi
- Kekurangan:
- Scope pengerjaan yang bisa berubah kapanpun dapat menyebabkan kurangnya fokus dari tim development dan menyebabkan isu jika brief yang diberikan tidak jelas
- Kurangnya dokumentasi dana meningkatkan risiko miscommunication
4. Rapid Application Development (RAD)
Tujuan utama adalah menghasilkan pengerjaan yang lebih cepat dan kualitas yang lebih tinggi dibandingkan yang bisa didapatkan dengan opsi yang lain. Metode ini terkait dengan agile development, dimana menekankan pada pengerjaan software dan feedback user dalam perencanaannya. Bisa dibilang, “lebih sedikit bicara, lebih banyak testing”
- Keunggulan
- Mengurangi risiko karena identifikasi issue di awal dan feedback client
- Feedback berkala meningkatkan transparansi antara tim development dank lien
- Klien yang dapat melihat hasil dari prototype diawal akan menghasilkan kualitas produk yang lebih baik di akhir
- Perencanaan dan dokumentasi yang lebih sedikit meningkatkan kecepatan development
- Kelemahan
- Mengurangi fitur karena “time boxing” dimana ketika fitur di dorong kembali ke versi yang lebih baru untuk menyelesaikan rilis dalam waktu singkat
- Tidak cocok untuk proyek dengan budget yang rendah karena biaya modeling dan automated generation code sangat tinggi
- Metode ini relatif baru sehingga cukup berisiko
- Butuh kerja sama tim yang tinggi di kantor untuk proses yang sangat cepat bergerak agar bisa sukses.
5. Dynamic Systems Development Model
Metode ini prinsipnya mengacu pada RAD model yang telah dijelaskan sebelumnya. Pendekatan iterative yang menekankan pada improvement berkelanjutan dan keterlibatan user. Metode ini tidak hanya berfokus pada software development dan codingan, namun juga melibatkan project management dan project delivery – dimana alasannya adalah karena kebanyakan digunakan oleh proyek non-IT. Tujuan utamanya adalah menciptakan produk atau servis tepat waktu dan sesuai budget.
- Keunggulan
- User sangat dilibatkan dalam proses development sehingga mereka dapat melihat progress pengembangan software sejak dini
- Meningkatkan transparansi dan pengembangan secara berkala mampu mengurangi risiko
- Kelemahan
- Costly untuk diimplementasikan karena membutuhkan lebih dari 10 peran dedicated, belum ditambah dengan frequent testing
- Tidak cocok untuk organisasi yang kecil karena kebutuhan peran yang sangat tinggi dalam metode ini
6. Spiral Model
Model ini berfokus pada identifikasi risiko di awal. Developer mulai meneliti potensial isu ketika proyek masih dalam skala yang kecil. Kemudian mereka mengatasi risiko tersebut dengan membuat perencanaan untuk tetap menjalankan project sebagaimana rencana awal atau dengan menyelesaikan isu yang mungkin terjadi dulu baru kemudian melanjutkan ke iterasi berikutnya.
- Keunggulan
- Tim butuh waktu yang lama dan energy yang besar untuk menganalisis risiko yang dapat meminimalisir risiko yang akan datang kemudian
- Metode ini efektif untuk skala yang besar dan proyek yang sangat krusial
- Cukup fleksibel dan mampu memberikan fungsionalitas tambahan di kemudian hari
- Kelemahan
- Mahal karena level analisis yang cukup complicated
- Kesuksesan dari seluruh proyek tergantung dari kesuksesan dalam analisa risiko
- Tidak ada definisi selesai yang pasti, dimana proyek bisa saja overtime dan budget jika tidak di manage dengan hati-hati
7. Metode Extreme Programming
Metode Extreme Programming (XP Methodology) digunakan oleh tim development untuk membuat software dalam environment yang tidak stabil seperti ketika requirement yang ada sangat cepat berubah. Metode ini memiliki release berkala dalam waktu development yang singkat.
- Keunggulan
- Pelibatan klien dalam proyek meningkatkan transparansi dan hubungan antara vendor dan klien
- Frequent checkpoints dalam metode ini akan membantu developer membuat perencanaan dan jadwal
- Feedback yang banyak akan membantu meminimalisir risiko dan meningkatkan improvement
- Kelemahan
- Model ini membutuhkan meeting berkala dimana bisa jadi mahal untuk kedua belah pihak
- Perubahan yang terlalu sering bisa mengganggu developer dan cukup tricky untuk mengkalkulasi waktu dan estimasi harga
- Biaya untuk merubah requirement di kemudian hari dalam proyek cukup mahal.
8. Feature-Driven Development (FDD)
FDD adalah proses development yang iterative yang banyak digunakan dalam industry praktis. Sebagaimana namanya, fokus metode ini adalah mengorganisir software development based on features yang ada. Tujuannya adalah untuk mendeliver pengerjaan software kepada klien secepat mungkin
- Keunggulan
- Lima proses yang sederhana (develop model, build feature list, plan, design and build by feature) memberikan struktur dan overview yang baik dari proyek
- Model ini dibangun atas set standar yang digunakan dalam industri pengembangan software, dimana membuat developer lebih mudah untuk mengerti lebih cepat
- Kelemahan
- Kompleksitas dari metode ini membuatnya tidak cocok untuk proyek atau tim yang kecil
- Banyak tanggungjawab yang diberikan kepada lead developer, sehingga mereka harus benar-benar terlatih dan siap untuk berperan menjadi koordinator, desainer dan mentor.
9. Metode Joint Application Development
Sistem development awalnya digunakan untuk mendisain sistem berbasis computer sebelum dimigrasikan kepada software development. Metode pengembangan software ini melibatkan interaksi antara user dan tim development untuk bekerja dengan sistem yang berbeda dan requirement yang berbeda ketika software sedang dikembangkan. Tujuan utama adalah melibatkan klien dalam proses development sebanyak mungkin via collaborative workshop bernama JAD sessions. Fokus dari pertemuan ini adalah lebih membahas tujuan perusahaan dibandingkan pembahasan teknis.
- Keunggulan
- Komunikasi yang intens meningkatkan transparansi dan kolaborasi
- Pendekatan ini menghasilkan kualitas informasi yang sangat baik dalam waktu yang singkat
- JAD mengurangi waktu dan biaya
- Tim dapat menyelesaikan permasalahan dengan cepat
- Kelemahan
- Pertemuan berkala dan workshop dapat menghabiskan waktu, dan tentu saja mahal
- Butuh perencanaan yang panjang dan detail; jika tidak, akan menghabiskan waktu lebih lama dari metode yang lain
- Pendekatan ini membutuhkan pemimpin yang kuat dan developer yang berpengalaman untuk memastikan workshop berjalan dengan fokus dan produktif
10. Metode Lean Development
Metode ini menggunakan prinsip dari lean manufacturing (mengurangi cost, biaya, dan waste), dan mengaplikasikannya dalam pengembangan software untuk mengurangi effort programming dan budget. Metode ini memberikan conseptual framework yang sangat baik. Metode ini juga lebih fleksibel dari metode agile.
- Keunggulan
- Meningkatkan efisiensi dengan mempercepat development dan mengurangi biaya keseluruhan dari proyek
- Development yang lebih cepat sehingga tim developer dapat men-deliver lebih banyak fungsionalitas dalam waktu yang singkat
- Tim developer memiliki kewenangan lebih untuk mengambil keputusan dimana dapat memperkuat seseorang dan meningkatkan motivasi serta progess.
- Kelemahan
- Kesuksesan tergantung dari kedisiplinan tim, komitmen dan kemampuan teknikal
- Metode ini membutuhkan business analyst untuk memastikan dokumentasi sudah benar dan dimengerti oleh semua orang yang terlibat
- Fleksibilitas developer yang sangat tinggi dapat menyebabkan kekurangan fokus dimana akan mempengaruhi workflow dari proyek keseluruhan.
11. Metode Rational Unified Process (RUP)
Metode ini adalah framework proses yang adaptable dengan organisasi. Metode RUP menentukan project life-cycle yang terdiri dari 4 fase (inception, elaboration, construction, dan transition), masing-masing dengan milestone dan objektifnya.
- Keunggulan
- Membantu anggota tim untuk mengidentifikasi dan menyelesaikan risiko proyek yang terkait dengan client melalui request management and review yang lebih berhati-hati.
- Metode ini cukup scalable, sehingga cocok untuk berapapun jumlah tim atau proyeknya
- Review berkala membantu untuk menjaga fokus dan meningkatkan transparansi bagi kedua belah pihak
- Kelemahan
- Proses development kompleks dan membutuhkan skill yang mendalam dari tim
- Component testing yang berkelanjutan meningkatkan kompleksitas dan hasil dimana banyak issue yang terjadi ketika fase testing.
12. Metode Scrum Development
Metode ini merupakan metode yang terbaik untuk proyek yang cepat berubah dengan deadline yang juga mepet. Metode ini didesain untuk tim dengan tiga sampai 9 orang dimana pekerjaannya dibagi dengan istilah sprints untuk menyelesaikan suatu scope pekerjaan pada waktu yang disepakati (biasanya dua pekan). Setiap hari, tim akan mereview progress dalam sebuah meeting yang dinamakan daily scrums.
- Keunggulan
- Meningkatkan kecepatan dalam proses development dan dapat membawa proyek yang lambat kembali ke track
- Pengambilan keputusan sebagian besar berada dalam tangan tim developer. Hal ini membantu mereka untuk fokus dan meningkatkan motivasi
- Fleksibel, dimana memudahkan update dan perubahan berkala
- Daily meeting membantu manajer untuk mengukur produktifitas individual. Metode ini juga meningkatkan kolaborasi dan produktifitas dalam tim
- Kelemahan
- Sangat cocok untuk skala kecil, dan proyek yang cepat berubah. Tidak cocok untuk skala besar
- Metode ini membutuhkan orang berpengalaman yang pernah bekerja di proyek yang mirip dengan yang ingin dikerjakan saat ini.
- Anggota tim harus memiliki skills yang banyak sehingga mampu membantu mereka dalam mengerjakan task diluar dari area spesialisasinya. Beberapa anggota tim, oleh karena itu, membutuhkan training tambahan
- Membagi development produk dalam sprint singkat membutuhkan perencanaan yang matang dan hati-hati.
Penutup
Memilih salah satu metode pengembangan software yang telah dijelaskan sebelumnya membutuhkan waktu untuk riset dan perencanaan jangka panjang. Mengetahui kekuatan dan kekurangan tim kita, akan membantu dalam menentukan metode apa yang paling cocok untuk digunakan. Pilih lah metode yang cocok untuk cara kerja dan kemampuan tim Anda, kemudian kerucutkan opsi yang ada dengan membandingkan model mana yang paling baik untuk diberikan kepada klien dalam proyek yang ingin dikerjakan. Umumnya metode pengembangan software yang paling sering diminta klien kami adalah metode waterfall ataupun agile. Anda dapat membaca lebih lengkap mengenai perbedaan kedua metode tersebut dan bagaimana skema development yang dilakukan dengan lebih detail dalam cheatsheet ini.