Archive for April, 2011

Metrik pengembangan perangkat lunak berorientasi objek

Pengembangan dan desain perangkat lunak berorientasi objek saat ini sangat populer. Perbedaan utama antara pemrograman terstruktur dengan berorientasi objek adalah pada pemrograman terstruktur fundamental pembangunan program adalah algoritma. Sedangkan pada pemrograman berorientasi objek menggunakan objek sebagai fundamentalnya. Dalam pengembangan perangkat lunak berorientasi objek, supaya perangkat lunak/source code yang kita buat berkualitas harus memperhatikan kaidah-kaidah seperti reusability, understandability, maintainability dan testability. Reusability adalah kemampuan kode yang kita buat bisa digunakan lagi pada aplikasi lain maupun pada aplikasi itu sendiri. Kode yang kita buat harus mudah dimengerti(understanbility) supaya mudah di maintenace. Selain itu, kode yang kita buat usahakan sederhana(simplicity) sehingga mudah dilakukan pengujian (testing). Nah pertanyaannya sekarang, bagaimana kita mengetahui kualitas kode yang kita buat? Bagaimana cara mengukurnya?  :bingung:

Metrics software merupakan tools yang bisa digunakan untuk mengukur kode yang kita buat dengan berbagai macam tipe pengukuran yang berhubungan dengan sistem, proses atau dokumen terkait dalam perangkat lunak. Metrics membantu dalam melakukan evaluasi terhadap pengembangan dan testing yang perlu dilakukan dalam suatu sistem yang meliputi aspek testability, understandability, maintainability dan reusability. Metrics yang bisa digunakan untuk mengukur perangkat lunak berorientasi objek bisa juga metrik tradisional(pada pemrograman struktural) dan metrik yang khusus digunakakan untuk pengembangan perangkat lunak berbasis objek.

Pada posting ini kami akan membahas paper berjudul “Applying and Interpreting Object Oriented Metrics” yang ditulis oleh Dr. Linda H. Rosenberg. Paper ini membahas tentang Software Assurance Technology Center (SATC) pada NASA Goddard Space Flight Center yang melakukan pendekatan untuk memilih metrics untuk project dengan terlebih dahulu mengidentifikasi atribut yang terkait dengan pengembangan berorientasi objek. Cakupan bahasan tersebut meliputi  penjelasan metrik-metrik tersebut, termasuk, cara menghitung dan bagaimana cara membacanya. Kami juga mengambil studi kasus dari tugas Character Graphics pada mata kuliah TPL. Read the rest of this entry »

Metric software: Number of Children (NOC)

NOC merupakan jumlah subclass yang diturunkan langsung dari suatu class. Semakin tinggi nilai NOC menyebabkan semakin besar reuseability karena inheritance adalah bentuk dari reuse. Semakin besar NOC juga dapat menyebabkan proses pengujian semakin banyak karena apabila terjadi perubahan di suatu class dapat mempengaruhi class yang menjadi subclass dari class tersebut.

Berikut contoh perhitungan NOC pada program Characters Graphic:

Berikut hasil pengukuran metrik NOC pada seluruh class pada program Characters Graphic

Pada paper berjudul “Applying and Interpreting Object Oriented Metrics” yang ditulis oleh Dr. Linda H. Rosenberg disajikan aplikasi dan interpretasi dari metric DIT dan NOC dengan menggunakan NASA project data sebagai berikut:

Gambar grafik diatas menampilkan bagaimana dua cara pandang dari indentifikasi data pada class yang diamati. DIT yang tinggi mengindikasikan trade-off diantara meningkatnya kompleksitas dan meningkatnya reuse, tetapi perlu dilakukan lebih banyak testing pada sistem. NOC yang tinggi juga mengindikasikan peningkatan reuse, tetapi kemungkinan memerlukan lebih banyak testing pada sistem.

Metric software: Depth of Inheritance Tree (DIT)

DIT digunakan untuk mengukur kedalaman dari suatu class pada  inheritance hierarchy  tree. DIT dihitung dengan cara menghitung jumlah tingkatan dari kelas node ke root dari inheritance hierarchy  tree. Semakin besar nilai DIT pada suatu class maka semakin banyak method yang diwarisi sehingga semakin rumit untuk mengamati tingkah laku dari class tersebut tetapi semakin besar reuseability dari method yang diwarisi.
Berikut contoh perhitungan DIT pada program Characters Graphic:

Berikut hasil pengukuran metrik DIT pada seluruh class pada program Characters Graphic

Pada paper berjudul “Applying and Interpreting Object Oriented Metrics” yang ditulis oleh Dr. Linda H. Rosenberg disajikan aplikasi dan interpretasi dari metric DIT dengan menggunakan NASA project data sebagai berikut:

Pada gambar grafik diatas, kita melihat bahwa Hampir 66% (DIT>0) dari class project ini berada di bawah class lainnya di dalam tree, yang mengindikasikan berada dalam level sedang dari reuse.

CBO digunakan untuk menghitung jumlah class lainnya yang non-inheritance dimana class tersebut di couple. Couple yang dimaksudkan adalah didalam satu class memanggil method dari class lainnya. Class-class yang memiliki nilai CBO yang tinggi dapat mengganggu desain modular dan mencegah reuseablity dari suatu class. Untuk  meningkatkan modularitas dan mendukung enkapsulasi, CBO seharusnya dijaga tetap minimum. Karena semakin banyak couple, semakin besar sensivitas di dalam desain sehingga pemeliharaan menjadi semakin rumit. Apabila ada class lain yang dipanggil lebih dari 1x maka akan tetap dihitung sebagai 1x pemanggilan.
Berikut contoh perhitungan CBO pada class Tool:

Berikut hasil pengukuran metrik CBO pada program Characters Graphic

Pada paper berjudul “Applying and Interpreting Object Oriented Metrics” yang ditulis oleh Dr. Linda H. Rosenberg disajikan aplikasi dan interpretasi dari metric CBO dengan menggunakan NASA project data sebagai berikut:

Pada gambar grafik diatas, kita melihat bahwa dari 240 class, lebih dari 1/3 nya berdiri sendiri(terdapat lebih dari 80 class memiliki CBO=0). Semakin besar CBO suatu class mengindikasikan bahwa class tersebut kemungkinan lebih sulit dimengerti, susah untuk digunakan kembali(reuse) dan lebih sulit untuk dimaintain.

Metric software: Lack of Cohesion (LCOM)

LCOM digunakan untuk mengukur derajat kemiripan method oleh  variabel input data atau atribut dalam class. Semakin besar nilai  LCOM pada suatu class mengindikasikan meningkatnya kompleksitas  sehingga meningkatkan  kemungkinan dari error selama proses  pengembangan. Class dengan nilai LCOM yang ditinggi dapat dibagi  menjadi dua atau lebih subclass sehingga dapat meningkatkan nilai  cohesi dari class. Semakin kecil nilai LCOM pada suatu class  mengindikasikan meningkatnya reuseability, maintainabilty dan  understanability.

Berikut rumus yang digunakan untuk menghitung LCOM:

Berikut contoh perhitungan LCOM pada class Cshape:

Cara perhitungan :

Berikut hasil pengukuran metrik LCOM pada program Characters Graphic

Pada paper berjudul “Applying and Interpreting Object Oriented Metrics” yang ditulis oleh Dr. Linda H. Rosenberg disajikan aplikasi dan interpretasi dari metric LCOM dengan menggunakan NASA project data sebagai berikut:

Dari grafik plot yang disajikan diatas, kita dapat melihat pengukuran LCOM yang dibandingkan dengan kemungkinan maksimumnya dari LCOM. Nilai LCOM maksimum bila tidak irisan atribut diantara method di dalam class atau q=0.

Metric Software : Response for Class (RFC)

RFC(Response for Class) merupakan metrik yang menghitung banyaknya method yang kemungkinan di eksekusi sebagai response atas message objek dari kelas tersebut. RFC Menyatakan banyaknya method lokal dan banyaknya method yang dipanggil oleh method lokal termasuk semua method dalam kelas hirarki dan juga termasuk kelas library(kecuali method print). Method tersebut menghitung method secara rekursif. Method yang sama cukup dihitung sekali. sumber
Metrik ini berpengaruh terhadap Testability dan Reuseablility. Semakin banyak method yang ada pada kelas tersebut + method kelas lain yang dipanggil maka kelas tersebut akan semakin sulit ditesting dan semakin tidak reusable. RFC pada code dibawah adalah :
RFC(tool)=1(self)+1(drawing)
RFC(tool)=2;
Berikut hasil RFC pada kelas Characters Graphic.
Sedangkan grafik yang dihasilkan pada paper yang kami bahas seperti di bawah ini. Pada gambar dibawah, terdapat beberapa class didalam project yang dalam prosesnya dapat melibatkan lebih dari 200 method. Class dengan RFC yang besar memiliki kompleksitas yang tinggi dan mengurangi understandability dari class tersebut, sehingga menyebabkan testing dan debugging menjadi rumit.

Metric Software : Weighted Methods per Class (WMC)

WMC termasuk metrik untuk object oriented yang mengukur banyaknya method yang diimplementasikan dalam kelas atau jumlah keseluruhan kompleksitas method (CC). Dalam paper sumber kami, WMC dihitung berdasarkan banyaknya method yang terdapat dalam kelas.

WMC berpengaruh terhadap understandability, maintenance dan reusability. Semakin banyak method yang terdapat kelas, maka semakin sulit untuk memahami kelas tersebut dan semakin sulit untuk melakukan pemeliharaan. Disamping itu, dengan semakin banyak method didalam suatu kelas, maka kelas tersebut semakin tidak reusable.

Untuk menghitung WMC dilakukan secara sederhana, yaitu menghitung banyaknya suatu method dalam kelas tersebut. Contohnya pada kelas dibawah ini, WMC nya adalah 6.

Berikut hasil WMC yang didapatkan pada program Character Graphic

Pada paper sumber kami, diperoleh Histogram WMC seperti dibawah ini. Histogramtersebut memperlihatkan bahwa sebagian besar class memiliki WMC yang kurang dari 20 dan terdapat beberapa class dengan WMC lebih besar dari 100.  Beberapa class dengan WMC tertinggi merupakan kandidat class yang perlu untuk diperiksa atau perlu dilakukan revisi.Histogram ini juga berguna untuk melakukan monitor kompleksitas terhadap waktu.

 

Metric Software : Comment Percentage

Semakin banyak ada komentar yang berisi penjelasan singkat terhadap code yang dibuat, maka akan semakin mudah untuk memahami(Understandbility) dan memelihara(Maintainability) source code tersebut. Tentu saja akan berpengaruh terhadap pengujian(Testing) yang dilakukan terhadap source code tersebut. Untuk menghitung Comment Persentage(CP) = jumlah komentar/(LOC-jumlah baris kosong). Berikut Contohnya.

Total Comments=1, LOC=6, Blank line =0, CP = 1/(6-0) x 100% =17%

Berikut hasil metric comment percentage Characters Graphic


 

Metric software : Size

Metric Size merupakan metrik tradisional yang digunakan untuk mengevaluasi tingkat kemudahan untuk mengerti code oleh developer dan mainteners. Seperti metrik Cyclomatic Complexity, Metrik size juga berpengaruh terhadap understandbility, maintainability dan testing. Semakin rendah nilai metrik size, maka semakin mudah untuk mengerti dan memelihara method tersebut. Ada beberapa cara untuk menghitung size dari method, diantaranya adalah Line of Code (LOC), Non-Comment Non Blank (NCNB) dan Executable Statements(EXEC).

LOC menghitung seluruh baris dalam program, NCNB menghitung semua baris yang tidak berisi komentar dan tidak kosong sedangkan EXEC menghitung banyaknya jumlah statement excecutable tanpa memperhatikan jumlah LOC. LOC dan NCNB sangat dipengaruhi oleh bahasa pemrograman dan style dari programmer. pengukuran Exec paling sedikit dipengaruhi oleh programmer, Exec sangat bagus digunakan untuk mengukur metric size terutama jika project menggunakan banyak bahasa pemrograman seperti yang dilakukan oleh SATC yang menggunakan EXEC untuk mengevaluasi project size. Berikut contoh perhitungan metric size.

IF X=3
Then
Y=10

Nilai  LOC= 3 , NCNB=3,  EXEC=1

Contoh lainnya :

LOC = 6, NCNB = 5, EXEC = 1.

Berikut hasil pengukuran metrik size pada Characters Graphic

 

Metric software: Cyclomatic Complexity (CC)

Cyclomatic Complexity (CC) merupakan metrik tradisional yang menghitung tingkat kompleksitas suatu method/procedure. Metrik ini bisa diterapkan pada pemrograman berorientasi objek untuk menghitung kompleksitas suatu method. Kompleksitas dalam method merujuk kepada berapa jumlah test case yang diperlukan untuk mengevaluasi method tersebut sehingga setiap percabangan didalam method tersebut pernah dilalui. Cyclomatic Complexity (CC) secara langsung tidak bisa digunakan untuk mengukur kompleksitas kelas. Menurut sumber kami, hal tersebut tidak bisa karena adanya pewarisan dalam code. Namun Cyclomatic Complexity (CC)  bisa menghitung kompleksitas kelas jika dikombinasikan dengan pengukuran lain.

Cyclomatic Complexity (CC) berpengaruh terhadap Understandability, Maintainability dan Testing. Semakin kompleks suatu method berpengaruh terhadap semakin sulit untuk memahami method tersebut dan tentu saja akan semakin sulit jika nantinya ingin melakukan memaintenace method tersebut. Selain itu, tentu saja akan berpengaruh terhadap kompleksitas pengujian yang dilakukan terjadap method tersebut.

Dalam menghitung Cyclomatic Complexity (CC) dalam method, statement disimbolkan dengan node dan aliran program dilambangkan dengan edge. Nilai Cyclomatic Complexity (CC) merupakan jumlah edges-jumlah node +2. Berikut contoh penghitungan CC.

Berikut contoh perhitungan CC dari code. Nilai CC 4 yang dihasilkan berarti diperlukan 4 test case untuk menguji method tersebut

Kami juga melakukan penghitungan nilai CC pada program Character Graphic, diperoleh hasil seperti berikut.

CC tertinggi ditemukan pada kelas Drawing Package. Nilai CC Drawing Package sangat significant dibanding dengan kelas-kelas lain. Ini terjadi karena kelas Drawing Package merupakan kelas yang berisi banyak kondisional case untuk menterjemahkan menu-menu diinput.

Baca Juga : Metrik pengembangan perangkat lunak berorientasi objek

 

 

sada
sadasd•Understandability dan Maintainability