規模見積もりには、誰もが迷うポイントがある。経験を上手に生かす方法を考えなければならない。現場で何に迷うのかを洗い出し、迷いを払拭する仕組みを作ろう。

 規模見積もりは、これから開発するソフトウエアの大きさを測定する作業。大きさの単位は「FP数」や「ステップ数」、画面や帳票、バッチといった「機能数」など様々ある。ソフトウエアの規模は、開発に必要な工数やコストを算出する際のベースとなる。ここがブレるとすべてがおかしくなる。

 しかし、規模見積もりは一筋縄ではいかない。そもそも要件が固まっていない中で見積もりを強いられることが多い。加えて「同じ要件、同じ技法を使っても、人が違うと見積もり結果が変わる」(富士通 SIアシュアランス本部プロジェクトガイド室 室長 合田治彦氏)という問題がある。技法には見積もり担当者による解釈が入る余地があり、条件が同じでも値が一意に決まらないのである。

 規模見積もりにおける標準技法の落とし穴は、ルールの解釈が人によって異なる、技法がカバーしていない部分がある、早い段階で技法が適用しづらい――というものである。これらを克服する工夫が現場で必要となる。

ルールの解釈が人によって異なる 本来の考え方を正しく理解する

 標準的な見積もり技法の中には、ルールの解釈が難しいものがある。一つひとつのルールを覚えていくのも大事だが、まずはルール本来の考え方を正しく理解しよう。

 FP法は解釈が難しい技法の典型だ。2001年からFP法を利用している帝国データバンクの大場靖氏(システム部 サービス開発課)は「(FP法の1種で国際ルールの)IFPUG法には現場で解釈に迷う点がいくつもある」と指摘する。同社ではベンダーにFP法による見積書の提出を求めているが「ベンダーによってFP数が大きく異なることがある。慣れないうちは、本来のルールを正しく理解せず、誤って適用してしまうからだ」(大場氏)と言う。

 日本ファンクションポイント・ユーザ会(JFPUG)計測技術委員長の倉重誠氏は「FP法は実装形態を考慮せず、論理的な観点だけでシステムの規模を計測する技法。この考え方を理解していないと、現場で戸惑うことになる」と話す。例えば、FP法では「中間ファイルや一時ファイルは計測しない」という原則がある。これはメッセージ・キューイングなど別の実装技術を使えば、中間ファイルがなくても同じ機能を実現できるとFP法では考えるからだ。ところが「中間ファイルの作成も機能の一つなのだから規模に含めるべきだろう」と判断してしまうと本来の値とは違うものになってしまう。

 ほかにも、FP法では誤解しやすい部分がある(図1)。例えば、一覧表示が複数のページにまたがる処理。規模の単位が画面数であれば、それぞれのページを別々に数える。だが論理的な観点からは「一画面でも実装可能なので照会処理の一部分」と見なす。逆に検索処理の場合は、処理を分けてカウントする。検索処理は通常、条件入力→該当案件一覧表示→1件詳細表示という流れになる。ここに「一覧照会」と「明細照会」という二つの機能が含まれると考える。印刷プレビュー機能も画像イメージを作成する必要があるため、通常の印刷機能とは分けて数える。

図1●技法の本来の考え方を正しく理解する
日本ファンクションポイント・ユーザ会(JFPUG)計測技術委員会の倉重氏が作成。論理的な観点から計測するFP法には解釈しづらいルールがある。チーム内で正しい解釈を共有することが重要だ
[画像のクリックで拡大表示]

ユースケース図の利用も有効

 FP法では「計測対象はユーザーから見て理解可能な機能」としている。この点もエンジニアにとっての分かりにくさを増大させている。

 計測時には、DFD(Data Flow Diagram)やE-R(Entity-Relationship)図を利用することが多い。だが、これらの図にはユーザーの視点が希薄である。そこでNTTデータの藤貫美佐氏(SIコンピテンシー本部 SEPG 設計積算推進担当 課長)は、一つの工夫としてユースケース図の活用を勧める。「ユーザーの視点で機能をとらえるユースケース図は意外にFP法と相性がよい。ユースケースの粒度が一定であり、ユースケース・シナリオが書いてあればそれをベースにFP数を計測できる」(藤貫氏)

技法がカバーしていない部分がある 対象/対象外を細かく定義する

 技法のルールを細かく読み解いても、対処できない問題もある。その場合は、自分でルールを作らなければならない。

 古くから使われているLOC法には、何を数えて何を数えないかという具体的なルールがない。「ソースコードを見れば分かるのではないか」と考えるのは早計だ。コメント行は数えるか、セミコロンのような文末記号の行はどうするかなど、LOC法に基づくステップ数は取捨選択次第でいくらでも膨らむし、しぼみもする。人によって計測方法がバラバラなので、別の人の見積もり結果を参考に見積もっても、その測定結果はブレてしまう。

 そのうえ最近は、フレームワークやソフトウエア部品の利用が進んでいる。開発支援ツールによるコードの自動生成も普及してきた。こうした「書かないコード」はどう数えるのか。さらに保守開発の場合にステップ数をどうするかなど、ベテランでさえ意見が分かれるところが少なくない。

 富士通の合田氏は、自らの経験からステップ数の現実的な計測ルールを作成している(図2)。構文上の開閉カッコや文末記号の行は、文法上必要な行と考え1行と見なす。スクリプトやHTML、SQLといったコードもきちんと数える。「これらは実装の仕方や記述の巧拙で差が出やすいが、多少は割り切ることも必要」と合田氏は言う。

図2●技法がカバーしていない部分を補う
LOC法には標準的な計測ルールがない。富士通の合田氏は自らの経験から、その判断基準を作成。ISOで定義したコーディング規約やIPA/SECがまとめたコーディング作法ガイドなどに則ったコードが前提となる
[画像のクリックで拡大表示]

 逆に計測しない行として、開発支援ツールが自動生成したコード、ソフトウエア部品のコードなどを挙げる。労力をかけたコードを数えるのが基本と考えるためだ。コメント行や、デバッグをしやすくするために記述したコードも数えない。計測するのは、処理に直接関係する、命令行や宣言行、データ定義行(変数、定数定義など)といった行に限定する。

 難しいのが「保守開発」のステップ数である。修正する個所としない個所があるほか、修正する部分も修正の度合いはバラバラ。削除する場合はどうするかなども悩ましい。

 合田氏は「修正内容によって計測方法を分ける」と説明する。新規追加部分はもちろんカウントするが、書き換えの部分もカウントの対象とする。削除部分については、単独行の場合はそのままカウントし、連続した複数行の場合は2行(削除部分の始めと終わり)とカウントするという。

早い段階で技法が適用しづらい 情報不足でも計測できるよう改良

 要件があいまいな中で、ソフトウエアの大きさを推測するのは難しい。しかし、見積もりの現場で必要な情報がそろっていることはあまりない。見積もり時期が早くなるほど、その傾向は強くなる。それぞれの技法には必要な情報が決められているが、それが不足している状態ではその技法は使いにくい。技法が使いにくければ、アレンジしてしまうのも一つの方法だ。

 NECソフトの高山利彦氏(第二建設業SIグループ 建設業コンサルタント 建設基幹業務アプリケーションエキスパート)は、見積もりの初期段階でFP法を適用しづらいことに悩んでいた。「初期段階ではDFDやE-R図などほとんどない。IFPUG法を使ってFP数を出すのはほぼ不可能」(高山氏)。

 IFPUG法では「内部論理ファイル(ILF)」「外部インタフェース・ファイル(EIF)」など五つの機能を計測する。これをDFDやE-R図などから抽出するが、これらの詳細な仕様がそろうのは基本設計が完了した時点だ。

 初期段階でもFP数を推測できる「NESMA法」と呼ぶ技法もある。だがILFとEIFの数から全体のFP数を推測するため、どうしても精度が粗いという問題がある。

 それならと、高山氏は自らの経験をベースに、従来のFP法をアレンジした(図3)。独自に考案した方法は、初期段階でも入手しやすい機能一覧さえあれば計測できる。

図3●早い段階で技法を適用できるようアレンジする
FP法にはいくつかの種類があるが、情報が足りない初期段階ではIFPUG法が適用しづらい。NESMA法などのFP試算法では精度が粗くなる。NECソフトの高山氏は、自らの経験をベースに初期段階で簡易にFP数を算出できるテーブルを作成した
[画像のクリックで拡大表示]

 具体的にはまず、機能一覧から画面、バッチ、帳票、インタフェースという四つの機能を抽出し、それぞれ新規か変更かを特定する。次に各機能の複雑度を5段階で評価。あとは機能別に用意したテーブルに当てはめてFP数を算出する。今のところ「建設業に限定されるのかもしれないが、見積もり結果を検証するとIFPUG法の結果とほとんど差がない」と言う。

技法の穴をふさぐ:規模編--技法のルールは分かりにくい数え方の“迷い”をなくす相关推荐

  1. 技法の穴をふさぐ:工数編 --技法の穴をふさぐ:工数編

    「こんなはずじゃ-」と多くの人が首をかしげるのが.工数見積もり.技法の値や項目が現場の実態と乖離していることがままあるからだ.そんなとき.どうすればよいのか.先達の工夫に学ぼう. ソフトウエア開発の工 ...

  2. 软件开发工期估算系列(5)——規模見積もりの王様「LOC見積もり」 ~見積もりの基本技法 その2

    http://monoist.atmarkit.co.jp/mn/articles/1109/14/news011.html 「見積もり」は.ソフトウェア開発における大きなテーマであり.ソフトウェア工 ...

  3. 技法の穴をふさぐ:コスト編 --人月単価は案件ごとにバラバラ公表データで相場を知る

    精度高く工数を算出しても.単価の設定がいい加減ではコストがブレる.職種や工程はもちろん.地域やスキル・レベルでも相場は変わる.人月単価の相場はどうすれば把握できるか.専門家に解説してもらった.(本誌) ...

  4. puzzle(018.1)数墙、留方、黑白、数方

    目录 数墙(nurikabe) 5*5 7*7 数墙2(Tapa) 6*6 留方 5x5 黑白 6*6 8*8 数方 5x5 7x7 10x10 数墙(nurikabe) 在线play 玩家需要面对的 ...

  5. 【数方大数据】什么是三网运营商大数据精准获客?

    [数方大数据]什么是三网运营商大数据精准获客? 三网运营商大数据是近两年来行业营销的有效手段.它主要是根据运营商的终端用户数据和企业的一些特点,达到准确获取客户.精准营销的目的.在中国,移动.联通和电 ...

  6. 【数方大数据】装修行业怎么找客户?线上获客的渠道有哪些

         [数方大数据]装修行业怎么找客户?线上获客的渠道有哪些 三网运营商大数据是近两年来行业营销的有效手段.它主要是根据运营商的终端用户数据和企业的一些特点,达到准确获取客户.精准营销的目的.在中 ...

  7. 程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)

    测试使用语言:[Python] 由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文.做实验多数所用语言都是[Python]故而选择此语言. 代码运行平台:[win10 x64] 代码环 ...

  8. 3D建模低模与高模你还分不清楚,亏你学了这么久,白学了!

    3D建模是一个总称,在公司的项目上,3D建模分为:3D低模手绘(场景/角色),次世代高模(场景/角色). 3D低模手绘就是3D美术设计师根据原画设计师的构思,将二维的东西在3D软件里面制作出来,最终得 ...

  9. 唯品會大規模 Redis Cluster 的生産實踐

    1.生産應用場景 1.1 業務範圍 redis cluster在唯品會主要應用于後端業務,用作內存存儲服務.主要大數據實時推薦/ETL.風控.營銷三大業使用. cluster用于取代當前twempro ...

最新文章

  1. 矿井通风计算c语言_矿井通风机主要参数的含义
  2. centos7 安装MyCli MySQL 客户端
  3. MySQL中distinct和group by性能比较
  4. 1、java中自己觉得重要的部分——未完待续
  5. 在java反射中 Class.forName和classLoader的区别
  6. Reflex WMS入门系列七:收货(Receipt)
  7. 有道智云 php,有道智云编辑器 Android SDK
  8. 中国撸串指北:13万家烧烤店的吃货最爱
  9. iOS-发布按钮动画(类似于闲鱼发布),弹出动画github开源
  10. html表单验证spry,Spry验证表单教案
  11. 鱼眼深度估计!环视近场感知系列之几何预测
  12. 文件路径问题( ./ 和 ../ 和 @/ )
  13. 谁动了我的奶酪(读后感)
  14. Tomcat 优化
  15. 工作流之Camunda开发记录(一)----常用API与流程
  16. python求阿姆斯特朗数
  17. 无线网络安全工具锦集
  18. Exception in thread' main” java. 1ang. Runt imeException: Error while running command to get file pe
  19. Python异常处理+追溯
  20. 100个人围成一个圈从1开始报数,输入数m,报到m的人退出,继续从1开始报,报到m继续退出依次下去直到剩余的人小于m不再报数,输出剩下人的位置。

热门文章

  1. python爬取4399小游戏数据_25行代码带你爬取4399小游戏数据,看下童年的游戏是否还在...
  2. 洛谷 T244318 【图的存储】公路查询
  3. 《大数据时代》作者:谁是胜利者,谁是失败者?
  4. 移植webrtc到安凯平台
  5. rootkit for linux 5.啥是skb
  6. LeetCode-1587. 银行账户概要 II
  7. THUWC2018咸鱼记
  8. openstack-云平台镜像制作-centos-win2k16
  9. IDEA怎么在单独的窗口显示差异和并排两排显示代码?
  10. 计算机程序设计中数学,数学思维在计算机程序设计中的体现