フィーチャー図に関して,2つの話をします.まず1つめの話.フィーチャー図って,マーケティング担当者から開発者まで,さまざま人が関わるので,おのずとその人の立場によってフィーチャー図の役割が変わってきます.
2010-02-11 09:07:19開発者の視点では,ソースコードの ifdef などからリバースした,実際に資産中に存在する可変性を見える化する役割を,フィーチャー図に求めるかもしれません.そういう立場だと,フィーチャー図を人手で書くことの意味はなく,リバースエンジニアリングツールによって書かれるべきでしょう.
2010-02-11 09:10:48しかし,マーケティング担当者の視点だと,フィーチャー図は別の意味合いを持ちます.言ってみればスコーピングの結果である「製品や資産がどうあるべきか」を示す航海図の役割です.この役割は,いくらリバースエンジニアリングをしても果たせないでしょう.
2010-02-11 09:14:33フィーチャー図には,この2つ(もしくはそれ以上)の立場をつなぐ重要な役割があります.しかし,システムが大規模化した今,フィーチャー図ではスケーラビリティという点で課題があるのは事実です.リバース技術も進んだので,もしかするとより適切な他の表現方法があり得ると研究者は考えています.
2010-02-11 09:18:20もう1つの話は,Yさんが某企業の方と議論していたときの話.その某企業の方が悩んでいたのは,フィーチャー図をかくときに階層化をどのようにすればいいのかということ.ある2つのフィーチャーがあったときに,何となくそれらに関連性がある気がするが,抽象的な上位フィーチャーを考えるのが面倒.
2010-02-11 09:21:21フィーチャーの数は膨大なので,そういう1つ1つの抽象化に関わっていたのでは,いくら時間があっても足りない.そういうような悩みだったと記憶しています.
2010-02-11 09:22:27そこから発展して,フィーチャーをツリー構造にまとめ上げるのが難しいので悩んでいるという話でした.
2010-02-11 09:23:07そこで Y さんが言ったのは,それなら上位のフィーチャーが何か,ルートに来るフィーチャーが何か,そんなことを考えるのをやめればいいじゃないかと.そんなことを悩まなくても,可変性を表現する手段はあるし,現実的にプロダクトラインを構築することはできる.
2010-02-11 09:24:48無の状態からフィーチャーモデルを作った Kang 先生には敬意を払っていますし,今現在でもフィーチャーモデルは可変性を表す最も有力な手段であることには変わりはない.でも,完璧な手法ではないし,いつか乗り越えるか弱点を補わねばならない.研究者としてそう思いました.
2010-02-11 09:30:46同時に,Yさんのような幾多の困難を乗り越えてきた企業の技術者にとっては,目標は製品を効率よく出荷することであって,1つの方法論を追求することではない.道具の限界を見極めて柔軟に使い分けることが技術者にとって重要であることに気づかされました.
2010-02-11 09:34:39@zacky1972 私のフィーチャモデルのイメージは論理式の塊です。抽象的な上位フィーチャはバリエーションポイントになるのなら必須、そうでなければ任意でクラスタリングでもして作れば良いかと思っています。図はクラス図と同じで必要に応じて生成する。
2010-02-11 09:43:34@zacky1972 たとえば、ifdefのリバースで出てくるモデルとマーケット屋さんが作るモデルを比較するのは形式の世界でおこなって、違いが明確になったら違いの意味はそれぞれの世界で解釈するのはどうでしょうか。論理式だけで絶対的な意味はないかも、相対的に解釈するって感じかな
2010-02-11 10:08:03@zacky1972 それはツリーにするかどうかではなく、何が共通かをみつけること。それをサボると何がコアかを見誤ります。
2010-02-11 11:08:35OVMは feasible decision を見える化するもんではなかろうかと…。フィーチャ図とは少し用途が違うと思います。逆にアーキテクチャ一歩前まで抽象度が下がっているフィーチャ図はぐっちゃぐちゃでdecisionが見えにくいので,OVMと併用するのも一考の余地ありそ。
2010-02-11 11:17:44たぶん,この問題はリバースしたときに起こるんだな.ソースコードにはなんだかわからないけど製品によって違いがある.この状態だと,製品に違いがあると言うことはわかっても,それが何に由来するかはわからない.
2010-02-11 11:21:25次の段階は,その違いが何に由来しているかが認識できている状態.多くの場合,由来は機能の有無だったり,非機能要件などに関わるパラメーターだったり.つまりフィーチャーです.
2010-02-11 11:23:51@zacky1972 共通性に限らず,可変性も名前がつけにくいのがいっぱいあります。特に,リバースでas isのフィーチャ図を作っているときなんか。コード書いた人に聞いたら「AがBになってCという状態でDになっちゃったからEするための可変性」とか。どうやって名前にするんだw
2010-02-11 11:24:37僕はこの2つの違いを製品指向とフィーチャー指向と呼びました(その話を岐阜で取り入れようと思っています).何10年前にフィーチャー指向を言い出した人たちは,フィーチャー指向の方が資産の変更量が少ないことを「発見」したのではないかと思っています.Yさんのセミナーでその追体験をしたので
2010-02-11 11:28:23その次の段階は,由来(=フィーチャー)はわかったんだけど,それらにはどうも構造があるようだ,という認識.その構造は,基本的には木構造に近い形で現れ,上位には能力やサービス,環境などが,下位には技術的なことが来るということを「発見」したのが,かの Kang 先生ではないかと.
2010-02-11 11:31:30問題は,開発現場でリバースしたときに,実の多くのフィーチャーについてこのような分析が現実的に行えない,ということだと思います.
2010-02-11 11:32:26@zacky1972 「フィーチャ」じゃなくて「プロダクトライン」の話だけど,ビジネス面(製品面)でのプロダクトラインと技術面でのプロダクトラインは違うって書いてた人は数年前にいました。たしか,(昔の)PFEの論文だったと思うけど,SPLCだったかもしんない。
2010-02-11 11:33:50もちろん @YoshiWoods さんがいうように,そうだとしても「共通性は何か」=「フィーチャーの構造がどうなっているか」を追求することには大きな意味があります.が,それができなかったとしても,PL 化する手段はあるよ,といいたい.
2010-02-11 11:34:13@zacky1972 現場のifdefをリバースすると結構依存関係が汚くなってますが、それをいったん論理式で表して、論理的に等価な論理式に簡略化してifdefで再度表現すればフィーチャのリファクタリングになると思いますがどうですか、マーケのモデルを実装するにも使えるかも知れません
2010-02-11 11:46:34