Обидва способи прототипування використовуються, коли є якийсь аспект системи, який ви не зовсім розумієте. Однак ключовою відмінністю є методологія життєвого циклу, яку ви використовуєте. За допомогою еволюційного прототипування ви зазвичай розумієте деякі аспекти системи та не впевнені в інших. У процесі викидання прототипів у вас є загальне нерозуміння того, що вам потрібно виконати, перш ніж ви зможете побудувати готову до виробництва систему.
Зауважте, що існує багато видів прототипування, що викидається, і жодна з них не обмежується всією системою. Наприклад, використання ескізів на папері або дошці користувальницького інтерфейсу можна вважати вичерпним прототипуванням. Так, ви можете пройти кілька ітерацій і викинути попередній дизайн, але ви також не будете використовувати остаточний прототип в системі (фізично це неможливо для одного).
Якщо вас цікавлять загальні теми програмної інженерії та широта SE, я б радимо підібрати книгу Соммервілла, яку я цитую. Це дійсно добре для висвітлення широти тем. Якщо вас більше цікавлять моделі технологій та методології та як ви можете застосувати їх до різних проектів, я рекомендую книгу МакКоннелла - в ній є ціла глава, присвячена еволюційному прототипуванню та ще одна глава, присвячена викидній прототипуванню.
Я також швидко поглянув на статтю у Вікіпедії про прототипування програмного забезпечення . Деякі його частини трохи дивні (принаймні, на моєму швидкому читанні), але, здається, немає нічого, з чим я прямо не згоден. Деякі з них трохи зосереджені на одному конкретному аспекті, але це фактично не так, як я бачу. Я віддаю перевагу визначенням нижче, але це може бути цікавим читанням про різні типи прототипування.
Еволюційне прототипування
Розвідувальна розробка, де метою процесу є робота з замовником, щоб вивчити його вимоги та поставити остаточну систему. Розробка починається з частин системи, які розуміються. Система розвивається шляхом додавання нових функцій, запропонованих замовником. (Соммервілл: Програмне забезпечення, 8-е видання)
Еволюційне прототипування - це модель життєвого циклу, в якій система розробляється з кроком, щоб її можна було легко змінювати у відповідь на відгуки кінцевих споживачів та споживачів. Більшість зусиль з еволюційного прототипування починаються з прототипування користувальницького інтерфейсу, а потім еволюціонування завершеної системи з цього, але прототипування може починатися з будь-якої області високого ризику. Еволюційне прототипування - це не те саме, як Throwaway Prototyping, і правильний вибір щодо розробки еволюційного прототипу чи прототипу, що викидається, є одним із ключів до успіху. Інші ключі до успіху включають використання досвідчених розробників, керування розкладом і очікуванням бюджету, а також управління самою діяльністю прототипування. (McConnell: Швидка розробка: приборкання диких програм програм)
Прототип прототипу:
Поглиблене прототипування полягає в тому, що метою процесу еволюційного розвитку є розуміння вимог замовника і, отже, розробка кращого визначення вимог до системи. Прототип зосереджений на експерименті із вимогами замовника, які недостатньо вивчені. (Соммервілл: Програмне забезпечення, 8-е видання)
Завдяки прототипуванню Throwaway розробляється код для дослідження факторів, що мають важливе значення для успіху системи, а потім цей код викидається. Реалізація прототипування використовує мови програмування або практики розробки або обидві, які набагато швидші, ніж цільова мова та практики. Користувацький інтерфейс прототипується набагато частіше, ніж будь-яка інша частина системи, але інші частини деяких систем також можуть отримати користь від прототипу. Використовуючись як допомога щодо специфікації вимог, практика прототипування потоків може прискорити проекти, засновані на традиційних моделях життєвого циклу, таких як DoD-проекти. Вона може бути ініційована або на управлінському, або на технічному рівні. (McConnell: Швидка розробка: приборкання диких програм програм)