(57)【要約】      （修正有）【課題】プログラム単位の細かい粒度で論理的な裏付けのある見積り方法を提供する。【解決手段】ステップ１では小処理単位よりは大きくないプログラムやファイルなどの抽出単位で抽出単位導出属性を人かまたはプログラムで自動的に抽出し、ステップ２では抽出単位導出属性を単調に増加する一次元または二次元の関数を使って抽出単位機能量へ変換し、ステップ３では抽出単位機能量を工数の見積り単位として小処理単位で括り且つ機能量種別の同じ同士を小処理単位機能量に集約し、ステップ４では全ての小処理単位について小処理単位ごとに機能量種別の同じ小処理単位機能量と工数変換係数との積を足し合わせて小処理単位見積り工数を算出し、ステップ５では小処理単位ごとの機能量種別数の小処理単位機能量と小処理単位ごとの実投下工数とから回帰分析法を用いて機能量種別数の工数変換係数を算出する。【選択図】図１７
2013178618.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのような小処理単位（１２）でのソフトウエア開発工数の見積りを可能とするステップ１からステップ５までのプロセスから成る見積り方法であり、ステップ１では小処理単位（１２）よりは大きくないプログラムやファイルなどの抽出単位（１１）で抽出単位導出属性（８）を人かまたはプログラムで自動的に抽出し、ステップ２では抽出単位導出属性（８）を単調に増加する一次元または二次元の関数を使って抽出単位機能量（３）へ変換し、ステップ３では抽出単位機能量（３）を工数の見積り単位として小処理単位（１２）で括り且つその際にＦＰ法（１）のようにシステム全体でひとつの機能量に集約せずに機能量種別の同じ同士を小処理単位機能量（３a）に集約し、ステップ４では全ての小処理単位（１２）について小処理単位（１２）ごとに機能量種別の同じ小処理単位機能量（３ａ）と工数変換係数（７）との積を足し合わせて小処理単位見積り工数（１５）を算出し、ステップ５では小処理単位（１２）ごとの機能量種別数の小処理単位機能量（３ａ）と小処理単位（１２）ごとの実投下工数（１６）とから回帰分析法を用いて機能量種別数の工数変換係数（７）を算出する見積り方法。
【請求項２】
請求項１を満たすソフトウエア開発工数の見積り方法であり、精度の高い工数変換係数（７）を得るためにステップ５における工数変換係数（７）の算出を開発前に見積った小処理単位機能量（３ａ）と実投下工数（１６）から算出せずに、開発後の最終成果物から正味の抽出単位導出属性（８）と小処理単位機能量（３ａ）を再見積り（１３）し、その正味の小処理単位機能量（３ａ）と実投下工数（１６）とから工数変換係数（７）を算出する見積り方法。
【請求項３】
請求項１のソフトウエア開発工数見積り方法に基づいてプログラムのような小処理単位（１２）での見積りを可能とするコンピュータを使ったシステムであり、システム内部に少なくとも小処理単位機能量集約部（３４）と小処理単位見積り工数算出部（３５）を持ち、小処理単位機能量集約部（３４）では機能量を集約する際にＦＰ法１のようにシステム全体でひとつに集約せずに機能量種別の同じ抽出単位機能量（３）同士を難易度補正係数（６）も考慮して小処理単位（１２）に集約し、小処理単位見積り工数算出部（３５）では、小処理単位（１２）ごとに機能量種別の同じ小処理単位機能量（３ａ）と工数変換係数（７）の積を足し合わせて小処理単位見積り工数（１５）を算出する方法を全ての小処理単位（１２）に対して行うシステム。
【請求項４】
請求項３を満足するシステムであり、システム内部に少なくとも抽出単位導出属性抽出部（２１）と抽出単位導出属性変換部（３３）を持ち、抽出単位導出属性抽出部（２１）ではコンパイラ技術で公知のプログラム抽象構文木のノード情報、ポインタ情報を開発後のプログラムの外部情報として作成してから工数見積りの元情報になる抽出単位導出属性（８）をその外部情報からプログラムで自動抽出し、抽出単位導出属性変換部（３３）では抽出単位導出属性調整部（２０）などで入力するかもしくは抽出単位導出属性抽出部（２１）で自動抽出する抽出単位導出属性（８）を抽出単位機能量（３）へと変換するについて、抽出単位導出属性（８）の一単位の違いをも抽出単位機能量（３）へ反映するために単調に増加する一次元または二次元の関数を使うシステム。
【請求項５】
請求項３と請求項４を満たすシステムであり、システム内部に少なくとも保守抽出単位導出属性調整部（２０）と保守前後抽出単位導出属性差分加工部（２５）を持ち、保守前後抽出単位導出属性差分加工部（２５）では、保守時の工数見積りを単純化するために抽出単位導出属性抽出部（２１）によって保守前後の最終生成物から自動抽出した抽出単位導出属性（８）の差分を算出し、その差分を保守時の抽出単位導出属性（８）と見なすことでその後は請求項３請求項４を満たすシステムを適用して保守工数を見積り、保守前抽出単位導出属性調整部（２０）では抽出単位導出属性抽出部（２１）によって保守前の最終生成物から抽出・加工した抽出単位導出属性（８）かもしくは保守抽出単位導出属性調整部（２０）で作成した差分の抽出単位導出属性（８）かもしくは前工程の見積りで使った抽出単位導出属性（８）のいずれかを選択的に表示して抽出単位（１１）ごとに追加・削除・更新の識別区分を付加して編集するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ソフトウエア開発工数をプログラム等の小処理単位１２で見積り可能にしたソフトウエア開発工数見積り方法とそれをコンピュータを使って実用化したソフトウエア開発工数見積りシステムの構造に関する。
【背景技術】
【０００２】
従来技術とその問題点
（問題点１）
ソフトウエアの開発工数の見積り方法には、ＬＯＣ法やＦＰ法１、およびＦＰ法１を基に新たに提案されたＭａｒｋII法、ＦＦＰ法、３ＤＦＰ法などがあるが、ＬＯＣ法を除いてＦＰ法１がベースになっており、先ず工数に連動すると考えられる機能量を算出し、それを工数に換算する方式をとっている。最近のＵＭＬモデルから見積るユースケース法も実は入口が異なるだけで内容はＦＰ法１とまったく同じである。その見積りの元になる機能量は見積り対象システムの構造的な要素即ち抽出単位導出属性８と難易度補正係数６から決められる。ＦＰ法１では、式１に示すように抽出単位機能量３の総和（未調整機能量４）に難易度補正係数６を乗じて調整済機能量５を算出し、更に式２で調整済機能量５に工数変換係数７を乗じて工数を求める。
調整済機能量５＝難易度補正係数６×未調整機能量４
＝難易度補正係数６×ΣｐΣｉ（抽出単位機能量３ｉｐ）    式１
全体開発工数＝工数変換係数７×調整済機能量５                            式２
ｉは機能量種別を識別するインデックス
ｐは抽出単位１１
難易度補正係数６は難易度が機能量の何倍相当かを示す補正係数で無単位
工数変換係数７は調整済機能量５を工数に換算する係数
Σｐは全抽出単位１１についての総和、Σｉは全機能量種別についての総和
式２はまた図６のように表現される。式２は対象システム全体を示し、プログラム等の小さな処理単位１２を扱うものではない。しかるに抽出単位導出属性８は式１のようにデータやトランザクションというより小さな抽出単位１１で抽き出される。式１の抽出単位機能量３ｉｐは開発量に連動すると考えられるファイルやトランザクションの規模を示す５種類の機能量で，それぞれ２種類のデータ抽出単位機能量９（ＩＬＦ／ＥＩＦ）、３種類のトランザクション抽出単位機能量１０（ＥＩ／ＥＯ／ＥＱ）がある。各抽出単位機能量３ｉｐは、抽出単位導出属性８から決定される。例えばデータ抽出単位機能量９はレコードタイプ数１７（ＲＥＴ数）とデータ単位数１９（ＤＥＴ数）から決定され、トランザクション抽出単位機能量１０はデータ単位数１９（ＤＥＴ数）、参照ファイルタイプ数１８（ＦＴＲ数）から決定される。ところがこの要素機能導出属性８は式１のようにシステム全体でひとつの調整済機能量５に集約されてしまう。このやり方では機能量種別と開発作業との影響度が考慮されないのでＰＧのような小処理単位１２では見積ることはできない。
ところで式１では、調整済機能量５に難易度補正係数６も係わってくる。難易度補正係数６は、FP法１では１４項目もの様々な要因を考慮するものの、抽出単位導出属性８のような構造的な要素の積上げではなく結局はトータルで調整済機能量５が何倍になるかという見方しかしない。そのため本発明では難易度補正係数６の精度アップは重視せず、これらの要因はいずれ構造的な要素として取り込まれてゆくことを予想しこれに対応するための新たな機能量を簡単に追加できる仕組みの自由度の方を重視する。
【０００３】
（問題点２）
またデータ抽出単位機能量９は図４に示すマトリックス変換表１４で変換し、トランザクション抽出単位機能量１０は図５に示すマトリックス変換表１４で変換する。このマトリックス変換表１４は導出属性に対して３段階の階段状であり小処理単位１２としての見積りに適用するには極めて粗過ぎる問題がある。
ＦＰ法１のモデルの欠点としてシステム全体で見積る場合よりもより小さな単位に分割して見積ると外部参照ファイル（ＥＩＦ）の個数が増加し機能量と見積り工数１５が増えてしまう問題がある。この点に開発作業の性質の違いを考慮する本発明とFP法１との考え方の違いが良く現われてくる。本来は開発作業の違いによって抽出単位導出属性８の括り方は変えられるべきであり、そのとき抽出単位１１は重複して括られる場合も重複しない場合もでる。ＦＰ法１では作業を区別しないので、大きく括ると重複してカウントすべき抽出単位１１が消えてしまう。この欠点は抽出単位１１を小処理単位１２に括る段階で作業の性質を考慮することで解決できる。
（問題点３）
保守の開発工数見積りについては、保守による影響度の調査工数が開発ドキュメントの整備状況や品質によって大幅に振れることがあり、一般的には新規開発よりも見積りが難しいと考えられている。事実保守ではＦＰ法１ではなくてＷＢＳ法かＬＯＣ法が用いられることが多い。そのひとつの原因はシステムの構造的な導出属性や機能量と係わらない調査工数の類を関連づけるから論理的な無理が起こるのであり、例えば正味の構築工数と調査工数とを切り分けて扱えば運用面から精度を上げることができる。
しかしもっと本質的な問題がある。保守作業にはプログラムやファイル単位で追加、更新、削除をするような作業がある。ＦＰ法１の場合は作業を見ずにグロスで見るので、そもそも追加、更新、削除に当たる抽出単位導出属性８や小処理単位機能量３ａが不明確になる問題が起きる。例えば見積る作業の違いによってデータかトランザクションのどちらの機能量種別を使うのか、あるいは両方を使う場合どのトランザクションとデータの抽出単位導出属性８を小処理単位１２として括るべきか立ち往生したり、またどのファイルがＩＬＦかＥＩＦか明確でなかったりする。これを小処理単位１２に見積ることではっきりさせ、小処理単位１２ごとの追加、更新、削除工数に対応する適切な抽出単位導出属性８と小処理単位機能量３ａの算出ルールを決めれば良い。その最も合理的でシンプルな方法のひとつは保守前後の抽出単位導出属性８の差分を保守作業のための抽出単位導出属性８と見なし、その後は新規開発の場合と同じ流れで保守工数を算出することである。
（問題点４）
もうひとつＦＰ法１との立場の違いを明らかにしなければならない。ＦＰ法１は主として開発の初期で、システムの構成の細部は見えない段階で使われる見積り法である。その段階では顧客インターフェースとアプリケーション境界を越えるデータの流れしか見えないことが少なくない。アプリケーション境界を越えない情報の流れは隠れている。このような状態で見積るので、ＦＰ法１はある程度の誤差を想定したものである。本発明ではそこの情報量を増やして精度を上げることよりも、もっとシステム構成が見えてきた後工程の段階でより粒度の細かい処理単位（最後はプログラム単位）の工数見積りを実現する狙いがある。現状はここの部分はＷＢＳ法などで一旦細かく作業単位に分割したうえで経験的な工数を当て嵌めている。いわば開発工程によって異なる見積り方法が適用されていることになるので、工程が進むたびに導出属性や機能量がどの程度振れたのか把握することが難しい問題がある。しかしこれは問題点１〜問題点３を解決することで解決できる。
次により詳しく技術的な３つの問題点と解決の方向について述べる。
【０００４】
問題点１と解決の方向
ＦＰ法１では式１、式２に示すごとくシステム全体をひと括りに纏めて処理をする。最初からプログラム単位のような小処理単位１２を扱う考え方がないので先ずこのところから違うのである。またシステム全体をひと括りに纏める際に異質な作業からなる開発工数をひとまとめにして、抽出単位機能量３を固定的な重み付けでひとつの調整済機能量５に集約してしまう。同じ機能量種別同士を加算するのは分かるが、異なる種別の機能量同士を加算する妥当性が分かり難い。開発作業ごとにそれぞれの機能量種別の比重が変わると考える方が妥当である。
もっと分かり易く説明する。
図８は異なる開発作業に対するデータとトランザクション機能量種別の影響度を示している。例えばデータ設計に係わる作業、プログラム構築に係わる作業、テスト工程に係わる作業など作業別に工数を見積る場合、FP法１のように全工程一律の工数変換係数７は適用できない。連結テスト作業のように、データとトランザクション機能量の両方が係わる場合もあれば、プログラム開発のように主としてトランザクション機能量だけが係わる作業、ファイル設計のように主としてデータ機能量が係わる作業もある。
この抽出単位機能量３をFP法１のようにシステム全体で括るのではなく、開発作業の違いを考慮した小処理単位１２で集約するようにする。小処理単位１２の括りは、必ずしもプログラム単位、ファイル単位とは限らず、連結テスト作業のように全体で括る場合もある。
その小処理単位１２で抽出単位機能量３を集約する場合は飽くまで同じ機能量種別同士とし、異なる機能量種別を集約することはしない。
これを式で表せば式３、式４のようになる。式３の難易度補正係数６は抽出単位機能量３の何倍相当になるかを示す補正係数であり、小処理単位１２ごと抽出単位１１ごとに取り得るものとしている。但し小処理単位１２と抽出単位１１が一致する場合が多く、式３で難易度補正係数６ｐｋと難易度補正係数６ｋと難易度補正係数６ｐは同じと見なせることが多い。
【０００５】
この小処理単位１２に集約した機能量を使って工数を算出する式が式４である。
小処理単位機能量３ａｉｋ＝Σｐ難易度補正係数６ｐｋ×抽出単位機能量３ｉｐ  式３
小処理単位見積り工数１５ｋ
＝Σｉ（小処理単位機能量３ａｉｋ×工数変換係数７ｉ）  式４
ｉは機能量種別を識別するインデックス
ｋは小処理単位１２
ｐは抽出単位１１
難易度補正係数６ｐｋは難易度が機能量の何倍相当かを示す係数で無単位
工数変換係数７ｉは機能量を工数に換算する係数
Σｐは全抽出単位１１についての総和、Σｉは全機能量種別についての総和
【０００６】
式３と式４を図で表現すれば図８、図９のように表せる。式１・図６と式３・図８とは明らかに形が異なる。式１・図６は抽出単位機能量３をひとつの調整済機能量５に纏め、式４・図９では、抽出単位機能量３を小処理単位１２で集約するが、異種の抽出単位機能量３をひとつに纏めることはしない。また式２と図７はひとつに集約した調整済機能量５に工数変換係数７を乗じて開発工数を見積るが、式４と図９は複数の機能量種別の小処理単位機能量３ａとそれに対応した複数の工数変換係数７の積の和で算出する。
異種の機能量種別をひとつに纏めなければ、抽出単位導出属性８から抽出単位機能量３へのマトリックス変換表１４の機能量種別ごとの重み付けの絶対値は問題でなくなる。重み付けは工数変換係数７を実投下工数１６と小処理単位機能量３ａから算出する際に回帰分析法に任してしまえばよい。こうすることで、技術とともに変化するシステムの造りに合わせて新たな導出属性や機能量を増やすことがずっと容易になってくる。これは大きなメリットである。
ところが一方で式３、式４ではプログラム数に等しい小処理単位１２が出てしまうため人手ではとても手に負えない。
また式２の場合は工数変換係数７をそのまま全体の開発生産性の指標と見なせるが、式４の場合は、工数変換係数７が複数個出るのでそれを全体の開発生産性の指標にはできない。むしろ個別の機能量種別に対する生産性の指標が見えるというべきだろう。
式４に基づく見積り法が期待できる点は、プログラム単位のような小処理単位１２にも適用でき、従ってまたより緻密な精度の高い見積りが期待できることである。これを人手でやるのは困難であるが、コンピュータで自動的にやれば問題はない。
【０００７】
問題点２と解決の方向
ＦＰ法１は、そもそもプログラム単位のような小処理単位１２の見積りには向いていない。例えば図４、図５のマトリックス変換表１４による抽出単位機能量３への変換方法では、抽出単位導出属性８が大中小（難中易）三階段で変換され、かつ一定値以上は頭打ちになる。この方法では抽出単位導出属性８の小さな変化を拾えないので概算見積りはできても小処理単位１２には適用できない。小処理単位１２の見積りでは、抽出単位導出属性８が単調増加で連続的に変換できることが必須である。もしプログラムのような小処理単位１２で見積りができれば、きめ細かな開発生産性の管理の実現や生産性改善活動に繋がる。この連続関数による変換式はＦＰ法１より複雑になるが、コンピュータで算出すればまったく問題はない。
また見積り精度には機能量の精度と工数変換係数７の精度の問題がある。精度の低い見積り機能量と実投下工数１６から工数変換工数７（＝生産性指標）を算出してもその精度は悪くなる。正味の機能量から工数変換係数７を算出すれば工数変換係数７の精度は上るが、そのためには最終生成物から正味機能量を求め直すのが一番適当であろう。それを手作業でやっては工数がかかるので、最終生成物から抽出単位導出属性８を抽出する作業をプログラムで自動的に行えるようにすれば良い。少なくとも詳細設計以降はプログラムの粒度で扱えるのでこの正味機能量から工数変換係数７を算出する方法を当て嵌めることができる。
保守開発では既存の生成物からプログラムで自動的に抽出単位導出属性８を抽出すれば、保守の抽出単位導出属性８の抽出の手間を省くことができる。
【０００８】
問題点３と解決の方向
保守作業では保守前の抽出単位導出属性８をプログラムで読み出せば、それを手作業で抽出する負荷を軽減できる。その自動抽出した抽出単位導出属性８を画面に表示し、保守前のプログラムから削除される抽出単位導出属性８、保守後に新たに追加される抽出単位導出属性８、それと更新される差分の抽出単位導出属性８を画面から保守追加／更新／削除区分を指示し更新できればよい。
また保守後の正味機能量による確認再見積り１３については、保守前後の生成物の抽出単位導出属性８をプログラムで自動的に読み出し、両方の抽出単位導出属性８の差分を算出して画面に表示し、必要なら見直しを加えられるようにすれば負荷が軽減できる。
保守の場合と同様の考え方が新規開発の正味機能量による確認再見積り１３については適用できる。全くの新規開発の場合は要素機能導出属性８をプログラム抽出できないので、前工程の抽出単位導出属性８を表示し前工程から追加・変更された部分だけを修正できるようにすれば調査工数も入力工数も効率化できる。ただしこの新規開発の機能は保守開発対策に加えて新たな対応策は必要としないので以後の説明は省く。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−２２２０８０号公報
【非特許文献】
【００１０】
【非特許文献１】「実践ファンクションポイント法」、児玉公信、日本能率協会マネジメントセンター、1999
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ソフトウエア開発では顧客からシステム全体のグロスな見積りばかりではなく特に保守の場合は数本規模のプログラム単位の見積りが求められる。また社内で個人別の開発生産性を管理する場合は、プログラム単位の粒度の見積り精度と実績を必要とする。一般の製造業では構成部品に到るまで標準工数が設定され実績が収集されるのが当り前だが、ＩＴ業界では細かな粒度の見積りと実績収集がひろく定着しているわけではない。
この発明で解決したい課題は、プログラム単位の細かい粒度で論理的な裏付けのある見積り方法を提案すること、そして開発初期のグロスな見積りから下流工程のプログラム単位の見積りまで一貫した方法で高い精度の見積り工数と生産性指標を得ることができるコンピュータを使ったシステムを実現することである。
その方法論的な従来技術の問題についてはすでに「従来技術とその問題点」で述べた。ここではＦＰ法１の業務の流れとそれと同等と見なせるＦＰ法１の仮想的なシステムを想定し、それを元に改善すべき具体的な課題について述べる。
ＦＰ法１の算式は図６のように表せるが、この算式をそのままシステム構成にマッピングすると図１のようになる。図６と図１の対応関係が分かるように図中ではファイル情報の名前を一致させている。ただしＦＰ法１は小処理単位１２＝システムと見做せる特殊な場合なので図１中の実投下工数書き込み部２３でも工数変換係数履歴情報２８でも算出データはたった一件しか発生せずわざわざシステムを使う必要が全くない。図１の仮想の仕組みとして示した理由は新しい仕組みをこれと対比させ分かり易くするためである。ＦＰ法１のやり方をシステマテックに捉え直せば図１のようになると仮定し、そのシステムの問題点と解決の施策を示してゆく。
またここでは請求項に係わる基本機能だけを取り上げており、請求項と関係ない様々な他システムとのインターフェース、帳票出力機能、画面入力の詳細、一定時間以上経過した情報の削除、セキュリテイなどの機能説明は一切省いている。また図に載せている機能でも請求項と本質的に係わらない部分はできるだけ説明を省いている。
【００１２】
１）ＦＰ改１の見積り業務の流れ（図１７上段）と対応する仮想の仕組みの概要（図１）
ＦＰ法１の見積り業務の流れを図１７の上段に示す。図１７のステップ１〜ステップ５に対応した仮想のＦＰ法１のシステムの構成は図１のようになる。
ステップ１．最初に見積り対象の図２２で示すような全体モデル図から図２３表１のようなデータ抽出単位導出属性８と表２のようなトランザクション抽出単位導出属性８が抽出される。図２２のトランザクション情報はプログラム単位に抽出している。
この情報を抽出単位導出属性調整部２０の図１８、図１９で示すような画面から入力し、抽出単位導出属性情報２６に書き込む。抽出単位導出属性情報２６にはデータ抽出単位導出属性８とトランザクション抽出単位導出属性８の２種類の情報（レコード）タイプがある。
ステップ２．次に抽出単位機能量変換部２２の中の抽出単位導出属性変換部３３で、抽出単位導出属性８は図４、図５に示すＦＰ法１のマトリックス変換表１４を使って抽出単位機能量３へ変換され、図２３表１、表２は図２４表３、表４のごとく書き直される。
ステップ３．更に抽出単位機能量変換部２２の中の小処理単位機能量変換部３４で図２５表５に示すように抽出単位機能量３をひとつの小処理単位１２に集約する。FP法１は、システム全体が小処理単位１２である特殊な場合とみなせる。
ステップ４．次に抽出単位機能量変換部２２の中の小処理単位見積り工数算出部３５で工数変換係数履歴情報２８に保持する標準工数変換係数７を読み出して全体の工数を見積る。この情報を小処理単位工数情報２７のＦＰ法情報タイプとして書き込む。
ステップ５−１．次の実投下工数書き込み部２３では小処理単位工数情報２７のＦＰ法情報タイプを読み出し、これに対応する全体の実投下工数１６を書き込む。
ステップ５−２．最後に工数変換係数算出部２４で、小処理単位工数情報２７のＦＰ法情報タイプの実投下工数１６と見積り工数１５とから工数変換係数７を計算し図２７表１０のようにまとめ、これを工数変換係数履歴情報２８に書き込む。
【００１３】
２）抽出単位導出属性調整部２０（ＦＰ法１）
図２３表１、表２に示すような対話画面から新規開発時の抽出単位導出属性８を入力する。入力情報は抽出単位導出属性情報２６に保持される。
保守の場合も図１８、図１９に示すような対話画面から入力する。新規開発の場合と異なり追加、削除、更新する抽出単位導出属性８の差分を入力する。この画面で保守追加／更新／削除区分を指定された抽出単位１１だけが次の抽出単位機能量変換部２２で抽出単位機能量３に変換され、それ以外の情報は無視される。
ここの問題点は抽出単位導出属性８を抽出する作業負荷である。新規開発時の導出属性を抽出する作業負荷は回避できないが、保守の場合は保守対象が既に最終生成物としてあるので、それからプログラムで抽出単位導出属性８を読み出し、それを更新した方が遙かに負荷を軽減でき、抽出単位導出属性８の抽出精度も向上する。
【００１４】
３）抽出単位機能量変換部２２（ＦＰ法１）
ここには次のイ）〜ハ）の順に実行される３つの機能部分がある。
イ）抽出単位導出属性変換部３３
抽出単位導出属性情報２６から図２３表１、表２に示すような抽出単位導出属性８を読み出し、図４、図５に示すマトリックス変換表１４で抽出単位機能量３へ変換して図２４表３、表４で示すような表を作成する。ここでの問題点はそのマトリックス変換表１４が非常に粗い大中小（難中易）三階段であって、プログラム単位のような小処理単位１２を扱うための変換精度としては不十分なことである。
ロ）小処理単位機能量集約部３４
さらにこれを図２５表５のように小処理単位１２に抽出単位機能量３を集約する。FP法１の場合はシステム全体でひとつの小処理単位機能量３ａへ集約しているとみなせる。図２４表３、表４を元に図２５表５に示すＦＰ法未調整機能量４（UFP）の計算は次のように行われる。
ＦＰ法未調整機能量４（ＵＦＰ）＝表３および表４の抽出単位機能量３の総和  式５
ここでの問題点は機能量を見積り対象でひとつの未調整機能量４に集約してしまうこと、即ちプログラムのような小処理単位１２では捉えないこと且つ機能量種別が異なる機能量をも固定的な重み付けで一つに集約してしまうことである。
ハ）小処理単位見積り工数算出部３５
全体でひとつの小処理単位機能量３ａ（FP法未調整機能量４）に集約した後、工数変換係数履歴情報２８の標準工数変換係数７から全体の開発工数を算出し表５に付加する。その算式は次のようになる。
見積り工数１５＝ＦＰ法未調整機能量４＊難易度補正係数６＊標準工数変換係数７  式６
その結果は小処理単位工数情報２７に保存される。
【００１５】
４）実投下工数書き込み部２３（ＦＰ法１）
実績収集システムなどから実投下工数１６をシステム全体で集約して小処理単位工数情報２７に保持する。実績が書き込まれる前に、小処理単位工数情報２７には小処理単位機能量情報が抽出単位機能量変換部２２で既に保持されている。
５）工数変換係数算出部２４（ＦＰ法１）
工数変換係数算出部２４には処理内容は同じだが目的が異なる二つの機能がある。一つは小処理単位工数情報２７にある指定条件と合致する小処理単位機能量３ａと実投下工数１６、また難易度補正係数６から標準工数変換係数７を算出し工数変換係数履歴情報２８に登録すること。指定条件とは、標準工数変換係数７の適用範囲を指定する条件で、ＦＰ法１の場合は同じプログラム言語や開発部門等を一致させる等である。ここで算出する標準工数変換係数７は抽出単位機能量変換部２２で見積り工数１５を算出するとき使用される。
もう一つの機能は、小処理単位機能量３ａと実投下工数１６、難易度補正係数６とから工数変換係数７を算出し工数変換係数履歴情報２８に保持する。これを標準工数変換係数７と比較し開発プロジェクトの生産性実績を評価する。
ここでの問題は、小処理単位機能量３ａが正味の機能量から乖離していれば、算出される標準工数変換係数７、工数変換係数７にも誤差が生じることである。その標準工数変換係数７が適用される次回の工数見積りにも生産性指標にも誤差が生ずる。ただこれは結果であり工数変換係数算出部２４が原因の問題とは言えない。
以上FP法１の仮想システムの課題は次のように纏められる。
【００１６】
課題１．まず見積り処理をプログラムのような小処理単位１２を扱うものにする。その中核になるのが抽出単位機能量変換部２２で、特に抽出単位機能量３を小処理単位１２に集約する部分と小処理単位１２で見積り工数１５を算出する部分が係わる。抽出単位機能量変換部２２の小処理単位機能量集約部３４では抽出単位機能量３を図８に示すように小処理単位１２に集約する。そのとき機能量種別の同じ抽出単位機能量３のみを集約し、FP法１のように機能量種別が異なるものまで全体でひとつの小処理単位機能量３ａに集約してしまわない。
また抽出単位機能量変換部２２の小処理単位見積り工数算出部３５では小処理単位１２ごとの工数見積りを機能量種別数の小処理単位機能量３ａと工数変換係数７から求めるがそれを全ての小処理単位について一括で図９に示すように算出する。
課題２．図２、図３に示す抽出単位導出属性抽出部２１を新たに追加し、開発後確定した最終生成物（ソースコード等）から抽出単位導出属性８をプログラムで自動的に読み出し、抽出単位導出属性情報２６に保持する機能を付加する。
また抽出単位機能量変換部２２の抽出単位導出属性変換部３３では抽出単位導出属性８から抽出単位機能量３への変換方法を、図４、図５のマトリックス変換表１４から単調に増加する関数による変換式に変える。
課題３．保守見積りのために図３に示す保守抽出単位導出属性調整部２０を追加する。そこでは図１８、図１９の上段と下段の表にプログラムで自動抽出した抽出単位導出属性８を選択的に表示し、それに更新をかける機能を持つ。保守前、保守後の自動抽出した抽出単位導出属性８は抽出単位導出属性情報２６に保持されている。
保守では追加・更新・削除する抽出単位導出属性８だけが対象である。そのため表示画面の保守追加／更新／削除区分で対象となる抽出単位１１だけを指定する。
新規開発でも図１８、図１９の上段、下段の画面はほぼそのまま使える。表示する情報は正味機能量の確認再見積り１３の時には自動抽出した抽出単位導出属性８を、また新規開発の場合は前工程で使用した抽出単位導出属性８を選択的に指定できるようにする。但しこの機能は図３の保守抽出単位導出属性調整部２０に含まれるとみなせるので図２の新規開発抽出単位導出属性調整部２０は課題を解決するための手段としては特に取り上げない。
【課題を解決するための手段】
【００１７】
FP法１の機能を拡張した見積もり方法をＦＰ改法２と呼ぶ。以下に課題を解決する手段としてＦＰ改法２について従来のＦＰ法１と対比させて述べる。
図１７の上段のＦＰ法１の見積り業務の流れに対応してＦＰ改法２の流れと改善ポイントを図１７の下段に示す。また、図１のＦＰ法１の仮想システムに対して、図２にＦＰ改法２の新規開発時のシステム処理部を、図３に保守時のシステム処理部を示す。
１．ＦＰ改法２の業務の流れと改善点          請求項１，請求項２に該当
ステップ１．ステップ１は新規開発ではＦＰ法１の場合と大きくは変わらず最初に見積り対象の全体モデル図（例図２２）から図２３表１で示すデータ抽出単位導出属性８と表２で示すトランザクション抽出単位導出属性８が抽出される。しかし保守では保守前後の抽出単位導出属性８の差分を保守作業の抽出単位導出属性８として算出しその後は新規開発の場合と同様の見積り方法で行う。また保守時の見積りや新規でも正味の機能量に基づく再見積り１３を行う場合は後述する課題２の解決手段によって開発後の最終生成物からプログラムで自動的に抽出単位導出属性８を抽出し、それを表示編集して作業を効率化する。特に保守時の再見積り１３の場合は保守前後の抽出単位導出属性８の差分まで自動的に算出する。ここでは図２、図３の抽出単位導出属性調整部２０と抽出単位導出属性抽出部２１と保守前後抽出単位導出属性差分加工部２５が関係する。
ステップ２．次に抽出単位機能量変換部２２の中の抽出単位導出属性変換部３３で、抽出単位導出属性８は後述の式７〜式１２で示すような単調に増加する一次元または二次元の関数を使って抽出単位機能量３へ変換される。ステップ２はＦＰ法１とは大きく変わる。
ステップ３．ステップ３ではＦＰ法１のように抽出単位機能量３をシステム全体でひとつの小処理単位１２に集約せず、開発作業と機能量種別との影響度を考慮して抽出単位機能量３をプログラム単位のような小処理単位１２に括る。集約する際に機能量種別の異なる抽出単位機能量３は集約しない。つまり小処理単位１２ごとに機能量種別数の小処理単位機能量３ａを保有する。機能量種別ごとに小処理単位機能量３ａを独立で持つので異質な機能量をある一定の重みづけで集約する必要がなくなり機能量種別を増やすことが容易になる。一例で言えばＬＯＣ法をＦＰ改法２のひとつの導出属性として取り込むことも容易である。FP法１の場合は、システム全体が小処理単位１２と見なせる特殊な場合であり、ステップ３はＦＰ法１とは非常に大きく変わる。ここには抽出単位機能量変換部２２の中の小処理単位機能量集約部３４が関係する。
ステップ４．ＦＰ法１では小処理単位機能量３ａも標準工数変換係数７もシステムでひとつでその二つを乗じて見積り工数を算出する。ＦＰ改法２では複数の小処理単位１２があり、それぞれに機能量種別数の小処理単位機能量３ａと標準工数変換係数７を持ちそれを乗じた和で小処理単位１２の工数を見積り、それを全ての小処理単位１２について算出する。ステップ４もＦＰ法１とは大きく変わる。ここには抽出単位機能量変換部２２の中の小処理単位見積り工数算出部３５が関係する。
ステップ５−１．次に実投下工数書き込み部２３では小処理単位１２の数の小処理単位工数情報２７のＦＰ改法情報タイプを読み出し、これに対応する小処理単位１２の数の実投下工数１６を書き込む。ＦＰ法１ではシステム全体でひとつの実投下工数１６しかない。
ステップ５−２．最後に工数変換係数算出部２４で、小処理単位工数情報２７のＦＰ法情報タイプの小処理単位１２ごとの実投下工数１６と機能量種別数ある小処理単位機能量３ａから機能量種別数の工数変換係数７を回帰分析法で算出する。ＦＰ法１ではシステム全体でひとつの工数変換係数７しかない。またここで用いる小処理単位機能量３ａを開発終了後の再見積り１３時の正味の機能量とする見積り方法が請求項２に該当する。
２．課題１の解決手段
【００１８】
イ）小処理単位機能量集約部３４            請求項３に該当する
ＦＰ法１では、図６のように小処理単位１２がシステム全体に等しい場合とみなせるが、機能量種別の異なる抽出単位機能量３までひとつに集約する。つまり図２５表５のようにシステムでひとつの未調整機能量４（ＵＦＰ）が算出される。
ＦＰ改法２では抽出単位機能量３をプログラム等の小処理単位１２で括る点が異なり、また機能量種別が異なる機能量同士は集約しない。式３と図８はこれを表している。
もっと分かり易く図１１の例で説明する。
プログラム開発作業ではプログラム単位で抽出単位導出属性を抽出しそれをプログラム単位でトランザクション小処理単位機能量３ａへ変換している。小処理単位１２と抽出単位１１は一致するのでこの場合は特に集約する必要はない。しかし連結テスト作業の場合は、作業はトランザクション機能量種別とデータ機能量種別の両方に係わりかつシステム（あるいはサブシステム）を小処理単位１２として集約する必要がある。データ設計作業とかプログラム設計作業とか機能量種別との係わりが明確に分かれる場合はトランザクションとデータ機能量を切分けて問題ないが、両方に不分明に係わる場合は両方を含める必要がある。しかしいずれにせよ異なる機能量種別同士は集約しない。
ロ）小処理単位見積り工数算出部３５            請求項３に該当する
図２５表５および図２５表６の小処理単位機能量３ａに対して、工数変換係数履歴情報２８から標準工数変換係数７を読み出して、見積り工数１５を算出する。標準工数変換係数７は適用範囲となる対象作業を予め定めておき、それを検索キー情報３１や開発作業やPG言語等の範囲指定条件で工数変換係数履歴情報２８から読み出す。
ＦＰ改法２の工数の算式は式４または次のようになる。
ＦＰ改法小処理単位見積り工数１５＝
（ＩＬＦ小処理単位機能量３ａ×ＩＬＦ標準工数変換係数７
＋ＥＩＦ小処理単位機能量３ａ×ＥＩＦ標準工数変換係数７
＋ＥＩ小処理単位機能量３ａ×ＥＩ標準工数変換係数７
＋ＥＯ小処理単位機能量３ａ×ＥＯ標準工数変換係数７
＋ＥＱ小処理単位機能量３ａ×ＥＱ標準工数変換係数７）            式１３
全ての小処理単位見積り工数１５が一括して算出される。算出結果は、図２５表５、表６に追加され、その内容が小処理単位工数情報２７のＦＰ法情報タイプ、ＦＰ改法情報タイプに書きだされる。
【００１９】
３．課題２の解決手段
（抽出単位導出属性抽出部２１の追加）    請求項４に該当
１）抽出単位導出属性抽出部２１での抽出情報
図２、図３の抽出単位導出属性抽出部２１では見積り対象範囲内の最終生成物（ソースプログラム等）から次の情報を抽出する。
トランザクション抽出単位導出属性８として参照ファイルタイプ数１８（ＦＴＲ数）、データ単位数（ＤＥＴ数）、トランザクション機能量種別（ＥＩ／ＥＯ／ＥＱ）。
データ抽出単位導出属性８としてレコードタイプ数１７（ＲＥＴ数）、データ単位数（ＤＥＴ数）、データ機能量種別（ＩＬＦ／ＥＩＦ）。
使用する言語によって多少処理は変るがソースプログラムを対象にして必要情報を抽出し、尚不足する場合は他の関連情報（ジョブ制御情報、データデクショナリ等）から引き出す形は変らない。具体的にＣ言語でリレーショナルＤＢを処理対象とする場合を次に示す。
３）のデータ抽出単位導出属性抽出処理と４）のトランザクション抽出単位導出属性抽出処理を実行する前に２）で補助情報を作成する。
【００２０】
２）各種補助情報の作成
イ）プログラム抽象構文木補助情報２９の作成
ソースプログラムからプログラムで処理できる形でファイル名やデータ項目名を抽出する方法として、コンパイラの技術として確立されている公知の技術、つまりトークン（単語）に分解後、抽象構文木を生成する方法を応用する。
例えばC言語プログラム用では、ｌｅｘやｙａｃｃ等のオープンソースでC言語のトークン定義や構文定義を記述したEBNFを入力として、トークン生成プログラムや抽象構文木生成プログラムを出力できる。それを実行してメモリ上に生成される抽象構文木の終端子（トークン）および非終端子（図１２のｉｆ文や代入文、二項演算、変数、定数など。EBNFの定義の仕方で抽き出されるものが多少違ってくる）のノード情報は図１２のようにメモリ上にポインタで繋がれて構成される。このプログラム単位に生成されるノード情報をシステム全体で自由に参照するために、一旦外部のプログラム抽象構文木補助情報２９として保存する。
このときプログラム単位に生成されるノードをシステム全体で完全に一意に表現しなければならないので、メモリ上のノードアドレスに加えてプログラム名＋システム名＋サブシステム名を付加したものを一意のノード識別キーにして図１３のプログラム抽象構文木補助情報２９の自ノード情報部とポインタ情報部の両方で保有する形で外部へ出力する。このとき図１３のプログラム抽象構文木補助情報２９の自ノード情報部、ポインタ情報部はノード識別キーを順方向、逆方向に辿ることができ、元のプログラム上のノードポインタを辿るのと同じ効果が得られる。
このプログラム抽象構文木補助情報２９の自ノード情報では少なくともノード識別子やノード名を持ち、そこから抽出処理で必要とするファイル名（テーブル名）やデータ項目名（列名）、ＳＱＬコマンド名などのファイル入出力に係わる情報ばかりではなく、関数名やその引数名までも通常の外部ファイル検索で取り出すことができる。つまり今後プログラムの関数呼び出しを通したサブシステム間の情報の流れなどを新しい導出属性として取り込む必要が生じた場合、この補助情報を作っておけば容易に拡張しやすく便利である。
ロ）プログラム入出力データ補助情報３０の抽出処理
プログラム抽象構文木補助情報２９から特定のSQLコマンドに係わるノード情報だけを抽出し、各プログラム毎に参照・更新するテーブル名（ファイル名）と列名（データ項目）の全ての組み合わせを抜き出したプログラム入出力データ補助情報３０を作成する。プログラム中でアクセスする全ての入出力テーブル（ファイル）の列名（データ項目）を図１３  プログラム入出力データ補助情報３０のようにプログラム名−テーブル名（ファイル名）−列名（データ項目名）−ＳＱＬコマンドの４項目をセットにして抜き出す。
この処理フローを図１４に示す。自ノード情報部のシステム名、サブシステム名、プログラム名、自ノード情報でソートしたプログラム抽象構文木補助情報２９を、自ノード情報を先頭から順にＳＱＬコマンドだけをサーチする。対象コマンドはＩＮＳＥＲＴ，ＵＰＤＡＴＥ，ＤＥＬＥＴＥ，ＳＥＬＥＣＴに限られる。ＣＲＥＡＴＥやＤＲＯＰ、ＡＬＴＥＲ  ＴＡＢＬＥは、出現頻度から省略しても普通問題ない。図１４にはＩＮＳＥＲＴコマンドの抽象構文木の構成例とそこからの抽出フローだけを示しているが、同様にしてＵＰＤＡＴＥ，ＤＥＬＥＴＥ，ＳＥＬＥＣＴコマンドの記法に従って前後のノード識別キー（ポインタ）を辿り、先の４項目のセット情報を抽出しプログラム入出力データ補助情報３０として保存する。
【００２１】
３）データ抽出単位導出属性抽出処理
プログラム入出力データ補助情報３０からテーブル名をキーにして同一テーブルに含まれる異なるデータ項目名の数を集計してデータ抽出単位導出属性８のＤＥＴ数を算出する。またリレーショナルＤＢの場合通常はＦＴＲ数＝１である。またそのテーブル毎に集約するレコードの中に、更新系のＳＱＬコマンド、つまりＩＮＳＥＲＴ，ＵＰＤＡＴＥ，ＤＥＬＥＴＥコマンドが一件でも含まれればファイル機能量種別はＩＬＦ，その他の場合はＥＩＦとなる。ＤＥＴ数はこのほかデータデクショナリから直接読む方法もある。
アウトプットはファイル（テーブル）単位に、図２３表１に対応する抽出単位導出属性情報２６のデータ情報タイプに書き込む。
４）トランザクション抽出単位導出属性抽出処理
プログラム入出力データ補助情報３０からプログラム名をキーにして異なるテーブルの数とデータ項名の数を集計してトランザクション抽出単位導出要素８であるＲＥＴ数とＤＥＴ数を算出する。そのプログラム毎に集約するレコードの中に、更新系ＳＱＬコマンドつまりＩＮＳＥＲＴ，ＵＰＤＡＴＥ，ＤＥＬＥＴＥコマンドが一件でも含まれればトランザクション機能量種別はＥＩ，その他の場合は仮にＥＱとする。もしＦＰ法１に従ってＥＯかＥＱかをどうしても区別したい場合は、次のハ）のプログラム代入文変数数カウント処理で行う。
ＲＥＴ数とＤＥＴ数およびトランザクション機能量種別の判定結果はプログラム単位に、図２３表２に対応する抽出単位導出属性情報２６のトランザクション情報タイプに順次書き込む（図１６）。
ハ）プログラム代入文変数数カウント処理
プログラム中のファイル（テーブル）からＳＱＬで読み出した列名の値を使って、そのプログラム中で何らかの加工演算をやっているかいないか判別しＥＯかＥＱかを決定する。処理フローは図１５、図１６に示す。
トランザクション機能量種別がＥＱのプログラムだけが処理対象になるので、最初にプログラム抽象構文木補助情報２９と抽出単位導出属性情報２６のトランザクション情報タイプをマッチングさせ、プログラム抽象構文木補助情報２９のプログラム名と抽出単位導出属性情報２６の小処理単位１２が一致しかつトランザクション機能量種別がＥＱであるプログラムだけを抽出しプログラム抽象構文木補助情報２を作成する（図１５左）。このプログラム抽象構文木補助情報２から、プログラム単位に次の処理を行なう。
まず自ノード情報部のシステム名、サブシステム名、プログラム名、自ノード情報でソートしたプログラム抽象構文木補助情報２を、自ノード情報を先頭から順にサーチし、同一プログラムごとにＳＥＬＥＣＴ文およびＦＥＴＣＨ文で取り出す列の値を保持する変数のリストをメモリ上に作成する（図１５右フロー）。次にそれと同じプログラムについて代入文だけをプログラム抽象構文木補助情報２の自ノード情報からサーチし、もし存在した場合、ノード識別キーを辿りその右辺に先の変数リストにある変数が２個以上含まれるか判定する。もし含まれていれば代入文で何らかの加工演算をやっているとみなしトランザクション機能量種別をＥＯと判定しその他の場合はＥＱのままとする。
判定結果はプログラム単位に、図２３表２に対応する抽出単位導出属性情報２６のトランザクション情報タイプに順次書き込む（図１６フロー）。
【００２２】
（抽出単位機能量変換部２２の機能追加）
抽出単位機能量変換部２２では抽出単位導出属性情報２６から処理対象となる情報を図２３表１、表２の形に読み出す。また保守の場合（つまり新規／保守区分＝保守の場合）は保守追加／更新／削除区分が追加、更新、削除以外の情報は読み飛ばす。
イ）抽出単位導出属性変換部３３        請求項４に該当する
抽出単位導出属性８を抽出単位機能量３に変換する。ＦＰ改法２の場合はＦＰ法１の図4、図５のマトリックス変換表１４の替りに、それを滑らかに近似する曲面の計算式を導入する。近似式として図２０の式が考えられる。図４、図５の変換表は双曲線の等高線の分布近似形をとるので、双曲線のＸ＝＜１且つＹ＝＜１の領域に、図4、図5の変換表をマッピングする。具体的には式７で示すように、Ｘ軸、Ｙ軸と抽出単位導出属性８を対応させ、かつＺ軸と抽出単位機能量３を対応させる。
抽出単位機能量３＝γ×（Ｘ×Ｙ／ｍ×ｎ）**（α×β）
＝γ／（ｍ×ｎ）**（α×β）×（Ｘ×Ｙ）**（α×β）  式７
α：双曲線の近似次数（α＜１）
β：機能量の近似次数（β＝＜１）
γ：図４、図５のマトリクス変換表の機能量最大値
ｍ：抽出単位機能量３をＸ軸にマップする縮尺比率
ｎ：抽出単位機能量３をＹ軸にマップする縮尺比率
Ｘ＝０またはＹ＝０の時に抽出単位機能量３がゼロになることを回避したい場合は、式７の軸を移動するだけで良いが、ここでは簡単のためこの式を用いる。
式８に各抽出単位機能量３（ＩＬＦ）の近似式を示す。式８による計算結果は図２１に示すが、図４の変換表をほぼシミュレートできることが分かる。
データ抽出単位機能量９（ＩＬＦ）
＝１５×（ＤＥＴ数×ＲＥＴ数／３００）**０．３７    式８
データ抽出単位機能量９（ＥＬＦ）
＝１０×（ＤＥＴ数×ＲＥＴ数／３００）**０．３７    式９
トランザクション抽出単位機能量１０（ＥＩ）
＝６×（ＤＥＴ数×ＦＴＲ数／４８）**０．４４        式１０
トランザクション抽出単位機能量１０（ＥＯ）
＝７×（ＤＥＴ数×ＦＴＲ数／８０）**０．４４        式１１
トランザクション抽出単位機能量１０（ＥＱ）
＝６×（ＤＥＴ数×ＦＴＲ数／８０）**０．４４        式１２
式７でγ／（ｍ×ｎ）**（α×β）の値は定数であるが、ＦＰ改法２では工数変換係数７を機能量種別の数だけ独立して設定できるので実は１と等しいとして全く構わないものである。ただここではＦＰ法１の抽出単位機能量３と比較するために、式８〜式１２を用いて変換する。
この変換式を用いて図２３表３、表４の抽出単位導出属性８から機能量が計算され、図２４表３、表４のように抽出単位機能量３が書き込まれる。
【００２３】
４．課題３の解決手段  
（保守抽出単位導出属性調整部２０の追加）    請求項５に該当
１）データ抽出単位導出属性８の編集
データ抽出単位導出属性８は図１８で示すような画面で一括編集する。保守の場合は最終生成物から抽出単位導出属性情報２６が作成されているのでそれを表示し編集する。また保守の正味機能量再見積り１３の場合は既に保守前後抽出単位導出属性差分加工部２５によって保守前後のデータ抽出単位導出属性８の差分を保守のデータ抽出単位導出属性８として加工されるのでそれを表示し編集する。
図１８では二つの画面の上段は参照専用とし下段は更新可能としている。アクターは情報（レコード）タイプ種別（この場合は＝データ）と検索キー情報３１等の指定条件を与えて抽出単位導出属性情報２６から上段、下段に表示、更新すべき情報を読み出す。
保守の編集では、抽出単位１１ごとに保守追加／更新／削除区分に削除、追加または更新と指定したうえで抽出単位導出属性８を編集する。
２）トランザクション抽出単位導出属性８の編集
トランザクション抽出単位導出属性８は図１９で示すような画面で一括編集する。保守の場合は最終生成物から抽出単位導出属性情報２６が作成されているのでそれを表示し編集する。保守の再見積り１３の場合は既に保守前後抽出単位導出属性差分加工部２５によって保守前後のトランザクション抽出単位導出属性８の差分を保守のトランザクション抽出単位導出属性８として加工されているのでそれを表示し編集する。
図１９では二つの画面の上段は参照専用とし下段は更新可能としている。アクターは情報（レコード）タイプ種別（この場合は＝トランザクション）と検索キー情報３１等の指定条件を与えて抽出単位導出属性情報２６から上段、下段に表示、更新すべき情報を読み出す。
保守の編集では、抽出単位１１ごとに保守追加／更新／削除区分に削除、追加または更新と指定したうえで抽出単位導出属性８を編集する。
新規開発の見積り時でも前工程で作成した抽出単位導出属性８を表示し保守の場合と同様の考え方で更新できる。またゼロから情報を追加することもできるので結局新規開発の場合で新たに必要となる機能はない。
【００２４】
（保守前後抽出単位導出属性差分加工部２５の追加）    請求項５に該当
保守前後抽出単位導出属性差分加工部２５では、保守前後の抽出単位導出属性８をプログラムで抽出しその差分を保守の抽出単位導出属性８として保守抽出単位導出属性調整部２０へ提供する。
具体的には次の手順に従う。
１）抽出単位導出属性抽出部２１で保守対象の保守前後の抽出単位導出属性８を別々に抽出する。保守前に存在しかつ保守後に存在しない抽出単位１１は保守追加／更新／削除区分を削除とし、保守前に存在せず保守後に存在する抽出単位１１は保守追加／更新／削除区分を追加とし、保守前後に存在しＦＴＲ数、ＲＥＴ数、ＤＥＴ数のいづれかが変化している抽出単位１１は保守追加／更新／削除区分を更新とする。それ以外は捨てるかもしくは保守追加／更新／削除区分を指定しない。
２）差分情報を作るときは、保守追加／更新／削除区分が削除の場合は保守前の、保守追加／更新／削除区分が追加の場合は保守後の抽出単位導出属性８をそのまま取り込む。保守追加／更新／削除区分が更新の場合は機能量種別は保守後のものを取り込み、ＦＴＲ数、ＲＥＴ数、ＤＥＴ数の保守前後の差分を算出する。例えば保守前後の数値の差の絶対値と１との大きい方の値をとる。
３）抽出単位導出属性８の差分をとってから抽出単位機能量３へ変換する方法と抽出単位機能量３に変換してから差分をとる方法が考えられるが、式７の変換曲線が上に凸である性質から前者の方が数値が大きくなる傾向が出る。
４）この情報を保守抽出単位導出属性調整部２０で表示し対話処理で更新する。その後の処理は新規開発の場合と同じである。ただし抽出単位機能量変換部２２では保守の場合、抽出単位導出属性情報２６の保守追加／更新／削除区分が削除、更新、追加のいずれかが指定された情報しか処理対象にしない。
【００２５】
５．主要ファイル情報  
３種類の主要ファイル情報について説明する。処理対象のロットを識別したり、処理対象を絞り込むためのヘッダー情報として次のような情報を持つが請求項にとって本質的な問題ではないので参考に止める。
情報（レコード）タイプ種別、新規／保守区分、見積り／再見積り区分、見積り範囲（システム、サブシステム）、保守追加／更新／削除区分，更新日付等
ＦＰ改法プログラム言語、部門名、ＦＰ改法見積りパターン３２（開発作業）等
ファイル情報から処理対象となる一群の情報を一括で引き出すときの検索キー情報３１は各処理部で引き渡されて使用されるが、新規／保守区分、見積り／再見積り区分、見積り範囲（システム、サブシステム）のようなヘッダ情報の項目を含む。その他抽出単位導出属性抽出部２１の追加に伴い、いくつか情報を識別するデータ区分も必要になるが、請求項にとって本質的な問題ではないので煩瑣を避けて省略する。
【００２６】
（抽出単位導出属性情報２６）
データ情報タイプは少なくとも次のデータ項目を持つ。
小処理単位１２（ファイル名）、機能量種別（ＩＬＦ／ＥＩＦ）、レコードタイプ数１７（ＲＥＴ数）、データ単位数１９（ＤＥＴ数）、ＦＰ法難易度補正係数６、ＦＰ改法難易度補正係数６
トランザクション情報タイプは少なくとも次のデータ項目を持つ。
小処理単位１２（プログラム名）、機能量種別（ＥＩ／ＥＯ／ＥＱ）、参照ファイルタイプ数１８（ＦＴＲ数）、データ単位数１９（ＤＥＴ数）、ＦＰ法難易度補正係数６、ＦＰ改法難易度補正係数６
（小処理単位工数情報２７）
ＦＰ法情報タイプは少なくとも次のデータ項目を持つ。
未調整機能量４（ＵＦＰ），ＦＰ法調整済機能量５、ＦＰ法難易度補正係数６、ＦＰ法見積り工数１５、ＦＰ法実投下工数１６、ＦＰ法標準工数変換係数７
ＦＰ改法情報タイプは少なくとも次のデータ項目を持つ。
小処理単位機能量３ａ（ＩＬＦ／ＥＩＦ／ＥＩ／ＥＯ／ＥＱ）、ＦＰ改法難易度補正係数６、ＦＰ改法小処理単位見積り工数１５、ＦＰ改法小処理単位実投下工数１６、ＦＰ改法標準工数変換係数７（ＩＬＦ／ＥＩＦ／ＥＩ／ＥＯ／ＥＱ、定数）
ＦＰ法標準工数変換係数７は回帰分析によって決められるが、それによって定数項がでるのでそれを加えている。
（工数変換係数履歴情報２８）
ＦＰ法情報タイプは少なくとも次のデータ項目を持つ。
ＦＰ法の標準工数変換係数７、標準工数識別区分
ＦＰ改法情報タイプは少なくとも次のデータ項目を持つ。
ＦＰ改法標準工数変換係数７（ＩＬＦ／ＥＩＦ／ＥＩ／ＥＯ／ＥＱ、定数）、標準工数識別区分
標準工数識別区分は標準変換係数として現在有効であることを示す。また標準工数変換係数７の適用範囲を識別するためにＦＰ改法見積りパターン３２を用いても良い。
【００２７】
６．FP改法２を実現するうえで必要だが、請求項とは直接的には関係しないシステム構成部分の参考情報
（実投下工数書き込み部２３の変更）
ＦＰ法１では図２５表５に示すようにシステムで１件の実投下工数１６しか発生しない。一方ＦＰ改法２では図２５表６に示すように小処理単位１２の数の実投下工数１６が発生する。実績を書き込む前にすでに小処理単位工数情報２７の中には抽出単位機能量変換部２２によってＦＰ法情報タイプではシステムでひとつの、またＦＰ改法情報タイプでは小処理単位１２の数の見積り工数１５が生成されている。これに対応する実投下工数１６が書き込まれる。ただしこの部分は請求項にとって本質的ではないので、説明は省略する。
【００２８】
（工数変換係数算出部２４の変更）
工数変換係数算出部２４では小処理単位工数情報２７からＦＰ法１の場合は一対の実投下工数１６と調整済機能量５を、ＦＰ改法２の場合は全ての小処理単位１２の数の実投下工数１６と小処理単位機能量３ａのセットを読み出して、新しい工数変換係数７を計算する。
ＦＰ法１では次式で計算する。
ＦＰ法工数変換係数７＝実投下工数１６／調整済機能量５        式１４
ＦＰ改法２の場合は小処理単位１２ごとの５種類の小処理単位機能量３ａ（ＩＬＦ，ＥＩＦ,ＥＩ,ＥＯ,ＥＱ）と実投下工数１６とから図２６に示すような回帰分析法を用いて工数変換係数７を算出する。回帰分析法で工数変換係数７として機能量種別に対応する５つの係数と１つの定数を算出し図２７表９に示す情報を生成する。ＦＰ法１の場合は全体でひとつの工数変換係数７が算出され図２７表１０の情報を生成する。これを工数変換係数履歴情報２８へ書き込む。
ところで算出した工数変換係数７を標準工数変換係数７として使うかどうかは別問題である。使えるかどうか人が判断し標準として使う場合は、標準工数識別区分を設定するようにする。
ただしこの部分は請求項にとって本質的ではないので、詳しい説明は省略する。
【発明の効果】
【００２９】
１）請求項１〜５に共通の波及効果   
ＦＰ法１はグロスの見積りでは使えたがプログラム単位の見積りでは精度的、作業負荷の点で適用が難しかった。それゆえ図２９の上段に示すごとく中・下流工程ではＷＢＳ法や保守の場合はＬＯＣ法で見積ることになり、もし開発初期の見積り工数１５と実投下工数１６で大きな差異が生じた場合でもどの抽出単位導出属性８や小処理単位機能量３ａに差異が生じたのか捉えにくかった。ＦＰ改法２では図２９の下段に示すごとくプログラム単位でも大きなボリューム単位でも全ての開発のフェーズで統一的な見積り方法を一貫できるし、更に開発後の正味の機能量による再見積り１３によってより開発前後の抽出単位導出属性８や小処理単位機能量３ａの変化を把握できるようになるので、見積り誤差の発生原因を追究しやすくなる。
またＩＴ業界はプログラム単位の工数見積り精度の信頼性がひとつの原因で開発生産性の管理や生産性改善活動が一般の製造業ほどは進んでいない状況があったが、プログラム単位での開発工数や生産性指標の論理的な裏づけができ、再見積り１３などによって見積り精度を高められることで、それを推進する有効な手段となりうる。例えば図３０に示すごとく開発生産性を定量化し多様な観点から開発生産性の分析が可能になるのでそれを着実に改善策に繋げることができる。
またＷＢＳ法などでプロジェクト開発計画を開発作業者のパーフォーマンスを考慮して組み立てる際にも、基本にＰＧ単位の標準開発工数があり且つ作業毎、作業者毎の開発生産性の指標があれば大変便利である。
またＦＰ改法２では異なる機能量種別をひとつに集約しないで独立させているので、新しい機能量種別を増やすことがＦＰ法１より遥かに容易になる。機能量種別のウエイト付けを回帰分析で簡単に決めることができるからである。プログラム構造が技術の進展と共に大きく変っている今日、新しい導出属性や機能量を柔軟に取り込めることは大きなメリットになる。
２）請求項３の効果
ＦＰ法１ではシステム全体でひとつの開発工数をグロスで見積る考え方しかなく、そのためシステムでひとつの調整済機能量５に集約してしまっていた。逆にその単純さの故に業務フローをコンピュータ化する必要性もあまり無かった。ＦＰ改法２では開発作業の内容の違いに応じて小処理単位１２に括り、小処理単位１２ごとに小処理単位機能量３ａを集約し、また機能量種別ごとに小処理単位機能量３ａと工数変換係数７を設定するのでＦＰ法１に較べて遥かに業務フローが複雑になりコンピュータ化が不可欠である。それによってプログラム単位の工数見積りが可能になり、開発作業の内容の違いに応じて緻密に見積ることが可能になり、結局は見積り精度や開発生産性指標の精度アップに効果がある。
３）請求項４の効果
プログラム単位の工数見積りを実現するには、抽出単位導出属性８の一単位の差異をも拾って抽出単位機能量３へ反映させる緻密な変換方法は見積り精度アップのために不可欠であり、また最終生成物から抽出単位導出属性８をプログラムで自動的に抽出する方法は保守開発工数の見積りや再見積り１３で抽出作業工数を軽減するために極めて有効であり、またそのためにはコンピュータ化が不可欠である。開発工数の見積り精度や開発生産性指標の精度アップ、および見積り作業負荷の軽減に効果がある。
４）請求項５の効果   
保守開発の抽出単位導出属性８を保守前後の抽出単位導出属性８の差分として決め、その後は新規開発の場合と同じ仕組みで対応可能にしたので、システムの構成をシンプルにできた。また保守開発では前工程で作成した抽出単位導出属性８と自動的に抽出した抽出単位導出属性８と保守前後の抽出単位導出属性８の差分とを選択的に指定して画面に表示し、抽出単位１１ごとに保守追加／更新／削除区分に削除、追加または更新と指定し対話修正をかけられるので、新規開発の場合と類似した形で保守の対話ができるようにした。保守開発工数の見積り精度や保守の生産性指標の精度アップやシステム構成の単純化に有効である。
【図面の簡単な説明】
【００３０】
【図１】ＦＰ法１の仮想システム機能構成図の例
【図２】ＦＰ改法２新規開発時の機能構成図の例
【図３】ＦＰ改法２保守開発時の機能構成図の例
【図４】ＦＰ法１のデータ抽出単位機能量９マトリックス変換表１４
【図５】ＦＰ法１のトランザクション抽出単位機能量１０マトリックス変換表１４
【図６】ＦＰ法１の算式（抽出単位機能量３の調整済機能量５への集約）
【図７】ＦＰ法１の算式（システム全体工数見積り）
【図８】ＦＰ改法２の算式（抽出単位機能量３の小処理単位機能量３ａへの集約）
【図９】ＦＰ改法２の算式（小処理単位１２工数見積り）
【図１０】開発作業工数への機能量種別の影響度
【図１１】抽出単位１１から小処理単位１２への括り方
【図１２】プログラム抽象構文木の例
【図１３】導出属性抽出処理補助情報
【図１４】プログラム入出力データ補助情報抽出処理フロー
【図１５】プログラム代入文、変数数の抽出処理フロー（１）
【図１６】プログラム代入文、変数数の抽出処理フロー（２）
【図１７】ＦＰ法１の見積り業務の流れとＦＰ改法２の改善ポイント
【図１８】抽出単位導出属性調整部２０保守データ抽出単位導出属性８編修画面例
【図１９】抽出単位導出属性調整部２０保守トランザクション抽出単位導出属性８編集画面例
【図２０】単調増加関数による抽出単位機能量３への変換方法
【図２１】データ抽出単位機能量９（ＩＬＦ）の算出方法の実例
【図２２】テスト事例モデル
【図２３】抽出単位導出属性８の情報（表１、表２）
【図２４】抽出単位機能量３の算出情報（表３、表４）
【図２５】実投下工数１６と小処理単位機能量３ａ（表５、表６、表７）
【図２６】ＦＰ改法２  工数変換係数７の算出情報（表８）
【図２７】工数変換係数７と逆算工数情報（表９、表１０、表１１）
【図２８】試行結果の評価
【図２９】ＦＰ改法２を全工程で一貫して適用できる利点
【図３０】開発生産性指標の推移
【実施例】
【００３１】
小規模システム新規開発時の見積り事例をＦＰ改法２のステップ１〜ステップ５の手順に従って説明する。
（ステップ１）
１）図２２に示すＰＧ数１２本の小規模なＡシステムの事例で示す。見積るのはプログラム開発作業のプログラム単位の工数のみでデータ構築やテスト準備の作業工数は含まないものとする。既にファイルはＩＬＦかＥＩＦか識別ができている。
２）新規開発の場合は詳細設計書の内容からデータ抽出単位導出属性８を図２３表１のように整理する。図２３表１はファイル単位になる。この情報は抽出単位導出属性調整部２０で入力され抽出単位導出属性情報２６のデータ情報タイプに書き込まれる。これはデータ抽出単位機能量９を算出する元となる。
３）同じく図２２からトランザクション抽出単位導出属性９を図２３表２のように整理する。図２３表２はプログラム単位になる。この情報は抽出単位導出属性調整部２０で入力され抽出単位導出属性情報２６のトランザクション情報タイプに書き込まれる。これはトランザクション抽出単位機能量９を算出する元となる
４）２）〜３）の情報は新規開発の場合は人が作成し入力するが、前工程で作成した抽出単位導出属性を抽出単位導出属性調整部２０で表示し編集することができる。新規開発でも開発後の正味機能量に基づく再見積り１３では抽出単位導出属性抽出部２１でソースプログラムから抽出単位導出属性を自動的に抽出し、抽出単位導出属性調整部２０で表示し編集することができる。
５）保守の場合は、２）〜３）の情報が抽出単位導出属性抽出部２１でソースプログラムから自動的に読み込まれるので、それを保守抽出単位導出属性調整部２０で表示して保守追加／更新／削除区分を付加して更新することができる。
６）保守であり尚且つ開発後の正味機能量に基づく再見積り１３の場合は、保守前後の２）〜３）の情報が抽出単位導出属性抽出部２１で自動的に読み出され更に保守前後抽出単位差分加工部２５で差分が加工され、それを保守の抽出単位導出属性８として保守抽出単位導出属性調整部２０で表示し保守追加／更新／削除区分を付加して更新することができる。
（ステップ２）
７）図２３表１、表２の情報を元に抽出単位機能量変換部２２によって抽出単位機能量３を計算し、その情報を付加したものが図２４表３、表４である。この計算方法はＦＰ法１とＦＰ改法２では全く異なる。ＦＰ法１の場合は図４、図５の変換テーブルを使って変換されるが、ＦＰ改法２の場合は式８〜式１２を使って計算される。
（ステップ３）
８）図２４表３、表４の情報は小処理単位１２に図２５表５、表６のように集約される。表５はＦＰ法１であり表３の抽出単位３を集計しシステム全体で１つの未調整済機能量４（ＵＦＰ）に集約される。表６はＦＰ改法２で、プログラム単位の小処理単位機能量３ａに集約される。この場合小処理単位１２と抽出単位１１は一致するので内容は変らないがプログラム開発作業であることを考慮してデータに関する小処理単位機能量３ａは省いていることに注意願いたい。この試行の場合、ＦＰ改法２では難易度補正係数６は小処理単位機能量３ａの括りの外に出し、機能量の補正は工数見積りの直前までやらない。
【００３２】
（ステップ４）
９）図２５表５、表６では、標準工数変換係数７が工数変換係数履歴情報２８から呼び出されて開発工数を見積る。ＦＰ法１の場合は調整済機能量５に標準工数変換係数７をかけ見積り工数１５を算出する。ＦＰ改法２の場合は３種類の小処理単位機能量３ａに３つの標準工数変換係数７をかけ小処理単位１２別の見積り工数１５を算出する（３種類であるのはトランザクション機能量種別だけを扱っているため）。この情報は小処理単位工数情報２７に書き込まれる。
（ステップ５−１）
１０）図２５表５、表６に対し実投下工数書き込み部２３を通して小処理単位１２（プログラム単位）の実投下工数１６が自動的に書き込まれる。ＦＰ法１ではシステムでひとつの実投下工数１６が、ＦＰ改法２では小処理単位１２別の実投下工数１６が書き込まれる。表６に実投下工数１６を書き込んだものが表７である。
（ステップ５−２）
１１）工数変換係数算出部２４でＦＰ法１の場合は表５の実投下工数１６を調整済機能量５で除算して工数変換係数７を求める。またＦＰ改法２の場合は表７の３種類の小処理単位機能量３ａと実投下工数１６を用いて、回帰分析法で各機能量種別ごとの工数変換係数７を計算する。（但しこの試行の場合は実投下工数１６ではなく、実投下工数１６／難易度補正係数６と各小処理単位機能量３ａとから工数変換係数７を算出。何故ならこの試行では難易度補正係数６は小処理単位機能量３ａの外に出している）。図２６表８にこの回帰分析結果を示す。図２７の表９、表１０はＦＰ法１とＦＰ改法２のこの試行によって算出された工数変換係数７である。プログラム開発作業を対象にしたため、データ小処理単位機能量３ａに対する工数変換係数７はゼロになっている。しかし例えば連結テストではテストデータの生成等の作業が発生し小処理単位１２の括り方を変えるのでゼロにはならない。また回帰分析からは定数項が出てくる。
図２７の表９、表１０の情報を工数変換係数履歴情報２８ファイルに書き込む。
（試行結果分析）
１２）図２７表１１はＦＰ改法２での試行で算出した工数変換係数７を用いて、各プログラムの見積り工数１５を逆算したものである。図２８はひとつは実投下工数１６（図２７の表１１の小処理単位実投下工数）と標準工数変換係数７から見積った工数（同表の小処理単位見積り工数）をプロットし、もうひとつは実投下工数１６とこの試行から算出した工数変換係数７から見積った工数（同表のＦＰ改法逆算算出工数）をプロットしたものである。図２６の回帰分析結果の重相関係数が極めて高いことから十分予想される結果ではあるが、見積り工数１５をかなり高い精度で算出できている。またこの試行での開発生産性指標は標準よりも高い傾向にあることが分かる。
【産業上の利用可能性】
【００３３】
ＩＴ産業のみならず、ソフトウエア開発に係わるあらゆる法人や官公庁などのシステム開発部門に利用可能である。
【符号の説明】
【００３４】
１    ＦＰ法１（ファンクションポイント法）          図１
ソフトウエアの開発工数見積り方法で、開発工数に連動すると考えられる機能量の総和（調整済機能量５）に工数変換係数７を乗じて開発工数を見積る。ＩＢＭのＡｌｂｒｅｃｈｔによって１９７５年頃に提案された。
２    ＦＰ改法２                                  図２、図３
プログラム等の小処理単位１２のきめ細かな見積りを可能にするために、本特許の中で提案されているFP法１を修正した開発工数見積り方法。
３    抽出単位機能量３                                図１１
抽出単位機能量３はＦＰ法１では対象システムのエンテテイやトランザクション単位の（開発工数に対応すると想定されている）数値化された機能量。FP改法２ではファイル単位、プログラム単位へ機能量を拡張している。抽出単位導出属性８を元にして抽出単位機能量３へ変換される。ＦＰ法１ではデータ抽出単位機能量９として２種類（ＩＬＦ，ＥＩＦ）、トランザクション抽出単位機能量１０として３種類（ＥＩ，ＥＯ，ＥＱ）あるがＦＰ改法２では拡張性がある。
３ａ  小処理単位機能量３ａ                            図１１
抽出単位機能量３を、見積り単位として小処理単位１２に集約したもの。ＦＰ法１ではシステムでひとつの小処理単位機能量３ａに集約されると見なされるが、FP改法２ではデータ小処理単位機能量ａとして２種類（ＩＬＦ，ＥＩＦ）、トランザクション小処理単位機能量ａとして３種類（ＥＩ，ＥＯ，ＥＱ）ある。
４    未調整機能量４（ＵＦＰ）                    図６
ＦＰ法１ではシステム全体をひとつの小処理単位１２とみなしうるが、そのときの小処理単位機能量３ａに相当し、５種類のファンクションポイントの総和で算出されるシステムでひとつの機能量。ＦＰ改法２では使わない。
５    調整済機能量５                              図６
ＦＰ法１で未調整機能量４に難易度補正係数６を乗じた機能量でシステムでひとつ。これに工数変換係数７を掛けて開発工数が見積られる。ＦＰ改法２では使わない。
６    難易度補正係数６                            図６、図８
ＦＰ法１では１４項目の補正係数から計算される係数でシステムでひとつ。調整済機能量５が未調整機能量４の何倍になるかを示す。最大値は１．３５、最小値は０．６５。ＦＰ改法２では小処理単位１２ごと、抽出単位１１ごとに設定できる。
７    工数変換係数７                              図９、図７
ＦＰ法１では調整済機能量５を開発工数に換算するための変換係数でシステムでひとつ。開発生産性の指標ともなる。ＦＰ改法２では異質な作業ごとに決められ、機能量種別の数に対応する工数変換係数７を持つ。
８    抽出単位導出属性８                        図１８、図１９
抽出単位機能量３を算出する本になる構造的な要素で、システムの内部構造から抽き出される。データ抽出単位機能量９の場合はレコードタイプ数１７（ＲＥＴ数）とデータ単位数１９（ＤＥＴ数）から、トランザクション抽出単位機能量１０の場合は参照ファイルタイプ数１８（ＦＴＲ数）とデータ単位数１９（ＤＥＴ数）から求められる。
【００３５】
９    データ抽出単位機能量９                        図２４
ＦＰ法１でアプリケーション境界の内部で書き込まれる保守される内部論理ファイル（ＩＬＦ）とアプリケーション境界の外に参照される外部インターフェースファイル（ＥＩＦ）の２種類がある。画面や帳票はそのいずれでもなくビューとみなされる。
１０  トランザクション抽出単位機能量１０              図２４
ＦＰ法１でアプリケーション境界の外からアプリケーション境界の内部に投入されて内部論理ファイルに書き込む外部入力処理（ＥＩ）、内部論理ファイルと外部インターフェースファイルを参照し、新たなデータ要素を加工してアプリケーション境界の外部へ書き出す（帳票や画面）外部出力処理（ＥO）、、内部論理ファイルを新たな加工はせずにそのままアプリケーション境界の外部へ書き出す（帳票や画面）外部照会処理（ＥＱ）の３種類がある。
１１  抽出単位１１                                  図１１
ＦＰ法１、ＦＰ改法２の両方で共通の抽出単位導出属性８を抽出する単位で、ＦＰ法１ではエンテテイやトランザクション、ＦＰ改法２では拡張されてファイルやプログラム等に相当する。
１２  小処理単位１２                                図１１
ＦＰ改法２における工数見積り単位であり具体的には抽出単位１１（プログラム単位やファイル単位）かまたはそれらを組み合せた単位を指す。ＦＰ法１では、この小処理単位１２がシステム全体であると見なせる。
１３  再見積り１３                                  図１０
見積り時と開発後の機能量には差がでる場合が少なくない。従って実投下工数１６と見積り工数１５から生産性指標を算出すると誤差が生まれやすい。そこで開発後の最終生成物から正味の機能量を再測定し、それと実投下工数１６とを比較すれば生産性指標（＝工数変換係数７）の信頼性は増す。そのために開発後にも再見積り１３を行う。
１４  抽出単位機能量マトリックス変換表１４              図４、図５
ＦＰ法１で抽出単位導出属性８から抽出単位機能量３へ換算するためのマトリックス変換表１４。抽出単位導出属性８に対して不連続な極めて粗い階段状の平面で変換される。
１５  見積り工数１５                                図９、図７
見積りで算出される開発工数でＦＰ法１ではひとつの調整済機能量５とひとつの標準工数変換係数７からひとつの見積り工数１５を算出する。ＦＰ改法２では、小処理単位ごとに５種類の小処理単位機能量３ａと５つの標準工数変換係数７を乗じて加算することで小処理単位１２の見積り工数１５が算出される。
１６  実投下工数１６                                図２５
実際の開発作業で投下した工数で、見積り工数１５と対比される。ＦＰ法１ではシステム全体でひとつであり、ＦＰ改法２では小処理単位１２ごとにひとつである。
１７  レコードタイプ数１７（ＲＥＴ数）              図１８
データ抽出単位導出属性８の一つで、ＩＬＦとＥＩＦ中のレコード種別の数である。ファイル中のレコードタイプの数ではなく、厳密には正規形情報に置き換えた場合の数である。ファイル単位にカウントする。
１８  参照ファイルタイプ数１８（ＦＴＲ数）          図１９
トランザクション抽出単位導出属性８の一つで、トランザクションごとの保守または参照される全てのＩＬＦとＥＩＦのファイル数である。帳票や画面は含めない。トランザクション単位でカウントされる。
【００３６】
１９  データ単位数１９（ＤＥＴ数）                  図１８、図１９
データ抽出単位導出属性およびトランザクション抽出単位導出属性の一つで、データ項目数を指すが両者の場合でＤＥＴ数の意味が異なる。データの場合は全てのプログラムからアクセスされるデータ項目数（通常はファイルのデータ項目数と等しい）、トランザクションの場合はひとつのプログラムからアクセスされるデータ項目数である。厳密には正規形情報でのカウントを原則とし繰り返しデータ項目はひとつと見做す。
２０  抽出単位導出属性調整部２０            図１〜図３
抽出単位導出属性８を新規に入力したり、開発後の最終生成物からプログラムで抽出された抽出単位導出属性８を表示して修正する機能を持つ見積りシステムの一部。保守抽出単位導出属性調整部２０は保守の前後の抽出単位導出属性８もしくはその差分情報について選択的に表示し保守固有の編集機能を持つ。
２１  抽出単位導出属性抽出部２１            図２〜図３
開発後の生成物からプログラムで自動的に抽出単位導出属性８を抽出する機能を持つ見積りシステムの一部でＦＰ改法２独自の機能。ソースプログラムからプログラム抽象構文木補助情報２９を作り、そこから抽出単位導出属性８を抽出する処理部分を持つ。
２２  抽出単位機能量変換部２２                    図１〜図３
抽出単位導出属性情報２６の抽出単位導出属性８を抽出単位機能量３に変換する機能を持つ見積りシステムの一部。ＦＰ法１ではマトリックス変換表１４を用いて変換しひとつの調整済機能量５に纏めるが、ＦＰ改法では一次元または二次元の単調増加関数による変換を行う。
２３  実投下工数書き込み部２３                図１〜図３
見積り工数１５に対応する実投下工数１６を書き込む機能を持つ見積りシステムの一部。ＦＰ法１ではひとつの見積り工数１５とひとつの実投下工数１６が発生する。ＦＰ改法では小処理単位１２ごとに実投下工数１６が発生する。
２４  工数変換係数算出部２４                  図１〜図３
小処理単位機能量３ａと実投下工数１６とから工数変換係数７を算出する機能を持つ見積りシステムの一部。ＦＰ法１ではひとつの小処理単位機能量３ａと実投下工数１６しか発生しないが、ＦＰ改法２では小処理単位１２ごとに機能量種別数の小処理単位機能量３ａと小処理単位１２ごとの実投下工数１６が発生する。回帰分析法を用いて機能量種別に対応する最適な工数変換係数７が決められる。
２５  保守前後抽出単位導出属性差分加工部２５          図３
保守前後のソースプログラム等の最終生成物から自動的に抽出された抽出単位導出属性８の差分を算出し、保守用の抽出単位導出属性８を提供する機能を持つ見積りシステムの一部。ＦＰ改法２で固有の機能である。
２６  抽出単位導出属性情報２６              図１〜図３、図２３
抽出単位機能量３を算出するための元になる抽出単位導出属性８を保持するファイルでデータ抽出単位導出属性８とトランザクション抽出単位導出属性８の２種類の情報（レコート）タイプがある。
【００３７】
２７  小処理単位工数情報２７                  図１〜図３、図２５
小処理単位機能量３ａや見積り工数１５、実投下工数１６が保持される中核的な情報ファイルでＦＰ法１とＦＰ改法２の２種類の情報（レコード）タイプ種別がある。ＦＰ法１ではシステムで１個の情報しか生じない。ＦＰ改法２では小処理単位１２ごとの情報が発生する。
２８  工数変換係数履歴情報２８                図１〜図３
小処理単位機能量３ａと実投下工数１６から算出される工数変換係数７や標準工数変換係数７を保持するファイルで、ＦＰ法１とＦＰ改法２の２種類の情報（レコード）タイプ種別がある。ＦＰ法１ではシステムでひとつの工数変換係数７しか生じない。ＦＰ改法２では適用する見積り対象作業ごとに機能量種別の数の情報が発生する
２９  プログラム抽象構文木補助情報２９            図１３
抽出単位導出属性抽出部２１でデータ抽出単位導出属性８、トランザクション抽出単位導出属性８を抽出する処理を簡単化するために事前に作成する補助的情報のひとつ。抽象構文木生成プログラムを実行するときメモリ上に生成されるポインタで繋がれた抽象構文木ノード情報を補助情報として外部情報に落としたもの。
３０  プログラム入出力データ補助情報３０      図１３
抽出単位導出属性抽出部２１でデータ抽出単位導出属性８、トランザクション抽出単位導出属性８を抽出する処理を簡単化するために事前に作成する補助的情報のひとつ。プログラム抽象構文木補助情報２９から特定のSQLコマンドに係わるノード情報だけを抽出し、そこから各プログラムについて参照・更新するテーブル名（ファイル名）と列名（データ項目）、SQLコマンド名等の全ての組み合わせを抜き出した補助情報。
３１  検索キー情報３１                        図２〜図３
ファイルから処理対象となる一群のロット情報を一括で引き出すときの検索キー情報３１で新規／保守区分、見積り／再見積り１３区分、見積り範囲（システム、サブシステム）等の項目を含む。各処理部を起動するときの引渡し情報としても使われる。
３２  見積りパターン３２                      図１８、図１９
FP改法２で工数見積りを行う対象となる開発作業を指定する項目。
３３  抽出単位導出属性変換部３３        図１〜図３
抽出単位機能量変換部２２に含まれる３つの処理部のひとつで、抽出単位導出属性８を抽出単位機能量３へ変換する機能を持つ。ＦＰ法１ではマトリックス変換表１４で行い、ＦＰ改法２では単調増加する関数で変換する。
３４  小処理単位機能量集約部３４              図１〜図３
抽出単位機能量変換部２２に含まれる３つの処理部のひとつで、抽出単位機能量３を作業の性質に従って小処理単位機能量３ａに集約する。FP法１の場合はシステム全体でひとつの小処理単位１２へ集約すると見なしてよい。
３５  小処理単位見積り工数算出部３５          図１〜図３
抽出単位機能量変換部２２に含まれる３つの処理部のひとつで、小処理単位機能量３ａに集約した後、それに工数変換係数履歴情報２８の標準工数変換係数７を乗じて見積もり工数１５を算出する。FP法１の場合はシステム全体でひとつであるが、FP改法２の場合は全ての小処理単位１２について算出する。
【図１】
2013178618.tif 000003
【図２】
2013178618.tif 000004
【図３】
2013178618.tif 000005
【図４】
2013178618.tif 000006
【図５】
2013178618.tif 000007
【図６】
2013178618.tif 000008
【図７】
2013178618.tif 000009
【図８】
2013178618.tif 000010
【図９】
2013178618.tif 000011
【図１０】
2013178618.tif 000012
【図１１】
2013178618.tif 000013
【図１２】
2013178618.tif 000014
【図１３】
2013178618.tif 000015
【図１４】
2013178618.tif 000016
【図１５】
2013178618.tif 000017
【図１６】
2013178618.tif 000018
【図１７】
2013178618.tif 000019
【図１８】
2013178618.tif 000020
【図１９】
2013178618.tif 000021
【図２０】
2013178618.tif 000022
【図２１】
2013178618.tif 000023
【図２２】
2013178618.tif 000024
【図２３】
2013178618.tif 000025
【図２４】
2013178618.tif 000026
【図２５】
2013178618.tif 000027
【図２６】
2013178618.tif 000028
【図２７】
2013178618.tif 000029
【図２８】
2013178618.tif 000030
【図２９】
2013178618.tif 000031
【図３０】
2013178618.tif 000032