JavaRush /Java Blog /Random-ID /Metodologi pengembangan perangkat lunak

Metodologi pengembangan perangkat lunak

Dipublikasikan di grup Random-ID
Halo. Pada dua wawancara terakhir saya ditanya tentang metodologi. Ini bukanlah pertanyaan yang paling penting atau sulit, namun alangkah baiknya jika Anda memiliki lembar contekan untuk jawabannya. Pada artikel kali ini saya akan mencoba memberikan gambaran tentang apa itu metodologi pengembangan dan membandingkannya dengan yang pernah saya temui atau tanyakan secara pribadi. Metodologi pengembangan perangkat lunak - 1Metodologi pengembangan perangkat lunak adalah proses menggambarkan bagaimana produk tertentu akan dikembangkan, yaitu salah satu cara untuk mengatur pengembangan tim. Ada banyak model berbeda dari proses semacam itu, yang masing-masing menjelaskan pendekatannya sendiri, dan tidak dapat dikatakan bahwa di antara model tersebut ada satu yang harus digunakan dalam setiap proyek, semuanya murni situasional. Saya mengusulkan untuk mempertimbangkan ketiganya secara lebih rinci.

Air terjun

Air terjun (cascade, air terjun) adalah salah satu metodologi tertua dan menyiratkan implementasi berurutan yang ketat dari semua tahapan, yang masing-masing tahapan harus diselesaikan sebelum tahapan berikutnya dimulai. Artinya, peralihan ke tahap berikutnya berarti selesainya pekerjaan tahap sebelumnya. Gambar menunjukkan bahwa pertama-tama kita menganalisis tugas (mendokumentasikan tugas, mendiskusikan kesulitan), kemudian terjadi desain (pada tahap ini struktur proyek terbentuk), kemudian pengkodean dan pengujian. Tidak ada pengembalian uang untuk tahap selanjutnya. Disarankan untuk menggunakan sistem seperti itu dalam proyek-proyek kecil yang persyaratannya telah diketahui sebelumnya dan kecil kemungkinannya akan berubah. Metodologi pengembangan perangkat lunak - 2Keuntungan:
  • Dokumentasi yang lengkap dan konsisten pada setiap tahapan;
  • Kemudahan penggunaan;
  • Persyaratan yang stabil.
  • Anggaran dan tenggat waktu telah ditentukan sebelumnya
Kekurangan:
  • Sejumlah besar dokumentasi;
  • Bukan sistem yang sangat fleksibel;
  • Klien tidak dapat melihat versi demo produk;
  • Tidak ada cara untuk mundur selangkah pun.

banyak orang

Scrum adalah sistem pengembangan perangkat lunak yang didasarkan pada pembagian seluruh proses menjadi beberapa iterasi, di mana pada akhir setiap iterasi, tim siap memberikan versi demo produk. Gambar tersebut menunjukkan bahwa tim melewati semua tahapan pengembangan secara paralel, yang memungkinkan kami menyelesaikan bagian proyek di akhir setiap iterasi. Metodologi pengembangan perangkat lunak - 3Saya akan mencoba menjelaskan secara singkat esensi metodologi dengan kata-kata sederhana, tetapi ada banyak istilah di sini. Menurut saya yang terpenting adalah memahami esensinya, dan istilah-istilahnya akan diingat dengan pengalaman. Semua perkembangan dibagi menjadi sprint (seringkali 2-3 minggu). Ada backlog (daftar tugas) untuk seluruh periode pengembangan dan untuk setiap sprint secara terpisah. Setiap tugas memiliki poin ceritanya sendiri (peringkat kesulitan). Setiap peserta dalam proses memiliki peran:
  • Tim Scrum adalah tim yang mengerjakan suatu proyek (pengembang, penguji, desainer).
  • Scrum Master adalah orang yang memastikan bahwa prinsip-prinsip Scrum dipatuhi.
  • Pemilik produk – pelanggan.
Karena dalam sistem ini penekanannya adalah pada komunikasi, ada banyak demonstrasi:
  • Stand-up adalah pertemuan singkat yang diadakan setiap hari, seluruh anggota tim ambil bagian dan masing-masing peserta menjawab 3 pertanyaan: apa yang anda lakukan? Apa yang akan dilakukannya? Dan apa saja penghambatnya?
  • Perencanaan – dilaksanakan pada awal sprint dan pada pertemuan ini ditentukan tugas apa yang harus diselesaikan pada sprint berikutnya.
  • Retrospektif diadakan di akhir sprint dan intinya adalah untuk mengetahui apa yang telah dilakukan dengan baik dan apa yang dapat ditingkatkan.
Keuntungan:
  • Pelanggan dapat mengamati hasilnya selama proses pengembangan.
  • Kontrol harian atas proses pengembangan.
  • Kemampuan untuk melakukan penyesuaian selama pengembangan.
  • Komunikasi terjalin dengan baik dengan seluruh anggota tim.
  • Sejumlah kecil dokumentasi.
Kekurangan:
  • Sulit memperkirakan tenaga kerja dan biaya yang dibutuhkan untuk pembangunan
  • Sulit untuk menentukan hambatan terbesar sebelum pembangunan dimulai.
  • Kebutuhan untuk melibatkan semua orang dalam pengembangan anggota tim lainnya.

Kanban

Kanban adalah sistem yang dibangun dengan memvisualisasikan proses penyelesaian tugas tim. Ide utama dalam sistem ini adalah untuk mengurangi jumlah tugas yang sedang dilakukan (di kolom “sedang berlangsung”). Di Scrum, tim fokus pada keberhasilan menyelesaikan sprint; di Kanban, tugas didahulukan. Cocok untuk proyek yang berada dalam tahap dukungan, yang fungsionalitas utamanya telah dikembangkan dan masih terdapat sedikit perbaikan dan perbaikan bug. Di Kanban, tugas diserahkan secara individual. Tugas tersebut, terlepas dari tugas lainnya, melewati semua tahapan di papan dan segera setelah selesai, tugas tersebut dapat ditunjukkan kepada pelanggan. Papan Kanban terdiri dari kolom-kolom, yang masing-masing mewakili proses pengembangan terpisah. Beberapa kolom (misalnya, sedang berlangsung) memberlakukan pembatasan jumlah tugas yang mungkin ada di sana. Ini membantu dengan mudah dan cepat menemukan area masalah dalam pembagian tugas. Gambar menunjukkan contoh papan sederhana. Jumlah kolom dan nama mungkin berbeda, tetapi saya akan menyebutkan yang paling umum: Metodologi pengembangan perangkat lunak - 4
  • Yang harus dilakukan - daftar tugas yang perlu diselesaikan
  • Sedang berlangsung – tugas yang sedang dikerjakan
  • Tinjauan kode – tugas yang telah diselesaikan dan dikirim untuk ditinjau
  • Dalam pengujian – tugas siap untuk diuji
  • Selesai – menyelesaikan tugas.
Keuntungan:
  • Kemudahan penggunaan.
  • Visualisasi (membantu menemukan hambatan, menyederhanakan pemahaman)
  • Keterlibatan tim yang tinggi dalam proses itu sendiri.
  • Fleksibilitas tinggi dalam pengembangan.
Kekurangan:
  • Daftar tugas tidak stabil.
  • Sulit digunakan pada proyek jangka panjang.
  • Tidak ada tenggat waktu yang sulit.

Kesimpulannya tentang metodologi pengembangan perangkat lunak

Menurut pendapat saya, orang yang memegang posisi manajemen atau bercita-cita untuk itu perlu memiliki pemahaman menyeluruh tentang metodologi pengembangan perangkat lunak, namun disarankan bagi semua orang untuk memahami setidaknya dasar-dasarnya. Ini merupakan bagian integral dari proses pengembangan dan digunakan tidak hanya di bidang TI. Terima kasih telah meluangkan waktu untuk membaca artikel saya, semoga bermanfaat. Saya mencoba menjelaskan hanya poin-poin penting sejelas dan sesingkat mungkin, sehingga artikel ini tidak lengkap. Saya akan senang mendengar pendapat Anda tentang hal itu dan menjawab pertanyaan Anda. Semua yang terbaik!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION