Saturday, April 08, 2006

Sekilas tentang metodologi pembuatan software, SCRUM

Scrum adalah suatu metodologi yang mengatur (manage) proses pembuatan software.
Scrum yang dikategorikan pada agile software development methodology.
Lihat agile manifesto, untuk mengerti filosofi dibalik kata agile pada konteks software development methodology atau project management.

** Kenapa Scrum?

Scrum menarik karena scrum lebih condong pada cara me-manage proyek secara praktikal (practical process model). Lebih menuntun tim untuk melakukan hal-hal yang perlu dan menyarankan hal-hal yang tidak perlu dalam menginspeksi proses dan melakukan adaptasi terus meneus untuk menyetir arah dari proses. Tidak seperti metodologi manajemen proyek lain yang cenderung deskriptif dan heavyweight.

** Scrum Role
Orang yang terlibat dalam proses scrum dibagi menjadi 3 jenis peran (role), yaitu:
  • Product Owner yaitu orang yang menentukan spesifikasi atau feature dari software yang akan di-deliver.
  • ScrumMaster yang bertanggung jawab untuk mengatur scrum process selama proyek berjalan. Oleh karena itu ScrumMaster harus menguasai Scrum process. ScrumMaster adalah fasilitator, yang mempersiapkan dan memimpin pertemuan (meeting)
  • Project Team (tim 7 plus minus 2) yang merupakan self-organizing team yang menjalankan project, seperti business analyst, software architect, developer, tester dan lain-lain.
** Teminologi ayam dan babi (chickens and pigs)

Terminologi ini dapat dijelaskan dengan lelucon dibawah ini:

A chicken and a pig decide to start a restaurant.
The pig says, "What should we call it?"
The chicken says, "How about 'Ham & Eggs'?"
The pig says, "No thanks. I'd be committed, but you'd just be involved."

Terminologi ayam (chicken) berarti orang yang berkepentingan terhadap proyek (involved) tapi tidak sepenuhnya terlibat dalam proyek.
Terminologi babi (pig) adalah orang yang terlibat sepenuhnya dalam proyek. Yang termasuk dalam kategori pig adalah anggota project team.


** Proses

Proses eksekusi proyek dengan menggunakan scrum, dapat dilihat pada gambar ini

  • First meeting
    • Proses scrum diawli dengan pebuatan tujuan yang akan dicapai dan product backlog.
      Product backlog dikuantisasi waktu dengan satuan hari (antara 1-20 hari)
      Product backlog merupakan ombinasi antara story-based work (pekerjaan yang berbasis use case/product feature) dan task-based work misalnya "Tambahkan validasi pada semua form"
      Product backlog diprioritaskan oleh product owner.
    • Product backlog yang berisi list yang diprioritaskan dari fitur-fitur atau perubahan yang akan ada pada produk.
  • Sprint planning meeting
    • Meeting untuk product owner, scrum team dan orang-orang yg berkepentingan.
    • Menentukan sprint goal yaitu tujuan yang ingin dicapai pada scrum sprint berikutnya (30 hari kedepan).
      Sprint goal biasa adalah minimum fungsinalitas yang harus dicapai.
      Jika sprint goal tidak dicapai maka dilakukan abnormal termination
    • Membuat sprint backlog yaitu list dari pekerjaan yang akan dilakukan selama sprint.
      Sprint backlog merupakan bagian produck backlog yang didetailkan.
      Sprint backlog dikuantisasi waktu berdasarkan jam (bukan hari yaitu antara 1-16).
      Sprint backlog harus tranparan untuk semua orang dalam tim
    • Meeting yang tidak lebih dari 8 jam saja.
      Dengan 4 jam pertama adalah waktu yang digunakan untuk Product Owner menjelaskan atau presentasi tentang prioritas dari product backlog.
      Kemudian tanya jawab dari tim tetang isi, maksud, tujuan dari item yang ada di product backlog.
    • Empat jam berikutnya adalah sesi untuk tim merencanakan Sprint.
    • Fokus pada melakukan pekerjaan bukan berfikir mengenai bagaimana mengerjakannya.
  • Daily Scrum meeting (Inspect and adapt cycle)
    • Meeting harian selama tidak lebih dari 15 menit
    • Yang boleh bicara dalam tim ini adalah scrum master dan anggota tim (pigs)
    • Orang lain yang bekepentingan (chickens) dapat ikut dalam tim tetapi tidak boleh berkomunikasi (berbicara)
    • Scrum master menanyakan 3 pertanyaan dari kepada anggota tim:
      • Apa yang sudah kamu lakukan kemarin (selama 24 jam kebelakang)?
      • Apa yang akan dikerjakan pada esok hari (24 jam mendatang)?
      • Hal apa yang bisa menghentikan pekerjaan besok hari (kendala)?
  • Sprint review meeting
    • Meeting setelah aktivitas selama 2 minggu atau 1 bulanan (Sprint) berakhir, yang kemudian diikuti oleh sprint planning meeting untuk Sprint berikutnya.
    • Meeting sebagai review atas Sprint yang sudah dilaksanakan.
    • Memperbarui (update) sprint backlog yang merefleksikan berapa lama waktu yg dibutuhkan untuk menyelesaikan pekerjaan (task)
  • Sprint retrospective meeting
    • Meeting setelah sprint review meeting dan sprint planning meeting ScrumMaster dengan tim untuk merevisi proses dan cara kerja Scrum, proses development agar Sprint berikutnya lebih efektif dan enjoyable.
    • Meeting ini sebaiknya tidak lebih dari 3 jam.

** Burndown charts

Burndown charts adalah grafik yang menunjukan seberapa banyak waktu yang dibutuhkan untuk menyelesaikan proyek. Grafik ini merefleksikan progress dari proyek.

Y-axis: Sisa waktu yang diperlukan untuk menyelesaikan pekerjaan (dalam jam)
atau jumlah item pekerjaan yang masih harus diselesaikan
X-Axis: Tanggal

Referensi tentang burndown chart yang cukup detail bisa dibaca di artikel "Earned-Value and Burn Charts"

** Artikel lain
Adaptive Project Management Using Scrum.
File presentasi yang bagus tentang SCRUM

Followers