Back to Rekayasa Perangkat Lunak
Software Engineering Fundamentals and Layered Technology
Questions/Cues
- Definisi esensial rekayasa perangkat lunak
- Empat lapisan teknologi rekayasa perangkat lunak
- Urutan praktik fundamental pengembangan
- Perbedaan pendekatan sistematis vs ad-hoc
- Konsep “kualitas” sebagai fondasi utama
Reference Points
- SOFTWARE PROCESS REVIEW IF3250 (Halaman 2-3, 8)
- SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY (Halaman 3)
- THE ESSENCE OF SOFTWARE ENGINEERING PRACTICE (Halaman 8)
Definisi Rekayasa Perangkat Lunak
Rekayasa perangkat lunak adalah penerapan prinsip-prinsip teknik yang teruji untuk menghasilkan perangkat lunak yang andal, efisien, dan ekonomis. Berbeda dengan pemrograman konvensional, pendekatan ini bersifat sistematis, terukur, dan terdokumentasi, mencakup tiga aspek utama: proses pengembangan, teknik manajemen, dan penggunaan alat bantu. Contoh nyata: Membangun sistem perbankan memerlukan rekayasa perangkat lunak untuk memastikan keandalan transaksi, sedangkan membuat script otomasi sederhana mungkin tidak.
Teknologi Berlapis dalam Rekayasa Perangkat Lunak
Rekayasa perangkat lunak menggunakan pendekatan berlapis seperti bangunan bertingkat:
- Fokus Kualitas (Dasar): Mengutamakan kepuasan pengguna dan kesesuaian kebutuhan
- Proses (Lapisan 1): Kerangka kerja tahapan pengembangan (contoh: analisis kebutuhan → desain → implementasi)
- Metode (Lapisan 2): Teknik teknis seperti pemodelan data atau desain arsitektur
- Alat (Lapisan 3): Software pendukung seperti IDE, version control (Git), atau alat testing (Selenium)
Analogi: Seperti membangun gedung - fondasi (kualitas), struktur (proses), teknik konstruksi (metode), dan peralatan (tools).
Praktik Fundamental Pengembangan
Terdiri dari empat tahap berurutan:
- Pemahaman Masalah: Mengumpulkan kebutuhan melalui wawancara dan observasi
- Perencanaan Solusi: Membuat desain sistem dan arsitektur menggunakan diagram UML
- Implementasi: Penulisan kode dengan standar pengkodean dan dokumentasi
- Verifikasi: Pengujian fungsional, penetrasi, dan penerimaan pengguna
Contoh praktis: Pengembangan aplikasi e-commerce memerlukan analisis perilaku konsumen (tahap 1), desain workflow pembelian (tahap 2), implementasi modul pembayaran (tahap 3), dan uji coba transaksi dummy (tahap 4).
Rekayasa perangkat lunak merupakan disiplin yang mengintegrasikan prinsip teknik, proses terstruktur, dan alat bantu untuk menghasilkan solusi digital yang andal dan efisien. Kerangka kerjanya dibangun atas empat lapisan teknologi dimana fokus kualitas menjadi fondasi utama. Praktik pengembangannya mengikuti siklus sistematis mulai dari pemahaman masalah hingga verifikasi solusi, dengan penekanan pada pendekatan terukur dan dokumentasi komprehensif. Keberhasilan implementasi bergantung pada keseimbangan antara ketelitian proses dan fleksibilitas dalam menghadapi perubahan kebutuhan.
Additional Information
Evolusi Praktik Rekayasa Perangkat Lunak
Sejarah rekayasa perangkat lunak dimulai dari “Krisis Perangkat Lunak” 1968 ketika proyek-proyek TI sering melebihi anggaran dan waktu. NATO Conference pertama tahun 1968 memperkenalkan konsep rekayasa sebagai solusi. Perkembangan penting termasuk munculnya model CMMI (Capability Maturity Model Integration) untuk mengukur kedewasaan proses, dan standar ISO/IEC 12207 untuk siklus hidup pengembangan.
Metrik Kualitas Perangkat Lunak
Terdapat enam karakteristik utama menurut ISO 25010:
- Functional suitability (kesesuaian fungsi)
- Performance efficiency (efisiensi kinerja)
- Compatibility (kompatibilitas)
- Usability (kemudahan penggunaan)
- Reliability (keandalan)
- Security (keamanan)
Contoh pengukuran: MTBF (Mean Time Between Failures) untuk keandalan, jumlah vulnerability untuk keamanan, waktu respons untuk kinerja.
Studi Kasus: Penerapan pada Sistem Kritikal
Pada sistem pesawat Boeing 787, rekayasa perangkat lunak menerapkan:
- Redundansi triple-modular untuk toleransi kesalahan
- Formal verification menggunakan model checking
- Coding standar DO-178B Level A
- Real-time performance monitoring
Alat Analisis Kode Lanjutan
- SonarQube: Static code analysis untuk deteksi bug
- Valgrind: Memory leak detection
- Coverity: Security vulnerability scanning
- Klocwork: Architecture violation detection
Proyek Eksperimen Mandiri
- Bangun pipeline CI/CD sederhana menggunakan GitHub Actions untuk otomasi testing
- Analisis kode open-source di GitHub dengan SonarQube dan bandingkan metrik kualitasnya
- Implementasikan unit testing dengan code coverage >80% pada proyek kecil
Bacaan Lanjutan
- Pressman, R. S. (2014). Software Engineering: A Practitioner’s Approach. Edisi 8.
- Sommerville, I. (2016). Software Engineering. Edisi 10.
- Standar IEEE 730-2014 untuk Quality Assurance
- Kursus online: “Software Engineering Essentials” edX