Pada suatu hari yang cukup senggang, saya diminta bantuan seorang teman untuk membuat software sederhana untuk sebuah badan penyedia layanan –teman saya ini istilahnya mungkin jadi broker-nya lah gitu ya :p -. Proses SDLC (Software Development Life Cycle) dari mulai requirement, analisis, desain, implementasi dan testing, saya lakukan hampir semuanya sendiri (beberapa fase dibantu teman saya itu tentunya) yang berakibat bukan SDLC yang ada tapi chaos, gyahahaa. Saya diberi waktu kurang dari sebulan. Karena softwarenya relatif sederhana, berbekal ilmu dari bangku kuliah, baiklah saya coba jalankan. Ditengah pertemuan dengan user saya ditanya, “berapa kira-kira biayanya?”
Nah, loh, bingung deh. Rasa-rasanya saya belum pernah belajar harga-harga-an gitu, dan saya biasanya agak sungkan bicara masalah do-it :p. Dengan gaya diplomatis saya menjawab, “baik pak, saya coba pelajari dulu, gmana kompleksitasnya,,blaa,,blaa” –haha sok banget ya, padahal bingung tuh, maklumlah anak muda
-.
Saya benar-benar tidak ada ide masalah harga. Lalu, mulailah saya survey ke beberapa kakak kelas yang punya software house. Pertanyaan awal mereka sama “seberapa kompleks aplikasinya?”, tapi jawaban mereka beda-beda jauh. “10 sampe 12 juta-an mi” haaah? Agak kaget juga. Semahal itu ya. Lalu, “5 juta kali mi”. Yang lain menjawab, “kalo simple sih ya seharga CD aplikasi yang dijual di toko-toko itu, 50 ribuan”. oiyah?.
Pertemuan selanjutnya teman saya sebagai broker menyampaikan, “umm,,10 juta pak” (awalnya dengan harapan ada tawar menawar harga dan pasti jatuhnya akan lebih kecil dari itu). Sang user mendelik. Waktu itu rasanya pengen ketawa dalam hati. Ternyata kemahalan yaaa
hahahahaaaa. Maapkan! Dan akhirnya, harga untuk pekerjaan tersebut jatuh di nilai 2-3 juta-an (duh, maaf ya, ga pake sensor gini menyebutkan harga :p). Dengan sedikit pengalaman koding, beberapa kendala saat instalasi dan testing, Alhamdulillah, pekerjaan selesai dan tidak molor.
Sebenarnya, ada beberapa cara untuk meng-estimasi harga software. Pengetahuan ini, Alhamdulillah saya dapat di sebuah forum knowledge update belum lama ini. Diantaranya:
- 1. Benchmarking
Membandingkan dengan best practice perusahaan-perusahaan global atau internasional atau dengan perusahaan lain yang menggunakan software yang sama.
- 2. Expert Judgment
Mengundang expert/ahli untuk mengukur kompleksitas software. Ini biasanya digunakan jika software yang akan dibangun sifatnya sangat spesifik; dedicated buat perusahaan tertentu, gitu lah.
- 3. WBS (work breakdown structure)
Break down structure, memecah struktur. Yang di-break down bisa dari segi scope pekerjaan, atau scope software-nya sendiri. Break down dilakukan sampai level detil, lalu dari sana diperkirakan cost perkomponen, lalu didapat cost total.
- 4. Analogi
Jika dipasaran tidak terdapat referensi yang cukup untuk software yang sedang dikembangkan (biasanya karena softwarenya sangat spesifik), konsep analogi ini bisa diterapkan. Breakdown software yang akan dijadikan acuan menjadi komponen-komponen, analogikan kerja komponen dengan sotware yang akan dikembangkan, jika memang match, software tersebut bisa digunakan sebagai referensi.
- 5. Menggunakan tools dan memanfaatkan hisrtorical data
Misalnya menggunakan tools yang bernama COCOMO (Constructive Cost Model). Menurut pembicara pada knowledge update kemarin, COCOMO ini bekerja berdasarkan historical data yang dimiliki. Jadi setiap kita membangun aplikasi, kita input data aplikasi kita ke COCOMO itu, sehingga bisa jadi perbandingan jika kita mau membuat aplikasi di masa yang akan datang. Tapi ya itu, kelemahannya berarti kita harus punya historical data yang cukup lengkap, dan itu tentunya perlu waktu kan
FYI 1, teknik-teknik tersebut tidak hanya digunakan untuk menentukan harga dalam bentuk mata uang, tapi bisa menjadi pendekatan untuk estimasi cost dalam bentuk penggunaan resource. Jadi kira-kira, berapa resource yang dibutuhkan untuk membangun software A ini ya.
Pada awalnya, line of code (LOC) atau jumlah baris kode pemrograman menjadi patokan dalam penentuan harga. Tapi, hari gini, saat bahasa pemrograman sudah begitu advance, semakin sedikit baris kode (untuk mengeluarkan input yang sama), berarti semakin efisien program tersebut. Banyaknya LOC juga bisa jadi mengisyaratkan adanya spaghety code, yang berujung pada sulitnya maintenance atau pengembangan software tsb kelak (misal jika perlu ada modifikasi?).
Selain teknik estimasi diatas, ada satu istilah baru yang saya dapat: Function point.
Function point memiliki beberapa parameter fungsi untuk menentukan seberapa kompleks sebuah software. Parameter-parameter tersebut menjadi input sebuah formula (sudah ditetapkan) yang nantinya akan memberi output sebuah nilai kompleksitas (nantinya nilai kompleksitas tersebut berupa nilai absolute misalnya kisaran 250-500).
Parameter-parameter tersebut diantaranya jumlah input software, jumlah output software, database (berkaitan dg jumlah table, misalnya), network (ada tidaknya koneksi, protocol, dst), dan lain lain. Parameter ini sangat fleksibel, tergantung dari perusahaan atau orang yang menggunakannya. Seseorang dapat saja menambahkan banyak parameter lain untuk perhitungan atau cukup menggunakan tiga parameter saja –misalnya-. Sehingga nilai function point suatu software yang sama dapat berbeda jika dinilai di satu perusahaan dengan perusahaan lainnya.
Karena bersifat subjektif dan relatif, function point dinilai efektif untuk referensi cost software yang akan digunakan sendiri atau yang akan dikembangkan sendiri (in house). Misalnya, sebuah perusahaan punya beberapa software dan telah mendefinisikan formula function point-nya. Maka ketika ia akan membangun software baru, ia menggunakan function point-nya untuk memperkirakan cost software tersebut dan membandingkannya dengan software yang sudah ada. Dari sana, perusahaan dapat mengestimasi, kira-kira cost untuk software itu mirip-mirip dengan software yang mana ya. Jika akan outsource, perusahaan bisa memperkirakan harga untuk tender. Dan jika akan in-house, perusahaan bisa memperkirakan cost yang harus dikeluarkannya.
Tapi,, kok penjelasannya kayak beda juga ya, sama yang di Wikipedia.
FYI 2, materi diatas saya dapat dari knowledge update di tempat saya bekerja. Saya belum cross check dengan sumber lain di internet, buku atau ekspert. So, boleh percaya boleh ngga
heheheee,,,
Humm,, btw, jadi berapa ya, harusnya harga software yang dulu itu? 10 juta atau 50 ribu yaaa ^_^ xixixixiii,,,
Cheers,
3 Comments
May 15, 2009 at 3:46 am
masih ada yang kurang mi..
klo kerjaan outsource/freelance, ada yang dihitung dari jam kerja. per jam nya bayar berapa dan akan dikerjakan selama berapa bulan. bisa jadi lo function pointnya cuma 1 tapi supaya function point itu selesai perlu dikerjain 1 orang selama 1 bulan (asumsi 1 minggu full time = 40 jam jadi 1 bulan = 160 jam) nah klo rate per jamnya 20 ribu (klo di luar paling murah $10 ~ 100 ribu mi) jadi tiga juta dua ratus ribu. ini baru biaya mentahnya. belum hitung biaya support (biasanya fixed tergantung dari kompleksitas si aplikasi) dan margin yang diinginkan (untuk perusahaan, dan tawar-menawar sama client). dan jangan menawar di bagian rate per jam, cukup di marginnya aja biar adil.
meskipun ada buku ‘mythical man month’ (no baby can be delivered within 1 month using 9 woman
), tapi penghitungan di atas dianggap fair untuk developer outsource mi.
May 19, 2009 at 2:45 am
wah, makasih Peb! bertambah lengkap nih post ku
okey, tapi Peb, untuk mendapatkan: oh,, kita butuh x bulan untuk pekerjaan ini, dan kita butuh y orang dengan expert a orang, support b orang,,
bagaimana kalau outsource, atau bagaimana kalau in house,,
kita perlu menghitung x dan y nya terlebih dahulu bukankah?
sehingga kemudian jika dihubungkan dengan perhitungan Peb diatas, menghasilkan cost yang bisa diuangkan dalam z rupiah misalnya,,
Nah, metode-metode itu kurang lebih mengarah pada bagaimana mendapatkan x dan y itu,
CMIIW
dan seperti Peb bilang, karena function point bersifat relatif, so function point digunakan oleh si penyusun function point tersebut untuk menghitung cost software yang dia bangun,
again, correct me if im wrong

wah, nampaknya akan seru nih klo belajar banyak padamu
and again, thanks a lot ya Peb!! ^_^
btw, bukunya nampak menarik ya,
beli dimana?
May 19, 2009 at 2:11 pm
function point tetep perlu kok mi.. cuma tiap function point nggak bisa di-sama-rata-in begitu aja.. kalo udah didekomposisi, tiap function pointnya yang dikasi bobot (x dan y).
klo punya karyawan in-house, bisa baca di sini mi :
http://geeks.netindonesia.net/blogs/zeddy/archive/2008/12/15/curhat-proyek-pak-koq-mahal-sih-cara-menghitung-nilai-proyek.aspx
mengenai buku..
biasa lah mi, baca e-book online.. kekekeke