お客様にご迷惑をかけない予算化の方法とは
今回は、契約と要件管理の方法についてお話しします。
アジャイルプロセスに対して多くの方が持つ一番の不安は、契約に関してではないでしょうか。派遣契約でアジャイル開発を行う場合もあるでしょうが、請負契約では要件変更を受け入れながら進める契約方法が必要となります。要件変更の発生した時点で再見積りを行い、再契約とする方法もあるでしょう。
しかし、予算申請を何度も行っていただくことはお客様にとっても負担であり、そう簡単なことではありません。お客様にご迷惑をかけず予算化する方法としてCOMMOMDATION-ReeLでは、目標コスト契約を基本として考えています。大規模ユーザアプリケーション開発にアジャイルプロセスを適用するには、要件変更が発生することを前提とした要件管理とコスト管理を行う仕組みが必要になります。
固定価格契約の課題
ウォーターフォール型では、要件変更が必要な場合、スケジュールとコストを再度見直し再契約となる場合があります。また、未確定要件を残したまま後工程に進んでしまった場合には、回復できる可能性も低くなるのではないでしょうか。そのようなリスクを回避するため、大規模開発では工程ごとに契約を区切ったり、フェーズに分割してリリースを行ったりするケースがよくあると思います。ウォーターフォール型でリスク回避を突き詰めていくと、かなりアジャイルプロセス的な短期リリースの繰り返しに近づいてくるように思えます。しかし、固定価格契約では、追加コストが発生すれば交渉が必要となります。
一方アジャイル型では、イテレーションごとにお客様に実際に動作するものを確認していただきます。イテレーションでは、設計/開発/テストという作業を行っています。イテレ-ションの区切りでお客様からのフィードバックを計画的に反映させるのが一般的な方法となりますが、どの方法論もコスト管理や契約方法には、あまり言及していません。
未確定要件は先送りするという考えがあり、固定価格契約では無理が生じます。「修正コストの交渉は、プロジェクトマネージャのネゴシエーション力によります」と言われても困りますよね。
COMMONDATION-ReeLでは、お客様と開発者側の両者が納得のいく方法として、要件確定度と要件変更を予測し、コストを管理する「目標コスト契約」を推奨しています。
COMMONDATION-ReeLと目標コスト契約
COMMONDATION-ReeLでは、請負開発の場合、計画された機能に対する開発コストを固定価格とし、要件追加と要件変更に対応するためのコストをバッファとして目標コストとしています。これらを加えたものが最大保証価格(GMP)であり、GMPを予算とする「目標コスト契約」を基本としています。お客様にはGMPで予算化していただき、要件変更が発生しなかった場合を想定した固定価格を初期契約コストとします。
この契約方法は、日本では馴染みのない契約方法かもしれませんが、お客様とコンティンジェンシープランを共有すると考えておけばよいかもしれません。目標コスト契約とは、一般的には、GMPと実質コストの差をインセンティブとし、取り決めにより双方で折半する契約方法ですが、COMMONDATION-ReeLでは、要求フェーズで固定価格に対し、目標コストを目安として20%以内になるまで要件を確定してから作成フェーズに入るようにしています。もちろん要件は、できるだけ確定しているに越したことはありません。目標コスト内での変更は両者協議を行い、必要であればバッファ内のコストを消費して変更を受け入れます。
図1の中にある未確定要件とは、仕様に未確定な部分が残されている機能であり、現段階で想定している仕様で実装した場合のコストです。仕様変更となる場合の追加予測コストは、バッファに入れておきます。
重要なことは、GMPと現状をお客様と開発者の両者が認識共有し、GMP内に収まるように両者が努力することです。
COMMONDATION-ReeLと要件管理方法
COMMONDATION-ReeLでは、目的に合わせて次の3つの見積り手法を使い分けます。
- ファンクションポイント法
- ソフトウェア規模見積り、契約コスト算出、ソフトウェア規模実績把握
- ストーリーポイント法
- 作業工数見積り、作業進捗管理
- ステップカウント法
- 品質管理基準の指標、ソフトウェア規模実績把握
その中で、ソフトウェア開発コストを求めるには、ファンクションポイント(FP)法を用いることを基本としています。FP法に対して異論をお持ちの方もいらっしゃるかと思いますが、個人依存しない平等性からCOMMONDATION-ReeLでは、FP法を適用することを基本としました。
当社では、図2のような機能一覧表からFP値を測定できるようにしています。機能一覧表に整理した各機能に対し、要件確定度を設定します。ここでは、わかりやすくするために要件確定度の欄には、何%の確定というパラメタで表現しています。
予想コストとは、現時点で要件が確定済とした場合に実装のために必要となる見積りコストです。最大予想コストとは、要件確定度により予測する見積り誤差の最大コストになります。誤差の考え方はバリー・ベームが発表した不確実性の範囲を参考にしたり、企業の実績データを参考にしたりして設定します。
要求フェーズの終了時点で、予想コストを元に作成フェーズ以降のコスト見積りを行い契約することになります。
作成フェーズ以降で要件追加や変更が発生した場合は、イテレーションの切れ目で必要に応じて再見積りを行います。図3のように、変更前のアプリケーションFPと変更後のアプリケーションFPから機能改良プロジェクトFPを算出し、コストの再見積りを行います。削除部分のFPは、すでに作成済みで廃棄となる場合に加算します。またCOMMONDATION-ReeLでは、アプリケーションFPを対象としているため移行分FPは対象外としています。
次回(最終回)は、「品質管理と修正コスト低減」について紹介させていただきます。