Mengukur Cyclomatic Complexity Dengan JavaNCSS


Umumnya, kata “kompleks” dan “rumit” memiliki konotasi negatif bagi software developer.  Kebanyakan developer tidak suka bila hasil karyanya dibilang rumit.  Tapi pertanyaannya adalah apa itu definisi “rumit“?  Seandainya seorang programmer pemula melihat hasil rancangan game object oriented dengan segitu banyaknya class, ia akan berkata: “pheww.. rumit! saya bisa letakkan semua itu dalam 1 function.”  Tapi saat ditunjukkan bagaimana membuat game menjadi 2 layar dengan hanya tinggal membuat instance class baru dan kedua layar otomatis bekerja secara terpisah, ia akan terpukau!   Einsten punya pemikiran yang bagus mengenai kerumitan: “everything must be made as simple as possible, but not one bit simpler” (segala sesuatunya harus sesederhana mungkin, tetapi tidak  dikurangi sedikitpun!) Yup, kadang-kadang sesuatu dianggap rumit karena si pembaca tidak ingin memahaminya, padahal apa yang dilihatnya adalah solusi paling efektif.  Jadi, apakah “kompleks” dan “rumit” adalah masalah subjektif yang tidak bisa diperdebatkan?

Cyclomatic complexity adalah sebuah software metric yang dikembangkan oleh McCabe untuk mengukur kerumitan sebuah software.  Informasi lebih lanjut dapat dibaca di artikel Wikipedia http://en.wikipedia.org/wiki/Cyclomatic_complexity.  Semakin tidak linear sebuah kode program (misalnya, akibat pemakaian if dan for), maka semakin besar nilai cyclomatic complexity (M).   Nilai M=1 adalah nilai paling kecil dimana kode program bersifat linear.  McCabe menyarankan bila nilai M>10, maka modul tersebut sebaiknya dipecah menjadi modul yang lebih kecil.   Tetapi ada juga yang memakai patokan M>15 sebagai definisi “rumit“.

Satu hal yang pasti:  cyclomatic complexity, sama seperti software metric lainnya, tidak boleh dijadikan patokan ‘mati’ (pengukuran kuantitatif) tanpa memperhatikan hal lain (misalnya, pengukuran kualitatif)!  Walaupun mungkin ada kolerasi nilai cyclomatic complexity yang tinggi dengan jumlah bug di software.

Salah satu tool yang dapat saya pakai untuk mengukur nilai cyclomatic complexity adalah JavaNCSS.  NCSS disini adalah singkatan dari Non Commenting Source Statements.  Untuk men-download JavaNCSS, saya dapat men-klik link berikut ini: http://www.kclee.de/clemens/java/javancss/javancss-32.53.zip.

Setelah men-extract ke sebuah folder, saya dapat menjalankan JavaNCSS melalui Command Prompt dengan masuk ke folder bin dan memanggil javancss.bat.  Tapi sepertinya ada sedikit masalah karena batch file tersebut tidak terima bila folder lokasi instalasi Java mengandung spasi; padahal umumnya Java di-install di “Program Files” –> mengandung spasi.  Oleh sebab itu, saya perlu mengubah salah satu baris di javancss.bat, yaitu:

%JAVA_HOME%\bin\java -classpath %CLASSPATH% javancss.Main %1 %2 %3 %4 %5 %6 %7 %8 %9

Menjadi seperti:

"%JAVA_HOME%\bin\java" -classpath %CLASSPATH% javancss.Main %1 %2 %3 %4 %5 %6 %7 %8 %9

Setelah ini, saya bisa menjalankan JavaNCSS dengan menyertakan lokasi folder yang berisi kode program Java yang akan diukur, misalnya seperti berikut ini:

C:\Programs\javancss-32.53\bin>javancss -gui "C:\projects\namaproyek\src\main\java"

Untuk melihat nilai cyclomatic complexity, saya membuka tab methods.  Kolom CCN menunjukkan nilai cyclomatic complexity, seperti yang terlihat pada gambar berikut ini:

Hasil Pengukuran Cyclomatic Complexity

Hasil Pengukuran Cyclomatic Complexity

Saya juga bisa melihat nilai rata-rata cyclomatic complexity di baris paling bawah di baris dengan tulisan Average Function CCN.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: