Kedua metode pembuatan prototipe digunakan ketika ada beberapa aspek dari sistem yang Anda tidak sepenuhnya mengerti. Namun, perbedaan utama adalah metodologi siklus hidup yang Anda gunakan. Dengan prototyping evolusioner, Anda biasanya memahami beberapa aspek sistem dan tidak yakin tentang yang lain. Dalam pembuatan prototipe sekali pakai, Anda memiliki kurangnya pemahaman umum yang perlu Anda selesaikan sebelum Anda dapat membangun sistem yang siap produksi.
Perhatikan bahwa ada banyak jenis prototipe sekali pakai, dan tidak ada yang terbatas pada keseluruhan sistem. Misalnya, menggunakan sketsa kertas atau papan tulis dari antarmuka pengguna dapat dianggap sebagai prototipe yang dibuang. Ya, Anda mungkin melalui beberapa iterasi dan membuang desain sebelumnya, tetapi Anda juga tidak akan menggunakan prototipe terakhir dalam sistem (itu secara fisik tidak mungkin, untuk satu).
Jika Anda tertarik pada topik rekayasa perangkat lunak umum dan luasnya SE, saya sangat menyarankan untuk mengambil buku Sommerville yang saya kutip. Sangat bagus untuk meliput topik yang luas. Jika Anda lebih tertarik pada model proses dan metodologi dan bagaimana Anda dapat menerapkannya pada berbagai proyek, saya akan merekomendasikan buku McConnell - buku ini memiliki seluruh bab yang ditujukan untuk prototipe evolusi dan bab lain yang dikhususkan untuk prototipe yang dibuang.
Saya juga melihat sekilas artikel Wikipedia tentang prototipe perangkat lunak . Beberapa bagiannya agak aneh (setidaknya pada bacaan cepat saya), tetapi tampaknya tidak ada sesuatu yang saya benar-benar tidak setuju. Beberapa di antaranya sedikit terfokus pada satu aspek tertentu, tetapi sebenarnya tidak salah kalau saya lihat. Saya lebih suka definisi di bawah ini, tetapi mungkin bacaan yang menarik tentang berbagai jenis prototipe.
Prototipe Evolusi
Pengembangan eksplorasi di mana tujuan proses adalah untuk bekerja dengan pelanggan untuk mengeksplorasi persyaratan mereka dan memberikan sistem akhir. Pengembangan dimulai dengan bagian-bagian sistem yang dipahami. Sistem berkembang dengan menambahkan fitur-fitur baru yang diusulkan oleh pelanggan. (Sommerville: Rekayasa Perangkat Lunak, Edisi 8)
Evolutionary Prototyping adalah model siklus hidup di mana sistem dikembangkan secara bertahap sehingga dapat dengan mudah diubah dalam menanggapi umpan balik pengguna dan pelanggan. Sebagian besar upaya prototyping evolusi dimulai dengan membuat prototipe antarmuka pengguna dan kemudian mengembangkan sistem yang sudah selesai dari itu, tetapi prototipe dapat dimulai dengan area berisiko tinggi apa pun. Evolutionary Prototyping tidak sama dengan Prototyping Throwaway, dan membuat pilihan yang tepat tentang apakah akan mengembangkan prototipe evolusi atau prototipe sekali pakai adalah salah satu kunci keberhasilan. Kunci sukses lainnya termasuk menggunakan pengembang yang berpengalaman, mengatur jadwal dan harapan anggaran, dan mengelola aktivitas pembuatan prototip itu sendiri. (McConnell: Pengembangan Cepat: Menjadwalkan Jadwal Perangkat Lunak Liar)
Prototyping Throwaway:
Throwaway prototyping adalah tempat tujuan dari proses pengembangan evolusi adalah untuk memahami kebutuhan pelanggan dan karenanya mengembangkan definisi persyaratan yang lebih baik untuk sistem. Prototipe berkonsentrasi pada percobaan dengan persyaratan pelanggan yang kurang dipahami. (Sommerville: Rekayasa Perangkat Lunak, Edisi 8)
Dengan Throwaway Prototyping, kode dikembangkan untuk mengeksplorasi faktor-faktor penting bagi keberhasilan sistem, dan kemudian kode itu dibuang. Implementasi prototyping menggunakan bahasa pemrograman atau praktik pengembangan atau keduanya yang jauh lebih cepat daripada bahasa dan praktik target. Antarmuka pengguna prototipe jauh lebih umum daripada bagian lain dari sistem, tetapi bagian lain dari beberapa sistem juga dapat memperoleh manfaat dari prototipe. Ketika digunakan sebagai persyaratan bantuan spesifikasi, praktik Prototyping Throwaway dapat mempercepat proyek berdasarkan model siklus hidup tradisional, seperti proyek DoD. Ini dapat dimulai pada level manajemen atau teknis. (McConnell: Pengembangan Cepat: Menjadwalkan Jadwal Perangkat Lunak Liar)