RPL

REKAYASA PERANGKAT LUNAK (RPL)

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

Tahapan Perancangan Perangkat Lunak
1. Study and Understand Problem.
2. Identify Grouse Features of at Least One Possible Solution.
3. Describe Each Abstraction Used in the Solution.

Dasar-dasar Perancangan Perangkat Lunak
Abstraksi :
– Memungkinkan seseorang untuk berkonsentrasi pada satu aras generalisasi tanpa terlibat pada aras detilnya.
– Perancangan bekerja untuk membentuk abstraksi data dan prosedural, yang disempurnakan secara bertahap dari tingkat umum menuju tingkat yang spesifik.
Modularitas :
Berkaitan dengan arsitektur perangkat lunak. Software terdiri dari komponen-komponen yang disebut modul, yang diintegrasikan untuk memenuhi persyaratan yang diinginkan.

Perancangan Perangkat Lunak Besar
Langkah-langkah perancangan perangkat lunak dalam skala besar menurut Pressman adalah :
1. Perancangan Arsitektur
Mengidentifikasi dari subsistem, dicari hubungan antara subsistem dengan sistemnya, lalu didokumentasikan.
2. Spesifikasi / Abstraksi
Untuk setiap sub sistem, spesifikasi abstraksi harus sudah bisa memenuhi dan membatasi dimana produk tersebut dibuat dan nantinya dioperasikan.
3. Perancangan Antar Muka
Untuk setiap subsistem, antar muka dengan subsistem lainnya harus dirancang dan didokumentasikan. Interface ini jangan sampai membingungkan user.
4. Perancangan Komponen
Pada tahap ini subsistem harus bisa memenuhi bagian-bagian pekerjaan atau yang harus dikerjakan komponen-komponen yang ada dalam subsistem tersebut.
5. Perancangan Stuktur Data
Struktur data yang digunakan dalam implementasi sistem harus dirancang secara khusus.
6. Perancangan Algoritma
Algoritma yang digunakan untuk bisa memenuhi persyaratan nantinya dirancang secara rinci dan spesifik.

Kualitas Perancangan Perangkat Lunak
Diukur dengan dua metode :
1. Kohesi
Modul yang kohesif adalah modul yang mengerjakan satu tugas saja. Diinginkan membuat modul dengan kohesi yang tinggi.
Menurut Constantine dan Yourdon terdapat tingkatan kohesi mulai dari yang paling rendah ke yang paling tinggi :
a. Koinsidental
Bagian dari komponen data tidak berhubungan tertapi dijadikan satu ke dalam sebuah komponen.
b. Logical Association
Komponen yang melakukan fungsi-fungsi yang sama seperti input, penanganan kesalahan (error handing) diletakkan secara bersama dalam komponen tunggal.
c. Temporal
Seluruh komponen yang diaktifkan/dibangkitkan dalam satu waktu yang berdiri sendiri seperti startup dam shutdown Windows ditempatkan bersama pada satu tempat.
d. Prosedural
Elemen-elemen dalam komponen dibuat dalam pengendalian tunggal namun berurutan.
e. Komunikatif / Komunikasional
Seluruh komponen dari elemen yang beroperasi pada data yang sama atau menghasilkan output data yang sama.
f. Sekuensial
Keluaran dari salah satu elemen di dalam komponen bertindak sebagai input untuk beberapa elemen yang lain.
g. Fungsional
Masing-masing dari komponen diperlukan untuk eksekusi fungsi-fungsi tunggal.
2. Kopling
Merupakan ukuran interkoneksi antar modul. Diinginkan membuat modul-modul dengan kopling yang rendah.
Suatu program jika koplingnya tinggi berarti memiliki keterkaitan sangat kuat. Pada kopling tinggi ini, kesalahan satu submodul bisa menyebabkan semua modul berhenti.
Spektrum/tingkatan kopling dari yang paling tinggi ke yang paling rendah :
a. Isi
b. Bersama
c. Eksternal
d. Kendali
e. Stamp
f. Data
g. Tanpa kopling

Pertimbangan Coding
Ada beberapa hal yang perlu dipertimbangkan dalam pelaksanaan coding :
– Rancangan yang dihasilkan : seberapa mudah menerjemahkannya ke dalam bahasa pemrograman.
– Efisiensi komputer (kecepatan dan kebutuhan memori).
– Portabilitas kode program.
– Keberadaan tool-tool pengembangan.
– Kemudahan untuk dipelihara/dirawat.

Pengujian Perangkat Lunak
Dalam tahap pengujian perangkat lunak, ada beberapa pendelatan pelaksanaan tahap ini :
1. Pengujian ‘white box’
– Menguji detil prosedural : mengamati jalur-jalur logikal yang dibentuk oleh struktur pengendalian program (loop, percabangan).
– Bisa mengungkap 100% kesalahan logika yang mungkin muncul, bersifat exhaustive : ledakan kombinatorial untuk modul/program yang besar dan kompleks.
– Dilakukan pada awal tahap pengujian.
Aktivitas :
a. Menguji tiap jalur paling sedikit satu kali.
b. Menguji tiap kondisi percabangan untuk nilai ‘benar’ dan ‘salah’.
c. Menguji loop pada batas-batas loop dan pada daerah operasionalnya.
d. Menguji struktur data internal untuk memastikan kesahihannya.
Metode : pengujian jalur dasar (basis path), pengujian kondisi, pengujian aliran data, pengujian loop.

2. Pengujian ‘black box’
– Berfokus pada persyaratan fungsional dari perangkat lunak.
– Dilakukan tidak pada awal tahap pengujian.
– Mengungkap kesalahan-kesalahan pada fungsi-fungsi yang salah/hilang, antarmuka, akses ke basis data eksternal, kinerja, serta inisialisasi dan terminasi program.
Metode : equivalence partitioning, analisis nilai batas, teknik graf sebab akibat.

Pemeliharaan Perangkat Lunak
Jenis-jenis pemeliharaan perangkat lunak :
– Korektif
– Adaptif
– Penyempurnaan
– Preventif

Aktivitas :
– Pelaporan : laporan problem, spesifikasi perubahan.
– Aliran event dalam pemeliharaan.
– Penyimpanan rekaman-rekaman selama tahap pengembangan.
– Evaluasi terhadap aktivitas-aktivitas yang dilakukan dalam tahap pemeliharaan.

 

One response to “RPL

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s