ソフトウェアプロトタイピング
プロトタイピングは何らかの形であらゆる場合に利用可能であると主張する人もいる。しかし、プロトタイピングはユーザーとのやりとりが多いシステムで特に有効であると言える。
オンラインシステムの分析と設計でのプロトタイピング利用が効果的であることがわかってきた。特に画面での入力を伴うトランザクション処理で顕著である。コンピュータとユーザーのやり取りが多くなると、プロトタイピングの効果が大きくなる。
バッチ処理のような計算が主体のシステムではユーザーとのやり取りが少なく、プロトタイピングの効果は小さい。システム機能を実現するためのコードが重要であり、プロトタイプで提供できることが非常に少ないのである。
プロトタイピングは特にユーザインタフェースの設計で威力を発揮する。「ラピッドプロトタイピングの最も生産的な利用法は段階的なユーザー要求定義とユーザインタフェース設計のツールとしての利用である」。
プロトタイピング開発のための開発チームを立ち上げる費用はそれなりにかかる。多くの企業は開発方法論を持っており、それを変更するには再訓練/ツール群の再構築などが必要となる。多くの企業は、なるべく費用と時間をかけないでプロトタイピング手法を使おうとする傾向がある。
プロトタイピング導入の共通な問題として、手間をかけずに生産性が劇的に上がるのではないかという過度の期待がある。プロトタイピング技法には訓練が必要であり、そのプロジェクトや組織に固有な構造の開発の必要性が見過ごされることが多い。この構造をないがしろにすると生産性は低下することが多い。
よく使われるものとして画面生成プログラムがある。これは機能は組み込まれていないが画面の見た目をユーザーに示すプロトタイプの作成に使われる。インタフェースはユーザーにとってシステムそのものであるため、ユーザインタフェースの開発は重要な部分を占めることがある。
各サイトでプロトタイプの専門家がシステムのユーザーを観察する。
ユーザーが問題に直面したり、新たな要求や機能を思いついたら、プロトタイプの専門家がそれを記録する。これによりユーザーが問題を記録する必要がなくなり、本来の業務を続けられる。
ユーザーの利用が終わると、プロトタイプの専門家はベースのコード上で使い捨て型プロトタイプを作成する。
ユーザーはその新たなシステムを使って評価する。変更が効果的でない場合、プロトタイプの専門家はそれを削除する。
ユーザーがその変更を気に入った場合、プロトタイプの専門家は機能改善要求を書いて開発チームに送る。
開発チームは各サイトから届いた機能改善要求に基づき、新たな進化的プロトタイプを作成し、従来型開発の新たなベースとする。
これを見て明らかなように、この手法の鍵となるのはよく訓練されたプロトタイプの専門家である。Operational Prototyping はユーザーからの要求が少ない複雑なシステムで有効である。
進化的システム開発(Evolutionary Systems Development)は進化的プロトタイピングの形式的実装を試みる方法論である。例えば John Crinnion が著書 "Evolutionary Systems Development" で描いた Systemscraft などがある。
Systemscraft はプロトタイプの方法論であり、実際の開発環境などに合わせて変更すべきものとされている。
Systemscraft は開発工程の厳密な規格ではない。一般によい方法論は様々な環境や状況に適用可能な柔軟性を備えている...
Systemscraftの基本は、初期の要求仕様に基づいて実働するシステムを作成し、それをベースとして一連の改版を行っていくものである。Systemscraft は従来型の分析手法を重視して、開発工程全体でそれを活用する。