ソフトウェアプロトタイピング
何らかの機能を開発する計画が立てられ、想定していたものと似たものが提供される。
進化的プロトタイピングは、それが実際に機能するシステムであるという点で使い捨て型プロトタイピングよりも優れている。しかし、それにはユーザーが計画した機能が全て実装されているわけではなく、最終的なシステムが提供されるまでの暫定システムとなるだろう。
「プロトタイピング環境では、最初のプロトタイプをユーザーが実業務に使うことは珍しくない...ユーザーは欠陥のあるシステムでも何もないよりましと判断するのだろう」
進化的プロトタイピングでは、開発者はシステム全体を一気に開発するのではなく、理解している部分から先に開発することに注力できる。
リスクを最小にするため、開発者は理解が不足している機能は実装しない。部分的に実装されたシステムが顧客側に渡される。ユーザーはそのシステムをしばらく使い、その間に新たな要求が見つかり、それが開発者に伝えられる。開発者はその改善点を要求仕様に加え、設計を更新し、再コーディングと再テストを行う。
プロトタイピングの手法がいくつか存在する。多くのアジャイル的手法もプロトタイピング技法に基づいている。
アーキテクチャは、サービスとその実装をカプセル化する抽象インタフェースとして定義される。アーキテクチャは複数の実際のシステム開発をガイドするテンプレートとして働く。複数のアプリケーション・コンポーネントを使ってサービスを実装するためにもアーキテクチャが重要である。変更されにくい中核的機能群も特定され確立される。
ERDプロセスでは、機能の実演を行うことで関係者との対話を図りニーズや期待を引き出す。このための迅速な提供を可能にするためにタイムボックス管理が行われる。タイムボックスとは固定の期間を意味し、ある作業(例えば、ある機能群の開発)をその期間内に必ず完了させなければならない。漠然とした目標群を達成するために期間を必要に応じて延長可能にするのではなく、期間を固定し(週数だったり、人Hのような工数)、その期間内で完了することが現実的と思われる作業を割り当てる。運に任せるような開発状況に陥らないように、長期の計画はタイムボックス単位の反復をガイドするよう定義される。このような計画によってシステム全体の見通しが立ち、プロジェクトの条件が明確化する。
アーキテクチャが確立すると、ソフトウェアの組み立てとテストが毎日行われる。これによりチームは客観的に進捗を評価でき、潜在する問題を迅速に発見することが可能となる。一度に新たに統合される部分はごく小さいので、問題を発見して対処することは迅速に行われる。システムは基本的に常に動作可能であるため、ユーザーへの実演は必要に応じて即座に実施可能である。
プロトタイピングはユーザーの関与を必要とし、ユーザーの関与によってよりよいフィードバックと要求が得られる。ユーザーがプロトタイプを評価することにより、誤解と対話不足を解消する。ユーザーはシステムの対象とする分野の専門知識があり、対話が増えることで最終的な製品の使い易さや実用性が向上する。最終製品はユーザーの求めていた見た目や使い勝手や性能をよりよく実現している。