Pada banyak wawancara, Anda mungkin akan ditanya tentang metodologi. Ini bukan pertanyaan yang paling penting atau sulit, tetapi memiliki lembar contekan akan menyenangkan. Pada artikel kali ini, kami akan mencoba menyampaikan apa itu metodologi pengembangan dan membandingkannya. Metodologi pengembangan perangkat lunak adalah proses yang digunakan untuk mengembangkan produk tertentu, yaitu salah satu cara untuk mengatur pengembangan oleh tim pengembang. Ada banyak model pengembangan yang berbeda, yang masing-masing mendefinisikan pendekatannya sendiri. Tidak dapat dikatakan bahwa salah satu dari mereka harus digunakan untuk setiap proyek. Pendekatan yang tepat bergantung sepenuhnya pada situasi. Saya bermaksud untuk mempertimbangkan tiga dari mereka secara lebih rinci.
Keuntungan:
Saya akan mencoba menjelaskan secara singkat esensi metodologi dengan menggunakan kata-kata sederhana, tetapi terminologinya banyak. Saya pikir yang paling penting adalah memahami esensinya. Anda akan mengingat terminologi dengan pengalaman. Semua pengembangan dibagi menjadi sprint (biasanya 2-3 minggu). Ada backlog(daftar tugas) untuk seluruh periode pengembangan dan untuk setiap sprint terpisah. Setiap tugas memiliki poin ceritanya sendiri (peringkat kesulitan). Setiap peserta dalam proses memiliki peran:
Air terjun
Metodologi air terjun adalah salah satu yang tertua dan melibatkan implementasi yang sangat berurutan: setiap tahap harus diselesaikan sebelum tahap berikutnya dimulai. Dengan kata lain, transisi ke tahap berikutnya berarti pekerjaan tahap sebelumnya sudah 100% selesai. Gambar menunjukkan cara kerjanya: pertama, kami menganalisis masalah (mendokumentasikan tugas, mendiskusikan tantangan), lalu kami merancang (struktur proyek terbentuk pada tahap ini), lalu kami membuat kode dan menguji. Kembali ke tahap sebelumnya tidak diperbolehkan. Pendekatan ini direkomendasikan untuk proyek kecil di mana persyaratannya diketahui sebelumnya dan tidak mungkin berubah.![Metodologi pengembangan perangkat lunak - 2](https://cdn.codegym.cc/images/article/de461c0a-cd8d-41de-ab1f-f0f3865ceffa/800.jpeg)
- Dokumentasi lengkap dan konsisten di setiap tahap
- Kemudahan penggunaan
- Persyaratan stabil
- Anggaran dan tenggat waktu telah ditentukan sebelumnya
- Sejumlah besar dokumentasi
- Tidak terlalu fleksibel
- Klien tidak dapat melihat versi demo produk
- Tidak ada pilihan untuk mundur
scrum
Scrum adalah metodologi pengembangan perangkat lunak yang membagi seluruh proses menjadi iterasi. Di akhir setiap interaksi, tim siap memberikan versi demo produk. Gambar tersebut menunjukkan bahwa tim melanjutkan semua tahap pengembangan secara paralel, sehingga memungkinkan untuk menyelesaikan bagian proyek di akhir setiap iterasi.![Metodologi pengembangan perangkat lunak - 3](https://cdn.codegym.cc/images/article/f8d87f65-90da-4feb-bdbc-69aa44abe331/original.jpeg)
- Tim scrum terdiri dari para profesional (pengembang, penguji, desainer) yang mengerjakan sebuah proyek.
- Scrum master adalah orang yang memastikan bahwa prinsip-prinsip scrum dihormati.
- Pemilik produk adalah pelanggan.
- Stand-up – Ini adalah pertemuan singkat, diadakan setiap hari, di mana semua anggota tim ambil bagian. Setiap peserta menjawab 3 pertanyaan: Apa yang saya lakukan? Apa yang akan saya lakukan? Dan masalah pemblokiran apa yang ada?
- Rapat perencanaan – Rapat ini diadakan di awal sprint. Tugas-tugas yang harus dilakukan dalam sprint berikutnya diidentifikasi pada pertemuan ini.
- Retrospektif - Pertemuan ini diadakan di akhir sprint dan tujuannya adalah untuk mengidentifikasi apa yang telah dilakukan dengan baik dan apa yang dapat diperbaiki.
- Pelanggan dapat melihat hasil selama proses pengembangan
- Pemantauan harian proses pembangunan
- Kemampuan untuk melakukan penyesuaian selama pengembangan
- Terjalin komunikasi dengan semua anggota tim
- Sejumlah kecil dokumentasi
- Sulit untuk menilai tenaga kerja dan biaya lain yang diperlukan untuk pembangunan
- Sulit untuk mengidentifikasi kemacetan sebelum pengembangan dimulai
- Kebutuhan untuk melibatkan semua orang dalam pekerjaan anggota tim lainnya.
Kanban
Kanban adalah metode berdasarkan visualisasi kemajuan yang dibuat dalam menyelesaikan tugas tim. Ide utamanya adalah untuk mengurangi jumlah tugas yang sedang dilakukan (di kolom "Sedang Berlangsung"). Dalam scrum, tim berfokus untuk menyelesaikan sprint dengan sukses. Dalam Kanban, tugas menempati posisi yang unggul. Ini bagus untuk proyek dalam tahap pemeliharaan, di mana fungsionalitas dasar telah diterapkan, dan perbaikan minimal serta perbaikan bug tetap ada. Di Kanban, tugas diberikan secara individual. Sebuah tugas melewati semua tahapan di papan tulis, terlepas dari tugas lain, dan setelah selesai, tugas itu dapat ditampilkan kepada pelanggan. Papan Kanban terdiri dari kolom, yang masing-masing mewakili proses pengembangan yang terpisah. Beberapa kolom (misalnya, "In Progress" ) membatasi jumlah tugas yang dapat mereka pegang. Ini membantu dengan cepat dan mudah menemukan area masalah dalam distribusi tugas. Gambar menunjukkan contoh papan seperti itu. Jumlah kolom dan namanya dapat bervariasi. Saya akan menyajikan yang paling umum:![Metodologi pengembangan perangkat lunak - 4](https://cdn.codegym.cc/images/article/82fe9cfd-f60d-4b2c-b572-ab496bafca23/800.jpeg)
- To Do – Daftar tugas yang harus dilakukan
- In Progress – Tugas yang sedang dikerjakan
- Tinjauan Kode – Tugas yang dilakukan dan telah diserahkan untuk ditinjau
- Dalam Pengujian – Tugas siap untuk pengujian
- Selesai – tugas selesai
- Kemudahan penggunaan
- Visibilitas (membantu menemukan kemacetan, menyederhanakan pemahaman)
- Keterlibatan tim yang tinggi dalam proses itu sendiri
- Pengembangan yang sangat fleksibel
- Daftar tugas yang tidak stabil
- Sulit diterapkan pada proyek jangka panjang
- Kurangnya tenggat waktu yang sulit