Software Factories(SF)とSoftware Product Line(SPL)の関係

最近気になって調査しだしたSFとSPL

ちょっとSFとSPLの関係が最初よくわからなかった.調査による個人的な結論は,「SFは,SPLを主要な開発方法論として採用し具体化した.さらに開発方法論以外にもツールや言語やノウハウやフレームワークやいろいろ取り入れて,すべてを具体化して「開発のすべて」として提唱されたもの」ということだ.つまり,なんかこんな感じ.

public class SoftwareFactories {
    private DevelopMethod dm = (DevelopMethod)new SPL(なんか);
    private DevelopEnvironment = (DevelopEnvironment) new VisualStudio(2007?);
    private Framework = (Framework ) new DotNetFramework (3.0);
}

要するにSFはSPLを具体化して含んでいるということなのだ.含んでいる感じは,「工場がラインを含んでいるのは当たり前」と説明すると皆納得してもらえるのだが,まあそういうことだ.
という,前ふりはさておき,MSDNの中のblogから
Software Factories のポイント

Software Factoriesは開発環境と開発プロセス、それを支援するアーキテクチャなどの開発資産を合わせた開発基盤技術です。開発方法論というと、開発手順、成果物、開発組織を決定するので、Software Factoriesは開発方法論を含んでいると言えるのですが、特定の開発方法論を決めないでその枠組みだけを決めている点で、開発方法論ではありません。

認識はあっていたようだ.よかった.ついでに言うとSFのポイントというところで,

2つ目は、再利用のためのコストです。生産性の改善には再利用が不可欠です。が、再利用可能な資産を利用することで得られるコスト削減と、再利用資産を開発するために費やす余計なコストがあります。いままでは、このコストを正当化するための方法がありませんでした。これを「特性」というモデルで評価します。特性は、簡単にいえば、可変性の単位となる仕様です。

 という記述が目を引いた. つまりSPLの観点で言うと,開発形態のSPL化によってどの程度開発者にとってお得になるのかを見積もれなければならず,それは非常に難しいテーマであることが認識されている.これは,多品種システムならどれだけの品種作るのか,進化型システムならどれだけの頻度で機能が追加されていくかによる.それを制御できなくてはお得でない可能性もある.ただ,ボトムラインをラフに見積もる上で,フィーチャモデルの可変部の数とかを材料にするのはありかなあと思いました.

 全然関係ないが,マイクロソフトが基本的に全部入りが好きだってのは,以前仕事でMS環境べったりな人が言っていた「Javaなんか面倒ですよ,言語から,実行環境からライブラリからフレームワークから開発ツールやら,いろいろダウンロードかきあつめてこなければならないし. MS環境だったら,MSDNのDVDにすべてが入っていますよ」という言葉を思い出した.確かに一理ある.