Monday 20 January 2014

Metode SCRUM pada Pendekatan Rekayasa Perangkat Lunak AGILE

SCRUM adalah salah satu metode rekayasa perangkat lunak dengan menggunakan prinsip-prinsip pendekatan AGILE, yang bertumpu pada kekuatan kolaborasi tim, incremental product dan proses iterasi untuk mewujudkan hasil akhir.



Scrum sendiri bukan satu-satunya metode yang menggunakan pendekatan AGILE. Mungkin kita juga pernah mendengar metode Extreme Programming (XP) yang juga menggunakan pendekatan AGILE dalam rekayasa perangkat lunak. Masing-masing metode memiliki fokus atau penekanan yang berbeda yang tentu saja dapat dikombinasika untuk menghasilkan proses yang optimal. 

Jika metode XP lebih berfokus kepada framework yang memberikan kerangka mengenai praktek-praktek teknis dalam membangun program menggunakan pendekatan AGILE, seperti para programmer yang diharapkan untuk bekerja pada station yang sama sehingga dapat menggunakan library yang sama dan lain sebagainya. 

Sedangkan metode SCRUM lebih berfokus kepada project management yang memberikan kerangka kerja bagaimana mengelola sebuah proyek yang berbasis AGILE. Metode ini memberikan pola "ceromony" apa saja yang harua dilaksanakan, "role" apa saja yang ada dalam SCRUM termasuk tugas yang harus diperankannya dan masih banyak hal lainnya. Tulisan ini akan mencoba untuk mengupas metode SCRUM ini.

Di dalam setiap iterasi scrum, semua anggota tim saling berkolaborasi untuk menyelesaikan setiap incremental product yang telah direncanakan dan disepakati bersama. Dalam proses, setiap iterasi juga akan melakukan kegiatan analisis, merencanakan desain dan selanjutnya program siap untuk dikembangkan. Setelah program selesai, program juga akan diuji melalui proses testing yang telah direncanakan oleh tim, sehingga akhirnya program tersebut menjadi sebuah incremental product yang siap untuk di-deploy dan di-integrasi-kan dengan semua program yang telah dibuat sebelumnya. 

Semua kegiatan diatas akan dilakukan oleh tim dengan konsep self-organizing, artinya semua anggota tim akan bekerja sama untuk mengelola kerja mereka sesuai dengan kesepakatan mereka. Mereka bertanggung jawab untuk menghasilkan incremental product dengan membagi tugas secara bersama dan berdiskusi tanpa ada hirarki. Seorang yang berpengalaman testing, sangat dimungkinkan untuk berkonstribusi ditahap analisa dan desain. Atau seorang programmer akan membantu aktifitas testing. Secara sederhana, anggota tim akan merencanakan tugas secara bersama dan melakukannya secara bersama sebagai sebuah kolaborasi tim.




ROLE (Fungsi) dalam Scrum

Scrum akan berjalan pada tim dengan jumlah orang yang tidak terlalu banyak, kira-kira berjumlah lebih kurang 7 orang. Setiap orang dalam tim scrum akan memiliki role atau fungsi tertentu. Dan hanya dikenal 3 role atau fungsi dalam menjalankan proyek berbasis scrum :

Product Owner
Product owner adalah orang yang bertanggung jawab terdapat definisi produk yang akan dibuat. Dengan kata lain, product owner adalah tim yang menciptakan "APA" yang harus dimiliki oleh aplikasi. Mereka bertugas untuk menuliskan semua item yang harus dimiliki oleh aplikasi. Item-item tersebut memiliki "story" yang akan disampaikan oleh product owner. 
Product owner, juga bertanggung jawab untuk memberikan prioritas kepada setiap story, sehingga seluruh anggota tim SCRUM mengetahui apa yang sebaiknya harus dibuat pada setiap iterasi. 
Sebagai representatif dari pengguna, product owner akan menjadi kunci apakah hasil dari sebuah iterasi dapat di-deploy atau diimplementasikan.

Scrum Master
Ini adalah seseorang yang akan berperan sebagai fasilitator dalam setiap proses atau ceremony yang ada dalam scrum seperti layaknya seorang project manager. 

Scrum Development Team
Tim inilah yang akan setiap iterasi menghasilkan suatu incremental product yang telah disepakati bersama. Mereka bertanggung jawab untuk membuat program dan menguji program tersebut(testing) sehingga hasil dari setiap iterasi dapat digunakan dan diimplementasikan.
Tim ini harus mengatur dirinya sendiri (self-organized), dari proses analisa, design, coding dan akhirnya diujikan. Mereka harus berkolaborasi bersama sehingga keluaran dari setiap iterasi adalah sebuah program yang benar-benar teruji dan sesuai dengan harapan product owner.

Proses Membangun Incremental Product

Product Backlog Item
Adalah list dari 'user story' untuk menggambarkan fungsi atau feature apa saja yang harus tersedia di dalam aplikasi. Product Owner akan membuat user story untuk selanjutnya dibawa dalam sebuah diskusi bersama untuk melihat lebih detail terkait dengan skala prioritas dan acceptance criteria.

Beberapa contoh user story pada Product Backlog Item
  • Jika user mencoba 3 kali password secara salah, maka user akan di lock.
  • Menghasilkan report nilai semester mahasiswa.
  • Report alokasi ruangan kelas dan mampu memberikan alert sehingga jadwal kuliah tidak konflik dengan jumlah ruangan yang ada.
Seluruh Story Form akan didiskusikan untuk selanjutkan diurutkan sebagai Product Backlog Item, sekaligus sebagai urutan incremental product pada setiap iterasi atau sprint. Di dalam scrum, kita akan lebih sering menggunakan istilah sprint dibandingkan iterasi.



Sprint Backlog
Adalah sebuah hasil diskusi bersama berdasarkan skala prioritas untuk melakukan mapping setiap Product Backlog Item(PBI) ke jadwal sprint. Dengan adanya Sprint Backlog, maka semua member dalam scrum akan mengetahui apa target pada setiap sprint atau setiap iterasi. Sangat dimungkinkan sebuah PBI akan dipecah menjadi 2 bagian atau lebih menjadi item yang lebih kecil sehingga dapat dikerjanan dalam sebuah sprint atau iterasi. Pemecahan ini tetap menjalankan prinsip bahwa item tersebut adalah independent dan testable.

Sprint Tasks
Team akan melakukan identifikasi pada setiap sprint backlog dan berdiskusi bersama tugas-tugas apa saja yang harus dilakukan pada setiap sprint atau iterasi. Misal, telah ditetapkan bahwa kita akan membuat report nilai semester siswa pada sebuah sprint/iterasi tertentu. Selanjutnya kita mulai melakukan identifikasi tugas-tugas yang harus dikerjakan agar kita mampu menyesaikan iterasi tersebut. Contoh tugas-tugas yang harus kita lakukan dalm iterasi tersebut adalah membuat form report, menganalisa database, mendesain bagaimana layar user untuk keperluan input, melakukan testing dan lain-lain.



Aktifitas Scrum

Kita juga dapat menyebut aktifitas scrum ini sebagai Scrum Ceremony. Sebagaimana di awal tulisan ini, scrum berfokus kepada manajemen proyek yang didalamnya terdapat framework tentang bagaimana mengelola dan menjalankan proyek rekayasa perangkat lunak menggunakan prinsip agile.


Gambar di atas, menunjukan bagaimana proses rekayasa perangkat lunak menggunakan metode scrum akan berlangsung. Dimulai dengan kegiatan untuk melakukanidentifikasi backlog (atau user story) dan selanjutnya kegiatan akan bergerak dari satu iterasi ke iterasi selanjutnya guna membangun incremental product. Di dalam setiap iterasi, terdapat juga kegiatan harian yang akan dilakukan oleh semua anggota tim scrum.

Backlog Refinement Meeting
Semua proyek perangkat lunak selalu memiliki item yang akan digunakan untuk membantu pengguna aplikasi dalam menjalankan kesehariannya. Meeting ini digunakan bersama oleh seluruh tim scrum untuk mengetahui feature atau fungsi apa saja yang akan terdapat pada aplikasi yang sedang dikembangkan. Hasil dari meeting adalah sebuah Product Backlog Item. 
Meeting ini harus dilakukan sebelum tim mulai bekerja pada tahapan iterasi atau sprint. Setiap list akan direview apakah scope-nya masih terlalu luas atau perlu di-split atau dibagi-bagi lagi menjadi potongan yang lebih kecil, sehingga dapat dengan mudah untuk di-mapping ke dalam suatu iterasi/sprint. 
Tim juga akan berdiskusi tingkat kesulitan dan prioritas dari masing-masing item, sehingga tim bisa membuat schedule yang tepat untuk melakukan mapping mengenai item yang akan dikerjakan lebih dahulu sehingga tim memiliki perencanaan item apa saja yang akan dikerjakan untuk setiap iterasi.
Dan tentu saja, pada tahap ini tim mencoba untuk menyamakan persepsi mengenai acceptance criteria yaitu kriteria apa saja untuk mengatakan bahwa iterasi dan incremental product yang dihasilkan adalah sesuai harapan.

Sprint Planning Meeting
Meeting ini dijalankan pada hari pertama pada setiap sebuah iterasi akan dimulai. Dengan menggunakan Product Backlog Item yang telah ditetapkan pada saat Backlog Refinement Meeting, maka tim sudah mengetahui feature apa yang akan mereka selesaikan pada iterasi. Dan tim mulai melakukan identifikasi tugas atau task apa saja yang harus dikerjakan guna menyelesaikan feature yang telah ditetapkan pada setiap iterasi atau sprint. Selanjutnya tim mulai membagi tugas atau task tersebut kepada seluruh anggota scrum.

Daily Scrum 
Kini tiba saatnya sebuah iterasi dimulai. Semua anggota tim scrum sudah bersepakat feature apa yang akan dihasilkan pada iterasi ini. Mereka juga sudah memiliki rencana kolaborasi dan setiap anggota tim telah sepakat dengan tugasnya masing-masing. Setiap hari, semua anggota tim akan melakukan meeting lebih kurang 20 menit dan masing-masing anggota harus melaporkan 3 point. Point-point tersebut adalah apa yang telah dilakukan kemarin, apa yang akan dilakukan hari ini dan kendala yang dihadapi untuk menyelesaikan tugas. Meeting ini didesain untuk dilakukan secara singkat, jika ada sesuatu yang detail, anggota tim bisa berdiskusi lebih detail diluar meeting ini dengan orang-orang terkait.


Setiap harinya, sprint backlog akan selalu mereflekasikan status dari semua tugas yang telah ditetapkan pada setiap iterasi. Semua tugas yang telah diidentifikasi, akan dimasukkan ke dalam kolom "Not Started". Selanjutnya tugas-tugas tersebut akan mengalami progress dan didiskusikan dalam daily meeting.

Sprint Review Meeting
Kini tiba saatnya akhir dari sebuah sprint, seluruh tim akan berdiskusi lagi untuk melakukan final review untuk menyatakan apakah mereka telah berhasil memenuhi ekspektasi yang ditetapkan oleh product owner. Product Owner akan menjadi orang kunci yang akan menentukan apakah incremental product yang telah dibuat dalam sprint tersebut dapat diterima atau dinyatakan gagal sehingga perlu adanya diskusi lanjutan untuk menentukan langkah selajutnya. 

Meeting ini tidak lagi berdiskusi mengenai status, incremental product yang telah dikembangkan selama satu periode sprint akan didemokan dan diujikan sebagai final review untuk menyatakan bahwa  sebuah user-story atau sebuah product backlog item telah benar-benar selesai sesuai dengan target sprint yang telah disepakati.

Jika sebuah user story telah dinyatakan gagal di dalam sebuah iterasi, tim bisa saja memutuskan untuk menunda terlebih dahulu user-story ini, untuk selanjutnya akan ditinjau kembali pada iterasi mendatang. Atau tim juga bisa menentukan, jika user-story ini akan dilakukan kembali pada iterasi selanjutnya sehingga jadwal user-story yang telah direncanakan sebelumnya akan ditunda terlebih dahulu, untuk menyelesaikan user-story yang masih belum yang belum berhasil.

Sebagaimana karakteristik dari metode scrum, tim scrum adalah self-organization, sehingga tim yang akan menentukan langkah yang paling tepat bagi mereka.

Sprint Restrospective Meeting
Ini adalah meeting untuk melakukan instropeksi dengan melihat kembali perjalanan selama sprint berlangsung. Diskusi lebih berfokus kepada upaya untuk membangun sebuah timyang efektif dan optimal guna menyelesaikan sprint-sprint berikutnya. Mungkin perlu perbaikan dalam pola komunikasi antar tim, atau terdapat sebuah proses yang mungkin bisa dihilangkan karena justru menyulitkan tim tetapi efek terharap hasil akhir tidak sesuai dengan effort yang dikeluarkan atau banyak hal lainnya.

Dengan adanya meeting ini, diharapkan hubungan antar tim akan semakin baik, kolaborasi menjadi lebih efektif dan optimal serta pengetahuan akan product akan semakin bertambah sehingga memudahkan sprint-sprint berikutnya.


--------
Link:
Topik tentang mengenai kehidupan di Singapura: Kehidupan di Singapura 
Topik tentang mengenali teknologi informasi: Mengenali Teknologi Informasi


Semoga Bermanfaat
Singapore, Januari 2014

"Dipublish di atas MRT dalam perjalanan pulang dari kantor ke rumah. Ditulis/dipersiapkan kira-kira seminggu lebih, guna mengisi waktu kosong di atas MRT"







14 comments:

  1. Wah bagus postnya, tapi aku belum bisa memahami actual yang dikerjakan programer IT di banking itu kaya apa.......he..he maklum bukan orang IT memahami syntak di PHP ga..tuntas....kwk..kwn

    ReplyDelete
    Replies
    1. Scrum bukan merupakan metode atau tool yang berkaitan dengan teknis programming. Scrum lebih merupakan sebuah metodologi bagaimsna sebuah tim berkolaborasi dan berinteraksi dalam sebuah proyek pembuatan perangkat lunak.
      Apa yang dikerjakan dalam.proyek perangkat lunak? Memahami kebutuhan bisnis (user), mendesain sebuah solusi/program yang dapat membantu kebutuhan user, dilanjutkan membuat program, diujikan dan akhirnya bisnis dapat menggunakan program.kita.
      Kali kita sedang membangun rumah sebagai sebush proyek, mska sebagai user kita akan bercerita apa yg kita inginkan kepada pelaksana proyek, kemudian mereka mencoba memahami, mendesain gambar (arsitektur), merencanakan material, rumah dibangun dan akhirnya jadi. Gitulah gambaran kerja sebuah proyek IT.

      Delete
  2. baru disuruh sama manager buat belajar scrum. ketemu situs ini.
    thanks.

    ReplyDelete
  3. Terimakasih om post nya bagus sekali

    ReplyDelete
  4. Very nice article. Learned so much. Thank you sir!

    ReplyDelete
  5. Wah, saya kurang paham Pak. hehehe . Kalo misalnya saya mau membuat sebuah aplikasi untuk sebuah perusahan, maka dengan scrum, apa yang harus saya lakukan ? Terima Kasih

    ReplyDelete
  6. Habis training ISO 9241:210 ternyata scrum dapat membantu mempercepat proses iterasi, thanks info ini sangat berguna.

    ReplyDelete
  7. masih kebayang-bayang bgmna proses scrum ini berjalan. kasih posting utk real use case dong mas.

    ReplyDelete
  8. om mau lihat scrum yang sebenarnya

    ReplyDelete
  9. Nice post! Saya berencana mengambil topik Tugas Akhir dengan menggunakan pendekatan desain sprint dan proses scrum. Apabila ditambahkan tentang teori dan contoh penggunaan ke aplikasi yang secara real akan sangat membantu saya :D

    ReplyDelete
  10. NICE INFORMATION, THANK YOU

    ReplyDelete
  11. Thanks for sharing pak @eko :)

    ReplyDelete
  12. apakah dalam scrum methodology proses pembuatan design sistem seperti use case, sequence diagram, dll tetap dilakukan?

    ReplyDelete

Catatan Pendidikan Menengah (SMP) atau Secondary School di Singapura

Perjalanan pendidikan atau education journey yang akan dilalui oleh lulusan SD atau Primary School akan berlanjut ke jenjang berikutnya yang...