Rabu, 04 Februari 2015

Jumat, 05 Juli 2013

Alasan Menggunakan Software Open Source dalam Pembuatan Aplikasi


            Sumber terbuka (open source) adalah sistem pengembangan yang tidak dikoordinasi oleh suatu individu / lembaga pusat, tetapi oleh para pelaku yang bekerja sama dengan memanfaatkan kode sumber (source-code) yang tersebar dan tersedia bebas (biasanya menggunakan fasilitas komunikasi internet). Pola pengembangan ini mengambil model ala bazaar, sehingga pola Open Source ini memiliki ciri bagi komunitasnya yaitu adanya dorongan yang bersumber dari budaya memberi, yang artinya ketika suatu komunitas menggunakan sebuah program Open Source dan telah menerima sebuah manfaat kemudian akan termotivasi untuk menimbulkan sebuah pertanyaan apa yang bisa pengguna berikan balik kepada orang banyak.
             Pola Open Source lahir karena kebebasan berkarya, tanpa intervensi berpikir dan mengungkapkan apa yang diinginkan dengan menggunakan pengetahuan dan produk yang cocok. Kebebasan menjadi pertimbangan utama ketika dilepas ke publik. Komunitas yang lain mendapat kebebasan untuk belajar, mengutak-ngatik, merevisi ulang, membenarkan ataupun bahkan menyalahkan, tetapi kebebasan ini juga datang bersama dengan tanggung jawab, bukan bebas tanpa tanggung jawab.
                Open Source Software merupakan perangkat lunak yang dikembangkan secara gotong-royong tanpa koordinasi resmi, menggunakan kode program (source code) yang tersedia secara bebas, dan sekaligus memperbaiki kelemahan-kelemahan yang ada pada software tersebut. Serta didistribusikan melalui internet. Salah satu open source software yang terkenal yaitu Linux. Keberadaan open source software ini sangat ditunjang oleh internet.

             Menurut David Wheeler, secara umum program yang dinamakan free software (perangkat lunak bebas) atau open source software (perangkat lunak sumber terbuka) adalah program  yang lisensinya memberi kebebasan kepada pengguna menjalankan program untuk apa  saja, mempelajari dan memodifikasi program, dan mendistribusikan penggandaan program asli atau yang sudah dimodifikasi tanpa harus membayar royalti kepada pengembang sebelumnya.
Istilah ini dikemukakan oleh Eric Raymond pada tahun1998, untuk menghilangkan kata “free “ yang bermakna ambigu yaitu gratis atau kebebasan. Hak-hak yang disediakan pada Open Source:
a.Hak untuk menbuat salinan program dan mendistribusikannya
b.Hak untuk mengakses source code untuk bisa melakukan modifikasi.

2. Kelebihan dan Kekurangan software open source Software :

a. Kelebihan dari open source software, yaitu:
  1. Adanya hak untuk mendistribusikan modifikasi dan perbaikan pada kode.
  2. Ketersediaan source code dan hak untuk memodifikasi.
  3. Tidak disandera vendor, open source menggunakan format data terbuka, sehingga data menjadi transparan dan bisa dengan bebas diproses di sistem komputer yang berbeda-beda, sambil tetap menjaga keamananya. Dengan demikian, konsumen tidak lagi terikat pada kemauan vendor untuk dapat menggunakan data-datanya.
  4. Banyaknya tenaga (SDM) untuk mengerjakan proyek, proyek open source biasanya menarik banyak developer, misalnya pengembangan web server Apache menarik ribuan orang untuk ikut mengembangkan dan memantau.
  5. Kesalahan (bugs, error) lebih cepat ditemukan dan diperbaiki, hal ini dikarenakan jumlah developer-nya sangat banyak dan tidak dibatasi. Visual inspection (eye-balling) merupakan salah satu metodologi pencarian bugs yang paling efektif. Selain itu, source code yang tersedia membuat setiap orang dapat mengusulkan perbaikan tanpa harus menunggu dari vendor.
  6. Kualitas produk lebih terjamin, hal ini dikarenakan evaluasi dapat dilakukan oleh banyak orang sehingga kualitas produk dapat lebih baik. Namun, hal ini hanya berlaku untuk produk open source yang ramai dikembangkan orang. Tidak selamanya open source dikembangkan oleh banyak orang, karena bisa juga dilakukan oleh individual.
  7. Hemat biaya, sebagian besar developer ini tidak dibayar. Dengan demikian, biaya dapat dihemat dan digunakan untuk pengeluaran yang tidak dapat ditunda, misal membeli server untuk hosting web.
  8. Tidak mengulangi development, pengulangan (re-inventing the wheel) merupakan pemborosan. Adanya source code yang terbuka membuka jalan bagi seorang programmer untuk melihat solusi-solusi yang pernah dikerjakan oleh orang lain. Namun, pada kenyataannya tetap banyak pengulangan.
  9. User dapat memodifikasi dan mengunci agar hanya kalangan terbatas yang dapat membaca kode dan memodifikasinya.
  10. Mencegah software privacy yang melanggar hukum.

b. Kekurangan open source software, yaitu:
  1. Kurangnya SDM yang dapat memanfaatkan open source, ketersediaan source code yang diberikan dapat menjadi sia-sia, jika SDM yang ada tidak dapat menggunakannya. SDM yang ada ternyata hanya mampu menggunakan produk saja, Jika demikian, maka tidak ada bedanya produk open source dan yang propriertary dan tertutup.
  2. Tidak adanya proteksi terhadap HAKI, kebanyakan orang masih menganggap bahwa open source merupakan aset yang harus dijaga kerahasiannya. Hal ini dikaitkan dengan besarnya usaha yang sudah dikeluarkan untuk membuat produk tersebut. Karena sifatnya dapat di-abuse oleh orang-orang untuk mencuri ide dan karya orang lain.
  3. Kesulitan dalam mengetahui status project.
  4. Tidak ada garansi dari pengembangan.
  5. Limitasi modifikasi oleh orang – orang tertentu yang membuat atau memodifikasi sebelumnya.
  6. Untuk beberapa platform, contohnya JAVA yang memiliki prinsip satu tulis dan bisa dijalankan dimana saja, akan tetapi ada beberapa hal dari JAVA yang tidak competible dengan platform lainnya. Contohnya J2SE yang SWT – AWT bridge-nya belum bisa dijalankan di platform Mac OS.
  7. Open Source digunakan secara sharing, dapat menimbulkan resiko kurangnya diferensiasi antara satu software dengan yang lain, apabila kebetulan menggunakan beberapa open Source yang sama.
Sumber

COnstructive COst MOdel (COCOMO)

1. Sejarah COCOMO

Cocomo (Constructive Cost Model) yang dikembangkan oleh W. Barry Boehm pada tahun 1981, yang merupakan kombinasi dari estimasi parameter persamaan dan metode pembobotan. Berdasarkan perkiraan instruksi (Instruksi Sumber Terkirim DSI), usaha dihitung dengan memperhatikan usaha baik kualitas dan produktivitas faktor. Pada tahun 1990, muncul suatu model estimasi baru yang disebut dengan COCOMO II. Secara umum referensi COCOMO sebelum 1995 merujuk pada original COCOMO model yaitu COCOMO 81, kemudian setelah itu merujuk pada COCOMO II.
Pada tahun 1997 COCOMO II telah dikembangkan dan akhirnya diterbitkan pada tahun 2000 dalam buku Estimasi Biaya COCOMO II Software dengan COCOMO II. adalah penerus dari COCOMO 81 dan lebih cocok untuk mengestimasi proyek pengembangan perangkat lunak modern. Hal ini memberikan lebih banyak dukungan untuk proses pengembangan perangkat lunak modern, dan basis data proyek diperbarui. Kebutuhan model baru datang sebagai perangkat lunak teknologi pengembangan pindah dari batch processing mainframe dan malam untuk pengembangan desktop, usabilitas kode dan penggunaan komponen software off-the-rak. Artikel ini merujuk pada COCOMO 81.


2. Pengertian COCOMO
COCOMO adalah sebuah model yang dikembangkan untuk memperoleh perkiraan dari jumlah orang-buan yang diperlukan untuk mengembangkan suatu produk perangkat lunak. Satu hasil observasi yang paling penting dalam model ini adalah bahwa motivasi dari tiap orang yang terlibat ditempatkan sebaai titik berat. Hal ini menunjukkan bahwa kepemimpinan dan kerja sama tim merupakan sesuatu yang penting, namun demikian poin pada bagian ini sering diabaikan.
Tidak seperti model estimasi biaya yang lain, COCOMO adalah model terbuka, sehingga semua detail dipublikasikan, termasuk :
  • Dasar persamaan perkiraan biaya
  • Setiap asumsi yang dibuat dalam model
  • Setiap definisi
  • Biaya yang disertakan dalam perkiraan dinyatakan secara eksplisit


3. Basic COCOMO (COCOMO 81)

Pengenalan Cocomo ini diawali tahun 70-an akhir. Sang pelopor Boehm, melakukan riset dengan mengambil kasus dari 63 proyek perangkat lunak untuk membuat model matematisnya. Model dasar dari model ini adalah persamaan:
effort = C * size^M , dimana
  • effort adalah usaha yang dibutuhkan selama proyek, diukur dalam person-months;
  • c dan M adalah konstanta-konstanta yang dihasilkan dalam riset Boehm dan tergantung pada penggolongan besarnya proyek perangkat lunak;
  • size adalah estimasi jumlah baris kode yang dibutuhkan untuk implementasi, dalam satuan KLOC (kilo lines of code);

4. Konstanta COCOMO

Penggolongan suatu proyek perangkat lunak didasarkan pada sistem aplikasi dimana perangkat lunak tersebut dikembangkan dan lingkungan pendukungnya.
Penggolongan ini terbagi atas:
  • Organic mode: digunakan pada proyek-proyek kecil dengan sedikit pekerja dan dikembangkan pada lingkungan yang tidak memerlukan program antar-muka (interface) yang kompleks, contoh: pembuatan situs mandiri untuk perusahaan;
  • Semi-detached mode: dalam mode ini produk dikembangkan dalam sistem yang memiliki banyak batasan atau syarat tertentu untuk pemrosesan dalam perangkat keras dan lunak tertentu. Apabila terjadi perubahan pada sistem maka akan menyebabkan biaya produksi akan bertambah tinggi, contoh: transaksi sistem pada database sebuah bank;
  • Embedded mode: mode ini merupakan kombinasi antara dua mode di atas dan memiliki karekteristik gabungan antara keduanya. Proyek mode ini dikembangkan ke dalam serangkaian perangkat keras, lunak dan batasan operasional yang ketat, contoh: aplikasi pengontrolan penerbangan pada pesawat terbang.
Adapun konstanta yang dibutuhkan pada masing-masing mode tersebut adalah (didapatkan dari hasil riset Boehm):
Tipe sistem 
ca
Ma
cb
Mb
Organic 
2.4 
1.05 
2.5 
0.38 
Semi-detached 
3.0 
1.12 
2.5 
0.35 
Embedded 
3.6 
1.20 
2.5 
0.32 

Dengan demikian rumusan dasar di atas, dapat digunakan untuk perhitungan-perhitungan sebagai berikut:
  • (E) effort = CA x (size)^ MA
    (satuan: ManMonth dalam
    COCOMO
    I
    (Person Month dalam COCOMO II) = 152 jam kerja);
  • (D) duration = CB x E^MB
        (satuan: Month);
  • Productivity
    = size / E (satuan: KLOC/Man Month);
  • Average staffing = E / D (satuan: FTE = Full Time Employees, yaitu jumlah orang yang bekerja penuh dalam 1 hari kerja ~ 8 jam )

5.    Penggunaan COCOMO

Adapun langkah-langkah untuk menghitung estimasi dengan menggunakan Basic COCOMO adalah:
1: Menghitung estimasi informasi nilai total domain, yaitu informasi mengenai karakter spesifik perangkat lunak yang akan dihasilkan;
2: Menyesuaikan kompleksitas proyek berdasarkan faktor pemberat dan "cost drivers" (∑ Fij ); kemudian menghitung estimasi jumlah titik fungsi (Function Points);
FP = nilai total domain * [0.65 + 0.01 * Fij];
3: Menghitung estimasi LOC (Line of Code). Tekniknya dasarnya sama dengan yang digunakan dalam perhitunga PERT (three points estimation), dengan cara;
  • EV = (Sopt + 4 Sm + Spess) / 6, dimana:
    EV berarti Estimated Value;
  • Atau menghitung KLOC/ FP (dari tabel
    hasil
    riset
    )
    berdasar pada bahasa pemrograman yang digunakan dalam implementasi proyek perangkat lunak;
4: Memilih kompleksitas proyek (menentukan C dan M), dari organic, embedded atau semi-detached model.
5: Menghitung E = effort dan D = duration, dengan demikian akan menghasilkan estimasi usaha, biaya dan waktu.

6. Menghitung nilai domain

Untuk menghitung karakter spesifik produk perangkat lunak yang akan dihasilkan, digunakan analisis domain sebagai berikut:
Informasi nilai domain (Simple Average Complex)    Jumlah
Jumlah input pemakai     3     4         6      *         =
Jumlah output pemakai     4 5         7      *         =
Jumlah inquiry pemakai     3     4         6      *         =
Jumlah file             7     10     15      *         =
Jumlah eksternal interface     5     7     10      *         =      +

Keterangan:
  • Input pemakai: setiap input data dari user yang dipakai untuk menjalankan aplikasi.
  • Output pemakai: setiap hasil output dari proses yang ditampilkan kepada user.
  • Inquiry pemakai: setiap on-line input yang menghasilkan responsi software secara langsung.
  • Jumlah file: setiap master file yang menjadi bagian dari aplikasi.
  • Eksternal interface: setiap interface (sarana) eksternal yang menyalurkan informasi dari sistem satu ke sistem lainnya.

7. Menghitung faktor pemberat ("cost drivers")

Setelah total analisis domain selesai dihitung, langkah berikutnya adalah menghitung faktor pemberat, sebagai berikut:
Ada 14 faktor pemberat yang diperhitungkan, dengan masing-masing berbobot dari 0 sampai dengan 5, bergantung pada kebutuhan sebuah produk perangkat lunak terhadap masing-masing faktor tersebut, dengan urutan:
(No Influence = tidak berpengaruh, Incidental = terkadang dibutuhkan, Moderate = dibutuhkan kurang dari rata-rata, Average = rata-rata dibutuhkan, Significant = dibutuhkan namun tidak harus, Essential = harus terimplementasi).
Ke-14 faktor pemberat yang dimaksudkan adalah:
0
1 
2 
3 
4 
5 
  1. Backup dan recovery
  2. Komunikasi data
  3. Proses terdistribusi
  4. Kepentingan performa
  5. Keberadaan lingkungan operasi
  6. Online data entry
  7. Input melalui beberapa tampilan / operasi
  8. Peng-update-an file master secara online
  9. Kompleksitas nilai 'domain' (tahap1) diatas
  10. Kompleksitas proses internal aplikasi
  11. Perulangan (reuse) penggunaan code
  12. Ketersediaan rancangan untuk konversi dan instalasi
  13. Rancangan untuk pengulangan instalasi di lingkungan yang berbeda
  14. Fleksibilitas bagi pemakai

Total Fij
Dari sini dapat dihitung estimasi titik fungsi (function points), sebagai berikut:
FP = nilai total domain * [0.65 + 0.01 * Fij];

8. Estimasi LOC

Langkah berikutnya dalam proses estimasi COCOMO adalah menghitung jumlah Line of Code (LOC).
Diawali oleh penelitian Boehm, muncul kemudian estimasi jumlah LOC untuk berbagai bahasa pemrograman yang digunakan dalam implementasi proyek perangkat lunak. Estimasi ini tidak bersifat mutlak, karena perhitungannya didapatkan dari data-data historis berbagai proyek perangkat lunak, dan diambil nilai rata-ratanya dengan menggunakan teknik PERT. Data-data ini bersifat statistis dengan mengandalkan kekuatan distribusi rata-rata (mean distribution).
Tabel LOC/FP untuk berbagai jenis bahasa pemrograman dapat dilihat di bawah ini (data dari http://www.engin.umd.umich.edu/CIS/course.des/cis525/js/f00/gamel/cocomo.html, bandingkan juga dengan tabel dari [ALB83, JON91,ROG97]):

Programming Language  
LOC/FP
(rata-rata)  
Bahasa Assembly
320
C
128
COBOL
105
Fortran
105
Pascal
90
Ada
70
Bahasa Berorientasi Obyek
30
Bahasa Generasi Keempat (4GLs), yaitu bahasa yang digunakan spesifik untuk suatu tools, biasa untuk aplikasi database, contoh: PL/SQL dalam Oracle.
20
Generator Kode
15
Spreadsheets
6
Desain Grafis (icons)
4


Jumlah LOC/FP ini harus diubah ke KLOC/FP (Kilo LOC) dalam perhitungan, dengan membaginya dengan 1000 (sesuai dengan satuan dari hasil riset Boehm). Pada akhir perhitungan tahap ini akan dihasilkan size, yaitu jumlah baris kode dalam satuan KLOC.
Tahap selanjutnya adalah menggunakan KLOC yang dihasilkan disini untuk mengestimasikan: usaha (effort), waktu (duration), dan jumlah pekerja yang dibutuhkan dalam proyek (FTE).

Sumber 1 
Sumber 2