Studi Kasus Evolusi Proyek Perangkat Lunak Open Source Weka Andi Wahju Rahardjo Emanuel Program Studi S1 Teknik Informatika Fakultas Teknologi Informasi, Universitas Kristen Maranatha Jl. Prof. Drg. Suria Sumantri no. 65, Bandung 40164
[email protected] 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].
175
Seminar Teknik Informatika dan Sistem Informasi
Bandung, 6 April 2013
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.
No Nama Proyek Tanggal Rilis 21 Weka_3.6.3 29 Juli 2010
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]. TABEL I DAFTAR VERSI-VERSI WEKA YANG BERHASIL DIREKAM
No
176
1
Nama Proyek Tanggal Rilis 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
14
Weka_3.5.3
9 Juni 2006
15
Weka_3.5.4
21 Desember 2006
16
Weka_3.5.5
26 Januari 2007
17
Weka_3.5.7
20 Desember 2007
18
Weka_3.6.0
18 Desember 2008
19
Weka_3.6.1
4 Juni 2009
20
Weka_3.6.2
12 Januari 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
TABEL II 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 Jumlah rata-rata NCLOC class per class
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
9
Rata - Rata Rata-rata kualitas package PQ
1
10
Modularity Index
1
Nilai indeks modularitas
80 - 100
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]. IV. HASIL STUDI KASUS Berikut ini adalah hasil-hasil perbandingan dari berbagai metrics perangkat lunak dari 34 versi Weka sejak dari versi 3.4.4 sampai dengan versi 3.7.7. Perangkat yang dipergunakan untuk menampilkan grafik adalah jpgraph (http://jpgraph.net).
Studi Kasus Evolusi Proyek Perangkat Lunak Open Source Weka Andi Wahju Rahardjo Emanuel A. Packages Gambar 1 menunjukkan evolusi dari jumlah package dari berbagai versi Weka yang berhasil direkam.
C. NCLOC Pada Gambar 3 ditunjukkan perkembangan jumlah NCLOC dari berbagai versi Weka yang berhasil direkam.
Gambar 1 Evolusi Jumlah Package pada Weka
Gambar 3 Evolusi NCLOC 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.
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.
B. Class Pada Gambar 2 menunjukkan perkembangan jumlah class dari berbagai versi weka yang berhasil direkam.
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 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.
Gambar 4 di atas menunjukkan trend yang serupa dengan apa yang ditunjukkan pada evolusi package, class maupun NCLOC. Jumlah function cenderung landai di kisaran 9000an mulai versi 3.4.4 sampai dengan 3.4.19 dan kemudian 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.
177
Seminar Teknik Informatika dan Sistem Informasi
Bandung, 6 April 2013
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.
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.
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 ratarata Package Quality (PQ) dari berbagai versi Weka yang berhasil direkam. Nilai PQ merupakan suatu nilai ternormalisasi yang menandakan kualitas dari sebuah package.
Gambar 9 Evolusi Rata- Rata PQ dalam Weka
178
Studi Kasus Evolusi Proyek Perangkat Lunak Open Source Weka Andi Wahju Rahardjo Emanuel 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 ratarata PQ [6].
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]
[2]
[3]
[4]
[5]
[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
[7]
[8]
[9]
[10]
[11]
[12]
[13] [14]
[15]
[16]
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. 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. M.M. Lehman, Laws of Software Evolution Revisited, proceeding of the 5th European Workshop on Software Process Technology, 1996, pp 108-124. S. Spaeth & M. Stuermer, “Sampling in Open Source Development: The Case for Using the Debian GNU/Linux Distribution”, proceedings of the 40th IEEE Hawaii International Conference on System Sciences, 2007. 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 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 A. Capiluppi & J.F. Ramil, Studying the Evolution of Open Source Systems at Different Levels of Granularity: Two Case Studies, IEEE IWPSE, 2004. 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. 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 T. Koponen & V. Hotti, Open Source Software Maintenance Process Framework, Open Source Application Spaces: Fifth Workshop on Open Source Software Engineering, 2005 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. 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. I. Alsmadi & K. Magel, Open Source Evolution Analysis, 22nd IEEE International Conference on Software Maintenance, 2006. 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. 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. 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-ArchitectureMetrics
179