Dalam acara Sharing Vision kemarin kami membahas salah satu topik yang cukup berat, yaitu tentang estimasi harga dari software. Topik ini bisa kita perlebar menjadi nilai (value) dari software.
Software itu tidak kasat mata. Yang terlihat adalah media dimana software itu berada, misalnya disk atau CD dimana software itu disimpan. Demikian pula ketika dia sudah berada di dalam komputer, yang terlihat adalah komputer atau RAM-nya, bukan softwarenya. Akibatnya, agak susah bagi kita untuk memberikan apresiasi terhadap software. (Yang kasusnya mirip dengan ini adalah desain grafis ya? Yang terlihat dan yang dihargai hanya kertasnya. he he he.)
Ada banyak sekali pertanyaan yang muncul seputar harga software. Perlu dicatat bahwa peserta workshop kemarin latar belakangnya bervariasi. Yang paling banyak adalah dari bagian pengadaan IT (procurement). Jadi latar belakang pertanyaannya adalah seputar kesulitan yang mereka hadapi. Mari kita bahas beberapa pertanyaan yang muncul dalam acara kemarin. Ah, kita batasi dulu pertanyaannya ya.
Jika kita memberikan (melakukan outsource) sebuah pekerjaan pengembangan aplikasi baru kepada sebuah perusahaan pengembang aplikasi, berapa harga yang wajar untuk software tersebut? Bagaimana memperkirakan harganya?
Sebuah pertanyaan yang sederhana akan tetapi jawabannya tidak mudah. Dahulu estimasi harga ini dilakukan dengan feeling. (Sekarang juga masih. ha ha ha.) Sekarang sudah ada beberapa metodologi untuk melakukan estimasi. Meskipun metodologi tersebut belum ada yang sempurna, tetapi mereka dapat digunakan sebagai panduan (rough estimate).
Metodologi pertama yang muncul untuk melakukan estimasi harga software adalah dengan menghitung jumlah baris dari kode (lines of code atau disingkat menjadi LOC). Idenya adalah satu baris koder terkait dengan satu upaya (effort) tertentu. Seorang programmer memiliki kemampuan memprogram sejumlah LOC tertentu dalam satu hari (rata-rata). Pengembang aplikasi kemudian dibayar sesuai dengan jumlah baris yang dia kembangkan.
Ada beberapa masalah dengan metoda ini. Ambil contoh dua pengembang (A dan B) yang mengerjakan sebuah fungsi yang sama. Pengembang A membutuhkan 1000 baris, sementara pengembang B membutuhkan 100 baris untuk mengimplementasikan fungsi yang sama. Mana yang lebih baik? Tentu saja pengembang B yang lebih baik karena dia bisa mengimplementasikan fungsi tersebut dengan lebih efisien (dilihat dari sudut pandang jumlah barisnya lho, kita asumsikan algoritmanya sama). Akan tetapi pengembang A akan mendapat bayaran yang lebih mahal jika ukuran harganya adalah jumlah baris. Maka pengembang tidak mendapat insentif untuk membuat aplikasi seefisien mungkin dan bahkan cenderung untuk memperbanyak baris. ha ha ha.
Masalah berikutnya adalah sekarang sudah banyak tools untuk mengembangkan software yang berbasis GUI (CASE tools). Kita tinggal tarik kotak ini itu kemudian kita hubungkan satu sama lainnya. Kode (source code) kemudian dihasilkan dari tools tersebut. Apakah metoda LOC masih cocok untuk hal yang sejenis ini?
Belum lagi nanti kita berbicara framework dan bahasa pemrograman yang berbeda. Satu fungsi mungkin bisa diimplementasikan dalam 1 baris di perl tetapi membutuhkan 10 baris di visual Basic. Masih banyak variasi lainnya lagi. Untuk hal yang ini memang bisa dipecahkan dengan membuat tabel perbandingan upaya (effort), meskipun masih tidak mudah.
Di sisi lain, LOC merupakan artifak software yang paling mudah dilihat secara obyektif.
Masih banyak pertanyaan lain, seperti misanya
Kan kita ingin membuat perkiraan (owner estimate). Softwarenya kan belum jadi. Kita tidak tahu jumlah LOC-nya. Apalagi kita orang pengadaan, bukan pengembang aplikasi. Jangan-jangan nanti kita dibohongi pengembang. Bagaimana ini?
Nah lho. 😀 Jawabannya adalah … selamat menderita! ha ha ha. Gak ding. Ada jawabannya. Lain kali ya.
Selain metoda LOC masih ada beberapa metoda lagi yang digunakan untuk melakukan estimasi upaya pengembangan aplikasi, seperti Function Point (FP), Work Breakdown Structure (WBS), COCOMO, dan seterusnya. Ah, sudah kepanjangan. Lain kali saya sambung dengan pertanyaan lainnya.

[Foto saya sedang break di belakang peserta, sementara pak Dimitri Mahayana sedang serius memberikan presentasi di depan. ngopi dulu ah … hi hi hi]