第4章 ライフサイクル知識の資産化と活用方法
4.2 ライフサイクル知識の資産化と再利用に関する要件
4.2.3 プロダクトラインエンジニアリング
4.2.3.1 ソフトウェアプロダクトラインエンジニアリング
ソフトウェアプロダクトラインエンジニアリング(Software Product Line Engineering)
は,類似したアプリケーションソフトウェア製品を効率良く開発するための開発パラダイ ムである[Paul 2005].ソフトウェアプロダクトラインは,特定の市場セグメントやミッ ションの用件を満たす,共通フィーチャー(代表的な特性)を備えたコア資産として構築 できる.これは,(1)再利用資産を開発するドメインエンジニアリングと,(2)固有のア プリケーションソフトウェアを開発するアプリケーションエンジニアリングの 2 つの開発 プロセスから成る(図 4-1).ドメインエンジニアリングとは,ドメイン知識を整理して,
共通利用できる再利用資産を開発するアクティビティ(開発者の活動)である.一方,ア プリケーションエンジニアリングとは,具体的な要求に基づき,これらの資産を利用して ソフトウェア製品の開発を行うアクティビティである.
図4-1 プロダクトライン構築[Pahl 2005(改)]
ドメインエンジニアリングおよびアプリケーションエンジニアリングは,次のタスクに よって達成される.
(1)ドメインエンジニアリング
ソフトウェアプロダクトラインの共通部分と可変部分を定義する
ソフトウェアプロダクトライン構築対象のアプリケーションの組を定義する(ソフ トウェアプロダクトラインの範囲を定義する)
目的の可変性を達成するドメインを定義し,再利用可能なアーティファクト(成果 物)を構築する
(2)アプリケーションエンジニアリング
72
プロダクトラインのアプリケーションを開発する際,再利用が可能なドメイン資産 をできるだけ多くアーカイブする
プロダクトラインアプリケーションの開発中に,ソフトウェアプロダクトラインの 共通性と可変性を利用する
アプリケーション要件,アーキテクチャ,コンポーネント,およびテストなどのア プリケーションのアーティファクト(成果物)を文書化する.そして,これらをド メインアーティファクトに関連付ける
アーキテクチャから決定される要件に沿って,可変性を,コンポーネントやテスト ケースに紐付ける
アーキテクチャ,コンポーネント,およびテスト上のアプリケーションとドメイン の要件との違いの影響を推定する
ソフトウェアプロダクトラインエンジニアリングのプラクティスでは,アプリケーショ ンエンジニアリングは対象アプリケーションの数に応じて 1 つ以上になるが,ドメインエ ンジニアリングは唯一のプロセスになる.
ドメインエンジニアリングを行う過程で,フィーチャーを構造的に表すためのモデリン グを行う.フィーチャーモデルは,ソフトウェアプロダクトライン間の共通性と可変部分 を識別する手法である.フィーチャーは検討中のシステムの機能と品質特性を記述できる.
フィーチャーモデリング手法は,フィーチャーツリーを生成する機能を階層構造に分解可 能にする.フィーチャーは,次のサブフィーチャーに分けられる.
必須フィーチャー(mandatory)
選択フィーチャー(optional)
代替フィーチャー(alternative)
これらのフィーチャーと,可変点と,可変項目の関係を図4-2に示す.必須フィーチャ ーは,共通部分と見做せる.選択フィーチャーおよび代替フィーチャーは,可変部分と見 做せる.
図4-2 フィーチャーモデリング[Pahl 2005(改)]
73
これにより,フィーチャーツリーと可変ダイアグラムは,アプリケーションソフトウェ アの構造を視覚化できる(図 4-3).このツリーでは,構成要素がオプションや選択である か可変性をモデル化している.個々の製品仕様に合わせて各可変性を決めると,対象製品 の構成に必要なフィーチャーのみのツリーが得られる.このようなステップで,製品固有 のツリーを導出し,可変性の特定と管理を行い,柔軟でかつ再利用性の高いソフトウェア 製品を設計することができる.
図4-3 フィーチャーツリーと可変ダイアグラム[Pahl 2005(改)]
4.2.3.2 ソフトウェアファクトリ
ソフトウェアファクトリは,ソフトウェアのスキーマに基づいて,ソフトウェアのテン プレートを使用して,拡張ツールを設定する.そのため,製品ファミリーのための生産設 備を提供するソフトウェアプロダクトラインエンジニアリングのアプローチを支援する基 盤と見做せる.ソフトウェアファクトリは,実証済みのパタンと実践手順をカプセル化し,
特定の目的に合った資産の統合セットを提供し,特殊な開発および実行環境を持つ.要件,
論理および技術的なアーキテクチャ,テストスイート,展開トポロジ,運用基盤,メンテ ナンス計画,移行経路,ガイドライン,コードサンプル,テンプレート,ライブラリ,モ デル,構成ファイルなど,ツール,プロセスおよびコンテンツが含まれる.これらの資産 は,サービスプロバイダによって,プロセスの分割,契約の定義,機能設定,展開,検証,
要件のトレース,および影響分析などに使用される.資産は,カスタマイズ可能であり,
テンプレートは,選択,適応,構成,組み立て,およびパラメータ化ができる.これによ り,様々な機能や運用の幅広いソフトウェアシステムを生産できるファクトリを実現して いる.
これらのソフトウェアプロダクトラインエンジニアリングとソフトウェアファクトリの アプローチは,これまでアプリケーションソフトウェアの開発に限られていた.サービス システムの生産に対応するため,システム全体の設計とリソース管理を行えるように拡張 する.
74