| シリーズの一部 |
| ソフトウェア開発 |
|---|
フィーチャー駆動開発(FDD)は、反復的かつ増分的なソフトウェア開発プロセスです。これは、軽量またはアジャイルなソフトウェア開発手法です。FDDは、複数のベストプラクティスを統合的に統合します。これらのプラクティスは、クライアントが重視する機能(フィーチャ)を提供するという観点から推進されます。 [ 1 ]その主な目的は、アジャイル宣言の原則に従って、実体のある動作するソフトウェアをタイムリーに繰り返し提供することです。[ 2 ]
FDDは、1997年にジェフ・デ・ルカ氏によって、シンガポールの大手銀行で15ヶ月間、50名規模のソフトウェア開発プロジェクトに特有のニーズを満たすために考案されました。その結果、全体モデルの開発、機能のリスト化、計画、設計、構築をカバーする5つのプロセスが生まれました。最初のプロセスは、ピーター・コード氏のオブジェクトモデリングへのアプローチに大きく影響を受けています。2番目のプロセスは、機能要件と開発タスクを管理するために機能リストを使用するというコード氏のアイデアを取り入れています。その他のプロセスは、ジェフ・デ・ルカ氏の経験に基づいています。シンガポールのプロジェクトで成功を収めて以来、FDDはいくつかの実装が行われてきました。
FDDの説明は、1999年にピーター・コード、エリック・ルフェーブル、ジェフ・デ・ルカの共著『 Java modelling in Color with UML』[1]の第6章で初めて世界に紹介されました。その後、スティーブン・パーマーとマック・フェルシングの共著『A Practical Guide to Feature-Driven Development』[2](2002年出版)で、Javaモデリングから切り離された、より一般的なFDDの説明が示されました。
FDDは、5つの基本アクティビティで構成される、モデル駆動型の短期反復プロセスです。ソフトウェア開発プロジェクトの正確な状態報告と進捗状況の追跡のために、各機能の進捗を示すマイルストーンが定義されます。このセクションでは、各アクティビティの概要を説明します。右の図は、これらのアクティビティのメタプロセスモデルを示しています。最初の2つの連続アクティビティで、全体的なモデル形状が確立されます。最後の3つのアクティビティは、各機能ごとに 反復されます。

FDDプロジェクトは、システムの範囲とそのコンテキストを概観することから始まります。次に、各モデリング領域について、小グループが詳細なドメインモデルを作成し、ピアレビューに提出します。提案されたモデルの中から1つまたは複数のモデルが選定され、各ドメイン領域のモデルとなります。ドメイン領域のモデルは、段階的に全体モデルに統合されます。
初期モデリングで得られた知識は、ドメインを機能的にサブジェクトエリアに分解することで、機能リストを特定するために活用されます。各サブジェクトエリアにはビジネスアクティビティが含まれており、各ビジネスアクティビティ内のステップが分類された機能リストの基礎となります。ここでいう機能とは、クライアントにとって価値のある機能の小さな構成要素であり、「<アクション> <結果> <オブジェクト>」の形式で表現されます。例えば、「売上合計を計算する」や「ユーザーのパスワードを検証する」といった具合です。機能の完成には2週間以上かかるべきではなく、それ以上かかる場合はさらに小さな構成要素に分割する必要があります。
機能リストが完成したら、次のステップは開発計画を作成し、機能 (または機能セット) の所有権をクラスとしてプログラマーに割り当てることです。
各機能ごとに設計パッケージが作成されます。チーフプログラマーは、2週間以内に開発する機能の小グループを選択します。チーフプログラマーは、対応するクラスオーナーと協力して、各機能の詳細なシーケンス図を作成し、全体的なモデルを洗練させます。次に、クラスとメソッドのプロローグが記述され、最後に設計検査が行われます。
機能を作成するための各アクティビティの設計検査が計画通りに完了すると、クラスオーナーは担当クラスのコードを開発します。ユニットテストとコード検査が合格すると、完成した機能はメインビルドに昇格されます。
機能は小さいため、1つの機能を完了するのは比較的小規模なタスクです。ソフトウェア開発プロジェクトの正確な状態報告と追跡のためには、各機能の進捗状況を記録することが重要です。そのため、FDDでは、機能ごとに6つのマイルストーンを定義し、それらを順番に完了させます。最初の3つのマイルストーンは「機能別設計」アクティビティで完了し、最後の3つのマイルストーンは「機能別構築」アクティビティで完了します。進捗状況を追跡するために、各マイルストーンには完了率が割り当てられています。下の表に、マイルストーンとその完了率を示します。コーディング開始時点で、機能は既に44%完了しています(ドメインウォークスルー1%、設計40%、設計検査3% = 44%)。
| ドメインウォークスルー | デザイン | 設計検査 | コード | コード検査 | ビルドに昇格 |
|---|---|---|---|---|---|
| 1% | 40% | 3% | 45% | 10% | 1% |
機能主導型開発は、クライアントが重視する機能の観点を目的とした ソフトウェア エンジニアリングのベストプラクティスの中核セットに基づいて構築されます。

メタモデリングは、メソッドのプロセスとデータの両方を視覚化するのに役立ちます。これにより、メソッドの比較が可能になり、メソッドエンジニアリングプロセスにおけるメソッドの断片を容易に再利用できるようになります。この手法の使用は、UML標準に準拠しています。
メタデータモデルの左側には、FDDを用いたソフトウェア開発プロジェクトに含まれる5つの基本アクティビティが示されています。これらのアクティビティはすべて、FDDプロセス記述のサブアクティビティに対応するサブアクティビティを含んでいます。モデルの右側には、関連する概念が示されています。これらの概念は、図の左側に示されたアクティビティから派生しています。