Selasa, 01 Mei 2012

CMMI dan Agile : Lawan atau Kawan??


Pendahuluan
Semakin banyaknya organisasi yang bergantung pada model proses kematangan atau biasa disebut Capability Maturity Model Integration (CMMI) yang digunakan untuk menilai dan meningkatkan proses area mereka sendiri, karena semakin jelas bahwa kegagalan proyek yang paling umum biasanya disebabkan oleh tidak konsisten-nya suatu proses.  Maka sudah selayaknya bila di suatu organisasi yang besar akan selalu ada kebijakan baru yang mengharuskan setiap bagian organisasi dapat mencapai tingkat kematangan tertentu.
Namun pada penerapannya sifat CMMI yang birokratis (koordinasi yang banyak melalui dokumentasi & tahapan yang kaku) mengakibatkan perkembangan yang lambat. Sehingga di saat yang bersamaan, metode Agile terus mengalami peningkatan di karenakan hal tersebut.
Metode Agile atau biasa disebut Agile software development method, memberikan keuntungan dan kepuasan kepada customer untuk memberikan hasil yang berkualitas dengan mempercepat proses saat pengembangannya. Disamping itu, perusahaan juga memerlukan usaha yang besar untuk meningkatkan proses produksi mereka dan lebih menyadari bahwa pendekatan agile dapat membantu jalannya proses tersebut. Dilain pihak, penerapan agile dapat dikritisi karena lemahnya disiplin dan hanya cocok untuk  aplikasi kecil atau aplikasi yang tidak begitu besar .
Di karenakan factor tersebut banyak organisasi mengandalkan CMMI sebagai indikator proses kematangan (maturity), sedangkan seharusnya hal itu diterjemahkan ke dalam kualitas produk.  Sehinga disisi lain metodologi Agile seperti xp dan scrum menjadi lebih menonjol. 
Maka tinjauan harus dilakukan apakah metode Agile dapat disesuaikan untuk mencapai CMMI level. Penulisan ini dimaksudkan sebagai tahapan awal dalam upaya mengungkapkan mungkinkah metode agile dan CMMI dapat di pergunakan bersama-sama.



CMMI
CMMI adalah sebuah model/ konsep / framework yang menyediakan kumpulan ‘best practices’ untuk meningkatkan produktifitas, penyesuaian cost dan kepuasaan stakeholder.
Level 2 Proses area focus pada perubahan dan mengelola proyek. Level 3 berfokus pada ketrampilan teknik, pengelolaan berkembang dan organisai mulai memahami organisainnya sendiri dengan lebih baik. Level 4 dan 5 berfokus pada pengunaan statistic untuk meningkatkan kinerja organisai, dengan statistic dapat mengendalikan proses yang dipilih dan mengurangi variasi.

Metode Agile
Metode Agile hadir sebagai jawaban terhadap tantangan pengembangan perangkat lunak modern yang dalam banyak kasus tidak dapat diatasi dengan proses ‘tradisional’. Metode ini memungkinkan akan adanya kreativitas dan reaksi cepat dalam menyikapi perubahan dengan menekankan partisipasi stakeholder serta terjadinya rilis yang terus menerus.
Karakteristik metode Agile yang rumit akan didefinisikan ke dalam dua belas prinsip - prinsip :
  • Prioritas utama metode ini adalah untuk memuaskan Stakeholder dengan cara pengiriman awal dan terus berkesinambungan. 
  • Menerima permintaan perubahan (change request) bahkan ketika perangkat lunak sedang di bangun.
  • Memberikan laporan perkembangan perangkat lunak ( setiap 2 sampai dengan 3 minggu)
  • Pemakai dan developers harus bekerja sama setiap hari sepanjang proyek berlangsung.
  • Komunikasi tatap muka, adalah metode yang paling efisien dan efektif untuk meyampaikan informasi ke dalam tim. 
  • Perangkat lunak yang di gunakan dalam berkerja merupakan factor kemajuan. 
  • Agile proses mempromosikan pembangunan secara berkelanjutan.   
  • Memperhatian secara terus-menerus akan keunggulan teknis dan desain yang baik sehingga dapat meningkatkan kelincahan. 
  •  Kesederhanaan.
  •  Arsitektur terbaik, persyaratan, dan desain muncul dari dalam tim yang mengorganisir itu sendiri.
  •  Pada interval reguler, tim mencerminkan tentang cara untuk menjadi lebih efektif dan menyesuaikan perilaku yang sesuai.          

Interaksi Antara Metode Agile dan Process Area

Maturity Level
Proses Area
Interaksi
Keterangan

5
Optimizing
Organization Innovation and Deployement
Konflik
Proses perbaikan dan adaptasi yang dibuat oleh Agile hanya sampai pada pembuatan proyek dan tidak didokumentasikan, sehingga tidak dapat disebarkan ke seluruh organisasi.

Casual Analysis and Resolution
Tidak Ada Keterkaitan



4
Quantitatively Managed
Organisation Process Performance
Konflik
Agile fokus pada individual dari pada orientasi proses atau biasa di sebut dengan proses area.

Quantitative Project Management
Konflik
Proses area ini berfokus pada metode statistik oleh karena itu, proses area ini bertentangan dengan prinsip Agile.

3
Defined

Requirements Development
Saling Mendukung
Di dalam Agile pelanggan menetapkan diri mereka sendiri di dalam ‘user story’ dan turut serta dalam tugas-tugas. Rincian-rincian tugas dibicarakan dan didiskusikan langsung dengan pelanggan selama pengembangan.

Technical Solution
Saling Mendukung
Memilih produk komponen dilakukan pada awal proyek melalui prototype dan kemudian mengalami pengembangan berulang . Pada awalnya dengan desain yang sederhana dan terus di kembangkan dengan pengembangan berulang. Sedangkan coding akan di dokumentasikan.

Product Integration
Saling Mendukung
Dibangun secara berkesinambungan dan karena langkah-langkah integrasi dilakukan sangat sering, maka persiapan menyeluruh sangatlah penting.

Verification
Saling Mendukung
Peer review di lakukan konstan karena selalu menjadi bagian dari Agile.

Validation
Saling Mendukung
Pelanggan terus memvalidasi kerja yang dilakukan oleh tim. Hal tersebut sangat memungkinkan karena pelanggan ter integrasi di dalam tim. Selain itu pelanggan juga memvalidasi pengiriman pada akhir setiap iterasi. Hal tersebut akan berpengaruh akan persyaratan yang bertambah atau di ubah oleh pelanggan.

Peran serta yang besar oleh pelanggan akan meningkatkan kemungkinan bahwa produk ini akan cocok dengan lingkungan operasi yang di maksudkan.

Organizational Process Focus
Konflik
Daerah proses ini tidak ditangani oleh Agile karena berlaku untuk organisai sedangkan Agile hanya berlaku untuk proyek.

Pada metode Agile, penyesuaian sering dilakukan selama proyek. Sehingga perbaikan terbatas pada proyek dan tidak harus di dokumentasikan. Dari kondisi tersebut maka individu lah yang akan mendapatkan pengalaman. Masalah akan dating apabila individu tersebut keluar maupun pensiun. Konflik dapa ditangani dengan membentuk repository yang menyimpan praktek terbaik dari setiap proyek dan juga pertukaran pengalaman antar proyek.

Organizational Process Definition
Tidak Ada Keterkaitan


Organizational Training
Saling Mendukung
Pada Agile pelatihan dilakukan pada fase ekplorasi oleh karena itu sebuah proyek membutuhkan kemampuan pelatih di suatu organisasi. Pair programming dan pelatihan (coacing) juga di anggap sebagai pelatihan. Sama halnya seperti pada CMMI Training on the job, coacing dan belajar manual dari buku.
Integrated Project Management
Saling Mendukung
Agile memberikan kontribusi yang banyak dalam hal integrasi antar anggota proyek ( Pengembang, pelanggan, penguji dan manajemen) dan mempererat kerja sama antar anggota.

Risk Management
Saling Mendukung
Fleksibilitas yang diperoleh dengan menggunakan iterasi pendek adalah alat ampuh untuk mengurangi risiko.

Decision Analysis and Resolution
Konflik
Lebih mudah dengan menggunakan metode Agile dalam hal menganalisis keputusan dan resolusi perubahan karena kemampuannya akan adaptasi. Sedangkan pada CMMI terdapat langkah sistematik yang dapat dilakukan dalam membuat keputusan dan perubahan.

2
Managed

Requirements Management
Saling Mendukung
Pemahaman Pemenuhan permintaan diperoleh melalui integrasi pelanggan ke dalam tim dan komunikasi yang intensif dengan pelanggan.  Yang di butuhkan adalah Komitmen peserta Proyek beserta dengan persyaratan yang diperoleh dalam tahap perencanaan. Apa bila ada perubahan persyaratan maka dengan cepat ditukar dan dibicarakan.
Project Planning
Saling Mendukung
Perkiraan untuk rencana dan tugas telah ditetapkan namun tetap dapat di koreksi selama proyek berlangsung. Perkiraan pun terus berkembang dan meningkat karena iterasi yang pendek.

Rencana Proyek didirikan dengan system rilis yang terus berevolusi sepanjang proyek. Oleh karena itu rencana pada jangka panjang tetap kabur dan rencana jangka pendek akan di buat dengan rinci.

Komitmen yang diperoleh melalui keterliatan yang tinggi dan tanggung jawab seluruh anggota tim.

Project Monitoring and Control
Saling Mendukung
Informasi tentang kemajuan proyek dikumpulkan dan di ukur.  Komunikasi yang intensif antara anggota tim dan pelanggan dapat membantu tersampaikan nya informasi tersebut. Sistem yang ketat dan iterasi yang pendek serta komitmen yang rutin dapat membuat rencana lebih mudah untuk di panatau.

Isu yang menuntut tidakan korektif dikumpulkan dan dianalisis. Iterasi baru dapat memberikan kesempatan yang baik untuk melakukan penyesuaian.

Supplier Agreement Management
Tidak Ada Keterkaitan
Pada proses ini akan melibatkan pemasok dan dapat menjadi masalah untuk Agile jika menghalangi pengembangan iterasi. Hal tersebut menimbulkan masalah kritis jika komponen yang di pasok tidak tersedia pada saat itu.


Measurement and Analysis
Saling Mendukung
Tujuan dari pengukuran adalah sebagai control akan kemajuan. Data yang digunakan untuk mengukur diperoleh melaui komunikasi yang intensif di dalam tim.

Biasaya tim menggunakan grafik dinding namun data tersebut tidak dapat permanen di simpan. Seiring perkembangan banyak piranti sudah tersedia sehingga ngeukuran dan hasilnya dapat disimpan secara permanen tanpa perlu terlalu banyak usaha.

Process and Product Quality Assurance
Saling Mendukung
Pada Agile tidak menuntut akan adanya proses evaluasi dari proses namun metode ini diterapkan dengan adanya seorang pelatih yang akan memandu dalam mengunakan agile di dalam tim, sehingga dapat dilakukan dengan benar dan terkendali

Untuk masalah kualitas dapat dengan mudah dikomunikasikan di dalam tim.

Configuration Management
Saling Mendukung
Dalam menetapkan baseline dokumen, coding, desain, tes dan persyaratan merupakan item dari konfigurasi.

Konfigurasai sangat dianjurkan karena akan berkaitan dengan iterasai yang akan terus berkesinambungan. Dan biasanya akan di lakukan pada setiap akhir iterasi. Seperti mengecek kebenarannya, kelengkapannya dan kekonsistensiannya.



Kesimpulan

CMMI mengevaluasi sebuah organisasi secara keseluruhan dari proses perkembangannya. Sebaliknya, metode agile adalah kerangka kerja dari suatu proses pengembangan individu. Dengan demikian, konsep tidak berbanding lurus. Fokus mereka berbeda, tetapi tetap saja mereka memiliki saling keterkaitan. Dapat di simpulkan bahwa CMMI adalah sebuah metode untuk manajemen perangkat lunak sedangkan pendekatan metode agile untuk pengembangan perangkat lunak. Mereka tidak hanya dapat hidup berdampingan, tetapi mereka bahkan saling mendukung.
Memeriksa cakupan metode  agile dengan proses area dapat mengungkapkan akan  kekurangan di dalam pendekatannya dan dengan demikian akan ada potensi untuk perbaikannya. Namun, proses perbaikan dengan CMMI hanya dapat dilakukan sampai tingkat tertentu karena ada beberapa proses area yang bertentangan dengan prinsip agile.
Sebagian besar proses area dari level 2 dan beberapa pada level 3 dapat saling mendukung, tetapi proses area tingkat 4 dan 5 bertentangan yang pada akhirnya akan menimbulkan konflik. Hal ini akan melemahkan metode agile dan menghilangkan beberapa manfaatnya. Tidak hanya sampai di situ, tindakan seperti itu juga akan bertentangan dengan tujuan CMMI, yaitu meningkatkan proses area.
Jadi dapat ditarik kesimpulannya bahwa peningkatan dapat di lakukan dengan metode Agile dan yang terbaik adalah untuk berhenti di tingkat CMMI level 3.


 Sumber penulisan dan analisa :

CMMI: Improving Software and Systems Development Processes Using Capability Maturity Model Integration (CMMI-Dev)

Tidak ada komentar:

Posting Komentar