Pengembangan Konsep Pendekatan budaya Modularit

LAPORAN DISERTASI PENGEMBANGAN KONSEP PENDEKATAN MODULARITAS DENGAN MODULARITY INDEX DAN MODULARITY FRAMEWORK PADA PROYEK PERANGKAT LUNAK BERORIENTASI OBYEK CONCEPT DEVELOPMENT OF MODULARITY APPROACHES WITH MODULARITY INDEX AND MODULARITY FRAMEWORK IN OBJECT ORIENTED SOFTWARE PROJECTS ANDI WAHJU RAHARDJO EMANUEL

08/274713/SPA/00182

LAPORAN DISERTASI PENGEMBANGAN KONSEP PENDEKATAN MODULARITAS DENGAN MODULARITY INDEX DAN MODULARITY FRAMEWORK PADA PROYEK PERANGKAT LUNAK BERORIENTASI OBYEK CONCEPT DEVELOPMENT OF MODULARITY APPROACHES WITH MODULARITY INDEX AND MODULARITY FRAMEWORK IN OBJECT ORIENTED SOFTWARE PROJECTS

Disertasi untuk memperoleh derajat Doktor dalam Ilmu Komputer pada Universitas Gadjah Mada

ANDI WAHJU RAHARDJO EMANUEL

08/274713/SPA/00182

Disertasi ini saya persembahkan untuk istri saya tercinta Bernadeta Ariyanti Retno Wulandari dan anak tercinta Marcelinus Dimas Satrio Yudanto yang senantiasa menemani dan mendukung sepenuh hati selama studi S3 dalam suka

dan duka

PRAKATA

Puji syukur kami haturkan ke hadirat Tuhan Yang Maha Kuasa, karena kasih dan karuniaNya penyusunan Disertasi yang merupakan dokumentasi proses penyelesaian studi tingkat Doktoral di Program Doktor Ilmu Komputer di Universitas Gadjah Mada ini telah berhasil disusun. Penyusun mengucapkan banyak terima kasih kepada berbagai pihak yang sangat membantu dalam proses penyelesaian studi Doktoral ini, terutama:

Bp. Dr. Chairil Anwar (Dekan FMIPA, UGM)

Bp. Dr. Pekik Nurwantoro, M.S (Wakil Dekan I dan Ketua Tim Penguji)

Bp. Prof. Dr. Jazi Eko Istiyanto (Ketua Jurusan Ilmu Komputer dan Elektronika dan Ko-Promotor)

Ibu Dra. Sri Hartati, M.Sc, Ph.D (Ketua Program Studi Monodisiplin S2/S3 Ilmu Komputer)

Bp. Drs. Retantyo Wardoyo, M.Sc, Ph.D (Promotor)

Bp. Dr. Tech. Khabib Mustofa (Ko-Promotor)

Bp. Drs. Edi Winarko, M.Sc, Ph.D (Ketua Tim Penilai dan Penguji)

Bp Ir. Lukito Edi Nugroho, M.Sc, Ph.D (Tim Penilai dan Penguji)

Bp. Dr. Ridi Ferdiana, S.T, M.T (Tim Penilai dan Penguji)

Bp. Prof. Dr. Ir. Iping Supriatna Suwardi (Penguji)

Bp. Drs. Agus Harjoko, M.Sc, Ph.D (Penguji)

Fakultas Teknologi Informasi dan Jurusan S1 Teknik Informatika. Semoga hasil – hasil penelitian kami ini beserta publikasi yang dihasilkan dapat memberikan sumbangsih dalam bidang Ilmu Komputer khususnya di bidang Rekayasa Perangkat Lunak (Software Engineering).

DAFTAR LAMBANG DAN SINGKATAN

Academic Free License – salah satu jenis lisensi untuk perangkat AFL

- lunak Open Source.

Application Programming Interface – pustaka dari modul – modul perangkat lunak yang dapat dipergunakan sebagai antar muka ke

API - berbagai komponen perangkat lunak oleh pengembangan /

developer . pustaka grafik untuk bahasa pemrograman Java yang dikembangkan

AWT - sebelum terdapat pustaka yang lebih baik yang dinamakan Swing.

Berkeley Software Distribution - tipe lisensi atau Sistem Operasi BSD

- berbasis Unix yang dikembangkan di UCLA di Berkeley, Amerika Serikat.

Coupling Between Object – salah satu jenis metrics Kategori CBO

- ketergantungan (dependency)

Concurrent Version System – sistem kendali versi dari kode sumber perangkat lunak yang memungkinkan banyak orang untuk

CVS - mengembangkan kode sumber secara bersama – sama tanpa adanya

konflik yang berarti. Database – sistem perangkat lunak yang khusus dibuat untuk

DB - menyimpan dan menampilkan data dalam jumlah sangat banyak atau basis data

GB - Gigabyte – sama dengan 1 milyar byte GNU is not Unix - salah satu organisasi yang mempopulerkan

GNU - konsep perangkat lunak Free atau Open Source

General Public License – salah satu jenis lisensi Open Source GPL

Software yang paling populer yang dikeluarkan oleh GNU Graphical Toolkit – pustaka grafis yang dipakai untuk Sistem

GTK -

Operasi Linux khususnya manajer tampilan grafis Gnome

Java Development Kit – pustaka pengembangan perangkat lunak JDK

- berbasis Java

KB - Kilobyte – sama dengan 1024 byte Manajer tampilan grafis untuk Sistem Operasi Linux selain Gnome,

KDE - XFCE dan lain - lainnya

Lack of Cohesion Metrics versi 4 – salah satu jenis metrics yang mengukur tingkat kesatuan (kohesi) dari suatu class, versi 4 adalah

LCOM4 - versi termutakhir yang lebih cocok dipergunakan untuk bahasa

pemrograman beriorientasi obyek. Lesser General Public License – tipe lisensi perangkat lunak Open

LGPL - Source yang populer, khususnya untuk pustaka perangkat lunak yang dikeluarkan oleh GNU

LOC - Lines of Code – baris kode perangkat lunak LOC (Lines of Code) Quality – salah satu metrics yang

LOC Q - dikembangkan sebagai bagian dari Modularity Index untuk mengetahui kualitas dari baris kode dalam suatu class.

Long Term Support – jenis dukungan yang diberikan untuk suatu rilis LTS

- dari Sistem Operasi Linux varian Ubuntu yang akan memberikan dukungan dalam jangka waktu yang lebih lama daripada rilis lainnya.

MB - Megabyte – sama dengan 1 juta byte Modularity Index – salah satu software metrics yang dihasilkan

M I - dalam penelitian ini untuk mengukur tingkat modularitas suatu proyek perangkat lunak Open Source.

Massachuset Institute of Technology – salah satu perguruan tinggi MIT

- ternama di Ameriak Serikat

Microsoft – salah satu perusahaan Teknologi Informasi terkemuka MS

- yang didirikan oleh Bill Gates.

Salah satu jenis aplikasi basis data yang dapat dipergunakan secara MySQL -

gratis.

Object Oriented Programming – salah satu jenis bahasa OOP

- pemrograman komputer yang berorientasi pada obyek, misalnya Java, C++,C# dan lain-lainnya.

Operating System – salah satu jenis aplikasi perangkat lunak yang OS

- berhubungan langsung dengan perangkat keras seperti Linux, Windows, OSX dan lain – lainnya.

OSS - Open Source Software Hypertext Preprocessor – salah satu jenis bahasa pemrograman

PHP - berbasis skrip yang populer

Package Quality – salah satu metrics dari Modularity Index yang P Q

- dipergunakan untuk mengukur kualitas dari sebuah Package.

RFC - Request for Classes Software Architecture – salah satu parameter penting dalam

S A - Modularity Index yang akan mengukur kualitas arsitektur dari sistem perangkat lunak.

Salah satu jenis lisensi perangat lunak Open Source (kalah populer SDL

- dibandingkan GPL atau LGPL)

Source Line of Code – metrics perangkat lunak untuk menentukan SLOC -

ukuran berdasarkan baris kode sumber Structured Query Language – bahasa pengambilan data untuk basis

SQL - data

pustaka grafik untuk bahasa pemrograman Java yang dikembangkan SWT

- oleh IBM dan komunitas Eclipse untuk menyaingi Swing yang dikeluarkan oleh Sun Microsystem

INTISARI PENGEMBANGAN KONSEP PENDEKATAN MODULARITAS DENGAN MODULARITY INDEX DAN MODULARITY FRAMEWORK PADA PROYEK PERANGKAT LUNAK BERORIENTASI OBYEK

oleh:

ANDI WAHJU RAHARDJO EMANUEL 08/274713/SPA/00182

Sistem perangkat lunak telah berkembang seiring dengan berkembangnya tantangan dan permasalahan yang perlu diakomodasi oleh sistem tersebut. Bahasa pemrograman dalam sistem perangkat lunak telah berkembang dari bahasa mesin yang sangat bergantung pada jenis mesinnya ke bahasa pemrograman berorientasi obyek, dan kemudian berkembang lagi ke penerapan prinsip modularitas untuk meningkatkan kemampuan sistem tersebut dalam menghadapi perubahaan dan tantangan yang lebih kompleks. Beberapa studi telah mengidentifikasikan bahwa modularitas adalah salah satu kunci keberhasilan dari proyek – proyek berorientasi obyek, namun bagaimana agar suatu proyek tersebut dapat mencapai modularitas belum sepenuhnya diketahui karena masih bersifat penilaian kualitatif. Penelitian doktoral ini mengusulkan beberapa pendekatan telah dikembangkan untuk menjawab penerapan konsep modularitas ini dalam proyek – proyek perangkat lunak berorientasi obyek, yaitu:

Software Metrics (dinamakan Modularity Index) yang dapat memberikan nilai kuantitatif tingkat modularitas perangkat lunak berorientasi obyek.

– proyek perangkat lunak Open Source berbasis Java yang populer dan memiliki arsitektur yang baik dari portal sourceforge. Dengan adanya Modularity Framework yang merupakan suatu lingkungan pengembangan terintegrasi yang berbasis web dengan rekomendasi – rekomendasi yang dihasilkan dari pengukuran Modularity Index maka diharapkan proses evolusi dari suatu proyek perangkat lunak bisa berjalan dengan menerapkan pendekatan modularitas sejak awal yang pada akhirnya akan meningkatkan modularitas dari proyek tersebut. Dari hasil studi kasus, verifikasi, dan validasi yang dilakukan menunjukkan bahwa Modularity Index mampu menganalisis kelemahan dan kelebihan dari

suatu proyek perangkat lunak JFreeChart dan Modularity Framework mampu membantu para pengembang untuk meningkatkan modularitas sistem perangkat lunaknya.

ABSTRACT CONCEPT DEVELOPMENT OF MODULARITY APPROACHES WITH MODULARITY INDEX AND MODULARITY FRAMEWORK IN OBJECT ORIENTED SOFTWARE PROJECTS

by:

ANDI WAHJU RAHARDJO EMANUEL 08/274713/SPA/00182

Software systems have evolved as the challenges and problems to be accomodated with them are also evolved. The programming languages of the software systems have evolved from machine-dependent machine languages into object-oriented programming languages, and then they matures into the application of modularity principles to enhance the capabilities of system against more complex challenges. Some studies have identified that modularity is one of the key success factors of object-oriented software projects, but how modularity should be applied in these projects is not clearly understood since it is still justified qualitatively. This doctoral research proposes several approaches to answer this application of modularity concept in object-oriented poftware projects, which are:

• Software Metrics (named Modularity Index) to measure quantitatively the modularity level of object-oriented software projects.

• Software Framework (named Modularity Framework) which implements the Modularity Index metrics in the form of web-based object-oriented Software Integrated Development Environment.

of modularity approaches during the project's evolution which eventually will increase the modularity of the project. From the case studies, verifications, and validation during the research, it can be shown that the Modularity Index is able to identify the weaknesses dan strengths of the JFreeChart project, and the Modularity Framework is able to assist developers to improve the modularity of their projects.

BAB I. PENDAHULUAN

1.1 Latar Belakang

Pemrograman berorientasi obyek telah menjadi arus utama (mainstream) dari bahasa pemrograman di dunia. Bermula dari bahasa pemrograman yang sangat berorientasi mesin (bahasa mesin dan bahasa assembler) yang sangat sulit dibaca dan dipahami sehingga menjadi tidak berkembang karena sulit untuk menarik minat pengembang – pengembang baru. Seiring dengan berkembangnya tingkatan permasalahan yang bisa diakomodasi oleh perangkat lunak, maka berkembanglah bahasa pemrograman prosedural seperti bahasa C, Pascal, Fortran, Basic dan lain – lainnya yang hanya mampu menjawab tantangan permasalahan pada tingkat kompleksitas tertentu saja. Dengan tuntutan permasalahan yang semakin besar lagi maka berkembanglah bahasa pemrograman berorientasi obyek seperti Java dan C# yang dianggap mampu menjawab tantangan permasalahan selama dua dasawarsa.

Dengan semakin kompleksnya permasalahan yang ingin diselesaikan dengan menggunakan perangkat lunak, maka modularitas dari perangkat lunak berorientasi obyek menjadi semakin penting. Permasalahan yang besar dan kompleks akan sulit diakomodasi oleh suatu perangkat lunak yang dibuat secara spesifik untuk permasalahan tersebut. Pemecahan masalah akan lebih mudah apabila permasalahan yang besar tersebut dapat dipecah – pecah menjadi permasalahan yang lebih kecil dalam bentuk suatu 'modul' perangkat lunak yang ukurannya kecil pula. Modul – modul ini dibuat sedemikian rupa agar dapat Dengan semakin kompleksnya permasalahan yang ingin diselesaikan dengan menggunakan perangkat lunak, maka modularitas dari perangkat lunak berorientasi obyek menjadi semakin penting. Permasalahan yang besar dan kompleks akan sulit diakomodasi oleh suatu perangkat lunak yang dibuat secara spesifik untuk permasalahan tersebut. Pemecahan masalah akan lebih mudah apabila permasalahan yang besar tersebut dapat dipecah – pecah menjadi permasalahan yang lebih kecil dalam bentuk suatu 'modul' perangkat lunak yang ukurannya kecil pula. Modul – modul ini dibuat sedemikian rupa agar dapat

Salah satu model pengembangan perangkat lunak yang sekarang menjadi tren adalah proyek perangkat lunak berbasis Open Source. Konsep pengembangan perangkat lunak berbasis Open Source yang menerapkan prinsip kode terbuka dengan ajakan bagi siapa saja untuk mengembangkan bersama – sama secara komunitas telah berkembang menjadi salah satu arus utama dalam pengembangan berbagai macam aplikasi dan telah terbukti kehandalannya. Gerakan ini dipelopori pada tahun 1990an oleh Richard Stallman dalam tulisannya “Why Software Should be Free” (Stallman, 1992) dan juga oleh Eric Raymond dalam tulisannya “The Cathedral and the Bazaar” (Raymond, 2000). Dengan mengandalkan berbagai macam perangkat pendukung (Version Control, Bug Report, Mailing List, Wish List / TODO List, email, dan lain – lain), para developer mampu bekerja sama satu dengan yang lain meskipun mereka tidak pernah bertemu secara fisik karena mereka tersebar di segala penjuru dunia. Meskipun demikian, cara pengembangan ini telah terbukti berhasil menghasilkan berbagai macam aplikasi dengan kualitas tinggi yang tidak kalah dengan aplikasi yang dikembangkan secara komersial. Beberapa aplikasi yang dikembangkan dengan metode ini telah menjadi pemimpin pasar atau menjadi aplikasi pesaing yang pantas diperhitungkan seperti server web Apache, browser web Mozilla Firefox, sistem operasi Linux dengan berbagai Distro-nya, pendukung perkantoran Libre Office dan lain – lain.

Meskipun terdapat beberapa aplikasi hasil pengembangan secara Open

357 proyek (0,2%), yang diunduh 1 juta – 100 ribu kali sebanyak 1761 proyek (1,1%), yang diunduh dibawah 100 ribu kali sebanyak 79.089 proyek (51%), dan yang berakhir di tingkat konsep saja sekitar 73.998 proyek (48%). Fenomena ini terjadi disebabkan oleh beberapa faktor yang juga telah berhasil diidentifikasi oleh para peneliti.

Berbagai macam faktor telah teridentifikasi sebagai penyebab kegagalan proyek – proyek perangkat lunak Open Source ini, seperti kurangnya kemampuan teknis, minimnya dukungan dokumentasi dan kurangnya metodologi formal (Christley & Madey, 2007). Tingginya tingkat kemampuan teknis yang harus dimiliki terlebih dahulu oleh seseorang untuk dapat berkontribusi secara signifikan pada suatu proyek Open Source merupakan salah satu alasan kegagalan suatu proyek Open Source (Bird et al, 2007) (Stewart et al, 2005). Ini berakibat

banyak pengguna yang berkeinginan menjadi kontributor menjadi segan untuk berkecimpung lebih jauh yang menyebabkan minimnya partisipasi dari orang lain selain inisiator proyek Open Source itu sendiri. Kurangnya dokumentasi juga merupakan kendala yang lain (Bouktif et al, 2006), yang akan menyebabkan calon kontributor akan kesulitan dalam menentukan pada bagian mana dalam proyek Open Source tersebut dia akan ikut berperan. Kurangnya metodologi formal juga dituding sebagai penyebab dari kegagalan proyek Open Source, yang menyebabkan tolok ukur dan panduan dalam siklus hidup suatu proyek pengembangan perangkat lunak berbasis Open Source menjadi tidak jelas.

Untuk menanggulangi berbagai permasalahan dan kelemahan yang ada pada pengembangan perangkat lunak secara Open Source, berbagai studi telah dilaku- kan untuk mencari solusi dengan salah satu aspek penting yang perlu diperhatikan Untuk menanggulangi berbagai permasalahan dan kelemahan yang ada pada pengembangan perangkat lunak secara Open Source, berbagai studi telah dilaku- kan untuk mencari solusi dengan salah satu aspek penting yang perlu diperhatikan

Meskipun modularitas dari kode sumber telah diidentifikasikan sebagai salah satu kunci keberhasilan proyek – proyek perangkat lunak berorientasi obyek, na- mun penerapannya masih bersifat sporadis dan dianggap sulit untuk diterapkan. Penerapan aspek modularitas ini masih bersifat sporadis ditunjukkan pada studi oleh Otte et al yang menunjukkan bahwa hanya 55% dari proyek perangkat lunak Open Source berskala besar yang memperhitungkan aspek modularitas dalam de- sainnya, sedangkan 58.3% dari proyek berskala kecil yang memperhitungkan as- pek modularitas, dan 8.3% dari proyek perangkat lunak Open Source secara kese- luruhan yang sama sekali tidak memperhatikan aspek modularitas ini (Otte et al, 2008). Sedangkan kesulitan penerapan aspek modularitas ini dikarenakan diper- lukannya investasi dan faktor perencanaan yang seksama dalam pelaksanaannya. Penerapan aspek modularitas membutuhkan investasi awal yang substansial na- mun dipercaya bahwa investasi awal ini akan terbayar kembali dalam jangka pan- jang kehidupan proyek tersebut (von Krogh, 2005). Terlebih lagi, investigasi ter- hadap komunitas proyek Open Source Gallery oleh Ge et al menunjukkan betapa pentingnya perencanaan yang seksama pada tahapan awal proyek untuk menjamin adanya kontribusi dan sharing pengetahuan diantara anggota komunitas tersebut Meskipun modularitas dari kode sumber telah diidentifikasikan sebagai salah satu kunci keberhasilan proyek – proyek perangkat lunak berorientasi obyek, na- mun penerapannya masih bersifat sporadis dan dianggap sulit untuk diterapkan. Penerapan aspek modularitas ini masih bersifat sporadis ditunjukkan pada studi oleh Otte et al yang menunjukkan bahwa hanya 55% dari proyek perangkat lunak Open Source berskala besar yang memperhitungkan aspek modularitas dalam de- sainnya, sedangkan 58.3% dari proyek berskala kecil yang memperhitungkan as- pek modularitas, dan 8.3% dari proyek perangkat lunak Open Source secara kese- luruhan yang sama sekali tidak memperhatikan aspek modularitas ini (Otte et al, 2008). Sedangkan kesulitan penerapan aspek modularitas ini dikarenakan diper- lukannya investasi dan faktor perencanaan yang seksama dalam pelaksanaannya. Penerapan aspek modularitas membutuhkan investasi awal yang substansial na- mun dipercaya bahwa investasi awal ini akan terbayar kembali dalam jangka pan- jang kehidupan proyek tersebut (von Krogh, 2005). Terlebih lagi, investigasi ter- hadap komunitas proyek Open Source Gallery oleh Ge et al menunjukkan betapa pentingnya perencanaan yang seksama pada tahapan awal proyek untuk menjamin adanya kontribusi dan sharing pengetahuan diantara anggota komunitas tersebut

1.2 Identifikasi dan Perumusan Masalah

Dari berbagai macam paparan, petunjuk dan fakta yang telah dikemukakan diatas, maka dapat diketahui identifikasi masalah yang perlu dikaji lebih jauh dalam penelitian doktoral ini, yaitu:

1. Pengembangan pada proyek perangkat lunak berorientasi obyek, khususnya proyek perangkat lunak Open Source memang sudah menunjukkan beberapa hasil yang sangat baik, misalnya sistem operasi Linux, web server Apache, web browser Mozilla, server email Sendmail, dan lain – lain, namun jumlahnya masih relatif sangat kecil dibandingkan dengan total keseluruhan proyek Open Source yang ada selama ini.

2. Kontributor aktif dari proyek perangkat lunak berorientasi obyek khususnya proyek perangkat lunak Open Source masih sangat sedikit, terutama di sisi pengembang utama (Core Developer) dikarenakan terdapatnya skill barrier (penghambat kemampuan) bagi siapa saja dengan kemampuan teknis pemrograman yang sedang atau kurang untuk dapat berkontribusi secara signifikan (Bird et al, 2007) (Stewart et al, 2005). Tingkat dokumentasi yang seharusnya bisa menjadi alat bantu bagi para calon kontributor untuk mendalami proyek Open Source pada situs – situs proyek tersebut juga dalam kondisi yang sangat sedikit untuk proyek – proyek Open Source skala kecil dan sedang (Bouktif et al, 2006) .

Dari permasalahan – permasalahan yang telah diidentifikasikan diatas, maka perumusan masalah yang akan diteliti pemecahannya pada penelitian doktoral ini adalah menemukan sebuah konsep pendekatan modularitas sejak awal proses pengembangan dari proyek – proyek perangkat lunak berorientasi obyek yang ditempuh dengan 2 pendekatan:

1. Bagaimana merumuskan sebuah tolok ukur kuantitatif tunggal dari tingkat modularitas dari suatu proyek perangkat lunak berorientasi obyek?

2. Bagaimana menerapkan tolok ukur kuantitatif tunggal ini dalam sebuah lingkungan pengembangan terintegrasi yang bisa membantu para administrator dan kontributor lainnya dalam suatu proyek agar tingkat modularitas dari proyek tersebut dapat meningkat?

1.3 Batasan Masalah

Berbagai macam permasalahan dan kendala mengenai proses pengembangan perangkat lunak berorientasi obyek yang disebutkan pada sub bab 1.2, tidak semu- anya bisa dikaji dan dirumuskan solusinya dalam penelitian selama 3 tahun. Maka perlu dirumuskan batasan – batasan penelitian agar lebih terfokus pada be- berapa permasalahan penting yaitu:

Fokus pada pengembangan perangkat lunak berorientasi obyek pada skala kecil sampai menengah. Batasan kecil dan menengah disini adalah memi-

liki NCLOC ≤ 170K yang didapatkan berdasarkan observasi berbagai ma- cam proyek perangkat lunak Open Source di portal sourceforge. Semua liki NCLOC ≤ 170K yang didapatkan berdasarkan observasi berbagai ma- cam proyek perangkat lunak Open Source di portal sourceforge. Semua

– lain akan lebih mudah dilakukan dengan parameter – parameter yang ter- dapat pada pemrograman berorientasi obyek seperti package, class, functi- on / method dan lain – lain. Bahasa pemrograman Java dipilih karena me- rupakan salah satu bahasa pemrograman berorientasi obyek paling populer (lebih dari 20% proyek Open Source di sourceforge dikembangkan dengan bahasa pemrograman Java, seperti yang ditunjukkan pada tabel 5.27) di dunia Open Source yang bersifat multi-platform (mendukung lebih dari satu Sistem Operasi).

Fokus pada penerapan konsep modularitas kode sumber proyek perangkat lunak berorientasi obyek yang bersifat statis. Kemudahan pemahaman dari kode sumber karena memiliki tingkat modularitas yang tinggi diha- rapkan mampu menarik pengembangan dan kontributor lainnya untuk ber- gabung. Aspek – aspek dinamis yang juga ada dalam sistem perangkat lu- nak tersebut misalnya ketergantungan yang dinamis tidak diperhitungkan dalam penelitian doktoral ini.

1.4 Tujuan Penelitian

Berangkat dari temuan bahwa modularitas merupakan salah satu kunci keberhasilan pada proyek – proyek berorientasi obyek, dan juga telah teridentifikasinya karakteristik – karakteristik modularitas pada perangkat lunak (lihat sub bab 3.6), maka dipandang perlu untuk mengembangkan lebih lanjut hasil – hasil temuan diatas menjadi sebuah konsep pendekatan modularitas pada Berangkat dari temuan bahwa modularitas merupakan salah satu kunci keberhasilan pada proyek – proyek berorientasi obyek, dan juga telah teridentifikasinya karakteristik – karakteristik modularitas pada perangkat lunak (lihat sub bab 3.6), maka dipandang perlu untuk mengembangkan lebih lanjut hasil – hasil temuan diatas menjadi sebuah konsep pendekatan modularitas pada

dalam suatu pengukuran tunggal yang dinamakan Modularity Index.

2. Suatu Software Framework (dinamakan Modularity Framework) yang akan mengintegrasikan pengukuran berdasarkan Modularity Index dalam pengembangan proyek – proyek perangkat lunak berorientasi obyek berbasis web. Hasil – hasil pengukuran akan menghasilkan rekomendasi – rekomendasi akan diberikan selama proses pengembangan agar tingkat modularitas dari proyek perangkat lunak berorientasi obyek bisa meningkat.

1.5 Manfaat Penelitian

Hasil dari penelitian doktoral ini dapat dipergunakan sebagai perangkat pendukung pengembangan perangkat lunak berorientasi obyek yang lebih baik yang akan memudahkan bagi berbagi pihak yang ingin memulai atau berpartisipasi dalam proyek tersebut. Adapun manfaat penelitian doktoral adalah sebagai berikut:

1. Bagi keilmuan Software Engineering: • Software Metrics yang dikembangkan yaitu Modularity Index

merupakan bentuk Software Metrics baru jenis Quality Metrics yang merupakan bentuk Software Metrics baru jenis Quality Metrics yang

2. Bagi organisasi – organisasi pengelola portal untuk proyek – proyek perangkat lunak: akan memberikan nilai lebih pada portalnya dengan tambahan fitur seperti Modularity Index beserta rekomendasi – rekomendasinya dalam Modularity Framework. Tambahan – tambahan fitur ini dapat membantu para administrator dan pengembang lainnya dalam meningkatkan tingkat modularitas proyek – proyek perangkat lunak yang didaftarkan dan dikembangkan di dalam portal tersebut.

3. Bagi inisiator / Administrator proyek: akan diberikan rekomendasi - rekomendasi dalam memulai dan mengembangkan suatu proyek berorientasi obyek secara benar. Apabila proyek tersebut sudah berjalan, inisiator akan lebih mudah dalam mengembangkan proyeknya agar lebih meningkat modularitasnya.

4. Bagi pengembang (developer) lainnya: memiliki gambaran yang lebih baik tentang proyek yang memungkinkan untuk berpartisipasi lebih jauh dan mendapatkan gambaran yang lebih jelas tentang proyek berorientasi obyek dimana developer tersebut aktif berkontribusi.

5. Bagi pemula / passive user / reader: akan memudahkan kontribusi awal dalam proyek dalam bentuk apapun sehingga dapat tertarik untuk berkontribusi lebih lanjut ke tingkat yang lebih tinggi.

1.6 Sistematika Penulisan

Bab II. Tinjauan Pustaka: Tinjauan terhadap karya – karya ilmiah terkini dari beberapa peneliti yang berkaitan dengan penelitian doktoral ini, yaitu mengenai proyek perangkat lunak Open Source, dan pengukuran modularitas perangkat lunak. Keaslian dari penelitian doktoral ini juga dipaparkan dalam bab ini.

Bab III. Landasan Teori: Penjelasan secara ringkas teori – teori yang berkaitan dengan permasalahan dan tahapan penelitian yang telah ditempuh dalam rangka menemukan solusi dari permasalah tersebut.

Bab IV. Metode Penelitian: Tahapan – tahapan atau milestones dari penelitian yang telah ditempuh dalam rangka menemukan solusi dari permasalahan yang ditemukan.

Bab V. Datamining Proyek Perangkat Lunak Open Source: Tahapan awal penelitian yang bertujuan untuk mendapatkan gambaran besar tentang proyek – proyek perangkat lunak Open Source dari portal pengembangan proyek perangkat lunak Open Source terbesar yaitu sourceforge.net. Hasil penelitian ini merupakan pijakan untuk penelitian tahap – tahap selanjutnya.

Bab VI. Formulasi Modularity Index: Proses perumusan dari Modularity Index yang merupakan tolok ukur kuantitatif tingkat modularitas dari proyek perangkat lunak berorientasi obyek.

Bab VII. Konstruksi Modularity Framework: proses pengembangan dari portal Modularity Framework yang didalamnya terdapat sistem rekomendasi yang berdasarkan dari pengukuran Modularity Index.

Bab IX. Kesimpulan dan Saran: Kesimpulan yang dapat diperoleh selama penelitian doktoral dan saran pengembangan lebih lanjut dari penelitian ini.

Pada bagian akhir dari disertasi ini dicantumkan pula Daftar Pustaka dan Lampiran – lampiran yang berisi data – data terperinci yang menjadi pendukung paparan dan argumentasi dalam isi disertasi.

1.7 Daftar Publikasi

Selama proses penelitian doktoral ini telah menghasilkan beberapa publikasi di jurnal lokal, konferensi Internasional dan Jurnal Internasional, yaitu:

1. Emanuel A.W.R., Wardoyo R., Istiyanto J.E., Mustofa K., "Modularity Index Metrics for Java-Based Open Source Software Projects", International Journal of Advanced Computer Science and Applications (IJACSA) Vol. 2 No. 11, November 2011.

2. Emanuel A.W.R., Wardoyo R., Istiyanto J.E., Mustofa K., "Statistical Analysis on Software Metrics Affecting Modularity in Open Source Software", International Journal of Computer Science and Information Technology (IJCSIT), Vol. 3 No. 3 June 2011.

3. Emanuel A.W.R., Wardoyo R., Istiyanto J.E., Mustofa K., "Success Rule of OSS Projects using Datamining 3-Itemset Association Rule", International Journal of Computer Science Issues (IJCSI), Vol. 7 Issue 6 November 2010.

4. Emanuel A.W.R., Wardoyo R., Istiyanto J.E., Mustofa K., "Finding

Rule", Proceeding The 2nd International Conference on Distributed Frameworks and Applications (DFmA) 2010.

6. Emanuel A.W.R., Wardoyo R., Istiyanto J.E., Mustofa K., "Statistical Analysis of Open Source Software Projects from Sourceforge.Net", Proceeding The International Conference on Computer and Mathematical Science 2010.

7. Emanuel A.W.R., Istiyanto J.E., "An Ideal Internet-based Integrated Development Environment for Open Source Software Projects", Proceeding International Industrial Informatics Seminar (IIS) 2009.

8. Emanuel A.W.R., Mustofa K., "Modularity Index to Quantify Modularity of Open Source Software Projects", Proceeding The 5th International Conference on Information and Communication Technology and Systems (ICTS) 2009.

9. Emanuel A.W.R., Wardoyo R., "An Ideal Structure of Open Source Communities", Proceeding The 5th International Conference on Information and Communication Technology and Systems (ICTS) 2009.

10. Istiyanto J.E., Emanuel A.W.R., "Success Factors of Open Source Software Projects using Datamining Technique", Proceeding Information and Communication Technology International Seminar (ITIS) 2009.

11. Emanuel A.W.R, Mustofa K, "Modularity Framework as a New Software Framework in Enhancing Modularity in Open Source Projects", Proceedings International Conference on Rural Information and Communication Technology (r-ICT) 2009.

12. Emanuel A.W.R., Istiyanto J.E., "analisis Awal Strategi Peningkatan Partisipasi Kontributor Pemula Pada Proyek - Proyek Open Source",

BAB II. TINJAUAN PUSTAKA

2.1 Penelitian Terkini

Penelitian – penelitian terkini yang berhubungan dengan penelitian doktoral ini terbagi menjadi dua bagian, yaitu: penelitian di proyek – proyek perangkat lunak berbasis Open Source, dan penelitian di pengukuran kualitas perangkat lunak pada proyek – proyek perangkat lunak Open Source.

2.1.1 Proyek Perangkat Lunak Berbasis Open Source

Beberapa studi telah berhasil mengidentifikasikan beberapa kunci keberhasilan dari proyek – proyek perangkat lunak berbasis Open Source, diantaranya:

Adanya komunitas Open Source (Open Source Communities) yang ber- evolusi baik di dalam komunitas itu sendiri, juga ber-evolusi bersama sama dengan system perangkat lunak Open Source yang dikembangkan (Nakakoji et al, 2002). Open Source Communities merupakan bagian yang tidak terpisahkan dengan Sistem Open Source itu sendiri (Christley & Madey, 2007) (Crowston et al, 2006) (van Mendel & de Bruijne, 2006).

Arsitektur dari Sistem Open Source yang sound dan modular (Lawrie & Gacek, 2002) (Gurbani et al, 2006) (Dekoenigsberg, 2008). Kondisi arsitektur yang seperti ini akan memungkinkan adanya penurunan hambatan awal (entry-barier) bagi pengembangnya (Dekoenigsberg,

Gacek, 2002). Ketersediaan dari Source Code (Crowston et al, 2004) juga memungkinkan semua orang untuk mengunduh, memodifikasi, dan mengembangkan Sistem Open Source tersebut.

Pada proyek perangkat lunak berbasis Open Source yang sudah maju, sistem perangkat lunaknya pada akhirnya akan bersifat modular dan bisa dikembangkan secara bersama – sama oleh kelompok yang terdistribusi secara geografis. Sedangkan komunitas Open Source biasanya terstruktur dengan baik menjadi:

Delapan peran (roles) yang mulai dari Project Leader, Core Member, Active Developer, Peripheral Developer, Bug Fixer, Bug Reporter, Reader dan Passive Users yang sifatnya sangat dinamis (Mockus et al, 2000). Dengan konsep pengembangan yang memungkinkan kelompok orang yang ahli hanya mengembangkan bagian tertentu saja yang diinginkan dan yang sesuai saja, ditambah adanya review antar developer (peer review) yang sangat intens maka komunitas biasanya akan berkembang seiring dengan kemajuan perkembangan sistem perangkat lunak yang sedang dikembangkan.

Struktur lapisan bawang (Crowston et al, 2006) dimana Core Developer terletak di tengah – tengah dan dikelilingi oleh banyak Peripheral Developer, dan di lapisan paling akhir adalah Bug Reporter di lapisan paling luar. Lebih lanjut lagi, penelitian oleh Showole et al menganjurkan struktur komunitas yang dinamakan model Open Onion (Showole et al, 2011).

Komunitas Open Source telah menerapkan sejenis metode pengembangan perangkat lunak meskipun masih dalam bentuk yang sederhana (Christley

sisi dokumentasi (Bouktif et al, 2006), tidak adanya atau lemahnya sarana pengembangan yang formal seperti perancanaan proyek, manajemen persyaratan, manajemen kualitas dan lain – lain (Bouktif et al, 2006) (Stallman, 1992), dan juga sisi kode sumbernya itu sendiri adalah perubahan kode sumber dengan sangat cepat, gaya koding yang buruk, dan kesulitan penanganan apabila sudah menjadi sangat kompleks (Lawrie & Gacek, 2002)(Zhou & Davis, 2005). Adapun di sisi komunitas memiliki kelemahan yaitu keluar masuknya pendukung yang sangat cepat, kurangnya dukungan formal, dan pada kenyataannya hanya terdapat sedikit proyek Open Source yang berhasil menarik cukup banyak pendukung sehingga berhasil (Bouktif et al, 2006) (Lawrie & Gacek, 2002). Bahkan beberapa ahli menekankan masalah potensial yang serius di dalam proyek berbasis Open Source yang sekarang ini yang sudah dianggap berhasil misalnya peningkatan kompleksitas, ledakan jumlah kode sumber, dan penurunan kualitas yang dikarenakan semakin sulitnya pengelolaan proyek tersebut (Bouktif et al, 2006) (Spaeth & Stuermer, 2007).

Beberapa studi telah menunjukkan solusi yang mungkin diterapkan untuk mengatasi masalah – masalah yang telah dikemukakan sebelumnya. Solusi yang pertama adalah pembuatan perangkat lunak yang memungkinan monitoring jarak jauh, monitoring aktifitas refaktoring, dan adanya umpan balik secara real-time kepada para developer (Raymond, 2000). Solusi lainnya yang ditawarkan adalah pengelolaan manajemen persyaratan yang lebih baik (Paech & Reuschenbach, 2006). Beberapa studi juga menunjukkan persyaratan agar suatu proyek berbasis Open Source agar berhasil antara lain teknologi yang dikembangkan memang dibutuhkan, persyaratannya bisa bertumbuh seiring dengan waktu, produk awal

2.1.2 Pengukuran Kualitas pada Proyek Perangkat Lunak Open Source

Isu fundamental dari pengembangan proyek perangkat lunak Open Source adalah bagaimana mengukur kualitas dari suatu sistem yang modular (Aruna et al, 2008) dikarenakan kualitas dari perangkat lunak Open Source adalah sulit untuk didefinisikan dan kompleks untuk divalidasi (Yang, 2006). Capra et al dalam stu-

di literaturnya mengungkapkan bahwa tidak ada suatu metrics individual yang da- pat menentukan kualitas dari suatu perangkat lunak Open Source dan pengukuran kualitas yang tersedia sekarang ini hanya berkisar pada tingkat kompleksitas dan metrics desain kualitas (Capra et al, 2008). Zhou dan Davis dalam penelitian me- reka tentang model kehandalan perangkat lunak menyatakan bahwa tidak ada me- tode atau metrics yang cukup baik untuk mengevaluasi kualitas proyek – proyek perangkat lunak Open Source (Zhou & Davis, 2005).

Meskipun cukup banyak peneliti yang menyangsikan adanya pengukuran yang komprehesif tentang kualitas perangkat lunak Open Source, ternyata cukup ba- nyak juga peneliti lain yang sudah memulai usaha – usaha pengukuran kualitas ini pada tingkat komponen / class. Alsmadi dan Magel menemukan bahwa ting- kat efisiensi Lines of Code (LOC) dari proyek – proyek perangkat lunak Open So- urce adalah sekitar 70% - 80% (Alsmadi & Magel, 2006). Studi tentang proyek Mozilla menunjukkan bahwa metrics CBO sangat baik dipergunakan untuk meng- ukur tingkat fault-proneness di sebuah class, sedangkan metrics LOC baik diper- gunakan dalam analisis cepat tingkat fault-proneness tersebut (Gymothy et al, 2005). Studi oleh Sing et al telah menunjukkan bahwa metrics NOC (Number of Children) memiliki korelasi yang tinggi dengan jumlah kecacatan (defects) dari proyek perangkat lunak Open Source dibandingkan dengan metrics – metrics yang

2007). Studi tentang proyek JFreeChart menunjukkan bahwa kualitas dari pe- rangkat lunak ditentukan oleh rendahnya coupling dan tingginya cohesion. Pada studi ini ditemukan bahwa tingkat fan out diinginkan rendah supaya mudah diper- gunakan kembali sedangkat tingkat fan in diinginkan tinggi yang menandakan ba- nyaknya pemakaian kembali oleh modul / class lainnya (Lee et al, 2007). Bidve dan Khare menyatakan bahwa coupling adalah ukuran kualitas perangkat lunak yang penting di sistem berorientasi obyek dan dapat dipergunakan untuk mempre- diksi ukuran kualitas seperti fault-proneness, efek imbas dari perubahan, tingkat perubahan dan lain lainnya (Bidve & Khare, 2012).

2.2 Keaslian Penelitian

Dari faktor – faktor keberhasilan pada proyek – proyek perangkat lunak berorientasi obyek, modularitas akan menjadi fokus utama dari penelitian doktoral ini. Penerapan prinsip modularitas yang baik sejak inisiasi dari proyek akan meningkatkan tingkat modularitasnya, yang akhirnya akan bisa meningkatkan kualitas dari proyek itu sendiri. Penelitian doktoral ini akan menjawab bagaimana cara (HOWTO) mencapai modularitas dari proyek perangkat lunak berorientasi obyek sejak awal inisiasi proyek, dan pendekatan yang diusulkan pada penelitian ini adalah pengembangan proyek perangkat lunak secara terpusat melalui suatu Software Framework yang menerapkan prinsip modularitas. Ini berbeda apabila dibandingkan dengan penelitian – penelitian sebelumnya yang lebih berfokus pada identifikasi (WHAT) yang menemukan karakteristik – karakteristik dari modularitas pada proyek – proyek perangkat lunak berorientasi obyek.

ditentukan oleh faktor – faktor seperti : coupling yang rendah , cohesion yang tinggi dan ukurannya (size) yang akan menentukan tingkat kompleksitasnya (Lee et al, 2007) (Stewart et al, 2005). Bagaimana memformulasikan beberapa faktor – faktor diatas menjadi satu parameter dalam bentuk Software Metrics untuk menentukan tingkat modularitas suatu perangkat lunak secara kuantitatif tunggal belum pernah dilakukan. Di dalam penelitian ini diusulkan suatu Software Metrics – dinamakan Modularity Index - yang secara kuantitatif akan dapat memberikan suatu nilai tunggal tingkat modularitas dari suatu sistem perangkat lunak berorientasi obyek.

BAB III. LANDASAN TEORI

Landasan Teori untuk penelitian doktoral ini dibagi menjadi tujuh bagian yaitu landasan teori tentang pemrograman berorientasi obyek, proyek perangkat lunak Open Source, metrics perangkat lunak, framework perangkat lunak,

Datamining Association Rule, modularitas perangkat lunak, dan pembahasan tentang perangkat SONAR yang dipergunakan selama penelitian doktoral ini.

3.1 Pemrograman Berorientasi Obyek

Bahasa pemrograman berorientasi obyek merupakan pengembangan revolusioner dari proses perkembangan bahasa pemrograman. Bahasa pemrograman berkembang dari bahasa mesin, bahasa assembler, bahasa pemrograman prosedural (C, Basic, dan lain - lain), dan pada akhirnya berkembang menjadi bahasa pemrograman berorientasi obyek. Contoh bahasa pemrograman berorientasi obyek yang sekarang masih populer adalah Java dan C#. Bentuk bahasa pemrograman berorientasi obyek ini masih bertahan meskipun sekarang ini sudah mulai populer bentuk bahasa pemrograman berbasis skrip seperti PHP, ASP, dan lain – lainnya.

Pemrograman berorientasi obyek adalah bentuk bahasa pemrograman yang berpusat pada 'obyek'. Obyek (yang dibentuk dari sebuah class) ini memiliki karakterisik tertentu (Rosenschein, 2012), yaitu:

Dapat memiliki sebuah kondisi atau state yang dinyatakan dengan nilai – nilai yang dimiliki oleh atributnya.

Dalam dunia Open Source, bahasa pemrograman berorientasi obyek yang paling populer adalah Java. Bahasa pemrograman ini dikembangkan pada tahun 1990an oleh James Gosling dari perusahaan Sun Microsystem ( http://www.freejavaguide.com/history.html ). Perusahaan Sun Microsystem sekarang ini telah menjadikan bagian dari perusahaan Oracle.

3.2 Proyek Perangkat Lunak Open Source

Open Source merupakan suatu metode pengembangan perangkat lunak yang dilakukan secara bersama – sama oleh banyak orang yang tersebar di berbagai penjuru dunia dimana setiap orang berhak untuk mengunduh, mengembangkan, dan memodifikasi kode sumber untuk kepentingan bersama. Pelopor dari metode ini adalah Richard Stallman dalam tulisannya “Why Software Should be Free” (Stallman, 1992) dan Eric Raymond dengan tulisannya “The Cathedral and the Bazaar” (Raymond, 2000) pada awal tahun 1990an. Metode ini kemudian berkembang menjadi suatu gerakan yang menghasilkan aplikasi – aplikasi besar seperti Apache Web Server, Sistem Operasi Linux dengan segala distro-nya (Debian, FreeBSD, OpenBSD dan lain – lain), browser web Firefox dan lain – lain.

Metode pengembangan perangkat lunak secara Open Source memiliki beberapa karakteristik yang berbeda bila dibandingkan dengan metode pengembangan perangkat lunak secara tertutup (closed source) atau komersial (proprietary). Beberapa karakteristik penting dari metode pengembangan secara Open Source adalah:

Kode sumber (Source Code) yang dapat diunduh, dimodifikasi, dan Kode sumber (Source Code) yang dapat diunduh, dimodifikasi, dan

Pengembang (developer) mendaftar atau direkrut secara sukarela. Seiring dengan perkembangannya, baik komunitas dan juga sistem aplikasi Open Source mengalami perubahan atau ber-evolusi. Komunitas suatu aplikasi Open Source akan terstruktur dengan pusatnya adalah beberapa developer inti (core developers) yang dikelilingi oleh banyak pengembang tambahan (periphery developers), dan juga lebih banyak lagi pelapor bug (bug reporter) yang oleh beberapa studi dikatatakan berbentuk lapisan bawang (Crowston et al, 2006). Pengembangan dilakukan secara kolaborasi dengan menggunakan media penghubung yaitu Internet.

Dalam proses pengembangan perangkat lunak secara Open Source akan mengikuti beberapa tahapan. Lehman dalam papernya berjudul “Laws of Software Evolution Revisited” mengidentifikasikan 8 tahapan penting pengembangan software secara Open Source mulai dari tingkat yang paling sederhana sampai yang paling kompleks dimana inisiator proyek pada fase ini sudah tidak mampu lagi untuk mengelola proyeknya sendiri dan membutuhkan orang lain dan komunitas (Lehman, 1996).

Tidak atau sedikit sekali mempergunakan metodologi formal (Christley & Madey, 2007). Fokus dari pengembangan secara kode terbuka hanya pada dua hal yaitu menambah fitur dan perbaikan terhadap bug yang dilaporkan. Selama proses pengembangan, proyek – proyek perangkat lunak berbasis kode terbuka menggunakan perangkat pendukung yang didesain khusus seperti perangkat pengelola versi secara bersamaan (concurrent) seperti CVS (Concurrent Versioning System) dan yang

– proyek Open Source sekarang ini cukup banyak misalnya sourceforge.net, freshmeat.net, launchpad.net, code.google.com dan lain – lain

Di sisi aplikasinya, sistem aplikasi Open Source akan berkembang dari suatu sistem yang dikembangkan oleh satu orang saja yang kemudian berkembang menjadi aplikasi yang besar dan kompleks. Suatu studi bahkan menekankan bahwa salah satu kunci utama keberhasilan suatu proyek Open Source adalah modularitas (DeKoenigsberg, 2008). Agar suatu proyek Open Source agar terus

menerus berkembang maka proyek ini harus senantiasa bisa menarik banyak kontributor pemula yang nantinya bakal menjadi kandidat dari pengembang utama (core developer). Dengan sifat komunitas yang membolehkan seseorang datang

dan pergi kapan saja, maka akan sangat mungkin bagi seorang pengembang (baik yang utama dan tambahan) untuk meninggalkan komunitas karena berbagai sebab (misalnya sudah kurang minat, mengembangkan proyek Open Source baru, dan lain – lain), maka kesinambungan dari jumlah orang yang baru harus senantiasa dipelihara agar proyek Open Source ini tetap berkembang.

Beberapa studi sebelumnya juga telah mencoba memahami kunci keberhasilan proyek – proyek Open Source dengan mencoba memahami proses kerjanya. Beberapa studi mempelajari kasus – kasus proyek Open Source besar yang dikategorikan berhasil seperti Debian GNU/Linux (Spaeth & Stuermer, 2007), FreeBSD (Dinh-Trong & Bieman, 2004), Apache (Mockus et al, 2000), OpenBSD (Li et al, 2005). Beberapa studi telah mencoba mencari keseragaman pola dengan mempelajari lebih dari satu proyek Open Source saja seperti Apache dan Mozilla (Mockus et al, 2002), 15 Proyek Open Source (von Krogh et al, Beberapa studi sebelumnya juga telah mencoba memahami kunci keberhasilan proyek – proyek Open Source dengan mencoba memahami proses kerjanya. Beberapa studi mempelajari kasus – kasus proyek Open Source besar yang dikategorikan berhasil seperti Debian GNU/Linux (Spaeth & Stuermer, 2007), FreeBSD (Dinh-Trong & Bieman, 2004), Apache (Mockus et al, 2000), OpenBSD (Li et al, 2005). Beberapa studi telah mencoba mencari keseragaman pola dengan mempelajari lebih dari satu proyek Open Source saja seperti Apache dan Mozilla (Mockus et al, 2002), 15 Proyek Open Source (von Krogh et al,

Meskipun terdapat beberapa aplikasi Open Source yang telah berhasil dan populer, lebih banyak lagi yang tidak berkembang dan gagal yang dikarenakan berbagai macam hal. Beberapa studi telah mengidentifikasikan beberapa kelemahan metode pengembangan ini misalnya jumlah developer yang masih sedikit, pola pengembangan aplikasi yang masih tidak terstruktur (ad-hoc), dan juga dibutuhkan kemampuan pemrograman yang cukup tinggi bagi seseorang untuk dapat berkontribusi pada suatu pengembangan aplikasi Open Source. Untuk itu kiat – kiat ataupun strategi – strategi perlu ditemukan dan kemudian diterapkan bagi seorang calon inisiator proyek Open Source agar proyeknya dapat berhasil. Studi oleh Stewart juga menunjukkan bahwa apabila suatu perangkat lunak yang dikembangkan secara Open Source tidak dikelola secara aktif akan menjadi semakin kompleks (Stewart et al, 2005).

3.3 Metrics Perangkat Lunak (Software Metrics)