Kamis, 03 September 2009

Memahami Konsep Capability Maturiry Model (CMM)

Kali ini, saya akan membahas suatu konsep kematangan organisasi dari segi kemampuannya dalam mengembangkan perangkat lunak. Konsep kematangan pengembangan perangkat lunak yang saya maksud adalah Capability Maturity Model (CMM).

Sebelum membahas lebih lanjut mengenai CMM, saya mencoba menganalogikan pembangunan perangkat lunak sebagai permainan baseball. Apa yang menjadi pembeda, apabila bola baseball dipukul oleh pemain pemula dan dibandingkan dengan seseorang yang sudah mahir bermain baseball ?. Tentunya, apabila bola tersebut dipukul oleh seorang pemula dan pemain lainnya juga masih pemula, mereka akan berlarian tidak teratur, ada yang berlarian ke arah yang benar dan ada yang berlarian ke arah yang salah, karena bola yang dipukul belum tentu mengarah pada sasaran yang tepat. Namun, apabila bola tersebut tersebut dipukul oleh seseorang yang telah professional, dan tim yang professional pula dalam permainan baseball, mereka akan berlarian ke koordinat masing-masing berdasarkan pengalaman latihan yang telah dilakukan sebelumnya. Bisa saja para pemain professional tersebut melakukan sesuatu yang salah, akan tetapi hampir semua pemain proffesional selalu mencoba melakukan sesuatu dengan benar.

Dari analogi saya di atas dapat disimpukan, bahwa suatu tim yang professional dikatakan lebih "matang" (mature) dibandingkan dengan tim pemula. Karena, seorang tim yang professional mampu mengembangkan kualitas dirinya sendiri (self-perpetuating quality) dengan menunjukkan bahwa mereka bermain dengan baik, mampu mendidik pemain baru untuk bermain secara professional pula, dan selalu menggali strategi untuk menciptakan permainan yang terbaik. Begitu juga dengan proses pembuatan perangkat lunak, apabila tim yang melakukan proses pengembangan merupakan tim yang kurang professional, maka perangkat lunak yang dihasilkannya pun belum tentu sesuai dengan requirements pengguna. Akan tetapi, apabila tim pengembang perangkat lunaknya telah professional, akan lebih besar kemungkinannya perangkat lunak yang dihasilkannya sesuai dengan requirements pengguna.

Terus, apa sih yang dimaksud dengan CMM. Menurut wikipedia, "Capability Maturity Model (CMM) is a concept that was developed in the field of software development and which provides a model for understanding the capability maturity of an organization's software development business processes.". Jadi, CMM berupa konsep pengembangan perangkat lunak yang menuntun suatu organisasi atau perusahaan agar dalam proses pengembangan perangkat lunaknya lebih matang, atau dapat dikatakan lebih baik daripada proses pengambangan perangkat lunak sebelumnya. Konsep CMM didasarkan pada kepercayaan bahwa penggunaan perangkat lunak baru tidak dengan sendirinya diikuti hasil yang mampu meningkatkan produktifitas dan keuntungan organisasi atau perusahaan, karena yang menjadi permasalahan sebenarnya adalah tanda tanya besar mengenai.... "bagaimana kita me-manage proses perangkat lunak ?".

Selanjutnya, saya akan membahas mengenai peringkat (level) CMM yang digunakan untuk mengukur tingkat kematangan proses pengambangan perangkat lunak suatu organisasi atau perusahaan. Terdapat lima peringkat dalam CMM, yaitu sebagai berikut:


The Five Levels of Software Process Maturity

Setiap level mencerminkan maturity suatu organisasi atau perusahaan dalam proses pengembangan perangkat lunak. Semakin tinggi peringkat kematangannya, maka semakin optimal organisasi tersebut dalam melakukan proses pengambangan perangkat lunaknya, kualitas perangkat lunak yang dihasilkannya pun semakin tinggi, dan resiko kegagalannya pun semakin kecil. Berikut ini gambar yang mengilustrasikan hubungan antara peringkat-peringkat dalam CMM dengan produktifitas, kualitas, dan resiko.


 
CMM levels related to Productivity, Quality, and Risk


Pada gambar di atas diilustrasikan peringkat-peringkat dalam CMM dan hubungannya dengan produktifitas, kualitas, serta resiko. Selanjutnya, saya akan membahas deskripsi dari masing-masing peringkat di dalam CMM, yaitu:
  • Level 1: disebut dengan istilah Initial. Pada level ini segala sesuatu dalam proses pengambangan perangkat lunak masih dilakukan secara add-hock dan semrawut. Kadangkala perangkat lunak yang dihasilkannya dapat dikatakan sukses, akan tetapi kemungkinan besar sering mengalami kegagalan dan keterlambatan deadline.
  • Level 2: disebut dengan istilah Repeatable. Pada level ini proses pengembangan perangkat lunak telah terdefinisi, terdokumentasi, telah dipraktekkan, dan penggunanya telah dilatih sedemikian rupa. Namun, beberapa tim lain dalam organisasi tersebut belum menggunakan proses yang serupa / belum terstandarisasi dengan baik.
  • Level 3: disebut dengan istilah Defined. Pada level ini proses pengambangan perangkat lunak telah konsisten dan terdifinisi, sehingga semua pihak di dalam suatu organisasi dapat memahami dan menerapkannya.
  • Level 4: disebut dengan istilah Managed. Pada level ini proses pengambangan perangkat lunak terukur secara kuantitatif, dan semua proses selalu dievaluasi berdasarkan hasil analisis data yang dikumpulkan.
  • Level 5: disebut dengan istilah Optimazing. Pada level ini proses pengambangan perangkat lunak secara terus menerus dilakukan optimalisasi. Organisasi akan selalu mempelajari pengalaman dan informasi tentang teknologi baru. Organisasi juga dapat merubah prosedur suatu proses apabila ditemukan prosedur baru yang dianggap lebih baik dari prosedur lama. 
Untuk setiap tingkat maturitas organisasi, terdapat suatu cluster yang membagi aktifitas-aktifitas dalam CMM yang disebut dengan Key Process Area (KPA). KPA telah disiapkan oleh Software Engineering Institute (SEI) yang berfungsi sebagai acuan untuk dapat naik ke peringkat berikutnya. SEI juga telah membuat kuesioner-kuesioner untuk melakukan assesement pada tingkat mana suatu organisasi berada.

Berikut ini tabel yang mendeskripsikan tetang KPA dari setiap level CMM.


 
Pada tabel di atas didefinisikan KPA yang berupa aktifitas-aktifitas yang harus dilakukan agar suatu organisasi berada di level tertentu. Suatu organisasi dapat meningkatkan peringkat CMM nya ke tingkat yang lebih tinggi apabila telah dilakukan assesement oleh accessor. Accessor tersebut akan menilai dan memutuskan, apakah suatu organisasi benar-benar layak berada di suatu level tertentu.
Berikut ini gambar yang mengilustrasikan ekspektasi kehandalan (performance) proyek dalam tingkat-tingkat level CMM.

 
Project Performance Expectation 
Dari gambar di atas dapat disimpulkan, semakin tinggi level CMM suatu organisasi, maka tingkat performa proses pengambangan perangkat lunak dan tingkat kemungkinan berhasilnya semakin meningkat. Sehingga secara otomatis biaya, jadwal, dan kualitas yang dihasilkan sesuai dengan kebutuhan pengguna.
Sementara sampai disini pembahasan pada blog ini tentang CMM... mungkin pada tulisan lain akan dilanjutkan....

2 komentar:

  1. Tulisan yang bagus pak..
    Dulu aku juga sempet nulis http://mazirwan.blogspot.com/2008/03/memahami-konsep-cmm-1.html

    Tapi tulisan ini lebih lengkap.

    BalasHapus