Bab 2 membahas landasan teori rekayasa perangkat lunak dan estimasi biaya pembuatan perangkat lunak. Rekayasa perangkat lunak adalah proses pengembangan perangkat lunak dengan prinsip rekayasa untuk menghasilkan perangkat lunak yang bermanfaat bagi pelanggan dengan biaya yang ekonomis. Metode function point digunakan untuk mengestimasi biaya dan waktu pembuatan perangkat lunak berdasarkan ukuran fungsionalitasnya.
1. BAB II
LANDASAN TEORI
2.1 Rekayasa Perangkat Lunak
Rekayasa Perangkat Lunak (software engineering) merupakan pembangunan
dengan menggunakan prinsip atau konsep rekayasa dengan tujuan menghasilkan
perangkat lunak yang bernilai ekonomi yang dipercaya dan bekerja secara efisien
menggunakan mesin. Perangkat lunak banyak dibuat dan pada akhirnya sering
tidak digunakan karena tidak memenuhi kebutuhan pelanggan atau bahkan karena
masalah non-teknis seperti keenganan pemakai perangkat lunak (user) untuk
mengubah cara kerja dari manual ke otomatis, atau ketidakmampuan user
menggunakan komputer. Oleh karena itu rekayasa perangkat lunak dibutuhkan
agar perangkat lunak yang dibuat tidak hanya menjadi perangkat lunak yang tidak
terpakai.
Rekayasa perangkat lunak lebih fokus pada praktik pengembangan perangkat
lunak dan mengirimkan perangkat lunak yang bermanfaat kepada pelanggan
(costumer). Adapun ilmu komputer lebih fokus pada teori dan konsep dasar
perangkat lunak.
8
2. 9
2.1.1. Pengertian Perangkat Lunak
Perangkat lunak adalah instruksi-instruksi (program komputer) yang ketika
dijalankan menyediakan fitur-fitur, fungsi-fungsi, dan kinerja yang dikehendaki,
struktur data yang memungkinkan program-program memanipulasi informasi, dan
informasi deskriptif pada salinan tercetak dan bentuk-bentuk maya yang
menggambarkan pengoperasian dan penggunaan program-program1. Perangkat
lunak memiliki bermacam-macam spesifikasi tergantung kebutuhan dan tujuannya
yang diinginkan oleh pembuat perangkat lunak tersebut. Sifat dari perangkat
lunak berbeda dengan perangkat keras, yaitu apabila perangkat keras merupakan
komponen yang nyata yang dapat dilihat dan disentuh oleh manusia, sedangkan
perangkat lunak tidak dapat disentuh dan dilihat secara fisik. Perangkat lunak
memang tidak tampak secara fisik dan tidak berwujud benda, namun dapat
dioperasikan oleh manusia2.
Karakterperangkat lunakadalah sebagai berikut3 :
1.
Perangkat lunak dibangun dengan software engineering bukan diproduksi
secara manufaktur atau pabrikan.
2
Perangkat lunak tidak pernah usang karena kecacatan karena perangkat
lunak dapat diperbaiki.
1.
2.
3.
Roger S.Pressman, Ph. D, Software Engineering Seventh Edition, 2010, Hal : 5
Rosa A et al, Rekayasa perangkat Lunak Terstruktur Dan Berorientasi Objek, 2013, Hal : 1
Rosa A et al, Rekayasa perangkat Lunak Terstruktur Dan Berorientasi Objek, 2013, Hal : 2
3. 10
3.
Barang produksi pabrikan biasanya komponen barunya akan terus
diproduksi, sedangkan perangkat lunak biasanya terus diperbaiki seiring
bertambahnya kebutuhan.
Menurut Eddy Perangkat lunak mempunyai karakterisitik sebagai berikut4:
1.
Maintanability (dapat dirawat), perangkat lunak harus dapat memenuhi
perubahan kebutuhan.
2.
Dependability, perangkat lunak harus dapat dipercaya.
3.
Efisiensi, perangkat lunak harus efisien dalam penggunaan resource.
4.
Usability, perangkat lunak harus dapat digunakan sesuai dengan yang
direncanakan.
Perangkat lunak mempunyai mutu yang dipengaruhi oleh minimal tiga pihak
yaitu5 :
1.
Sponsor
Seseorang atau organisasi yang membiayai atau membayar selama
pengembangan
atau
perantaraan
sistem
software
dan
biasanya
mempunyai respon terhadap pengembangan sistem software itu sendiri
dengan melibatkan perhitungan biaya yang optimal.
4.
5.
Ian Sommerville, Software Engineering Ninth Edition, 2011
Eddy Prasetyo Nugroho et al, Rekayasa Perangkat Lunak, 2009
4. 11
2.
User
Setiap orang yang secara langsung berinteraksi terhadap eksekusi
software, yang secara langsung memberi input ke komputer dan
menggunakan atau menikmati output dari komputer.
3.
Developer
Seseorang atau organisasi yang memberikan modifikasi dan memelihara
terhadap error serta mengembangkan sistem software tersebut.
Gambar 2.1 Gambar sisi pandang dari komponen kategori terhadap mutu
perangkat lunak
Masing-masing komponen kategori mempunyai sudut pandang tersendiri
terhadap mutu suatu perangkat lunak, tetapi kriteria tersebut tidak saling
independen.
5. 12
Menurut Pressman, perangkat lunak memiliki beberapa kategori, yaitu :
1.
Perangkat lunak sistem, yaitu kumpulan program untuk melayani
program-program lain. Contoh : Operating system, compiler, text editor,
device driver.
2.
Perangkat lunak waktu nyata, yaitu perangkat lunak yang memonitor/
menganalisa/ mengendalikan kejadian dunia nyata. Contoh : komponen
perangkat lunak yang mengumpulkan informasi dan lingkungan
eksternal.
3.
Rekayasa Perangkat Lunak dan sains, yaitu perangkat lunak untuk
menyelesaikan persoalan rekayasa dan sains. Contoh : Perangkat Lunak
untuk biologi, CAD, simulasi sistem, dan sebagainya.
4.
Perangkat lunak tempelan, yaitu perangkat lunak yang berada di ROM
untuk mengendalikan produk consuer dan sistem industri. Perangkat
lunak ini mempunyai kemampuan kendali. Contoh : indikator dan
dashboard mobil, kendali digital bahan bakar, dan sebagainya.
5.
Perangkat lunak berbasis web, yaitu perangkat lunak yang berisi
instruksi-instruksi yang dapat dieksekusi (misalnya HTML, Java) dan
data (Hypertext, berbagai format visual studio dan audio) yang
menghasilkan halaman WEB, dan ditampilkan pada web browser.
6.
Perangkat lunak kecerdasan buatan, perangkat lunak (artificial
intelegence) menggunakan algoritma non-numerik untuk menyelesaikan
persoalan kompleks yang sulit dilakukan secara analisa sederhana.
Contoh : Sistem pakar, pengenalan pola (citra maupun audio) dan game.
6. 13
2.2 Estimasi Biaya Dan Waktu Pembuatan Perangkat Lunak (Software)
Estimasi biaya adalah perhitungan kebutuhan biaya yang diperlukan untuk
menyelesaikan suatu kegiatan atau pekerjaan sesuai dengan persyatatan dan
kontrak.Proses estimasi biaya perangkat lunak (software) adalah seperangkat
teknik dan prosedur yang dipakai oleh suatu organisasi untuk mencapai perkiraan
biaya perangkat lunak (software)6.
Estimasi waktu adalah perhitungan kebutuhan waktu yang diperlukan untuk
menyelesaikan suatu kegiatan atau pekerjaan sesuai dengan persyaratan kontrak7.
2.3 Metrik Function Point (FP)
Metrik berdasarkan isitilah rekayasa perangkat lunak dapat didefinisikan
sebagai sebuah ukuran kuantitatif yang dimiliki oleh suatu sistem, komponen,atau
proses tertentu dengan atribut-atribut yang telah diberikan.
Metric function point diusulkan pertama kali oleh Albrecth yang digunakan
secara efektif untuk mengukur fungsionalitas yang disampaikan oleh sistem8.
Metrik function point (FP) digunakan secara efektif sebagai sarana untuk
mengukur fungsionalitas suatu sistem.
6.
7.
8.
http://yayuk05.wordpress.com/2007/11/27/estimasi-biaya-perangkat-lunak/
http://imamshofi.wordpress.com/2008/01/14/estimasi-perangkat-lunak-software-estimation/
Neelam Bawane nee’ Singhal and C.V. Srikrishma, A Case Study To Assess The Valid Of
function Points, 2008
7. 14
Dengan menggunakan data historis, metric function point dapat dipakai untuk
memperkirakan biaya atau usaha yang diperlukan untuk melakukan perancangan,
penulisan kode program, dan meramalkan banyaknya baris kode program
(line of code) yang diterapkan dalam sistem yang akan diimplementasikan.
Pengukuran ditinjau dari segi pengguna, fungsional, atau sudut pandang9.
Function Point diturunkan menggunakan hubungan empiris yang didasarkan
pada ukuran terhitung (langsung) dari domain informasi perangkat lunak dan
pengukuran kualitatif dari kompleksitas perangkat lunak.
Nilai-nilai dari domain informasi didefinisikan sebagai berikut10:
1.
Banyaknya masukan eksternal (External Input [EI]) yaitu setiap masukan
eksternal berasal dari pengguna atau dikirim dari aplikasi lain dan
menyediakan data berorientasi aplikasi yang berbeda atau informasi
pengendalian. Masukan sering digunakan untuk memperbarui Internal
Logic File (ILF). Masukan harus dibedakan dari pernyataan yang akan
dihitung secara terpisah.
2.
Banyaknya keluaran eksternal (External Output[EO]) yaitu setiap
keluaran eksternal diturunkan dari data aplikasi yang memberikan
informasi kepada pengguna. Keluaran eksternal mengacu pada laporan,
layar, pesan kesalahan, dan sebagainya. Masing-masing pokok data
dalam sebuah laporan tidak dihitung secara terpisah.
9.
Roger S.Pressman, Ph. D, Software Engineering Seventh Edition, 2010, Hal : 728
10. Roger S.Pressman, Ph. D, Software Engineering Seventh Edition, 2010, Hal : 728
8. 15
3.
Banyaknya inquiry eksternal (External Inquiries[EQ]) yaitu sebuah
inquiry eksternal yang didefinisikan sebagai masukan online yang
menghasilkan respons perangkat lunak seketika dalam bentuk keluaran
online yang sering kali diperoleh dari sebuah internal logical file (ILF).
4.
Banyaknya berkas-berkas logical internal (Internal Logical File [ILF])
yaitu setiap berkas logika internal merupakan pengelompokan data secara
logis yang berada dalam batasan aplikasi dan dipelihara melalui
masukan-masukan eksternal.
5.
Banyaknya berkas antarmuka eksternal (External Interface File [EIF])
yaitu setiap berkas antarmuka eksternal merupakan pengelompokan data
logis yang berada diluar aplikasi, tetapi menyediakan informasi yang
dapat digunakan oleh aplikasi.
Metode
Function
Point
memiliki
sebuah
nilai
kompleksitas
yang
diasosiasikan pada setiap perhitungan.
Untuk menghitung function point, digunakan persamaan berikut11 :
....(2.1.)
FP = UFP x CAF
.....(2.2.)
Hitungan Total (Total Count) adalah jumlah dari semua masukan function
point (FP) dan UFP (Unadjusted Function Points) dam Fi (i = 1 sampai 14) adalah
faktor penyesuaian nilai CAF (Complexity Adjustment Factor) berdasarkan dari
pertanyaan-pertanyaan berikut ini12:
11. T.S Shiny Angel et al., Limitations Of Function Point Analysis in E-Learning System
Estimation
12. Roger S.Pressman, Ph. D, Software Engineering Seventh Edition, 2010, Hal : 728
9. 16
1.
Apakah sistem memerlukan backup dan recovery yang handal ?
2.
Apakah diperlukan komunikasi data khusus untuk memindahkan
informasi dari dan ke aplikasi tersebut ?
3.
Adakah fungsi-fungsi proses terdistribusi ?
4.
Apakah performanya kritis ?
5.
Apakah sistem berjalan dalam lingkungan operasional lama yang sudah
ada ?
6.
Apakah sistem memerlukan masukan data online ?
7.
Apakah masukan data online tersebut memerlukan transaksi masukan
yang dibuat dengan menggunakan banyak layar atau operasi ?
8.
Apakah ILF (internal logic file) atau banyaknya berkas-berkas logical
internalnya diperbarui secara online ?
9.
Apakah masukan, keluaran, berkas, atau inquiry-nya kompleks ?
10. Apakah proses internalnya kompleks ?
11. Apakah kode dirancang untuk dapat digunakan kembali ?
12. Apakah konversi dan instalasi tercakup di dalam perancangan ?
13. Apakah sistem dirancang untuk banyak instalasi di organisasi yang
berbeda-beda ?
14. Apakah sistem dirancang untuk memfasilitasi perubahan dan kemudahan
penggunaan oleh pengguna ?
10. 17
Elemen penentuan kompleksitas dapat dinilai berdasarkan tabel rangking EI
(External Input), EO (External Output), EQ (External Inquiries), ILF (Internal
Logical File), dan EIF (External Interface File) yang dapat dilihat dalam tabel di
bawah ini :
Tabel 2.1 Tabel banyaknya masukan eksternal (External Input[EI])
File Type Referenced
(FTR)
Data Elements
1-4
5-15
>15
0-1
Low
Low
2
Low
Average High
3 or more
Average High
Average
High
Dengan FTR (File Type Reference) adalah sebuah file yang ditunjuk oleh
transaksi, sedangkan data elements adalah field yang tidak berulang. Jika FTR
atau data elements yang sama digunakan baik pada sisi input atau output maka
hanya dihitung sekali.
Tabel 2.2 Tabel banyaknya keluaran eksternal (External Output [EO]) dan
tabel banyaknya inquiry eksternal (External Inquiries [EQ])
File Type Referenced
(FTR)
0-1
2-3
>3
Data Elements
1-5
6-19
>19
Low
Low
Average
Low
Average High
Average High
High
Dengan FTR (File Type Reference) adalah sebuah file yang ditunjuk oleh
transaksi, sedangkan data elements adalah field yang tidak berulang. Jika FTR
atau data elements yang sama digunakan baik pada sisi input atau output maka
hanya dihitung sekali.
11. 18
Tabel 2.3 Tabel banyaknya berkas logical internal (Internal Logical File
[ILF]) dan banyaknya berkas antarmuka eksternal (Eksternal Interface File[EIF])
Record Element Types
(RET)
0-1
2-5
>5
Data Elements
1-19
20-50
>50
Low
Low
Average
Low
Average High
Average High
High
Record element Types (RET) merupakan sub kelompok data didalam sebuah
logical file. Contoh : Seorang pelanggan memiliki 2 RET yaitu alamat dan nomor
telepon.
Dengan hitungan total (total count) adalah jumlah masukan dari UFP yang
diperoleh dari gambar dibawah ini13:
Gambar 2.2. Menghitung UFP (Unadjusted Function Points)
Setiap pertanyaan akan dijawab menggunakan skala yang dimulai dari :
13. Roger S.Pressman, Ph. D, Software Engineering Seventh Edition, 2010, Hal : 728
12. 19
a.
0 = Tidak Penting
b.
1 = Incidental
c.
2 = Sedang
d.
3 = Rata-Rata
e.
4 = Signifikan
f.
5 = Penting
Nilai konstanta pada persamaan (2.1) dan faktor pembobotan yang diterapkan
pada perhitungan domain informasi diperoleh secara empiris.
Setelah setiap karakterisitik diberi bobot masing-masing, kemudian bobotbobot dari setiap karakteristik dijumlahkan maka kita akan mendapatkan nilai
Fi14. Setelah mendapatkan nilai Fi maka selanjutnya akan dihitung nilai FP
dengan rumus persamaan (2.2). setelah mendapatkan nilai FP, maka dapat
menggunakannya untuk meng-estimasi harga pembuatan perangkat lunak dengan
terlebih dahulu mendapatkan data dari software house agar dapat dihitung besar
estimasi harga.
Terdapat beberapa kelebihan dari metode Function Point :
1.
Mudah diukur
2.
Mengukur efisiensi. Efisiensi berkaitan dengan waktu yang digunakan
untuk mengestimasi suatu harga pembuatan perangkat lunak.
14. Roger S.Pressman, Ph. D, Software Engineering Seventh Edition, 2010, Hal : 728
13. 20
Kekurangan Function point sebagai berikut :
1.
Hasil perhitungan FP tergantun pada manual penggunaan function point
yang digunakan.
2.
Banyaknya evaluasi yang dibutuhkan berdampak pada hasil yang terlalu
subyektif
3.
Perhitungan FP dilakukan hanya didasarkan pada sistem pemrosesan
data. Padahal aspek-aspek lain dari estimasi harga sendiri juga ikut
berpengaruh terhadap hasil akhir estimasi.
2.4 Java
Bahasa Java merupakan karya Sun Microsystem Inc. Rilis resmi level beta
dilakukan pada November 1995. Java adalah bahasa yang dapat dijalankan di
berbagai plaftorm, di beragam lingkunan : internet, consumer electronic products,
dan computer applications. Perkembangan gaya pemrograman mencapai gaya
pemrograman orientasi objek setelah era pemrograman terstruktur. Pemrograman
orientasi objek menggantikan pemrograman terstruktur karena mempunyai
banyak keunggulan dalam menangani proyek yang luar biasa kompleks.
Pemrograman menggunakan bahasa orientasi objek menawarkan fleksibilitas dan
kemudahan perawatan dibanding bahasa C atau C++, java lebih memberi
kemudahan antara lain15 :
15. Dr. Bambang Hariyanto, Esensi-esensi Bahasa Pemrograman Java, 2011
14. 21
1.
Java dilengkapi garbage collector yang bertugas mendealokasi memori
yang tidak diperlukan.
2.
Java menerapkan array sebenarnya, menghilangkan keperluan aritmatika
pointer yang berbahaya dan berpeluang besar mengakibatkan kesalahan.
3.
Menghilangkan pewarisan jamak (multiple inheritence) diganti fasilitas
interface. Interface member banyak manfaat antara lain untuk pewarisan
jamak tanpa dibebani kompleksitas yang muncul dari pengelolaan hirarki
pewarisan jamak.
Fitur penting bahasa Java adalah bahasa ditunjukan untuk membuat beragam
jenis aplikasi secara beragam, yaitu :
1.
Program di lingkungan web browser
a. Applet, program ini dieksekusi di web browser dari halaman
webyang memuat Java Applet. Web Browser kemudian
menugaskan
Java
Interpreter
(JRE-Java
Runtime
Environtment) untuk mengeksekusi Java Applet yang diterima.
2.
Program di lingkungan web sever
a.
Java Server Pages, sebagai web scripting serupa ASP dan PHP.
Program ditempelkan dihalaman HTML. HTML ini tidak
langsung dikirim ke web browser tetapi diolah terlebih dahulu
oleh web server dan hasilnya berupa dokumen HTML dikirim
dari web server ke web browser.
15. 22
b.
Java Servlet, komponen ini adalah semacam modul di web
server. JSP akan diterjemahkan menjadi
servlet agar
mempercepat proses eksekusi.
3.
Java merupakan pilihan bagus untuk membuat applet, sekaligus sebagai
bahasa
bermaksud
umum
(general-purpose
language)
untuk
mengembangkan semua jenis program yang dapat dijalankan di
komputer, sistem operasi apapun asalkan terdapat Java Interpreter di
platform tersebut.
4.
Program mandiri sebagai pustaka komponen untuk pengembangan
aplikasi. Java menyediakan bean untuk mendukung RAD (Rapid
Application Development) yang berbasis visual, seperti visual vasic atau
Borland Delphi.
5.
Bahasa untuk pengembangan aplikasi objek-objek tersebar skala
enterprise. Terdapat teknologi Java untuk mengembangkan komponen
yaitu EJB (Enterprise Java Beans) yang berjalan di application server.
2.5 Flowchart(Diagram Alir)
Flowchart adalah penyajian sistematis tentang proses dan logika dari kegiatan
penanganan informasi dari langkah-langkah dan urut-urutan prosedur dari suatu
program16. Pedomandalam membuat flowchart sebagai berikut :
16. http://ilmukomputer.org/wp-content/uploads/2009/06/anharku-flowchart.pdfdiakses pada
tanggal 1 November 2013
16. 23
1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke
kanan.
2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan
definisi ini harus dimengerti oleh pembacanya.
3. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
4. Menggunakan simbol-simbol flowchart yang standart.
Simbol-Simbol flowchart yang sandart :
Gambar 2.3 Simbol-Simbol Dasar Flowchart
17. 24
2.6 Diagram Konteks
Diagram konteks merupakan diagram yang menggambarkan kondisi sistem
yang ada, baik input maupun output serta menyertakan terminator yang terlibat
dalam penggunaan sistem. Diagram ini akan memberi gambaran tentang
keseluruhan sistem. Sistem dapat dibatasi oleh boundary (dapat digambarkan
dengan garis putus). Dalam diagram konteks hanya ada satu proses, tidak boleh
ada store dalam diagram konteks. Diagram konteks berisi gambaran umum
(secara garis besar) mengenai sistem yang akan dibuat17.
2.7 Diagram Berjenjang
Diagram berjenjang adalah alat dokumentasi program yang berbasis pada
fungsi, yaitu tiap-tiap modul didalam sistem digambarkan oleh fungsi utamanya.
Pada diagram berjenjang, seluruh proses yang terdapat pada aplikasi tertentu
ditampilkan dengan jelas dan terstruktur18.
2.8 Data Flow Diagram (DFD)
Data Flow Diagram (DFD) dapat digunakan untuk merepresentasikan sebuah
sistem atau perangkat lunak pada beberapa level abstraksi. DFD dapat dibagi
menjadi beberapa level yang lebih detail untuk merepresentasikan aliran info19.
17. http://kapanpunbisa.blogspot.com/2013/05/pengertian-diagram-konteks.html
18. http://duniadatabase.blogspot.com/2012/05/bab-iii-analisa-dan-desain-3.html?m=1
19. Rosa A et al, Rekayasa perangkat Lunak Terstruktur Dan Berorientasi Objek, 2013, Hal : 70
18. 25
Simbol-simbol pada data flow diagram seperti dibawah ini :
Gambar 2.4 Simbol-Simbol pada Data Flow Diagram
a.
Kesatuan luar (external entity)
Sesuatu yang berada diluat sistem, tetapi memberikan data kedalam
sistem atau memberikan data dari sistem, disimbolkan dengan suatu
kotak notasi.
b.
Arus Data (data flow)
Arus data merupakan tempat mendapatkan informasi dan digambarkan
dengan garis yang menghubungkan komponen dari sistem. Arus data
ditunjukkan dengan arus panah dan garis diberi nama atas arus data yang
mengalir. Arus data ini mengalir di antara proses, data store dan
menunjukkan arus data dari data yang berupa masukan atau hasil proses
sistem.
19. 26
c.
Proses (Process)
Proses merupakan apa yang dikerjakan oleh sistem, proses dapat
mengolah data atau aliran data masuk menjadi aliran data keluar. Proses
berfungsi mentransformasikan satu atau beberapa data masukan menjadi
satu atau beberapa data keluaran sesuai dengan spesifikasi yang
diinginkan.
2.9 Conceptual Data Modelling (CDM)
Conceptual data modelling (CDM) merupakan konsep yang berkaitan dengan
pandangan pemakai terhadap data yang disimpan dalam basis data. CDM dibuat
sudah dalam bentuk tabel-tabel tanpa tipe data yang menggambarkan relasi antar
tabel untuk keperluan implementasi ke basis data20.
2.10 Physical Data Modelling (PDM)
Physical data modeling (PDM) adalah model yang menggunakan sejumlah
tabel untuk menggambarkan data serta hubungan antar data. Setiap tabel
mempunyai sejumlah kolom dimana setiap kolom memiliki nama yang unik
beserta tipe datanya. PDM merupakan konsep yang menerangkan detail dari
bagaimana data disimpan didalam basis data. PDM sudah merupakan bentuk fisik
perancangan basis data yang sudah siap di implementasikan kedalam DBMS21.
20. Rosa A et al, Rekayasa perangkat Lunak Terstruktur Dan Berorientasi Objek, 2013, Hal : 59
21. Rosa A et al, Rekayasa perangkat Lunak Terstruktur Dan Berorientasi Objek, 2013, Hal : 63