Rekayasa Perangkat
Lunak
IEEE Computer Society
mendefinisikan rekayasa perangkat lunak sebagai penerapan suatu pendekatan yang
sistematis, disiplin dan terkuantifikasi atas pengembangan, penggunaan dan
pemeliharaan perangkat lunak, serta studi atas pendekatan-pendekatan ini, yaitu
penerapan pendekatan engineering atas perangkat lunak. Rekayasa perangkat lunak
adalah pengubahan perangkat lunak itu sendiri guna mengembangkan, memelihara,
dan membangun kembali dengan menggunakan prinsip reakayasa untuk menghasilkan
perangkat lunak yang dapat bekerja lebih efisien dan efektif untuk pengguna. Kriteria yang dapat
digunakan sebagai acuan dalam merekayasa perangkat lunak: 1.
Dapat terus dirawat dan dipelihara(maintainability) 2.
Dapat mengikuti perkembangan teknologi
(dependability) 3.
Dapat mengikuti keinginan pengguna (robust) 4.
Efektif dan efisien dalam menggunakan energi
dan penggunaannya 5.
Dapat memenuhi kebutuhan yang diinginkan
(usability)
Karakteristik
dan Atribut Perangkat Lunak 1.
Software merupakan elemen sistem logik dan
bukan elemen sistem fisik seperti hardware. 2.
Elemen itu tidak aus, tetapi bisa rusak. 3.
Elemen software itu direkayasa atau
dikembangkan dan bukan dibuat di pabrik seperti hardware 4.
Software itu tidak bisa dirakit.
Atribut
perangkat lunak : 1.
Dapat dipelihara : Perangkat lunak dapat
ditulis sedemikian rupa sehingga perangkat lunak dapat berubah seiring dengan
perubahan kebutuhan pelanggan. 2.
Dapat diandalkan : Perangkat lunak mempunyai
serangkaian karakteristik, termasuk keandalan, keamanan dan keselamatan. 3.
Efisien : Perangkat lunak tidak boleh
menggunakan sumber daya sistem seperti siklus memori dan prosesor. 4.
Kemampupakaian : Perangkat lunak harus dapat
dipakai, memiliki interface user yang bagus dan dokumentasi yang mencukupi.
Tujuan
dari RPL 1.
Menghasilkan sebuah perangkat lunak yang
berkualitas. Yang dimaksud dengan berkualitas dapat dilihat dari tiga sisi,
sisi sponsor (individu atau organisasi yang telah mengeluarkan biaya dalam
pembangunan perangkat lunak), sisi pemakai (siapapun yang menggunakan perangkat
lunak tersebut), sisi maintainer / modifier (yang memelihara dan memodifikasi
perangkat lunak tersebut). 2.
Tujuan kedua dari RPL adalah menghasilkan
perangkat lunak dengan biaya yang efisien. Sedangkan tujuan ketiga
dari RPL adalah menghasilkan perangkat lunak tepat pada waktunya.
Jenis-jenis
Perangkat Lunak Dilihat dari sudut pandang
fungsinya, perangkat lunak dapat dikelompokkan menjadi : 1.
Perangkat lunak sistem Perangkat lunak yang kegunaannya lebih banyak ditujukan
untuk operasional komputer. a. Sistem
operasi b. Penerjemah
bahasa pemrograman (compiler/interpreter) 2.
Perangkat lunak aplikasi Perangkat lunak yang kegunaannya lebih banyak ditujukan
untuk membantu menyelesaikan masalalah-masalah yang dihadapi oleh pemakai. a. Program
paket yang sudah jadi b. Program
aplikasi buatan sendiri Sedangkan dilihat dari
aplikasinya, perangkat lunak dibedakan menjadi : 1.
Perangkat Lunak Sistem (Sistem Software) Sekumpulan program yang ditulis untuk kepentingan
program lain, contoh editor, driver dan lain-lain 2.
Perangkat Lunak Waktu Nyata (Real Time
Software) Perangkat lunak yang digunakan untuk
mengukur/menganalisis atau mengontrol proses pemasukan data dari lingkungan
luar sampai menghasilkan laporan yang diinginkan 3.
Perangkat Lunak Bisnis (Business Software) Perangkat lunak yang memberikan fasilitas operasi untuk
bisnis atau fasilitas pengambilan keputusan manajemen, contoh sistem akuntansi,
inventory, payroll dan lain-lain 4.
Perangat Lunak Rekayasa dan Sains
(Engineering and Scientific Software) Perangkat lunak yang digunakan di dalam bidang aplikasi
teknik dan kerekayasaan perangkat lunak jenis ini biasanya berhubungan dengan
komputasi data numerik, CAD (Computer Aided Design), simulasi sistem, dan
lain-lain. 5.
Embedded Software Perangkat lunak yang digunakan untuk mengontrol suatu
produk dan sistem dimana perangkat lunak tersebut disimpan. Biasanya
ditempatkan di ROM, contoh Tombol di Microwave Oven 6.
Perangkat Lunak Komputer Pribadi (Personal
Computer Software) Banyak digunakan pada aplikasi yang bersifat perorangan,
contohnya: pengolah kata, spreadsheet, game, DBMS dan lain-lain. 7.
Perangkat Lunak Intelegensia Buatan
(Artificial Intelligent Software) Dibuat dengan menggunakan teknik algoritma non-numerik
untuk memecahkan masalah yang kompleks, digunakan dalam bidang aplikasi
kecerdasan buatan, contohnya: game, expert sistem, neural network, Turbo
Prolog, dan lain-lain.
Model
Proses Perangkat Lunak Evolusioner Model evolusioner adalah
model iterative, ditandai dengan tingkah laku yang memungkinkan perekayasa
perangkat lunak mengembangkan versi perangkat lunak yang lebih lengkap sedikit
demi sedikit. Kebutuhan produk dan bisnis kadang-kadang berubah seiring dengan
laju perkembanganya. Dalam situasi tersebut maupun lainya, perekayasa perangkat
lunak membutuhkan sebuah model proses yang sudah dirancang secara eksplisit
untuk mengakomodasi produk perkembangan sepanjang waktu. Model ini bukan
termasuk rekayasa perangkat lunak klasik. Model evolusioner meliputi:
1.
Model pertambahan Model incremental menggabungkan elemen-elemen model
sekuensial linier (diaplikasikan secara berulang) dengan filosofi prototype
iterative. Model ini memakai urutan-urutan linier di dalam model yang
membingungkan, seiring dengan laju waktu kalender. Setiap urutan linier
menghasilkan pertambahan, perangkat lunak “yang bisa disampaikan.” Contoh,
perangkat lunak pengolah kata yang dikembangkan dengan menggunakan paradigm
pertambahan akan menyampaikan manajemen file, editing, serta fungsi penghasilan
dokumen pada pertambahan pertama, dan selanjutnya. Pertambahan pertama dapat
disebut sebagai produk inti (core product). Model ini berfokus pada penyampaian produk operasional
dalam Setiap pertambahanya. Pertambahan awal ada di versi stripped down dari
produk akhir, tetapi memberikan kemampuan untuk melayani pemakai dan juga
menyediakan platform untuk evaluasi oleh pemakai. Perkembangan pertambahan, khususnya berguna pada
staffing, tidak bisa dilakukan menggunakan implementasi lengkap oleh batas
waktu bisnis yang sudah disepakati untuk proyek tersebut. jika produk inti
diterima dengan baik, maka staf tambahan bisa ditambahkan untuk
mengimplementasi pertambahan selanjutnya. 2.
Model spiral Awalnya diusulkan oleh Boehm (BOE88), adalah model
proses perangkat lunak yang evolusioner, merangkai sifat iterative dari
prototype dengan cara control dan aspek sistematis dari model sekuensial
linier. Model yang berpotensi untuk pengembangan versi pertambahan perangkat
lunak secara cepat. Model spiral dibagi menjadi sejumlah aktifitas kerangka
kerja atau wilayah tugas, antara lain : a. Komunikasi
pelanggan, tugas-tugas yang dibutuhkan untuk membangun komunikasi yang efektif
diantara pengembang dan pelanggan. b. Perencanaan,
tugas-tugas yang dibutuhkan untuk mendefinisikan sumber-sumber daya, ketepatan
waktu, dan proyek informasi lain yang berhubungan. c. Analisis
resiko, tugas-tugas yang dibutuhkan untuk menaksir resiko-resiko, baik
manajemen maupun teknis. d. Perekayasaan,
tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari
aplikasi tersebut. e. Konstruksi
dan peluncuran, tugas-tugas yang dibutuhkan untuk mengkonstruksi, menguji,
memasang (instal), dan memberikan pelayanan kepada pemakai (contohnya pelatihan
dan dokumentasi). f. Evaluasi
pelanggan, tugas-tugas untuk memperoleh umpan balik dari pelanggan dengan
didasarkan pada evaluasi representasi perangkat lunak, yang dibuat selama masa
perekayasaan, dan dimplementasikan selama masa pemasangan. Model spiral menjadi pendekatan yang realistis bagi
perkembangan system dan perangkat lunak skala besar. Karena perangkat lunak
terus bekerja selama proses bergerak,
pengembang dan pemakai memahami, dan bereaksi lebih baik terhadap resiko dari
Setiap tingkat evolusi. Model spiral menggunakan prototype sebagai mekanisme
pengurangan resiko. Model spiral membutuhkan keahlian penafsiran resiko yang
masuk akal, dan sangat bertumpu pada keahlian ini untuk mencapai keberhasilan.
Jika sebuah resiko tidak dapat ditemukan dan diatur, pasti akan terjadi
masalah. Model ini membutuhkan waktu bertahun-tahun sampai kehandalannya bisa
dipertimbangkan dengan kepastian absolute. 3.
Model rakitan komponen Model ini menggabungkan beberapa karakteristik model
spiral. Bersifat evolusioner, sehingga membutuhkan pendekatan iterative untuk
menciptakan perangkat lunak. Tetapi model ini merangkai aplikasi dari komponen
perangkat lunak sebelum dipaketkan (kadang disebut kelas). Aktivitas perangkat lunak dimulai dengan identifikasi calon kelas. Dipenuhi dengan
mengamati data yang akan dimanipulasi oleh aplikasi dan algoritma-algoritma
yang akan diaplikasikan. Data dan algoritma yang berhubungan dikemas ke dalam
kelas. Kelas-kelas tersebut disimpan dalam class library (tempat penyimpanan). Model ini membawa pada penggunaan kembali perangkat
lunak, dan kegunaan kembali itu memberi sejumlah keuntungan yang bisa diukur
pada rekayasa perangkat lunak.
4.
Model perkembangan konkruen Representasi aktivitas dalam model ini, meliputi
aktivitas analisis, bisa berada dalam salah satu dari keadaan-keadaan yang
dicatat pada saat tertentu. Dengan cara yang sama, aktivitas yang lain (desain
atau komunikasi pelanggan) dapat direpresentasikan dalam sebuah sikap yang
analog. Semua aktifitas ada secara konkruen tetapi dia tinggal didalam keadaan
yang berbeda. Model ini sering digunakan sebagai paradigm bagi pengembangan
aplikasi klien/server. Kenyataanya model proses konkruen bisa diaplikasikan ke
dalam semua tipe perkembangan perangkat lunak, dan memberikan gambaran akurat
mengenai keadaan tertentu dari sebuah proyek. Selain membatasi ajtivitas
perekayasa ke dalam sederetan kejadian, model proses juga mendefinisikan
jaringan aktivitas.
Manajemen Proyek Perangkat
Lunak Ada 3 fokus manajemen proyek perangkat lunak
(PL) : 1.
People (manusia) Mempertinggi kesiapan organisasi PL untuk mengerjakan
aplikasi yang semakin kompleks. 2.
Problem (masalah) Objektifitas dan ruang lingkupnya harus ditetapkan,
pemecahan alternatifnya harus dipertimbangkan, teknik dan batasanpun harus
didefinisikan 3.
Process (proses) Memberikan suatu kerangka kerja dimana rencana
komprehensif bagi pengembangan perangkat lunak.
Manajemen Proyek Perangkat
Lunak Adalah aktifitas dalam memanajemen rekayasa perangkat lunak, dimulai
sebelum aktifitas teknis di inisialisasi dan berlanjut pada keseluruhan
batasan, perkembangan dan pemeliharaan perangkat lunak komputer.
Proses-Proses
Dalam Manajemen Proyek Manajemen proyek merupakan lapisan pertama
dalam proses rekayasa perangkat lunak skala besar. Untuk menuju pada proyek
yang berhasil, perlu dimengerti tentang : 1.
Lingkup pekerjaan 2.
Resiko yang dapat ditimbulkan 3.
Sumber-sumber yang diperlukan 4.
Tugas yang harus dilaksanakan 5.
Patokan yang harus diikuti 6.
Usaha atau biaya yang dikeluarkan 7.
Dan Penjadwalan
Awal
Proyek Perangkat Lunak Untuk mengestimasi biaya,
pembagian tugas, dan penjadwalan, sebelum sebuah proyek direncanakan perlu : 1.
Memastikan tujuan dan ruang lingkup 2.
Memperhatikan alternatif-alternatif solusi 3.
Identifikasi batasan teknik dan manajerial Pengukuran
dan Satuan Ukuran Pengukuran dan satuan
ukuran akan membantu untuk mengerti proses-proses dalam pengembangan produk dan
produk itu sendiri. Proses dan produk diukur dalam usaha untuk meningkatkan
kualitasnya. Estimasi Dalam aktifitas utama
proyek yaitu perencanaan, dilakukan estimasi : 1.
Sumber daya manusia (ukuran orang/bulan) 2.
Jangka waktu kronologis (Ukuran waktu
kalender) 3.
Biaya (Ukuran uang Rp) Analisis
Resiko Analisis resiko sangat
penting dalam manajemen proyek perangkat lunak. Beberapa hal yang harus
diperhatikan berkaitan dengan resiko adalah : 1.
Masa yang akan dating : resiko apa yang
mempengaruhi trend (kecenderungan) proyek perangkat lunak 2.
Perubahan : Bagaimana perkembangan dunia
mempengaruhi keawetan dan kesuksesan perangkat lunak 3.
Pilihan : metode apa yang dipakai, berapa
orang diperlukan, seberapa tinggi kualitas perangkat lunak dan sebagainya Analisis resiko merupakan
serangkaian langkah untuk menyiasati resiko, yaitu: 1.
Resiko proyek : masalah pembiayaan,
penjadwalan, personil, sumber daya, pelanggan dan kebutuhan dikaitkan dengan
akibatnya terhadap pelanggan. 2.
Resiko teknis : masalah desain,
implementasi, antarmuka, verifikasi dan pemeliharaan. 3.
Resiko bisnis : termasuk di dalamnya adalah
resiko pasar, resiko manajemen, dan resiko pembiayaan. Perkiraan
resiko Memperhitungkan lebih lanjut estimasi resiko
dalam bentuk : [ri, li, xi] dengan 1.
ri : resiko 2.
li : kemungkinan terjadinya 3.
xi : akibat dari resiko dengan
memprioritaskan resiko dan memulai memikirkan cara mengendalikan dan atau
mengurangi resiko yang mungkin terjadi Disebut juga estimasi resiko, adalah usaha
untuk mengukur setiap resiko dengan 2 cara : 1.
Kemungkinan adanaya resiko 2.
Konsekuensi (masalah yang bisa timbul karena
resiko) Ada 4 aktivitas estimasi resiko : 1.
Memastikan skala yang merefleksikan
kemungkinan resiko 2.
Memperkirakan konsekuensi resiko 3.
Estimasi efek dari resiko pada proyek dan
produk 4.
Menentukan akurasi keseluruhan dari proyeksi
resiko Penjadwalan Langkah-langkah yang dilakukan dalam
penjadwalan : 1.
Identifikasi sekumpulan tugas 2.
Pastikan keterkaitan antar tugas 3.
Estimasi usaha untuk tiap-tiap tugas 4.
Tentukan pekerja dan sumber-sumber lainnya 5.
Buat jaringan tugas 6.
Buat jadwal kerja berdasarkan waktu Penelusuran
Dan Pengendalian Penelusuran dan
pengendalian dilakukan setelah ada penjadwalan yang pasti, yaitu memeriksa apakah
tugas telah dilaksanakan sesuai dengan jadwal. Satuan
Ukuran Produktivitas Dan Kualitas Perangkat Lunak Pengukuran perangkat lunak
dilakukan untuk : 1.
Indikasi kualitas produk 2.
Perkiraan produktivitas orang-orang yang
menghasilkan produk 3.
Perkiraan manfaat dari penerapan metode dan
tools 4.
Membentuk dasar dari estimasi 5.
Menegaskan (Justify) permintaan tools baru dan pelatihan
Satuan ukuran perangkat lunak dikategorikan
ke dalam : 1.
Satuan ukuran produktivitas : Output dari
proses rekayasa 2.
Satuan ukuran kualitas : indikasi tingkat
pemenuhan kebutuhan konsumen 3.
Satuan ukuran teknik : Karakteristik
perangkat lunak
Kategori lain untuk
pengukuran : 1.
Pengukuran berorientasi besarnya (Ukuran) :
Besarnya perangkat lunak = jumlah baris program Pengukuran berorientasi ukuran
merupakan pengukuran langsung. Pengukuran berorientasi ukuran menggunakan tabel
berisi data berorientasi ukuran yang merupakan daftar proyek pengembangan
perangkat lunak yang telah diselesaikan dikaitkan dengan data berorientasi
ukuran untuk proyek yang bersangkutan 2.
Pengukuran berorientasi fungsi : fungsi =
ruang lingkup informasi dan tingkat kesulitannya Merupakan pengukuran tidak
langsung, yang menitikberatkan pada fungsionalitas atau utilitas program.
Disebut juga metode Function Point sesuai dengan informasi yang didefinisikan
sebagai : a. Jumlah
masukan dari pemakai b. Jumlah
keluaran dari pemakai c. Jumlah
penyelidikan dari pemakai d. Jumlah
file e. Jumlah
antarmuka eksternal Satuan
Ukuran Kualitas Parangkat Lunak Kualitas perangkat lunak
dihitung pada saat proses rekayasa perangkat lunak ataupun setelah diserahkan
kepada pemakai. Satuan ukuran kualitas perangkat lunak pada saat proses
rekayasa : 1.
Kompleksitas program 2.
Modularitas yang efektif 3.
Besarnya program
Definisi pengukuran kualitas menurut Gilb: 1.
Kebenaran (Correctness) : Program harus
bekerja dengan benar. Kebenaran merupakan tingkat perangkat lunak bekerja
sesuai dengan fungsi yang dibutuhkan pengukuran yang umum adalah cacat (defect)
/KLOC 2.
Perawatan (Maintainability) : Kemudahan
perbaikan jika ada kesalahan, penyesuaian terhadap perubahan lingkungan atau
peningkatan sesuai permintaan pemakai. 3.
Integritas (Integrity) : Pengukuran tingkat
ketahanan perangkat lunak terhadap serangan (disengaja/tidak) pada program,
data dan dokumen 4.
Kegunaan (Usability) : Berkaitan dengan
kemudahan pemakaian yang diukur berdasarkan keahlian yang diperlukan untuk
mempelajari sistem, waktu yang dibutuhkan untuk dapat menggunakan sistem,
peningkatan produktivitas dengan penggunaan sistem dan perkiraan yang sifatnya
subjektif pada kelakuan pemakai
Menurut Basili dan
Zelkowitz ada 5(lima) faktor yang mempengaruhi produktivitas perangkat lunak : 1.
Faktor manusia : jumlah dan tingkat keahlian
tim 2.
Faktor masalah : tingkat kerumitan masalah
yang harus dipecahkan 3.
Faktor proses : teknik analisis dan desain,
bahasa dan tools 4.
Faktor produk : keandalan dan performansi
sistem berbasis computer
5.
Faktor sumber daya : ketersediaan tools,
sumber-sumber perangkat keras dan perangkat lunak |