プロトタイピングの両方の方法は、完全に理解していないシステムの側面がある場合に使用されます。ただし、重要な違いは、使用するライフサイクル方法論です。進化的プロトタイピングでは、通常、システムのいくつかの側面を理解し、他の側面については確信が持てません。使い捨てプロトタイピングでは、実稼働対応システムを構築する前に完了する必要があるという一般的な理解が不足しています。
使い捨てのプロトタイピングには多くの種類があり、どちらもシステム全体に限定されないことに注意してください。たとえば、ユーザーインターフェイスの紙またはホワイトボードスケッチを使用することは、使い捨てのプロトタイピングと見なすことができます。はい、何度も繰り返して前の設計を破棄することもできますが、システムで最終的なプロトタイプを使用することもありません(物理的には不可能です)。
一般的なソフトウェアエンジニアリングのトピックとSEの幅に興味がある場合は、引用したSommervilleの本を取り上げることを強くお勧めします。幅広いトピックをカバーするのに非常に便利です。プロセスモデルと方法論、およびそれらをさまざまなプロジェクトに適用する方法にもっと興味がある場合は、McConnellの本をお勧めします。この章には、進化的プロトタイピング専用の章全体と、使い捨てプロトタイピング専用の章があります。
また、ソフトウェアプロトタイプに関するウィキペディアの記事を一目見ました。その一部は少し奇妙です(少なくとも私のクイックリードでは)が、私がまったく反対するものはないようです。特定の側面に焦点を合わせているものもありますが、実際に間違っているわけではありません。私は以下の定義を好みますが、さまざまなタイプのプロトタイピングに関する興味深い読み物になるかもしれません。
進化的プロトタイピング
プロセスの目的が顧客と協力して要件を調査し、最終的なシステムを提供することである探索的開発。開発は、システムの理解されている部分から始まります。システムは、顧客が提案する新しい機能を追加することにより進化します。(サマービル:ソフトウェアエンジニアリング、第8版)
進化的プロトタイピングは、エンドユーザーおよび顧客のフィードバックに応じて容易に変更できるように、システムを段階的に開発するライフサイクルモデルです。ほとんどの進化的プロトタイピングの取り組みは、ユーザーインターフェイスのプロトタイピングから始まり、それから完成したシステムを進化させますが、プロトタイピングはリスクの高い領域から始めることができます。進化的プロトタイピングはスローアウェイプロトタイプと同じではありません。進化的プロトタイプを開発するかスローアウェイプロトタイプを開発するかについて正しい選択をすることが成功の鍵の1つです。他の成功の鍵には、経験豊富な開発者の使用、スケジュールと予算の予想の管理、およびプロトタイプ作成アクティビティ自体の管理が含まれます。(McConnell:迅速な開発:ワイルドソフトウェアスケジュールの調整)
使い捨てプロトタイピング:
使い捨てプロトタイピングは、進化的開発プロセスの目的が顧客の要件を理解することであり、システムのより良い要件定義を開発することです。プロトタイプは、あまり理解されていない顧客の要件の実験に集中しています。(サマービル:ソフトウェアエンジニアリング、第8版)
Throwaway Prototypingを使用すると、システムの成功に不可欠な要因を調査するためのコードが開発され、そのコードは破棄されます。プロトタイピングの実装では、プログラミング言語または開発プラクティス、あるいはその両方が、ターゲット言語とプラクティスよりもはるかに高速に使用されます。ユーザーインターフェイスは、システムの他の部分よりもはるかに一般的にプロトタイプ化されていますが、一部のシステムの他の部分もプロトタイプ化の恩恵を受けることができます。Throwaway Prototypingプラクティスを要件仕様の補助として使用すると、DoDプロジェクトなどの従来のライフサイクルモデルに基づいたプロジェクトを高速化できます。管理レベルまたは技術レベルで開始できます。(McConnell:迅速な開発:ワイルドソフトウェアスケジュールの調整)