Jumat, 26 Desember 2008

...prototype...

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. Meskipun prototyping dapat digunakan sebagai model proses berdiri sendiri (standalone), namun lebih sering digunakan sebagai teknik yang diimplementasikan bersama dengan model-model yang lain. Tanpa memperhatikan cara bagaimana model ini dipakai, paradigma prototyping membantu pengembang dan pengguna untuk memiliki pemahaman yang lebih baik tentang apa yang akan dibangun ketika kebutuhan yang diinginkan tidak diuraikan secara jelas.
Paradigma prototyping diawali dengan komunikasi. Pengembang dan pengguna bertemu dan mendefinisikan sasaran-sasaran menyeluruh dari perangkat lunak yang akan dibangun, mengidentifikasi kebutuhan apa saja yang diinginkan. Iterasi prototyping direncanakan secara cepat, demikian juga pemodelan dalam bentuk rancangan segera dibuat. Perancangan yang cepat berfokus pada penggambaran aspek-aspek perangkat lunak yang akan dilihat oleh pengguna, seperti tampilan antarmuka pengguna dengan sistem, atau format tampilan output. Rancangan yang cepat ini akan membawa ke arah pembuatan program (konstruksi) dari prototype. Prototype diserahkan dan dievaluasi oleh pengguna. Umpan balik dari pengguna digunakan untuk memperbaiki kriteria kebutuhan perangkat lunak. Hal ini dilakukan berulang-ulang dimana prototype disesuaikan untuk memenuhi kebutuhan pengguna, sementara pada saat yang sama pengembang memiliki pemahaman yang lebih baik mengenai apa yang diinginkan pengguna untuk dipenuhi.

Secara ideal, prototype adalah suatu mekanisme Untuk mengidentifikasi kebutuhan dari perangkat lunak yang akan dihasilkan. Pada saat prototype ini dikembangkan, pengembang berusaha menggunakan program atau took yang ada, seperti report generator, windows manager, yang memungkinkan prototype dibuat secara cepat. Prototype berlaku sebagai sistem pengenal, bukan sebagai system yang benar-benar dihasilkan untuk dioperasionalkan. Adalah benar bahwa banyak pengguna dan pengembang yang menyukai model prototyping. Pengguna dapat merasakan sistem yang akan diwujudkan, dan pengembangan dapat membangun sesuatu dengan segera. Proses pada model prototyping yang digambarkan pada gambar , bisa dijelaskan sebagai berikut:
1. 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
2. Perancangan : perancangan dilakukan cepat dan rancangan mewakili semua aspek software yang diketahui, dan rancangan ini menjadi dasar pembuatan prototype.
3. 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:
a. 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.
b. 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.
c. Pengguna melihat bahwa apa yang muncul dan dilihat dari prototype adalah perangkat lunak yang akan dioperasionalkan. Pengguna tidak menyadari bahwa prototype tersebut belum dibangun dengan memperhatikan kualitas perangkat lunak beserta maintainabilitasnya. Jika disampaikan bahwa produk yang akan dioperasionalkan harus dibangun ulang sehingga produk memiliki kualitas tinggi dan dapat dipelihara dengan baik, maka pengguna mengeluh dan bahkan meminta beberapa perbaikan untuk turut diterapkan dalam sistem yang akan dioperasionalkan.
Meskipun permasalahan ada, prototyping dapat menjadi model yang efektif untuk rekayasa perangkat lunak. Kuncinya adalah aturan permainan harus dijelaskan di awal proyek, bahwa pengembang dan pengguna harus memiliki kesepahaman bahwa prototype dibuat sebagai sarana untuk mendefinisikan kebutuhan. Sedangkan perangkat lunak sesungguhnya dibangun dengan berdasarkan kualitas.