ソフトウェア・プロダクトライン ~「製品開発」から「製品群開発」へ
株式会社エクスモーション
シニアコンサルタント 山内 和幸
2.ソフトウェア・プロダクトラインとは?
前述の問題を解決するための方法として、ソフトウェア・プロダクトライン(Software Product Line : SPL)があります。SPLでは、製品ファミリに属する各製品で再利用される資産を開発するドメイン・エンジニアリング(domain engineering)と、開発された資産を利用して個々の製品を開発するアプリケーション・エンジニアリング(application engineering)という、2層型の開発を行います。ドメイン・エンジニアリングで開発される資産は、コア資産(core asset)と呼ばれます。また、アプリケーション・エンジニアリング実施時に発生したコア資産の改善要求は、ドメイン・エンジニアリングへフィードバックされ、これを受けてコア資産の更新が行われます。
図 3:SPL開発の概観
SPLの基本的な枠組みは上記のとおりですが、この時点で従来型の再利用と同じではないか、単に専門用語を並べただけと感じる方も多いでしょう。実際、従来型の再利用と全く異なるわけではなく、多くの点で似通った部分があります。それに加えてSPLでは、従来型の再利用では解決できなかった問題を解決するために、様々な要素が加えられています。 本稿では、SPLの象徴とも言える2つの要素「スコーピング」と「可変性管理」を中心に、SPLが従来の派生開発/再利用開発とどう違うのか、そして前述の問題をどのように解決するのかについて説明します。
3.SPLのキー要素(1):スコーピング
製品ファミリの開発は、追加/変更/修正の連続です。その寿命を終えて開発終了となるまで、延々と続いていきます。このような状況の中で、開発した資産を長期に渡って再利用できるようにするには、「将来の変化を予測して、その変化に対応しやすいように設計する」必要があります。この変化にどこまで対応するかの範囲を決めることをスコーピング(scoping)と言い、その範囲をスコープ(scope)と言います。
SPLの適用において、スコープを適切に定めることは重要です。一般的に、スコープが狭いと、その資産を利用して開発できる製品数が少なくなり、再利用機会が減ってしまいます。一方、製品数が少ないということは製品間の違いも多くないため、より製品に適した使いやすい資産が揃えられます。逆にスコープが広いと、製品ファミリに含まれる製品が増えるため、同一資産の再利用機会は増えます。しかし、製品間の差異も多様になり、資産が抽象的なものになってくるため、再利用が難しくなる傾向があります。コア資産の再利用による効果、すなわち製品ファミリの開発がどれだけ最適化できるかは、このコア資産の再利用のしやすさと機会によって決まってきます。よって、このバランスが最適となるようにスコープを定義することが、SPL開発の成否を大きく左右します。
図 4:コア資産の再利用の効果