A. MODEL WATERFALL
The waterfall model, memisahkan dan membedakan tahapan-tahapan spesifikasi dan pengembangan. Dalam software lifecycle (waterfall model) terdapat beberapa tahapan utama yang menggambarkan aktivitas pengembangan software. Model waterfall mengusulkan sebuah pendekatan kepada perkembangan software yang sistematik dan sekuensial yang mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, pengujian, dan pemeliharaan. Model ini melingkupi aktivitas โ aktivitas sebagai berikut : rekayasa dan pemodelan sistem/informasi, analisis kebutuhan, desain, coding, pemeliharaan dan pengujian. Setiap phase pada Waterfall dilakukan secara berurutan namun kurang dalam iterasi pada setiap level.
Gambar 1. Model WaterFall
1. Requirements analysis and definition, merupakan layanan, batasan dan tujuan dari sistem yang dibuat dengan mengkonsultasikannya bersama para pengguna system.
2. System and software design, proses desain sistem membagi kebutuhan sistem akan software dan hardware.
3. Implementation and unit testing, selama tahapan ini, desain software direalisasikan sebagai sekumpulan program atau unit program.
4. Integration and system testing, unit-unit program individual digabungkan (integrated) dan diujicoba (tested) sebagai sebuah sistem lengkap untuk memastikan bahwa kebutuhan-kebutuhan software telah terpenuh. Setelah pengujian, sistem software desampaikan pada pelanggan.
5. Operation and maintenance, biasanya tahapan ini merupakan tahapan terpanjang dalam lifecycle.
Masalah-masalah yang muncul dalam model waterfall ini diantaranya :
1. Pembagian proyek yang tidak flexibel dalam bentuk tahapan yang berbeda
2. Hal ini mengakibatkan kesulitan saat merespon perubahan kebutuhan klien.
3. Dengan demikian, model ini hanya akan sesuai apabila kebutuhan telah disepakati dan dipahami dengan baik antara klien dan pengembang
B. MODEL PROTOTIPE
Metodologi prototyping melakukan analisis, desain dan implementasi secara bersamaan, kemudian dilakukan secara berulang-ulang untuk mendapat review dari pengguna. Sebuah prototiping adalah sebuah sistem dalam fungsi yang sangat minimal. Prototyping paradigma dimulai dengan pengumpulan kebutuhan. Pengembang dan pelanggan bertemu dan mendefinisikan obyektif keseluruhan dari software, mengidentifikasi segala kebutuhan yang diketahui, dan area garis besar diman definisi lebih jauh merupakan keharusan kemudian dilakukan โperancangan kilatโ. Perancangan kilat berfokus pada penyajian dari aspek โ aspek software tersebut yang akan nampak bagi pelanggan atau pemakai (contohnya pendekatan input dan format output). Perancangan kilat membawa kepada konstruksi sebuah prototipe. Prototipe tersebut dievaluasi oleh pelanggan/pemakai dan dipakai untuk menyaring kebutuhan pengembangan software. Iterasi terjadi pada saat prototipe disetel untuk memenuhi kebutuhan pelanggan, dan pada saat yang sama memungkinkan pengembang untuk secara lebih baik memahami apa yang harusa dilakukannya. Gambar 2. Prototipe Paradigma
Secara ideal prototipe berfungsi sebagai sebuah mekanisme untuk mengidentifikasi kebutuhan software. Bila prototipe yang sedang bekerja dibangun, pengembang harus mempergunakan fragmen โ fragmen program yang ada atau mengaplikasikan alat โalat bantu (contohnya report generator, window manager, dll) yang memungkinkan program yang bekerja untuk dimunculkan secara cepat. Prototipe bisa juga menjadi masalah karena alasan sebagai berikut:
Tahapan-tahapan Prototyping :
1. Pengumpulan kebutuhan
Pelanggan dan penegmbang bersama-sama mendefinisikan format seluruh perangkat lunak, semua kebutuhan dan garis besar system yang akan dibuat
2. Membangun prototyping
Membangun prototyping dengan membuat perancangan sementara yang berfokus pada penyajian kepada pelanggan (misalnya dengan membuat input dan format output).
3. Evaluasi protoptyping
Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginann pelanggan.
4. Mengkodekan sistem
Dalam tahap ini prototyping yang sudah di sepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai.
5. Menguji sistem
Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus dites dahulu sebelum digunakan. Pengujian ini dilakukan dengan White Box, Black Box, Basis Path, pengujian arsitektur dan lain-lain.
6. Evaluasi Sistem
Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan .
7. Menggunakan sistem
Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk digunakan.
Keunggulan dan Kelemahan Prototyping.
Keunggulan prototyping adalah:
1. Adanya komunikasi yang baik antara pengembang dan pelanggan
2. Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan
3. Pelanggan berperan aktif dalam pengembangan sistem
4. Lebih menghemat waktu dalam pengembangan sistem
5. Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya.
Kelemahan prototyping adalah :
1. Pelanggan kadang tidak melihat atau menyadari bahwa perangkat lunak yang ada belum mencantumkan kualitas perangkat lunak secara keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk jangja waktu lama.
2. Pengembang biasanya ingin cepat menyelesaikan proyek. Sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat prototyping lebih cepat selesai tanpa memikirkan lebih lanjut bahwa program tersebut hanya merupakan cetak biru sistem.
3. Hubungan pelanggan dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik
Prototyping bekerja dengan baik pada penerapan-penerapan yang berciri sebagai berikut:
1. Resiko tinggi Yaitu untuk maslaha-masalah yang tidak terstruktur dengan baik, ada perubahan yang besar dari waktu ke waktu, dan adanya persyaratan data yang tidak menentu.
2. Interaksi pemakai penting . Sistem harus menyediakan dialog on-line antara pelanggan dan komputer.
3. Perlunya penyelesaian yang cepat
4. Perilaku pemakai yang sulit ditebak
5. Sitem yang inovatif. Sistem tersebut membutuhkan cara penyelesaian masalah dan penggunaan perangkat keras yang mutakhir
6. Perkiraan tahap penggunaan sistem yang pendek
prototype merupakan alat yang mensimulasikan beberapa (tidak semua) fitur dari
sistem yang akan dibuat.
C. THROWING PROTOTYPING
Throw Away Prototyping / Cepat
metodologi Throwaway Prototyping hampir sama dengan metodologi Prototyping. Perbedaannya bahwa pada metodologi ini, analisis dilakukan lebih mendalam lagi.
Sebuah prototipe yang dikembangkan sebagai bagian dari pendekatan Throw Away tidak akan membentuk bagian dari solusi akhir. Kemungkinan untuk menginformasikan solusi akhir, tetapi prototipe itu sendiri tidak akan menjadi bagian dari solusi akhir.
Throw-away prototipe adalah cara yang berguna untuk mengeksplorasi ide-ide, dan memperoleh umpan balik dari klien dan / atau pengguna akhir. Mereka cenderung digunakan untuk menjawab pertanyaan.
Sebuah pertanyaan tentang persyaratan fungsional mungkin memerlukan perkembangan pesat dari prototipe, mungkin menggunakan alat tertentu, dalam rangka untuk menjawab pertanyaan itu.
Contoh: apakah itu akan mungkin untuk membaca nilai dari file teks ke dalam program?
Sebuah prototipe Throw Away dapat diproduksi dengan sangat cepat untuk menentukan apakah hal ini mungkin, dan bagaimana.
Hasil dari prototipe mungkin: Ya, itu adalah mungkin dan akan relativitas mudah untuk dicapai dengan menggunakan alat tertentu atau metode (misalnya dipisahkan koma file teks dapat membaca ke dalam program, aplikasi atau Script elemen dari file bisa. disimpan dalam satu atau lebih variabel atau array).
Prototipe telah menjawab pertanyaan, sehingga telah dilayani tujuan dan sekarang dapat dibuang.
Desain antarmuka, tata letak dan interaksi gaya adalah daerah lain yang dapat dieksplorasi dengan menggunakan Throw Away prototipe. Ini kadang-kadang disebut sebagai ‘mock-up’ atau ‘dummies klik’ karena mereka terlihat realistis namun mengandung kode sedikit atau tidak ada untuk menyediakan fungsionalitas yang diharapkan (misalnya mengklik pada ikon antarmuka tidak melakukan fungsi yang terkait dengan ikon). Kecepatan di mana membuang-jauh prototipe dapat dihasilkan dan dimodifikasi merupakan alasan utama untuk mereka gunakan dan mengapa metode ini kadang-kadang disebut sebagai ‘prototipe cepat’. Mereka juga menyediakan cara yang berguna dan bermakna bagi pengembang untuk berjalan di klien dan / atau pengguna akhir melalui persyaratan sistem sebagaimana ditafsirkan oleh pengembang. Umpan balik dari klien dan / atau pengguna akhir harus membantu dalam memungkinkan salah tafsir atau kompleksitas tidak perlu dijemput dan ditangani pada tahap awal.
Kecepatan pembangunan dan potensi untuk menangkap salah tafsir atau fitur yang hilang pada tahap awal dapat membantu untuk membuat prototipe membuang-jauh pendekatan biaya yang efektif.
Gambar Prototype Model Throw-away
D. MODEL SPIRAL
Model spiral (spiral model) adalah model proses software yang evolusioner yang merangkai sifat iteratif dari prototipe dengan cara kontrol dan aspek sistematis dari model sekuensial linier. Model ini berpotensi untuk pengembangan versi pertambahan software secara cepat. Di dalam model spiral, software dikembangkan di dalam suatu deretan pertambahan. Selama awal iterasi, rilis inkremental bisa merupakan sebuah model atau prototipe kertas. Selama iterasi berikutnya, sedikit demi sedikit dihasilkan versi sistem rekayasa yang lebih lengkap.
Gambar . Model Spiral yang disesuaikan dengan sikus hidup bagian dalam
Kekurangan model spiral adalah sulitnya untuk meyakinkan konsumen (khusunya dalam situasi kontrak) bahwa pendekatan evolusioner bisa dikontrol. Model spiral memerlukan keahlian penaksiran risiko yang msuk akal , dan sangat bertumpu pada keakhlian ini untuk mencapai keberhasilan. Jika resiko mayor tidak ditemukan dan diatur, pasti akan terjadi masalah. Akhirnya model itu sendiri masih baru dan belum dipergunakan secara luas seperti paradigma sekuensial dan prototipe.
E. PHASED DEVELOPMENT
Phased Development membagi sistem secara keseluruhan menjadi beberapa versi sistem. Setelah desain untuk versi pertama selesai maka akan dilanjutkan ke implementasi. Setelah versi pertama terselesaikan, maka pengembang akan memulai lagi ke versi selanjutnya.
F. COMPONENT BASE SOFTWARE DEVELOPMENT
G. INCRIMENTAL
Model incremental (Incremental waterfall model) merupakan perbaikan dari model waterfall dan sebagai standar pendekatan topdown. Ide dasar dari model ini adalah membangun software secara meningkat (increment) berdasarkan kemampuan fungsional. Model incremental ini diaplikasikan pada sistem pakar dengan penambahan rules yang mengakibatkan bertambahnya kemampuan fungsional sistem. Keuntungan dari model ini adalah bahwa penambahan kemampuan fungsional akan lebih mudah diuji, diverifikasi, dan
divalidasi dan dapat menurunkan biaya yang dikeluarkan untuk memperbaiki sistem. Model incremental merupakan model continousrapid prototype dengan durasi yang diperpanjang hingga akhir prosespengembangan. Pada model prototipe biasa, prototipe hanya dibuat
pada tahap awal untuk mendapatkan kebutuhan user.
โข Incremental : produk finalnya dibuat sebagai komponen-komponen yang terpisah. Desain produk finalnya secara keseluruhan hanya ada satu, tetapi dibagi-bagi dalam komponen-komponen lebih kecil yang terpisah (independent).
Gambar .Prototype Model Incremental
H. FAST
FAST atau Framework for the Applications of System Technology mendefinisikan tahapan untuk mengidentifikasi dan mengevaluasi permasalahan-permasalahan, kesempatan-kesempatan, hambatan-hambatan yang terjadi, dan kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan-perbaikan. Tahapan pada FAST berdasarkan pada permasalahan dan kesempatan yang dihadapi dengan peningkatan-peningkatan yang diharapkan dari sistem yang dikembangkan.
FAST sendiri berkaitan erat dengan analisis dan desain sistem melalui cara PIECES (Performance, Information, Economics, Control, Efficiency, dan Service). PIECES membantu metode FAST pada tahap analisis masalah dan kebutuhan sistem, meliputi:
โข Performance (kinerja), peningkatan terhadap kinerja sistem yang baru sehingga menjadi lebih efektif diukur dari jumlah pekerjaan yang dapat dilakukan pada saat tertentu (throughput) dan response time.
โข Information (informasi), peningkatan terhadap kualitas informasi yang disajikan.
โข Economics (ekonomi), peningkatan terhadap manfaat-manfaat atau keuntungan atau penurunan biaya yang terjadi.
โข Control (pengendalian), peningkatan terhadap pengendalian untuk mendeteksi dan memperbaiki kesalahan derta kecurangan yang akan terjadi.
โข Efficiency (efisiensi), peningkatan terhadap efisiensi operasi.
โข Service (pelayanan), peningkatan terhadap pelayanan yang diberikan oleh sistem.
I. MODEL RAPID APLICATION DEVELOPMENT (RAD)
Rapin 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 modelling
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.
Gambar 4. Model RAD
Kekurangan model RAD adalah :
1. Bagi proyek yang besar tetapi berskala, RAD memerlukan sumber daya manusia yang memadai untuk menciptakan jumlah tim RAD yang baik.
2. 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.
J. RUP
โข Definisi RUP
RUP merupakan suatu metode rekayasa perangkat lunak yang dikembangkan dengan mengumpulkan berbagai best practises yang terdapat dalam industri pengembangan perangkat lunak. Seperti yang udah dibahas di atas, RUP dikembangkan oleh perusahaan Rational Software. RUP menggunakan konsep object oriented, dengan aktifitas yang berfokus pada pengembangan model dengan menggunakan Unified Model Language (UML).
Sekedar tambahan, dalam Wikipedia disebutkan bahwa cara kerja RUP itu didasarkan pada 6 kunci prinsip bagi perkembangan bisnis yang terkendali yaitu :
1. Mengadaptasi proses
2. Menyeimbangkan prioritas dari para stakeholders
3. Melakukan kolaborasi antar tim
4. Mendemonstrasikan hasil-hasil yang ada secara berulang-ulang
5. Menaikkan level abtraksi dari sebuah software
6. Memfokuskan pada kualitas secara terus-menerus
โข Keuntungan Menggunakan RUP:
๏ Menyediakan akses yang mudah terhadap pengetahuan dasar bagi anggota tim.
๏ Menyediakan petunjuk bagaimana menggunakan UML secara efektif.
๏ Mendukung proses pengulangan dalam pengembangan software.
๏ Memungkinkan adanya penambahan-penambahan pada proses.
๏ Memungkinkan untuk secara sistematis mengontrol perubahan-perubahan yang terjadi pada software selama proses pengembangannya.
๏ Memungkinkan untuk menjalankan test case dengan menggunakan Rational Test Manager Tool