JUDE5を使った上流工程(見積編2)
少し前回の補足、というか訂正。
ファンクションポイントでいうところのFTRを求めるためには、以下のように各ユースケースが依存しているエンティティクラスを数えるのがより正しい。(前回は、エンティティに対する依存を数えていて、あまり意味がない)
INamedElement[] elements = projectmodel.getOwnedElements(); for (INamedElement element : elements) { if (element instanceof IUseCase) { StringBuilder sb = new StringBuilder(element.getName()); int ftr = 0; IDependency[] dependencies = element.getClientDependencies(); for (IDependency dependency : dependencies) { sb.append("["); ITaggedValue[] values = dependency.getSupplier().getTaggedValues(); for (ITaggedValue value : values) { if (value.getKey().equals("No")) { sb.append(value.getValue() + " "); } } sb.append(dependency.getSupplier().getName()); sb.append("]"); ftr++; } sb.append(" FTR="); sb.append(ftr); System.out.println(sb.toString()); } }
※ちなみに、ITaggedValue はクラスのプロパティエディタ、「タグ付き値」に設定した値を格納している。(名前に、"No"を、値には、クラスを識別する連番)
JUDE5を使った見積作業手順のまとめ
- ユースケース図にて機能を整理・分析する
- (課題・質問はマインドマップでまとめると便利)
- ユースケース図に書き入れたいエンティティを発見し、それらをER図で書く。(クラス図に変換する。最初からクラス図で書いても良い)
- ユースケース図にエンティティクラスをドラッグ&ドロップし、ユースケースからの依存線を描く
- 上記作業を繰り返し、モデルを洗練していく。見積用とはいえ、なるだけ粒度細かめの方が良い。(特にユースケースからクラスに対する依存が大事)
- JUDE APIを使ってファンクションポイントを自動算出する。(画面の項目数(=機能の観点からのDET)など、この段階でよくわからないものは多めに手動カウントする)
- 求めたDET・FTRからファンクションポイントを算出する。
ちなみに、ファンクションポイント法ではファンクションの切り出し(粒度)によってかなりポイントが変動する。例えば、
など。そのため、ファンクションポイントから工数を求めるには、同じ粒度で測定した他プロジェクトの実績値が必要となる。