Rekayasa Perangkat Lunak
dan Proses Software
Aryo Pinandito
Program Vokasi Universitas Brawijaya 2012
Tentang Rekayasa Perangkat Lunak
Pertumbuhan ekonomi seluruh negara maju sangat
bergantung pada perangkat lunak
Semakin banyaknya sistem yang dikendalikan oleh
perangkat lunak
Ilmu rekayasa perangkat lunak terkait dengan teori,
metode, dan tools untuk membuat perangkat lunak
yang baik
Biaya yang digunakan untuk pembelanjaan
perangkat lunak merepresentasikan nilai yang
signifikan di seluruh negara-negara maju
Biaya Perangkat Lunak
Pada umumnya biaya perangkat lunak lebih
mendominasi biaya keseluruhan sistem komputer.
Biaya software lebih tinggi daripada biaya hardware.
Untuk sistem jangka panjang, biaya perawatan
untuk perangkat lunak lebih mahal daripada biaya
pembuatan perangkat lunak.
Rekayasa perangkat lunak terkait dengan
bagaimana mengembangkan perangkat lunak yang
efektif.
Apa itu software?
Program komputer dan dokumentasi pendukungnya.
(daftar kebutuhan, model-model desain, dan user manual)
Produk software dapat dikembangkan untuk pengguna
tertentu atau dikembangkan untuk pengguna secara
umum.
Generic: dikembangkan dan dipasarkan untuk banyak jenis
pengguna (seperti: Excel dan Word)
Custom: dikembangkan untuk satu pengguna berdasarkan
spesifikasi kebutuhan pengguna tersebut
Perangkat lunak dapat dikembangkan dari awal,
mengubah konfigurasi sistem perangkat lunak, atau
menggunakan ulang software yang sudah ada.
Apa itu Rekayasa Perangkat Lunak?
Sebuah disiplin ilmu yang terkait dengan seluruh
aspek pengembangan perangkat lunak
Para pengembang perangkat lunak harus
menggunakan pendekatan yang sistematis dan
terstruktur, serta dalam menggunakan tools dan
teknik yang sesuai harus mengacu kepada masalah
yang akan diselesaikan, batasan-batasan
pengembangan, dan sumber daya yang tersedia.
Proses Software
Sekumpulan aktivitas yang tujuannya adalah
mengembangkan atau mengubah perangkat lunak
Aktivitas generik dalam seluruh proses software:
Spesifikasi, apa yang harus sistem lakukan dan batasan-
batasan pengembangannya.
Development, proses pembuatan perangkat lunak.
Validasi, memeriksa kesesuaian perangkat lunak dengan
kebutuhan pengguna
Evolusi, perubahan perangkat lunak sebagai respon
terhadap kebutuhan yang berubah.
Model Proses Software
Sebuah representasi yang disederhanakan dari
sebuah proses software, dipresentasikan dari sudut
pandang tertentu.
Contoh sudut pandang proses:
Workflow, urutan-urutan dari aktivitas;
Data-flow, aliran informasi
Role/action, siapa melakukan apa
Model proses generik:
Waterfall
Pengembangan iterative
Pengambangan berbasis komponen
Model Proses Software
Waterfall
Requirements
definition
System and
software design
Implementa tion
and unit testing
Integration and
system testing
Oper ation and
maintenance
Fase Model Waterfall
Definisi dan analisis kebutuhan
Desain perangkat lunak dan sistem
Implementasi dan unit testing
Integrasi dan system testing
Operasi dan maintenance
Masalah dalam model waterfall
Kesulitan dalam mengakomodasi perubahan setelah
proses dilaksanakan. Satu fase harus selesai sebelum
bergerak ke fase selanjutnya.
Model ini hanya sesuai ketika kebutuhan telah
dipahami dengan baik, dan kemungkinan
perubahan yang terjadi sangat kecil pada saat proses
desain
Sangat sedikit sistem bisnis yang memiliki
kebutuhan yang stabil
Umumnya model ini digunakan untuk proyek
rekayasa sistem besar dimana sebuah sistem
dikembangkan di beberapa tempat secara terpisah
Biaya rekayasa perangkat lunak
Secara kasar, 60% biaya pengembangan dan 40%
biaya pengujian.
Variasi biaya bergantung pada jenis sistem yang
dikembangkan dan kebutuhan atribut sistem, seperti
performansi dan reliabilitas.
Distribusi biaya bergantung pada model
pengembangan yang digunakan.
Distribusi biaya
Wat erfall model
0 25 50 75 100
Specification Design Development Integration and testing
It erative development
0 25 50 75 1 00
Specification Iterative development System testing
Component-based software eng ineering
0 25 50 75 1 00
Specification Development Integration and testing
Development and evolution costs for long-lifetime syst ems
0 10 200 30 400
System development System evolution
Metode Rekayasa Perangkat Lunak
Metode RPL:
Pendekatan terstruktur untuk mengembangkan perangkat
lunak dimana didalamnya termasuk model-model sistem,
notasi, aturan, desain dan garis besar proses.
Deskripsi model
Penjelasan gambar model yang akan dibuat
Aturan
Batasan-batasan yang harus diterapkan dalam model sistem
Rekomendasi
Saran-saran terhadap praktek desain yang baik
Petunjuk Proses
Aktivitas apa saja yang harus diikuti
CASE (Computer-Aided Software Engineering)
Sistem perangkat lunak yang ditujukan untuk
memberikan dukungan otomatisasi dalam aktivitas
proses software.
Upper-CASE
Tools yang digunakan dalam aktivitas proses kebutuhan
awal dan desain
Lower-CASE
Tools yang digunakan untuk mendukung aktivitas
selanjutnya, seperti programming, debugging, dan testing
Atribut Perangkat Lunak Yang Baik
Perangkat lunak yang dibangun harus mampu
memberikan fungsional dan performa yang dibutuhkan
oleh pengguna serta harus dapat diandalkan.
Maintainability:
Harus dapat diubah sesuai dengan kebutuhan pengguna
Dependability:
Output perangkat lunak harus dapat dipercaya
Acceptability:
Dapat dimengerti, digunakan, dan kompatibel dengan
sistem yang lain.
Aktivitas Proses
Spesifikasi Software
Desain dan Implementasi Software
Validasi Software
Evolusi Software
Spesifikasi Software
Proses untuk mengetahui layanan/fungsi yang
dibutuhkan serta batasan-batasan dalam
pengembangan dan pelaksanaannya
Proses rekayasa kebutuhan:
Studi kelayakan
Pengumpulan dan analisis kebutuhan
Spesifikasi kebutuhan
Validasi kebutuhan
Proses Rekayasa Kebutuhan
Requirements
Feasibility
stud y elicitation and
anal ysis
Requirements
specification
Feasibility Requirements
repor t validation
System
models
User and system
requirements
Requirements
document
Desain dan Implementasi Perangkat Lunak
Proses mengubah spesifikasi sistem menjadi sebuah
sistem yang dapat dijalankan
Desain software
Mendesain struktur perangkat lunak berdasarkan
spesifikasi
Implementasi
Menerjemahkan struktur perangkat lunak kedalam
program yang dapat dieksekusi
Aktivitas dalam desain dan implementasi sangat
berkaitan
Metode Desain Terstruktur
Pendekatan sistematis untuk membuat sebuah
desain perangkat lunak
Umumnya didokumentasikan dengan sekumpulan
model-model gambar.
Model objek
Model squence
State-transition model
Model struktural
Model data-flow
Programming dan Debugging
Menerjemahkan desain kedalam sebuah program
dan menghilangkan kesalahan dalam program
tersebut
Pemrograman adalah aktivitas personal, dimana
didalamnya tidak ada proses program yang umum.
Programmer melakukan pengujian program untuk
menemukan kesalahan dalam program. Kesalahan-
kesalahan program diperbaiki dalam proses
debugging.
Validasi Perangkat Lunak
Verifikasi dan validasi bertujuan untuk
memperlihatkan bahwa sistem yang dibangun
sesuai dengan spesifikasi dan memenuhi kebutuhan
dari pengguna
Proses ini melibatkan proses review dan pengujian
sistem.
Pengujian sistem dilakukan dengan test case yang
diturunkan dari spesifikasi dengan menggunakan
data nyata yang akan diolah oleh sistem.
Evolusi (Maintenance) Software
Perangkat lunak bersifat fleksibel dan dapat berubah
Seiring dengan berubahnya kebutuhan terkait
dengan kebutuhan bisnis, perangkat lunak yang
mendukung bisnis tersebut harus berevolusi dan
berubah.
Semakin sedikit sistem dan perangkat lunak yang
dibangun dengan benar-benar baru.
Evolusi pada umumnya merupakan pengembangan
dari versi sebelumnya atau merupakan gabungan
dari sistem atau perangkat lunak lain.
Key Points
Proses software adalah aktivitas yang terkait dalam
membuat dan berevolusinya sebuah sistem
perangkat lunak.
Aktivitas umum dalam proses software
Spesifikasi, desain dan implementasi, validasi dan
evolusi
Rekayasa kebutuhan adalah proses menyusun
sebuah spesifikasi kebutuhan perangkat lunak
Desain dan implementasi mengubah spesifikasi
kedalam program yang dapat dijalankan
Key Points
Validasi menguji sistem yang dibangun memenuhi
spesifikasi dan kebutuhan user
Evolusi terkait dengan perubahan sistem setelah
digunakan
Teknologi CASE digunakan untuk membantu dalam
aktivitas-aktivitas proses software