web-dev-qa-db-ja.com

使い捨てプロトタイプと進化的プロトタイプの違いは何ですか?

プロトタイピングのさまざまな方法についてのメモがあり、インターネットでいくつかの定義を見つけましたが、学んだことを確認したいと思います。

使い捨てプロトタイピングは仕様の概要から開発され、クライアントがその機能に満足するまでさまざまなプロトタイプが提供および変更されることを理解しています。

一方、進化的プロトタイプは、エンドユーザーから収集された基本的な要件から構築されます。最初のプロトタイプがユーザーに提示され、評価されます。プロトタイプは、クライアントが満足するまでフィードバックに基づいて変更されます。

これは正しいです?使い捨ておよび進化的プロトタイピングのより良い定義はありますか?

12
Mifas

完全に理解していないシステムの側面がある場合、両方のプロトタイピング方法が使用されます。ただし、主な違いは、使用するライフサイクル方法です。進化的プロトタイピングを使用すると、通常、システムのいくつかの側面を理解し、他の側面については確信が持てません。使い捨てプロトタイピングでは、本番環境に対応するシステムを構築する前に完了する必要があるという理解が一般的に不足しています。

使い捨てプロトタイピングには多くの種類があり、どちらもシステム全体に限定されないことに注意してください。たとえば、ユーザーインターフェイスの紙やホワイトボードのスケッチを使用すると、使い捨てプロトタイピングと見なすことができます。はい、何度か繰り返して以前の設計を破棄することもできますが、システムで最終プロトタイプを使用することはありません(物理的には不可能です)。

ソフトウェアエンジニアリングの一般的なトピックやSEの幅広さに興味がある場合は、引用するSommervilleの本を入手することを強くお勧めします。幅広いトピックをカバーするのにとても良いです。プロセスモデルと方法論にさらに興味があり、さまざまなプロジェクトにそれらをどのように適用できるかについては、マックコンネルの本をお勧めします。

ソフトウェアのプロトタイピングに関するWikipediaの記事 もざっと見ました。その一部は少し奇妙ですが(少なくとも私のクイックリードでは)、私がまったく同意しないものは何もないようです。一部は特定の側面に少し焦点を当てていますが、私が見ているのは事実上間違っていません。私は以下の定義を好みますが、さまざまなタイプのプロトタイピングについて興味深い読みになるかもしれません。


進化的プロトタイピング

プロセスの目的がお客様と協力して要件を調査し、最終的なシステムを提供することを目的とした探索的開発。開発は、システムの理解されている部分から始まります。システムは、お客様から提案された新機能を追加することで進化します。 (Sommerville:ソフトウェアエンジニアリング、第8版)


進化的プロトタイピングは、システムが段階的に開発されるライフサイクルモデルであり、エンドユーザーや顧客のフィードバックに応じて簡単に変更できます。ほとんどの革新的なプロトタイピングの取り組みは、ユーザーインターフェイスのプロトタイピングから始まり、そこから完成したシステムを進化させますが、プロトタイピングはリスクの高い領域から始めることができます。進化的プロトタイピングは使い捨てプロトタイピングと同じではありません。進化的プロトタイプと使い捨てプロトタイプのどちらを開発するかについて正しい選択をすることが成功への鍵の1つです。成功への他の鍵には、経験豊富な開発者の使用、スケジュールと予算の期待の管理、プロトタイピング活動自体の管理が含まれます。 (McConnell:Rapid Development:Taming Wild Software Schedules)


使い捨てプロトタイピング:

使い捨てプロトタイピングでは、進化的開発プロセスの目的は、顧客の要件を理解し、システムのより適切な要件定義を開発することです。プロトタイプは、よく理解されていない顧客の要求を試すことに集中しています。 (Sommerville:ソフトウェアエンジニアリング、第8版)


使い捨てプロトタイピングでは、システムの成功に不可欠な要素を調査するためにコードが開発され、そのコードは破棄されます。プロトタイピングの実装では、ターゲット言語や手法よりもはるかに高速なプログラミング言語または開発手法、あるいはその両方を使用します。ユーザーインターフェイスは、システムの他の部分よりもはるかに一般的にプロトタイプ化されていますが、一部のシステムの他の部分もプロトタイプ化することでメリットを得られます。要件特定の補助として使用する場合、使い捨てプロトタイピングプラクティスは、DoDプロジェクトなどの従来のライフサイクルモデルに基づいてプロジェクトを加速できます。管理レベルまたは技術レベルで開始できます。 (McConnell:Rapid Development:Taming Wild Software Schedules)

11
Thomas Owens