SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

7つのアジャイル開発手法の実践ガイド(第1回)

XP、スクラム、リーンソフトウェアから駆動型開発まで

機能駆動型開発(FDD)

 ほとんどのアジャイル開発手法は一握りの原則や特定のプロセスセットから始まりますが、機能駆動型開発(FDD)の中心はドメインモデルです。ドメインのモデルを作成することが、FDDの基礎を成すステップであり、そのためにはすべてのドメインエキスパート(サブジェクトマターエキスパート(Subject Matter Expert:SME)と呼ばれる)からドメインの知識を集め、この知識を問題のドメインを表す1つの統一化モデル(つまりモデルの集合)に統合することが必要になります。このモデルとその他の要件の評価が終わると、大まかな計画が策定され、プロダクトを作成するために必要なリソースが決まります。チームが作業する推奨期間は2週間以内であるため、小さな機能セットを選びます。最初の機能セットを引き渡したら、別のセットに取り掛かります。複数のチームが並行して別々の機能セットに取り組むことができ、機能ごとにすべてアクティビティが追跡されます。

 FDDにおける基本作業単位は機能です。機能は、小さな、クライアント価値のある処理として、次のような英文の形式で表現されます。

 <action><result>[of|to|for|from]<object>.

 この表現は、「アクション(action)によって、オブジェクト(object)に結果(result)がもたらされる」と言い換えることができます。角かっこで囲まれたセクションはオプションで、機能の定義を読みやすくするためのものです。例えば、「Calculate the monthly interest rate for an adjustable rate mortgage(変動金利型住宅ローンの月利を計算する)」という機能があるとします。この例では、「calculate」が<action>、「monthly interest rate」が<result>、「an adjustable rate mortgage」が<object>です。

 機能を組み合わせて機能セットにし、機能セットを集約してサブジェクトエリアにすることができます。通常、要件はトップダウン式アプローチで収集し、システムのすべてのサブジェクトエリアを定義し、それを機能セットに分割し、最終的に機能に分割して、そこからタスクを実際に定義して見積もることができます。一般に、機能セットはビジネスアクティビティを反映し、サブジェクトエリアは一般的なビジネスプラクティスに対応します。例えば、機能セットには「預金する」「引き出す」「口座残高を表示する」などがあり、それらはすべて「口座を管理する」サブジェクトエリアに含まれます。

 FDDでは、次の順序で5つの具体的なプロセスを指定します。

  1. 全体モデルを作成する
  2. 機能のリストを作成する
  3. 機能別に計画する
  4. 機能別に設計する
  5. 機能別にビルドする

 前にも述べたように、すべてのものを機能単位で計画、ビルド、管理、追跡するという点に注意してください。機能セットやサブジェクトエリアなど、他の単位を上位の計画やレポートに使用することはできますが、主となる単位は機能です。

 FDDは、他のアジャイル開発手法よりも具体的な役割と責任に依存しています。また、FDDは他のアジャイル方法論が推進しているコード所有権や成果物の共有から離れる傾向もあり、チームの役割はこれを反映しています。FDDで定義されている9つの役割は次のとおりです。

  1. プロジェクトマネージャ
  2. 財務面、レポート面を含め、プロジェクトの管理面すべてを担当します。
  1. チーフアーキテクト
  2. 設計セッション、コードレビュー、テクノロジの決定を含め、システムの設計全体を担当します。
  1. 開発マネージャ
  2. 開発チームとそのアクティビティの調整、リソース問題の処理など、毎日の開発アクティビティを引き受けます。
  1. チーフプログラマ
  2. 進行中の設計および開発アクティビティにかかわるシニア開発者。1つ以上の機能セットの担当が割り当てられます。
  1. クラスオーナー
  2. チーフプログラマの指示下で機能の実装に従って機能の設計、コーディング、テスト、文書化を行う開発者。
  1. ドメインエキスパート
  2. システムが提供すべき必須機能を定義することができるビジネス関連のステークホルダ。クライアント、ユーザー、各種アナリストなど、システムに影響する可能性のあるビジネスの仕組みについての知識を持つすべての人が含まれます。
  1. テスタ
  2. 各機能が定義どおりに実行しているかどうかの検証を担当します。
  1. デプロイヤ
  2. 各種環境へのコードの実際のデプロイメントだけでなく、データの定義/形式間の変換も処理します。
  1. テクニカルライタ
  2. ユーザーが最終的なシステムについて必要とするすべてのオンライン文書および印刷文書の作成と保守を担当します。

 FDDでは、いくつかの独自の固有のメカニズムを使ってプロジェクトのアクティビティと進捗状況を報告します。これらの中で最も独自性が低いものが、機能リストとタスクリストです。多くのアジャイル開発手法は何らかの種類のリストを使用して要件および要件に基づいて実行された作業を追跡します。FDDでは、これらのリストはすべて具体的な機能に対応します。

 機能が開発サイクルのどこに位置しているかを正確に把握するには、次の6つの具体的なマイルストーンを追跡する表を使います。

  1. ドメインウォークスルー
  2. 設計
  3. 設計インスペクション
  4. コード
  5. コードインスペクション
  6. ビルドへのプロモート

 これらのマイルストーンは、それぞれが完了した日付ごと、およびその具体的な機能を担当するチーフプログラマごとに追跡します。

 機能のマイルストーンを集めると、機能セットを示す表になります。ここから、プロジェクトのステークホルダはプロジェクトの進捗状況を判断できます。そうすることに価値があれば、機能セットを集めてサブジェクトエリアにすることもできます。また、完了した機能をプロジェクト全体で折れ線グラフを使って追跡することもできます。このグラフには、完了したすべての機能の累積総数が日単位または週単位で示されます。

 レポートの最後のグループは、FDDに非常に固有の機能セット進捗レポートです(図3を参照)。下図のようにレポートは色分けされ、プロジェクト内の各機能セット、機能セットの完了率、各エリア内の機能の数、各機能セットを担当するチーフプログラマの名前、各機能セットの完了目標年と月を示しています。薄緑色は進行中で予定どおりの機能セット、深緑色は完了した機能セット、灰色は予定より遅れている機能セットを表しています。

図3 機能セット進捗レポート(Feature Set Progress Report)
図3 機能セット進捗レポート(Feature Set Progress Report)

第2回の予告

 本稿1回ですべてのアジャイル開発手法を取り上げることはできませんでした。実は、2回に分けてもすべてのアジャイル開発手法を取り上げることはできないのですが、主要なものはすべて紹介したいと思っています。第2回では、アジャイルユニファイドプロセス(Agile Unified Process)、クリスタル(Crystal)、およびDSDMを分析し、説明を続けます。また、こうした内容に交えてさまざまなアプローチを概説しながら、それぞれの開発手法が真価を発揮するコンテキストを考えます。最後に、プロジェクトに適した開発手法または開発手法の組み合わせを選ぶ場合のヒントを紹介します。

次の記事

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Rod Coffin(Rod Coffin)

最新の開発プロセスおよびテクノロジの大規模導入のコンサルテーションを行うValtech Skill Developmentの上級顧問。主にエンタープライズJava開発およびアジャイル手法を行うチームを指導している。アスペクト指向プログラミングからEJB 3.0に至るまで各種の話題について数本の記事を...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Derek Lane(Derek Lane)

Countrywide Financial Corp. のエンタープライズアーキテクト。メンター、コーチ、アーキテクト、マネージャ、開発者、トレーナー、開発方法論者、オープンソース信者など、さまざまな肩書を持つ。著者、プレゼンター、技術校閲者としてさまざまなプロジェクトに携わり、まもなく共著『EJB...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/848 2008/09/02 14:08

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー