お役立ちコラム

【アジャイル経営のススメ】第4回 ユーザー機能駆動型開発

 
■「アジャイル型開発」の代表的手法のおさらい

 アジャイル型開発については、いくつかの手法が知られています。ちょっと概念的すぎる手法も含まれていますが、そのいくつかを紹介してみたいと思います。
 アジャイル型開発の代表的な手法としては、
(1)スクラム
(2)エクストリーム・プログラミング(XP:Extreme Programming)
(3)ユーザー機能駆動型開発(FDD:Feature Driven Development)
 などがあります。
 今回は、(3)のユーザー機能駆動型開発について紹介してみましょう。

■(3)ユーザー機能駆動型開発

 ユーザー機能駆動型開発(FDD:Feature Driven Development)は、ユーザーから見て重要だと思われる機能を中心に開発していく手法です。
 ユーザーにとって、価値が高いと思われる小さな単位の機能(feature)に分け、短い期間でシステムを開発していきます。
 一般に、アジャイル型は少人数での開発に向いていますが、FDDは、大規模で大人数が関わる開発に向いているという点で、特徴があります。

●「5つの基本活動」
 FDDには、その工程で「5つの基本活動」というものがあり、これを基本にして開発を行います。
★全体モデル開発
 FDDは、まず開発するシステム全体のモデルを作成することからスタートします。
 開発するシステムの中身について、ウォークスルーを行います。ウォークスルーは、仕様などを検討したり問題点をピックアップして解決策を考えることです。
 全体のウォークスルーが終わったら、今度は各パートごと、部門別に細部のウォークスルーを行います。
 こうしてパートごとのモデルを作成していき、ひとつにまとめて「全体モデル」を作成します。
★フィーチャーリスト
 全体モデルが作成できたら、それを元に、フィーチャー(feature)をリストアップしていきます。フィーチャーは、ユーザーが必要だと考えている機能で、重要度ごとに整理してリストにします。
 フィーチャーはできるだけ細かく分け、2週間以下で開発できるように分割していきます。
★フィーチャーごとの計画
 次に、フィーチャー単位の開発計画を立てます。フィーチャーの難易度や必要とされる開発者を考慮し、フィーチャーの作る順番や、どの開発者を割り当てるかを考えます。各担当グループ(クラス)には、開発責任者(オーナー)を設定します。
★フィーチャーごとの設計
 それぞれのクラスで、フィーチャー単位の設計パッケージを作ります。2週間で開発するフィーチャーを決め、それぞれのフィーチャーの詳細なシーケンス図を作成し、全体モデルを更新します。
★フィーチャーごとの構築
 フィーチャー単位の設計が終われば、フィーチャーを実装していきます。実装が終わったら、単体テストを行った後、第三者によるコードの検証を行います。これを「コードインスペクション」といいます。

 ユーザー機能駆動型開発のメリットは、ユーザーが必要とする機能をフィーチャーリストにして作成していくため、完成したシステムが無駄な機能をそぎ落としたものになる点です。
 また、全体モデルを最初に決めておき、各フィーチャーについてチームを設定して開発を行うため、並行開発が行いやすい点がメリットです。こうしたことから、大規模開発に向いたアジャイル型開発の一変形だと考えられます。

 いかがでしょうか。アジャイル型のプログラム開発には、以上で紹介した方法の他にも、いろいろな方法があります。また、機会があれば紹介していきたいと思います。