Pemodelan
Capability Maturity Model
Integration
(CMMI) Representasi
Continuous
Untuk Memperoleh Fleksibilitas dalam Proses Pengembangan Perangkat
Lunak
Muhammad Danial Masruroini
Jurusan Teknik Elektro, Universitas Negeri Malang Malang, Indonesia
Abstract—Penentuan software process models dalam suatu pengembangan perangkat lunak merupakan hal yang paling pertama dilakukan. Karena pemodelan proses adalah kunci keberhasilan utama dalam mengerjakan sebuah pengembangan perangkat lunak. Beberapa pengembang yang mengalami kegagalan dalam melakukan pengembangan perangkat lunak disebabkan mereka tidak menerapkan software process models dalam proses pengembangannya. Terdapat beberapa macam pemodelan proses dalam systems development life cycle, dan pemodelan ini akan memberikan pengaruh saat dilaksanakannya proses pengembangan suatu perangkat lunak. Capability maturity model integration (CMMI) merupakan salah satu model yang dapat digunakan oleh pengembang untuk memberikan hasil perangkat lunak yang berkualitas.
Keywords—Systems Development Life Cycle , Software Process Models, Capability Maturity Model Integration (CMMI).
I. LATAR BELAKANG
Software process sering disebut dengan softwa re development process atau software life cycle merupakan rangkaian aktivitas yang tujuan akhirnya adalah mengembangkan atau mengubah suatu perangkat lunak. Proses perangkat lunak juga bisa diartikan sebagai serangkaian aktivitas kerja, kegiatan, atau tugas yang dilakukan ketika pengembang sedang mengembangkan sebuah program perangkat lunak yang terdapat di dalam sebuah framework atau model yang saling berkaitan diantara rangkaian proses satu dengan proses yang lain. Pada umumnya aktivitas ini meliputi: (1) specification, (2) design and implementation, (3) validation, dan (4) evolution.
Untuk merepresentasikan deskripsi (abstrak) suatu proses dari beberapa perspektif tertentu pastilah diperlukan sebuah pemodelan proses perangkat lunak. Penentuan software process models dalam suatu pengembangan perangkat lunak merupakan hal yang paling pertama dilakukan. Karena pemodelan proses ini adalah kunci keberhasilan utama dalam mengerjakan sebuah pengembangan perangkat lunak. Di dalam systems development life cycle (SDLC) dikenal beberapa macam pemodelan proses. Perbedaan pemodelan proses yang digunakan terdapat dalam rangkaian aktivitas-aktivitas setiap model.
Beberapa pengembang perangkat lunak yang mengalami kegagalan dalam melakukan pengembangan perangkat lunak disebabkan mereka tidak menerapkan software process models yang sesuai dengan jenis program yang dikembangkan.
Terdapat beberapa macam pemodelan proses dalam systems development life cycle, dan pemodelan ini akan memberikan pengaruh saat dilaksanakannya proses pengembangan suatu perangkat lunak. Capability maturity model integration (CMMI) merupakan salah satu model yang lebih fleksibel dan dapat digunakan oleh para pengembang untuk memberikan hasil perangkat lunak yang berkualitas.
II. KAJIAN LITERATUR
A. Systems Development Life Cycle
Systems development life cycle atau lebih umum dikenal dengan istilah SDLC adalah sebuah cara yang dipakai untuk membangun atau mengembangkan suatu perangkat lunak [1]. Cara-cara pada SDLC ini tentu saja terdiri dari beberapa tahap pengerjaan mulai dari tahap perencanaan, tahap analisis kebutuhan, tahap perancangan, dan tahap penerapan sehingga akhirnya bisa menjadi satu-kesatuan sistem yang utuh. Konsep dari SDLC inilah yang memicu munculnya berbagai jenis pemodelan pengembangan perangkat lunak untuk menyusun kerangka kerja dalam melaksanakan kegiatan pengembangan perangkat lunak.
Systems development life cycle sebenarnya bukan hanya sekedar konsep teoretis. SDLC digunakan hampir atau bahkan setiap hari di bidang teknologi informasi di seluruh dunia. Pemanfaatan SDLC yang sesuai akan mampu memberikan hasil sistem perangkat lunak yang berkualitas. Penggunaan SDLC akan lebih optimal jika dilengkapi dengan berbagai teknik pengembangan sistem [2].
adalah ruang lingkup rancangan kerja untuk beberapa unsur dalam process area yang harus dibangun agar dalam pengembangan perangkat lunak tidak terjadi missconception antara organisasi pengembang dengan para stakeholders. Process area ini akan menjadi dasar bagi management control proyek pengembangan perangkat lunak serta membuat konteks yang mana metode-metode teknis diterapkan, membangun produk usaha (model, dokumen, data, laporan, dan lain-lain), membangun pondasi, menjamin kualitas, dan mengatur perubahan secara rapi [3].
Beberapa metode yang digunakan dalam pembangunan sebuah perangkat lunak memberikan teknis khusus ketika pelaksanaannya. Metode-metode itu terkait dengan aktivitas-aktivitas yang luas meliputi analisis kebutuhan, konstruksi program, desain, pengujian, dan pemeliharaan atau perawatan. Pengembangan perangkat lunak mengandalkan pada serangkaian prinsip-prinsip dasar yang mengatur setiap proses area teknologi dan menyangkut aktivitas-aktivitas pemodelan serta teknik deskriptif yang lainnya. Untuk mengembangkan sebuah perangkat lunak secara memadai, setiap aktivitas proses-proses harus dirancang (dimodelkan) terlebih dahulu.
B. Software Process Models
Software process adalah rangkaian dari suatu aktivitas yang berhubungan, yang tujuan akhirnya adalah membangun atau mengembangkan perangkat lunak. Aktivitas ini meliputi lankah-langkah pengembangan perangkat lunak mulai dari awal sampai dengan implementasi sistemnya. Terdapat empat tahap yang mendasari dalam dilaksakannya proses pengembangan perangkat lunak,yaitu: (1) software specifications, (2) software design and implementation, (3) software validation, dan (4) software evolution. Tahap-tahap tersebut merupakan garis besar dari suatu proses pengembangan perangkat lunak. Namun, sebenarnya terdapat sub-sub aktivitas dari setiap tahapan tersebut yang membuatnya lebih kompleks. Menurut Sommerville (2011) tidak ada tahapan proses pengembangan perangkat lunak yang benar-benar ideal dan banyak organisasi pengembang mempunyai model prosesnya sendiri dalam melakukan pengembangan perangkat lunak. Meskipun begitu, harus tetap ada metode pemodelan yang dijadikan dasar atau acuan agar pelaksanaan pengembangan perangkat lunak bisa tercapai dengan sempurna.
Software process model atau pemodelan proses perangkat lunak merupakan representasi dari software process yang sudah disederhankan. Setiap pemodelan proses adalah representasi yang berasal dari perspektif bagian tahapan proses dan memberikan penjabaran tentang tahapan proses tersebut. Process models atau terkadang disebut sebagai “process paradigms” tidak memberikan deskripsi secara lengkap proses pengembangan perangkat lunak, akan cenderung merupakan abstrak dari proses pengembangan [4].
Pada umumnya usaha yang berkaitan dengan pengembangan perangkat lunak dapat digolongkan ke dalam tiga fase tanpa memperdulikan jenis aplikasi dan tingkat kerumitan dari perangkat lunak yang dikembangkan [5].
1) Fase Definisi (Definition Phase)
Fase pendefinisian ini memfokuskan pada apa yang dikembangkan oleh organisasi pengembang perangkat lunak. Organisasi harus melakukan identifikasi pada informasi-informasi yang akan diproses, fungsi dan aktivitas-aktivitas yang dibutuhkan, sistem perangkat lunak yang diharapkan, antarmuka yang akan dibuat, ruang lingkup rancangan, dan kriteria validasi yang dibutuhkan. Kebutuhan atau requirememt merupakan kunci utama dari sistem perangkat lunak yang didefinisikan untuk mendapatkan hasil produk yang sukses. Beberapa metode yang diterapkan selema fase definisi ini berbeda-beda tergantung dari pemilihan model proses pengembangan perangkat lunak (atau bahkan kombinasi pemodelan) yang diterapkan. Terdapat tiga aktivitas utama yang berada dalam tingkatan yang sama, yaitu:
Sistem atau rekayasa informasi dari perangkat lunak yang dikembangkan
Perencanaan proyek pengembangan perangkat lunak, dan
Analisis kebutuhan perangkat lunak
2) Fase Pengembangan (Development Phase)
Pada fase pengembangan memfokuskan pada bagaimana proses pengembangan perangkat lunak dijalankan. Seorang pengembang harus mendefinisikan bagaimana informasi yang didapat dari stakeholders dikonstruksi, bagaimana fungsi atau fitur diaplikasikan sebagai suatu arsitektur sistem perangkat lunak, bagaimana rincian alur sistem diimplementasikan, bagaimana antarmuka dibangun, bagaimana seorang pengembang akan menerjemahkan rancangan ke dalam bahasa program, serta bagaimana melakukan pengujian pada produk perangkat lunak.
Beberapa metode yang diterapkan selama masa pengembangan perangkat lunak akan bermacam-macam jenisnya, namun terdapat tiga aktivitas teknis yang khusus dan harus selalu ada, yaitu:
Rancangan sistem perangkat lunak Pembuatan source code program, dan Pengujian sistem perangkat lunak
3) Fase Pemeliharaan (Maintenance Phase)
dalam proses pengembangan, serta perubahan yang berkaitan dengan perkembangan yang dikarenakan permintaan stakeholders yang berubah. Fase ini mengaplikasikan lagi tahapan-tahapan yang terdapat pada fase definisi dan dase pengembangan, tetapi semua perubahan tetap bergantung pada konteks perangkat lunak yang dikembangkan. Terdapat empat macam perubahan yang biasa terjadi saat proses pengembangan perangkat lunak, yaitu:
Koreksi
Meskipun sudah ada jaminan kualitas sistem perangkat lunak yang baik, tetapi pengguna akan tetap saja menemukan cacat (bug). Pemeliaraan bersifat koreksi (corrective maintenance) akan melakukan beberapa perubahan atau membenahi cacat/rusak (bug) agar sistem bisa sempurna. Adaptasi
Seiring berjalannya waktu komponen-komponen pada komputer (seperti CPU, sistem operasi, dan lain-lain) pasti mengalami perubahan. Pemeliharaan bersifat adaptasi (addaptive maintenance) akan menghasilkan perubahan pada kebutuhan fungsional sistem perangkat lunak.
Perkembangan (enhancement)
Pengguna perangkat lunak bisa mengenali fungsi-fungsi tambahan yang memberikan keuntungan ketika mereka menggunakan sebuah perangkat lunak. Pemeliharaan bersifat sempurna (perfective maintenance) akan memperluas ruang lingkup perangkat lunak dengan menambah kebutuhan fungsionalnya.
Pencegahan
Seiring berjalannya waktu juga keadaan suatu perangkat lunak pasti akan menurun, oleh sebab itu pemeliharaan pencegahan (preventive maintenance) harus dilakukan sebagai upaya untuk melayani kebutuhan dari para pengguna perangkat lunak. Pada dasarnya pemeliharaan ini melakukan beberapa perubahan terhadap program komputer sehingga mempermudah dalam proses pengoreksian, penyesuaian, dan pengembangan.
Fase-fase dan langkah yang berkaitan harus diimbangi dengan beberapa aktivitas pelindung (umbrella activities). Aktivitas-aktivitas khusus di dalam ketegori ini meliputi beberapa hal, yaitu:
Pengontrolan dan pelacakan proyek perangkat lunak Peninjauan ulang teknis formal
Penjaminan kualitas perangkat lunak Penghasilan dan penyiapan berkas-berkas Manajemen reusabilitas, dan
Manajemen resiko
C. Capability Mature Model Integration
Capability mature model dapat diartikan sebagai suatu penyederhanan yang representatif terhadap keadaan sebenarnya, yang berfungsi untuk mengukur batas kematangan (mature) hasil proses ketika sebuah organisasi pengembang software menyajikan, membuat, atau mengembangkan perangkat lunak [6].
Kegiatan utama dari capability mature model ini adalah melakukan pengukuran tingkat kematangan. Mengukur bisa diartikan sebagai sebuah kegiatan untuk melakukan pemetaan suatu kondisi ke dalam sebuah skala atau ukuran. Nilai-nilai yang diperhatikan ketika melakukan pengukuran capability mature model ini ada beberapa poin sebagai berikut: (1) parameter yang akan diukur, (2) metode pengukurannya, (3) skala penilian yang dijadikan stadar, dan (4) pandangan teoretisnya oleh para ahli.
Ciri-ciri yang paling banyak diketaui mengenai maturity model adalah proses pengembangannya. Ketika suatu ornganisasi sedang melakukan pengembangan software, maka proses yang dilakukan akan disederhanakan dan dideskripsikan menjadi skala kematangan dengan satuan jumlah tertentu. Skala atau tingkatan kematangan itulah yang di dalamnya mengandung beberapa syarat khusus yang harus dipenuhi oleh organisasi. Tinkatan-tingkatan yang ada disusun secara runtut, mulai dari tingkat awal sampai pada tingkat akhir saat sudah menjadi sebuah sistem yang diimplementasikan. Dan selama pengembangan berlangsung, tahapan proses bergerak maju mulai dari tingkatan satu menuju tingkatan berikutnya dengan tidak boleh melompati salah satunya, semua proses dilakukan tahap demi tahap secara berurutan.
Evolusi perubahan dari CMM menuju CMMI berbanding lurus dengan perubahan pada industri pengembangan perangkat lunak dan juga kebutuhan dari para penggunanya. Capability mature model integration (CMMI) merupakan pemodelan yang dapat digunakan oleh organisasi pengembang perangkat lunak untuk meningkatkan kualitas produk atau layanan mereka [7]. CMMI adalah perwujudan panduan secara umum dan pemodelan melampaui disiplin-disiplin, memasukkan semua unsur siklus hidup (life cycle) proyek mulai dari konsep, pengembangan, penyampaian (delivery), dan pemeliharaan. CMMI menitikberatkan pada tujuan akhir dari pelaksanaan suatu proses pengembangan yang dilakukan oleh oranganisasi tersebut.
diorganisasikan dan direpresentasikan [8]. Process area yang dimaksud adalah hal-hal yang menjadi tujuan akhir difokuskan untuk diselesaikan. Jenis pemodelan ini membantu organisasi pengembang software dalam menentukan strategi proses pengembangan perangkat lunak. Model ini akan memfasilitasi penentuan kemampuan untuk setiap tahapan proses dan mengidentifikasi masalah-masalah kritis yang harus sesegera mungkin dibenahi.
Representasi Staged
Pada repesentasi staged ini, sebuah organisasi pengembang perangkat lunak melewati beberapa macam tahapan atau tingkatan dalam upayanya mencapai tingkat kematangan (maturity) yang tinggi. Tahapan atau tingkatan yang dicapai oleh organisasi tersebut harus bersifat kumulatif, yang artinya setiap tahapan atau tingakatan di atas harus bisa memenuhi tujuan-tujuan (golas) pada tahapan di bawahnya.
Tingkatan (level) harus benar-benar dipenuhi oleh setiap organisasi pengembang secara bertahap. Tingkatan (level) ini terbagi menjadi 5 tahapan, yaitu:
1) Maturity level 1: initial 2) Maturity level 2: managed 3) Maturity level 3: defined
4) Maturity level 4: quantitatiively managed 5) Maturity level 5: optimizing
Pada tingkatan initial, suatu organisasi pengembang perangkat lunak disimulasikan sebagai ad hoc dan kondisinya kacau. Organisasi perngembang perangkat lunak yang cenderung tidak mempunyai lingkungan yang tidak stabil untuk menunjang berjalannya proses pengembangan perankat lunak. Oleh sebab itu, tingkat keberhasilan yang dihasilkan oleh organisasi pengembang mempunyai ketergantungan terhadap kemampuan dan kerja keras dari satu atau beberapa orang yang terdapat di dalamnya. Pada tingkatan ini, meskipun nanti suatu organisasi pengembang bisa memberikan hasil akhir sebuah produk atau jasa sesuai tujuan, namun tahap perencanaan yang sudah dilakukan sebelumnya cenderung tidak bisa memenuhi harapan. Keberhasilan membuat produk/sistem perangkat lunak tidak memiliki sifat yang stabil.
Pada tingkat managed, terdapat sebuah kesepakatan dasar untuk prosedur berdasarkan kebijakan yang ada terhadap perencanaan aktivitas. Oleh sebab itu, produk atau jasa yang dibuat dapat dijaga kualitasnya (quality control). Beberapa usaha yang dilakukan dalam menjaga kualitas produk atau jasa diantaranya adalah melakukan perencanaan aktivitas, pembagian tugas-tugas, memantau antara perencanaan yang dilakukan dengan pelaksanaan di
lapangan, melakukan tindakan jika terdapat perubahan terhadap perencanaan, serta melakukan milestone atau pemantauan produk atau jasa pada suatu titik tertentu pada rangkaian aktivitas. Selain terdapat standardisasi prosedur dalam pengembangan sebuah produk atau jasa, terdapat komitmen yang terbentuk di antara para stakeholder. Dalam usaha mencapai tingkat managed, terdapat tujuh process area yang harus terpenuhi ketika melakukan implementasi. Tujuh process area dan penjelasannya pada tingkatan managed dapat dilihat pada tabel berikut [9].
Tabel 1. Penjelasan Process Area pada CMMI di Tingkatan Managed (Chrissis, 2011: 267-508)
Process area Specific Goals
Perencanaan
Supplier Memperoleh kesepakatan dengan supplier
Semua tingkatan kematangan (maturity level) tersebut menjelaskan beberapa tahapan yang harus dipenuhi oleh orgnisasi pengembang perangkat lunak untuk mendapatkan suatu model proses pengembangan perangkat lunak yang lebih efektif dan efisien. Tingkatan tersebut juga menjelaskan mengenai evolusi proses-proses yang ada, dari keadaan yang kurang efektif menjadi keadaan yang sangat terorganisasi dan teroptimasi.
penerapannya, hal ini dinamakan appraisal. Metode standar yang digunakan dalam melakukan proses appraisal, yang dikeluarkan oleh software engineering institute (SEI) adalah Standar CMMI Appraisal Method for Process Improvement [8]. SEI menggolongkan metode appraisal ini ke dalam tiga tingkatan, masing-masing tingkatan dengan kelengkapan, ukuran proyek dan kebutuhan perangkat lunak yang berbeda-beda. Secara umum hasil dari ketiga kelas tersebut tidak sama tingkat kehandalannya dan kebenarannya, tetapi untuk beberapa tujuan tertentu tingkat kehandalannya bisa lebih/kurang baik tergantung proses evaluasi.
Representasi Continuous
Konsep CMMI for development juga memunculkan model pendekatan atau representasi yang memberikan deskripsi proses pengembengan perangkat lunak dan membaginya menjadi dua dimensi, yaitu process area dan capability level. Pendekatan ini dinamakan representasi continuous [10].
Development process CMMI memfokuskan pada cara yang digunakan oleh suatu pendekatan dalam menanggapi masalah yang terjadi dalam proses pengembangan perangkat lunak dan mengetahui peluang bisnis yang ada diantara organisasi pengembang dengan stakeholder [7]. Jika representasi staged menggunakan maturity level untuk melakukan pendekatan karakteristik pada keadaan proses pengembangan perangkat lunak oleh organisasi secara keseluruhan dan juga fokus pada melakukan peningkatan proses secara sistematis dan terstruktur. Sedangkan representasi continuous menggunakan capcbility level untuk memperlihatkan rincian karakteristik pada keadaan proses kerja pengembangan perangkat lunak oleh organisasi bukan secara keseluruhan, melainkan melalui process area dalam organisasi pengembang yang diharapkan bisa berkembang kepada sektor lain, tetapi tetap sesuai dengan tujuan awal organisasi.
Gambar 1. Perwujudan Representasi Continuous (CMMI Product Team, 2010)
Pada gambar tersebut bisa dipahami bahwa penekatan continuous ini berfokus pada tujuan-tujuan umum dari sebuah proses pengembangan perangkat lunak. Dari setiap tujuan tersebut diperlihatkan karakteristiknya secara terperinci melalui capability level.
Suatu organisasi pengembang harus memenuhi semua tujuan-tujuan umum (generic goals) dalam process area yang menjadi sasaran pengembangan untuk bisa mencapai level yang diinginkan. Capability level memberikan rincian karakteristik yang memberikan panduan untuk meningkatkan proses untuk mencapai tujuan tertentu. Pendekatan continuos ini akan memberikan gambaran secara terperinci mengenai proses dalam pengembangan perangkat lunak yang dilakukan oleh organisasi pengembang. Hal ini tentu saja akan memberikan peluang bagi organisasi untuk melakukan evaluasi terhadap process area secara individual, sehingga organisasi mampu mengidentifikasi dan memfokuskan pada titik masalah yang terdapat pada proses pengembangan perangkat lunak, serta mengukur status peningkatan kematangan proses. Capability level digunakan untuk melakukan pengukuran peningkatan dari proses yang kacau (tidak berjalan dengan baik) hingga proses yang sudah teroptimasi pada setiap process area. Sebagai tambahan, capability level ini tidak bisa dilewati, satu komponen dibuat di atas komponen yang lainnya (bertingkat). Menggunakan pendekatan continuous membutuhkan pemahaman yang baik pada keterkaitan yang sifatnya menggantung pada tiap-tiap process area, karena level tertentu dalam process area harus benar-benar terpenuhi sebelum mencapai capability level yang berikutnya.
Representasi continuous memberikan pandangan pada tingkat individual proses pengembangan secara mendetil. Representasi ini juga secara efisien meningkatkan kinerja proses pengembangan perangkat lunak dan memastikan peningkatan yang kuat, serta memberikan pondasi yang utuh bagi peningkatan individual proses pengembangan perangkat lunak pada organisasi pengembang untuk mencapai tingkat kematangan (maturity level) berikutnya.
III. KESIMPULAN
Konsep CMMI bertujuan untuk dapat mengembangkan sebuah perangkat lunak secara tepat, dan meningkatkan kematangan organisasi pengembang perangkat lunak dengan memberikan pedoman-pedoman (guidances) mengenai peningkatan proses pengembangan perangkat lunak.
CMMI memiliki dua model pendekatan yaitu staged dan continuous. Pendekatan continuous dalam CMMI mendeskripsikan proses ke dalam dua hal, yaitu process area dan capability level. Pendekatan ini memberikan fleksibilitas yang tinggi yang berguna dalam meningkatkan kematangan proses pengembangan perangkat lunak.
DAFTAR RUJUKAN
[1] Ian Sommerville. (2011). Software Engineering (Ninth Edition). Software Engineering (Ninth Edition).
[2] Dennis, A., Wixom, B. H., & Tegarden, D. (2015). Systems analysis and design: An object-oriented approach with UML.
[3] Scroggins, R. (2014). SDLC and Development Methodologies. Global Journal of Computer Science and Technology: C Software & Data Engineering, 14(7), 0–2. [4] Pressman, R. S. (2004). Software Engineering. A Brief
History of Computing. https://doi.org/10.1111/j.1365-2362.2005.01463.x
[5] Rusli, M., Ziveria, M., Informasi, S., Teknologi, I., Rusli, M., & Ziveria, M. (2016). Membandingkan Empat Paradigma Rekayasa Perangkat Lunak, 2.
[6] April, A., Huffman Hayes, J., Abran, A., & Dumke, R. (2005). Software Maintenance Maturity Model (SM mm ): the software maintenance process model: Research Articles. Journal of Software Maintenance and Evolution: Research and Practice, 17(3), 197–223. https://doi.org/10.1002/smr.v17:3
[7] Ii, B. A. B., Syariah, A. B., & Syariah, P. B. (2005). Landasan Teori, 8–43.
[8] Widodo, W. (2016). EVALUASI PROSES PENGEMBANGAN PERANGKAT LUNAK PADA VIRTUAL TEAM DEVELOPMENT MENGGUNAKAN CMMI Versi 1.3. Jurnal Informatika, 10(1), 1140–1148. [9] Skripsi, P. M., & Praktik, K. (n.d.). Implementasi cmmi
pada sistem informasi pengelolaan matakuliah skripsi, kerja praktik, dan pemrograman terintegrasi terapan di program studi sistem informasi ukdw, (CMMI).