Agile Software Development 101
Saat mengembangkan perangkat lunak, kita pasti mengikuti sebuah tahap/process model. Hal ini dilakukan agar proses pengembangan perangkat lunak menjadi lebih rapi dan jelas. Terdapat beberapa metodologi untuk mengembangkan sebuah perangkat lunak. Salah satunya adalah agile, sebuah metodologi yang sering digunakan di industri sekarang. Kali ini saya akan menjelaskan mengenai metodologi tersebut.
Apa itu Agile Software Development?
Kata ‘agile’ sendiri berarti merepresentasikan adaptasi dan kemampuan untuk mengikuti perubahan yang terjadi. Pada konteks software development, agile adalah sebuah metodologi pengembangan perangkat lunak dengan tahap yang berulang. Tim pengembangan perangkat lunak dapat memberikan hasilnya dengan cepat, jelas, dan dapat merespons perubahan yang terjadi apabila klien memintanya.
Agile Manifesto
Agile manifesto merupakan sebuah nilai-nilai yang perlu diperhatikan ketika sedang mengikuti agile software development. Diutus oleh tim programmer berisi Kent Beck dan rekan-rekannya, agile manifesto berisi 4 nilai penting, yaitu sebagai berikut.
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Apa maksud dari keempat nilai tersebut?
- Individuals and interactions over processes and tools berarti pada agile software development, lebih penting untuk kerjasama dan interaksi antar tim dibandingkan proses dan alat yang digunakan untuk melakukan software development.
- Working software over comprehensive documentation berarti pada agile software development, lebih baik meluncurkan perangkat lunak yang bekerja dan bisa digunakan dibandingkan membuat dokumentasi kode yang lengkap dan jelas.
- Customer collaboration over contract negotiation berarti pada agile software development, lebih penting untuk melakukan interaksi dan kolaborasi dengan klien dibandingkan untuk melakukan negosiasi kontrak kerja.
- Responding to change over following a plan berarti pada agile software development, lebih penting untuk dapat adaptasi dan merespons ke perubahan yang terjadi dibandingkan untuk mengikuti rencana yang dibuat.
Prinsip dalam Agile — Implementasi
Di atas sudah dijelaskan mengenai nilai-nilai dalam metodologi agile yang disebut dengan Agile Manifesto. Terdapat juga prinsip-prinsip diikuti dalam agile software development. Berikut merupakan prinsip-prinsip tersebut beserta contoh pengaplikasiannya dalam proyek yang sedang tim saya lakukan.
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Tim saya menggunakan scrum, sebuah metodologi dari agile software development. Pada scrum, tiap siklus berisikan sprint review dimana tim saya mengirimkan hasil pekerjaan berupa perangkat lunak yang dapat digunakan dan dicoba oleh klien. Siklus tersebut pada proyek tim saya berlangsung setiap 2 minggu.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Pada proyek tim saya, tiap siklus scrum kami akan bertemu dengan klien. Ketika itulah klien dapat memberikan saran, kritik, serta perubahan yang diinginkannya apabila klien kurang puas dengan hasil yang diberikan.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Seperti yang sudah dijelaskan di atas, tim saya memberikan hasil pekerjaan ke klien berupa perangkat lunak yang dapat digunakan setiap 2 minggu.
- Business people and developers must work together daily throughout the project.
Terdapat product owner yang membantu tim proyek saya dengan memberikan saran serta kritik terhadap rencana pengerjaan proyek atau hasil perangkat lunak yang diberikan.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Tim saya berisikan orang-orang yang hebat dan semangat dalam mengerjakan proyek yang sedang dilakukan. Kami memiliki komunikasi serta kerjasama yang baik, sehingga proyek dapat berlangsung dengan lancar. Kami juga saling memercayai satu sama lain dalam tugas yang diberikan.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Tim saya bertemu dengan online secara rutin. Pada pertemuan tersebut, kami membahas apa yang akan dilakukan, apa yang sudah dilakukan sebelumnya, serta kesulitan yang dialami saat mengerjakan proyek.
- Working software is the primary measure of progress.
Pada scrum, terdapat istilah sprint yang berarti siklus pengerjaan. Proyek tim saya memiliki total 5 sprint, dan pada tiap sprint kami memberikan hasil pekerjaan. Sprint terakhir akan menghasilkan sebuah perangkat lunak yang sudah final.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Proyek saya dapat menghasilkan perangkat lunak yang berkelanjutan dan user yang bertambah seiring waktu berjalan.
- Continuous attention to technical excellence and good design enhances agility.
Tim saya mengimplementasikan prinsip tersebut dengan membuat desain kerangka kode proyek yang rapi dan jelas.
- Simplicity — the art of maximizing the amount of work not done — is essential.
Tim saya secara terus menerus mencari perbaikan yang dapat dilakukan, agar hasil lebih maksimal.
- The best architectures, requirements, and designs emerge from self-organizing teams.
Pada proyek tim saya, kolaborasi dan komunikasi kami menghasilkan desain serta arsitektur proyek yang baik.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Pada setiap siklus, tim saya membahas apa yang bisa diperbaiki dan apa yang bisa dilakukan agar pengerjaan proyek menjadi lebih efektif dan efisien.
Sekian penjelasan saya mengenai Agile Software Development, semoga dapat membantu tim kalian dalam mengembangkan perangkat lunak.
Referensi: