Top Banner
見見見見見見 見見見見見見見見見 ~~ 2016.12.17 WACATE 実実実実 実実 実実
77

規模の見積もり WACATE 2016 winter

Jan 08, 2017

Download

Engineering

Tomoaki Fukura
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 規模の見積もり WACATE 2016 winter

見積もり入門~規模って何だろう~

2016.12.17WACATE 実行委員 福良 智明

Page 2: 規模の見積もり WACATE 2016 winter

2

見積もりの重要性

Page 3: 規模の見積もり WACATE 2016 winter

身近にある見積もり

見積もりというと・・・プロジェクト提案 ( 開始 ) 時に PM 、 PL さんが・・・

3

要件は?工数は何人月?体制はどうする?

で納期とコストはこうだから ..( あれ?無理っぽくない ..)

Page 4: 規模の見積もり WACATE 2016 winter

身近にある見積もり

その見積もり結果を持って、営業さんがお仕事をとってくる

4

価格と納期はこちらになります

Page 5: 規模の見積もり WACATE 2016 winter

身近にある見積もりで、皆さんは、その見積もりを元にした計画に従ってお仕事をする。時には・・・

5

Page 6: 規模の見積もり WACATE 2016 winter

プロジェクト開始以前や初期に行うもので、あまり馴染みがないという方も多いのではないでしょうか?

身近にある見積もり

6

提案 要件定義 設計 開発 テスト

このあたりで見積もりを行う見積もりを機会は、ここだけではありません。皆さんの身近にも・・・

Page 7: 規模の見積もり WACATE 2016 winter

身近にある見積もり 検証の依頼 ( テスト工程の工数、価格見積もり )

7

○○ といったシステムの検証をお願いしたいのですが・・・

それはどれくらいの規模ですか?

Page 8: 規模の見積もり WACATE 2016 winter

身近にある見積もり 進捗の確認 ( 作業の見積もり )

8

この作業ってあとどれくらいで終わりますか?

これってこの日までにできる?

あと 2 人日欲しいですね。

Page 9: 規模の見積もり WACATE 2016 winter

身近にある見積もり PJ の分析・改善提案 ( 見積もり結果の利用 )

9

見積もりに対して、実際はどうだったんだろう?

過去の見積もりデータから、見積もりの精度を向上させたいなぁ…

上手くいったプロジェクトとそうでないプロジェクトの違いはなんだろう?

Page 10: 規模の見積もり WACATE 2016 winter

システム全体ではなくとも、工程や機能、タスクレベルの小さな単位の見積もりに触れる機会が少なからずあると思います。

身近にある見積もり

10

Page 11: 規模の見積もり WACATE 2016 winter

失敗プロジェクトの原因のほとんどは、

仕様の未凍結 と 見積もりミス と言われたりもします。

このように見積もりは、身近であると共にプロジェクトを成功させる上で非常に重要な要因の1つとなっています。

身近にある見積もり

11

Page 12: 規模の見積もり WACATE 2016 winter

見積もりとは?

12

Page 13: 規模の見積もり WACATE 2016 winter

見積もりとは目的

• ステークホルダ ( お客様、 PJ の管理者など ) が、適正な意思決定ができる明確な視点 ( 判断材料 ) を提供すること

• 何を判断する為の情報が欲しいかを確認してから見積もりを行うこと

 例)• プロジェクトを実施すべきかどうか? ( お客様 )• 費用や工期等の制約の上でどこまで実現できるか? ( お客様 )• プロジェクトを如何にコントロールしていくか? (PJ 管理者 )

13

Page 14: 規模の見積もり WACATE 2016 winter

見積もりとは見積もりの対象• 規模

• 見積もり対象のシステムの大きさ

• 工数• 見積もった規模に対して、発生する作業量

• 費用• 見積もった作業量を行うために必要なコスト

• 工期• 見積もった作業量を行うために必要な期間

14

Page 15: 規模の見積もり WACATE 2016 winter

見積もりとは見積もりに必要な要素• 生産性

• 工数あたりの規模例 )  1 人日でどれだけの規模の作業ができるか…等

• 変動要因• 作業に影響する要因

例 ) ロジックが複雑、高負荷での稼働、メンバのスキル

15

Page 16: 規模の見積もり WACATE 2016 winter

見積もりとは見積もりの手順

16

要求・要件

規模の見積もり

工数の見積もり

工期の見積もり 費用の見積もり

生産性、変動要因

1.要求や要件から対象の規模を見積もる

2.規模に対して、生産性、変動要因を加味して、工数を見積もる

3.工数から工期 / 費用を見積もる

※ 工期や費用が決まっている場合は、制約 として捉え、逆順で見積もっていく

今回のメイン

ここも少し取り上げます

Page 17: 規模の見積もり WACATE 2016 winter

見積もりとは規模の見積もり規模を見積もってますか?

いきなり工数で見積もることも多いのではないでしょうか?(= 規模と生産性を一緒に考えてしまっている )

規模と生産性を一緒に考えてしまうと同じシステムでも・・・A さんは生産性を自分を基準に、 B さんは新人を基準に見積もると同じシステムなのに、見積もり結果が違ってしまう

なぜ規模を見積もるのか• 規模と生産性を分けて考えることができる• 規模と生産性を分けると見積もり結果を比較しやすい 17

規模の見積もりって大事

Page 18: 規模の見積もり WACATE 2016 winter

見積もりとはまとめ• 見積もりの目的はステークホルダに判断材料を与えること

• 見積もりの対象には、規模、工数、費用、工期がある

• 見積もりに影響を与える要素には、生産性や変動要因がある

• 工数、費用、工期は、規模の見積もり結果から求めることができる

• 見積もり結果を有効に利用する為には、規模と生産性を分けて、規模の見積もりを行うことが大事 18

Page 19: 規模の見積もり WACATE 2016 winter

19

規模の見積もり

Page 20: 規模の見積もり WACATE 2016 winter

実体のないソフトウェアの見積もりにおいて、何かしらの値で規模を数値化しないと、見積もりを行うことはできない

工数、費用は、規模の見積もりを元に見積もるので、

規模の見積もり結果に大きく影響される

20

規模の見積もり

Page 21: 規模の見積もり WACATE 2016 winter

見積もり手法 例KKD 法 勘・経験・度胸で!類推法 過去の類似システムの実績を基に類推する積み上げ法 対象を詳細なタスク / プロセスに分解し、分

解した 1 つ 1 つに対して見積もりを行い、その結果を積み上げて全体の見積もりとする

LOCFP 法ユースケースポイントオブジェクトポイント

パラメトリックス法 数値モデルによって見積もりを行う CoBRA 法 ,COCOMOⅡその他 PJ メンバで意見を出し合い、協議する プランニングポーカー

ストーリーポイント21

規模の見積もり

Page 22: 規模の見積もり WACATE 2016 winter

見積もり手法 メリット デメリットKKD 法 適用が簡単 精度が人に依存しすぎる

根拠があいまい類推法 実績値が利用できる 類似の事例が必要

何を持って類似とするか決めが必要積み上げ法 手順がある程度決まっている

見積もり段階で作業が明確になるPJ の初期では必要な情報がない場合がある

パラメトリックス法 精度・信頼度が高い見積もり根拠が提示できる

見積もりに時間がかかる学習コストがかかる

プランニングポーカーストーリーポイント 適用が簡単 大規模な見積もりには向かない

22

規模の見積もり

Page 23: 規模の見積もり WACATE 2016 winter

規模を表すのに利用される代表的な値

• LOC ソースコードの行数

•ファンクションポイント (FP) 機能要件ごとの扱うデータと処理を数値化

• ストーリーポイント フィボナッチ数列 (1,2,3,5,8…) を使って、相対的な値を設定

•ユースケースポイント ユースケースとアクターを数値化

•オブジェクトポイント 画面・帳票の項目

23

規模の見積もり

Page 24: 規模の見積もり WACATE 2016 winter

LOC の課題• PJ の初期段階での適用が困難• 非開発者にとっては、あまり重要な指標ではない• 言語や開発者のスキルによって規模が増減する

FP法の特徴• PJ の初期段階から適用できる•ユーザ視点なので、非開発者にとっても理解し易い• 言語やスキルに影響されない•国際的に標準化されている• FP から LOC 、工数に変換できる• 原則として、人に依存しない 24

規模の見積もり

Page 25: 規模の見積もり WACATE 2016 winter

規模の見積もりまとめ• 工数、費用、工期は、システムの規模に大きく影響される

• システムの規模には、 LOC と FP で表現されることが多い

• FP は• PJ の初期段階から利用できる•ユーザ視点でステークホルダと合意が取りやすい• 人に依存しないといった特徴がある

25

Page 26: 規模の見積もり WACATE 2016 winter

FP法の紹介

26

Page 27: 規模の見積もり WACATE 2016 winter

概要 機能 ( データの入出力と対象のデータ ) をポイント化して数値化する

手法で、ユーザ視点で数えることに主眼が置かれる

内部ロジックの複雑さは考慮されない

IFPUG で、計算手法をまとめて文書化しており、このマニュアルに従って計測した値が正規の値となる

組込み向けには、 COSMIC-FFP法がある(ユーザを人ではなく、センサーや他のハードウェアに置き換える )

27

FP法の紹介

Page 28: 規模の見積もり WACATE 2016 winter

前提機能は内部仕様、工法、品質要求、スキルに依存しないので規模を測るのに適している

システムの機能はプラットフォームが変わっても変化しない

適用条件オブジェクト指向で設計されたシステムは向いている扱うデータが少ないが、複雑な計算処理やロジックを持つ機能は向いていない

非機能要件が重要な位置を占めるシステム

28

FP法の紹介

Page 29: 規模の見積もり WACATE 2016 winter

計測対象データファンクショントランザクションファンクション調整係数

29

計測対象の AP

登録

更新

削除

画面表示

帳票出力

論理データ

エクスポート

インポート

論理データ

外部 AP

ユーザ

凡例

トランザクションファンクション

データファンクション

FP法の紹介

アプリケーション境界

参照

Page 30: 規模の見積もり WACATE 2016 winter

FP法の種類

30

種類 概要 計測対象 利用可能時期IFPUG法 フルスペックの FP 法 データファンクション

トランザクションファンクション複雑度 (DET,RET,FTR)調整係数

基本設計 ( 外部設計 )終了後

概算法 簡略化された FP 法複雑度に固定値を用いる未調整 FP まで求める

データファンクショントランザクションファンクション複雑度 ( 固定 )

要件定義終了後

試算法 最も簡略化された FP 法PJ 開始前でも見積もり可能

データファンクション 要件定義前

FP法の紹介

Page 31: 規模の見積もり WACATE 2016 winter

計測手順 (IFPUG法 )

31

FP法の紹介

アプリケーション境界の設定

データファンクションの抽出

トランザクションファンクションの

抽出

未調整 FP の算出

一般システム特性の判定

調整係数の算出

調整済 FP の算出DET,RET を計測し、

複雑度を判定

複雑度からFP値を出す

DET,FTR を計測し、複雑度を判定

複雑度からFP値を出す

Page 32: 規模の見積もり WACATE 2016 winter

計測手順 (概算法 )

32

FP法の紹介

アプリケーション境界の設定

データファンクションの抽出

トランザクションファンクションの

抽出

複雑度からFP値を出す

複雑度からFP値を出す

計測手順 (試算法 )

データファンクションの抽出

公式を使ってFP 計算未調整 FP の算出

アプリケーション境界の設定

Page 33: 規模の見積もり WACATE 2016 winter

概算法計測対象

データファンクション トランザクションファンクション

33

FP法の紹介

計測対象の AP

登録

更新

削除

画面表示

帳票出力

論理データ

エクスポート

インポート

論理データ

外部 AP

ユーザ

凡例

トランザクションファンクション

データファンクション

参照

Page 34: 規模の見積もり WACATE 2016 winter

概算法の計測手順

34

FP法の紹介〜データファンクションの抽出〜

アプリケーション境界の設定

データファンクションの抽出

トランザクションファンクションの

抽出

複雑度からFP値を出す

複雑度からFP値を出す

未調整 FP の算出

Page 35: 規模の見積もり WACATE 2016 winter

データファンクションとはユーザが識別できる論理的なデータのまとまり業務フローや DFD 、 ER図から抽出する

ポイント  ユーザ視点での論理的なデータなので、システム化する際の正規化  は考慮しない。

  例 )

  売上情報という1つのデータファンクションとして計測する35

社員基本情報 社員詳細情報

1 n

社員情報

FP法の紹介〜データファンクションの抽出〜

Page 36: 規模の見積もり WACATE 2016 winter

データファンクションの種類内部論理ファイル (ILF Internal Logical File) 計測対象のアプリケーションによって維持管理される論理データ

外部論理ファイル (ELF External Logical File) 計測対象のアプリケーションによって参照される論理データ維持管理は計測対象のアプリケーションではない

  ※維持管理=登録・更新・削除を行う

36

FP法の紹介〜データファンクションの抽出〜

Page 37: 規模の見積もり WACATE 2016 winter

データファンクションの分類方法

37

計測対象のアプリケーションで使用する論理データか?

データファンクションではない 計測対象のアプリケーションよって維持管理されるか?

ILFELF

アプリケーション境界外にあり他のアプリケーションが維持管理している論理データか?

データファンクションではない

YES

YES

YES

NO

NO

NO

出典 : 「実践ファンクションポイント法」(鵜澤仁/経済調査会) をベースに作成

FP法の紹介〜データファンクションの抽出〜

Page 38: 規模の見積もり WACATE 2016 winter

例題:人事システム

38

計測対象の AP人事システム

情報入力

参照

社員情報 給与

情報

外部 AP給与システム

人事担当者ILF

経理

登録

ELF

FP法の紹介〜データファンクションの抽出〜

Page 39: 規模の見積もり WACATE 2016 winter

複雑度から FP値を出す

39

アプリケーション境界の設定

データファンクションの抽出

トランザクションファンクションの

抽出

複雑度からFP値を出す

複雑度からFP値を出す

未調整 FP の算出

FP法の紹介〜複雑度から FP値を出す〜

Page 40: 規模の見積もり WACATE 2016 winter

複雑度の判定データファンクションの複雑度を判定するデータファンクションは、データが大きいものや複雑なものほどFP値が高くなる

データの大きさ・・・ ”データの項目数” (DET Data Element Type) で表される

データの複雑さ・・・ ”データのサブグループの数” (RET Record Element Type) で 表される

※概算法では複雑度は固定値を利用するので必要なし40

FP法の紹介〜複雑度から FP値を出す〜

Page 41: 規模の見積もり WACATE 2016 winter

DET の数え方

41

基本情報・ ID

・氏名・メール・パスワード・性別・年齢・職業・分科会・分科会テーマ・登録者・登録日時

DET の数は 8 つ

システムが利用する項目(ユーザに見えない項目は対象外 )

FP法の紹介〜複雑度から FP値を出す〜

システムが利用する項目(ユーザに見えない項目は対象外 )

Page 42: 規模の見積もり WACATE 2016 winter

RET の数え方

42

基本情報・ ID・氏名  :・ ID・基本情報 ID・過去の参加

RET の数は 2 つ(基本情報、過去の参加情報)

FP法の紹介〜複雑度から FP値を出す〜

Page 43: 規模の見積もり WACATE 2016 winter

DET 、 RET の計測結果を元に複雑度を判定する複雑度の判定

43

1 〜 19 20 〜 50 51 以上1 L   ( 低 ) L   ( 低 ) A ( 中 )

2 〜 5 L   ( 低 ) A ( 中 ) H ( 高 )

6 以上 A ( 中 ) H ( 高 ) H ( 高 )

RET DET

※概算法では、すべて  L(低 )  とする

FP法の紹介〜複雑度から FP値を出す〜

Page 44: 規模の見積もり WACATE 2016 winter

複雑度から FP値を判定するFP の点数表

44

複雑度 FP

L ( 低 ) 7

A ( 中 ) 10

H ( 高 ) 15

複雑度 FP

L ( 低 ) 5

A ( 中 ) 7

H ( 高 ) 10

ILF の点数 ELF の点数

※概算法では、すべて  L(低 )  とする

FP法の紹介〜複雑度から FP値を出す〜

Page 45: 規模の見積もり WACATE 2016 winter

FP値を求めてみましょう

45

ファンクション名 ファンクションの種類 分類 複雑度 FP

参加者情報 データファンクション ILF L( 低 ) 7

ポジぺ情報 データファンクション ILF L( 低 ) 7

FP法の紹介〜複雑度から FP値を出す〜

Page 46: 規模の見積もり WACATE 2016 winter

トランザクションファンクションの抽出

46

アプリケーション境界の設定

データファンクションの抽出

トランザクションファンクションの

抽出

複雑度からFP値を出す

複雑度からFP値を出す

未調整 FP の算出

FP法の紹介〜トランザクションファンクションの抽出〜

Page 47: 規模の見積もり WACATE 2016 winter

トランザクションファンクションユーザが行う業務そのものアプリケーション境界をまたぐものだけで、境界内で閉じてしまうものは含まない

目的の業務を行う為に、必要な処理をまとめて1つとして扱う

ユースケースレベルの粒度が良い

47

入力 入力内容確認 登録完了社員情報

を登録する

情報入力 結果出力

ここまでを1トランザクションファンクションとして扱う

FP法の紹介〜トランザクションファンクションの抽出〜

Page 48: 規模の見積もり WACATE 2016 winter

トランザクションファンクションの種類登録・更新系の業務 ( 機能 )外部入力 (EI External Input) 外部から入ってくるデータを処理して ILF を維持管理する

参照系の業務 ( 機能 )外部出力 (EO External Output) ILF 、 ELF のデータを加工 (演算 ) して、画面 (帳票 ) に出力する

外部照会 (EQ External Inquiry) ILF 、 ELF のデータを加工 (演算 ) せずに、画面 (帳票 ) に出力する

48

FP法の紹介〜トランザクションファンクションの抽出〜

Page 49: 規模の見積もり WACATE 2016 winter

例題:人事システム

49

計測対象の AP人事システム

情報入力

参照

社員情報 給与

情報

外部 AP給与システム

人事担当者

EI経理

登録

EO(EQ)

FP法の紹介〜トランザクションファンクションの抽出〜

Page 50: 規模の見積もり WACATE 2016 winter

トランザクションファンクションの種類外部入力 (EI) の例社員情報を登録する

外部出力 (EO) の例社員の勤務時間の合計を出力する( 合計時間の計算処理あり )

外部照会 (EQ) の例社員情報を参照する

50

FP法の紹介〜トランザクションファンクションの抽出〜

Page 51: 規模の見積もり WACATE 2016 winter

外部出力 (EO) の演算処理とは? 以下は演算処理に含まない

出力情報の並び替え処理社員情報を入社日順にソートして出力

区分による出し分け処理役職がある社員のみ役職を出力する

フォーマット変換 日付を和暦で表示する

51

処理 EO EQ

データを受け付ける △ △

データの加工が発生する ▲ ×

システムの動作を変更する ▲ ×

ILF を維持管理する ▲ ×

ユーザに情報を提供する ○ ○

「失敗のないファンックションポイント法」から引用して一部加工凡例○ なければならない△ あって良い▲ いずれが必要× あってはならない

FP法の紹介〜トランザクションファンクションの抽出〜

Page 52: 規模の見積もり WACATE 2016 winter

トランザクションファンクションの分類方法

52

計測対象のアプリケーション内の論理データを維持管理するか?トランザクションファンクションではない 参照系の機能か

演算処理がある

EOEQ

ILF を維持管理する

トランザクションファンクションではない EI

NO

NO YES

YES

YESNOYES

出典 : 「実践ファンクションポイント法」(鵜澤仁/経済調査会) をベースに作成

NO

FP法の紹介〜トランザクションファンクションの抽出〜

Page 53: 規模の見積もり WACATE 2016 winter

複雑度から FP値を出す

53

アプリケーション境界の設定

データファンクションの抽出

トランザクションファンクションの

抽出

複雑度からFP値を出す

複雑度からFP値を出す

未調整 FP の算出

FP法の紹介〜複雑度から FP値を出す〜

Page 54: 規模の見積もり WACATE 2016 winter

外部入力 (EI) の複雑度判定1. DET( 画面項目 ) を計測する 重複するデータ項目は 1DET とする ファンクションを起動する手段 (ボタン ) は 1DET とする メッセージ出力はメッセージが複数あっても 1DET とする

2. FTR(関連参照ファイル数= ILF) をカウントする3. DET と FTR から複雑度を判定する4. 複雑度から FP値を求める

54

※概算法では、すべて A (中 )  とする

FP法の紹介〜複雑度から FP値を出す〜

Page 55: 規模の見積もり WACATE 2016 winter

外部出力 (EO) と外部参照 (EQ) の複雑度判定1. DET( 画面項目 ) を計測する 重複するデータ項目は 1DET とする ファンクションを起動する手段 (ボタン ) は 1DET とする メッセージ出力はメッセージが複数あっても 1DET とする

2. FTR(関連参照ファイル数= ILF,ELF) をカウントする3. DET と FTR から複雑度を判定する4. 複雑度から FP値を求める

55

※概算法では、すべて A (中 )  とする

FP法の紹介〜複雑度から FP値を出す〜

Page 56: 規模の見積もり WACATE 2016 winter

外部入力 (EI) の複雑度判定と FP 値• DET と FTR の計測結果から複雑度を判定し、 FP 値を求める

56

1 〜 4 5 〜 15 16 以上0 〜 1 L ( 低 ) L ( 低 ) A ( 中 )

2 L ( 低 ) A ( 中 ) H ( 高 )

3 以上 A ( 中 ) H ( 高 ) H ( 高 )

FTRDET 複雑度 FP

L ( 低 ) 3

A ( 中 ) 4

H ( 高 ) 5

EI の FPEI の複雑度

※概算法では、すべて A (中 )  とする

FP法の紹介〜複雑度から FP値を出す〜

Page 57: 規模の見積もり WACATE 2016 winter

外部出力 (EO) と外部参照 (EQ) の複雑度判定と FP値• DET と FTR の計測結果から複雑度を判定し、 FP値を求める

57

1 〜 5 6 〜 19 20 以上0 〜 1 L ( 低 ) L ( 低 ) A ( 中 )

2 〜 3 L ( 低 ) A ( 中 ) H ( 高 )

4 以上 A ( 中 ) H ( 高 ) H ( 高 )

FTRDET 複雑度 FP

L ( 低 ) 3

A ( 中 ) 4

H ( 高 ) 5

EO 、 EQ の FPEO 、 EQ の複雑度

※概算法では、すべて A (中 )  とする

FP法の紹介〜複雑度から FP値を出す〜

Page 58: 規模の見積もり WACATE 2016 winter

FP値を求めてみましょう

58

ファンクション名 ファンクションの種類 分類 複雑度 FP

新規ポジペ登録 トランザクションファンクション EI A( 中 ) 4

ログイン トランザクションファンクション EO A( 中 ) 4

ポジペ更新 トランザクションファンクション EI A( 中 ) 4

FP法の紹介〜複雑度から FP値を出す〜

Page 59: 規模の見積もり WACATE 2016 winter

未調整 FP の算出

59

アプリケーション境界の設定

データファンクションの抽出

トランザクションファンクションの

抽出

複雑度からFP値を出す

複雑度からFP値を出す

未調整 FP の算出

FP法の紹介〜未調整 FP の算出〜

Page 60: 規模の見積もり WACATE 2016 winter

未調整 FP抽出したデータファンクション、トランザクションファンクションに対して、それぞれ FP値を算出し、合計したものを未調整 FP という

60

FP法の紹介〜未調整 FP の算出〜

Page 61: 規模の見積もり WACATE 2016 winter

未調整 FP値を求めてみましょう

61

ファンクション名 ファンクションの種類 分類 複雑度 FP

参加者情報 データファンクション ILF L( 低 ) 7

ポジぺ情報 データファンクション ILF L( 低 ) 7

新規ポジペ登録 トランザクションファンクション EI A( 中 ) 4

ログイン トランザクションファンクション EO A( 中 ) 4

ポジペ更新 トランザクションファンクション EI A( 中 ) 4

未調整 FP 26

FP法の紹介〜未調整 FP の算出〜

Page 62: 規模の見積もり WACATE 2016 winter

調整済み FP(IFPUG法のみ )未調整 FP に対して、システムの特性 ( 非機能要件 ) を加味する(=調整係数 )

調整係数 =( 一般的システム特性の評価点✖ 0.01) + 0.65

62

FP法の紹介〜調整済み FP の算出〜

Page 63: 規模の見積もり WACATE 2016 winter

調整係数 ( 一般的システム特性 )下記 14 の特性を 0~5 で評価する

63

No 特性 説明1 データ通信 通信を行う度合い2 分散処理 データ転送が行われる度合い3 性能 レスポンスタイムやスループットの要求度合い4 高負荷構成 資源制約の要求度合い5 トランザクション量 トランザクション量の度合い6 オンライン入力 データがインタラクティブに入力される度合い7 エンドユーザ効率 使い易さへの配慮の度合い

FP法の紹介〜調整済み FP の算出〜

Page 64: 規模の見積もり WACATE 2016 winter

調整係数 ( 一般的システム特性 )下記 14 の特性を 0~5 で評価する

64

No 特性 説明8 オンライン更新 ILF がオンラインで更新される度合い9 複雑な処理 ロジックの複雑さの度合10 再利用可能性 再利用性の要求度合い11 インストール容易性 可用性の要求度合い12 運用性 運用面に留意する度合い13 複数サイト 利用されるユーザや組織の度合い14 変更容易性 容易に変更できることを考慮する度合い

FP法の紹介〜調整済み FP の算出〜

Page 65: 規模の見積もり WACATE 2016 winter

各特性ごとの判断基準特性ごとに判断基準が定義されている 例) 3. 性能 の場合

65

評価点 説明0 ユーザからの性能に対する要求は明言されていない1 性能条件と設計について要求が名言され、レビューが行われたが特別な対応は要

求されなかった2 レスポンスタイムまたはスループットがピーク時に厳しい状況になるが CPU 使用

率に対する設計上の配慮は不要である3 レスポンスまたはスループットが全業務時間中厳しい状況になるが CPU 使用率に

対する設計上の配慮は不要である4 3 に加えて、ユーザの指定した性能要求が厳しいので、設計段階で性能分析が必要

である5 4 に加えて、ユーザの指定した性能要件を満たすために、設計、開発、導入の段階

で性能分析ツールを使用する必要がある

FP法の紹介〜調整済み FP の算出〜

Page 66: 規模の見積もり WACATE 2016 winter

FP法の紹介まとめ• FP法は、機能 ( データの入出力と対象のデータ ) をポイント化してシステムの規模を数値化する手法である

• IFPUG法、概算法、試算法の3つの計測方法がある

• 計測対象は、大きくデータファンクションとトランザクションファンクションがあり、それぞれ複雑度を判定して FP値を求める

• 非機能要件については、一般的システム特性でカバーしている66

Page 67: 規模の見積もり WACATE 2016 winter

FP法の紹介まとめ

67

種類 概要 計測対象 利用可能時期IFPUG法 フルスペックの FP 法 データファンクション

トランザクションファンクション複雑度 (DET,RET,FTR)調整係数

基本設計 ( 外部設計 )終了後

概算法 簡略化された FP 法複雑度に固定値を用いる未調整 FP まで求める

データファンクショントランザクションファンクション複雑度 ( 固定 )

要件定義終了後

試算法 最も簡略化された FP 法PJ 開始前でも見積もり可能

データファンクション 要件定義前

Page 68: 規模の見積もり WACATE 2016 winter

FP値の利用方法

68

Page 69: 規模の見積もり WACATE 2016 winter

69

FP値の利用方法〜 FP値から工数を求める〜

FP値から工数を求める方法類似システム参照法

公開されている統計資料 (IPA ソフトウェア開発データ白書など ) や自組織で蓄積した過去のプロジェクトデータから FP と工数の統計データや FPあたりの生産性を使って算出する

係数モデル見積り法 COCOMOⅡ などモデルを用いて算出する

※ COCOMOⅡ の場合は、 LOC ベースなので、 FP を LOC に変換した後に適用する

言語ごとの換算係数は、公開されているものがある※ SPR社の「プログラミング言語テーブル」など

Page 70: 規模の見積もり WACATE 2016 winter

70

FP値の利用方法〜 FP値から工数を求める〜

設計の成果物評価に利用する

「ファンクションポイント法を応用した外部仕様書の品質評価」

  株式会社NTT データ 技術開発本部 成田 有希 氏

http://www.juse.jp/sqip/symposium/2015/timetable/files/ronbun_A4-3.pdf

Page 71: 規模の見積もり WACATE 2016 winter

見積もりの有効性

71

Page 72: 規模の見積もり WACATE 2016 winter

試算法、概算法の有効性

72

見積もりの有効性

出典 : 「ソフトウェア見積り」(スティーブ・マコネル/日経 BP ソフトプレス) http://itpro.nikkeibp.co.jp/article/COLUMN/20131001/508039/?rt=nocnt

試算法が有効なタイミング

概算法 /IFPUG法が有効な

タイミング

必要な情報が少ない

4倍〜 0.25倍になる可能性がある

設計情報が揃っている

試算法でも十分意味がある

Page 73: 規模の見積もり WACATE 2016 winter

まとめ

73

Page 74: 規模の見積もり WACATE 2016 winter

74

まとめ•プロジェクトの失敗の原因の一つとして、見積もりミスがあげられるように、見積もりは重要

•見積もりの中でも、規模の見積もりは工数、工期、費用に大きな影響を与える

•規模の見積もりの一つの手法として FP法がある

•FP法は、プロジェクトのあらゆるタイミングで利用可能

Page 75: 規模の見積もり WACATE 2016 winter

75

まとめ•FP法はシステムの一面から規模を見積もる手法であり、万能ではない

•見積もりは、いくつかの方法を組み合わせて行うのが効果的である

•見積もりの精度の向上には、結果を蓄積していくことが大事

•トランザクションファンクションの粒度を揃えることがポイント

Page 76: 規模の見積もり WACATE 2016 winter

76

参考文献

Page 77: 規模の見積もり WACATE 2016 winter

失敗のないファンクションポイント法 アレア 実践 ! 事例で学ぶファンクションポイント法

―発注者も受注者もなっとく !ソフトウェアの規模が測れる手法 鵜澤 仁アジャイルな見積りと計画づくり

~価値あるソフトウェアを育てる概念と技法~ Mike Cohn 、 安井 力ソフトウェア見積り - 人月の暗黙知を解き明かす スティーブ マコネル、 溝口 真理子、 田沢 恵

ソフトウェア開発見積りガイドブック ~ ITユーザとベンダにおける定量的見積りの実現~ 独立行政法人情報処理推進機構 ソフトウェア・エンジニアリング・センター

77

参考文献