Kriteria yang dapat digunakan sebagai acuan dalam merekayasa perangkat lunak:
Sesuai pengertian yang telah disampaikan sebelumnya, maka ruang lingkup dari RPL dapat
digambarkan sebagai berikut :
Ketika kita bekerja dengan komputer, kita membutuhkan serangkaian langkah dan cara-cara
tertentu untuk menghasilkan sesuatu yang merupakan harapan kita. Ini juga membutuhkan
langkah-langkah kerja dalam pengembangan perangkat lunak yang harus dilalui.
Rekayasa perangkat lunak yang berhasil tidak hanya membutuhkan keterampilan komputasi
seperti algoritma, pemrograman, dan database yang kuat, tetapi juga harus menetapkan tujuan
yang baik, mengidentifikasi cara untuk menyelesaikan metode pengembangan, urutan kegiatan,
identifikasi kebutuhan sumber daya, dan faktor lainnya.
Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu
proses pengembangan perangkat lunak. Model-model ini pada umumnya mengacu pada model
proses pengembangan sistem yang disebut System Development Life Cycle (SDLC) seperti
terlihat pada Gambar :
Setiap model yang dikembangkan mempunyai karakteristik sendiri-sendiri. Namun secara
umum ada persamaan dari model-model ini, yaitu:
Kebutuhan terhadap definisi masalah yang jelas. Input utama dari setiap model pengembangan
perangkat lunak adalah pendefinisian masalah yang jelas. Semakin jelas akan semakin baik
karena akan memudahkan dalam penyelesaian masalah. Oleh karena itu pemahaman masalah
seperti dijelaskan pada Bab 1, merupakan bagian penting dari model pengembangan perangkat
lunak.
Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis. Nilai dari sebuah
perangkat lunak sebenarnya agak susah di- rupiah-kan. Namun efek dari penggunaan perangkat
lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat
berupa penurunan biaya operasi, efisiensi penggunaan sumberdaya, peningkatan keuntungan
organisasi, peningkatan “image” organisasi dan lain-lain.
Ada banyak model pengembangan perangkat lunak, antara lain The Waterfall Model, Joint
Application Development (JAD), Information Engineering (IE), Rapid Application Development
(RAD) termasuk di dalamnya Prototyping, Unified Process (UP), Structural Analysis and Design
(SAD) dan Framework for the Application of System thinking (FAST).
Model siklus hidup (life cycle model) adalah model utama dan dasar dari banyak model. Salah
satu model yang cukup dikenal dalam dunia rekayasa perangkat lunak adalah The Waterfall
Model. Ada 5 tahapan utama dalam The Waterfall Model seperti terlihat pada Gambar. Disebut
waterfall (berarti air terjun) karena memang diagram tahapan prosesnya mirip dengan air
terjun yang bertingkat.
Tahapan-tahapan dalam The Waterfall Model secara ringkas adalah sebagai berikut :
Tahap investigasi dilakukan untuk menentukan apakah terjadi suatu masalah atau
adakah peluang suatu sistem informasi dikembangkan. Pada tahapan ini studi kelayakan
perlu dilakukan untuk menentukan apakah sistem informasi yang akan dikembangkan
merupakan solusi yang layak
Tahap analisis bertujuan untuk mencari kebutuhan pengguna dan organisasi serta
menganalisa kondisi yang ada (sebelum diterapkan sistem informasi yang baru).
Tahap desain bertujuan menentukan spesifikasi detil dari komponen- komponen sistem
informasi (manusia, hardware, software, network dan data) dan produk-produk
informasi yang sesuai dengan hasil tahap analisis.
Tahap implementasi merupakan tahapan untuk mendapatkan atau mengembangkan
hardware dan software (pengkodean program), melakukan pengujian, pelatihan dan
perpindahan ke sistem baru.
Tahapan perawatan (maintenance) dilakukan ketika sistem informasi sudah
dioperasikan. Pada tahapan ini dilakukan monitoring proses, evaluasi dan perubahan
(perbaikan) bila diperlukan.
3. Prototyping Model
Prototyping adalah salah satu pendekatan dalam rekayasa perangkat lunak yang secara
langsung mendemonstrasikan bagaimana sebuah perangkat lunak atau komponen-komponen
perangkat lunak akan bekerja dalam lingkungannya sebelum tahapan konstruksi aktual
dilakukan.
Prototyping model dapat diklasifikasikan menjadi beberapa tipe seperti terlihat pada gambar :
Reusable prototype :
Prototype yang akan ditransformasikan menjadi produk final.
Throwaway prototype :
Prototype yang akan dibuang begitu selesai menjalankan maksudnya.
Input/output prototype :
Prototype yang terbatas pada antar muka pengguna (user interface).
Processing prototype :
Prototype yang meliputi perawatan file dasar dan proses-proses transaksi.
System prototype :
Prototype yang berupa model lengkap dari perangkat lunak.
Tahap-tahap dalam prototyping boleh dikata merupakan tahap-tahap yang dipercepat. Strategi
utama dalam prototyping adalah kerjakan yang mudah terlebih dahulu dan sampaikan hasil
kepada pengguna sesegera mungkin. Harris (2003) membagi prototyping dalam enam tahapan
seperti terlihat pada gambar.
Tahapan-tahapan secara ringkas dapat dijelaskan sebagai berikut:
Identifikasi kandidat prototyping. Kandidat dalam kasus ini meliputi user interface (menu,
dialog, input dan output), file-file transaksi utama, dan fungsi-fungsi pemrosesan sederhana.
Rancang bangun prototype dengan bantuan software seperti word processor, spreadsheet,
database, pengolah grafik, dan software
Uji prototype untuk memastikan prototype dapat dengan mudah dijalankan untuk tujuan
demonstrasi.
Siapkan prototype USD (User’s System Diagram) untuk mengidentifikasi bagian-bagian dari
perangkat lunak yang di-prototype-kan.
Evaluasi dengan pengguna untuk mengevaluasi prototype dan melakukan perubahan jika
diperlukan.
Transformasikan prototype menjadi perangkat lunak yang beroperasi penuh dengan melakukan
penghilangan kode-kode yang tidak dibutuhkan, penambahan program-program yang memang
dibutuhkan dan perbaikan dan pengujian perangkat lunak secara berulang.
4. Model Teknik Generasi ke-4/4GT
Istilah Fourth Generation Techniques (4GT) yaitu seperangkat peralatan software yang
fungsinya sebagai perangkat pembantu untuk memudahkan seorang pengembang software
mengaplikasikan karakteristik software tersebut, dari situ akan menghasilkan source code dan
object code yang secara otomatis sesuai dengan persyaratan khusus yang dibuat oleh
pengembang software tersebut.
DataBase Query
Pembentukan laporan ( Report Generation )
Manipulasi data
Definisi dan interaksi layar (screen)
Pembentukan object dan source ( Object and source generation )
Kemampuan grafik yang tinggi, dan
Kemampuan spreadsheet
Tahap ini dibutuhkan untuk proyek besar yakni dengan menterjemahkan
kebutuhan menjadi prototype operasional agar tidak timbul masalah yang sama jika
dibuat dengan model konvensional.
Tahap Implementasi
Tahap terakhir ini adalah mengubah implementasi 4GT ke dalam hasil akhir
berupa produk.
Unified Process (UP) atau kadang disebut sebagai Unified Software Development Process
(USDP) adalah kerangka proses pengembangan yang bersifat use-case-driven, berpusat pada
arsitektur perangkat lunak, interatif dan tumbuh-kembang. Kerangka pengembangan ini
termasuk baru dalam metodologi pengembangan perangkat lunak. UP dapat diaplikasikan pada
berbagai skala proyek, mulai dari skala kecil sampai dengan skala besar.
Daur hidup UP secara umum akan tampak seperti pada bagan di Gambar Bagan ini biasa
disebut sebagai “hump chart”. Pada bagan ini terlihat ada empat tahap pengembangan yaitu
inception, elaboration, construction dan transition. Selain itu tampak pula sejumlah aktivitas
(disciplines) yang harus dilakukan sepanjang pengembangan perangkat lunak, yaitu, business
modeling, requirements, analysis and design, implementation, test. Tahap dan aktivitas
tersebut akan dilakukan secara iteratif.
Penjelasan singkat untuk empat tahapan dalam UP adalah sebagai berikut:
Inception. Tahapan ini merupakan tahapan paling awal dimana aktivitas penilaian terhadap
sebuah proyek perangkat lunak dilakukan. Tujuannya adalah untuk mendapatkan kesepakatan
dari stakeholder sehubungan dengan tujuan dan dana proyek.
Elaboration. Tujuan dari tahap ini adalah untuk mendapatkan gambaran umum kebutuhan,
persyaratan dan fungsi-fungsi utama perangkat lunak. Hal ini penting untuk mengetahui secara
lebih baik resiko-resiko proyek, baik meliputi resiko arsitektur perangkat lunak, perencanaan,
maupun implementasi. Pada tahap ini telah dimulai rancang bangun perangkat lunak secara
iterative melalui aktivitas-aktivitas seperti business modeling, requirements, analysis dan design
meskipun baru pada tahap awal.
Construction. Tujuan dari tahapan ini adalah membangun perangkat lunak sampai dengan saat
perangkat lunak tersebut siap digunakan. Titik berat tahapan ini adalah pada penentuan tingkat
prioritas kebutuhan / persyaratan, melengkapi spesifikasinya, analisis lebih dalam, desain solusi
yang memenuhi kebutuhan dan persyaratan, pengkodean dan pengujian perangkat lunak. Jika
dimungkinkan versi awal dari perangkat lunak diuji cobakan untuk mendapatkan masukan dari
pengguna.
Transition. Tahap ini difokuskan pada bagaimana menyampaikan perangkat lunak yang sudah
jadi pada pengguna. Perangkat lunak akan secara resmi diuji oleh baik oleh penguji (tester)
yang kompeten maupun oleh pengguna. Beberapa aktivitas seperti pemindahan pusat data dan
pelatihan pengguna dan staf pendukung harus dilakukan pada tahap ini.
Dalam pengembangan perangkat lunak dengan menggunakan UP, maka tidak lepas dari
penggunaan notasi-notasi yang biasa disebut sebagai UML (Unified Modeling Language).
Meskipun UP mensyaratkan penggunaan UML, namun UML sendiri dapat digunakan pada
berbagai metodologi yang lain bahkan dapat digunakan pada bidang selain sistem informasi.
UML adalah bahasa pemodelan standar atau kumpulan teknik-teknik pemodelan untuk men-
spesifikasi, mem-visualisasi, meng-konstruksi dan mendokumentasi hasil kerja dalam
pengembangan perangkat lunak. UML lahir dari penggabungan banyak bahasa pemodelan
grafis berorientasi obyek yang berkembang pesat pada akhir tahun 1980an dan awal 1990an.
A. Analisis
Analisis sistem adalah teknik pemecahan masalah di mana sistem dipecah menjadi komponen-
komponennya untuk memeriksa seberapa baik komponen bekerja dan berinteraksi untuk
mencapai tujuan mereka.
Model proses juga menunjukkan aliran data yang masuk dan keluar pada suatu proses.
Biasanya model ini digambarkan dalam bentu Diagram Arus Data (Data Flow Diagram / DFD).
DFD meyajikan gambaran apa yang manusia, proses dan prosedur lakukan untuk
mentransformasi data menjadi informasi.
B. Desain
Desain perangkat lunak adalah tugas, fase atau aktivitas yang berfokus pada spesifikasi
terperinci dari solusi terkomputerisasi. Desain perangkat lunak sering disebut sebagai desain
fisik. Ketika masalah bisnis (business rule) disorot dalam fase analisis sistem, desain perangkat
lunak terbalik berfokus pada sisi teknis dan implementasi perangkat lunak.
C. Konstruksi
Konstruksi adalah fase menerjemahkan hasil desain logis dan fisik ke dalam kode program
komputer.
D. Pengujian
Tes sistem mencakup semua kelompok pengguna yang direncanakan pada fase sebelumnya.
Pengujian tingkat penerimaan perangkat lunak berakhir ketika kesan muncul bahwa semua
kelompok pengguna mengklaim dapat menerima perangkat lunak berdasarkan kriteria yang
ditentukan.
Ketika eksekusi perangkat lunak dianggap layak, fase baru muncul, yaitu pemeliharaan
perangkat lunak. Berbagai jenis perawatan sudah dikenal di dunia perangkat lunak.
Jenis Software Testing
1. System Testing
System testing merupakan testing yang dilakukan pada satu keseluruhan sistem. Yang dilakukan
tidak lain adalah end to end testing untuk memverifikasi semua skenario telah berjalan dengan
baik. Cakupan system testing akan mengetes aspek-aspek fungsional dan non-fungsional dari
sebuah software. Apakah software ini telah memenuhi persyaratan untuk digunakan oleh
pengguna merupakan sebuah pertanyaan yang harus bisa dijawab oleh jenis testing ini.
2. Unit Testing
Unit testing merupakan testing yang dilakukan pada komponen atau modul terkecil dari sebuah
software. Unit testing biasanya dilakukan oleh para programmer/software engineer, bukan
Quality Assurance tester. Hal ini dikarenakan untuk melakukan unit testing diperlukan
pengetahuan tentang internal program design atau coding. Selain itu, kemampuan yang
diperlukan untuk melakukan testing jenis ini adalah developing test driver module atau test
harness.
3. Integration Testing
Integration testing merupakan testing yang dilakukan dengan cara mengintegrasi atau
mengkombinasikan satu modul/unit testing dengan modul/unit testing yang lain. Fungsi utama
dari integration testing adalah menguji interface di antara unit atau modul yang sudah di
testing. Biasanya integration testing dilakukan setelah melakukan unit testing. Setelah unit atau
komponen terkecil dibuat dan di testing, kita mulai untuk mengkombinasikan 'unit-unit yang
sudah ditest' tersebut dan melakukan integrated testing.
4. Usability Testing
Usability testing merupakan pengujian untuk menjamin bahwa sebuah software sudah user-
friendly atau ramah digunakan oleh user. Beberapa pengujian yang dilakukan antara lain
memastikan interface yang dibangun sudah sesuai dengan ekspektasi yang diinginkan oleh
user. Beberapa hal yang dinilai dari pengujian ini antara lain efektivitas, efisien, kemudahan,
dan menyenangkan.
5. Performance Testing
Performance testing merupakan terminologi atau istilah yang digunakan untuk menguji 'stress'
dan 'load' software secara bergantian. Performance testing digunakan untuk mengecek apakah
sistem sudah memenuhi performance requirements. Berbeda tingkatan performance sebuah
software maka alat yang digunakan untuk testing 'stress' dan 'load'-nya akan berbeda.
6. Smoke Testing
Smoke testing merupakan pengujian yang dilakukan untuk mengecek satu bangunan software
baru yang dibuat oleh development team. Proses pengujian ini biasanya dilakukan sebelum
para Quality Assurance tester memulai rangkaian pengujian.
Smoke testing akan memeriksa bahwa tidak ada cacat pada software yang akan mencegah tim
Quality Assurance tester melakukan pengujian secara mendetail. Setelah fase pengujian ini
dilakukan, para Quality Assurance tester akan mengambil perannya untuk memastikan bahwa
bangunan software telah stabil.
7. Stress Testing
Stress testing merupakan pengujian yang dilakukan pada sistem atau software yang dilakukan
oleh Quality Assurance tester untuk memeriksa bagaimana dan kapan software ini berhenti
atau gagal. Pengujian ini akan menempatkan software di kondisi-kondisi, contohnya
menempatkan jumlah besar di luar kapasitas penyimpanan, permintaan basis data yang
kompleks, atau input data terus menerus ke dalam sistem.
8. Sanity Testing
Sanity testing merupakan pengujian yang dilakukan untuk menentukan apakah versi baru dari
software yang dibangun dapat bekerja dengan baik. Jika software macet atau berhenti ketika
penggunaan awal, maka sistem yang tertanam dalam software tidak cukup stabil untuk
pengujian lebih lanjut. Maka dari itu, perlu untuk membangun lagi atau membetulkan aspek-
aspek yang masih belum berfungsi sempurna.
9. Regression Testing
Regression testing merupakan jenis pengujian yang dilakukan untuk memverifikasi bahwa
perubahan kode pada software tidak memengaruhi fungsionalitasnya sebagai produk.
Regression testing akan memastikan produk berfungsi dengan baik sesuai dengan
fungsionalitas baru yang dipasang, perbaikan bug, atau perubahan-perubahan fitur yang ada.
PENGUJIAN PERANGKAT LUNAK
Pengujian PL adalah elemen kritis dari jaminan kualitas PL dan merepresentasikan spesifikasi, desain dan
pengkodean. Meningkatnya visibilitas PL sbg suatu elemen sistem dan "biaya” yg muncul akibat
kegagalan PL, memotivasi dilakukan perencanaan yg baik melalui pengujian yg teliti. Dalam melakukan
uji coba ada 2 masalah penting yang akan dibahas, yaitu :
Pada dasarnya, pengujian merupakan suatu proses rekayasa PL yg dapat dianggap (secara psikologis)
sebagai hal yg destruktif daripada konstruktif.
Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan.
Test case yg baik adalah test case yg memiliki probabilitas tinggi untuk menemukan kesalahan yg
belum pernah ditemukan sebalumnya.
Pengujian yg sukses adalah pengujian yg mengungkap semua kesalahan yg belum pernah
ditemukan sebelumnya.
Testabilitas PL adalah seberapa mudah sebuah program komputer dapat diuji. Karena
pengujian sangat sulit, perlu diketahui apa yg dapat dilakukan untuk membuatnya menjadi mudah.
Karakteristik PL yg diuji :
a. OPERABILITAS, semakin baik dia bekerja semakin efisien dia dapat diuji.
b. OBSERVABILITAS, apa yg anda lihat adalah apa yg anda uji.
c. KONTROLABILITAS, semakin baik kita dapat mengontrol PL semakin banyak pengujian yg adapat
diotomatisasi dan dioptimalkan.
d. DEKOMPOSABILITAS, dengan mengontrol ruang lingkup pengujian kita dapat lebih cepat
mengisolasi masalah dan melakukan pengujian kembali.
e. KESEDERHANAAN, semakin sedikit yg diuji semakin cepat pengujian.
f. STABILITAS, semakin sedikit perubahan semakin sedikit gangguan pengujian.
g. KEMAMPUAN DIPAHAMI, semakin banyak informasi yg dimiliki semakin detail pengujiannya.
Pengetahuan fungsi yg spesifik dari produk yg telah dirancang untuk diperlihatkan, test
dapat dilakukan untuk menilai masing-masing fungsi apakah telah berjalan sebagaimana
yg diharapkan.
Pengetahuan tentang cara kerja dari produk, test dapat dilakukan untuk
memperlihatkan cara kerja dari produk secara rinci sesuai dengan spesifikasinya.
Dua macam pendekatan test yaitu :
Black Box Testing Test case ini bertujuan untuk menunjukkan fungsi PL tentang cara
beroperasinya, apakah pemasukan data keluaran telah berjalan sebagaimana yang
diharapkan dan apakah informasi yang disimpan secara eksternal selalu dijaga
kemutakhirannya.
White Box Testing Adalah meramalkan cara kerja perangkat lunak secara rinci,
karenanya logikal path (jalur logika) perangkat lunak akan ditest dengan menyediakan
test case yang akan mengerjakan kumpulan kondisi dan atau pengulangan secara
spesifik. Secara sekilas dapat diambil kesimpulan white box testing merupakan petunjuk
untuk mendapatkan program yang benar secara 100%. UJI COBA WHITE BOX Uji coba
white box adalah metode perancangan test case yang menggunakan struktur kontrol
dari perancangan prosedural untuk mendapatkan test case. Dengan rnenggunakan
metode white box, analis sistem akan dapat memperoleh test case yang: · menjamin
seluruh independent path di dalam modul yang dikerjakan sekurang-kurangnya sekali ·
mengerjakan seluruh keputusan logikal · mengerjakan seluruh loop yang sesuai dengan
batasannya · mengerjakan seluruh struktur data internal yang menjamin validitas
Pengujian terintegrasi adl teknik yg sistematis untuk penyusunan struktur program, pada saat
bersamaan dikerjakan uji coba untuk memeriksa kesalahan yg nantinya digabungkan dengan interface.
Metode pengujian