COSMICファンクションポイントとは何で、工数による見積もりとはどう違うのですか?
ブダペストのソフトウェア開発会社であるMesterséges Intelligencia Központ Kft. は、ソフトウェアの規模をCOSMICファンクションポイントで測定しています。そのため規模は推定する人の感覚ではなくソフトウェアの特性となり、検証でき、測り直すことができ、2つのお見積もりの比較にも使えます。
要点: COSMIC(ISO/IEC 19761)は、ソフトウェアの機能規模を測定します。Entry(入力)、Exit(出力)、Read(読み込み)、Write(書き込み)のデータ移動は、1つにつき1 COSMICファンクションポイント(CFP)です。工数の推定が示すのは、推定する人がどれだけの作業を見込んでいるかであり、測定した規模が示すのは、タスクがどれだけ大きいかです。そのため規模は検証でき、測り直すことができ、2つのお見積もりの比較にも使えます。そして工数は、規模と実績に基づく生産性から導き出せます。
機能規模測定とは何ですか?
ソフトウェアの規模は、プログラムの行数、時間、ポイントなど、さまざまな方法で表せます。機能規模測定(英語ではfunctional size measurement、FSM)は、ソフトウェアがどのように実装されるかではなく、ユーザーの視点から見てソフトウェアに何ができる必要があるかを測定します。その基本概念はISO/IEC 14143-1:2007規格で定められています。規格の説明によれば、目的はまさに、測定の焦点を実装の方法からユーザーが求める機能へと移すことにあります。
測定の基礎となるのは、機能ユーザー要件(functional user requirements、FUR)の範囲です。これは、ソフトウェアが実行しなければならないタスクとサービスを記述した、ユーザー要件の一部です。性能、セキュリティ、選択した技術はここには含まれません。これらについては、下の限界の節でご説明します。
標準化された機能規模測定手法は複数あります。最もよく知られているのはCOSMIC(ISO/IEC 19761:2011)とIFPUG法(ISO/IEC 20926:2009)で、ISOはほかの手法も標準化しています(NESMA、FiSMA、Mk II)。いずれも要件をもとにしますが、ルールも単位も異なるため、異なる手法で測定した数値は直接比較できません。
COSMICとは何ですか?
COSMICは、Common Software Measurement International Consortiumの略称で、手法を管理し、測定者の認定を運営する非営利団体です。この手法は90年代末に、それ以前のファンクションポイント手法を発展させる形で生まれ、2003年にISO規格となりました。現在有効な版はISO/IEC 19761:2011です。手法の詳細な説明であるCOSMIC Measurement Manualのバージョン5.0は無料でダウンロードでき、第1部は2021年、第2部は2024年に発行されました。
規格によれば、この手法は、アプリケーションソフトウェア(たとえば業務システム)、リアルタイムソフトウェア、そしてその両方を組み合わせたものの測定に適しています。つまり、ERP、CRM、ECサイトのシステムも、制御ソフトウェアも、この手法で測定できます。
COSMICモデルの概念
COSMICは、ソフトウェアをシンプルなモデルで表します。ソフトウェアは境界を越えて機能ユーザーとデータをやり取りし、境界の内側では永続ストレージからデータを読み込み、永続ストレージにデータを書き込みます。
| 概念 | 意味 | 例 |
|---|---|---|
| 機能ユーザー | ソフトウェアにデータを送る、またはソフトウェアからデータを受け取る人や物:人、別のソフトウェア、機器 | 事務担当者、請求書発行システム |
| 境界 | 測定対象のソフトウェアと機能ユーザーとの間にある概念上のインターフェース | ウェブ画面と、ほかのシステムに向けて公開されたインターフェース |
| トリガーイベント | 機能ユーザーがプロセスを開始するきっかけとなるイベント | 新しい顧客が申し込む |
| 機能プロセス | 要件の基本的で、単独で実行できる単位。ひとまとまりのデータ移動の連なり | 「新規顧客の登録」 |
| データグループ | ソフトウェアがデータを扱う必要のある1つの対象について記述した、データ属性のまとまり | 顧客:氏名、住所、税番号、メールアドレス |
| データ移動 | 1つのデータグループの移動。4種類がある | 下記参照 |
4つのデータ移動:
- Entry(入力): データグループが、機能ユーザーから境界を越えてプロセスに届きます。
- Exit(出力): データグループが、プロセスから境界を越えて機能ユーザーへ出ていきます。
- Read(読み込み): プロセスが永続ストレージからデータグループを読み込みます。
- Write(書き込み): プロセスが永続ストレージにデータグループを書き込みます。削除も書き込みとして数えます。
計数を左右する測定ルールのうち、いくつかを挙げます:
- データ移動は1つにつき1 CFPです。機能プロセスの規模はそのデータ移動の合計で、ソフトウェアの規模はプロセスの規模の合計です。
- 機能プロセスは、少なくとも2つのデータ移動から成ります。トリガーとなる入力1つと、少なくとも1つの出力または書き込みです。
- 1つのプロセスの中では、同じデータグループに対する同じ種類の移動は、項目がいくつあっても1回しか数えません。
- プロセスのエラーメッセージと確認メッセージは、すべてまとめて1つの出力です。
- 規模は種類によって決まり、発生回数には左右されません。1日に登録する顧客が10人でも1万人でも、規模は変わりません。
- この手法は、データの処理(計算、検証)を個別には測定しません。それは該当するデータ移動の一部です。
結果は比例尺度で表されるため、規模は足し合わせたり比較したりできます。40 CFPの部分が2つあれば合計で80 CFPになり、小計は機能グループごとにも示せます。
具体例:「新規顧客の登録」
シンプルな要件を例にとります。「事務担当者が新規顧客の情報(氏名、住所、税番号、メールアドレス)を登録します。システムは、その顧客がまだ登録されていないことを確認し、保存して、成功またはエラーを通知します。」測定のステップは次のとおりです:
- 機能ユーザーは事務担当者で、トリガーイベントは新しい顧客が申し込むことです。
- データグループは「顧客」です。4つのデータ属性は同じ対象について記述しているため、1つのグループになります。
- データ移動を要件の文から特定し、それぞれを数えます。
| ステップ | データ移動 | データグループ | 規模 |
|---|---|---|---|
| 事務担当者がフォームを送信する | Entry(入力) | 顧客 | 1 CFP |
| システムが、顧客がすでに存在するかを確認する | Read(読み込み) | 顧客 | 1 CFP |
| システムが新規顧客を保存する | Write(書き込み) | 顧客 | 1 CFP |
| 成功またはいずれかのエラーの通知 | Exit(出力) | エラーメッセージと確認メッセージ | 1 CFP |
| 合計 | 4つのデータ移動 | 1つのデータグループ | 4 CFP |
COSMICのウェブサイトで公開されているガイドの「新しい従業員の登録」の例も、同じように構成されています。要件の変更は、規模に次のように表れます:
- システムが新規顧客を請求書発行システムにも渡す必要がある場合、それは別の機能ユーザーに向けたもう1つの出力となり、5 CFPになります。
- 郵便番号を市町村の一覧表で確認する必要がある場合、別のデータグループに関わるため、もう1つの読み込みとなり、さらに1 CFP増えます。
- フォームが顧客について4項目ではなく12項目を求める場合でも、データグループは同じなので、規模は変わりません。
- 既存のプロセスを変更する必要がある場合、変更の規模は、追加、変更、削除されたデータ移動の合計です。
この例からは、測定を検証できる理由もわかります。各CFPの背後には、名前の付いた要件、データグループ、ルールがあります。誰かが異議を唱えた場合でも、どの行が問題なのかを正確に示せます。
早めに測定し、あとで精緻化する
COSMICの測定は、測定の目的と範囲を定めることから始まります。何を測定するのか、何を含めるのか、結果を何に使うのかです。正確な測定には、機能プロセスとそのデータ移動を特定できるほど詳細な要件が必要です。プロジェクトの初期には、そのような要件がまだないことも少なくありません。その場合に向けて、COSMICは初期の規模推定のために公開されている近似手法を勧めており、要件を詳しく定めたあとで正確な測定を行うことができます。
手法のガイドラインは、当初は非機能的に見える多くの要望(たとえば応答時間や使いやすさ)が、プロジェクトの進行とともにソフトウェアの機能に変わり、そのために規模が見かけ上増えることにも注意を促しています。これは測定の欠陥ではなく、要件がより正確になったことを示しています。そのため実務上は、仕様を項目ごとに書き、変更を同じ手法で測り直し、変更の規模を別に示すことをお勧めします。そうすれば、作業範囲の拡大は気づかないうちに起こるのではなく、数値として見えるようになります。
比較:工数、ストーリーポイント、IFPUG、COSMIC
| 観点 | 工数の推定 | ストーリーポイント | IFPUGファンクションポイント | COSMICファンクションポイント |
|---|---|---|---|---|
| 何を表すか | 推定する人が見込む作業 | チームによる相対的な推定。規模、工数、期間のどれを表すのかが常に明確とは限らない | 機能規模 | 機能規模 |
| 標準化されているか | いいえ | いいえ | はい、ISO/IEC 20926:2009 | はい、ISO/IEC 19761:2011 |
| 何に左右されるか | 推定する人の経験、慎重さ、チーム | そのチーム。チームごとに意味が異なる | 要件 | 要件 |
| 外部から検証できるか | 推定する人の説明に基づいてのみ | チームの外からはほとんどできない | はい、公開されたルールに基づいて | はい、公開され無料で入手できるルールに基づいて |
| 単位 | 時間 | チーム独自のポイント | IFPUGファンクションポイント | CFP、1 CFP = 1データ移動 |
| 最も適した用途 | 短く、よく理解されたタスクの計画 | チーム自身のスプリント計画 | 規模の測定、比較 | 規模の測定、比較、お見積もりとスケジュールの基礎 |
工数の推定は悪い道具ではなく、測っているものが違うだけです。それは見込まれる作業であり、タスクの規模だけでなく、チームの知識、ツール、慎重さにも左右されます。ストーリーポイントはチーム内の計画には役立ちますが、COSMICのウェブサイトで公開されているガイドによれば主観的であり、その意味はチームごとに異なります。IFPUGとCOSMICはどちらも標準化された機能規模ですが、ルールが異なるため、2つの手法の数値を互いに置き換えることはできません。
なぜ測定した規模のほうが信頼できる基礎になるのですか?
タイトルの問いに正確に答えると、COSMICは工数をより正確に推定するのではなく、タスクの大きさを測定し、それによって工数の推定がより信頼できるものになります。理由は次のとおりです:
- 実装ではなく要件を測定します。 機能規模は要件だけから導かれるため、技術、プロセス、ソフトウェアを誰が開発するかに左右されません。
- 公開されたルールに基づいて測り直せます。 ルールは公開されており、測定結果は文書化しなければならないため、別の測定者が同じ仕様から検証できます。
- 規模と生産性を分けて扱います。 工数の推定は、規模と実績に基づく生産性から導かれます(工数 = 規模 / 生産性)。そのため、どの要因がなぜ変わるのかがわかります。
- 測定によって要件が改善されます。 COSMICのガイドによれば、早い段階での測定は、あいまいな要件、矛盾する要件、欠けている要件を見つけるのに役立ちます。
- 比較できます。 同じ仕様に対する2つのお見積もりは同じ規模になるため、料金は同じ作業範囲を対象とします。
COSMICのガイドは、CFPで測定した規模が、ストーリーポイントで表した推定よりも実際の工数と密接に連動したという複数の調査を引用しています。同じガイドは、規模から推定した工数が信頼できるのは、開発プロセスに十分な再現性があり、工数が主に規模によって決まる場合であることにも注意を促しています。つまり、測定した規模はより良い出発点ですが、良い推定には生産性も把握しておく必要があります。
COSMICが測定しないものは何ですか?
COSMICの規模は機能を測定するものであり、手法の説明もそのことを明言しています。表さないものは次のとおりです:
- 複雑なアルゴリズム: 規格によれば、この手法は、複雑な数学的アルゴリズムや特殊なルール体系を特徴とするソフトウェア(たとえばエキスパートシステム、シミュレーション、自己学習型ソフトウェア、天気予報)の測定を想定して設計されていません。
- 連続信号の処理: 音声処理や画像処理、またたとえばコンピューターゲームのそうした部分も、規格の適用範囲外です。
- 本来の非機能要件: 手法によれば、技術、性能、プロジェクトに関する制約は記録する必要がありますが、CFPでは測定しません。
- 創作的な作業: COSMICのガイドによれば、芸術作品の制作のような純粋に創作的なタスクは、この手法の対象ではありません。そのため、グラフィックや独自のビジュアルデザインの作業は、規模には表れません。
- 既製パッケージの導入: 要件の大部分が既製品の設定でまかなえる場合は、そのパッケージに特有の方法で工数を推定するのが適切です。
そのため良いお見積もりは、測定した規模とあわせて、規模では表せないものを別に示します。連携、非機能要件、独自の画面とグラフィック、複数のプラットフォーム、データ移行、複雑な計算、リアルタイムの動作です。当社のお見積もりでは、これらの項目をこのように記載しています。詳しくは料金の考え方のページでご説明しています。
当社自身の業務ではどのように使っていますか?
当社は、開発の機能規模をCOSMICファンクションポイントで測定しています。測定のために、人工知能の支援を受けた独自のワークフローを構築し、その結果は見直しのラウンドで人が確認します。ステップは次のとおりです:
- 項目別の仕様: 開発を機能グループに分け、それぞれを同じテンプレートで記述します。目的、アクター、データ、機能、AI機能、そして対象外のものです(仕事の進め方をご覧ください)。
- 互いに独立した複数回の計数: 各機能グループを、複数の言語モデルがそれぞれ複数回数えます。計数のばらつきが不確かさを示します。
- 照合のラウンド: 各機能プロセスが、複数の記述に登場する場合でも、ちょうど1回だけ数えられるようにします。
- 見直し: 測定を確認し、不確かな点を明らかにし、必要に応じて自動的な統合を手作業で修正します。
- 確定: 完成した測定は変更できないバージョンとして確定でき、それが契約の基礎になります。
既存システムの追加開発では、既存の部分を別に記述するため、規模には新しい部分だけが含まれます。測定は、機能規模では表せないものも示します。
規模からどのようにお見積もりとスケジュールを作成するのですか?
お見積もりの料金は、測定した規模から算出し、規模では表せない項目を加えます。規模は機能グループごとにも把握できるため、スケジュールもそれに基づいて組み立てます。各段階の順序、デモの内容、期日です。途中で新しい要望が生まれた場合も同じように測定するため、作業範囲がどれだけ変わり、それが料金とスケジュールにとって何を意味するのかがわかります。そのため具体的な料金と期日は、最初の会話をもとにではなく、測定のあとでお伝えします。
規模による2つの見積もりの比較
複数の開発会社に見積もりを依頼する場合、規模は、それらが同じタスクに対するものかどうかを判断する助けになります。次のように進めることをお勧めします:
- 同じ仕様: 見積もりを提出するすべての会社に、同じ項目別の記述を渡します。
- 規模とプロセスの一覧: どの規模と、どの機能プロセスに対して料金を出したのかを確認してください。
- 違いの理由: 2つの見積もりが異なる場合、規模、規模では表せない項目、規模あたりの単価のどこが異なるのかを確認してください。
- 別項目: 何が別の行に記載されているか(連携、データ移行、運用)、何が料金に含まれていないかを尋ねてください。
- 変更の扱い: 途中での変更をどのように測定し、料金に反映するのかを尋ねてください。
見積もりを提出する会社が機能規模を測定していない場合でも、同じ項目別のプロセス一覧に対して料金を出していれば、その見積もりは比較できます。開発会社選びのほかの観点についてはソフトウェア開発会社はどのように選べばよいですか?の記事でご説明しています。また、そもそもオーダーメイド開発が必要かどうかは、オーダーメイドのソフトウェアか、既製のソリューションか?の記事が判断の助けになります。
よくあるご質問
COSMICファンクションポイントとは何ですか?
COSMICファンクションポイント(CFP)は、ISO/IEC 19761規格に基づく、ソフトウェアの機能規模の単位です。1 CFPは1つのデータ移動、つまり機能プロセスにおける1つのデータグループの入力、出力、読み込み、書き込みのいずれかです。ソフトウェアの規模は、そのプロセスのデータ移動の合計です。
工数の推定とはどう違いますか?
工数の推定は見込まれる作業を示すもので、推定する人とチームによって変わります。COSMICは、公開されたルールを使って要件からタスクの規模を測定するため、同じ仕様からであれば、ほかの人も同じ結果にたどり着けます。工数は、そのあとで規模と実績に基づく生産性から導き出せます。
COSMICが測定しないものは何ですか?
規格によれば、COSMICは複雑な数学的アルゴリズムや連続信号(音声、画像)の処理の測定を想定して作られておらず、性能や技術に関する制約といった本来の非機能要件もCFPでは表しません。良いお見積もりは、これらを別の項目として示します。
誰が測定し、その測定は検証できますか?
測定は、手法を理解している測定者が行います。当社では、AIの支援を受けたワークフローが計数し、その結果を人が見直します。ルールは公開されており、測定はプロセスごとに文書化されているため、手法を理解している別の専門家が同じ仕様から検証できます。
規模からどのようにお見積もりを作成するのですか?
料金は測定した規模から算出し、規模では表せないもの(連携、非機能要件、独自のグラフィック、複数のプラットフォーム、データ移行)を加えます。スケジュールは機能グループごとの規模に基づいて組み立て、変更も同じように測定します。詳しくは料金の考え方のページをご覧ください。
当社がお手伝いできること
オーダーメイドのソフトウェアをご検討中でしたら、項目別の仕様を一緒に書き、その規模をCOSMICファンクションポイントで測定し、そこからお見積もりとスケジュールを作成します。ご要望に応じて秘密保持契約(NDA)を締結します。引き渡し後の運用・保守もお引き受けします。ソースコードと利用権の扱いは、契約で定めます。初回のご相談は無料です。お問い合わせのページに記載の連絡先までご連絡ください。
出典
- COSMIC Measurement Manual v5.0, Part 1: Principles, Definitions and Rules (PDF)
- COSMIC Measurement Manual v5.0, Part 2: Guidelines (PDF)
- COSMIC: A Guide to Software Size Measurement (PDF)
- COSMIC Measurement Manual: ダウンロード
- ISO: ISO/IEC 19761:2011, COSMIC: a functional size measurement method
- ISO: ISO/IEC 14143-1:2007 (Functional size measurement, Part 1: Definition of concepts)
- ISO: ISO/IEC 20926:2009, IFPUG functional size measurement method