Konsep Agile dalam pengembangan Software

Muhammad Ihsan Azizi
7 min readMay 25, 2021

--

“Intelligence is the ability to adapt to change.” - Stephen Hawking

Sumber: www.mitrais.com

Dalam mengembangkan suatu software, dibutuhkan metode pendekatan yang tepat dan sesuai dengan karakteristik dari proses pengembangan itu sendiri. Salah satu metode pengembangan yang sering digunakan oleh startup maupun perusahaan besar dalam proses pengembangan software saat ini adalah metode Agile.

Pembahasan artikel akan berfokus pada metode pengembangan software secara Agile dan salah satu jenisnya yaitu Scrum Framework / Methodology.

Agile Software Development

Sumber: https://theappsolutions.com/

Definisi Agile

Secara umum, Agile Software Development adalah metodologi pengembangan software yang didasarkan pada proses pengerjaan berulang dimana aturan dan solusi yang disepakati dilakukan dengan kolaborasi antar tim secara terorganisir dan terstruktur. Penggunaan metode agile akan membantu tim dalam merespon perubahan pengembangan perangkat lunak dengan menggunakan incremental berulang yang umumnya disebut sprint.

Metode agile biasanya digunakan untuk pengembangan software pada proyek yang menyangkut berbagai pihak untuk bekerjasama, berpotensi terjadi perubahan requirement yang cukup sering, serta berlangsung dalam jangka waktu pendek dan bertahap.

Dalam implementasinya, agile menjadikan desain dan implementasi sebagai central activities dari proses pengembangan software. Testing dan dokumentasi dikerjakan bersamaan dengan kegiatan implementasi. Iterasi berlangsung sepanjang proses, jumlahnya bergantung dengan jenis agile yang digunakan. Dalam setiap iterasi, requirement dikembangkan secara bertahap dan dikerjakan bersama-sama. Tidak lupa pada akhir iterasi akan dilakukan evaluasi berkala untuk memperbaiki hal-hal yang dirasa perlu ditingkatkan.

Agile Manifesto & Prinsip Agile

Proses pengembangan Agile mengacu pada konsep dari Agile Manifesto yang dijadikan sebagai fondasi. Konsep tersebut dikembangkan oleh 14 tokoh terkemuka dalam industri software. Beberapa nilai dari Agile Manifesto, di antaranya:

  • Individuals and interactions over processes and tools.
  • Working software over comprehensive documentation.
  • Customer collaboration over contract negotiation.
  • Responding to change over following a plan.

“…That is, while there is value in the items on the right, we value the items on the left more.” - Kent Beck et al.

Selain itu, agile juga memiliki 12 prinsip dalam pelaksanaannya, yaitu terdiri dari:

  1. Menjadikan kepuasan client sebagai prioritas utama dengan menghasilkan software berkualitas lebih awal dan berkelanjutan. Menurut saya, prinsip ini dapat menjadi relevan ketika pihak client juga memperhatikan kapasitas dari tim developer. Keinginan client yang berlebihan dan diluar kapasitas dari tim developer hanya akan menciptakan situasi yang overwhelmed dari proses pengembangan.
  2. Terbuka dalam menerima perubahan requirement meskipun menimbulkan keterlambatan dalam proses pengembangan. Agile memanfaatkan perubahan untuk keunggulan kompetitif klien. Namun, perlu diingat bahwa perubahan requirement tidak boleh dilakukan secara tiba-tiba di tengah proses iterasi, melainkan harus didiskusikan secara matang dan diimplementasikan pada proses iterasi berikutnya.
  3. Menghasilkan produk berupa software yang dibuat secara rutin dalam jangka waktu beberapa minggu hingga beberapa bulan, dengan kualitas yang teruji. Prinsip ini tepat dilakukan untuk mendapatkan validasi dari client atas pekerjaan yang telah dikerjakan tim developer selama satu iterasi, sebagai syarat untuk berlanjut ke iterasi berikutnya. Pada agile jenis scrum, prinsip ini terangkum dalam sebuah kegiatan bernama sprint review.
  4. Rekanan bisnis dan developer harus bekerjasama selama proyek IT sedang berlangsung. Prinsip ini sangat dimiliki agile karena sesuai dengan konsep pengembangannya, dimana pihak client dituntut untuk aktif ikut serta dalam berkolaborasi dengan tim developer selama proses pengembangan berlangsung.
  5. Mengembangkan proyek pada lingkungan yang berisi orang-orang bermotivasi tinggi. Adanya lingkungan yang mendukung akan membuat mereka untuk dapat menyelesaikan pekerjaannya dengan efektif dan efisien.
  6. Komunikasi secara langsung (tatap muka) adalah metode yang efektif dan efisien untuk menyampaikan informasi dan mengembangkan software.
  7. Software yang bekerja dengan baik adalah ukuran utama kemajuan sebuah proyek IT. Prinsip ini sesuai dengan salah satu poin agile manifesto, dimana working software merupakan satu hal yang harus diprioritaskan. Sebagaimana tertera pada prinsip no. 3, client akan memvalidasi hasil kerja dari tim developer dalam suatu sprint, berdasarkan working software yang disajikan.
  8. Agile Development mampu mempromosikan proyek dan pengembangan secara berkelanjutan. Dengan dukungan yang stabil dari sponsor, developer dan pengguna.
  9. Perhatian secara terus menerus untuk keunggulan dan kualitas dalam pengembangan teknis dan desain menjadi hal yang patut diperhatikan untuk meningkatkan sebuah agility.
  10. Kesederhanaan adalah hal yang paling penting dalam Agile Development yang efektif yakni memaksimalkan sumber daya yang ada
  11. Segala kebutuhan dari segi arsitektur, desain, dan kebutuhan software terbaik muncul dari tim yang mampu mengorganisir diri sendiri.
  12. Tim developer secara berkala akan melakukan refleksi mengenai bagaimana cara bekerja yang lebih efektif dan menyeleraskannya dengan pola kerja mereka.

Kelebihan & Kelurangan Agile

Beberapa kelebihan dari penggunaan metode agile, antara lain:

  • Proses pengembangan perangkat lunak membutuhkan waktu yang relatif cepat dan tidak membutuhkan resources yang besar.
  • Perubahan dapat ditangani dengan cepat sesuai dengan kebutuhan client.
  • Client dapat memberikan feedback kepada tim developer dalam proses pembuatan program.

Di sisi lain, metode agile juga memiliki beberapa kekurangan, antara lain:

  • Tidak cocok apabila dikerjakan oleh tim yang tidak memiliki komitmen untuk menyelesaikan proyek bersama — sama.
  • Metode Agile kurang tepat apabila dikerjakan dengan jumlah skala tim yang besar
  • Tim developer harus selalu bersiap karena perubahan dapat terjadi sewaktu-waktu, yang juga berpotensi menimbulkan keterlambatan dalam proses pengembangan.

Scrum Methodology

Sumber: https://static.wixstatic.com/

Adapun beberapa jenis dari Agile Development Method, di antaranya: Extreme Programmning (XP), Adaptive Software Development (ASD), Dynamic Systems Development Method (DSDM), Scrum Methodology, Crystal, Feature Driven Development (FDD), dan lain sebagainya.

Namun, pada kesempatan kali ini penulis akan berfokus untuk membahas bagaimana proses pengembangan menggunakan metode agile jenis scrum. Dimana metode tersebut juga saya gunakan dalam pengembangan software pada proyek PPL 2021.

Definisi Scrum

Secara umum, beberapa sumber mengatakan bahwa scrum lebih tepat dikategorikan sebagai framework, bukan methodology. Hal itu dikarenakan scrum tidak hanya dapat digunakan dalam pengembangan software, melainkan dapat dapat diimplementasikan untuk pengembangan produk apapun yang bersifat kompleks.

Mengusung prinsip dari agile, scrum merupakan metode untuk mengelola dan menjalankan pengembangan software yang kompleks, dengan bertumpu pada kekuatan kolaborasi tim, incremental product dan proses iterasi untuk mewujudkan hasil akhir. Dalam implementasinya, tim developer bekerja sama untuk menyelesaikan sebuah fitur, ketika sebuah fitur selesai, tim pengembangan akan pindah ke fitur lain. Metode tersebut sering dianalogikan dengen sebuah permainan rugby.

Beberapa istilah penting yang perlu dipahami dalam pengembangan software menggunakan scrum, antara lain:

  • Product backlog: Merupakan daftar terurut dari kumpulan pekerjaan yang harus dilakukan pada proyek. Item Product Backlog memiliki atribut deskripsi, order, estimasi dan value. Product backlog dapat ditambah, dihapus, ataupun di re-prioritaskan oleh product owner, tergantung dari kebutuhan user, perubahan requirement, dan lain sebagainya.
Contoh Product Backlog pada Proyek PPL 2021
  • Sprint backlog: Merupakan kumpulan item Product Backlog yang telah dipilih untuk dikerjakan selama satu sprint berlangsung.

Scrum Team

Sumber: https://d2o2utebsixu4k.cloudfront.net/

Terdapat 3 role utama dalam scrum, di antaranya:

  • Product Owner (PO)
    Product Owner adalah pihak yang bertugas untuk mengumpulkan dan menganalisa kebutuhan dari stakeholders. Product Owner juga bertanggung jawab untuk mengelola product backlog. Seorang PO pada proyek PPL 2021 diperankan oleh asisten dosen.
  • Scrum Master (SM)
    Scrum Master adalah pihak yang berperan untuk memastikan seluruh prosedur scrum diikuti dan semua agenda berjalan lancar. Seorang SM pada proyek PPL 2021 diperankan oleh asisten dosen.
  • Development Team
    Development team adalah engineer yang bertugas dalam mengeksekusi sprint backlog, yaitu mengembangkan software pada setiap increment sampai selesai. Development Team pada proyek PPL 2021 merupakan para peserta mata kuliah PPL itu sendiri.

Scrum Events

Sumber: https://www.c-sharpcorner.com/

Dalam metode scrum, terdapat 5 rangkaian kegiatan Scrum Events yang dilakukan secara berulang-ulang sampai semua fitur dan requirement terpenuhi, di antaranya:

  • Sprint Planning: Scrum events diawali dengan sprint planning. Pada tahap ini, SM, PO, dan tim developer akan berkolaborasi melakukan beberapa kegiatan. Pada sprint planning bertama kali, PO bertugas untuk medampingi tim developer untuk menentukan estimasi bobot dari setiap user stories. Sementara tim developer bertugas untuk memecah user stories menjadi task-task kecil agar jelas lingkup dari story tersebut dan cara implementasinya. PO juga berperan untuk menentukan sprint goal yaitu tujuan yang ingin dicapai dalam satu sprint. Kemudian PO, SM, dan tim developer berkolaborasi dalam menentukan sprint backlog dari product backlog berdasarkan sprint goal yang telah dibuat, untuk dikerjakan selama sprint tersebut.
  • Sprint: Diibaratkan sebagai detak jantung dari scrum, sprint merupakan batasan waktu (timebox) untuk pengembangan software dalam satu increment, sampai produk dapat digunakan dan siap untuk dirilis ke tahap produksi. Selama sprint berlangsung, tidak diperbolehkan adanya perubahan yang dapat mengacam sprint goal pada sprint tersebut. Durasi sprint bervariasi tergantung target yang ingin dicapai, biasanya berkisar antara 1 hingga 4 minggu. Pada proyek PPL 2021, durasi untuk setiap sprint adalah 2 minggu.
  • Daily Meeting/Stand-Up/Scrum: Merupakan meeting yang dilakukan selama sprint berlangsung. Daily meeting memiliki batas waktu maksimal 15 menit. Dalam kegiatan ini, tim saling memberikan update mengenai progress yang dikerjakan. Format dasar dalam Daily meeting adalah apa yang telah dikerjakan kemarin, kendala apa yang dihadapi, apa yang akan dikerjakan hari ini. Pada proyek PPL 2021, daily meeting dilaksanakan minimal 2 kali selama satu minggu.
  • Sprint Review: Merupakan kegiatan yang diadakan di akhir sprint, dimana tim developer akan memaparkan dan mendemonstrasikan hasil yang telah mereka capai selama 1 sprint. PO dan stakeholder dapat memberikan feedback dari hasil yang dikerjakan oleh tim developer. Product Owner dan Stakeholder juga bertugas untuk memperbaharui product backlog dan menentukan definition of done dari setiap backlog.
  • Sprint Retrospective: Merupakan kegiatan terakhir yang dilakukan setelah sprint review. Dalam sprint retrospective, PO, SM, dan tim developer bersama-sama mereview terhadap kinerja dan performa tim selama satu sprint. Format dasar dalam Sprint Retrospective adalah apa yang telah berjalan dengan baik (Done Well), apa yang salah (Went Wrong), apa yang akan ditingkatkan (Commit).

--

--

No responses yet