ソフトウエア・ファクトリーにはライフサイクルがある。一つのライフサイクルは,複数のステージで構成される(図8)。ソフトウエアの開発・保守事業経営責任者が,ソフトウエア・ファクトリーを十分理解し,過去に蓄積された実績を駆使できるソフトウエア・ファクトリーを構築・実践すれば,十分な成功ビジネスを期待できそうなアプリケーション領域は必ずある。ソフトウエア・ファクトリーのライフサイクルは,それに気づく段階から始動する。
各ステージの中で実施するプロセスはISO/IEC FCD 12207 Software Life Cycle Processesに準拠している。国際標準を順守することによって,ソフトウエア・ファクトリーの国際化,例えばコック・チームのオフショア・アウトソーシングが可能になる。
図8●ソフトウエア・ファクトリーのライフサイクル |
図8は,筆者の経験を反映したものである。第1ステージの開始点は1960年。現在までに,世代交代が4回行われた。世代の交代は,ハードウエア,OS,ミドルウェアが進歩するためにやむを得ず実施される。世代交代の機会を捉えて,アプリケーション領域の拡張も,必要に応じて実施される。図8の例は,比較的大きなシステムを対象にしている。世代の寿命は,対象とするシステムの特性によって決まる。
第1ステージ(ドメイン調査・分析):
シェフ・チームは,既に製品出荷が終わった複数のプロジェクトの開発プロセスを同定・計量・分析する。それによって,共通性をもったプロジェクト群を識別し,アプリケーション領域の範囲を決める。その結果をドメインとする。
・第2ステージ(ドメイン設計):
シェフ・チームは,ドメインのもつ特徴,能力,概念,機能,開発・保守プロセスを識別し,それらを共通(固定)部分と可変部分に分けて体系的に示す「ドメイン・アーキテクチャ」を作成する。次に,ドメイン・アーキテクチャを実現するためのソリューションを設計する。ソリューションを実現するために必要な構成要素を,過去の蓄積遺産を利用して開発し,それらを再利用できるように加工し,資産化する。
・第3ステージ(資産登録 Asset Provision):
シェフ・チームは,機能要求をパラメータとするプロダクト・ラインを構築する。マクドナルド社販売店の調理プロセスラインのように,標準化できるプロセスの連携スキーマが形成できる場合には,非機能要求をパラメータとするプロセスラインも構築する。
・第4ステージ(ソフトウエア・ファクトリーの実働,コック・チームによる受注開発・保守,シェフ・チームによるコック・チームに対する資産提供,資産利用支援,資産管理・改善・保守):
この段階から,コック・チームは,新しい受注を,登録された資産を利用して開発・保守するようになる。このステージでは,シェフ・チームは,コック・チームに対する資産利用指導・支援を行うとともに,資産再利用率を常に監視し,再利用率が期待値に達しない場合には,資産の増補・改善・保守を行う。
・第5ステージ(ライフサイクル更改処理):
一般にシステム系プラットフォームは,技術革新が激しいため,短い周期で変化する。また,アプリケーション開発技術の改廃も頻繁に行われる。従って,ソフトウエア・ファクトリーも,ある期間(通常は5年以上,10年未満)を経ると,全面的に見直す必要が起きる。ライフサイクルの終期においては,現存のソフトウエア・ファクトリーを運用しながら,第1ステージに戻って資産およびファクトリ・マネジメントを見直し,新しいライフサイクルへ向けての準備を行い,切り替えを実行する。
第4ステージ以降のソフトウエア・ファクトリー運用に当たっては,常に投資回収率を監視し,第4ステージで得るキャシュフローによって,第1から第3ステージまでに投じた初期投資を回収するようにしなければならない。
5回にわたってソフトウエア・ファクトリーについて解説してきた。次の言葉で締めくくりたい。
・ソフトウエア・ファクトリーは,アプリケーション領域,プロダクト,プロセスが持つ共通性を洞察し,それを抽出して可視化し,再利用可能にし,事業化する能力をもった事業家の存在によって成功する。
・ソフトウエア・ファクトリーでは,三つの役割,すなわちシェフの役割,コックの役割,素材提供者の役割を区別して管理することが必要である。
・優れたシェフを確保・育成すること,品質・生産性意欲をもつコックを育てること,優れた素材提供者の協力を幅広く求めることが成功への鍵である。
・シェフによってコモディティ化されたプロダクト(コックが開発・保守できるようにプロセスが定番化されたプロダクト)は,できるだけサービス化する。
コック,素材提供者は,(オフショア)アウトソーシングしてもよいが,シェフをアウトソーシングすることは,長期的視点から,十分検討する必要がある。
|