42. Copyright (C) 2009 WACATE All rights reserved
Function point method(ファンクションポイント法)
• ソフトウェアの機能規模を測定する手法の1つ。開発工数の見積
もりに利用 される。ソフトウェアの“機能”を基本にして、その処理
内容の複雑さなどからファンクションポイントという点数を付けてい
き、ソフトウェアのすべての機能 のポイントを合計して規模や工数
を導き出すもの。
「@IT情報マネジメント用語事典」から抜粋
• ファンクションポイント法 拡張形
• IBM法(1979)
• DeMarcoのBang法(1982)
• IBM法改訂版(1984)
• SPR法(1985)
• SPR逆算法(1986)
「ソフトウェア開発の定量化手法」から抜粋
• SPRフィーチャーポイント法(1986)
• Reifer法(1987)
• Mark Ⅱ法(1988)
• IFPUG法(1990・1994)
• Boeing 3D法(1994)
43. Copyright (C) 2009 WACATE All rights reserved
Function point method(ファンクションポイント法)
• 計算方法①
1. 機能などを数える際のタイプとどこまで数えるかを明確にする
2. 次に、評価の対象となるシステムについて、ユーザーファンクションタイプと
呼ばれる「外部入力」「外部出力」「外部照合」「内部論理ファイル」「外
部インターフェイス」の数をファンクション数としてカウントする
3. その機能がどのファイルをどれく らい参照するのか、やりとりを行うかのかを
数えるもので、プログラムを作る前の段階のDFDやERDなどから見積もる
ことができる
4. そして、それぞれの難易度を3段階(容易・普通・複雑)で評価して点数
化(ポイント化)して、そのポイントに次の係数を掛けて合算した値を基準
値とする
「@IT情報マネジメント用語事典」から抜粋
容易 普通 複雑
外部入力
外部出力
外部照合
内部論理ファイル
外部インターフェイス
44. Copyright (C) 2009 WACATE All rights reserved
Function point method(ファンクションポイント法)
• 計算方法②
5. 次に、システム特性に関して以下の項目でその複雑さを 0~5の6段階で
評価し、それを合計して調整値を算出する
・処理の複雑性 ・複数サイトでの使用 ・変更の容易性
・データ通信 ・トランザクション量 ・システム運用性
・オンライン更新 ・性能条件 ・再利用性 ・オンライン更新
・高負荷構成 ・インストール容易性 ・分散データ処理
・エンドユーザーの効率性
6. 導き出した基準値と調整値を基に、以下の式でファンクションポイントを算
出する
ファンクションポイント=基準値×(0.65+調整値/100)
「@IT情報マネジメント用語事典」から抜粋
45. Copyright (C) 2009 WACATE All rights reserved
Function point method(ファンクションポイント法)
• 式 :機能的規模(ファンクション)×複雑度×影響要因
「ソフトウェア開発の定量化手法」から抜粋
46. Copyright (C) 2009 WACATE All rights reserved
COSMIC-FPP法
• COSMIC-FFP(The Common Software Measurement
International Consortium - Full Function Point)は、ファンク
ションポイント法(機能規模測定法)の一つ。組込み系・リアルタ
イム系を問わず、ソフトウェアの規模や開発工数を、プログラミング
言語などに依存せず定量的に見積もる方法の国際規格で、
ISO/IEC 19761として2003年に制定され、日本では2006年に
JIS X 0143としてJIS規格化された。
「ウィキペディア」から抜粋
51. Copyright (C) 2009 WACATE All rights reserved
バグ発生(不良摘出)状況管理図
• とるべき対応・処理
① 異常要因分析、デバック強化
② 異常要因分析、目標値再検討
0
50
100
150
200
250
300
350
400
450
500
全体
管理上限
管理下限
累乗 (全体)
多項式 (管理上限)
多項式 (管理下限)
②不良多発見込
みまたは、デバック
進度良好
①目標達成困難
「ソフトウェア品質保証の考え方と実際」から抜粋
52. Copyright (C) 2009 WACATE All rights reserved
例①:テスト実施
• テストケースの優先度
(流用度(新規性)+複雑度/規模+機能重要度(システム視点・ユーザー視点))
• テストフェーズ毎の優先度
(ユニット・結合:技術要件が高、システム・受入:ビジネス要件が高)
• 機能のクリティカルパスによる、実施順
• 複雑度 vs バグ発生率
• 機能毎 vs バグ発生率
• 変更量 vs バグ発生率
53. Copyright (C) 2009 WACATE All rights reserved
例②:テスト設計
• 機能数 vs テストケース数
• 複雑度* vs テストケース数
• 新規性 vs テストケース数
• フェーズ毎 vs テストケース数
*循環的複雑度(Cyclomatic complexity)( McCabe数)
– M = E − N + 2P
• M = 循環的複雑度、 E = グラフのエッジ数、 N = グラフのノード数、 P = 連結されたコンポーネントの数
ウィキペディアから抜粋
54. Copyright (C) 2009 WACATE All rights reserved
おまけ
• バグのダメージレベルについて・・・
皆さん、どのように設定されていますか?
① 出荷停止・高・中・低(Hi・Mid・Low)
② 重要度×出現頻度
③ FMEA(Failure Mode and Effect Analysis)
影響度×出現頻度×(検出・探索難易度+対策・修正難易度)
55. Copyright (C) 2009 WACATE All rights reserved
ここまでくれば
すっかり、皆さん
「線・Mania」
ですね♪