フリーキーズ | 独学プログラミング

FDD(ユーザー機能駆動開発)とは

最終更新日

FDD(ユーザー機能駆動開発: Feature-Driven Development)とは、アジャイルソフトウェア開発手法の1つで、具体的で動作するソフトウェアをタイムリーに繰り返し提供することを目的としています。FDDは、業界で認知されている多くのベストプラクティスを統合したもので、その名が示すように、「機能」の進捗を中心にソフトウェア開発を組織化します。

FDDにおいて「機能」とは、「売上の合計を計算する」「ユーザーのパスワードを検証する」といった、「アクション・結果・オブジェクト」という形で表現される小さな、クライアントの価値を持つ機能のことを指します。

FDDの開発プロセス

ここで、FDDのプロセスを簡単に分解してみます。

1. 全体モデルの作成

システムの範囲についてハイレベルなウォークスルーを行い、主要な要素とそれらがどのように相互作用するかを特定します。

2. 機能リストの作成

システムに必要なすべての機能をリストアップし、関連するセットにグループ化します。

3. 機能別計画

開発計画書を作成し、機能の依存関係や優先順位に基づいて順序付けを行います。

4. デザイン・バイ・フィーチャー(Design By Feature)

各フィーチャーを詳細に設計し、サインオフ前にその設計を検証する。

5. ビルド・バイ・フィーチャー(Build By Feature)

各機能は、2週間の反復作業で構築されます。各反復の結果は、具体的で動作するソフトウェアの一部となります。

FDDの例

例えば、新しいオンラインショッピングプラットフォームを開発するプロジェクトを考えてみましょう。FDDアプローチでは、まずシステム全体のモデリングを行い、ユーザーインターフェイス、商品データベース、ショッピングカート、決済ゲートウェイなどの主要コンポーネントを特定することからプロジェクトをスタートします。

次に、「商品の詳細を表示する」「ショッピングカートに商品を追加する」「クレジットカードの支払いを処理する」といった機能の詳細リストを作成します。そして、これらの機能に優先順位をつけて、開発計画に落とし込んでいきます。

そして、各機能の設計や検証を経て完成に至る流れです。例えば、「商品の詳細を表示する」では、データベースから商品データを取得し、ユーザーに表示する方法を設計し、商品が見つからなかった場合のエラー処理も行います。この設計が承認されると、その機能が構築され、システム全体に統合されます。

まとめ

FDDは、開発プロセスを通じて、定期的に目に見える結果を提供します。これにより、関係者は進捗状況を確認でき、早期にテストの機会を得ることができ、クライアントが最も重視する機能の提供に向けてプロジェクトを軌道に乗せることができます。