Anda di halaman 1dari 31

EVALUASI KUALITAS PERANGKAT LUNAK BERORIENTASI OBJEK

RHAMDANI

DEPARTEMEN ILMU KOMPUTER


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2008
EVALUASI KUALITAS PERANGKAT LUNAK BERORIENTASI OBJEK

Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer


pada Fakultas Matematika dan Ilmu Pengetahuan Alam
Institut Pertanian Bogor

Oleh :

RHAMDANI
G64104038

DEPARTEMEN ILMU KOMPUTER


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2008
Judul : Evaluasi Kualitas Perangkat Lunak Berorientasi Objek
Nama : Rhamdani
NRP : G64104038

Menyetujui :

Pembimbing I, Pembimbing II,

Wisnu Ananta Kusuma, S.T, M.T Toto Haryanto, S.Kom


NIP. 132312485

Mengetahui:
Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam
Institut Pertanian Bogor

Dr. drh. Hasim, DEA


NIP 131578806

Tanggal Lulus :
ABSTRAK
RHAMDANI. Evaluasi Kualitas Perangkat Lunak Berorientasi Objek. Dibimbing oleh
WISNU ANANTA KUSUMA dan TOTO HARYANTO.
Pengembangan perangkat lunak berorientasi objek membutuhkan pendekatan yang berbeda
dengan pengembangan perangkat lunak terstruktur. Perbedaan tersebut terdapat pada tahap desain,
implementasi, dan evaluasi kualitas perangkat lunak tersebut. Dengan demikian, dibutuhkan
metrics yang berbeda dengan traditional metrics untuk melakukan evaluasi kualitas perangkat
lunak tersebut.
Chidamber & Kemerer (1994) mengajukan enam buah object oriented metrics. Keenam
metrics tersebut memiliki sudut pandang yang terkait dengan faktor-faktor kualitas perangkat
lunak. Dengan demikian, metrics tersebut dapat digunakan untuk melakukan evaluasi kualitas
perangkat lunak berorientasi objek dari beberapa faktor kualitas yang terkait.
Penelitian ini melakukan perhitungan object oriented metrics terhadap semua class pada
perangkat lunak ERP. Selanjutnya, nilai metrics masing-masing class dibandingkan dengan nilai
batas atas metrics tersebut. Dengan melakukan perbandingan tersebut, dapat diketahui class mana
saja yang disarankan untuk diperiksa ulang dan/atau direvisi. Selain itu, penelitian ini juga
melakukan perhitungan lebih lanjut untuk mengetahui nilai rata-rata masing-masing metrics pada
perangkat lunak tersebut. Nilai rata-rata tersebut dibandingkan juga dengan nilai batas atas metrics
sehingga dapat diketahui tinggi rendahnya nilai metrics secara keseluruhan. Dengan mengetahui
tinggi rendahnya nilai metrics, dapat diketahui kualitas perangkat lunak tersebut.
Dari penelitian yang dilakukan, ditemukan beberapa class yang disarankan untuk diperiksa
ulang dan/atau direvisi. Selain itu, perangkat lunak ERP berkualitas baik dari segi usability,
understandability, modifiability, dan testability. Akan tetapi, dari segi reusability, kualitas
perangkat lunak ERP hanya dapat dikatakan moderat.
Kata kunci: Object oriented metrics, Chidamber & Kemerer metrics, desain berorientasi objek,
faktor kualitas.
RIWAYAT HIDUP
Penulis dilahirkan di Jakarta pada tanggal 29 Mei 1986 dari pasangan Bapak M. Sadikin
dan Ibu Ahyani. Penulis merupakan anak pertama dari dua bersaudara.
Tahun 2004 penulis lulus dari SMU Negeri 91 Jakarta dan pada tahun yang sama lulus
seleksi masuk IPB melalui jalur Undangan Saringan Masuk IPB (USMI). Penulis memilih
Program Studi Ilmu Komputer, Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu
Pengetahuan Alam IPB. Pada tahun 2007, Penulis menjalankan praktek kerja lapangan di PT.
Sigma Karya Sempurna (Balicamp) selama kurang lebih 5 bulan sebagai software tester untuk
project Panin Business Internet Banking. Penulis juga pernah menjadi assisten praktikum mata
kuliah Pengembangan Sistem Berorientasi Objek pada semester genap 2007/2008. Saat ini, penulis
aktif sebagai anggota Java Campus Team di Departemen Ilmu Komputer IPB.
PRAKATA
Alhamdulillah, puji dan syukur penulis panjatkan ke hadirat Allah SWT atas segala rahmat
dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi ini. Shalawat serta salam juga
penulis sampaikan kepada junjungan kita Nabi Muhammad SAW beserta seluruh sahabat dan
umatnya hingga akhir zaman.
Penulis menyampaikan terima kasih kepada Bapak Wisnu Ananta Kusuma, S.T., M.T.
selaku pembimbing I yang telah banyak membantu dan membimbing penulis selama proses
penelitian dan penyusunan skripsi ini. Penulis juga menyampaikan terima kasih kepada Bapak
Toto Haryanto, S.Kom. selaku pembimbing II yang telah memberikan saran dan masukan kepada
penulis, serta Bapak Irman Hermadi, S.Kom., M.S. yang bersedia menjadi moderator dan dosen
penguji dalam pelaksanaan seminar dan sidang. Terima kasih juga penulis sampaikan kepada:
1. Ayahanda M. Sadikin dan Ibunda Ahyani yang senantiasa mendoakan dan memberikan
dukungan selama penulis menjalankan studi di Institut Pertanian Bogor. Adik penulis
Imam Suderajat yang senantiasa mendengarkan cerita-cerita penulis selama kuliah di
IPB.
2. Destarina Arghia (MSL 42) beserta keluarga yang selalu memberi dukungan dan
semangat dalam mengerjakan skripsi ini.
3. Teman-teman satu tim dalam pengerjaan perangkat lunak ERP Halida Ernita (ILKOM
41) dan Dian Indah Savitri (ILKOM 41).
4. Roby Ikhsan & istri, Ifnu Bima, S.Kom. (ILKOM 38), dan Hadikusuma Wahab,
S.Kom. (ILKOM 40 ) yang bersedia memberikan arahan dalam mengerjakan perangkat
lunak ERP dan skripsi ini.
5. Diomidis Spinellis sebagai pengembang tool CKJM yang bersedia memberikan arahan
dan saran melalui email dalam menggunakan CKJM untuk mengolah data pada skripsi
ini.
6. Teman-teman satu kost Riza Mahendra, Hasan, Rizki Pebuardi, Hely Kurniwan yang
rela membantu dalam pelaksanaan seminar dan sidang.
7. Sahabat penulis, Ardian PrawiraYudha, yang memberikan fasilitas internet di
rumahnya untuk digunakan penulis dalam menyelesaikan skripsi ini.
8. Teman-teman ILKOM 41 lainnya yang telah banyak membantu penulis selama
menjalani kuliah di IPB.
9. Departemen Ilmu Komputer, staf, dan dosen yang telah begitu banyak membantu baik
selama penelitian maupun pada masa perkuliahan.
Penulis juga mengucapkan terima kasih kepada semua pihak lainnya yang telah
memberikan kontribusi yang besar selama pengerjaan penelitian ini yang tidak dapat disebutkan
satu-persatu.
Semoga penelitian ini dapat memberikan manfaat.

Bogor, Juli 2008

Rhamdani
v

DAFTAR ISI
Halaman
DAFTAR TABEL ............................................................................................................................ vi

DAFTAR GAMBAR ....................................................................................................................... vi

DAFTAR LAMPIRAN .................................................................................................................... vi

PENDAHULUAN............................................................................................................................. 1
Latar Belakang............................................................................................................................. 1
Tujuan Penelitian ......................................................................................................................... 1
Ruang Lingkup Penelitian ........................................................................................................... 1
Manfaat Penelitian ....................................................................................................................... 1

TINJAUAN PUSTAKA.................................................................................................................... 1
Kualitas Perangkat Lunak ............................................................................................................ 1
Metrics ......................................................................................................................................... 2
Object Oriented Metrics .............................................................................................................. 3
Weighted Methods per Class (WMC).......................................................................................... 3
Depth of Inheritance Tree (DIT) ................................................................................................. 3
Number of Children (NOC) ......................................................................................................... 4
Coupling between Object (CBO) ................................................................................................. 4
Response for A Class (RFC) ........................................................................................................ 4
Lack of Cohesion in Methods (LCOM) ...................................................................................... 4
Cyclomatic Complexity (CC) ....................................................................................................... 5

METODE PENELITIAN .................................................................................................................. 5


Studi Literatur .............................................................................................................................. 6
Pengumpulan Data ....................................................................................................................... 6
Implementasi Perhitungan Metrics .............................................................................................. 6
Analisis Hasil Pengukuran Metrics ............................................................................................. 6

HASIL DAN PEMBAHASAN ......................................................................................................... 6


Pengumpulan Data ....................................................................................................................... 6
Implementasi Perhitungan Metrics .............................................................................................. 6
Analisis Hasil Perhitungan Metrics ............................................................................................. 7
1 Weighted Methods per Class (WMC) ............................................................................... 7
2 Depth of Inheritance Tree (DIT) ....................................................................................... 7
3 Number of Children (NOC) .............................................................................................. 7
4 Coupling Between Object Class (CBO) ............................................................................ 8
5 Response for A Class (RFC) ............................................................................................. 8
6 Lack of Cohesion in Methods (LCOM) ............................................................................. 9
7 Kualitas Perangkat Lunak ERP ....................................................................................... 10

KESIMPULAN DAN SARAN ....................................................................................................... 11


Kesimpulan ................................................................................................................................ 11
Saran .......................................................................................................................................... 11

DAFTAR PUSTAKA ..................................................................................................................... 11


vi

DAFTAR TABEL
Halaman
Tabel 1 Ringkasan statistik WMC pada perangkat lunak ERP. ........................................................ 7
Tabel 2 Ringkasan statistik DIT pada perangkat lunak ERP............................................................. 7
Tabel 3 Ringkasan statistik NOC pada perangkat lunak ERP. .......................................................... 8
Tabel 4 Ringkasan statistik CBO pada perangkat lunak ERP. .......................................................... 8
Tabel 5 Ringkasan statistik RFC pada perangkat lunak ERP. ........................................................... 9
Tabel 6 Ringkasan statistik nilai rasio LCOM pada perangkat lunak ERP. ..................................... 9
Tabel 7 Kategori metrics perangkat lunak ERP beserta pengaruhnya terhadap faktor kualitas ...... 10

DAFTAR GAMBAR

Halaman
Gambar 1 Faktor-faktor kualitas perangkat lunak (El-Ahmadi 2006)............................................... 2
Gambar 2 Hierarki metrics (Sarker 2005). ........................................................................................ 3
Gambar 3 Perhitungan CC dengan graph (Rosenberg 1998). ........................................................... 5
Gambar 4 Diagram metodologi penelitian. ....................................................................................... 5
Gambar 6 Histogram WMC pada perangkat lunak ERP. .................................................................. 7
Gambar 7 Histogram DIT pada perangkat lunak ERP. ..................................................................... 7
Gambar 8 Histogram NOC pada perangkat lunak ERP. ................................................................... 8
Gambar 9 Histogram CBO pada perangkat lunak ERP. .................................................................... 8
Gambar 10 Histogram RFC pada perangkat lunak ERP. .................................................................. 8
Gambar 11 Histogram LCOM pada perangkat lunak ERP. .............................................................. 9

DAFTAR LAMPIRAN
Halaman
Lampiran 1 Source Code class LoginCustomerController.............................................................. 13
Lampiran 2 Perhitungan Metrics pada Class LoginCustomerController ........................................ 14
Lampiran 3 Hasil Perhitungan Metrics pada semua Class project ERP.......................................... 17
Lampiran 4 Beberapa Class yang Disarankan Agar Diperiksa Ulang dan/atau Direvisi Terkait
Dengan Nilai Metrics-nya ............................................................................................................... 22
Lampiran 5 Ringkasan Pengaruh Metrics Terhadap Faktor-Faktor Kualitas berdasarkan sudut
pandang masing-masing metric. ...................................................................................................... 23
1

PENDAHULUAN 1 Menerapkan object oriented metrics


untuk melakukan evaluasi perangkat
Latar Belakang lunak berorientasi objek.
Desain berorientasi objek merupakan suatu 2 Menganalisis efektivitas object oriented
konsep yang banyak digunakan oleh metrics yang digunakan.
pengembang perangkat lunak saat ini. Hal ini
dikarenakan kemudahan yang ditawarkan di Ruang Lingkup Penelitian
dalam desain berorientasi objek dari sisi Ruang lingkup penelitian ini adalah :
pengembangan dan perawatannya. Dengan
kata lain, desain berorientasi objek merupakan 1 Metrics yang digunakan adalah object
pendekatan yang efektif untuk membangun oriented metrics yang diajukan oleh
perangkat lunak yang flexibel. Chidamber & Kemerer (1994).
Pengembangan berorientasi objek ternyata 2 Perhitungan metrics dilakukan dengan
membutuhkan pendekatan yang berbeda bantuan tool Chidamber & Kemerer Java
dengan pengembangan struktural. Perbedaan Metrics (CKJM).
tersebut terdapat pada tahap desain dan Manfaat Penelitian
implementasinya. Perbedaan ini yang
kemudian menimbulkan permasalahan dalam Penelitian ini diharapkan dapat melakukan
penggunaan metrics untuk mengevaluasi estimasi kualitas perangkat lunak ERP yang
kualitas perangkat lunak berorientasi objek. berorientasi objek melalui faktor-faktor
kualitas perangkat lunak. Selain itu, hasil
Traditional metrics seperti Cyclomatic perhitungan metrics dapat digunakan sebagai
Complexity (CC), yang digunakan untuk acuan untuk memperbaiki desain perangkat
mengevaluasi desain terstruktur, ternyata tidak lunak ERP (Ernita 2008).
dapat digunakan begitu saja dalam desain
berorientasi objek. Bahkan beberapa
traditional metrics tidak dapat digunakan TINJAUAN PUSTAKA
sama sekali dalam lingkungan berorientasi
objek. Oleh karena itu, dibutuhkan metrics Kualitas Perangkat Lunak
yang dapat merefleksikan desain berorientasi Kualitas perangkat lunak dapat memiliki
objek. banyak arti bergantung dari siapa yang
Banyak penelitian yang mengajukan memandangnya. Bila dilihat dari sudut
object oriented metrics. Salah satu penelitian pandang customer, perangkat lunak yang baik
tersebut dilakukan oleh Chidamber & adalah perangkat lunak yang memuaskan
Kemerer (1994). Chidamber & Kemerer, yang kebutuhan customer. Dengan demikian,
merupakan pelopor dalam penelitian object perangkat lunak tersebut dikatakan memiliki
oriented metrics, mengajukan enam buah kualitas yang baik. Lain halnya jika dilihat
object oriented metrics. Metrics tersebut dari sudut pandang pengembang. Pengembang
adalah Weighted Methods per Class (WMC), perangkat lunak akan melihat produk
Depth of Inheritance Tree (DIT), Number of perangkat lunak dari dalam perangkat lunak
Children (NOC), Coupling Between Object itu sendiri. Pengembang yang menggunakan
(CBO), Response for A Class (RFC), dan Lack pemikiran berorientasi objek memiliki tujuan
of Cohesion in Methods (LCOM). Keenam pada terpenuhinya karakterisktik tertentu.
metrics tersebut dapat digunakan di dalam Terpenuhinya karakteristik - karakteristik
lingkungan berorientasi objek. tersebut merupakan kualitas dari sudut
pandang pengembang (El-Ahmadi 2006).
Penelitian ini membahas penggunaan
Chidamber & Kemerer object oriented metrics Dengan kata lain, jika diinginkan kualitas
untuk mengevaluasi kualitas perangkat lunak perangkat lunak yang tinggi, haruslah
berorientasi objek. Perangkat lunak yang ditentukan karakteristik apa saja yang
digunakan adalah perangkat lunak ERP yang diinginkan. Karakteristik tersebut berupa
berorientasi objek yang dikembangkan oleh faktor-faktor kualitas. Faktor-faktor tersebut
Ernita (2008). dapat dilihat pada gambar 1.

Tujuan Penelitian
Tujuan dari penelitian ini adalah:
2

• Testability
Menurut Jawadekar (2004), testability
adalah tingkat usaha yang dibutuhkan untuk
menguji perangkat lunak dalam proses quality
assurance.
• Availability
Availabillity adalah tingkat kemudahan
suatu sistem atau komponen agar dapat
dioperasikan dan diakses ketika ingin
Gambar 1 Faktor-faktor kualitas perangkat digunakan (IEEE Std. 610.12, diacu dalam
lunak (El-Ahmadi 2006). Barbacci 2004).

Definisi faktor-faktor tersebut sebagai • Complexity


berikut: El-Ahmadi (2006) menyatakan masih
• Reliability terdapat satu faktor lagi yang tidak secara
langsung terkait dalam hierarki faktor pada
Menurut Jawadekar (2004), reliability gambar 1. Faktor tersebut adalah complexity.
adalah tingkat ketepatan fungsi-fungsi
perangkat lunak tanpa adanya kesalahan. Complexity dibagi menjadi dua jenis, yaitu
complexity of problem dan complexity of
• Reusability solution. Complexity of problem adalah
Reusability adalah tingkat kemampuan jumlah sumber daya yang dibutuhkan untuk
perangkat lunak atau bagian perangkat lunak sebuah solusi yang optimal terhadap sebuah
untuk dapat digunakan ulang di lain tempat permasalahan. Complexity of solution terdiri
sebagai komponen yang reusable (Jawadekar dari time complexity dan space complexity.
2004). Time complexity terkait dengan sumber daya
waktu sedangkan space complexity terkait
• Usability dengan sumber daya memori (Fenton &
Usability adalah tingkat usaha yang Pfleeger 1997). Complexity berpengaruh pada
dibutuhkan untuk mempelajari, understandability, modifiability, dan
mengoperasikan, dan menggunakannya untuk testability (El-Ahmadi 2006).
tujuan yang diinginkan (Jawadekar 2004). Semua faktor kualitas tersebut dapat
diukur secara kuantitatif menggunakan
• Maintainability
metrics. Penjelasan metrics dapat dilihat pada
Maintainability adalah tingkat usaha untuk subbab selanjutnya.
mengetahui letak kesalahan dan
Metrics
memperbaikinya.
Sarker (2005) membagi metrics ke dalam
Faktor ini dapat dipecah menjadi tiga
dua kategori, yaitu project based metrics dan
subfaktor, masing-masing understandability,
design based metrics. Project based metrics
modifiability, dan testability (El-Ahmadi
terdiri dari process, product, dan resources
2006).
sedangkan design based metrics terdiri dari
• Understandability traditional metrics dan object oriented
metrics. Gambar 2 memperlihatkan hierarki
Understandability terkait dengan metrics tersebut.
peningkatan kompleksitas psikologis (SATC
1995). Process metrics, disebut juga management
metrics, berhubungan dengan proses dalam
• Modifiability mengembangkan sebuah sistem (Systa & Yu
Modifiability dari segi flexibility adalah 1999). Process metrics biasanya digunakan
tingkat kemudahan sebuah sistem atau untuk:
komponen agar dapat dimodifikasi untuk • Membantu memprediksi ukuran akhir
penggunaan dalam suatu aplikasi atau sebuah sistem,
lingkungan (IEEE Std. 610.12 diacu dalam
• Memprediksi tingkat usaha yang
Barbacci 2004).
dibutuhkan dalam sebuah proyek,
3

• Dan menentukan apakah sebuah proyek Object oriented metrics yang diajukan
sesuai dengan jadwal. oleh Chidamber & Kemerer (1994) adalah:
• Complexity metrics terdiri dari weighted
methods per class (WMC).
• Inheritance metrics terdiri dari depth of
inheritance tree (DIT) dan number of
children (NOC).
• Communication metrics terdiri dari
coupling between object (CBO), response
for a class (RFC), dan lack of cohesion in
method (LCOM).
Penjelasan mengenai definisi, sudut
pandang, nilai batas atas, dan faktor-faktor
Gambar 2 Hierarki metrics (Sarker 2005). kualitas apa saja yang terkait dengan masing-
masing metrics dapat dilihat pada subbab
Product metrics, disebut juga quality selanjutnya.
metrics, digunakan untuk mengontrol kualitas
dari produk perangkat lunak. Metrics ini Weighted Methods per Class (WMC)
digunakan untuk perangkat lunak yang belum Misalkan sebuah class C1 memiliki
selesai dibuat agar dapat diprediksi properti methods M1, M2,…, Mn dan c1, c2, …, cn adalah
dan kompleksitas hasil akhir perangkat lunak kompleksitas tiap method tersebut, maka:
tersebut (Sarker 2005).
Resources adalah entitas yang dibutuhkan
dalam aktifitas proses pengembangan.
Resources yang diukur adalah semua input
Kompleksitas methods dapat didefinisikan
dalam menghasilkan perangkat lunak (Sarker
oleh masing-masing pengembang (Chidamber
2005).
& Kemerer 1994). Penelitian ini
Pada sistem berorientasi objek, traditional menggunakan cyclomatic complexity untuk
metrics umumnya digunakan dalam ruang perhitungan kompleksitas tiap method.
lingkup methods yang terdiri atas operasi-
Semakin banyak jumlah method sebuah
operasi sebuah class. Beberapa contoh
class, semakin besar pula pengaruh pada class
traditional metrics antara lain cyclomatic
yang mewarisinya. Akibatnya, semakin besar
complexity (CC), source line of code (SLOC),
upaya dan waktu yang dibutuhkan untuk
dan comment percentage (CP).
maintenance dan testing (Chidamber &
Object oriented metrics digunakan untuk Kemerer 1994; Lindroos 2004). Selain itu,
merefleksikan perangkat lunak berorientasi class yang memiliki banyak method yang
objek. Beberapa contoh object oriented kompleks berarti class tersebut semakin
metrics yang telah diajukan antara lain spesifik. Hal ini dapat membatasi
Chidamber & Kemerer (CK) metrics, MOOD, kemungkinan reuse (Chidamber & Kemerer
dll. Penjelasan tentang object oriented metrics 1994; Systa & Yu 1999; Lindroos 2004). Dari
akan dijelaskan lebih detil pada subbab kedua sudut pandang tersebut dapat
selanjutnya. disimpulkan bahwa WMC terkait dengan
beberapa faktor-faktor kualitas, yaitu
Object Oriented Metrics
maintainability (testability), usability, dan
Systa & Yu (1999) membagi object reusability.
oriented metrics ke dalam tiga kategori, yaitu
RefactorIT menyarankan nilai batas atas
inheritance metrics, complexity metrics, dan
WMC sebesar 50 untuk sebuah class. WMC
communication metrics. Inheritance metrics
yang didefiniskan RefactorIT menggunakan
mengukur hierarki pewarisan (inheritance),
cyclomatic complexity dalam perhitungan
complexity metrics memperkirakan
kompleksitas tiap method.
kompleksitas perangkat lunak, dan
communication metrics mengukur pasangan Depth of Inheritance Tree (DIT)
(coupling) dan keterpaduan (cohesion) antar
Kedalaman sebuah class dalam hierarki
class.
pewarisan diukur oleh DIT. Apabila terdapat
multiple inheritance, DIT didapat dari panjang
4

maksimum dari node ke root pada tree CBO yang berlebihan merupakan perusak
tersebut (Chidamber & Kemerer 1994). desain modular dan mengurangi reuse.
Semakin tidak tergantung sebuah class dengan
Penelitian ini menggunakan perangkat
class lain maka semakin mudah class tersebut
lunak berorientasi objek dengan bahasa
digunakan ulang untuk aplikasi lain (Lindroos
pemrograman Java sehingga tidak ada
2004). Selain itu, class dengan CBO yang
multiple inheritance dalam implementasinya.
besar berarti semakin sensitif class tersebut
Selain itu, setiap class merupakan turunan dari
terhadap perubahan pasangan class-nya. Hal
class Object sehingga DIT setiap class pada
ini mengakibatkan upaya untuk maintenance
pemrogaman Java minimal 1. Class Object
class tersebut semakin besar (Chidamber &
sendiri memiliki DIT = 0. RefactorIT
Kemerer 1994; Systa & Yu 1999; Lindroos
menyarankan nilai batas atas DIT sebesar 5
2004). Dengan demikian, dapat disimpulkan
untuk sebuah class.
bahwa CBO terkait dengan reusability dan
Semakin dalam sebuah class dalam sebuah maintainability.
hierarki pewarisan, semakin besar pula
Nilai batas atas metric ini, sampai saat ini,
potensi penggunaan ulang method yang
belum dapat ditemukan. Akan tetapi,
diwarisinya (Chidamber & Kemerer 1994;
berdasarkan sudut pandang di atas dapat
Systa & Yu 1999; Lindroos 2004). Selain itu,
disimpulkan bahwa semakin kecil nilai CBO
semakin dalam sebuah class dalam hierarki
maka akan semakin baik kualitas desain class
pewarisan maka semakin banyak method yang
tersebut.
dimilikinya, baik method pada class itu sendiri
maupun method yang diwarisinya. Hal ini Response for A Class (RFC)
mengakibatkan class tersebut semakin
RFC adalah |RS|. RS didefinisikan sebagai
kompleks (Systa & Yu 1999 dalam Lindroos
berikut:
2004). Kedua sudut pandang tersebut
menjelaskan bahwa DIT berpengaruh pada
faktor reusability dan complexity. El-Ahmadi
(2006) menyatakan bahwa complexity Dimana, adalah himpunan method
mempengaruhi understandability, yang dipanggil oleh method i dan adalah
modifiability, dan testability. Jadi, secara himpunan semua method yang ada di class
keseluruhan DIT berpengaruh pada tersebut (Chidamber & Kemerer 1994).
reusability, understandability, modifiability, RefactorIT menyarankan nilai batas atas RFC
dan testability. sebesar 50 untuk sebuah class walaupun RFC
sebesar 100 untuk sebuah class masih bisa
Number of Children (NOC) diterima.
NOC adalah jumlah subclasses langsung Semakin banyak method yang dapat
yang mewarisi sebuah class pada hierarki dipanggil sebagai respon sebuah pesan,
class (Chidamber & Kemerer 1994). Semakin semakin besar juga upaya dan waktu untuk
besar NOC maka semakin tinggi reusability. testing. Hal ini dikarenakan tester
Hal ini dikarenakan pewarisan merupakan membutuhkan pemahaman yang tinggi
bentuk dari reuse. Selain itu, semakin besar terhadap class tersebut sebelum melakukan
NOC maka semakin besar upaya dan waktu testing (Chidamber & Kemerer 1994;
untuk testing. (Chidamber & Kemerer 1994; Lindroos 2004). Selain itu, semakin banyak
SATC 1995; Lindroos 2004; Sarker 2005). method yang dapat dipanggil pada sebuah
Dari sudut pandang di atas, dapat class, semakin besar kompleksitas class
disimpulkan bahwa NOC berpengaruh pada tersebut. Ini berarti semakin besar upaya
reusability dan testability. RefactorIT pemeliharaan class tersebut (El-Ahmadi
menyarankan nilai batas atas NOC sebesar 10 2006). Sudut pandang di atas menyatakan
untuk sebuah class. bahwa RFC terkait dengan maintainability
Coupling between Object (CBO) (understandability, modifiability, dan
testability).
CBO didefinisikan untuk sebuah class,
yaitu banyaknya class yang terpasangkan Lack of Cohesion in Methods (LCOM)
oleh class yang diukur. Sebuah class A Misalkan sebuah class C1 dengan n buah
dikatakan terpasangkan dengan class B jika methods M1, M2, …, Mn. Lalu {Ij} adalah
class A menggunakan method atau instance himpunan instance variable yang digunakan
variable pada class B (Chidamber & Kemerer oleh method Mi. Dengan demikian terdapat n
1994). buah himpunan I1, I2, …, In.
5

Kemudian P = {Ii, Ij | Ii ∩ Ij = Ø} dan Q =


{Ii, Ij | Ii ∩ Ij ≠ Ø}. Jika semua n himpunan
{I1}, {I2}, …, {In} adalah Ø maka P = Ø.

LCOM diharapkan rendah pada sebuah


class (cohesiveness tinggi) karena menaikkan
encapsulation. LCOM yang tinggi
(cohesiveness rendah) menandakan sebuah
class yang semestinya dipecah menjadi 2 atau
lebih class. Selain itu, LCOM yang tinggi Gambar 3 Perhitungan CC dengan graph
menandakan kompleksitas yang tinggi (Rosenberg 1998).
(Chidamber & Kemerer 1994; Lindroos
2004). Dari sudut pandang tersebut, dapat Ada cara lain untuk menghitung v(G).
ditarik kesimpulan bahwa LCOM Andersson dan Vestergren (2004)
berpengaruh terhadap maintainability merumuskannya sebagai berikut:
(understandability, modifiability, dan
testability).
dimana,
Sampai saat ini, belum dapat ditemukan
berapa besar nilai batas atas metric ini. Akan • P adalah jumlah predicate nodes yang ada
tetapi, dari definisi Chidamber dan Kemerer dalam graph G.
(1994), nilai LCOM bergantung pada jumlah • Predicate node adalah sebuah node yang
methods pada sebuah class. Dengan demikian, merepresentasikan pernyataan Boolean di
terdapat nilai maksimum LCOM pada class dalam code sehingga terdapat dua buah
tersebut, yaitu ketika |Q| = 0. outgoing edges.
Berdasarkan sudut pandang dan nilai Method dengan CC yang rendah umumnya
maksimum LCOM dapat ditarik kesimpulan lebih baik (El-Ahmadi 2006). CC yang rendah
bahwa semakin kecil nilai aktual LCOM berarti semakin baik dalam faktor testability
dibanding nilai maksimumnya, semakin baik dan understandability. Semakin kompleks
cohesiveness class tersebut (Rosenberg, sebuah method (CC tinggi) maka semakin
1998). tinggi testability dan understandability. Akan
tetapi, method yang memiliki CC yang rendah
Cyclomatic Complexity (CC) bukan berarti method tersebut tidak kompleks.
CC, disebut juga McCabe cyclomatic Hal ini mungkin berarti bahwa method
complexity, digunakan untuk evaluasi tersebut melakukan message passing dalam
kompleksitas sebuah method (Rosenberg et. implementasinya (SATC 1995).
al. 1997 diacu dalam Sarker 2005). CC
adalah jumlah test cases yang dibutuhkan
untuk menguji methods secara komprehensif METODE PENELITIAN
(Rosenberg 1998). Perhitungannya dapat
dilakukan dengan menggambarkan urutan
program sebuah method menjadi graph
dengan semua path yang mungkin terjadi.
Kompleksitasnya dihitung dengan rumus:

dimana,
• v(G) adalah cylomatic complexity untuk
graf G.
• e adalah jumlah edges pada graf G, dan
• n adalah jumlah nodes pada graf G.
Gambar 4 Diagram metodologi penelitian.
Gambar 3 menjelaskan bagaimana
Penelitian ini dilaksanakan dengan
perhitungan CC pada sebuah graf.
mengikuti tahap-tahap seperti pada gambar 4.
Penelitian ini diawali dengan studi literatur,
6

pengumpulan data, kemudian melakukan 2008). Perangkat lunak tersebut


implementasi perhitungan metrics, dan yang dikembangkan dengan bahasa pemrograman
terakhir adalah analisis hasil perhitungan Java, terdiri dari 236 classes dan 39 jar file
metrics. sebagai library.
Studi Literatur Perhitungan metrics secara manual
membutuhkan semua file *.java (java file)
Studi literatur dilakukan dengan cara
sedangkan perhitungan metrics dengan CKJM
mempelajari jurnal, buku, artikel, dan situs
membutuhkan semua file hasil kompilasi
yang terkait dengan metrics perangkat lunak
(class file) pada project ERP beserta library
berorientasi objek.
yang dipakainya. File tersebut masing-masing
Metrics yang dipakai dalam penelitian ini berekstensi *.class dan *.jar.
adalah 6 buah metrics yang diajukan oleh
Pada project ERP, class file dan jar file
Chidamber & Kemerer (1994). Metrics ini
tersimpan di bawah direktori
dipilih karena berhubungan dengan kualitas
erp/build/web/WEB-INF/classes dan
perangkat lunak. Selain itu, metrics ini banyak
erp/build/web/WEB-INF/lib sedangkan java
digunakan oleh umum (Hogan 1997).
file tersimpan di bawah direktori erp/src/java.
Untuk nilai batas atas beberapa metrics,
Implementasi Perhitungan Metrics
diperoleh berdasarkan saran dari RefactorIT.
Pada tahap ini, perhitungan metrics secara
Pengumpulan Data
manual dilakukan dengan melihat source code
Pengumpulan data dilakukan setelah class (*.java) dari data yang diperoleh.
perangkat lunak ERP selesai dikembangkan. Lampiran 1 memperlihatkan source code
Data yang dikumpulkan adalah semua yang salah satu class, yaitu class
terkait dengan pengukuran metrics perangkat LoginCustomerController. Perhitungan
lunak ERP. keenam metrics secara manual terhadap class
LoginCustomerController dapat dilihat pada
Implementasi Perhitungan Metrics lampiran 2. Berikut nilai keenam metrics
Pada tahap ini, perhitungan metrics untuk class LoginCustomerController:
dilakukan dengan bantuan tool CKJM
• WMC = 13
(Chidamber & Kemerer Java Metrics)
• DIT = 1
(Spinellis 2005). Tool ini dipilih karena hasil
perhitungan metrics yang dihasilkan cukup • NOC = 0
sesuai dengan definisi metrics Chidamber & • CBO = 4
Kemerer (1994). • RFC = 26
• LCOM = 17
Analisis Hasil Perhitungan Metrics
Implementasi perhitungan metrics secara
Analisis dilakukan dengan cara manual tentunya membutuhkan waktu yang
membandingkan nilai metrics perangkat lunak tidak sedikit. Dengan mempertimbangkan
ERP dengan nilai standard metrics yang keterbatasan waktu, maka digunakan CKJM
disarankan oleh RefactorIT (Sarker 2005). sebagai tool untuk melakukan perhitungan
Dari hasil perbandingan tersebut dapat DIT, NOC, CBO, RFC sedangkan WMC dan
diketahui class mana saja yang perlu diperiksa LCOM dihitung secara manual. Hal ini
dan/atau direvisi. Selain itu, dicari juga nilai dikarenakan CKJM mengasumsikan
maksimal, minimal, dan median secara kompleksitas semua methods = 1 dalam
keseluruhan dari masing-masing metrics. menghitung WMC sedangkan penelitian ini
Nilai-nilai ini yang akan memperkirakan menggunakan CC sebagai kompleksitas
kualitas perangkat lunak dari beberapa faktor semua methods. Selain itu, CKJM masih
kualitas yang terkait. belum dapat menghitung LCOM ketika class
yang diukur tidak memiliki instance variable.
Hasil perhitungan keenam metrics pada
HASIL DAN PEMBAHASAN perangkat lunak ERP (Ernita 2008) dapat
dilihat pada lampiran 3.
Pengumpulan Data
Perangkat lunak yang dipilih pada
penelitian ini adalah perangkat lunak berbasis
web, yaitu perangkat lunak ERP (Ernita
7

Analisis Hasil Perhitungan Metrics Tabel 1 Ringkasan statistik WMC pada


perangkat lunak ERP.
Dari hasil perhitungan keenam metrics
yang didapat pada tahap sebelumnya, dapat Metric Min Max Median Stdev
dilakukan analisis sebagai berikut:
WMC 0 81 9 15.9791
1 Weighted Methods per Class (WMC)
2 Depth of Inheritance Tree (DIT)
Histogram pada gambar 6 memperlihatkan
bahwa modus nilai WMC adalah 6, yaitu Gambar 7 adalah histogram DIT pada
sebanyak 30 class. Selain itu, sebanyak 224 perangkat lunak ERP. Tidak seperti WMC,
class memiliki WMC di bawah 50 dan hanya DIT pada perangkat lunak ERP cenderung
12 class yang memiliki WMC di atas 50. Ini memiliki nilai yang hampir seragam. Modus
menunjukkan bahwa sebagian besar class DIT adalah 1, yaitu sebanyak 189 class. Ini
yang ada pada perangkat lunak ERP memiliki berarti bahwa sebagian besar class pada
kompleksitas yang masih bisa ditoleransi. perangkat lunak ERP hanya mewarisi class
root-nya, yaitu class java.lang.Object. Selain
Class yang memiliki WMC di bawah 50,
itu, sebanyak 47 class memiliki nilai DIT
bukan berarti class tersebut tidak kompleks.
sebesar 3. Ini berarti bahwa tingkat reuse pada
Bisa saja methods pada class tersebut lebih
perangkat lunak ERP sangat tinggi karena
banyak menggunakan message passing. Hal
semua class mewarisi superclass-nya. Untuk
ini tentunya dapat mengurangi nilai CC pada
class yang memiliki nilai DIT 3, class tersebut
methods tersebut sehingga mengurangi nilai
memiliki tingkat reuse yang lebih tinggi,
WMC. Akan tetapi, WMC setidaknya dapat
tetapi juga meningkatkan kompleksitasnya.
menentukan class mana saja yang patut
disarankan untuk diperiksa ulang dan/atau
direvisi.

Gambar 7 Histogram DIT pada perangkat


lunak ERP.

Gambar 6 Histogram WMC pada perangkat Tabel 2 memperlihatkan ringkasan statistik


lunak ERP. nilai-nilai DIT. Metric DIT pada perangkat
lunak ERP memiliki nilai median sebesar 1.
Ada sebanyak 12 class yang disarankan Dengan demikian, rata-rata class pada
diperiksa ulang dan/atau diperbaiki dari segi perangkat lunak ERP memiliki nilai DIT yang
kompleksitas karena memiliki WMC di atas kecil di bawah nilai batas atas yang
50. 12 class tersebut dapat dilihat pada disarankan oleh RefactorIT, yaitu sebesar 5.
lampiran 4. Atau lebih tepatnya lagi, semua class pada
Tabel 1 memperlihatkan ringkasan statistik perangkat lunak ERP memiliki nilai DIT di
nilai-nilai WMC pada perangkat lunak ERP. bawah 5. Dengan demikian tidak perlu
Tabel tersebut memperlihatkan nilai standard dilakukan pemeriksaan ulang dan/atau revisi
deviasi yang cukup besar. Ini berarti nilai-nilai pada semua class dari segi inheritance.
WMC pada classes yang diamati menyebar Tabel 2 Ringkasan statistik DIT pada
dari nilai tengahnya sehingga lebih baik perangkat lunak ERP.
menggunakan nilai median sebagai nilai rata-
rata daripada menggunakan nilai mean Metric Min Max Median Stdev
(Walpole 1992). Dari nilai mediannya, dapat DIT 1 3 1 0.80042
diartikan bahwa rata-rata nilai WMC
perangkat lunak ERP memiliki nilai di bawah 3 Number of Children (NOC)
nilai batas atas. Dengan demikian WMC
perangkat lunak ERP rendah. Histogram pada gambar 8 menjelaskan
bahwa NOC pada perangkat lunak ERP
8

seragam, yaitu sebesar 0. Ini berarti bahwa setidaknya kedua pencilan tersebut memiliki
semua class pada perangkat lunak ERP tidak peluang besar untuk diperiksa ulang dan/atau
memiliki subclass. Dengan kata lain, direvisi. Hal ini dikarenakan class dengan
pengembang perangkat lunak ERP tidak nilai CBO yang semakin besar
memanfaatkan pewarisan dalam membuat mengindikasikan class tersebut semakin sulit
class. Hal ini mungkin diakibatkan kurangnya dipahami, semakin sulit untuk digunakan
komunikasi antara desainer class yang ulang, dan tentunya semakin sulit dirawat.
berbeda sehingga kesempatan reuse class Kedua class tersebut dapat dilihat pada
tidak dapat direalisasikan. lampiran 4.

Gambar 8 Histogram NOC pada perangkat Gambar 9 Histogram CBO pada perangkat
lunak ERP. lunak ERP.
NOC yang semakin rendah berarti Tabel 4 menunjukkan bahwa nilai-nilai
kemungkinan kesalahan dalam melakukan CBO cukup menyebar dari nilai tengahnya.
sub-classing semakin rendah. Dalam kasus ini Selain itu, median sebesar 4 menunjukkan
tidak terdapat kesalahan dalam melakukan bahwa rata-rata nilai CBO pada perangkat
sub-classing karena semua class memiliki lunak ERP cukup rendah.
nilai NOC sebesar 0.
Tabel 4 Ringkasan statistik CBO pada
Tabel 3 memperlihatkan ringkasan statistik perangkat lunak ERP.
nilai-nilai NOC. Dapat dilihat pada tabel 3
bahwa semua nilai statistiknya adalah 0. Metric Min Max Median Stdev
Dengan demikian, rata-rata nilai NOC sangat CBO 0 25 4 3.7587
rendah dibandingkan nilai batas atas yang
disarankan RefactorIT sehingga tidak 5 Response for A Class (RFC)
diperlukan pemeriksaan ulang dan/atau revisi
class dari segi ketepatan sub-classing.
Tabel 3 Ringkasan statistik NOC pada
perangkat lunak ERP.

Metric Min Max Mean Stdev


NOC 0 0 0 0

4 Coupling Between Object Class (CBO)


Histogram pada gambar 9 menjelaskan
Gambar 10 Histogram RFC pada perangkat
bahwa nilai CBO pada perangkat lunak ERP
memiliki modus sebesar 1. Sebanyak 66 class lunak ERP.
memiliki nilai CBO sebesar 1. Histogram Histogram pada gambar 8 menjelaskan
tersebut juga menunjukkan adanya dua bahwa modus nilai RFC adalah 4, yaitu
pencilan atau nilai ekstrim. Kedua pencilan sebanyak 22 class. Selain itu, histogram
tersebut memiliki nilai CBO masing-masing tersebut juga menunjukkan bahwa sebagian
sebesar 21 dan 25. besar class memiliki nilai RFC di bawah batas
Karena belum ditemukannya nilai batas atas yang disarankan RefactorIT, yaitu sebesar
50. Jumlah class tersebut sebanyak 213 class.
atas CBO, tidak dapat dipastikan apakah
Sisanya, 23 class, memiliki nilai di atas batas
kedua pencilan tersebut disarankan untuk
atas. RFC yang tinggi tentunya meningkatkan
diperiksa ulang dan/atau direvisi. Akan tetapi,
kompleksitas class tersebut. Dengan
9

demikian, ke-23 class tersebut disarankan Rosenberg (1998) mengatakan semakin


untuk diperiksa ulang dan/atau direvisi kecil nilai LCOM dibandingkan dengan nilai
sehingga nilai RFC-nya bisa berada di bawah maksimumnya, semakin baik cohesiveness-
nilai batas atas yang disarankan oleh nya, begitu juga sebaliknya. Dengan demikian
RefactorIT. Ke-23 class tersebut dapat dilihat perlu diketahui nilai rasio antara nilai aktual
pada lampiran 4. LCOM dengan nilai maksimal LCOM suatu
class sebelum menyimpulkan tingkat
Tabel 5 memperlihatkan ringkasan statistik
cohesiveness-nya. Berdasarkan landasan
nilai-nilai RFC. Rata-rata nilai RFC, sebesar
tersebut nilai rasio didapat dengan rumus
20, berada di bawah nilai batas atas yang
sebagai berikut:
disarankan oleh RefactorIT. Ini berarti RFC
pada perangkat lunak ERP rendah.
Tabel 5 Ringkasan statistik RFC pada
perangkat lunak ERP. dimana,

Metric Min Max Median Stdev • rasioLCOM adalah nilai rasio LCOM
• LCOM adalah nilai aktual LCOM suatu
RFC 0 153 20 23.2365 class.
• maxLCOM adalah nilai maksimum LCOM
6 Lack of Cohesion in Methods (LCOM)
suatu class.
Gambar 11 memperlihatkan histogram
maxLCOM terjadi ketika |Q| = 0, yaitu
LCOM. Dapat dilihat dengan jelas bahwa
ketika |P| maksimal. Ini berarti tidak terdapat
modus nilai LCOM sebesar 0, yaitu sebanyak
satu-pun pasangan method yang menggunakan
116 class. Seperti yang telah dibahas pada
instance variable yang sama. Dengan kata
Tinjauan Pustaka, nilai LCOM sebesar 0 dapat
lain, nilai maksimum LCOM dirumuskan
terjadi ketika nilai |P| ≤ |Q|. Selain itu, dapat
sebagai berikut:
juga terjadi ketika semua n himpunan {I1},
{I2}, …, {In} adalah Ø. Dengan demikian,
class yang memiliki nilai LCOM sebesar 0
bisa saja adalah class yang tidak memiliki dimana,
instance variable, class yang hanya memiliki • NOM adalah number of methods, yaitu
1 buah method, atau bahkan interface. jumlah method yang terdapat pada class.
Banyaknya nilai 0 ini terjadi karena memang
sebagian besar class pada perangkat lunak Nilai rasio tersebut berada dalam selang
ERP adalah interface dan class yang tidak [0, 1]. Class yang memiliki nilai rasio yang
memiliki instance variable. semakin dekat dengan 0, berarti semakin
tinggi cohesiveness class tersebut. Begitu juga
sebaliknya, semakin dekat nilai rasio sebuah
class dengan 1, berarti semakin rendah
cohesiveness class tersebut.
Nilai rasio masing-masing class dapat
dilihat pada lampiran 3. Nilai rasio tersebut
dapat digunakan sebagai petunjuk untuk
mengetahui class mana saja yang sekiranya
perlu diperiksa ulang dan/atau direvisi, yaitu
class yang memiliki nilai rasioLCOM
mendekati 1 (cohesiveness rendah). Class
Gambar 11 Histogram LCOM pada perangkat tersebut disarankan untuk dipecah menjadi
lunak ERP. dua atau lebih class agar tingkat cohesiveness-
Histogram tersebut juga memperlihatkan nya menjadi lebih tinggi.
cukup banyaknya nilai LCOM yang berada di Tabel 6 Ringkasan statistik nilai rasio LCOM
atas 100, yaitu sebanyak 58 class. Bahkan pada perangkat lunak ERP.
terdapat class yang memiliki nilai LCOM
mencapai 2588. Akan tetapi, nilai LCOM rasioLCOM
yang besar belum berarti tingkat cohesiveness
Min Max Mean Stdev
suatu class rendah.
0.0000 0.9693 0.3191 0.3670
10

Dapat dilihat pada tabel 6, nilai standard beserta pengaruhnya terhadap faktor-faktor
deviasi dari nilai rasio LCOM cukup kecil kualitas.
sehingga tidak terlalu banyak pencilan dalam
Dapat dilihat pada tabel 7 bahwa WMC
data. Dengan demikian, rata-rata nilai rasio
dan CBO yang rendah mengakibatkan
LCOM dapat menggunakan nilai mean, yaitu
peningkatan reusability. Ini berarti setiap
sebesar 0.3191. Ini menandakan tingginya
class mudah untuk di-reuse karena memiliki
tingkat cohesiveness perangkat lunak ERP.
kompleksitas yang rendah. Di lain sisi,
Dengan kata lain LCOM pada perangkat
rendahnya DIT dan NOC mengakibatkan
lunak ERP dapat dikatakan cukup rendah.
penurunan reusability. Ini dapat terjadi
7 Kualitas Perangkat Lunak ERP karena, pada kenyataanya, pengembang tidak
terlalu memanfaatkan pewarisan dalam
Dari hasil analisis keenam metrics, dapat
membuat class. Perbedaan tersebut dapat
dianalisis lebih lanjut seberapa baik kualitas
terjadi karena WMC dan CBO melakukan
perangkat lunak ERP berdasarkan faktor-
prediksi seberapa mudah suatu class untuk
faktor kualitas yang terkait dengan keenam
digunakan ulang berdasarkan kompleksitasnya
metrics tersebut. Tinggi rendahnya nilai
sedangkan DIT dan NOC lebih melihat
metrics akan mempengaruhi pada tinggi
kepada fakta apakah suatu class
rendahnya faktor-faktor kualitas yang terkait
memanfaatkan pewarisan secara baik. Dengan
pada masing-masing metric. Sebagai contoh,
demikian, perbedaan pengaruh kedua
nilai WMC yang tinggi menyebabkan
pasangan metrics tersebut bukan merupakan
menurunnya tingkat reusability, usability, dan
suatu keanehan.
testability. Untuk lebih jelasnya, dapat dilihat
pengaruh nilai metrics terhadap faktor-faktor Lain halnya dengan faktor kualitas selain
kualitas yang terkait pada lampiran 5. reusability, setiap metric meningkatkan faktor
kualitas usability, understandability,
Pada pembahasan sebelumnya telah
modifiability, dan testability. Dengan
diketahui apakah nilai setiap metrics pada
demikian, kualitas perangkat lunak ERP dapat
perangkat lunak ERP itu rendah atau tinggi.
dikatakan tinggi dari segi usability,
Dengan demikian, dapat diketahui seberapa
understandability, modifiability, dan
tinggi reusability, usability, uderstandability,
testability. Akan tetapi, dari segi reusability
modifiability, dan testability perangkat lunak
hanya dapat dikatakan moderat.
ERP dari nilai-nilai hasil pengukuran keenam
metrics. Tabel 7 memperlihatkan ringkasan
tinggi rendahnya nilai rata-rata setiap metric

Tabel 7 Kategori metrics perangkat lunak ERP beserta pengaruhnya terhadap faktor kualitas

Faktor Kualitas
No Metrics Kategori
Reusability Usability Understandability Modifiability Testability

1 WMC rendah ↑ ↑ NA NA ↑

2 DIT rendah ↓ NA ↑ ↑ ↑

3 NOC rendah ↓ NA NA NA ↑

4 CBO rendah ↑ NA ↑ ↑ ↑

5 RFC rendah NA NA ↑ ↑ ↑

6 LCOM rendah NA NA ↑ ↑ ↑

Keterangan : NA = Not Applicable


11

KESIMPULAN DAN SARAN Seminar Nasional Informatika 2008 ISSN:


1979-2328: 149-156.
Kesimpulan
Fenton, Norman E. & Shari Lawrence
Enam buah metrics yang diajukan oleh Pfleeger. 1997. Software Metrics: A
Chidamber & Kemerer (1994) dapat Rigourous and Practical Approach.
digunakan untuk mengetahui kualitas Boston: PWS Publishing Company.
perangkat lunak berorientasi objek dari
beberapa faktor kualitas. Selain itu, metrics Hogan, Jer. 1997. An Analysis of OO Software
tersebut juga dapat digunakan untuk Metrics. Coventry: Department of
mengetahui class mana saja yang perlu Computer Science, University of
diperiksa ulang dan/atau direvisi. Akan tetapi, Warwick.
LCOM tidak dapat digunakan langsung untuk Jawadekar, Waman S. 2004. Software
mengetahui class mana saja yang perlu Engineering: Principles and Practice.
diperiksa ulang dan/atau direvisi. New Delhi: Tata McGraw-Hill.
Berdasar pada hasil analisis, dapat Lindroos, Jaana. 2004. Code and Design
disimpulkan bahwa perangkat lunak ERP Metrics for Object-Oriented Systems.
(Ernita 2008) berkualitas baik dari segi Helsinski: Department of Computer
usability, understandability, modifiability, dan Science, University of Helsinsky.
testability. Akan tetapi, dari segi reusability,
kualitas perangkat lunak ERP hanya dapat Rosenberg, Linda H. 1998. Applying and
dikatakan moderat. Interpreting Object Oriented Metrics.
Utah: SATC NASA.
Saran
Sarker, Muktamyee. 2005. An Overview of
Penelitian selanjutnya disarankan Object Oriented Design Metrics [Master
menggunakan object oriented metrics lainnya Thesis]. Umea: Department of Computer
sehingga kualitas perangkat lunak ERP dapat Science, Umea University.
diketahui dari faktor-faktor kualitas lainnya.
Selain itu, penelitian selanjutnya dapat pula SATC. 1995. Software Quality Metrics for
mengimplementasikan Chidamber & Kemerer Object Oriented System Environments.
metrics untuk mengukur seberapa besar Grenbelt Maryland : NASA Goddard
pengaruh penggunaan framework pada Java Space Flight Center.
terhadap kualitas perangkat lunak tersebut. Spinellis, Diomidis. 2005. Tool Writing: A
Forgotten Art?. IEEE Software.

DAFTAR PUSTAKA Systa, Tarja & Ping Yu. 1999. Using OO


Metrics and Rigi to Evaluate Java
Andersson, Magnus & Patrik Vestergren. Software. Tampere: Department of
2004. Object-Oriented Design Quality Computer Science, University of Tampere.
Metrics [Master Thesis]. Uppsala:
Computing Science Department, Uppsala Walpole, Ronald E. 1982. Pengantar
University. Statistika. Jakarta: PT Gramedia Pustaka
Utama.
Barbacci, Mario R. 2004. Software Quality
Atributes: Modifiability And Usability.
Pittsburgh: Carnegie Mellon University.
Chidamber, S dan Chris F. Kemerer. 1994. A
Metrics Suite for Object Oriented Design.
IEEE Transaction on Software
Engineering, vol. 20 no. 6.
El-Ahmadi, Abdellatif. 2006. Software
Quality Metrics for Object Oriented
Systems. Kongens Lyngby : Technical
University of Denmark.
Ernita, Halida. 2008. Pengembangan
Enterprise Resource Planning (ERP)
Untuk Perusahaan Ritel. Prosiding
LAMPIRAN
13

Lampiran 1 Source Code Class LoginCustomerController


1 package ilkom.erp.web.controller.customer;
2
3 import ilkom.erp.order.OrderDebitur;
4 import ilkom.erp.service.OrderService;
5 import ilkom.erp.web.util.MessageResourceUtil;
6 import ilkom.erp.web.util.SessionUtil;
7 import java.security.MessageDigest;
8 import java.security.NoSuchAlgorithmException;
9 import java.util.logging.Level;
10 import java.util.logging.Logger;
11 import javax.faces.application.FacesMessage;
12
13 public class LoginCustomerController {
14 private OrderService orderService;
15 private OrderDebitur debitur = new OrderDebitur();
16 private String realPassword;
17
18 public String getRealPassword() {
19 return realPassword;
20 }
21
22 public void setRealPassword(String realPassword) {
23 this.realPassword = realPassword;
24 }
25
26 public void setOrderService(OrderService orderService) {
27 this.orderService = orderService;
28 }
29
30 public OrderDebitur getDebitur() {
31 return debitur;
32 }
33
34 public void setDebitur(OrderDebitur debitur) {
35 this.debitur = debitur;
36 }
37
38 public String login(){
39 OrderDebitur orderDebiturDb =
40 orderService.getByNameOrderDebitur(debitur.getDebiturName());
41
42 if (orderDebiturDb==null){
43 MessageResourceUtil.addMessage(FacesMessage.SEVERITY_INFO,
44 Login.fail.signUpFirst", null);
45 clear();
46 return "fail";
47 }else if(!orderDebiturDb.getPassword().equals(md5(realPassword))){
48 MessageResourceUtil.addMessage(FacesMessage.SEVERITY_INFO,
49 "Login.fail", null);
50 clear();
51 return "fail";
52 }
53
54 SessionUtil.setDebitur(orderDebiturDb);
55 return "login success";
56 }
57
58 public String signUp(){
59 clear();
60 return "signup";
61 }
62
63 private void clear() {
64 debitur = new OrderDebitur();
65 }
66
67 public static String md5(String s){
68 try {
69 MessageDigest md = MessageDigest.getInstance("MD5");
70 md.update(s.getBytes());
71 return new String(md.digest());
14

Lanjutan

72 } catch (NoSuchAlgorithmException ex) {


73
74 Logger.getLogger(LoginCustomerController.class.getName()).log(Level.SEVERE,
75 null, ex);
76 }
77 return null;
78 }
79 }

Lampiran 2 Perhitungan Metrics pada Class LoginCustomerController

• WMC
Class LoginCustomerController memiliki 10 buah method, yaitu getRealPassword(),
setRealPassword(), setOrderService(), getDebitur(), setDebitur(), login(), signup(), clear(), md5().
Akan tetapi, masih terdapat satu buah method yang secara implisit selalu dimiliki oleh sebuah
class di Java, yaitu method constructor. Kalau tidak didefinisikan oleh pembuat class, konstruktor
tersebut disebut default constructor. Default constructor ini memanggil method super(), yaitu
konstruktor dari superclass-nya. Dengan demikian, class LoginCustomerController memiliki 7
buah method.
CC untuk setiap method sebagai berikut:
Constructor: CC1 = P + 1 = 0 + 1 =1
getRealPassword(): CC2 = P + 1 = 0 + 1 =1
setRealPassword(): CC3 = P + 1 = 0 + 1 =1
setOrderService(): CC4 = P + 1 = 0 + 1 = 1
getDebitur(): CC5 = P + 1 = 0 + 1 = 1
setDebitur(): CC6 = P + 1 = 0 + 1 = 1
login(): CC7 = P + 1 = 2 + 1 = 3
signup(): CC8 = P + 1 = 0 + 1 = 1
clear(): CC9 = P + 1 = 0 + 1 = 1
md5():CC10 = P + 1 = 1 + 1 = 2
Dari CC setiap method didapat :

• DIT
Class LoginCustomerController tidak melakukan extends (mewarisi) class lain secara eksplisit.
Akan tetapi, setiap class di Java mewarisi class Object dan class Object adalah root pada hierarki
pewarisan class di Java. Dengan demikian,

• NOC
Setelah menelusuri semua class pada data, tidak terdapat satu pun class yang mewarisi class
LoginCustomerController. Dengan demikian,
15

Lanjutan
• CBO
Class LoginCustomerController memiliki instance variable dari class OrderService (orderService)
dan OrderDebitur (debitur). Selain itu, method login() memanggil static method addMessage() dari
class MessageResourceUtil dan static method setDebitur() dari class SessionUtil. Dengan
demikian,

• RFC
Semua method yang terdapat pada class LoginCustomerController dan method yang dipanggil di
dalamnya sebagai berikut:
• Constructor memanggil Object.super().
• getRealPassword() tidak memanggil method lain.
• setRealPassword() tidak memanggil method lain.
• setOrderService() tidak memanggil method lain.
• getDebitur() tidak memanggil method lain.
• setDebitur() tidak memanggil method lain.
• login() memanggil OrderService.getByNameOrderDebitur(), OrderDebitur.getDebiturName(),
MessageResourceUtil.addMessage(), this.clear(), OrderDebitur.getPassword(),
String.equals(), this.md5(), dan SessionUtil.setDebitur().
• signUp() memanggil this.clear().
• clear() memanggil OrderDebitur.this().
• md5() memanggil MessageDigest.getInstance(), MessageDigest.update(), String.getBytes(),
String.this(), MessageDigest.digest(), Logger.getLogger(),
LoginCustomerController.class.getName(), Logger.log().
Selanjutnya RS dapat ditentukan sebagai berikut :

= {this(), this.getRealPassword(), this.setRealPassword(), this.setOrderService(),


this.getDebitur(), this.setDebitur(), this.login(), this.signUp(), this.clear(), this.md5(),
Object.super(), OrderService.getByNameOrderDebitur(), OrderDebitur.getDebiturName(),
MessageResourceUtil.addMessage(), OrderDebitur.getPassword(), String.equals(),
SessionUtil.setDebitur(), OrderDebitur.this(), MessageDigest.getInstance(),
MessageDigest.update(), String.this(), String.getBytes(), MessageDigest.digest(),
Logger.getLogger(), LoginCustomerController.class.getName(), Logger.log()}
Dengan demikian,

• LCOM
Class LoginCustomerController memiliki dua buah instance variable, yaitu orderService dan
debitur sehingga,
Iconstructor = I1 = Ø
IgetRealPassword = I2 ={realPassword}
IsetRealPassword = I3 ={realPassword}
IsetOrderService = I4 = {orderService}
16

Lanjutan
IgetDebitur = I5 = {debitur}
IsetDebitur = I6 = { debitur}
Ilogin = I7 = {orderService, debitur, realPassword}
IsignUp = I8 = {debitur}
Iclear = I9 = {debitur}
Imd5 = I10 = Ø
Kemudian, dari hasil di atas dapat ditentukan himpunan P dan Q sebagai berikut:
P = { I1 ∩ I2, I1 ∩ I3, I1 ∩ I4, I1 ∩ I5, I1 ∩ I6, I1 ∩ I7, I1 ∩ I8, I1 ∩ I9, I1 ∩ I10, I2 ∩ I4, I2 ∩ I5, I2 ∩ I6, I2 ∩
I8, I2 ∩ I9, I2 ∩ I10, I3 ∩ I4, I3 ∩ I5, I3 ∩ I6, I3 ∩ I8, I3 ∩ I9, I3 ∩ I10, I4 ∩ I5, I4 ∩ I6, I4 ∩ I8, I4 ∩ I9, I4 ∩ I10,
I5 ∩ I10, I6 ∩ I10, I7 ∩ I10, I8 ∩ I10, I9 ∩ I10}
Q = { I2 ∩ I3, I2 ∩ I7, I3 ∩ I7, I4 ∩ I7, I5 ∩ I6, I5 ∩ I7, I5 ∩ I8, I5 ∩ I9, I6 ∩ I7, I6 ∩ I8, I6 ∩ I9, I7 ∩ I8, I7 ∩
I9, I8 ∩ I9}
Karena |P| >|Q|, dengan demikian
17

Lampiran 3 Hasil Perhitungan Metrics pada Semua Class Project ERP


No. Class WMC DIT NOC CBO RFC LCOM MaxLCOM RasioLCOM
1 ilkom.erp.web.controller.admin.AccPeriodListController 7 1 0 4 15 6 21 0.2857
2 ilkom.erp.purchase.dao.PurchaseDemandDetailDao 4 1 0 1 4 0 6 0.0000
3 ilkom.erp.purchase.dao.hibernate.PurchaseSupplierDaoHibernate 14 3 0 7 27 0 45 0.0000
4 ilkom.erp.order.dao.hibernate.OrderCartDaoHibernate 12 3 0 9 30 0 21 0.0000
5 ilkom.erp.web.controller.deliveryOrder.DeliverOrderCartController$OrderCartWrapper 5 1 0 1 9 6 10 0.6000
6 ilkom.erp.order.OrderCartDetail 21 1 0 4 22 190 210 0.9048
7 ilkom.erp.web.controller.admin.AdminUserFormController 16 1 0 4 31 18 78 0.2308
8 ilkom.erp.order.dao.hibernate.OrderShippingTypeDaoHibernate 6 3 0 5 17 0 10 0.0000
9 ilkom.erp.web.controller.accountReceivable.ARInvoiceController 11 1 0 3 17 18 36 0.5000
10 ilkom.erp.web.controller.accountPayable.APMonthEndController 19 1 0 9 58 82 136 0.6029
11 ilkom.erp.accountReceivable.dao.hibernate.AccountReceivableMonthEndDaoHibernate 6 3 0 9 21 0 10 0.0000
12 ilkom.erp.order.dao.OrderShippingTypeDao 4 1 0 1 4 0 6 0.0000
13 ilkom.erp.purchase.PurchaseOrderDetail 21 1 0 4 22 190 210 0.9048
14 ilkom.erp.web.controller.inventory.ListInventoryController 15 1 0 4 28 9 45 0.2000
15 ilkom.erp.service.AccountPayableService 25 1 0 5 25 0 300 0.0000
16 ilkom.erp.purchase.dao.PurchaseRequisitionDao 5 1 0 1 5 0 10 0.0000
17 ilkom.erp.web.util.SessionUtil 15 1 0 3 21 0 55 0.0000
18 ilkom.erp.admin.dao.AdminUserDao 6 1 0 1 6 0 15 0.0000
19 ilkom.erp.service.PurchaseService 57 1 0 12 57 0 1596 0.0000
20 ilkom.erp.generalLedger.GLMonthEnd 39 1 0 5 40 703 741 0.9487
21 ilkom.erp.purchase.dao.hibernate.PurchaseDemandDetailDaoHibernate 6 3 0 8 20 0 10 0.0000
22 ilkom.erp.order.dao.OrderCartDao 6 1 0 1 6 0 15 0.0000
23 ilkom.erp.purchase.dao.PurchaseDemandDao 6 1 0 2 6 0 15 0.0000
24 ilkom.erp.inventory.InventoryGoodReceiveDetail 23 1 0 5 24 231 253 0.9130
25 ilkom.erp.generalLedger.dao.GLMonthEndDao 4 1 0 1 4 0 6 0.0000
26 ilkom.erp.generalLedger.dao.hibernate.GeneralLedgerDaoHibernate 6 3 0 5 17 0 10 0.0000
27 ilkom.erp.service.OrderService 31 1 0 7 31 0 465 0.0000
28 ilkom.erp.web.validator.EmailValidator 3 1 0 0 10 1 1 0.0000
29 ilkom.erp.web.controller.purchase.ListSupplierController$PurchaseSupplierWrapper 5 1 0 3 8 2 10 0.2000
30 ilkom.erp.inventory.dao.InventoryProductCategoryDao 4 1 0 1 4 0 6 0.0000
31 ilkom.erp.purchase.dao.PurchaseMonthendtrxDao 4 1 0 1 4 0 6 0.0000
32 ilkom.erp.web.controller.accountReceivable.AddReceiptController 62 1 0 12 95 368 630 0.5841
33 ilkom.erp.inventory.InventoryProductCategory 15 1 0 1 17 87 105 0.8286
34 ilkom.erp.web.controller.admin.AdminUOMController 7 1 0 4 15 6 21 0.2857
35 ilkom.erp.purchase.dao.hibernate.PurchaseRequisitionDetailDaoHibernate 7 3 0 8 22 0 15 0.0000
36 ilkom.erp.web.util.MessageResourceUtil 4 1 0 0 18 0 6 0.0000
37 ilkom.erp.order.OrderShippingType 11 1 0 1 12 45 55 0.8182
38 ilkom.erp.web.controller.customer.InventoryItemController 5 1 0 1 8 0 10 0.0000
39 ilkom.erp.inventory.InventoryGoodReceive 29 1 0 3 31 374 406 0.9212
40 ilkom.erp.accountReceivable.AccountReceivableReceipt 25 1 0 2 28 246 276 0.8913
41 ilkom.erp.web.controller.customer.FormOrderCartController$OrderCartDetailWrapper 7 1 0 1 17 7 15 0.4667
42 ilkom.erp.web.controller.admin.AdminUOMConvFormController 22 1 0 4 37 56 136 0.4118
43 ilkom.erp.inventory.dao.InventoryProductBrandDao 4 1 0 1 4 0 6 0.0000
44 ilkom.erp.web.controller.admin.AdminVehicleController 7 1 0 4 15 6 21 0.2857
45 ilkom.erp.web.controller.generalLedger.GLAccountAddController 10 1 0 3 15 0 36 0.0000
46 ilkom.erp.purchase.PurchaseDemand 31 1 0 4 34 399 435 0.9172
47 ilkom.erp.admin.dao.hibernate.AdminUserDaoHibernate 9 3 0 5 25 0 21 0.0000
48 ilkom.erp.admin.dao.AdminUOMDao 5 1 0 1 5 0 10 0.0000
49 ilkom.erp.accountReceivable.dao.hibernate.AccountReceivableReceiptDaoHibernate 7 3 0 6 21 0 15 0.0000
50 ilkom.erp.web.controller.purchase.ApproveListRFQSupplierController$PurchaseSupplyRFQWrapper 7 1 0 2 15 7 15 0.4667
18

Lanjutan
No. Class WMC DIT NOC CBO RFC LCOM MaxLCOM RasioLCOM
51 ilkom.erp.web.controller.inventory.FormInventoryController 46 1 0 10 77 324 496 0.6532
52 ilkom.erp.web.controller.accountReceivable.AddReceiptController$ReceiptDetailWrapper 5 1 0 1 11 6 10 0.6000
53 ilkom.erp.order.dao.hibernate.OrderPaymentTypeDaoHibernate 6 3 0 5 17 0 10 0.0000
54 ilkom.erp.purchase.PurchaseMonthendtrx 37 1 0 4 38 630 666 0.9459
55 ilkom.erp.purchase.PurchaseSupplyRFQDetail 28 1 0 4 30 264 300 0.8800
56 ilkom.erp.purchase.dao.PurchaseSupplyRFQDetailDao 6 1 0 3 6 0 15 0.0000
57 ilkom.erp.web.controller.accountPayable.APPaymentController 11 1 0 3 17 18 36 0.5000
58 ilkom.erp.web.util.UserAuthenticatinPhaseListener 24 1 0 4 20 0 10 0.0000
59 ilkom.erp.web.controller.purchase.ApproveListRFQSupplierController 11 1 0 7 27 14 28 0.5000
60 ilkom.erp.accountReceivable.dao.AccountReceivableReceiptDao 5 1 0 1 5 0 10 0.0000
61 ilkom.erp.order.dao.OrderPaymentTypeDao 4 1 0 1 4 0 6 0.0000
62 ilkom.erp.web.controller.generalLedger.GLJournalController 9 1 0 3 15 11 21 0.5238
63 ilkom.erp.accountPayable.AccountPayableInvoice 31 1 0 3 34 399 435 0.9172
64 ilkom.erp.admin.AdminVehicle 27 1 0 4 29 297 325 0.9138
65 ilkom.erp.purchase.PurchaseRequisition 25 1 0 2 28 246 276 0.8913
66 ilkom.erp.admin.AdminUOM 15 1 0 1 17 75 91 0.8242
67 ilkom.erp.order.dao.OrderDebiturDao 5 1 0 1 5 0 10 0.0000
68 ilkom.erp.accountPayable.AccountPayableInvoiceDetail 25 1 0 6 26 276 300 0.9200
69 ilkom.erp.inventory.dao.hibernate.InventoryGoodReceiveDaoHibernate 6 3 0 7 20 0 10 0.0000
70 ilkom.erp.web.controller.customer.SignUpController 14 1 0 4 21 21 55 0.3818
71 ilkom.erp.accountPayable.dao.AccountPayableInvoiceDao 6 1 0 1 6 0 15 0.0000
72 ilkom.erp.web.controller.purchase.RFQSupplierController 20 1 0 6 35 25 55 0.4545
73 ilkom.erp.purchase.dao.hibernate.PurchaseSupplyRFQDaoHibernate 17 3 0 10 39 0 55 0.0000
74 ilkom.erp.inventory.InventoryProductBrand 15 1 0 1 17 87 105 0.8286
75 ilkom.erp.web.controller.inventory.GoodReceiveController$GoodReceiveDetailWrapper 5 1 0 1 10 6 15 0.4000
76 ilkom.erp.order.OrderDebitur 53 1 0 2 55 1318 1378 0.9565
77 ilkom.erp.web.controller.purchase.PurchaseDemandController 9 1 0 11 45 11 21 0.5238
78 ilkom.erp.admin.AdminAccPeriod 17 1 0 1 19 102 120 0.8500
79 ilkom.erp.accountPayable.AccountPayableMonthEnd 37 1 0 5 38 630 666 0.9459
80 ilkom.erp.web.controller.customer.EditPasswordController 17 1 0 5 23 39 91 0.4286
81 ilkom.erp.accountPayable.dao.AccountPayablePaymentDao 6 1 0 1 6 0 15 0.0000
82 ilkom.erp.order.dao.OrderDeliveryDao 4 1 0 1 4 0 6 0.0000
83 ilkom.erp.purchase.PurchaseSupplier 49 1 0 3 68 779 1035 0.7527
84 ilkom.erp.accountReceivable.dao.AccountReceivableMonthEndDao 4 1 0 1 4 0 6 0.0000
85 ilkom.erp.generalLedger.dao.GLJournalDao 5 1 0 1 5 0 10 0.0000
86 ilkom.erp.web.controller.admin.AdminUserController 7 1 0 4 15 6 21 0.2857
87 ilkom.erp.admin.dao.AdminModulDao 5 1 0 1 5 0 10 0.0000
88 ilkom.erp.web.controller.purchase.ListRFQController 14 1 0 4 28 11 55 0.2000
89 ilkom.erp.inventory.dao.InventoryItemDao 5 1 0 1 5 0 10 0.0000
90 ilkom.erp.web.controller.generalLedger.GLJournalDetailController 44 1 0 8 70 74 276 0.2681
91 ilkom.erp.accountPayable.dao.hibernate.AccountPayablePaymentDaoHibernate 8 3 0 6 22 0 21 0.0000
92 ilkom.erp.web.controller.deliveryOrder.ListOrderCartController 14 1 0 3 28 7 55 0.1273
93 ilkom.erp.admin.dao.hibernate.AdminUOMDaoHibernate 7 3 0 5 19 0 15 0.0000
94 ilkom.erp.order.OrderDelivery 23 1 0 4 25 227 253 0.8972
95 ilkom.erp.purchase.PurchaseDemandDetail 21 1 0 4 22 190 210 0.9048
96 ilkom.erp.accountPayable.dao.hibernate.AccountPayableInvoiceDetailDaoHibernate 8 3 0 9 24 0 21 0.0000
97 ilkom.erp.generalLedger.GLJournal 31 1 0 1 34 399 435 0.9172
98 ilkom.erp.accountPayable.dao.hibernate.AccountPayableInvoiceDaoHibernate 8 3 0 7 23 0 21 0.0000
99 ilkom.erp.admin.dao.hibernate.AdminModulDaoHibernate 7 3 0 5 21 0 15 0.0000
100 ilkom.erp.accountReceivable.dao.AccountReceivableReceiptDetailDao 4 1 0 1 4 0 6 0.0000
19

Lanjutan
No. Class WMC DIT NOC CBO RFC LCOM MaxLCOM RasioLCOM
101 ilkom.erp.web.controller.customer.FormOrderCartController 54 1 0 11 104 385 595 0.6471
102 ilkom.erp.web.controller.LoginController 17 1 0 6 18 3 21 0.1429
103 ilkom.erp.web.controller.purchase.ListSupplierController$1 0 1 0 0 0 0 0 0.0000
104 ilkom.erp.admin.AdminPage 21 1 0 2 23 168 190 0.8842
105 ilkom.erp.web.controller.admin.AdminCompanyController 7 1 0 4 15 6 21 0.2857
106 ilkom.erp.web.controller.inventory.GoodReceiveController 60 1 0 11 87 288 496 0.5806
107 ilkom.erp.admin.dao.AdminGroupDao 5 1 0 1 5 0 10 0.0000
108 ilkom.erp.purchase.PurchaseRFQPrice 11 1 0 2 12 45 55 0.8182
109 ilkom.erp.admin.AdminModulPeriod 33 1 0 1 34 496 528 0.9394
110 ilkom.erp.generalLedger.dao.hibernate.GLMonthEndDaoHibernate 6 3 0 9 21 0 10 0.0000
111 ilkom.erp.service.impl.OrderServiceImpl 46 1 0 15 78 787 1035 0.7604
112 ilkom.erp.web.controller.deliveryOrder.DeliveredCartsController 11 1 0 3 18 0 36 0.0000
113 ilkom.erp.web.controller.customer.ConfirmShippingController 15 1 0 3 24 19 55 0.3455
114 ilkom.erp.inventory.dao.hibernate.InventoryMonthenditemDaoHibernate 6 3 0 6 18 0 10 0.0000
115 ilkom.erp.accountPayable.dao.hibernate.AccountPayableMonthEndDaoHibernate 6 3 0 9 20 0 10 0.0000
116 ilkom.erp.web.util.MessagesNotJsfApprouchListener 6 1 0 0 19 0 6 0.0000
117 ilkom.erp.web.controller.purchase.PurchaseRequisitionController$PurchaseRequisitionDetailWrapper 5 1 0 1 10 6 10 0.6000
118 ilkom.erp.web.controller.admin.AdminCompanyFormController 10 1 0 3 15 0 36 0.0000
119 ilkom.erp.inventory.dao.InventoryGoodReceiveDetailDao 4 1 0 1 4 0 6 0.0000
120 ilkom.erp.inventory.dao.InventoryGoodReceiveDao 4 1 0 1 4 0 6 0.0000
121 ilkom.erp.purchase.dao.hibernate.PurchaseSupplyRFQDetailDaoHibernate 8 3 0 9 25 0 21 0.0000
122 ilkom.erp.generalLedger.dao.hibernate.GLJournalDetailDaoHibernate 6 3 0 7 19 0 10 0.0000
123 ilkom.erp.web.controller.admin.AdminVehicleFormController 24 1 0 6 42 89 171 0.5205
124 ilkom.erp.purchase.dao.hibernate.PurchaseDemandDaoHibernate 10 3 0 8 30 0 21 0.0000
125 ilkom.erp.accountReceivable.AccountReceivableInvoice 27 1 0 3 30 293 325 0.9015
126 ilkom.erp.service.impl.AccountPayableServiceImpl 38 1 0 15 104 392 630 0.6222
127 ilkom.erp.web.controller.purchase.ListPurchaseDemandController 13 1 0 4 20 27 55 0.4909
128 ilkom.erp.admin.AdminCompany 39 1 0 1 41 663 703 0.9431
129 ilkom.erp.accountPayable.AccountPayablePaymentDetail 21 1 0 5 22 190 210 0.9048
130 ilkom.erp.web.util.TextUtil 3 1 0 0 6 0 1 0.0000
131 ilkom.erp.admin.AdminUser 23 1 0 1 25 207 231 0.8961
132 ilkom.erp.web.controller.admin.AdminUOMFormController 10 1 0 3 15 0 36 0.0000
133 ilkom.erp.purchase.dao.hibernate.PurchaseRequisitionDaoHibernate 9 3 0 6 26 0 15 0.0000
134 ilkom.erp.service.AdminService 45 1 0 10 45 0 990 0.0000
135 ilkom.erp.web.controller.admin.AccPeriodController 10 1 0 3 15 0 36 0.0000
136 ilkom.erp.web.controller.purchase.RFQController 68 1 0 11 95 266 496 0.5363
137 ilkom.erp.accountReceivable.dao.AccountReceivableInvoiceDetailDao 4 1 0 1 4 0 6 0.0000
138 ilkom.erp.web.controller.generalLedger.GLPostJournalController 7 1 0 4 16 6 21 0.2857
139 ilkom.erp.accountReceivable.AccountReceivableInvoiceDetail 25 1 0 5 26 276 300 0.9200
140 ilkom.erp.accountReceivable.dao.AccountReceivableInvoiceDao 5 1 0 1 5 0 10 0.0000
141 ilkom.erp.web.controller.purchase.PurchaseOrderController 11 1 0 12 47 26 36 0.7222
142 ilkom.erp.web.controller.deliveryOrder.DeliverOrderCartController 31 1 0 6 52 192 300 0.6400
143 ilkom.erp.admin.AdminGroup 17 1 0 0 20 98 120 0.8167
144 ilkom.erp.purchase.PurchaseRequisitionDetail 19 1 0 4 20 153 171 0.8947
145 ilkom.erp.inventory.dao.hibernate.InventoryGoodReceiveDetailDaoHibernate 6 3 0 8 20 0 10 0.0000
146 ilkom.erp.web.controller.accountPayable.AddInvoiceController 77 1 0 15 119 723 1035 0.6986
147 ilkom.erp.web.controller.accountPayable.APInvoiceController 9 1 0 3 15 5 21 0.2381
148 ilkom.erp.admin.dao.hibernate.AdminGroupDaoHibernate 7 3 0 4 20 0 15 0.0000
149 ilkom.erp.order.dao.OrderMonthendtrxDao 4 1 0 1 4 0 6 0.0000
150 ilkom.erp.service.impl.AccountReceivableServiceImpl 33 1 0 11 56 354 528 0.6705
20

Lanjutan
No. Class WMC DIT NOC CBO RFC LCOM MaxLCOM RasioLCOM
151 ilkom.erp.inventory.InventoryMonthenditem 23 1 0 2 24 231 253 0.9130
152 ilkom.erp.inventory.dao.InventoryMonthenditemDao 4 1 0 1 4 0 6 0.0000
153 ilkom.erp.service.impl.AdminServiceImpl 66 1 0 21 111 1779 2145 0.8294
154 ilkom.erp.generalLedger.dao.hibernate.GLJournalDaoHibernate 7 3 0 5 20 0 15 0.0000
155 ilkom.erp.purchase.dao.PurchaseSupplierDao 9 1 0 3 9 0 36 0.0000
156 ilkom.erp.inventory.dao.hibernate.InventoryProductBrandDaoHibernate 6 3 0 5 20 0 10 0.0000
157 ilkom.erp.admin.dao.AdminVehicleDao 5 1 0 1 5 0 10 0.0000
158 ilkom.erp.generalLedger.GeneralLedgerAccount 17 1 0 1 19 102 120 0.8500
159 ilkom.erp.web.controller.purchase.ListPurchaseOrderController 11 1 0 3 18 14 36 0.3889
160 ilkom.erp.service.InventoryService 25 1 0 6 25 0 300 0.0000
161 ilkom.erp.web.controller.admin.AdminUOMConvertionController 7 1 0 4 15 6 21 0.2857
162 ilkom.erp.accountPayable.dao.hibernate.AccountPayablePaymentDetailDaoHibernate 7 3 0 4 17 0 15 0.0000
163 ilkom.erp.order.dao.hibernate.OrderDeliveryDaoHibernate 6 3 0 8 20 0 10 0.0000
164 ilkom.erp.web.controller.purchase.RFQController$PurchaseRFQDetailWrapper 5 1 0 1 10 6 15 0.4000
165 ilkom.erp.purchase.dao.hibernate.PurchaseMonthendtrxDaoHibernate 6 3 0 8 20 0 10 0.0000
166 ilkom.erp.web.controller.accountPayable.AddPaymentController 63 1 0 12 98 368 630 0.5841
167 ilkom.erp.admin.dao.AdminAccPeriodDao 4 1 0 1 4 0 6 0.0000
168 ilkom.erp.web.controller.purchase.ListSupplierController 15 1 0 6 30 5 45 0.1111
169 ilkom.erp.accountReceivable.dao.hibernate.AccountReceivableReceiptDetailDaoHibernate 6 3 0 8 19 0 10 0.0000
170 ilkom.erp.admin.dao.hibernate.AdminUOMConvertionDaoHibernate 7 3 0 6 21 0 15 0.0000
171 ilkom.erp.service.AccountReceivableService 22 1 0 5 22 0 231 0.0000
172 ilkom.erp.purchase.Address 15 1 0 0 16 91 105 0.8667
173 ilkom.erp.web.controller.customer.CompanyController 5 1 0 2 8 2 10 0.2000
174 ilkom.erp.purchase.dao.PurchaseRequisitionDetailDao 5 1 0 1 5 0 10 0.0000
175 ilkom.erp.service.impl.PurchaseServiceImpl 81 1 0 25 153 2588 3160 0.8190
176 ilkom.erp.web.controller.customer.LoginCustomerController 13 1 0 4 26 17 45 0.3778
177 ilkom.erp.purchase.dao.PurchaseOrderDao 5 1 0 1 5 0 10 0.0000
178 ilkom.erp.admin.AdminUOMConvertion 21 1 0 2 23 168 190 0.8842
179 ilkom.erp.admin.dao.AdminUOMConvertionDao 5 1 0 1 5 0 10 0.0000
180 ilkom.erp.purchase.dao.hibernate.PurchaseOrderDaoHibernate 9 3 0 8 28 0 15 0.0000
181 ilkom.erp.web.controller.generalLedger.GLJournalDetailController$GLJournalDetailWrapper 5 1 0 1 10 6 10 0.6000
182 ilkom.erp.admin.dao.hibernate.AdminModulPeriodDaoHibernate 6 3 0 5 17 0 10 0.0000
183 ilkom.erp.inventory.dao.hibernate.InventoryItemDaoHibernate 7 3 0 9 23 0 15 0.0000
184 ilkom.erp.accountReceivable.dao.hibernate.AccountReceivableInvoiceDetailDaoHibernate 6 3 0 9 21 0 10 0.0000
185 ilkom.erp.web.controller.purchase.ListPurchaseRequisitionController 12 1 0 3 23 11 45 0.2444
186 ilkom.erp.order.OrderCart 47 1 0 5 49 1031 1081 0.9537
187 ilkom.erp.admin.dao.hibernate.AdminPageDaoHibernate 7 3 0 5 19 0 15 0.0000
188 ilkom.erp.service.impl.InventoryServiceImpl 38 1 0 13 64 511 703 0.7269
189 ilkom.erp.accountPayable.AccountPayablePayment 25 1 0 2 28 246 276 0.8913
190 ilkom.erp.web.controller.inventory.ListGoodReceiveController 9 1 0 3 15 5 21 0.2381
191 ilkom.erp.order.dao.hibernate.OrderCartDetailDaoHibernate 6 3 0 5 17 0 10 0.0000
192 ilkom.erp.purchase.dao.PurchaseOrderDetailDao 4 1 0 1 4 0 6 0.0000
193 ilkom.erp.accountPayable.dao.AccountPayableInvoiceDetailDao 6 1 0 1 6 0 15 0.0000
194 ilkom.erp.accountReceivable.AccountReceivableMonthEnd 39 1 0 5 40 703 741 0.9487
195 ilkom.erp.web.controller.accountPayable.listInvoiceController 9 1 0 3 15 5 21 0.2381
196 ilkom.erp.order.OrderMonthendtrx 39 1 0 5 40 703 741 0.9487
197 ilkom.erp.admin.dao.hibernate.AdminAccPeriodDaoHibernate 6 3 0 5 17 0 10 0.0000
198 ilkom.erp.web.controller.accountPayable.AddPaymentController$PaymentDetailWrapper 5 1 0 1 11 2 10 0.2000
199 ilkom.erp.generalLedger.GLJournalDetail 19 1 0 3 20 153 171 0.8947
200 ilkom.erp.accountReceivable.AccountReceivableReceiptDetail 19 1 0 4 20 153 171 0.8947
21

Lanjutan
No. Class WMC DIT NOC CBO RFC LCOM MaxLCOM RasioLCOM
201 ilkom.erp.web.controller.SignOutController 2 1 0 0 7 0 1 0.0000
202 ilkom.erp.admin.dao.hibernate.AdminCompanyDaoHibernate 10 3 0 5 22 0 36 0.0000
203 ilkom.erp.service.impl.GeneralLedgerServiceImpl 26 1 0 9 44 193 325 0.5938
204 ilkom.erp.purchase.dao.PurchaseSupplyRFQDao 10 1 0 4 10 0 45 0.0000
205 ilkom.erp.purchase.dao.hibernate.PurchaseOrderDetailDaoHibernate 6 3 0 8 20 0 10 0.0000
206 ilkom.erp.order.dao.hibernate.OrderMonthendtrxDaoHibernate 6 3 0 9 21 0 10 0.0000
207 ilkom.erp.web.controller.accountReceivable.AddARInvoiceController$ARInvoiceDetailWrapper 5 1 0 1 10 6 15 0.4000
208 ilkom.erp.admin.dao.AdminModulPeriodDao 4 1 0 1 4 0 6 0.0000
209 ilkom.erp.web.controller.generalLedger.GLAccountController 7 1 0 4 15 6 21 0.2857
210 ilkom.erp.inventory.InventoryItem 69 1 0 5 71 2208 2278 0.9693
211 ilkom.erp.accountPayable.dao.AccountPayablePaymentDetailDao 5 1 0 1 5 0 10 0.0000
212 ilkom.erp.web.util.MessagesListener 7 1 0 0 14 0 10 0.0000
213 ilkom.erp.generalLedger.dao.GeneralLedgerDao 4 1 0 1 4 0 6 0.0000
214 ilkom.erp.purchase.PurchaseOrder 35 1 0 4 38 521 561 0.9287
215 ilkom.erp.accountPayable.dao.AccountPayableMonthEndDao 4 1 0 1 4 0 6 0.0000
216 ilkom.erp.order.OrderPaymentType 11 1 0 1 12 45 55 0.8182
217 ilkom.erp.service.GeneralLedgerService 17 1 0 4 17 0 136 0.0000
218 ilkom.erp.web.controller.inventory.ListInventoryController$InventoryItemWrapper 5 1 0 2 7 2 10 0.2000
219 ilkom.erp.web.controller.purchase.ListRFQSupplierController 4 1 0 3 9 2 6 0.3333
220 ilkom.erp.admin.dao.AdminCompanyDao 8 1 0 1 8 0 28 0.0000
221 ilkom.erp.web.controller.accountReceivable.AddARInvoiceController 78 1 0 15 118 723 1035 0.6986
222 ilkom.erp.admin.dao.hibernate.AdminVehicleDaoHibernate 7 3 0 8 22 0 15 0.0000
223 ilkom.erp.web.controller.customer.EditProfileController 10 1 0 3 14 23 45 0.5111
224 ilkom.erp.inventory.dao.hibernate.InventoryProductCategoryDaoHibernate 6 3 0 5 18 0 10 0.0000
225 ilkom.erp.generalLedger.dao.GLJournalDetailDao 4 1 0 1 4 0 6 0.0000
226 ilkom.erp.purchase.PurchaseSupplyRFQ 39 1 0 4 43 641 703 0.9118
227 ilkom.erp.order.dao.hibernate.OrderDebiturDaoHibernate 8 3 0 6 24 0 15 0.0000
228 ilkom.erp.web.controller.admin.ModulPeriodController 44 1 0 2 54 339 465 0.7290
229 ilkom.erp.web.controller.purchase.PurchaseRequisitionController 45 1 0 9 65 97 253 0.3834
230 ilkom.erp.web.controller.accountPayable.AddInvoiceController$InvoiceDetailWrapper 5 1 0 1 10 6 10 0.6000
231 ilkom.erp.order.dao.OrderCartDetailDao 4 1 0 1 4 0 6 0.0000
232 ilkom.erp.admin.AdminModul 21 1 0 1 24 160 190 0.8421
233 ilkom.erp.accountReceivable.dao.hibernate.AccountReceivableInvoiceDaoHibernate 7 3 0 7 22 0 15 0.0000
234 ilkom.erp.web.controller.purchase.FormSupplierController 16 1 0 5 31 20 78 0.2564
235 ilkom.erp.admin.dao.AdminPageDao 5 1 0 1 5 0 10 0.0000
236 ilkom.erp.web.controller.accountReceivable.ARReceiptController 11 1 0 3 17 18 36 0.5000
22

Lampiran 4 Beberapa Class yang Disarankan Agar Diperiksa Ulang dan/atau Direvisi Terkait
Dengan Nilai Metrics-nya
Metrics No. Class Nilai Metric
1 ilkom.erp.order.OrderDebitur 53
2 ilkom.erp.web.controller.customer.FormOrderCartController 54
3 ilkom.erp.service.PurchaseService 57
4 ilkom.erp.web.controller.inventory.GoodReceiveController 60
5 ilkom.erp.web.controller.accountReceivable.AddReceiptController 62
6 ilkom.erp.web.controller.accountPayable.AddPaymentController 63
WMC
7 ilkom.erp.service.impl.AdminServiceImpl 66
8 ilkom.erp.web.controller.purchase.RFQController 68
9 ilkom.erp.inventory.InventoryItem 69
10 ilkom.erp.web.controller.accountPayable.AddInvoiceController 77
11 ilkom.erp.web.controller.accountReceivable.AddARInvoiceController 78
12 ilkom.erp.service.impl.PurchaseServiceImpl 81
1 ilkom.erp.service.impl.AdminServiceImpl 21
CBO
2 ilkom.erp.service.impl.PurchaseServiceImpl 25
1 ilkom.erp.web.controller.deliveryOrder.DeliverOrderCartController 52
2 ilkom.erp.web.controller.admin.ModulPeriodController 54
3 ilkom.erp.order.OrderDebitur 55
4 ilkom.erp.service.impl.AccountReceivableServiceImpl 56
5 ilkom.erp.service.PurchaseService 57
6 ilkom.erp.web.controller.accountPayable.APMonthEndController 58
7 ilkom.erp.service.impl.InventoryServiceImpl 64
8 ilkom.erp.web.controller.purchase.PurchaseRequisitionController 65
9 ilkom.erp.purchase.PurchaseSupplier 68
10 ilkom.erp.web.controller.generalLedger.GLJournalDetailController 70
11 ilkom.erp.inventory.InventoryItem 71
RFC 12 ilkom.erp.web.controller.inventory.FormInventoryController 77
13 ilkom.erp.service.impl.OrderServiceImpl 78
14 ilkom.erp.web.controller.inventory.GoodReceiveController 87
15 ilkom.erp.web.controller.accountReceivable.AddReceiptController 95
16 ilkom.erp.web.controller.purchase.RFQController 95
17 ilkom.erp.web.controller.accountPayable.AddPaymentController 98
18 ilkom.erp.web.controller.customer.FormOrderCartController 104
19 ilkom.erp.service.impl.AccountPayableServiceImpl 104
20 ilkom.erp.service.impl.AdminServiceImpl 111
21 ilkom.erp.web.controller.accountReceivable.AddARInvoiceController 118
22 ilkom.erp.web.controller.accountPayable.AddInvoiceController 119
23 ilkom.erp.service.impl.PurchaseServiceImpl 153
23

Lampiran 5 Ringkasan Pengaruh Metrics Terhadap Faktor-Faktor Kualitas berdasarkan sudut


pandang masing-masing metric.

Faktor Kualitas
No Metric Kategori
Reusability Usability Understandability Modifiability Testability

1 WMC tinggi ↓ ↓ NA NA ↓

2 DIT tinggi ↑ NA ↓ ↓ ↓

3 NOC tinggi ↑ NA NA NA ↓

4 CBO tinggi ↓ NA ↓ ↓ ↓

5 RFC tinggi NA NA ↓ ↓ ↓

6 LCOM tinggi NA NA ↓ ↓ ↓

Keterangan : NA = Not Applicable

Anda mungkin juga menyukai