« Redmineのトラッカーやステータスの付け方 | トップページ | チケット駆動開発が進むべき道part1~ソフトウェア開発のベストプラクティスをオープンソースのツールで実現する »

2010/11/20

アジャイル開発とソフトウェアプロダクトラインの関係

平鍋さんの記事が面白かったのでメモ。

【元ネタ】
Agile Software Product Line を考える:An Agile Way:ITmedia オルタナティブ・ブログ

(引用)
「まずは、Agile Product Line というものがあるとしたら、What is it ? であり、What is it for ? というところから考えなくてはならない」
という方針のもとに、
* AgileもSoftware Product Line(SPL)も、Business Valueが目的(Goal)である。ただし、そのアプローチが違う。(3つの○。上位目的がBusiness Valueで、右がAgile、左がSPL)
* 経済的観点から、SPLはAssetベース。AgileはFlowベース。SPLはB/S志向であり、AgileはP/L、さらにはキャッシュフローベース。
* SPLはProduct Familyのドメイン知識をAssetとして蓄え、その再利用によって効果的な製品開発を行う。キーとなるソフトウェア品質は「再利用性」。
* Agileはワンショットのプロジェクトにおいて、フローベースでROIを最適化する。1プロジェクト毎のコンテキスト重視。キーとなるソフトウェア品質は「変更可能性」。
* 両者を融合するには、ワンショットのプロジェクトをAgileで、プロジェクト終了時に、得たknowledgeのアセット化により、SPLへフィードバックする。
* これにより、企業ワイドで、再利用資産を使うことにより、さらなる製品のAgility(早期の市場投入)ができるようになる。
という概要を書き出しました。

アジャイル開発とソフトウェアプロダクトライン(SPL)は、密接に絡んでいるようでいて、水と油みたいだと思っていた。
SPLはWF型開発を前提とした開発プロセスの実践例が多いと思うから、そもそもアジャイル開発とは相容れない所が多い。

しかし、SPLは再利用するためにコア資産を育てていく発想があり、その観点はアジャイル開発における小規模リリースの発想に似ている。
アジャイル開発でも、システムを小刻みにバージョンアップさせながら、品質も機能も改善していく発想だからだ。

特にソフトウェア品質の観点は密接に絡んでいると思う。
アジャイル開発では、保守性(平鍋さんの言葉では変更可能性)を重視する。そのためにリファクタリングという手法が編み出された。
SPLでは、移植性(平鍋さんの言葉では再利用性)を重視する。コア資産をベースに製品ファミリーを増やしていく開発スタイルだからだ。
この開発スタイルは、製造業の多品種少量生産に似ている。

そしてSPL、アジャイル開発のどちらも並行開発になるから、メインラインモデルをベースにタスクブランチ、トピックブランチなど各種の構成管理手法が必要になるはず。
つまり、高度なソフトウェア工学の知識や経験を必要とするように思う。

「SPLはB/S志向であり、AgileはP/L、さらにはキャッシュフローベース」という平鍋さんの言葉が興味深い。
確かに、SPLはコア資産をまさに資産として扱う。コア資産の品質を維持しながら、時代に合わせて機能拡張しなければ、資産価値が落ちる。
Agileの場合、タイムボックス(イテレーション)単位の開発だから、イテレーションが終わればストーリーはリセットされる。その発想は、期末になれば売上と費用が集計されて、翌月の初めから新たに売上と費用がゼロから発生するのに似ている。
そして、顧客に価値あるソフトウェアを届けるのを信条とするアジャイル開発は、まさにキャッシュフローベースとも言える。

SPLがソフトウェアファクトリーの発想に影響を受けたというKan先生の言葉も興味深い。
Scrumも野中先生の論文が提唱元になっている。
実は、日本発のアイデアが今の主流のソフトウェア開発に影響を与えている点が何となく逆説的な気がする。

アジャイル開発とソフトウェアプロダクトラインの関係は今後も追いかけていく。

|

« Redmineのトラッカーやステータスの付け方 | トップページ | チケット駆動開発が進むべき道part1~ソフトウェア開発のベストプラクティスをオープンソースのツールで実現する »

ソフトウェア工学」カテゴリの記事

Agile」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: アジャイル開発とソフトウェアプロダクトラインの関係:

« Redmineのトラッカーやステータスの付け方 | トップページ | チケット駆動開発が進むべき道part1~ソフトウェア開発のベストプラクティスをオープンソースのツールで実現する »