Agile Software Development: Manifesto dan Prinsip
When to use iterative development? You should use iterative development only on projects that you want to succeed. — Martin Fowler
Pada artikel kita akan membahas mengenai Agile Software Development, mulai dari pengertian, agile manifesto, agile principles, hingga salah satu implementasi dari Agile yakni Scrum. Yuk kita mulai!
Apa itu Agile Software Development?
Agile Software Development adalah metodologi pengembangan perangkat lunak dengan proses pengerjaan yang berulang (iteratif). Sesuai dengan namanya, yakni agile, setiap proses pengerjaan dilakukan dengan fase yang cepat serta adaptif terhadap segala perubahan.
Agile Manifesto
Agile Manifesto merupakan nilai-nilai utama yang mendasari Agile Software Development. Terdapat empat poin Agile Manifesto, antara lain:
1. Individuals and interactions over processes and tools
Poin ini menyatakan bahwa pada Agile Software Development, individu dan interaksi (dalam hal ini adalah komunikasi dan kerjasama antar individu) lebih diutamakan dibanding proses dan tools. Karena secanggih apapun proses dan tools yang digunakan, pengembangan tidak akan berjalan lancar tanpa adanya individu dan kerjasama yang baik.
2. Working software over comprehensive documentation
Poin ini menyatakan bahwa pada Agile Software Development, fungsionalitas perangkat lunak yang dibuat lebih diutamakan dibanding dokumentasi yang lengkap dan menyeluruh. Karena sepenting apapun dokumentasi, hal yang lebih penting adalah bagaimana produk yang kita kembangkan berfungsi dan dapat digunakan oleh client.
3. Customer collaboration over contract negotiation
Poin ini menyatakan bahwa pada Agile Software Development, kolaborasi dan interaksi dengan client lebih diutamakan dibanding negosiasi kontrak. Karena bagaimanapun, client sendiri lah yang paling memahami apa yang ia inginkan dan butuhkan. Sehingga dengan adanya kolaborasi, produk yang dihasilkan akan semakin sesuai dengan ekspektasi dan kebutuhan client.
4. Responding to change over following a plan
Poin ini menyatakan bahwa pada Agile Software Development, respon dan adaptasi terhadap perubahan lebih diutamakan dibanding tetap pada rencana awal. Rencana hanyalah sekadar rencana, pada prosesnya perubahan dan perkembangan merupakan suatu hal yang tidak bisa dihindari.
Agile Principles
Berdasarkan keempat nilai utama Agile Manifesto yang telah dibahas sebelumnya, dijabarkan dua belas prinsip pada Agile, atau yang dikenal dengan istilah Agile Principles, antara lain:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
➜ Mengutamakan kepuasan client dengan menghasilkan produk secara lebih awal dan berkelanjutan - Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
➜ Menerima segala perubahan yang diminta client - Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
➜ Menghasilkan software secara bertahap dalam jangka waktu yang pendek - Business people and developers must work together daily throughout the project.
➜ Adanya kerja sama dan interaksi antara pengembang dan pebisnis selama pengerjaan proyek - Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
➜ Membentuk tim berisikan orang-orang yang bermotivasi tinggi - The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
➜ Melakukan komunikasi secara langsung (tatap muka) - Working software is the primary measure of progress.
➜ Progress diukur dari software yang dapat berfungsi dengan baik - Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
➜ Pengembangan dilakukan secara berkelanjutan dan dengan kecepatan yang konstan - Continuous attention to technical excellence and good design enhances agility.
➜ Memperhatikan kualitas dan desain teknis yang baik - Simplicity–the art of maximizing the amount of work not done–is essential.
➜ Menyederhanakan pekerjaan - The best architectures, requirements, and designs emerge from self-organizing teams.
➜ Tim harus mampu mengorganisir diri sendiri - At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
➜ Melakukan evaluasi secara berkala dan menyesuaikan pola kerja
Scrum
Seperti yang telah disinggung di awal, kita akan membahas mengenai salah satu pengimplementasian dari Agile Software Development, yakni Scrum. Scrum merupakan suatu framework pengembangan perangkat lunak dengan pendekatan Agile, yang menekankan pada kolaborasi tim, proses yang iteratif, serta hasil produk yang incremental.
Three Pillars of Scrum
Dalam proses Scrum, terdapat tiga pilar utama atau yang dikenal dengan istilah Three Pillars of Scrum, antara lain:
- Transparency
Segala proses dan kegiatan dilakukan secara transparan, dimana semua pihak yang terlibat mengetahuinya. - Inspection
Inspeksi terhadap produk, proses, individu, praktik, dan improvements dilakukan oleh setiap orang yang ada di tim. - Adaptation
Adaptasi berupa improvements terhadap hasil inspeksi yang telah dilakukan sebelumnya.
Roles pada Scrum
Dalam melakukan Scrum, terdapat tiga peran utama dengan perannya masing-masing, diantaranya:
- Product Owner
Berperan sebagai representasi dari client sekaligus menjadi jembatan antara client dengan developer - Scrum Master
Berperan untuk memimpin tim developer, memastikan proses berjalan dengan lancar dan dapat mencapai goals yang ada - Developer Team
Berperan untuk men-develop software sesuai dengan tahapan yang telah direncanakan
Tahapan pada Scrum
- Pembuatan Product Backlog
Pada tahapan ini, product owner merumuskan product backlog berdasarkan spesifikasi atau permintaan fitur dari client, dengan menentukan prioritas pengerjaan. - Sprint Planning Meeting
Pada tahapan ini, scrum master akan memfasilitasi pertemuan antara product owner dengan tim developer untuk membahas mengenai product backlog item apa saja yang akan dikerjakan pada sprint selanjutnya. Pada tahap ini juga estimasi bobot dari setiap tugas. - Pemilihan Sprint Backlog
Dilakukannya sprint planning akan menghasilkan sprint backlog yang berisi daftar product backlog item (PBI) yang harus dikerjakan pada sprint. Pada tahap ini, setiap developer akan memilih PBI yang akan ia kerjakan. - Sprint
Pada tahapan sprint, tim developer mengerjakan PBI yang telah dipilih sebelumnya. Umumnya tahapan ini dilakukan selama 1–4 minggu. - Daily Scrum
Pada tahapan yang dipimpin oleh scrum master ini, setiap developer akan mempresentasikan mengenai apa yang telah ia lakukan kemarin, apa yang akan ia lakukan besok, dan hambatan apa saja yang ia rasakan. Tahapan ini dilakukan setiap hari selama sprint dengan waktu +-15 menit. - Sprint Review
Pada tahapan ini, product owner akan mendemonstrasikan increment, yakni hasil pekerjaan tim developer selama satu sprint, dan menjelaskan apakah goals pada sprint tersebut tercapai kepada pihak client. Nantinya feedback yang diberikan oleh pihak client akan dimasukkan kedalam product backlog untuk ditelaah. - Sprint Retrospective
Sebagai tahapan terakhir dari sebuah sprint, pada tahap ini setiap anggota tim akan memberikan evaluasi terkait kinerja tim dalam sprint yang telah dilakukan, dengan harapan permasalahan yang sama tidak akan terulang kembali sekaligus menjadi improvement untuk sprint selanjutnya.