Software
Saat in,hampir seluruh bidang
kehidupan manusia telah melibatkan perangkat lunak. Hampir seluruh perngkat
yang digunakan manusiamelengkapi pemproses. Perangkat seperti handphone, televisi,
mesin cuci, mesin AC, mobil mewah dan sebagainya telah menjadi cerdas karena
keberadaan program yang di tanam dalamnya.Manusia telah mempersiapkan perluasan
penggunaan perangkat penggunaan perangkat lunak di semuaperangkat yang di
pakai. Dengan lebar alamat 128 bit,cakupan Ipng (IP versi 6-next
generation) telah mencakup hampir seluruh titik di muka bumi.Berati titik
titik itu dapat dipasang perangkat yang berisi perangkat lunak (program) yang
berkomunikasi menggunakan protokol TCP/IP.
Pressman
[PRE00] menyatakan perangkat lunak menjadi daya pendorong peradaban modern.
Perangkat lunak telah menjadi
penuntun utama pengambilan keputusan bisnis,menjadi basis bagi penemuan ilmiah
dan pemecahan masalah rekayasa bidang bidang lain. Perangkat lunak telah
menjadi pembeda produk dan layanan modern.Perangnkat lunak telah di tempelkan
di bermacam perangkat di segala bidang : transportasi, medis, telekomunikasi, militer,
proses industri, hiburan, produk perkantoran, produkrumah tangga, … hampir
tidak berhingga Perngkat lunak akan tetap menjadi penuntun untuk peningkatan peradabaan manusia
dalam segala hal dari pendidikan dasar
sampai ke rekayasa genetik.
3.1 Arti
perangkat lunak
Dalam arti
sempit perangkatlunak adalah program yangdi jalankan di suatu pemproses.
Perangkat lunak dalam arti lebih luas terdiri dari program program yang di
eksekusi komputer dalam beraneka ukurandan arsitektur,dokumen dokumen
berupa hard-copy dan bentuk bentuk maya, dan data berupa angka angka dan
teks juga representasi informasi gambar,video dan audio.
Perangkat
lunak seharusnya merupakan produk yang dirancang dan di bangun lewat aktivitas
aktivitas rekayasa perangkat lunak yang berdisiplin dan sistematis agar dapat
dihandalkan untuk mendukung aktivitas
manusia sehari hari. Perangkat lunak seharusnya bukan hasil kegiatan kerajinan uang hasil akhirnya sulit
diprediksi.
3.2 Kategori Perangkat Lunak
Menurut Presman :
Perangkat lunak terbagi menjadi
·
Perangkat
lunak sistem, kumpulan program untuk melayani program program lain.Perangkat
lunak ini di cirikan dengan interaksi tinggi dengan perangkat keras. Contohnya :
sistem operasi, kompilator, text editior, utulitas pengolahan file, device
driver, pemproses telekomunikasi.
·
Perangkat
lunak waktu nyata, perangkat yang memonitor/menganalisis/mengendalikan kejadian
dunia nyata di saat terjadinya.Komponen perangkat lunak waktu nyata antara lain
komponen yang mengumpulkan informasi dari lingkungan eksternal, komponen
analisis yang mentransformasi informasi ke format yang di perlukan
aplikasi dan komponen pemantauan (monitoring) yang menkoordinasi
komponen lain sehingga dapat memberi tanggapan secara waktu nyata.
·
Perangkat
lunak rekayasa dan sains, perangkat lunak untuk menyelesaikan persoalan
rekayasa dan sains. Contoh perangkat lunak untuk astronomi, vokanologi, biologi
molekuler sampai manufaktur, CAD, simulasi sistem dan sebagainya.
·
Perangkat lunak tempelen (embedded software), perangkat lunak ini berada di ROM (read
only memory) untuk mengendali produk produk konsumer. Perangkat lunak ini
melakukan fungsi sangat terbatas dan esotorik (seperti kendali keypad
di oven mikrowave) atau menyediakan fungsi signifigan dan
kemampuan kendali bahan bakar, tampilan dashboard, dan pengeraman, injeksi
bahan bakar dan sebagainya).
·
berbasis
Perangkat lunak web, perangkat lunak yang bekerjasama
(berisi)dengan instruksi instruksi yang dapat di eksekusi (misalnya, CGI, HTML,
Perl, atau Java) dan data (seperti hypertext dan beragam format
visual dan audio) menghasilkan halaman web yang akan di tampilkan di
browser. Jaringan menjadi komputer masih yang menyadiakan sumber daya
perangkat lunak hampir tak terbatas yang dapat diakses siapapun melalui
jaringan.
·
Perangkat
lunak intelajensia buatan, perangkat lunak (AL – artificial intelegence)
menggunakan algoritma non numerik untuk menylelesaikan pesoalan kompleks yang
di lakukan secara analisissederhana. Sistem pakarjuga di sebut sistem berbasis
pengetahuan, pengenalan pola (citra dan suara), jaringan syaraf tiruan,
pembuktian teorema, dan game playing adalah representasi aplikasi dalam
kategori ini.
Penerapan sistem komputertelah sangat
sukses di bebagai bidang antara lain pada aplikasi sistem kendali lalulintas udara
(air traffic controll ), animasi (animation), sistem kendali
penerbangan (avionics), perbankan dan asuransi, pengolahan data bisnis,
sistem kendali pemproses kimia, sistem pemerintahdankendali militer, sistem
perancangan di bantu komputer, sistem pendidikan di bantu komputer,
manufakturing terpadu, basisdata, penyimpanan dokumen, sistem kedokteran,
sistem music, sistem operasi, rekayasa perminyakan, komponen perangkatlunak
guna ulang, robotika, lingkungan pengembangan perangkat lunak stasiunangkasa
luar, telekomunikasi, sistemtelementri, perancangan antar muka pemakai,
perancangan VLSI, dan banyak lagi.
3.3 Perangkat Lunak Semakin Kompleks
Peningkatan
kemampuan perangkat keras komputer menghendaki keberadaan perangkat lunak
yangsemakin kompleks.
Dijskstra menyatakan :
Selama tidak ada komputer maka tidak
ada persoalan mengenai pemprograman. Ketika komputer masih lemah maka
pemprograman adalah persoalan sepele,dan saat sekarang ini komputer memiliki
kemampuan rekayasa,maka pemprograman menjadi persoalan seruparekayasa.
Saat ini,
seorang diri tidakmampu memahami sistem perangkat lunak modern besar
secara lengkap karena sistem perangkat lunak sering berisi jutaan baris kodedan
ribuan modul terpisah.
Pemprograman
sistem perangkat lunak yang kompleks sangat sulit. Sistem perangkat lunak besar
merupakan salah satu di antara sistem sistem paling kompleks yang pernah di
bangun manusia. Persoalanya di tambah harapan pemakai terhadap perangkat lunak
bersifat lunak, dalam arti fleksibel untuk memberi perubahan sewaktu waktu,
sekaligus di minta mengatasi cacat cacat bawaan dari pembeli (misalnya pemmbeli
yang tidak/belum memahami apa yang di ingnkan), cacat cacat bawaan rekayasawan
(rekayasawan yangmasih yunior), cacat cacat bawaan lingkungan operasi dan cacat cacat bawaan
peragkat lunak yang lain yang berinteraksi. Pengembangan sistemperangkat lunak
sekaligus harus mengatasi kompleksitas persoalan dan kemungkinan perubahan.
Kemampuan
intelektual kita tidak mampumeng hadapi kompleksitas secara langsung. Kita
harus menggunakan kakas kakas intelektual untuk meningkatkan kemampuan
intelektual menghadapi kompleksitas. Kakas kakas intelektual ini berupa teknik
teknik rekayasa perangkat lunak di bantu kakas otomasi untuk rekayasa
perangkatlunak, CASE (computer aided software engineering).
3.4 Kualitas Perangkat
Lunak
Perangkat
lunak merupakan entitas abstrak /intelektual sehingga lebih sulit di ukur di
banding entitas fisik karya di rekayasa sipil, elektro, mekanik dansebagainya.
Pengukuran kualitasdi rekayasa perangkat lunak meliputi :
1. Kualitas rancangan, pada pengembangan
perangkat lunak, kualitas rancangan meliputi spesifikasi kebutuhan, analisis
dan rancangan sistem.
2. Kualitas pemenuhan rancangan.
Kualitas ini menyangkut implementasi. Jika implementasi mengikuti rancangan dan
menghasilkan sistemyangmemnuhi kebutuhan dan kinerja yang di kehendaki berarti
kualitas pemenuhan yang di capai adalah tinggi.
3.4.1 Properti Kualitas McCall
McCall memberikan properti kualitas
perangkat lunak sebagai berikut :
1. Operasi produk
·
Correctness, memnuhi
kebutuhan pemakai
·
Realibility, melakukan
fungsi dengan hasil yang benar dan konsisten
·
Efficiency,
melakukan fungsi dengan waktu dan memori minimal
·
Integrity, penggunaan
dan perubahan yang terkendali
·
Usability, kemudahan
mempelajari dan menggunakan
2. Revisi produk
·
Maintainability, pembenaran yang mudah bila di temukan kesalahan
·
Flexibility, pembenaran
yang mudah untuk beradaptasi dengan lingkungan baru dan penambahanfungsi yang
baru
·
Testability,
pengujian yang mudah dan dapat di lakukan dengan lengkap
3. Transisi Produk
·
Protability, mudah
untuk di konfersi agar beroperasi di platfrom berbeda
·
Reusability, penggunaan
komponen komponen hasil untuk aplikasi lain
·
Interoperability, pertukaran informasi dengan perangkat lunak lain
3.4.2
Faktor Eksternal Kualitas Bertrand Meyer
Menurut
Meyer [MEY97], penilaian kualitas perangkat lunak dapat dibagi menjadi dua
faktor, yaitu (1) factor internal, dan (2) faktor eksternal. Faktprinternal
adalah faktor di dalam perangkat lunak.Faktor internal adalah faktor didalam
perangkat lunak. Faktor internal adalah “faktor tampak” yang diberinkan
perangkat lunak. Meski faktor menentukan kemunculan faktor eksternal tapi
pengembang harus menyadari mengenai faktor eksternal yang tampak oleh stakeholders.
Faktor eksternal [MEY97] meliputi :(1) kebenaran (correctness),
(2) ketangguhan (rebustnes), (3) perluasan (extendibility), (4) guna
ulang(resuability), (5) kompatibilitas(compatibility), (6) portabilitas(portability),
(7)kemudahan penggunaan, (8)fungsional (functionality), (9) pewaktuan (timeliness),
dan (10) faktor lain.
Kebenaran
(correctness)
Kebenaran adalah perangkat lunak
melakukan tugas seperti di definisi spesifikasi. Kebenaran merupakan kualitas
yang utama.Terdapat kesulitan dalam mengukur properti kebenaran, yaitu :
1. Spesifikasi seharusnya berorientasi
karakteristik produkyangdiinginkan pemakai. Tapi pengembangjuga mempunyai
kepentingan/kebutuhan (yaitu kemudahandi rawat,fleksibel, mudahdi baca) yang
tidaktermasuk dalam spesifikasi oleh pemakai.
2. Kita tidak tau cara menspesifikasi
cara menspesifikasi yang tidak ambigu, contohnya mengenai cara menspesifikasi
keterawatan (maintanability).
3. Spesifikasi perangkat lunak biasanya
tidaklengkap. Faktor ini menjadi hal yang sulit. Sampai saat ini,
spesifikasiperangkatlunak masih terus di kembangkan.
Ketangguhan (robustness)
Ketangguhan
adalah kemampuan sistem perangkat lunak bereaksi secara tepat menghadapi kondisi
abnormal. Ketangguhan merupakan perlengkapan pelengkap faktor kebenaran.Kebenaran
di tunjukan perilaku sistem dalam kasus yang di cakup di spesifikasi sementara
ketangguhan merupakan tanggapan terhadap kejadian di luar spesifikasi.
Dalam
lingkungan operasi /produksi selalu terdapat kasus yang tidak tercakup di
spesifikasi secara eksplisit. Peran ketangguhan menjamin bila kejadian abnormal
muncul, sistem tdk menyebabkan situasi menjadi kacau. Sistem menghasilkan
pesan kesalahan yang semestinya dan kemudian mengakhiri sistem secara halus
serta dapat di terima. Perilaku ini sering di sebut “graceful degradation
mode”.
Perluasan (extendibility)
Perluasan
adalah kemudahan mengadaptasi perangkat lunak terhadap perubahan spesifikasi.
Pada sistem, perubahan tidaklah mudah. Perubahan dapat memberi efek “domino” di
mana satu perubahan di satu bagian menyebabkan perubahan di bagian bagian lain
secara terus menerus.
Terhadap dua
prinsip penting untuk meningkatkan faktor perluasan, yaitu :
1. Kesederhanaan rancangan : arsitektur
sederhana selalu lebih mudah beradaptasi terhadap perubahan di banding
arsitektur kompleks.
2. Desentralisasi : modul modul otonom
memungkinkan perubahan hanya di satu modul, tidak terjadi propagasi perubahan
ke modulmodul lain.
Guna ulang (reusability)
Gunaulang adalah kemampuan
elemen yang dapat di gunakan pada pembangunan banyak aplikasi berbeda. Guna
ulang mempengaruhi aspek kualitas lain karena elemen elemen lain yang di pakai
pakai ulang umumnya telah teruji sehingga pemakaian guna ulang meningkatkan
aspek kebenaran dan ketangguhan, mengefisiensikan masa pembanguan sistem baru
(pewaktuan).
Kompatibilitas (compatibility)
Kompatibilitas
adalah mudahnya perangkat lunak di gabungkan dengan elemen elemen perangkat
lunak yang lain. Kompatibilitas penting karena karena perangkat lunak umumnya
harus di pasang di lingkungan yang telah ada elemen elemen perangkat lunak
sebelumnya. Kunci kompatibilitas adalah berada pada pemenuhan setandar terutama
komunikasi antar program.
Solusi
umum meningkatkan kompatibilitas adalah denagan memenuhi protokol pengaksesan
setandar di semua entitas perangkat
penting. Gagasan ini berlangsung pada orientasi objek, diwujudkan standar
protokol CORBA dan Enterprise Java Beans.
Efisiensi (efficiency)
Efisiensi adalah kemampuan
menggunakan sumberdaya sedikit mungkin misalnya perangkat keras seperti
pemproses., ruang penyimpan memori internal dan eksternal, bandwidth perangkat
komunikasi. Efisiensi harus di seimbangkan dengan tujuan lain seperti perluasan
dan guna ulang. Optimasi terhadap efisiensi yang ekstrim dapat membuat
perangkat lunak begitu terspesialisasi sehingga sulit diubah dan diguna ulang.
Portabilitas
(poertability)
Portabilitas adalah kemudahan
mentransfer perangkat untuk lunak untuk beragam lingkungan perangkat keras dan
perangkat lunak.
Kemudahan Penggunaan
Kemudahan penggunaan adalah kemudahan
orang beragam latar belakang dan kualifikasi belajar menggunakan dan menerapkan
perangkat lunak untuk menyekesaikan masalah. Kemudahan meliputi instalasi,
operasi dan monitoring.
Fungsionalitas (Functionality)
Fungsionalitas adalah kemampuan
/fitur sistem. Salah satu masalah terpenting adalah seberapa fungsionalitas
yang perlu di sistem sehingga di sebut cukup.
Pewaktuan (timeliness)
Pewaktuan adalah dirilis saat atau sebelum
pemakaiameninggalkan.
Kualitas yang lain
Masih terdapat kualitas lain veriability,
integrtiy, repairability, dan economy.