ソフトウェア・プロダクトライン ~「製品開発」から「製品群開発」へ
株式会社エクスモーション
シニアコンサルタント 山内 和幸
1.従来の派生開発の問題点
製品ファミリに搭載されるソフトウェアの開発は、過去に開発したものをベースに新製品を開発する、すなわち派生開発が通常です。特に製品の種類が多く、同時期に多くの異なった製品をリリースするような製品ファミリでは、各製品の開発が並行して実施されることも少なくありません。これを、ソフトウェアの構成管理の視点で表現すると、下図のようになります。
図 1:従来の派生開発における構成管理
この場合、次のような問題が起こります。
- 複数の製品に同じ機能を追加する場合、各バージョンに対して作業が必要
- ある製品で障害が発生した場合、そのベースになっている全製品に対して修正が必要
つまり、複数のバージョンに対して同一の作業をしなければならなくなり、「ムダ」が発生します。特に、バージョンが上がるにつれてソフトウェアの構造(アーキテクチャ)が無秩序に変わっているほど、ムダは大きくなります。派生の数が増えるにつれてメンテナンス対象も増加し、対応漏れ等による品質低下のリスクも増大します。
このような問題を回避するために、ソフトウェアの再利用を前提とした製品開発を実施しているケースも多くあります。これは、製品間で共通となる資産をソフトウェア部品として開発し、再利用するというものです。その考え方自体は良いのですが、実情は下図のようになっています。
図 2:従来の再利用開発における構成管理
つまり、ソフトウェアは部品として資産化されているものの、バージョン間での互換性はなく、ある製品を構築する際には特定のバージョンが必要になります。この場合も、基本的に先の例と同様の問題が発生します(単に派生の数が少ないだけと言えます)。