Thursday, July 7, 2011

Software Measurement : Function Point

Dalam Development sebuah perangkat lunak/software terkadang para developer memiliki kesulitan untuk mencari satuan yang dapat mendeskripsikan ukuran dari sofware yang akan dibuat. Untuk mengetahui ukuran software yang akan dibuat sangat penting karena akan berpengaruh pada biaya dalam produksi software tesebut.

Salah satu cara yang populer untuk melakukan pengukuran perangkat lunak dapat mengunakan cara yang bernama FUNCTION POINT.

Hasil dari metode Function Point akan lebih mudah dipahami oleh pengguna non teknis yang dapat membantu mengkomunikasikan informasi ukuran software ke pengguna atau client.

Function Point dikembangkan pertama kali oleh Allan J. Albrecht di pertengahan tahun 1970-an. Merupakan upaya untuk mengatasi kesulitan yang berhubungan dengan kode program sebagai ukuran dari ukuran perangkat lunak, dan untuk membantu dalam memprediksi effort dalam development perangkat lunkas.

Function Point pertama kali di terbitkan pada tahun 1979. Pada tahun 1984 Albrecht menyempurnakan metode Function Point.

Sejak Function Point Internasional User Group (IFPUG) didirikan, beberapa versi Function Point sebagai Pedoman telah diterbitkan oleh IFPUG. Secara global pengukuran Software dengan Function Point telah diterima secara luas dalam industri perangkat lunak lebih dari 40 tahun sebagai pengukuran standar perangkat lunak.

Dalam ilmu fisika banyak satuan untuk mengukur fenomena yang ada di alam semesta ini seperti Menit untuk mengukur waktu, Kilo Meter untuk mengukur jarak, Celsius untuk mengukur Suhu.

Dan untuk mengukur perangkat lunak atau software maka dapat menggunakan Function Point yang biasa disingkat dengan FP.

Function Point adalah sebuah sebuh teknik terstruktur dalam memecahkan masalah dengan cara memecah sistem menjadi komponen yang lebih kecil dan menetapkan beberapa karakteristik dari sebuah software sehingga dapat lebih mudah dipahami dan dianalisis.

Function Point mengukur dari perspektif Functional dari software yang akan dibangun, terlepas dari bahasa programaan, metode development atau platform perangkat keras yang digunakan,

Function Point harus dilakukan oleh orang terlatih dan berpengalaman dalam development software, karena dalam memberikan nilai-nilai dari setiap komponen Function point bersifat subyektif, dan akan wajar apabila hasil perhitungan function point seseorang akan berbeda dengan yang lain.

Pengerjaan Function poin harus dimasukkan sebagai bagian dari rencana proyek secara keseluruhan. Artinya harus dijadwalkan dan direncanakan pengerjaannya.

Hasil dari pengukuran menggunakan Function Point dapat digunakan untuk mengestimasi biaya dan effort yang diperlukan dalam development perangkat lunak.


TAHAPAN MELAKUKAN FUNCTION POINT


TAHAP 1. Menghitung Crude Function Points (CFP)

Crude Function Points (CFP) adalah untuk menghitung bobot nilai dari komponen-komponen Function Point yang dikaitkan dengan software yang akan dibuat.

Komponen-komponen Function Point terdiri dari 5 buah yaitu sebagai berikut.
  • Tipe Input, Berkaitan dengan interface yang lakukan pengguna/user dalam memasukan data pada aplikasi.
  • Tipe Output, Berkaitan dengan output yang dihasilkan aplikasi untuk pengguna/user yang dapat berupa laporan di print atau yang ditampilkan pada layar.
  • Tipe Query/Search/View, Berkaitan dengan query terhadap data yang tersimpan.
  • Tipe File/Tabel/Database, berkaitan dengan logic penyimpan data yang dapat berupa file atau semacam database relational.
  • Tipe Interface Eksternal, Berkaitan dengan komunikasi data pada parangkat/mesin yang lain, contoh nya adalah membuat aplikasi SMS Server yang membutuhkan. koneksi pada perangkat keras Modem telepon.
Selanjutnya setiap tipe komponen tersebut diberikan bobot berdasarkan kompleksitasnya, seperti yang ditujukan pada table dibawah ini.

Klik Gambar Untuk Melihat Lebih Jelas
  • Nilai-nilai Bobot dari setiap komponen diatas adalah ketetapan atau konstanta yang dibuat oleh Function Point Internasional User Group (IFPUG)


TAHAP 2. Menghitung Relative Complexity Adjustment Factor (RCAF)

RCAF digunakan untuk menghitung bobot kompleksitas dari software berdasarkan 14 karakteristik.

Penilaian Komplesitas memilik skala 0 s/d 5
  • 0 = Tidak Pengaruh
  • 1 = Insidental
  • 2 = Moderat
  • 3 = Rata-rata
  • 4 = Signifikan
  • 5 = Essential

Berikut ini adalah 14 Karakteritik Software

NO KARAKTERISTIK BOBOT
1.Tingkat kompleksitas Komunikasi Data[0/1/2/3/4/5]
2.Tingkat kompleksitas Pemrosesan Terdistribusi[0/1/2/3/4/5]
3.Tingkat kompleksitas Performance[0/1/2/3/4/5]
4.Tingkat kompleksitas Konfigurasi[0/1/2/3/4/5]
5.Tingkat Frekuensi Penggunaan Software[0/1/2/3/4/5]
6.Tingkat Frekuensii Input Data[0/1/2/3/4/5]
7.Tingkat Kemudaaan Pengunaan Bagi User[0/1/2/3/4/5]
8.Tingkat Frekuensi Update Data[0/1/2/3/4/5]
9.Tingkat Kompleksitas Prosesing Data[0/1/2/3/4/5]
10.Tingkat Kemungkinan Penggunaan Kembali/Reusable Kode Program[0/1/2/3/4/5]
11.11. Tingkat Kemudahaan Dalam Instalasi[0/1/2/3/4/5]
12.Tingkat Kemudahaan operasional software (backup, recovery, dsbny)[0/1/2/3/4/5]
13.Tingkat Software dibuat untuk multi organisasi/perusahaan/client[0/1/2/3/4/5]
14.Tingkat kompleksitas dalam mengikuti perubahaan/fleksibel[0/1/2/3/4/5]
TOTAL?
  • Karakteristik diatas merupakan ketetapan atau konstanta yang dibuat oleh Function Point Internasional User Group (IFPUG)


TAHAP 3 : Menghitung Function Point (FP)

Adalah proses melakukan perhitungan untuk mendapat nilai Function point dari sofrware yang akan dibangun

Rumus FP

  • FP = CFP x (0.65 + 0.01 x RCAF)

Angka 0.65 dan 0.01 adalah ketetepan atau konstanta yang dibuat oleh Function Point Internasional User Group (IFPUG)



CONTOH  KASUS PENGGUNAAN FUNCTION POINT DALAM PROJEK

Akan dibangun sebuah software dalam pengelolahan Sistem Informasi Sumber Daya Manusia yang rencanakan untuk mengelola karyawan dari jumlah 10 hingga 200 karyawan dan akan menghasilkan berbagai macam laporan seperti absensi karyawan,sallery karyawan dan sebagainya. Aplikasi ini sangat memungkinkan berinteraksi dengan perangkat keras absensi seperti Fingger Print serta menyediakan webservice agar Software Sumber Daya Manusia ini dapat berkolaborasi Software Menajemen Proyek yang telah berjalanan.

TAHAP 1. Menghitung Crude Function Points (CFP)

Klik Gambar Untuk Melihat Lebih Jelas

  • Crude Function Points (CFP) yang didapat 923


TAHAP 2. Menghitung Relative Complexity Adjustment Factor (RCAF)

NO KARAKTERISTIK BOBOT
1.Tingkat kompleksitas Komunikasi Data3
2.Tingkat kompleksitas Pemrosesan Terdistribusi3
3.Tingkat kompleksitas Performance5
4.Tingkat kompleksitas Konfigurasi2
5.Tingkat Frekuensi Penggunaan Software5
6.Tingkat Frekuensii Input Data3
7.Tingkat Kemudaaan Pengunaan Bagi User5
8.Tingkat Frekuensi Update Data1
9.Tingkat Kompleksitas Prosesing Data3
10.Tingkat Kemungkinan Penggunaan Kembali/Reusable Kode Program3
11.11. Tingkat Kemudahaan Dalam Instalasi3
12.Tingkat Kemudahaan operasional software (backup, recovery, dsbny)2
13.Tingkat Software dibuat untuk multi organisasi/perusahaan/client3
14.Tingkat kompleksitas dalam mengikuti perubahaan/fleksibel4
TOTAL45


TAHAP 3. Menghitung Function Point (FP)

FP = CFP x (0.65 + 0.01 x RCAF)
     = 923 x (0.65 + (0.01 x 45))
     = 1015.3

Nilai FP untuk proyek Software dalam pengelolahan Sistem Informasi Sumber Daya Manusia adalah 1015.3 FP


TAHAP 4. Konversi FP menjadi Biaya

Misalkan kita mempunyai table yang berisikan tarif untuk setiap nilaI FP sebagai berikut


NO TIPE PROJEK TARIF/FP JAM/FP ALOKASI SDM
1 Web Profile Rp. 20.000 1 2
2 Sistem Informasi Rp. 100.000 1 5
3 E-Commerce Rp. 40.000 1 2


Tabel tarif tersebut dihasilkan berdasarkan data history atau pengalaman dari perusahaan sendiri dalam developing software atau pengalaman perusahaan lain. Setiap perusahaan bisa berbeda-beda tarifnya karena bersifat subyektif,

Dan mengenai Tarif Rupiah per-FP setiap peruhaan bisa berbeda-berbeda tergantug dari kredibilitas perusahaan di pasar, semakin banyak berhasi menyelesaikan proyek sejenis atau memiliki produk yang laku di pasaran akan membuat tarif per FP nya meningkat.

Proyek Software dalam pengelolahan Sistem Informasi Sumber Daya Manusia adalah 1015.3 FP dengan Tarif Rupiah/FP untuk jenis Sistem Informasi adalah Rp. 100.000.  Maka Dapat dihasilkan sebagai berikut.
  • Estimasi Biaya Development Software : Rp 100.000 x 1015.3 = Rp. 101.530.000
  • Estimasi Khusus Produksi Software : 1 Jam x 1015.3 = 1015 Jam atau 127 Hari Kerja (Asumsi 1 Hari Kerja sama dengan 8 Jam) atau 5 Bulan (Asumi 1 bulan 25 Hari Kerja)

Referensi

22 comments:

  1. Mantabb..
    Artikel function point nya detail banget..
    lanjutkan bapak dendie.. hehehe..
    semangatt :D

    ReplyDelete
  2. mau tany dalam tabel yang benar Internal apa External... dalam tabel nilai bobot itu internal tapi di Komponen-komponen Function Point terdiri dari 5 buah yaitu Eksternal...mohon pencerahannya....

    ReplyDelete
    Replies
    1. Eskternal yang benar mas
      makasih buat koreksi nya..

      Delete
  3. mantep banget pemaparannya..

    bravo dendieisme.blogspot.com

    ReplyDelete
  4. mas bisa minta Contoh Pengukuran PL yang anda lakukan...sekalian contoh PL yang anda ukur(slide aja)..ni sebagai bahan Skripsi saya mas...sangat butuh bantuan nih...

    kalo misal tidak keberatan tolong dikirim imel mas
    yohanzetta@gmail.com

    ReplyDelete
    Replies
    1. Pengukuran PL yang menggunakan Function Point seperti yang ditulis di blog ini mas.

      Delete
  5. terimakasih ada pencerahan utk FP pi sekalian gambarkan dfd nya dunx

    ReplyDelete
  6. Maaf saya mau tanya, bagaimana kita menentukan kalau input itu termasuk sederhana, menengah atau kompleks.
    lalu untuk file logic apakah dihitung per tabel dalam satu database atau dihitung satu database secara keseluruhan. padahal sistem umum biasanya hanya memiliki satu db.

    ReplyDelete
  7. dan di contoh, input itu kok banyak ya pak? bagaimana menentukan inputnya? apakah hanya dari input yang kita lihat di user interface, atau variabel yang di tiap method codingnya (parameter) juga dijadikan input?

    ReplyDelete
  8. keren, function point nya lengkap banget. :)
    terimakasih.

    ReplyDelete
  9. BERMANFAAT BANGET,,,MAKASIH MIN...

    ReplyDelete
  10. maaf mau nanya Pak
    kalau mau menentukan level kompleksitas tipe output dll itu sederhana, menengah atau kompleks itu bagaimana ya???

    ReplyDelete
  11. Ketika sudah mendapatkan hasil function point, misalkan 1500, selain menentukan biaya dan jumlah jam kerja, apa bisa mendapatkan seberapa kompleks kah sistem yang kita analisis dari nilai 1500 tersebut, misalkan jika hasil FPnya < 750 berarti sistem tersebut terhitung sistem sederhana, jika 7501250 termasuk Sistem Kompleks??

    ReplyDelete
  12. Ketika sudah mendapatkan hasil function point, misalkan 1500, selain menentukan biaya dan jumlah jam kerja, apa bisa mendapatkan seberapa kompleks kah sistem yang kita analisis dari nilai 1500 tersebut, misalkan jika hasil FPnya < 750 berarti sistem tersebut terhitung sistem sederhana, Jika lebih dari 1250 termasuk sistem yang kompleks??

    ReplyDelete
  13. Mau nanya pak, untuk berbasis LOC ada tidak pembahasannya pak ?

    ReplyDelete