Lunak
Rekayasa Perangkat Lunak
Rekayasa perangkat lunak adalah pengubahan perangkat lunak itu sendiri guna
mengembangkan, memelihara, dan membangun kembali dengan menggunakan prinsip
rekayasa untuk menghasilkan perangkat lunak yang dapat bekerja lebih efisien dan
efektif untuk pengguna.
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 :
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.
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.
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.
Use-case diagram. Diagram ini berguna untuk menggambarkan interaksi antara pengguna
dengan sebuah perangkat lunak
Activity diagram. Diagram ini berguna untuk menggambarkan prosedur- prosedur perilaku
perangkat lunak.
Class diagram. Diagram ini berguna untuk menggambarkan class, fitur, dan hubungan-
hubungan yang terjadi. Pada diagram ini pendekatan berorientasi obyek memegang peranan
yang sangat penting.
Sequence diagram. Diagram ini berguna untuk menggambarkan interaksi antar obyek
dengan penekanan pada urutan proses atau kejadian.
State machine diagram. Diagram ini digunakan untuk menggambarkan bagaimana
suatu kejadian mengubah obyek selama masa hidup obyek tersebut.
Component diagram. Diagram ini berguna untuk menggambarkan struktur dan koneksi
komponen.
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.
•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.
•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.
•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.
•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.
•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.
•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.
•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 :
•OPERABILITAS, semakin baik dia bekerja semakin efisien dia dapat diuji.
•OBSERVABILITAS, apa yg anda lihat adalah apa yg anda uji.
•KONTROLABILITAS, semakin baik kita dapat mengontrol PL semakin banyak pengujian yg adapat
Terdapat bermacam-macam rancangan metode test case yg dapat digunakan, semua menyediakan
pendekatan sistematis untuk uji coba, yg terpenting metode menyediakan kemungkinan yg cukup tinggi
menemukan kesalahan. Terdapat 2 macam test case:
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.