Source Weka
Andi Wahju Rahardjo Emanuel Program Studi S1 Teknik InformatikaFakultas Teknologi Informasi, Universitas Kristen Maranatha Jl. Prof. Drg. Suria Sumantri no. 65, Bandung 40164
awreman@gmail.com
Abstract — Open Source Software (OSS) is one of the
noticeable phenomena in Information Technology. There are currently many studies about the evolutions of Open Source Software Projects to shed the knowledge about their success, but the evolution of Weka, a Java-based Open Source Datamining tool, was never been examined. There are 34 versions of Weka that are measured using SONAR in terms of packages, classes, functions, and NCLOC as well as their software metrics reflecting modularity such as NCLOC per class, class per package, function per class, average Package Quality, Software Architecture (SA), and Modularity Index.
The result shows the architecture quality of Weka is excellent, but the average package quality should be improved.
Keywords — architecture quality, evolution, modularity index,
package quality, Open Source, Weka.
I. PENDAHULUAN
Sistem perangkat lunak kode terbuka atau yang lebih dikenal sebagai Open Source Software (OSS) merupakan salah satu fenomena di dunia teknologi informasi yang patut dicermati. Suatu proses pembuatan perangkat lunak yang awalnya hanya merupakan proyek eksperimen dari kalangan akademisi dan para pengembang perangkat lunak itu akhirnya berkembang dengan pesat dengan menghasilkan berbagai macam produk perangkat lunak yang dapat bersaing dan mungkin melebihi kemampuan dari perangkat lunak yang bersifat tertutup dan komersial (proprietary). Beberapa contoh perangkat lunak Open Source populer seperti server web Apache, browser web Mozilla, sistem operasi Debian, sistem operasi bergerak Android, dan lain sebagainya. Salah satu penyebab perangkat lunak Open Source tersebut berkembang dengan pesat dikarenakan karakteristik khususnya yaitu kode sumber yang bisa diunduh, dikembangkan dan dimodifikasi oleh semua orang. Sekelompok orang yang mengembangkan perangkat lunak tersebut akhirnya bertranformasi menjadi komunitas yang juga ikut berkembang bersama dengan sistem perangkat lunaknya [1].
Sifat dari proyek-proyek perangkat lunak Open Source yang terbuka untuk semua orang memungkinkan perkembangan atau evolusi dari proyek-proyek tersebut untuk dipelajari dengan seksama. Mempelajari dan meneliti dari proyek-proyek tersebut khususnya yang dianggap baik dan berhasil akan memberikan acuan bagi banyak orang
yang ingin mengembangkan aplikasi secara Open Source dan juga dapat menunjukkan praktek-praktek pengembangan perangkat lunak yang baik. Salah satu aspek yang bisa dipelajari dari proyek-proyek tersebut adalah faktor evolusi sistem perangkat lunaknya dengan melakukan pengukuran-pengukuran metrics perangkat lunak dari berbagai versinya. Salah satu proyek perangkat lunak Open
Source berbasis Java yang dapat dianggap berhasil dan
dijadikan studi kasus di sini adalah proyek perangkat lunak
Weka.
Weka merupakan perangkat lunak yang berisi berbagai algoritma machine learning untuk berbagai tugas-tugas yang biasa dilakukan pada saat data mining [2]. Weka dikembangkan secara Open Source dan secara berkelanjutan dipelihara oleh Machine Learning Group di Universitas
Waikato di Selandia Baru
(http://www.cs.waikato.ac.nz/~ml). Karena perangkat lunak Weka ini sering dipakai sebagai perangkat pendukung penelitian data mining dan machine learning, maka perangkat lunak ini dapat dianggap sebagai ad hoc untuk penelitian di bidang tersebut. Penelitian terhadap evolusi kode sumber dari proyek Weka ini menjadi penting.
II. STUDI YANG BERHUBUNGAN DENGAN EVOLUSI
PERANGKAT LUNAK OPEN SOURCE
Suatu proyek perangkat lunak, tidak terkecuali perangkat lunak Open Source, akan mengalami suatu perkembangan atau evolusi. Studi tentang evolusi perangkat lunak pertama kali dilakukan oleh Lehman yang mengidentifikasi 8 tahapan pada evolusi perangkat lunak [3]. Setelah itu, berbagi studi telah telah dilakukan untuk meneliti perkembangan dari proyek-proyek perangkat lunak Open
Source seperti di Sistem Operasi Debian Linux [4],
perangkat grafis JFreeChart [5], perangkat mindmapping
Freemind [6], Arla and Mozilla [7], Sistem Operasi FreeBSD [8], Web Server Apache & Browser Web Mozilla
[9][10], Grass [11], dan masih banyak lagi.
Salah satu metode untuk melakukan pengamatan terhadap perkembangan suatu perangkat lunak, termasuk perangkat lunak berbasis Open Source, adalah dengan mengukur nilai-nilai metrics-nya. Pionir dari pengukuran perangkat lunak adalah Chidamber dan Kemerer yang pertama kali mencetuskan berbagai metrics perangkat lunak untuk bahasa pemrograman berorientasi obyek [12].
Kemudian berbagai macam teknik pengukuran ditemukan dan diaplikasikan untuk mencermati berbagai macam proyek-proyek perangkat lunak Open Source seperti penelitian efisiensi kode sumber dari 100 proyek OSS berbasis bahasa C [13], penelitian code commits dari 9 proyek OSS [14], dan analisa statistik dan datamining terhadap lebih dari 130 K proyek OSS dari portal
sourceforge [15].
Meskipun perangkat Weka sudah dianggap perangkat ad
hoc dalam melakukan penelitian-penelitian bertemakan datamining dan machine learning, ternyata perangkat lunak Weka itu sendiri tidak pernah dipelajari proses evolusinya.
III. EVOLUSI DARI WEKA
Berikut adalah versi-versi Weka yang berhasil dikumpulkan dan diukur metrics-metrics-nya dengan
menggunakan perangkat SONAR
(http://www.sonarsource.org). Dari sekitar 42 versi yang terdapat pada website proyek dan portal sourceforge pada bulan Oktober 2012, hanya 34 versi yang berhasil direkam dan diukur seperti yang ditunjukkan pada Tabel I.
Adapun metrics-metrics perangkat lunak yang dikumpulkan melalui perangkat SONAR ditunjukkan dalam tabel 2. Metrics nomor 1 sampai dengan 4 merupakan metrics yang tersedia dari SONAR, sedangkan metrics nomor 5 sampai 8 merupakan metrics gabungan yang juga didapat dari perangkat SONAR. Metrics nomor 8-10 merupakan metrics tambahan yang telah dirumuskan dalam publikasi sebelumnya untuk mengetahui tingkat modularitas dari perangkat lunak Open Source berbasis Java [6][15].
TABELI
DAFTAR VERSI-VERSI WEKA YANG BERHASIL DIREKAM
No Nama Proyek Tanggal Rilis 1 Weka_3.4.4 7 Maret 2005 2 Weka_3.4.7 22 Desember 2005 3 Weka_3.4.10 26 Januari 2007 4 Weka_3.4.12 19 Desember 2007 5 Weka_3.4.13 15 Juli 2008 6 Weka_3.4.15 4 Juni 2009 7 Weka_3.4.16 12 Januari 2010 8 Weka_3.4.17 29 Juli 2010 9 Weka_3.4.18 9 Desember 2010 10 Weka_3.4.19 30 Juni 2011 11 Weka_3.5.0 4 Juli 2005 12 Weka_3.5.1 1 Oktober 2005 13 Weka_3.5.2 22 Desember 2005
No Nama Proyek Tanggal Rilis 21 Weka_3.6.3 29 Juli 2010 22 Weka_3.6.4 9 Desember 2010 23 Weka_3.6.5 30 Juni 2011 24 Weka_3.6.6 30 Oktober 2011 25 Weka_3.6.7 11 Mei 2012 26 Weka_3.6.8 15 Agustus 2012 27 Weka_3.7.0 5 Juli 2009 28 Weka_3.7.1 12 Januari 2010 29 Weka_3.7.2 29 Juli 2010 30 Weka_3.7.3 9 Desember 2010 31 Weka_3.7.4 30 Juni 2011 32 Weka_3.7.5 31 Oktober 2011 33 Weka_3.7.6 11 Mei 2012 34 Weka_3.7.7 15 Agustus 2012 TABELII
METRICS UNTUK MENGUKUR WEKA
No Metrics Keterangan Nilai Ideal
1 Package Jumlah package Tidak ada
2 Class Jumlah class Tidak ada
3 NCLOC Jumlah baris kode tanpa baris komentar
Tidak ada 4 Function Jumlah fungsi / methods
dalam sebuah class
Tidak ada 5 NCLOC per
class
Jumlah rata-rata NCLOC per class
80 - 100 6 class per
package
Jumlah rata-rata class per package
10-16 7 Function
per class
Jumlah rata-rata methods per class
4-7 8 SA Nilai kualitas arsitektur
sistem
1 9 Rata - Rata
PQ
Rata-rata kualitas package 1
10 Modularity Index
Nilai indeks modularitas 1 Pada kolom terakhir dicantumkan nilai ideal yang bisa dicapai oleh metrics-metrics tersebut. Nilai ideal, khususnya pada nomor 5-10 didapatkan berdasarkan formulasi
Modularity Index pada publikasi sebelumnya [6][15].
A. Packages
Gambar 1 menunjukkan evolusi dari jumlah package dari berbagai versi Weka yang berhasil direkam.
Gambar 1 Evolusi Jumlah Package pada Weka
Dari Gambar 1 atas dapat diketahui bahwa jumlah
package dari Weka cenderung stagnan di veri 3.4.4 sampai
dengan 3.4.10 di sekitar 54 packages. Mulai versi 3.5.0 sampai versi 3.7.1 terjadi peningkatan jumlah package secara signifikan yang menandakan peningkatan jumlah fitur yang ada dalam Weka. Pada versi 3.7.2 dan seterusnya terjadi penurunan jumlah package menjadi sekitar 75
package yang menandakan terjadinya penataan kembali
fitur-fitur yang ada.
B. Class
Pada Gambar 2 menunjukkan perkembangan jumlah
class dari berbagai versi weka yang berhasil direkam.
Gambar 2 Evolusi NCLOC pada Weka
Pada Gambar 2 di atas dapat diketahui bahwa perkembangan jumlah class pada berbagi versi dari Weka memiliki kecenderungan yang sama dengan perkembangan jumlah package yang ditunjukkan pada gambar 1. Jumlah class pada Weka telah meningkat hampir dua kali lipat sejak versi 3.4.4 sampai dengan versi 3.7.7.
C. NCLOC
Pada Gambar 3 ditunjukkan perkembangan jumlah
NCLOC dari berbagai versi Weka yang berhasil direkam.
Gambar 3 Evolusi NCLOC pada Weka
Dari Gambar 3 di atas dapat dilihat bahwa terjadi peningkatan jumlah NCLOC yang signifikan sejak versi awal yaitu versi 3.4.4 sampai dengan versi 3.6.0. Mulai versi 3.6.0 sampai dengan versi 3.7.1 jumlah NCLOC relatif stabil dan terjadi penurunan mulai versi 3.7.2 yang juga seiring dengan penurunan jumlah class maupun package.
D. Function
Gambar 4 di bawah ini menunjukkan evolusi dari jumlah
function (method) dari berbagai versi Weka yang berhasil
direkam.
Gambar 4 Evolusi Jumlah Function pada Weka
Gambar 4 di atas menunjukkan trend yang serupa dengan apa yang ditunjukkan pada evolusi package, class maupun
NCLOC. Jumlah function cenderung landai di kisaran
9000-an mulai versi 3.4.4 sampai deng9000-an 3.4.19 d9000-an kemudi9000-an menanjak dengan cepat sampai versi 3.6.0 seiring dengan peningkatan jumlah class dan package. Mulai dari versi 3.6.1 dan selanjutnya jumlah function cenderung stabil.
E. NCLOC per Class
Gambar 5 di bawah ini menunjukkan perkembangan rata-rata NCLOC per class pada berbagai versi dari Weka yang berhasil direkam.
Gambar 5 Evolusi Rata-Rata NCLOC per class dalam Weka
Dari gambar 5 diatas dapat diketahui bahwa rata-rata
NCLOC per class di proyek Weka sudah melampaui dari
nilai yang dianjurkan (80-100) yaitu di kisaran 180-192 mulai dari versi 3.4.4 sampai dengan versi 3.7.1. Nilai NCLOC per class yang melampaui dari nilai yang dianjurkan berarti adanya ketidakefisienan dalam pengkodean. Di versi 3.7.2 dan seterusnya terlihat mulai adanya pembenahan yang signifikan pada jumlah rata-rata
NCLOC per class sehingga mulai mendekati nilai yang
dianjurkan.
F. Class per Package
Gambar 6 dibawah ini menunjukkan rata-rata class per
package dari berbagai versi Weka yang berhasil direkam
Gambar 6 Evolusi Rata-Rata class per package dalam Weka
Dari Gambar 6 di atas dapat dilihat bahwa jumlah class
per package dari berbagai versi Weka masih dalam batas
kewajaran yang seharusnya yaitu berkisar antara 10-16 class per package. Pada versi 3.7.1 dan seterusnya diketahui bahwa jumlah class per package sudah mulai melampaui nilai yang dianjurkan yang menandakan kecenderungan adanya ketidakefisienan dalam penulisan kode sumber.
G. Function per Class
Gambar 7 dibawah ini menunjukkan rata-rata function per
class dari berbagai versi Weka yang berhasil direkam.
Gambar 7 Evolusi Rata-Rata function per class dalam Weka
Gambar 7 di atas menunjukkan bahwa nilai rata-rata
function per class dari berbagai versi Weka masih diatas
nilai yang dianjurkan yaitu melebihi nilai 10. Meskipun mulai versi 3.7.2 telah dilakukan berbagai pembenahan yang berarti, namun dalam segi rata-rata function per class ternyata belum menunjukkan peningkatan yang berarti.
H. System Architecture (SA)
Gambar 8 di bawah ini menunjukkan nilai dari SA yang
merupakan besaran kualitas arsitektur dari Weka. Nilai SA itu sendiri merupakan nilai yang pertama kalinya dicetuskan oleh Ammar [16] yang kemudian diadopsi oleh penulis pada saat formulasi Modularity Index [5][6].
Gambar 8 Evolusi SA dalam Weka
Gambar 8 di atas menunjukkan bahwa nilai kualitas arsitektur dari berbagai versi dari Weka cenderung baik di kisaran nilai 0,7 dari versi 3.4.4 sampai dengan versi 3.7.1. Pengecualian terjadi mulai dari versi 3.5.1 yang nilainya menurun drastis menjadi 0,1 yang menandakan adanya kesalahan arsitektur yang terjadi. Mulai dari versi 3.7.2 dan seterusnya terjadi peningkatan secara signifikan nilai SA
yang menandakan perombakan yang cukup besar dari segi arsitektur sehingga nilai SA sudah mendekati nilai idealnya
di 0,9. Perombakan ini juga dapat dilihat di gambar-gambar sebelumnya terutama di gambar 1 dan 2 yang menunjukkan penurunan jumlah packages dan class di versi-versi tersebut.
I. Rata-Rata PQ
Gambar 9 menunjukkan perkembangan dari nilai rata-rata Package Quality (PQ) dari berbagai versi Weka yang
berhasil direkam. Nilai PQ merupakan suatu nilai
ternormalisasi yang menandakan kualitas dari sebuah
Gambar 9 diatas menunjukkan bahwa terjadi penurunan yang cukup signifikan dalam segi rata-rata kualitas package mulai versi 3.6.0 sampai dengan versi 3.7.7. Secara keseluruhan nilai rata-rata kualitas package berbagai versi
Weka ini adalah tidak baik yang menandakan kualitas
pengkodean di tingkat package dan class yang masih perlu dibenahi.
J. Modularity Index
Gambar 10 menunjukkan perkembangan dari nilai
Modularity Index dari berbagai versi Weka yang berhasil
direkam. Modularity Index adalah suatu metrics perangkat lunak yang menandakan tingkat modularitas dari suatu proyek perangkat lunak Open Source berbasis Java. Nilai
Modularity Index didapatkan dari perkalian SA dengan
rata-rata PQ [6].
Gambar 10 Evolusi Modularity Index dalam Weka
Gambar 10 di atas menunjukkan bahwa nilai Modularity
Index dari berbagai versi Weka masih belum menggembirakan. Nilai Modularity Index yang masih belum baik ini lebih banyak dipengaruhi oleh faktor rata-rata kualitas package yang kurang baik (Gambar 8) dibandingkan dengan nilai SA yang sudah baik (Gambar 7).
V. SIMPULAN
Dari berbagai macam hasil grafik dan analisa berbagai macam metrics-metrics perangkat lunak yang didapatkan dari berbagai versi dari Weka, maka dapat disimpulkan bahwa:
1. Proyek perangkat lunak Open Source Weka telah mengalami perkembangan yang pesat, yang ditandai dengan perkembangan jumlah functions (methods),
class, dan package yang pesat.
2. Kualitas arsitektur dari Weka sudah sangat baik yang ditandai dengan nilai kualitas arsitektur (SA) yang
sebagian besar melebihi angka 0,7 dan bahkan sudah mencapai nilai 0,9 di versi-versi 3.7.x.
3. Praktek pengkodean dari Weka masih dapat diperbaiki lagi karena beberapa indikatornya (NCLOC per class,
function per class, class per package) masih jauh dari
nilai idealnya.
4. Tingkat modularitas (nilai Modularity Index) dari Weka masih dapat ditingkatkan lagi, terutama dalam hal perbaikan praktek pengkodean. Kontribusi nilai
kualitas arsitektur (SA) dalam Modularity Index sudah
baik dan maksimal.
UCAPAN TERIMA KASIH
Terima kasih atas dukungan yang sangat besar dari Universitas Kristen Maranatha, khususnya Fakultas Teknologi Informasi dan Program Studi S1 Teknik Informatika.
DAFTAR PUSTAKA
[1] K. Nakakoji, Y. Yamamoto, Y. Nishinaka, K. Kishida,& Y. Ye, Evolution Patterns of Open Source Software Systems and Communities, ACM IWPSE 2002, pp 76-85.
[2] M. Hall, E. Frank, J. Holmes, B. Pfahringer, P. Reutemann, & I.H. Witten, The WEKA Data Mining Software: An Update, SIGKDD Explorations, Volume 11, Issue 1, 2009.
[3] M.M. Lehman, Laws of Software Evolution Revisited, proceeding of
the 5th European Workshop on Software Process Technology, 1996,
pp 108-124.
[4] S. Spaeth & M. Stuermer, “Sampling in Open Source Development: The Case for Using the Debian GNU/Linux Distribution”,
proceedings of the 40thIEEE Hawaii International Conference on
System Sciences, 2007.
[5] A.W.R. Emanuel, R. Wardoyo, J.E. Istiyanto, & K.Mustofa, Modularity Index Metrics for Java-Based Open Source Software Projects, International Journal of Advanced Computer Science and
Applications (IJACSA), Vol. 2 No. 11, November 2012
[6] A.W.R. Emanuel, D.J. Surjawan, Revised Modularity Index to Measure Modularity of OSS Projects with Case Study of Freemind,
International Journal of Computer Applications (IJCA), Vol. 59 No.
12, December 2012
[7] A. Capiluppi & J.F. Ramil, Studying the Evolution of Open Source Systems at Different Levels of Granularity: Two Case Studies, IEEE
IWPSE, 2004.
[8] T. Dinh-Trong & J.M. Bieman, Open Source Software Development: A Case Study of FreeBSD, proceedings of the 10th IEEE International
Symposium on Software Metrics, 2004.
[9] A. Mockus, R.T. Fielding & J. Herbsleb, Two Case Studies of Open Source Software Development: Apache and Mozilla, ACM
Transaction on Software Engineering and Methodology, Vol. II No. 3
Juli 2002, pp. 309-346
[10] T. Koponen & V. Hotti, Open Source Software Maintenance Process
Framework, Open Source Application Spaces: Fifth Workshop on
Open Source Software Engineering, 2005
[11] S. Bouktif, G. Antoniol & E. Merlo, A Feedback Based Quality Assessment to Support Open Source Software Evolution: the GRASS Case Study, 22nd IEEE International Conference on Software
Maintenance, 2006.
[12] S.R. Chidamber & C.F. Kemerer, A Metrics suite for Object Oriented Design, IEEE Transaction on Software Engineering, Vol. 20 No. 6 June 1994, pp 476-493.
[13] I. Alsmadi & K. Magel, Open Source Evolution Analysis, 22nd IEEE
International Conference on Software Maintenance, 2006.
[14] A. Alali, H. Kagdi & J.I. Maletic, What’s a Typical Commit? A Characterization of Open Source Software Repositories, The 16th
IEEE International Conference on Program Comprehension, 2008. [15] A.W.R. Emanuel, R. Wardoyo, J.E. Istiyanto, & K.Mustofa, “Success
Rule of OSS Projects using Datamining 3-Itemset Association Rule”,
International Journal of Computer Science Issues (IJCSI), Vol. 7
Issue 6, November 2010.
[16] H. Ammar, M. Shereshevsky, A. Mili, W. Rabie, N. Radetsky. (2008). Software Architecture Metrics, Seminar Presentation, Faculty of Information Science & Engineering, Management & Science
University. [Online]. Tersedia:
http://www.docstoc.com/docs/6802629/Software-Architecture-Metrics