Pemodelan
dalam suatu rekayasa perangkat lunak merupakan suatu hal yang dilakukan di
tahapan awal. Di dalam suatu rekayasa dalam perangkat lunak sebenarnya masih
memungkinkan tanpa melakukan suatu pemodelan. Namun hal itu tidak dapat lagi
dilakukan dalam suatu industri perangkat lunak. Pemodelan delam perangkat lunak
merupakan suatu yang harus dikerjakan di bagian awal dari rekayasa, dan
pemodelan ini akan mempengaruhi perkerjaan-pekerjaan dalam rekayasa perangkat
lunak tersebut.
Di
dalam suatu industri dikenal berbagai macam proses, demikian juga halnya dengan
industri perangkat lunak. Perbedaan proses yang digunakan akan menguraikan
aktivitas-aktivitas proses dalam cara-cara yang berlainan. Perusahaan yang
berbeda menggunakan proses yang berbeda untuk menghasilkan produk yang sama.
Tipe produk yang berbeda mungkin dihasilkan oleh sebuah perusahaan dengan
menggunakan proses yang berbeda. Namun beberapa proses lebih cocok dari lainnya
untuk beberapa tipe aplikasi. Jika proses yang salah digunakan akan mengurangi
kualitas kegunaan produk yang dikembangkan.
Pada
rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu
proses pengembangan perangkat lunak. Model-model ini pada umumnya mengacu pada
model proses pengembangan sistem yang disebut System Development Life Cycle (SDLC) seperti terlihat pada
gambar dibawah ini,
Setiap
model yang dikembangkan mempunyai karakteristik sendiri. Namun secara umum ada
persamaannya, yaitu :
- 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 merupakan bagian penting dari model pengembangan perangkat lunak.
- Tahapan-tahapan pengembangan yang teratur. Meskipun model-model pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya model-model tersebut mengikuti pola umum analysis – design – coding – testing – maintenance.
- Stakeholder berperan sangat penting dalam keseluruhan tahapan pengembangan. Stakeholder dalam rekayasa perangkat lunak dapat berupa pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat dalam rekayasa perangkat lunak tersebut.
- Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak. Masing-masing tahapan dalam model biasanya menghasilkan sejumlah tulisan, diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan.
- Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis. Nilai dari sebuah perangkat lunak sebenarnya agak susah dirupiah- kan. Namun efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat Setiap model yang dikembangkan mempunyai karakteristik sendiri-sendiri.
Model proses perangkat lunak masih
menjadi object penelitian, tapi sekarang ada banyak model umum atau paradigma
yang berbeda dari pengembangan perangkat lunak, antara lain:
A. Waterfall Model
Sebuah
pendekatan pengembangan perangkat lunak sistematik dan sekuensial. Disebut juga
“Classic Life Cycle”. Disebut waterfall (berarti air terjun) karena memang
diagram tahapan prosesnya mirip dengan air terjun yang bertingkat,
berikut diagram tahapannya :
Aktivitas Waterfall Model
- Requirements analysis and definition : mengumpulkan kebutuhan secara lengkap kemudian dianalisis dan didefinisikan kebutuhan yang hasrus dipenuhi oleh program yang akan dibangun.
- System and software design : desain dikerjakan setelah kebutuhan selesai dikumpulkan secara lengkap.
- Implementation and unit testing : desain program diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji.
- Integration and system testing : penyatuan unit-unit program kemudian diuji secara keseluruhan (system testing)
- Operation and maintenance : mengoperasikan program dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi sebenarnya.
- Software yang dikembangkan dengan metode ini biasanya menghasilkan kualitas yang baik.
- Dokumen pengembangan sistem sangat terorganisir, karena setiap fase harus terselesaikan dengan lengkap sebelum melangkah ke fase berikutnya.
- Perubahan sulit dilakukan karena sifatnya yang kaku.
- Karena sifat kakunya, model ini cocok ketika kebutuhan dikumpulkan secara lengkap sehingga perubahan bisa ditekan sekecil mungkin. Tapi pada kenyataannya jarang sekali konsumen/pengguna yang bisa memberikan kebutuhan secara lengkap, perubahan kebutuhan adalah sesuatu yang wajar terjadi.
- Waterfall pada umumnya digunakan untuk rekayasa sistem yang besar dimana proyek dikerjakan di beberapa tempat berbeda, dan dibagi menjadi beberapa bagian sub-proyek.
B. Evolutionary Software Process
Models
Bersifat iteratif/ mengandung perulangan. Hasil proses
berupa produk yang makin lama makin lengkap sampai versi terlengkap dihasilkan
sebagai produk akhir dari proses. Dua model dalam evolutionary software process
model adalah:
1.
Incremental Model
Incremental Model
merupakan gabungan antara model linear sekuensial dan prototyping. Setiap
linear sekuen menghasilkan produk yang deliveriables. Increment pertama
merupakan produk inti yang mengandung persyaratan/kebutuhan dasar. Penambahan
dilakukan pada increment-incremet berikutnya.
Keterangan:
Keterangan:
- Kombinasikan elemet-element dari waterfall dengan sifat iterasi/perulangan.
- 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.
- 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.
- Model ini cocok jika jumlah anggota tim pengembang/pembangun PL tidak cukup.
- Mampu mengakomodasi perubahan secara fleksibel.
- Produk yang dihasilkan pada increment pertama bukanlah prototype, tapi produk yang sudah bisa berfungsi dengan spesifikasi dasar.
- Personil bekerja optimal
- Pihak konsumen dapat langsung menggunakan dahulu bagian-bagian yang telah selesai dibangun. Contohnya pemasukan data karyawan
- Mengurangi trauma karena perubahan sistem. Klien dibiasakan perlahan-lahan menggunakan produknya bagian per bagian
- Memaksimalkan pengembalian modal investasi konsumen
- Cocok untuk proyek berukuran kecil (tidak lebih dari 200.000 baris coding)
- Mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam rencana spesifikasi masing-masing hasil increment
- Dapat menjadi build and Fix Model, karena kemampuannya untuk selalu mendapat perubahan selama proses rekayasa berlangsung
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 :
- Objective settings (menentukan tujuan): menentukan tujuan dari fase yang ditentukan. Batasan-batasan pada proses dan produk sudah diketahui. Perencanaan sudah disiapkan. Resiko dari proyek sudah diketahui. Alternatif strategi sudah disiapkan berdasarkan resiko-resiko yang diketahui, dan sudah direncanakan.
- Risk assessment and reduction (Penanganan dan pengurangan resiko): setiap resiko dianalisis secara detil pada sektor ini. Langkahlangkah penanganan dilakukan, misalnya membuat prototype untuk mengetahui ketidakcocokan kebutuhan.
- Development and Validation (Pembangunan dan pengujian): Setelah evaluasi resiko, maka model pengembangan sistem dipilih. Misalnya jika resiko user interface dominan, maka membuat prototype User Interface. Jika bagian keamanan yang bermasalah, maka menggunakan model formal dengan perhitungan matematis, dan jika masalahnya adalah integrasi sistem model waterfall lebih cocok.
- Planning: Proyek dievaluasi atau ditinjau-ulang dan diputuskan untuk terus ke fase loop selanjutnya atau tidak. Jika melanjutkan ke fase berikutnya rencana untuk loop selanjutnya.
Pembagian
sektor tidak bisa saja dikembangkan seperti pada pembagian sektor berikut pada
model variasi spiral di bawah ini:
- Customer communication: membangun komunikasi yang baik dengan pengguna/customer.
- Planning: mendefinisikan sesumber, batas waktu, informasi-informasi lain seputar proyek
- Risk analysis: identifikasi resiko managemen dan teknis
- Engineering: pembangunan contoh-contoh aplikasi, misalnya prototype
- Construction and release : pembangunan, test, install dan support.
- Customer evaluation: mendapatkan feedback dari pengguna berdasarkan evaluasi PL
Pada
model spiral, resiko sangat dipertimbangkan. Resiko adalah sesuatu yang mungkin
mengakibatkan kesalahan. Model spiral merupakan pendekatan yang realistik untuk
PL berskala besar. Pengguna dan pembangun bisa memahami dengan baik software
yang dibangun karena setiap kemajuan yang dicapai selama proses dapat diamati
dengan baik. Namun demikian, waktu yang cukup panjang mungkin bukan pilihan
bagi pengguna, karena waktu yang lama sama dengan biaya yang lebih besar.
C. Transformasi Formal
Metode
ini berbasiskan pada transformasi spesifikasi secara matematik melalui
representasi yang berbeda untuk suatu program yang dapat dieksekusi.
Trasformasi menyatakan spesifikasi program Menggunakan pendekatan ‘Cleanroom’
untuk pengembangan PL.
Metode
ini mempunyai keterbatasan dalam pemakaiannya. Keunggulannya adalah mengurangi
jumlah kesalahan pada sistem sehingga penggunaan utamanya adalah pada sistem
yang kritis. Hal ini menjadi efektif dari segi biaya.
Pemakaian model pengembangan formal
memerlukan tingkat kerahasian sebelum digunakan.
Permasalahan dalam model pengembangan metode formal:
۞ Memerlukan keahlian khusus dan pelatihan untuk mengaplikasikannya
۞ Sulit menentukan beberapa aspek dari suatu sistem seperti user interface
Permasalahan dalam model pengembangan metode formal:
۞ Memerlukan keahlian khusus dan pelatihan untuk mengaplikasikannya
۞ Sulit menentukan beberapa aspek dari suatu sistem seperti user interface
D. Model Rapid Aplication Development (RAD)
Rapid
Aplication Development (RAD) adalah sebuah model proses perkembangan software
sekuensial linier yang menekankan siklus perkembangan yang sangat pendek. Model
RAD ini merupakan sebuah adaptasi “kecepatan tinggi” dari model sekuensial
linier di mana perkembangan cepat dicapai dengan menggunakan pendekatan
kontruksi berbasis komponen. Jika kebutuhan dipahami dengan baik, proses RAD
memungkinkan tim pengembangan menciptakan “sistem fungsional yang utuh” dalam
periode waktu yang sangat pendek (kira-kira 60 sampai 90 hari). Karena dipakai
terutama pada aplikasi sistem konstruksi, pendekatan RAD melingkupi fase – fase
sebagai berikut :
♣ Bussiness modeling
Aliran informasi di antara fungsi –
fungsi bisnis dimodelkan dengan suatu cara untuk menjawab pertanyaan – pertanyaan
berikut : informasi apa yang mengendalikan proses bisnis? Informasi apa yang di
munculkan? Siapa yang memunculkanya? Ke mana informasi itu pergi? Siapa yang
memprosesnya?
♣ Data modeling
Aliran informasi yang didefinisikan
sebagai bagian dari fase bussiness modelling disaring ke dalam serangkaian
objek data yang dibutuhkan untuk menopang bisnis tersebut. Karakteristik
(disebut atribut) masing–masing objek diidentifikasi dan hubungan antara objek
– objek tersebut didefinisikan.
♣ Prosess modeling
Aliran informasi yang didefinisikan
di dalam fase data modeling ditransformasikan untuk mencapai aliran informasi
yang perlu bagi implementasi sebuah fungsi bisnis. Gambaran pemrosesan
diciptakan untuk menambah, memodifikasi, menghapus, atau mendapatkan kembali sebuah
objek data.
♣ Aplication generation
RAD mengasumsikan pemakaian teknik
generasi ke empat. Selain menciptakan perangkat lunak dengan menggunakan bahasa
pemrograman generasi ketiga yang konvensional, RAD lebih banyak memproses kerja
untuk memkai lagi komponen program yang ada ( pada saat memungkinkan) atau
menciptakan komponen yang bisa dipakai lagi (bila perlu). Pada semua kasus,
alat – alat bantu otomatis dipakai untuk memfasilitasi konstruksi perangkat
lunak.
♣ Testing and turnover
Karena proses RAD menekankan pada
pemakaian kembali, banyak komponen program telah diuji. Hal ini mengurangi
keseluruhan waktu pengujian. Tetapi komponen baru harus di uji dan semua
interface harus dilatih secara penuh.
Keunggulan
model RAD adalah :
- Setiap fungsi mayor dapat dimodulkan dalam waktu tertentu kurang dari 3 bulan dan dapat dibicarakan oleh tim RAD yang terpisah dan kemudian diintegrasikan sehingga waktunya lebih efisien
- RAD mengikuti tahap pengembangan sistem seperti umumnya, tetapi mempunyai kemampuan untuk menggunakan kembali komponen yang ada sehingga pengembang tidak perlu membuat dari awal lagi dan waktu yang lebih singkat
- Bagi proyek yang besar tetapi berskala, RAD memerlukan sumber daya manusia yang memadai untuk menciptakan jumlah tim RAD yang baik.
- RAD menuntut pengembangan dan pelanggan memiliki komitmen di dalam aktivitas rapid-fire yang diperlukan untuk melengkapi sebuah sistem, di dalam kerangka waktu yang sangat diperpendek. Jika komitmen tersebut tidak ada, proyek RAD akan gagal.
E.
Prototyping Model
Kadang-kadang
klien hanya memberikan beberapa kebutuhan umum software tanpa detil input,
proses atau detil output. Di lain waktu mungkin dimana tim pembangun
(developer) tidak yakin terhadap efisiensi dari algoritma yang digunakan,
tingkat adaptasi terhadap sistem operasi atau rancangan form user interface.
Ketika situasi seperti ini terjadi model prototyping sangat membantu proses
pembangunan software.
Proses
pada model prototyping yang digambarkan pada gambar model prototyping, bisa
dijelaskan sebagai berikut:
- Pengumpulan kebutuhan: developer dan klien bertemu dan menentukan tujuan umum, kebutuhan yang diketahui dan gambaran bagian-bagian yang akan dibutuhkan berikutnya. Detil kebutuhan mungkin tidak dibicarakan disini, pada awal pengumpulan kebutuhan.
- Perancangan : perancangan dilakukan cepat dan rancangan mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuatan prototype.
- Evaluasi prototype: klien mengevaluasi prototype yang dibuat dan digunakan untuk memperjelas kebutuhan software.
Perulangan ketiga proses ini terus
berlangsung hingga semua kebutuhan terpenuhi. Prototype-prototype dibuat untuk
memuaskan kebutuhan klien dan untuk memahami kebutuhan klien lebih baik. Prototype
yang dibuat dapat dimanfaatkan kembali untuk membangun software lebih cepat,
namun tidak semua prototype bisa dimanfaatkan. Sekalipun prototype memudahkan
komunikasi antar developer dan klien, membuat klien mendapat gambaran awal dari
prototype , membantu mendapatkan kebutuhan detil lebih baik namun demikian
prototype juga menimbulkan masalah:
- Dalam membuat prototype banyak hal yang diabaikan seperti efisiensi, kualitas, kemudahan dipelihara/dikembangkan, dan kecocokan dengan lingkungan yang sebenarnya. Jika klien merasa cocok dengan prototype yang disajikan dan berkeras terhadap produk tersebut, maka developer harus kerja keras untuk mewujudkan produk tersebut menjadi lebih baik, sesuai kualitas yang seharusnya.
- Developer biasanya melakukan kompromi dalam beberapa hal karena harus membuat prototype dalam waktu singkat. Mungkin sistem operasi yang tidak sesuai, bahasa pemrograman yang berbeda, atau algoritma yang lebih sederhana. Agar model ini bisa berjalan dengan baik, perlu disepakati bersama oleh klien dan developer bahwa prototype yang dibangun merupakan alat untuk mendefinisikan kebutuhan software.
F. Component-based Development Model
Component-based
development sangat berkaitan dengan teknologi berorientasi objek. Pada
pemrograman berorientasi objek, banyak class yang dibangun dan menjadi komponen
dalam suatu software. Class-class tersebut bersifat reusable artinya bisa
digunakan kembali. Model ini bersifat iteratif atau berulang-ulang prosesnya.
Secara umum proses yang terjadi
dalam model ini adalah:
- Identifikasi class-class yang akan digunakan kembali dengan menguji class tersebut dengan data yang akan dimanipulasi dengan aplikasi/software dan algoritma yang baru
- Class yang dibuat pada proyek sebelumnya disimpan dalam class library, sehingga bisa langsung diambil dari library yang sudah ada. Jika ternyata ada kebutuhan class baru, maka class baru dibuat dengan metode berorientasi objek.
- Bangun software dengan class-class yang sudah ditentukan atau class baru yang dibuat, integrasikan.
Penggunaan kembali komponen software
yang sudah ada menguntungkan dari segi:
►Siklus waktu pengembangan software, karena mampu mengurangi waktu 70%
►Biaya produksi berkurang sampai 84% arena pembangunan komponen berkurang
►Siklus waktu pengembangan software, karena mampu mengurangi waktu 70%
►Biaya produksi berkurang sampai 84% arena pembangunan komponen berkurang
Pembangunan
software dengan menggunakan komponen yang sudah tersedia dapat menggunakan
komponen COTS (Commercial off-the-shelf) – yang bisa didapatkan dengan membeli
atau komponen yang sudah dibangun sebelumnya secara internal. Component-Based
Software Engineering (CBSE) adalah proses yang menekankan perancangan dan
pembangunan software dengan menggunakan komponen software yang sudah ada. CBSE
terdiri dari dua bagian yang terjadi secara paralel yaitu software engineering
(component-based development) dan domain engineering seperti yang digambarkan
pada gambar dibawah ini,
- Domain engineering menciptakan model domain bagi aplikasi yang akan digunakan untuk menganalisis kebutuhan pengguna. Identifikasi, pembangunan, pengelompokan dan pengalokasikan komponen-komponen software supaya bisa digunakan pada sistem yang ada dan yang akan datang.
- Software engineering (component-based development) melakukan analisis terhadap domain model yang sudah ditetapkan kemudian menentukan spesifikasi dan merancang berdasarkan model struktur dan spesifikasi sistem, kemudian melakukan pembangunan software dengan menggunakan komponen-komponen yang sudah ditetapkan berdasarkan analisis dan rancangan yang dihasilkan sebelumnya hingga akhirnya menghasilkan software.
G. Extreme Programming (XP) Model
Model
proses ini diciptakan dan dikembangkan oleh Kent Beck. Model ini adalah model
proses yang terbaru dalam dunia rekayasa perangkat lunak dan mencoba menjawab
kesulitan dalam pengembangan software yang rumit dan sulit dalam implementasi. Menurut
Kent Beck XP adalah : “A lightweight, efficient, low-risk, flexible,predictable,
scientific and fun way to develop software”. Suatu model yang menekankan pada:
► keterlibatan user secara langsung
► pengujian
► pay-as-you-go design
Adapun empat nilai penting dari XP :- Communication/Komunikasi : komunikasi antara developer dan klien sering menjadi masalah. Karena itu komunikasi dalam XP dibangun dengan melakukan pemrograman berpasangan (pair programming). Developer didampingi oleh pihak klien dalam melakukan coding dan unit testing sehingga klien bisa terlibat langsung dalam pemrograman sambil berkomunikasi dengan developer. Selain itu perkiraan beban tugas jugadiperhitungkan.
- Simplicity/ sederhana: Menekankan pada kesederhanaan dalam pengkodean: “What is the simplest thing that could possibly work?” Lebih baik melakukan hal yang sederhana dan mengembangkannya besok jika diperlukan. Komunikasi yang lebih banyak mempermudah, dan rancangan yang sederhana mengurangi penjelasan.
- Feedback / Masukan/Tanggapan: Setiap feedback ditanggapi dengan melakukan tes, unit test atau system integration dan jangan menunda karena biaya akan membengkak (uang, tenaga, waktu).
- Courage / Berani: Banyak ide baru dan berani mencobanya, berani mengerjakan kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki.
mantab
ReplyDelete60 - 90 dari mana patokannya dr mana ? dala, diagram RAD maksdnya ap? mohon pencerahannya :D
ReplyDeletemakasih bro
ReplyDeletemakasih bro
ReplyDelete