Pengembangan Software dengan Agile

Hema Mitta Kalyani
LEARNFAZZ
Published in
5 min readMar 20, 2019

Pada awal pengembangannya, suatu perangkat lunak sering kali dibuat tanpa ada perencanaan yang spesifik. Namun, semakin besar dan kompleks sebuah sistem maka metodologi pengembangan dan penentuan proses pengembangan pun menjadi sebuah keharusan pula. Metodologi pengembangan perangkat lunak merupakan sebuah metodologi yang digunakan untuk membuat struktur, rencana, dan kontrol pengerjaan suatu proyek. Proses pengembangan perangkat lunak adalah model-model dan metodologi yang digunakan untuk mengembangkan suatu perangkat lunak.

Dalam pengembangan perangkat lunak, requirement yang sudah ada bisa saja berubah atau bertambah ketika proses pengembangan sudah berjalan. Oleh karena itu, dibutuhkan suatu metode pengembangan perangkat lunak yang dapat mendukung hal tersebut, yaitu metode yang cepat dalam melakukan adaptasi terhadap perubahan requirement. Metode tersebut tidak lain adalah Agile Software Development.

Agile

Agile Software Development adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun. Dalam penerapannya, agile membantu tim developer untuk menghasilkan produk secara lebih cepat. Hal ini dikarenaan penyampaian produk kepada klien tidak dilakukan dalam satu tahap sekaligus, melainkan dilakukan secara kecil dan bertahap (iteratif). Karena penyampaiannya yang iteratif, metode ini dapat beradaptasi dengan baik terhadap perubahan requirement.

Agile manifesto:

  1. Individu dan interaksi lebih diutamakan dari proses dan sarana perangkat lunak.
  2. Perangkat lunak yang bekerja lebih diutamakan dari dokumentasi yang menyeluruh.
  3. Kolaborasi dengan klien lebih diutamakan dari negosiasi kontrak.
  4. Tanggap terhadap perubahan lebih diutamakan dari mengikuti rencana.

Dalam pelaksanaan Scrum pada tim, kami telah menerapkan agile manifesto. Salah satu bentuk penerapannya adalah dengan melakukan sharing setiap hari pukul 9 malam. Sharing ini dapat berupa progress update dari pengerjaan proyek dan kendala-kendala yang dihadapi. Terkadang kami juga melakukan sharing yang tidak berhubungan dengan pekerjaan proyek, untuk membangun interaksi yang harmonis antar anggota tim (1).

Selain itu, kelompok kami juga terbilang aktif untuk berkomunikasi dengan Product Owner terkait pengembangan aplikasi. Komunikasi ini kami lakukan melalui group chat Telegram. Product Owner dan kami sering kali melakukan diskusi terkait hal-hal teknis dalam pengembangan aplikasi (3). Diskusi ini tidak jarang juga membawa perubahan atau penambahan pada requirement yang telah ada sebelumnya (4).

Agile principles:

  1. Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
  2. Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
  3. Penyerahan hasil/software dalam hitungan waktu dua minggu sampai dua bulan.
  4. Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung.
  5. Membangun proyek di lingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
  6. Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien.
  7. Perangkat lunak yang berfungsi adalah alat ukur utama dari kemajuan proyek.
  8. Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan.
  9. Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile.
  10. Kesederhanaan sangat penting.
  11. Arsitek. Kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri.
  12. Secara periodik tim melakukan evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.

Dalam pelaksanaan Scrum pada tim, kami telah menerapkan agile principles. Hal ini dapat dilihat dari pelaksaan sprint review sekitar 2 minggu sekali (3). Pada sprint review, product owner memutuskan apakah hasil pekerjaan tim kami diterima atau tidak. Dari 2 sprint review yang telah kami jalani, product owner menerima pekerjaan kami dengan beberapa tambahan (2). Tambahan tersebut kami presentasikan kembali pada sprint selanjutnya (1). Selain itu, kami juga senantiasa melakukan evaluasi diri melalui sprint retrospective. Setelah melakukan evaluasi pada kelompok, kami menyusun eksperimen perbaikan untuk meningkatkan kinerja pada sprint selanjutnya (12).

Scrum

Scrum merupakan sebuah metode iteratif yang termasuk dalam metode Agile tentang bagaimana cara mengelola dan menjalankan sebuah proyek. Scrum adalah sebuah kerangka kerja di mana orang-orang dapat menyelesaikan permasalahan kompleks yang senantiasa berubah, di mana pada saat bersamaan menghasilkan produk dengan nilai setinggi mungkin secara kreatif dan produktif. Kerangka kerja scrum terdiri dari scrum roles, scrum artifacts, dan scrum rituals.

Kerangka kerja Scrum

Penerapan Scrum dalam Tim

Scrum board pada sprint pertama

Scrum roles

  1. Product Owner: Orang yang bertanggung jawab terhadap bisnis dari suatu produk, bertugas dalam menyusun product backlog. Product Owner pada PPL 2019 ini adalah pengusul topik proyek.
  2. Scrum Master: Orang yang bertugas memimpin tim, memastikan tim berjalan baik dan tidak memiliki gangguan. Scrum Master pada PPL 2019 ini adalah asisten dosen.
  3. Development Team: Anggota tim yang bertugas untuk mengembangkan produk. Development tim pada PPL 2019 ini adalah mahasiswa yang mengambil mata kuliah PPL.

Scrum artifacts

  1. Product Backlog: Daftar seluruh hal-hal yang akan dikerjakan dalam proyek.
  2. Sprint Backlog: Daftar hal-hal yang akan dikerjakan dalam satu sprint.
  3. Increment: Item dari Product Backlog yang diselesaikan selama satu sprint. Increment dipresentasikan kepada Product Owner pada setiap sprint review.

Scrum rituals

  1. Fase inisiasi: Dalam kegiatan ini, dilakukan pertemuan dengan Product Owner. Selain itu kami juga membuat mock up serta melakukan set up environment.
  2. Sprint planning: Kegiatan ini bertujuan untuk menentukan apa yang akan dikerjakan selama satu sprint. Pada kegiatan ini dilakukan pemilihan PBI menjadi Sprint Backlog. Sprint Backlog kemudian dipecah menjadi beberapa task. Task ini akan ditugaskan kepada salah satu anggota tim.
  3. Sprint: Kegiatan ini merupakan tahapan pengembangan produk. Masing-masing anggota tim membuat kode implementasi dari task yang telah dipilih pada sprint planning.
  4. Daily stand up: Pada PPL ini, kami melakukan daily stand up sebanyak 2 kali seminggu. Kegiatan ini dilakukan selama 15–30 menit. Setiap anggota tim melaporkan hal-hal apa saja yang sudah dikerjakan dan yang akan dikerjakan, serta kendala yang dihadapi.
  5. Sprint review: Kegiatan ini berupa penilaian implementasi PBI yang telah dilakukan oleh tim. Development team mempresentasikan hasil sprint kepada Product Owner, kemudian Product Owner akan memutuskan apakah hasil sprint tersebut diterima atau ditolak.
  6. Sprint retrospective: Kegiatan ini bertujuan untuk mengetahui hal-hal baik dan buruk selama satu sprint. Hal ini kami lakukan dengan menuliskan atau mengemukaan pendapat masing-masing anggota tim. Kemudian, kami bersama-sama menyusun eksperimen perbaikan untuk meningkatkan kinerja pada sprint selanjutnya.

Referensi:

  1. What is Agile?. The Agile Coach. Web. 20 Maret 2019. https://www.atlassian.com/agile
  2. Manifesto Pengembangan Perangkat Lunak Agile. Agile Manifesto. Web. 20 Maret 2019. https://agilemanifesto.org/iso/id/manifesto.html
  3. The Scrum Guides. Scrum Guides. Web. 20 Maret 2019. https://www.scrumguides.org/scrum-guide.html

--

--