DISUSUN OLEH
Ulaen, Hendra
08520102
Istilah Software Engineering diambil dari 2 kata, yaitu software (perangkat lunak), dan
engineering (bisa diartikan rekayasa). Software/perangkat lunak merupakan perintah-perintah
yang digunakan dalam memproses informasi. Perangkat lunak dapat berupa program, atau
prosedur. Dimana program merupakan kumpulan perintah-perintah yang menggunakan
bahasa pemrograman sehingga dapat dimengerti oleh komputer, sedangkan prosedur
merupakan perintah yang dibutuhkan oleh pengguna dalam memproses informasi. Perangkat
lunak sendiri terdiri atas (1) instruksi dimana saat dieksekusi menyediakan fitur, fungsi, dan
performansi yang diinginkan; (2) struktur data yang mengijinkan program untuk
memanipulasi informasi; (3) dokumen yang menjelaskan/menggambarkan operasi dan
penggunaan dari program. Engineering/rekayasa merupakan proses pembuatan/produksi
yang melibatkan proses-proses dari analisis, design, implementasi, dll.
Software engineering/rekayasa perangkat lunak berdasarkan uraian diatas dapat
didefinisikan sebagai suatu proses dalam rekayasa/pembuatan suatu perangkat lunak, proses-
proses tersebut merupakan proses yang harus dilalui sampai suatu software dapat digunakan,
proses ini meliputi requirement specification, analisis, design, implementasi, testing, dan
maintenance.
Definisi yang lebih jelas mengenai software engineering yaitu melalui aktivitas-aktivitas
berikut :
Aktivitas modeling – software engineers menghadapi kompleksitas melalui modeling,
dengan terfokus pada suatu hal pada detail yang cocok dan mengabaikan hal-hal yang
lain.
Aktivitas problem-solving – model digunakan untuk mencari solusi yang dapat diterima
Aktivitas knowledge acquisition – dalam memodelkan aplikasi dan domain solusi,
software engineers mengumpulkan data, mengaturnya menjadi informasi, dan
memformulasikan menjadi pengetahuan (knowledge).
Aktivitas rationale-driven – software engineers perlu menangkap konteks dimana
keputusan diambil dan rasional dibelakang keputusan-keputusan ini untuk mengerti
implikasi dari perubahan yang diajukan saat melihat kembali keputusan yang diambil.
2. Sejarah Software Engineering
1985-sekarang
Pada masa ini, berbagai teknik, metode, alat, proses diciptakan dan diklaim
sebagai senjata pamungkas untuk memecahkan kasus yang sebelumnya. Mulai dari :
o Pemrograman terstruktur,
o Pemrograman berorientasi object,
o Perangkat pembantu pengembangan perangkat lunak (CASE tools),
o Berbagai standar,
o UML (Unified Modeling Language),
o Metode formal diagung-agungkan sebagai senjata pamungkas untuk menghasilkan
software yang benar, sesuai anggaran dan tepat waktu.
Pada tahun 1987, Fred Brooks menulis artikel “No Silver Bullet”, yang
berproposisi bahwa tidak ada satu teknologi atau prakter yang sanggup mencapai 10 kali
lipat perbaikan dalam produktivitas pengembangan perangkat lunak dalam tempo 10
tahun. Sebagian berpendapat bahwa “No Silver Bullet” berarti profesi rekayasa perangkat
lunak dianggap telah gagal. Namun sebagian yang lain justru beranggapan, hal ini
menandakan bahwa bidang profesi rekayasa perangkat lunak telah cukup matang, karena
dalam bidang profesi lainnya pun, tidak ada teknik pamungkas yang dapat digunakan
dalam berbagai kondisi.
Ada beberapa methodology yang biasa digunakan dalam software engineering, yaitu
1. Waterfall model
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 Waterfall
Model. Ada 5 tahapan utama dalam Waterfall Model seperti terlihat pada gambar dibawah.
Disebut waterfall (berarti air terjun) karena memang diagram tahapan prosesnya mirip
dengan air terjun yang bertingkat.
Tahapan-tahapan dalam 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 disain 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.
Tahap perawatan (maintenance) dilakukan ketika sistem informasi sudah dioperasikan.
Pada tahapan ini dilakukan monitoring proses, evaluasi dan perubahan (perbaikan) bila
diperlukan.
2. Prototyping
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.
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.
3. Incremental model
Incremental model menggunakan model dari Waterfall model pada dasarnya,
tetapi, menggabungkannya dalam beberapa increment, dimana dalam pembuatan
software, yaitu melalui tahap-tahap Software Development Life Cycle (SDLC) yang
merupakan tahapan dasar dalam software engineering. Incremental model pada dasarnya
mempunyai sifat-sifat sebagai berikut :
1. Kombinasikan element-element dari waterfall dengan sifat iterasi/perulangan.
2. Element-element dalam waterfall dikerjakan dengan hasil berupa produk dengan
spesifikasi tertentu, kemudian proses dimulai dari fase pertama hingga akhir dan
menghasilkan produk dengan spesifikasi yang lebih lengkap dari yang sebelumnya.
Demikian seterusnya hingga semua spesifikasi memenuhi kebutuhan yang ditetapkan
oleh pengguna.
3. Produk hasil increment pertama biasanya produk inti (core product), yaitu produk
yang memenuhi kebutuhan dasar. Produk tersebut digunakan oleh pengguna atau
menjalani review/pengecekan detil. Hasil review tersebut menjadi bekal untuk
pembangunan pada increment berikutnya. Hal ini terus dikerjakan sampai produk
yang komplit dihasilkan.
4. Model ini cocok jika jumlah anggota tim pengembang/pembangun perangkat lunak
tidak cukup.
5. Mampu mengakomodasi perubahan secara fleksibel.
6. Produk yang dihasilkan pada increment pertama bukanlah prototype, tapi produk
yang sudah bisa berfungsi dengan spesifikasi dasar.
4. Spiral model
Proses digambarkan sebagai spiral. Setiap loop mewakili satu fase dari software
process. Loop paling dalam berfokus pada kelayakan dari sistem, loop selanjutnya
tentang definisi dari kebutuhan, loop berikutnya berkaitan dengan desain sistem dan
seterusnya.
Setiap
Loop dibagi
menjadi beberapa
sektor :
1. Objective
settings
Kesimpulan
Software Engineering merupakan suatu proses dalam rekayasa/pembuatan suatu perangkat
lunak, proses-proses tersebut merupakan proses yang harus dilalui sampai suatu software dapat
digunakan, proses ini meliputi requirement specification, analisis, design, implementasi, testing,
dan maintenance. Dalam software engineering terdapat beberapa methodology yang dapat
digunakan. Beberapa diantaranya yaitu Waterfall model, Prototyping, Incremental model, Spiral
model, dan RAD (Rapid Application Development). Methodology-methodology ini merupakan
aspek penting dalam rekayasa perangkat lunak, karena sangat diperlukan dalam pengembangan
software yang baik.
Referensi :
- Pressman, Roger S., Ph.D., Software Engineering a practicioner’s approach Fifth Edition,
(2001), McGraw Hill.
- http://tonyjustinus.wordpress.com/2007/11/11/spiral-model/
- http://iwansantoso.wordpress.com/rekayasa-perangkat-lunak/
- http://dahlanforum.wordpress.com/2009/12/16/pengertian-rekayasa-perangkat-lunak/
- http://www.hyperthot.com/pm_sdm.htm
- http://www.businessdictionary.com/definition/software-engineering.html
- http://www.webopedia.com/TERM/S/software_engineering.html