Metode Software Enginnering
Metode software engineering
memberikan teknik-teknik bagaimana membentuk software.
Metode
ini terdiri dari serangkaian tugas :
-
Perencanaan
& estimasi proyek
-
Analisis
kebutuhan sistem dan software
-
Arsitektur
program dan prosedur algoritma
1.
Classic Life Cycle Pradigm - Model Water Fall -
Model Siklus Hidup Klasik
- System Engineering and Analysis:
Karena software merupakan bagian terbesar dari
sistem, maka pekerjaan dimulai dengan cara \ menerap kan kebutuhan semua elemen
sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan
terhadap sistem adalah penting, terutama pada saat software harus berhubungan
dengan elemen lain, seperti :
- Analisis kebutuhan software:
Suatu proses pengumpulan kebutuhan software untuk mengerti
sifat-sifat program yang dibentuk software engineering, atau analis harus
mengerti fungsi software yang diinginkan, performance dan interface terhadap
elemen lainnya. Hasil dari analisis ini didokumentasikan dan direview / dibahas
/ ditinjau bersama-sama customer.
- Design
Desain software sesungguhnya adalah proses multi
step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3
atribut program yang berbeda, yaitu :
* Struktur
data
*
Arsitektur
software
*
Rincian
prosedur
Proses
desain menterjemahkan kebutuhan ke dalam representasi software yang dapat
diukur kualitasnya sebelum mulai coding. Hasil dari desain ini
didokumentasikan dan menjadi bagian dari konfigurasi software.
- Coding
Desain harus
diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin
- Testing
Segera sesudah objek program dihasilkan, pengetesan program
dimulai. Proses testing difokuskan pada logika internal software. Jaminan bahwa
semua pernyataan atau statements sudah dites dan lingkungan external menjamin
bahwa definisi input akan menghasilkan output yang diinginkan.
- Maintenance
Software
yang sudah dikirim ke customer data berubah karena
-
Software
harus diadaptasi untuk menyesuaikan dengan lingkungan external, misalnya adanya
sistem operasi baru atau peripheral baru.
-
Software
yang lebih disempurnakan karena adanya permintaan dari customer.
Masalah yang
dihadapi dari model siklus hidup klasik adalah :
-
Proyek yang sebenarnya jarang mengikuti aliran sequential
yang ditawarkan model ini. Iterasi (Pengulangan) selalu terjadi dan menimbulkan
masalah pda aplikasi yang dibentuk oleh model ini.
- Seringkali
pada awalnya customer sulit menentukan semua kebutuhan secara explisit (jelas).
-
Customer
harus sabar karena versi program yang jalan tidak akan tersedia sampai proyek
software selesai dalam waktu yang lama.
Masalah yang dihadapi dari model siklus hidup
klasik adalah :
-Proyek yang
sebenarnya jarang mengikuti aliran sequential yang ditawarkan model ini. Iterasi (Pengulangan)
selalu terjadi dan menimbulkan masalah pada aplikasi yang dibentuk oleh
model ini.
- Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara
explisit (jelas).
-Customer harus sabar karena versi program yang jalan tidak akan tersedia
sampai proyek software selesai dalam waktu yang lama.
Seringkali
seorang customer sulit menentukan input yang lebih terinci, proses yang diinginkan dan output yang
diharapkan. Tentu saja ini menyebabkan developer tidak yakin dengan efisiensi
alogoritma yang di buatnya, sulit menyesuaikan sistem operasi, serta interaksi
manusia dan mesin yang harus diambil. Dalam hal seperti ini, pen dekatan
prototype untuk software engineering merupakan langkah yang terbaik. Prototype
sebenarnya adalah suatu proses yang memungkinkan developer membuat sebuah model
software.
Ada 2 bentuk dari model ini, yaitu :
A. Paper Prototype
Menggambarkan
interaksi manusia dan mesin dalam sebuah bentuk yang memungkinkan user mengerti
bagaimana interaksi itu terjadi.
B. Working Prototype
Adalah prototype yang
mengimplementasikan beberapa bagian dari fungsi
software yang
diinginkan seperti pada pendekatan pen gembangan software.
Model ini dimulai
dengan :
- Pengumpulan kebutuhan developer dan customer
- Menentukan semua tujuan software
- Mengidentifikasi kebutuhan-kebutuhan yang
diketahui
Masalah yang dihadapi
oleh prototyping paradigm ini adalah :
1. Customer hanya
melihat pada apa yang dihasilkan oleh software, tidak peduli
pada hal-hal yang
berhubungan dengan kualitas software dan pemeliharaan
jangka panjang.
2. Developer
seringkali menyetujui apa yang diterangkan oleh cu stomer agar
prototype dapat
dihasilkan dengan cepat. Akibatnya timbul pemilihan sistem
operasi / bahasa
pemrograman yang tidak tepat.
3.
Fourth Generation Tehnique Paradigm - Model tehnik
generasi ke 4 / 4GT
Istilah Fourth Generation
Technique (4GT) meliputi seperangkat peralatan software yang memungkinkan
seorang developer software menerapkan beberapa karakteristik software pada tingkat yang tinggi, yang kemudian menghasilkan source code
dan object code secara otomatis sesuai dengan spesifikas i yang
ditentukan developer. Saat ini peralatan / tools 4GT adalah bahasa non prosedur
untuk :
- 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
Keterangan gambar :
*
Model
4GT untuk software engineering dimulai dengan rangkaian pengumpulan kebutuhan.
Idealnya, seorang customer menjelaskan kebutuhan-kebutuhan yang selanjutnay
diterjemahkan ke dalam prototype. Tetapi ini tidak dapat dilakukan karena
customer tidak yakin dengan apa yang diperlukan, tidak jelas dalam menetapkan
fakta-fakta yang diketahui dan tidak dapat menentukan informasi yang diinginkan
oleh peralatan 4GT.
*
Untuk
aplikasi kecil adalah mungkin bergerak langsung dari langkah pengumpulan
kebutuhan ke implementasi yang menggunakan bahasa non prosedur fourth
generation (generasi ke 4). Tetapi untuk proyek besar, pengembangan strategi desain
sistem tetap diperlukan, sekalipun kita menggunakan 4GL. Penggunaan 4GT tanpa
desain untuk proyek besar akan menyebabkan masalah yang sama yang ditemui dalam
pengembangan software yang menggunakan pendekatan konvensional.
*
Implementasi yang menggunakan 4GL memungkinkan developer
software menjelaskan hasil yang diinginkan yang kemudian diterjemahkan ke
dalam bentuk source code dan object code secara otomatis.
*
Langkah yang terakhir adalah mengubah implementasi 4GT ke
dalam sebuah product. Selanjutnya developer harus melakukan pengetesan,
pengembangan dokumentasi dan pelaksanaan semua aktifitas lainnya yang
diwujudkan dalam model software engineering.
Masalah yang dihadapi
dalam model 4GT adalah adanya sebagian orang yang beranggapan bahwa :
1. peralatan 4GT
tidak semudah penggunaan bahasa pemrograman,
2. source code yang dihasilkan oleh peralatan ini
tidak efisien,
3. pemeliharaan
sistem software besar yang dikembangkan dengan 4GT masih
merupakan tanda tanya
4.Model
Kombinasi - Combining Paradigm
Keterangan :
Model ini
menggabungkan keuntungan-keuntungan dari beberapa model sebelumnya. Seperti
pada model sebelumnya, model kombinasi ini dimulai dengan langkah pengumpulan
kebutuhan.
Pendekatan
yang dapat diambil adalah pendekatan siklus hidup klasik (Analisis sistem dan
analisis kebutuhan software) atau dapat juga menggunakan pendekatan seperti
prototyping jika definisi masalahnya tidak terlalu formal.
Jika
kebutuhan untuk fungsi dan performance software diketahui dan dimengerti, pendekatan
yang dianjurkan adalah model siklus hidup klasik. Sebaliknya, jika aplikasi
software menuntut interaksi yang sering antara manusia dan mesin, membutuhkan algoritma yang tidak dapat
dibuktikan, atau membutuhkan tehnik output / kontrol, maka pendekatan yang
dianjurkan adalah model prototyping.
Pada kasus
seperti ini, 4GL dapat digunakan untuk mendapat prototype dengan cepat. Segera
sesudah prototype dievaluasi dan disempurnakan, langkah desain dan
implementasi dalam siklus hidup klasik diterapkan.
Dari model yang disebut di atas
dapat diambil suatu kesimpulan, bahwa proses pengembangan software terdiri dari
3 fase, yaitu :
1.
Fase
Definisi
2.
Fase
Pengembangan (Development)
3.
Fase
Pemeliharaan (Maintenance)
1.
Fase
Definisi
Fase definisi memfokuskan pada “What”.
Selama definisi ini, developer software berusaha untuk :
-
Mengidentifikasi informasi apa yang dikerjakan proses
-
Fungsi
dan performance apa yang diinginkan
-
Interface
apa yang dibutuhkan
-
Hambatan
desain apa yang ada, dan
-
Kriteria
validasi apa yang dibutuhkan untuk menetapkan keberhasilan sistem.
A.
Sistem
Analis
Sistem
analis menetapkan peranan dari setiap elemen dalam sistem berbasis komputer,
terutama mengalokasikan peranan software.
B.
Sistem
Software Planning
Dalam sistem
ini, setelah lingkungan software dialokasikan, maka langkah dari sistem
software planning ini adalah :
-
Pengalokasian
sumber / resource
-
Penetapan
tugas pekerjaan dan jadual.
C.
Requirement
Analysis
Penetapan lingkup untuk software memberikan petunjuk
/ arah. Namun definisi yang lebih rinci dari informasi dan fungsi software
diperlukan sebelum pekerjaan dimulai.
2.
Fase
Pengembangan
Fase pengembangan berfokus pada “How”. Selama
pengembangan, developer software berusaha menjelaskan :
-
Bagaimana
struktur data dan arsitektur software yang didesain
-
Bagaimana
rincian prosedur diimplementasikan ( diterapkan )
-
Bagaimana
desain diterjemahkan ke dalam bahasa pemrograman atau bahasa non prosedur, dan
-
Bagaimana
pengetesan akan dilaksanakan.
A.
Desain
software ( Software Design )
Desain menterjemahkan kebutuhan-kebutuhan software
ke dalam sekumpulan representasi (grafik, tabel, diagram, atau bahasa yang
menjelaskan struktur data, arsitektur software dan prosedur algoritma).
B.
Coding
Representasi desain harus diterjemahkan ke dalam
bahasa tiruan / artificial language yang menghasilkan perintah-perintah yang
dapat dieksekusi oleh komputer.
C.
Software
Testing
Segera sesudah software diimplementasikan dalam
bentuk yang dapat dieksekusi oleh mesin, software perlu ditest untuk menemukan
kesalahan ( merupakan fungsi logika dan implementasi ).
3.
Fase
Pemeliharaan
Fase
pemelihaaan berfokus pada “Change” atau perubahan. Ini dapat disebabkan :
A.
Perubahan
karena software error ( Corective Maintenance )
B.
Perubahan
karena software disesuaikan / diadaptasi dengan lingkungan external, misalnya
munculnya CPU baru, sistem operasi baru ( Adaptive Maintenance )
C.
Perubahan
software yang disebabkan customer / user meminta fungsi tambahan, misalnya
fungsi grafik, fungsi matematik, dll ( Perfective Maintenance )