Definisi Rekayasa Perangkat Lunak Menurut Fritz Bauer :
“Penerapan dan pemanfaatan prinsip-prinsip rekayasa untuk menghasilkan perngkat lunak yang ekonomis yang handal dan bekerja secara efisisen pada mesin-mesin yang nyata”
Karakteristik Perangkat Lunak
– Dikembangkan atau direkayasa, tidak dibuat dalam pengertian pada umumnya.
– Tidak ‘lapuk’ atau mengalami penyusutan secara fisis.
– Pada umumnya dibuat secara khusus, tidak disusun dari komponen-komponen yang telah ada.
Problem Perangkat Lunak
– Perangkat lunak tidak berfungsi secara baik (kualitas yang kurang).
– Ketidaktepatan penjadwalan proses dan biaya produksi.
– Produktivitas yang belum dapat memenuhi tuntutan kebutuhan pemakai.
– Pemeliharaan yang sukar.
– Perkembangan teknologi perangkat keras di luar kemampuan programmer untuk membuat perangkat lunak yang dapat memanfaatkan potensi perangkat keras secara maksimal.
Elemen-elemen Kunci dalam RPL
– Metode : ‘how to’ yang bersifat teknis
Meliputi bidang-bidang perencanaan proyek, estimasi, analisis persyaratan, perancangan, coding, pengujian, dan pemeliharaan.
– Tool : memberikan dukungan automasi bagi metode
– Prosedur : mengintegrasikan metode dan tool
Siklus Klasik (Model Air Terjun)
Berdasarkan siklus konvensional dalam bidang rekayasa lainnya, dengan pendekatan sekuensial yang sistematis.
Tahapan-tahapan dalam siklus klasik :
– Analisis dan rekayasa sistem : perangkat lunak merupakan bagian dari sebuah sistem, untuk mendapatkan gambaran yang meluas pada aras sistem.
– Analisis persyaratan : fokus lebih terarah ke perangkat lunak, berusaha mengetahui aspek ‘what’, melibatkan pemakai dan pengembang.
– Perancangan : menerjemahkan persyaratan menjadi suatu bentuk representasi yang dapat dievaluasi kualitasnya sebelum coding dilakukan.
– Coding (penulisan program) : penerjemahan rancangan ke dalam bentuk yang dapat dimengerti komputer, menggunakan bahasa pemrograman teretentu.
– Pengujian : berfokus pada rincian logikal dari perangkat lunak, bertujuan mengungkap dan menghilangkan kesalahan-kesalahan yang ada sehingga perangkat lunak bekerja sesuai dengan yang diharapkan.
– Pemeliharaan : meliputi kegiatan-kegiatan koreksi kesalahan dan penyesuaian perangkat lunak terhadap perubahan lingkungannya.
Prototyping
Bila pemakai belum siap dengan persyaratan perangkat lunak secara lengkap (rinci).
Model perangkat lunak :
– Model ‘kertas’ : ditujukan hanya agar pemakai dapat mengerti interaksi antara dia dengan perangkat lunak.
– Model kerja : mengimplikasikan beberapa fungsi perangkat lunak.
– Program : sebagian atau semua fungsi telah diimplementasikan, dan akan dikembangkan dalam proses pengembangan.
Problem : ketidaksadaran bahwa prototipe bukan hasil yang diharapkan.
– Pemakai : tidak sabar menunggu perangkat lunak yang sebenarnya.
– Pengembang : pemakaian teknik dan tools yang tidak optimal pada prototipe yang akhirnya tetap digunakan pada perangkat lunak yang sesungguhnya.
Model Spiral
Menggabungkan keuntungan-keuntungan model air terjun dan prototyping, dan memasukkan aktivitas analisis resiko (risk analysis).
Melibatkan proses iterasi, tiap iterasi bekerja pada satu ‘level produk’ (dari level prototipe sampai pada level perangkat lunak yang diinginkan). Tiap perpindahan level didahului oleh analisis resiko.
Terdiri dari empat aktivitas utama :
– Perencanaan : penentuan sasaran, alternatif solusi, dan hambatan.
– Analisis resiko : analisis alternatif solusi dan identifikasi resiko.
– Perekayasaan : pengembangan produk pada ‘level berikutnya’.
– Evaluasi oleh pemakai : diterapkan pada hasil proses perekayasaan.
Problem : menuntut keahlian dalam bidang analisis resiko.
4GT
Merupakan kumpulan tool perangkat lunak. Memungkinkan penegembang menyebutkan karakteristik perangkat lunak pada aras yang lebih tinggi, dan tool-tool tersebut akan membangkitkan kode program secara otomatis.
Proses mirip dengan model air terjun (diawali dengan pengumpulan persyaratan perangkat lunak).
Beberapa bidang pengembangan perangkat lunak yang telah dapat diautomatisasikan :
– query basis data (database query)
– pembangkitan laporan (report generation)
– manipulasi data
– definisi layar
– kemampuan grafis aras tinggi
Memory Organization secara Umum
Terdiri dari tiga memori :
– Short Term Memory : kapasistas terbatas, akses cepat. Merupakan daya ingat manusia terhadap program komputer.
– Working Memory : kapasitas lebih besar, yaitu RAM.
– Long Term Memory : kapasitas sangat besar, akses lambat. Meliputi disk storage (hard disk, optical disk, disket).
Verifikasi
Are we building the product right ?
Validasi
Are we building the right product ?
Human Factor in Software Engineering
Faktor-faktor manusia dalam pembuatan software ditinjau dari perancangannya sendiri dan pemakai merupakan hal penting, karena :
– Agar efektif para manajer software harus mengerti para stafnya secara individu, dan mengerti bagaimana masing- masing individu tersebut berinteraksi.
– Sistem komputer digunakan oleh manusia, jika keterbatasan dan kemampuan manusia tidak diperhatikan dalam merancang sistem maka orang tidak akan menggunakannya.
– Produktivitas programmer adalah faktor biaya yang sangat kritis pada perancangan software, untuk itu mengerti faktor-faktor manusia dapat membantu untuk meningkatkan produktivitas dengan tidak kehilangan biaya yang banyak.
Alasan Sulitnya Memilih Software Engineering
Berdasarnya personality yang jujur, memilih seorang programmer sangat sulit, karena :
– Personality is dinamic, not static : kepribadian sesorang bisa berubah sejalan dengan perkembangan karirnya.
– Karena perbedaan pribadi ini perlu kejelian dalam penempatan para programmer, apakah dia di bagian perancangan, penguji, dsb.
– Personality/manusia dalam melakukan tes masuk perusahaan kadang-kadang curang.
Faktor Penting Rekayasa Perangkat Lunak
Dalam rekayasa software, ada beberapa faktor penting kaitannya dengan human factor dan ergonomic :
– Privacy : seorang programmer memerlukan tempat dimana dia bisa bekerja tanpa interupsi.
– Outside Awareness : orang cenderung lebih suka dengan sinar/cahaya alami dan pemandangan lingkungan luarnya yang alami pula.
– Personalization : manusia secara individu mempunyai kebiasaan yang berbeda dalam bekerja dan mempunyai pendapat yang berbeda dalam dekorasi ruangannya.
Knowledge Modeling
– Semantic : pengetahuan tentang konsep-konsep, seperti bekerjanya suatu pernyataan penugasan dalam suatu program. Pengetahuan ini diperoleh melalui belajar dan pengalaman.
– Syntactic : pengetahuan tentang representasi yang detil, seperti bagaimana penulis deklarasi prosedur dalam Pascal.
Macam-macam Software
1. System Software
Sekumpulan program yang ditulis untuk melayani program lain. Termasuk di dalamnya operating system, file management and editor, serta utilities.
2. Real Time Software
Software yang memonitor, menganalisa, dan mengendalikan kejadian-kejadian dunia nyata. Memiliki komponen pengumpulan data, analisis, dan pengendali.
3. Business Software
Semua software yang dibuat untuk kepentingan bisnis.
4. Engineering and Scientific Software
Mempunyai karakteristik algoritmanya lebih banyak berisi rumus-rumus perhitungan matematis.
5. Embedded Software
Software yang harus dapat ditanam dalam ROM, dan biasanya digunakan untuk mengendalikan produk sehingga tercapai kepuasan pelanggan.
6. Personal Computer Software
Software yang dirancang untuk komputer PC.
7. Artificial Intelligence Software
Software AI mempunyai ciri khas menggunakan algoritma non-numerik untuk memecahkan masalah-masalah yang rumit yang tidak bisa ditangani dengan komputas biasa (analisis langsung).
Bidang AI yang dengan cepat berkembang antara lain : Expert System (Sistem Pakar), Pattern Recognizer (Pengenalan Pola), Theorem Proofing (Pembuktian Teori), serta Game Playing.
Well Engineered Software
Software dapat dikatakan mempunyai sebutan WES apabila :
– The software should be maintainable.
– The software should be reliable.
– The softwrae should be eficient.
– The software should over an appropriate user interface.
Mitos Software
Harapan dan kenyataan tidak selalu sala baik dari sudut pandang manajer maupun customer.
Dokumentasi
– Mempunyai program bantu (help).
– Komentar dalam penulisan program.
– Petunjuk cara menjalankan program.
– Pustaka program.
Analisis
Memecah suatu masalah menjadi bagian-bagian yang terkecil, sehingga bagian-bagian tersebut dapat diteliti satu per satu untuk diketahui permasalahan sebenarnya.
Tingkatan Spesifikasi
1. Requirement Definition : pernyataan bahasa natural (bahasa sehari-hari) terhadap apa yang diharapkan user untuk dapat dipenuhi.
2. Requirement Specification : struktur/bentuk dokumen yang menjelaskan pelayanan sistem lebih detil.
3. Software Specification : deskripsi abstrak tentang suatu software yang merupakan dasar untuk perancangan dan implementasi.
Arsitektur Sistem
Merupakan model yang merepresentasikan hubungan antar elemen sistem dan menjadi dasar bagi tahap analisis persyaratan dan tahap perancangan.
– Berawal dari template yang disempurnakan secara bertahap.
– Fungsi dan kinerja yang diharapkan, beserta alokasinya ke elemen-elemen sistem.
– Input dan output.
– Kekangan yang ada.
Analisis Persyaratan Perangkat Lunak
Software Requirement Analysis (SRA) berfungsi sebagai jembatan antara pengalokasian fungsi pada perangkat lunak dan perancangan perangkat lunak. Memungkinkan didefinisikannya fungsi-fungsi dan kinerja perangkat lunak, antarmuka perangkat lunak dengan elemen sistem lainnya, dan kekangan-kekangan yang harus dipenuhi oleh perangkat keras.
Aktivitas SRA :
– Pemahaman persoalan (dalam konteks software).
– Evaluasi dan sintesis.
– Pemodelan (prototyping).
– Spesifikasi perangkat lunak dan reviewnya.
Requirement Document Menurut Pressman
Bentuk requirement document berisi :
1. Introduksi
2. Deskripsi informasi
a. Representasi aliran informasi
b. Representasi isi informasi
3. Deskripsi fungsi
a. Partisi fungsi-fungsi
b. Deskripsi fungsi
c. Deskripsi kendali
4. Deskripsi karakteristik dan kelakuan (behaviour)
a. Keadaan sistem
b. Events dan aksi yang ditimbulkannya
5. Kriteria validasi
a. Batas-batas kinerja
b. Jenis-jenis pengujian
c. Respons yang diharapkan
6. Lampiran-lampiran
Requirement Document Menurut Heninger
Bentuk requirement document berisi :
1. Introduksi
2. Model sistem
3. Evolusi sistem
4. Functional requirement
5. Non-functional requirement
6. Glossary