(57)【要約】【課題】ソフトウェアの開発規模を、既存のソフトウェアを流用した部分と変更した部分とに分けて測定する。【解決手段】新ファイルを構成するレコードの各々に関して、新ファイルに含まれ内容が同一のレコードの数と、元ファイルに含まれ内容が同一のレコードの数とをカウントする。内容が同一であるレコードが元ファイルに比べて新ファイルにおいて増えて（減って）いれば、そのレコードは複製（削除）されたものとしてカウントされる。新ファイルを構成するレコードのうち元ファイルにないレコードは新規作成されたものとしてカウントされる。元ファイルを構成するレコードのうち新ファイルにないレコードは削除されたものとしてカウントされる。【選択図】図１
2004220411.tif 000002
【特許請求の範囲】
【請求項１】
第１文字列と第２文字列とを入力する入力部と、前記第１文字列と前記第２文字列とは所定のフォーマットによって区切られた複数のレコードを含み、
前記第１文字列が含む前記複数のレコードの各々と前記第２文字列が含む前記複数のレコードの各々とを照合することによって、前記第２文字列から前記第１文字列を開発する際の開発規模を算出する演算部と、
前記算出の結果を出力する出力部と
を具備する、
開発規模測定器。
【請求項２】
第１文字列と第２文字列とを入力する入力部と、前記第１文字列と前記第２文字列とは所定のフォーマットによって区切られた複数のレコードを含み、
前記第１文字列が含む前記複数のレコードのうちの各々のレコードＲに対して、前記第１文字列に含まれ前記レコードＲと同一内容を有するレコードの数ｍ１と前記第２文字列に含まれ前記レコードＲと同一内容を有するレコードの数ｍ２とを計算する演算部とを具備し、ｍ１とｍ２とはＲに依存する関数であり、
前記演算部は、ｍ１とｍ２とを比較することによって前記第２文字列から前記第１文字列を作成する際の開発規模を算出する、
開発規模測定器。
【請求項３】
請求項２において、
前記演算部は更に、前記レコードＲに対してｍ２＝０であるとき、ｍ１を新規作成レコード数として算出し、ｍ１＞ｍ２であるときｍ１−ｍ２を複製レコード数として算出し、ｍ２＞ｍ１であるときｍ２−ｍ１を削減レコード数として算出し、ｍ１＝ｍ２であるとき、ｍ１を流用レコード数として算出する、
開発規模測定器。
【請求項４】
請求項１から３のうちのいずれか１項において、
前記第１文字列と前記第２文字列とはコンピュータによって実行可能なプログラムである、
開発規模測定器。
【請求項５】
第１文字列と第２文字列とを入力するステップと、前記第１文字列と前記第２文字列とは所定のフォーマットによって区切られた複数のレコードを含み、
前記第１文字列が含む前記複数のレコードの各々と前記第２文字列が含む前記複数のレコードの各々とを照合することによって、前記第２文字列から前記第１文字列を開発する際の開発規模を算出するステップと、
前記算出の結果を出力するステップと
を具備する方法をコンピュータに実行させる開発規模測定プログラム。
【請求項６】
第１文字列と第２文字列とを入力するステップと、前記第１文字列と前記第２文字列とは所定のフォーマットによって区切られた複数のレコードを含み、
前記第１文字列が含む前記複数のレコードのうちの各々のレコードＲに対して、前記第１文字列に含まれ前記レコードＲと同一内容を有するレコードの数ｍ１と前記第２文字列に含まれ前記レコードＲと同一内容を有するレコードの数ｍ２とを計算するステップと、ｍ１とｍ２とはＲに依存する関数であり、
ｍ１とｍ２とを比較することによって前記第２文字列から前記第１文字列を作成する際の開発規模を測定するステップと
を具備する方法をコンピュータに実行させる開発規模測定プログラム。
【請求項７】
請求項６において、
更に、前記レコードＲに対してｍ２＝０であるとき、ｍ１を新規作成レコード数として算出するステップと、
前記レコードＲに対してｍ１＞ｍ２であるときｍ１−ｍ２を複製レコード数として算出するステップと、
前記レコードＲに対してｍ２＞ｍ１であるときｍ２−ｍ１を削減レコード数として算出するステップと、
前記レコードＲに対して、ｍ１＝ｍ２であるとき、ｍ１を流用レコード数として算出するステップと
を具備する方法をコンピュータに実行させる開発規模測定プログラム。
【請求項８】
第１文字列と第２文字列とを入力するステップと、前記第１文字列と前記第２文字列とは所定のフォーマットによって区切られた複数のレコードを含み、
前記第１文字列が含む前記レコードの数ＮＮＥＷ及び前記第２文字列が含む前記レコードの数ＮＯＬＤをカウントするステップと、
前記第１文字列が含む複数のレコードのうちの各々のレコードＲに対して、前記第１文字列が含む複数のレコードのうちで前記レコードＲと同一内容であるレコードの数ｍ１を算出するステップと、
前記第２文字列が含む複数のレコードのうちで前記レコードＲと同一内容であるレコードの数ｍ２を算出するステップと、
ｍ２＝０であるときｎ１＝１とするステップと、ｎ１はＲに依存する関数であり、
ｍ２−ｍ１＝０であるときｎ２＝１とするステップと、ｎ２はＲに依存する関数であり、
ｍ２≠０かつｍ１＞ｍ２であるとき、ｎ２＝ｍ２／ｍ１かつｎ３＝（ｍ１−ｍ２）／ｍ１とするステップと、ｎ３はＲに依存する関数であり、
ｍ２＞ｍ１であるときｎ２＝１かつｎ４＝（ｍ２−ｍ１）／ｍ１とするステップと、ｎ４はＲに依存する関数であり、
Ｎ１＝Σｎ１、Ｎ２＝Σｎ２、Ｎ３＝Σｎ３、Ｎ４＝ＮＯＬＤ＋Ｎ１＋Ｎ３−ＮＮＥＷを計算するステップと、Σは前記第１文字列が含む全ての前記レコードについての和を表し、
Ｎ１を新規作成レコード数として表示し、Ｎ２を流用レコード数として表示し、Ｎ３を複製レコード数として表示し、Ｎ４を削除レコード数として表示するステップと
を具備する方法をコンピュータに実行させる開発規模測定プログラム。
【請求項９】
請求項５から８のうちのいずれか１項において、
前記第１文字列と前記第２文字列とはコンピュータによって実行可能なプログラムである、
開発規模測定プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェアの開発規模を測定する測定方法及び測定器に関する。
【０００２】
【従来の技術】
ソフトウェアの開発において、既存のソフトウェアを変更して新しいソフトウェアを作成することが行われている。ソフトウェアの品質あるいは生産性を管理あるいは評価するために、既存のソフトウェアから新しいソフトウェアを作成するときに変更された量を測定することが求められている。特に、新しいソフトウェアを作成する際に既存のソフトウェアから流用された分と新規開発分を分けて測定することが求められている。
【０００３】
ソフトウェアの開発規模を測定する方法として、プログラム・モジュールの各レコードに少なくとも登録・追加挿入または削除を区別する情報を設定し、その情報を用いて該プログラム・モジュールの開発量を演算し出力するプログラム開発情報収集処理方式が知られている（特許文献１参照）。
【０００４】
【特許文献１】特開昭６０−７４０３１号公報
【０００５】
【発明が解決しようとする課題】
本発明の目的は、任意の形式で記述されたコンピュータプログラムの開発規模を測定する開発規模測定器及び開発規模測定プログラムを提供することである。
【０００６】
本発明の他の目的は、コンピュータプログラムの開発規模を測定するためにプログラマに課せられる所定の作業を省く開発規模測定器及び開発規模測定プログラムを提供することである。
【０００７】
本発明の更に他の目的は、元プログラムに変更を加えて作成された新プログラムの開発規模を、新規作成された行数、流用された行数、複製された行数、削除された行数に分けて算出する開発規模測定器及び開発規模測定プログラムを提供することである。
【０００８】
本発明の更に他の目的は、アルゴリズムが簡易な開発規模測定器及び開発規模測定プログラムを提供することである。
【０００９】
本発明の更に他の目的は、計算する量が少ない開発規模測定器及び開発規模測定プログラムを提供することである。
【００１０】
【課題を解決するための手段】
以下に、［発明の実施の形態］で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明の実施の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明による開発規模測定器（１）は、第１文字列（２２）と第２文字列（２１）とを入力する入力部（５）を具備している。第１文字列（２２）と第２文字列（２１）とは所定のフォーマット（５０）によって区切られた複数のレコード（５１）を含んでいる。開発規模測定器（１）は更に、第１文字列（２２）が含む複数のレコード（５１）の各々と第２文字列（２１）が含む複数のレコード（５１）の各々とを照合することによって第２文字列（２１）から第１文字列（２２）を開発する際の開発規模を算出する演算部（６）と、算出の結果を出力する出力部（１４）とを具備している。
【００１２】
こうした開発規模測定器（１）によれば、プログラマが第２文字列（２１）に変更を加えて第１文字列（２２）を作成したとき、プログラマが変更箇所を記録する作業を省略して開発規模の測定がなされる。更にこうした開発規模測定器（１）によれば、第２文字列（２１）に変更を加えて第１文字列（２２）が作成されたとき、変更箇所を記録するためのフォーマットに影響されずに、複数のレコード（５１）に区切られた任意の文字列に対して開発規模が測定される。
【００１３】
本発明による開発規模測定器（１）は、第１文字列（２２）と第２文字列（２１）とを入力する入力部（５）を備えている。第１文字列（２２）と第２文字列（２１）とは所定のフォーマット（５０）によって区切られた複数のレコード（５１）を含んでいる。開発規模測定器（１）は更に、第１文字列（２２）が含む複数のレコード（５１）のうちの各々のレコードＲに対して、第１文字列（２２）に含まれレコードＲと同一内容を有するレコードの数ｍ１と、第２文字列（２１）に含まれレコードＲと同一内容を有するレコードの数ｍ２とを計算する演算部（６）を具備している。Ｒは各々のレコードを特定する変数（３４）であり、ｍ１とｍ２とはＲに依存する関数である。演算部（６）は、ｍ１とｍ２とを比較することによって第２文字列（２１）から第１文字列（２２）を作成する際の開発規模を測定する。
【００１４】
演算部（６）は更に、レコードＲに対してｍ２＝０であるとき、ｍ１を新規作成レコード数として算出し、ｍ１＞ｍ２であるときｍ１−ｍ２を複製レコード数として算出し、ｍ２＞ｍ１であるときｍ２−ｍ１を削減レコード数として算出し、ｍ１＝ｍ２であるとき、ｍ１を流用レコード数として算出する。
【００１５】
こうした開発規模測定器（１）によれば、簡易なアルゴリズムで開発規模が測定される。更にこうした開発規模測定器（１）によれば、開発規模を測定するための計算量が少ない。更にこうした開発規模測定器（１）によれば、新規開発されたレコード数と、複製されたレコード数と、削除されたレコード数と、流用されたレコード数とが区別して求められ、開発規模が正確に求められる。
【００１６】
第１文字列（２２）と第２文字列（２１）とはコンピュータによって実行可能なプログラムである。
【００１７】
本発明による開発規模測定プログラムは、第１文字列（２２）と第２文字列（２１）とを入力するステップ（Ｓ４）を具備している。第１文字列（２２）と第２文字列（２１）とは所定のフォーマット（５０）によって区切られた複数のレコード（５１）を含んでいる。本発明による開発規模測定プログラムは更に、第１文字列（２２）が含む複数のレコード（５１）の各々と第２文字列（２１）が含む複数のレコード（５１）の各々とを照合することによって、第２文字列（２１）から第１文字列（２２）を開発する際の開発規模を算出するステップ（Ｓ１４、Ｓ１６、Ｓ１８、Ｓ２０、Ｓ２６）と、算出の結果を出力するステップ（Ｓ２８）とを具備している。
【００１８】
本発明による開発規模測定プログラムは、第１文字列（２２）と第２文字列（２１）とを入力するステップ（Ｓ４）を具備している。第１文字列（２２）と第２文字列（２１）とは所定のフォーマット（５０）によって区切られた複数のレコード（５１）を含んでいる。開発規模測定プログラムは更に、第１文字列（２２）が含む複数のレコード（５１）のうちの各々のレコードＲに対して、第１文字列（２２）に含まれレコードＲと同一内容を有するレコードの数ｍ１と第２文字列（２１）に含まれレコードＲと同一内容を有するレコードの数ｍ２とを計算するステップ（Ｓ１０、Ｓ１２）を具備している。ｍ１とｍ２とはＲに依存する関数である。開発規模測定プログラムは更に、ｍ１とｍ２とを比較することによって第２文字列（２１）から第１文字列（２２）を作成する際の開発規模を測定するステップ（Ｓ１４、Ｓ１６、Ｓ１８、Ｓ２０、Ｓ２６）を具備している。
【００１９】
開発規模測定プログラムは、レコードＲに対してｍ２＝０であるときｍ１を新規作成レコード数として算出するステップ（Ｓ１４）と、レコードＲに対してｍ１＞ｍ２であるときｍ１−ｍ２を複製レコード数として算出するステップ（Ｓ１８）と、レコードＲに対してｍ２＞ｍ１であるときｍ２−ｍ１を削減レコード数として算出するステップ（Ｓ２０）と、レコードＲに対してｍ１＝ｍ２であるとき、ｍ１を流用レコード数として算出するステップ（Ｓ１６）とを具備している。
【００２０】
開発規模測定プログラムは、第１文字列（２２）と第２文字列（２１）とを入力するステップ（Ｓ４）を具備している。第１文字列（２２）と第２文字列（２１）とは所定のフォーマット（５０）によって区切られた複数のレコード（５１）を含んでいる。開発規模測定プログラムは更に、第１文字列（２２）が含むレコードの数ＮＮＥＷ及び第２文字列（２１）が含むレコードの数ＮＯＬＤをカウントするステップ（Ｓ６）と、第１文字列（２２）が含む複数のレコード（５１）のうちの各々のレコードＲに対して、第１文字列（２２）が含む複数のレコード（５１）のうちでレコードＲと同一内容であるレコードの数ｍ１を算出するステップ（Ｓ１０）と、第２文字列（２１）が含む複数のレコードのうちでレコードＲと同一内容であるレコードの数ｍ２を算出するステップ（Ｓ１２）を具備している。開発規模測定プログラムは更に、第１文字列（２２）が含む複数のレコード（５１）のうちの任意のレコードＲに対して、ｎ１、ｎ２、ｎ３及びｎ４をＲに依存する関数として、ｍ２＝０であるときｎ１＝１とするステップ（Ｓ１４）と、ｍ２−ｍ１＝０であるときｎ２＝１とするステップ（Ｓ１６）と、ｍ２≠０かつｍ１＞ｍ２であるとき、ｎ２＝ｍ２／ｍ１かつｎ３＝（ｍ１−ｍ２）／ｍ１とするステップ（Ｓ１８）と、ｍ２＞ｍ１であるときｎ２＝１かつｎ４＝（ｍ２−ｍ１）／ｍ１とするステップ（Ｓ２０）と、Ｎ１＝Σｎ１、Ｎ２＝Σｎ２、Ｎ３＝Σｎ３、Ｎ４＝ＮＯＬＤ＋Ｎ１＋Ｎ３−ＮＮＥＷを計算するステップ（２６）とを具備している。ここでΣは前記第１文字列が含む全ての前記レコードについての和を表している。開発規模測定プログラムは更に、Ｎ１を新規作成レコード数として表示し、Ｎ２を流用レコード数として表示し、Ｎ３を複製レコード数として表示し、Ｎ４を削除レコード数として表示するステップ（Ｓ２８）を具備している。
【００２１】
第１文字列（２２）と第２文字列（２１）とはコンピュータによって実行可能なプログラムである。
【００２２】
【発明の実施の形態】
［実施の第１形態］
図１は、本発明における開発規模測定器１の構成を示している。開発規模測定器１は、記憶装置４に接続されている。記憶装置４は、元ファイル２１と新ファイル２２とを格納している。元ファイル２１と新ファイル２２とは、コンピュータによって読み取り可能なファイルである。元ファイル２１と新ファイル２２とは、所定のフォーマットによって複数の部分に区切られている。元ファイル２１と新ファイル２２としては、文書ファイルあるいは表計算ソフトウェア用のファイルが例示される。元ファイル２１と新ファイル２２としては、行分けされて記述されたコンピュータプログラムが特に好適に例示される。以下の説明においては、行分けによって複数の部分に区切られた元ファイル２１と新ファイル２２を用いて説明を行う。
【００２３】
新ファイル２２は、元ファイル２１を変更することによって作成されたファイルである。
【００２４】
開発規模測定器１は、入力装置５を具備している。入力装置５は記憶装置４に接続されており、記憶装置４から元ファイル２１と新ファイル２２とを読み込む。
【００２５】
開発規模測定器１は更に、ＣＰＵを備えた演算装置６を具備している。演算装置６は入力装置５に接続されている。
【００２６】
開発規模測定器１は更に、第１記憶装置８を具備している。第１記憶装置８は演算装置６に接続されている。第１記憶装置８は、演算装置６が計算した元ファイルの行数ＮＯＬＤと新ファイルの行数ＮＮＥＷとを格納する。
【００２７】
開発規模測定器１は更に、第２記憶装置１０を具備している。第２記憶装置１０は演算装置６に接続されている。第２記憶装置１０は、第１テーブル３１を格納している。
【００２８】
開発規模測定器１は更に、第３記憶装置１２を具備している。第３記憶装置１２は演算装置６に接続されている。第３記憶装置１２は、第２テーブル３２と、後述する手順によって算出される数値であるＮ１、Ｎ２、Ｎ３、Ｎ４を格納している。
【００２９】
開発規模測定器１は更にフォーマット記憶装置１１を備えている。フォーマット記憶装置１１は演算装置６に接続されている。フォーマット記憶装置１１は、少なくとも１つのフォーマット５０に関するデータを格納している。
【００３０】
開発規模測定器１は更に出力装置１４を備えている。出力装置１４は演算装置６に接続されている。出力装置７はＮ１、Ｎ２、Ｎ３、Ｎ４の値を出力する。
【００３１】
図２を参照して、第１テーブル３１は、新ファイル２２の各々の行を特定するために付けられる行ＩＤ３４と、演算装置６が新ファイル２２の各々の行について当該行と新ファイル２２の各行とを照合して一致していると判定した行（当該行自身も含む）の行数であるｍ１と、演算装置６が新ファイル２２の各々の行について当該行と元ファイルの各行とを照合して一致していると判定した行の行数であるｍ２とを対応づけて格納している。
【００３２】
図３を参照して、第２テーブル３２は、行ＩＤ３４と、後述する手順によって新ファイル２２に含まれる各々の行に対して算出されるｎ１、ｎ２、ｎ３、ｎ４とを対応づけて格納している。第２テーブル３２は更に、ｎ１、ｎ２、ｎ３、ｎ４の各々に関して、新ファイル２２に含まれる全ての行について足し合わせた値であるΣｎ１、Σｎ２、Σｎ３、Σｎ４を格納している。
【００３３】
図４はフォーマット５０を示す。元ファイル２１と新ファイル２２とは所定のフォーマット５０に則って記述されている。フォーマット５０において、本文５３は複数の行５１に区切られている。本文５３は、複数の行５１を用いて区切られることに代えて、本文５３のなかに挿入される図示しない制御記号によって区切られている場合でも、本発明における開発規模測定器１を用いて開発規模を測定することが可能である。
【００３４】
フォーマット５０においては、各々の行５１の冒頭に、行番号５２に例示される文字列が記載されることがある。この場合、演算装置６は元ファイル２１と新ファイル２２を比較するときに行番号５２を無視して本文５３を抽出し、元ファイル２１の本文５３と新ファイル２２の本文５３との比較を行う。
【００３５】
フォーマット５０は、コメント行５４を備えていることがある。コメント行は、図４の「／＊」〜「＊／」に例示される所定の制御記号を用いて記述される。開発規模測定器１は、開発規模を測定する際に、該所定の制御記号によって示されたコメント行をカウントするか無視するかを利用者が選択できる機能を有していることが好ましい。
【００３６】
開発規模測定装置１は、フォーマット記憶装置１１がフォーマット５０を複数格納していると、複数種類の言語で記述されたプログラムの開発規模を測定することができ好ましい。
【００３７】
このような構成を備えた開発規模測定器１の動作を以下に説明する。説明は、次の順序に従って行われる。
【００３８】
第１例では、元ファイル２１に対して行の新規作成、行の流用及び行の削除を行うことによって作成された新ファイル２２の開発規模を測定する方法が説明される。ここで行の削除という表現は、当該行が元ファイル２１に存在し、かつ当該行と同一内容の行が新ファイル２２に存在しないことを表している。
【００３９】
第２例では、元ファイル２１に対して行の流用及び行の複製を行うことによって作成された新ファイル２２の開発規模を測定する方法が説明される。
【００４０】
第３例では、元ファイル２１に対して行の流用、行の削減及び行の削除を行うことによって作成された新ファイル２２の開発規模を測定する方法が説明される。ここで行の削減という表現は、当該行と同一内容の行を元ファイル２１と新ファイル２２との両方が含んでおり、かつ元ファイル２１に含まれる当該行と同一内容の行の数よりも新ファイル２２に含まれる当該行と同一内容の行の数の方が少ないことを示している。
【００４１】
第４例では、第１例から第３例までで得られた計算方法を総合して、元ファイル２１に対して行の新規作成、流用、複製、削除あるいは削減を行うことによって作成された新ファイル２２の開発規模を測定する方法が説明される。
（第１例）
図５は、元ファイル２１と新ファイル２２の例を示している。元ファイル２１と新ファイル２２とは所定のフォーマット５０に則って複数の行５１に分けられている。
【００４２】
元ファイル２１には「ＡＢＣＤＥＦ」と記述されている行が２行、「ＧＨＩＪＫＬ」と記述されている行が１行、「ＭＮＯＰＱＲ」と記述されている行が１行ある。新ファイル２２には「ＡＢＣＤＥＦ」と記述されている行が２行、「ＧＨＩＪＫＬ」と記述されている行が１行、「ＳＴＵＶＷＸ」と記述されている行が１行ある。
【００４３】
こうした元ファイル２１と新ファイル２２が与えられたときに、新ファイル２２の開発規模は次の方法で測定される。
【００４４】
演算装置６は、元ファイル２１の行数ＮＯＬＤと新ファイル２２の行数ＮＮＥＷとをカウントして、第１記憶装置８に格納する。第１例においてはＮＯＬＤ＝４、ＮＮＥＷ＝４である。
【００４５】
図６を参照して、演算装置６は、新ファイル２２の最初の行である「ＡＢＣＤＥＦ」と、新ファイル２２に含まれる各行（当該行自身も含む）とを照合し、一致した行の数をｍ１として第１テーブル３１に格納する。今の例ではｍ１＝２である。
【００４６】
演算装置６は更に、新ファイル２２の最初の行である「ＡＢＣＤＥＦ」と、元ファイル２１に含まれる各行とを照合し、一致した行の数をｍ２として第２テーブルに格納する。今の例ではｍ２＝２である。
【００４７】
演算装置６は、こうした計算を、新ファイル２２の最初の行から順次、最後の行に達するまで１行ずつ行い、新ファイル２２の各行に対してｍ１とｍ２とを計算し、計算されたｍ１とｍ２とを第１テーブル３１に格納する。
【００４８】
補助テーブル３３は、演算装置６がｍ１とｍ２とからｎ１、ｎ２、ｎ３、ｎ４を算出する手順を説明するために描かれたテーブルである。開発規模測定器１は補助テーブル３３を備えていなくてもよい。
【００４９】
演算装置６は、各行に対してｍ２−ｍ１を計算し、計算されたｍ２−ｍ１の値によって新ファイル２２の当該行が元ファイル２１を流用したものか新規作成したものかを判定し、流用された行数と新規作成された行数とを算出する。
【００５０】
新ファイル２２の１行目に関して、ｍ２−ｍ１＝０である。ｍ２−ｍ１＝０である行においては、ｍ１＝ｍ２、すなわち元ファイル２１のなかで該行と同一内容である行の行数と新ファイル２２のなかで該行と同一内容である行の行数とは等しい。このことをもって、新ファイル２２の１行目は元ファイル２１から流用したものであると判定される。このとき、演算装置６は新ファイル２２の１行目に関してｎ１＝０、ｎ２＝１、ｎ３＝０、ｎ４＝０という値を与え、第２テーブル３２に格納する。
【００５１】
新ファイル２２の２行目と３行目に関してもｍ２−ｍ１＝０であるため、演算装置６は新ファイル２２の２行目と３行目に関してｎ１＝０、ｎ２＝１、ｎ３＝０、ｎ４＝０という値を与え、第２テーブル３２に格納する。
【００５２】
新ファイル２２の４行目に関して、ｍ２＝０である。これは新ファイル２２の４行目と同一内容の行が元ファイル２１に存在しないことを示している。このことをもって、新ファイル２２の４行目は元ファイル２１に無い行を新規に作成した行であると判定される。このとき、演算装置６は新ファイル２２の４行目に関してｎ１＝１、ｎ２＝０、ｎ３＝０、ｎ４＝０という値を与え、第２テーブル３２に格納する。
【００５３】
演算装置は、ｎ１、ｎ２、ｎ３、ｎ４の各々に関して１行目から４行目まで足し合わせ、第２テーブル３２に格納する。図５に示される例では、Σｎ１＝１、Σｎ２＝３、Σｎ３＝０、Σｎ４＝０である。
【００５４】
Σｎ１は新規作成された行の合計を表し、Σｎ２は流用された行の合計を表している。
【００５５】
第１例に関して、新ファイル２２のすべての行が元ファイル２１と比較して新規作成、流用あるいは削除によって作成されたものであることから、複製された行は存在しない。複製された行が存在しないことは、新ファイル２２の全ての行に関してｎ３＝０であることによって示されている。
【００５６】
元ファイル２１の３行目の「ＭＮＯＰＱＲ」と同一内容の行は、新ファイル２２には含まれていない。元ファイル２１から削除されたこうした行に関する情報は、以上に示した計算の過程には含まれていない。こうした、元ファイル２１から削除され新ファイル２２に存在しなくなった行の数は、ＮＯＬＤ＋Σｎ１−ＮＮＥＷで表される。第１例においては、この数は４＋１−４＝１である。
【００５７】
以上に示した計算から、第１例に関して元ファイル２１から新ファイル２２が作成されたとき、開発規模測定器１は、新ファイル２２の開発規模を、次に示すＮ１、Ｎ２、Ｎ３及びＮ４、
新規作成された行の数Ｎ１≡Σｎ１＝１、
流用された行の数Ｎ２≡Σｎ２＝３、
複製された行の数Ｎ３≡Σｎ３＝０、
削除された行の数Ｎ４≡Σｎ４＝１、
によって表す。
【００５８】
このようなプログラム開発規模測定器１は、新ファイル２２において新規作成された行数Ｎ１と、元ファイル２１から流用された行数Ｎ２と、元ファイルから削除された行数Ｎ４とを簡易なアルゴリズムによって計算する。
（第２例）
図７は、元ファイル２１と新ファイル２２の他の例を示している。こうした元ファイル２１と新ファイル２２が与えられたときに、新ファイル２２の開発規模は次の方法で測定される。
【００５９】
演算装置６は、元ファイル２１の行数ＮＯＬＤと新ファイル２２の行数ＮＮＥＷとをカウントして、第１記憶装置８に格納する。第２例においてはＮＯＬＤ＝３、ＮＮＥＷ＝６である。
【００６０】
図８を参照して、演算装置６は、第１例と同一の手順で新ファイル２２の各行に関してｍ１とｍ２とを計算して第１テーブル３１に格納する。
【００６１】
新ファイル２２の１行目は「ＡＢＣＤＥＦ」である。新ファイル２２が含んでいる「ＡＢＣＤＥＦ」という行の数はｍ１＝３で示される。元ファイル２１が含んでいる「ＡＢＣＤＥＦ」という行の数はｍ２＝１で示される。新ファイル２２が含んでいる「ＡＢＣＤＥＦ」という行の数は元ファイルが含んでいる「ＡＢＣＤＥＦ」という行の数よりもｍ１−ｍ２＝２だけ多い。
【００６２】
第２例に関する以上の検討から、次のことが示される。
（ａ）  ｍ１＞ｍ２すなわちｍ２−ｍ１＜０であるとき、新ファイル２２は「ＡＢＣＤＥＦ」という行を元ファイルよりも多数含んでいる。
（ｂ）  ｍ２≠０であることは、元ファイル２１が「ＡＢＣＤＥＦ」という行を含んでいることを示している。
【００６３】
上述の（ａ）と（ｂ）とによって、新ファイル２２は元ファイル２１における「ＡＢＣＤＥＦ」を複製したと判定される。
【００６４】
複製された行数をカウントする方法は、次のように導かれる。
【００６５】
「ＡＢＣＤＥＦ」という行は元ファイル２１に１行、新ファイル２２に３行含まれている。ここから、新ファイル２２は元ファイル２１の「ＡＢＣＤＥＦ」を１行流用し、２行複製したと判定される。
【００６６】
新ファイルの１行目、３行目及び５行目の「ＡＢＣＤＥＦ」という行の各々において「ＡＢＣＤＥＦ」という行が流用された数と複製された数を計算すると、計算が３回重複することになる。１行目、３行目及び５行目の各々において「ＡＢＣＤＥＦ」という行が流用された数を１／３、複製された数を２／３としておくと、１行目、３行目及び５行目からの寄与を合計することで、流用された行数は１／３＋１／３＋１／３＝１、複製された行数は２／３＋２／３＋２／３＝２という値が得られる。
【００６７】
式で表現すると次のようになる。条件（ａ）及び（ｂ）を満たす各々の行に関して、演算装置６は、複製された行数としてｎ３＝（ｍ１−ｍ２）／ｍ１を割り当て、第２テーブル３２に格納する。演算装置６は更に、流用された行数としてｎ２＝ｍ２／ｍ１を割り当て、第２テーブル３２に格納する。
【００６８】
元ファイル２１から削除された行（新ファイル２２に存在しない行）の数は、ＮＯＬＤ＋Σｎ１＋Σｎ３−ＮＮＥＷで表される。第２例においては、この数は３＋０＋３−６＝０である
以上に示した計算から、第２例に関して元ファイル２１から新ファイル２２が作成されたとき、開発規模測定器１は、新ファイル２２の開発規模を、次に示すＮ１、Ｎ２、Ｎ３及びＮ４によって表す。
【００６９】
新規作成された行の数Ｎ１≡Σｎ１＝０、
流用された行の数Ｎ２≡Σｎ２＝３、
複製された行の数Ｎ３≡Σｎ３＝３、
削除された行の数Ｎ４≡Σｎ４＝０。
【００７０】
本例に示した方法によれば、正確な流用行数と複製行数とが簡易なアルゴリズムで算出される。
（第３例）
図９は、元ファイル２１と新ファイル２２の更に他の例を示している。こうした元ファイル２１と新ファイル２２が与えられたときに、新ファイル２２の開発規模は次の方法で測定される。
【００７１】
演算装置６は、元ファイル２１の行数ＮＯＬＤと新ファイル２２の行数ＮＮＥＷとをカウントして、第１記憶装置８に格納する。第３例においてはＮＯＬＤ＝７、ＮＮＥＷ＝５である。
【００７２】
図１０を参照して、演算装置６は、第１例と同じ手順で新ファイル２２の各行に関してｍ１とｍ２とを計算して第１テーブル３１に格納する。
【００７３】
新ファイル２２の１行目は「ＡＢＣＤＥＦ」である。新ファイル２２が含んでいる「ＡＢＣＤＥＦ」という行の数はｍ１＝３で示される。元ファイル２１が含んでいる「ＡＢＣＤＥＦ」という行の数はｍ２＝４で示される。
【００７４】
第３例に関する以上の検討から、次のことが示される。
（ｃ）  ｍ２＞ｍ１すなわちｍ２−ｍ１＞０であるとき、新ファイル２２が含んでいる「ＡＢＣＤＥＦ」という行は元ファイルよりも少ない。
（ｄ）  ｍ２≠０であることは、元ファイル２１が「ＡＢＣＤＥＦ」という行を含んでいることを示している。
【００７５】
上述の（ｃ）と（ｄ）とによって、新ファイル２２においては元ファイル２１に複数含まれる「ＡＢＣＤＥＦ」という行が削減されたと判定される。
【００７６】
削減された行数をカウントする方法は、次のように導かれる。
【００７７】
「ＡＢＣＤＥＦ」という行は元ファイル２１に４行、新ファイル２２に３行含まれている。ここから、新ファイル２２は元ファイル２１の「ＡＢＣＤＥＦ」を３行流用し、１行削減したと判定される。
【００７８】
新ファイルの１行目、３行目及び５行目の「ＡＢＣＤＥＦ」という行の各々に対して、ｎ２＝１が割り当てられる。この割り当ては、当該行が元ファイルから流用されたものとして判定されたことを示している。
【００７９】
新ファイルの１行目、３行目及び５行目の「ＡＢＣＤＥＦ」という行の各々において「ＡＢＣＤＥＦ」という行が削減された数を計算すると、計算が３回重複することになる。重複分を割っておいて、１行目、３行目及び５行目の各々において「ＡＢＣＤＥＦ」という行が削減された数を１／３としておくと、１行目、３行目及び５行目からの寄与を合計することで、削減された行数は１／３＋１／３＋１／３＝１という結果が得られる。
【００８０】
式で表現すると次のようになる。条件（ｃ）及び（ｄ）を満たす各々の行に関して、演算装置６は、流用された行数としてｎ２＝１を割り当てて第２テーブル３２に格納する。演算装置６は更に、削減された行数としてｎ４＝（ｍ２−ｍ１）／ｍ１を割り当て、第２テーブル３２に格納する。
【００８１】
元ファイル２１から削除されて新ファイル２２に存在しなくなった行の数は、ＮＯＬＤ＋Σｎ１＋Σｎ３−Σｎ４−ＮＮＥＷで表される。第３例においては、この数は７＋０＋０−１−５＝１である。この数は、元ファイル２１の４行目の「ＭＮＯＰＱＲ」という行が削除されて新ファイルに存在しないことを示している。
【００８２】
以上に示した計算から、第３例に関して元ファイル２１から新ファイル２２が作成されたとき、開発規模測定器１は、新ファイル２２の開発規模を、次に示すＮ１、Ｎ２、Ｎ３及びＮ４、
新規作成された行の数Ｎ１≡Σｎ１＝０、
流用された行の数Ｎ２≡Σｎ２＝５、
複製された行の数Ｎ３≡Σｎ３＝０、
削減された行の数Ｎ４≡Σｎ４＝１、
削除された行の数ＮＯＬＤ＋Ｎ１＋Ｎ３−Ｎ４−ＮＮＥＷ＝１、
によって表す。
【００８３】
開発規模測定器１が出力する結果においては、削除された行の数ＮＯＬＤ＋Σｎ１＋Σｎ３−Σｎ４−ＮＮＥＷと削減された行の数Σｎ４とを足し合わせた値が削除された行数として出力されることが好ましい。この場合、削除された行数として出力される値はＮＯＬＤ＋Σｎ１＋Σｎ３−ＮＮＥＷとなり、ｎ４を計算する手順は省略することが可能である。このとき、開発規模測定器１は、新ファイルの開発規模を、次に示すＮ１、Ｎ２、Ｎ３及びＮ４、
新規作成された行の数Ｎ１≡Σｎ１＝０、
流用された行の数Ｎ２≡Σｎ２＝５、
複製された行の数Ｎ３≡Σｎ３＝０、
削除された行の数ＮＯＬＤ＋Ｎ１＋Ｎ３−ＮＮＥＷ＝２、
によって表す。
【００８４】
本例のようにして重複分を削除された各行に割り当てると、正確な削除された行数と流用された行数とが簡易なアルゴリズムによって算出される。
【００８５】
図１１は、開発規模測定器１が開発規模を測定した結果を出力装置１４が表示する出力画面４０を示している。
（第４例）
図１２と図１３とは、実施の第１形態における開発規模測定器１の動作を示すフローチャートである。
【００８６】
図１２を参照して、演算装置６は、第２テーブル３２が格納しているｎ１、ｎ２、ｎ３及びｎ４の値を０とする（ステップＳ２）。
【００８７】
演算装置６は、開発規模測定器１が開発規模を測定する対象となる元ファイル２１と新ファイル２２とを記憶装置４から読み込む（ステップＳ４）。
【００８８】
演算装置６は元ファイル２１の行数ＮＯＬＤと新ファイル２２の行数ＮＮＥＷとをカウントして、第１記憶装置８に格納する（ステップＳ６）。
【００８９】
演算装置６は、新ファイル２２の最初の行を現在の行に設定する（ステップＳ８）。
【００９０】
演算装置６は、現在の行と新ファイル２２の各行（現在の行自身を含む）とを照合し、一致した行数をｍ１として第１テーブル３１に格納する（ステップＳ１０）。
【００９１】
演算装置６は、現在の行と元ファイル２１の各行とを照合し、一致した行数をｍ２として第１テーブル３１に格納する（ステップＳ１２）。
【００９２】
図１３を参照して、演算装置６は、ｍ２＝０であるときｎ１＝１を第２テーブル３２に格納する（ステップＳ１４）。これは現在の行が新規作成された行として判定されたことを示す。
【００９３】
演算装置６は、ｍ２−ｍ１＝０であるとき、ｎ２＝１を第２テーブル３２に格納する（ステップＳ１６）。これは現在の行が流用された行として判定されたことを示す。
【００９４】
演算装置６は、ｍ２≠０、かつｍ２−ｍ１＜０であるとき、ｎ２＝ｍ２／ｍ１、ｎ３＝（ｍ１−ｍ２）／ｍ１を第２テーブル３２に格納する（ステップＳ１８）。これは現在の行が複製された行として判定されたことを示す。
【００９５】
演算装置６は、ｍ２−ｍ１＞０であるとき、ｎ２＝１、ｎ４＝（ｍ２−ｍ１）／ｍ１を第２テーブル３２に格納する（ステップＳ２０）。これは現在の行が削減された行として判定されたことを示す。
【００９６】
演算装置６は、現在の行が新ファイル２２の最後の行か否かを判定する（ステップＳ２２）。現在の行が新ファイル２２の最後の行ではないとき（ステップＳ２２ＮＯ）、演算装置６は現在の行を新ファイル２２の１行後ろの行に設定しなおし（ステップＳ２４）、ステップＳ１０に戻る。
【００９７】
現在の行が新ファイル２２の最後の行であると判定されたとき（ステップＳ２２ＹＥＳ）、演算装置６はＮ１＝Σｎ１、Ｎ２＝Σｎ２、Ｎ３＝Σｎ３及びＮ４＝ＮＯＬＤ＋Ｎ１＋Ｎ３−ＮＮＥＷを計算し、第３記憶装置１２に格納する（ステップＳ２６）。
【００９８】
演算装置６は出力装置１４を制御してＮ１を新規作成行数として、Ｎ２を流用行数として、Ｎ３を複製行数として、Ｎ４を削除行数として出力させる（ステップＳ２８）。
【００９９】
プログラム開発規模測定器１は、ｍ１、ｍ２、ＮＯＬＤ及びＮＮＥＷだけを用いて、新規作成された行数Ｎ１と、流用された行数Ｎ２と、複製された行数Ｎ３と、削除された行数Ｎ４とを計算する。ｍ１とｍ２とは、新ファイル２２が含んでいる任意の行に対して、元ファイル２１が含んでいる行数と新ファイル２２が含んでいる行数とを足し合わせた数だけ照合をすることによって計算される。こうした計算方法によれば、計算量が少ない。
【０１００】
更に、このようなプログラム開発規模測定器１によれば、プログラマが開発規模を測定する対象となるプログラムに新規作成しあるいは変更した箇所を記録する作業が省略される。
［実施の第２形態］
【０１０１】
実施の第１形態における開発規模測定器１は、元ファイル２１を変更して作成された新ファイル２２の開発規模を測定するために、新ファイル２２の各々の行を、新ファイル２２の各行および元ファイル２１の各行と比較した。実施の第２形態における開発規模測定器１は、元ファイル２１を変更して作成された新ファイル２２の開発規模を測定するために、元ファイル２１の各々の行を、元ファイル２１の各行および新ファイル２２の各行と比較する。
【０１０２】
実施の第２形態における開発規模測定器１の構成は、第１テーブル３１と第２テーブル３２の構成を除いて、実施の第１形態と同一である。
【０１０３】
図２を参照して、実施の第２形態における第１テーブル３１は、実施の第１形態と図面は同一になるが、行ＩＤ３４、ｍ１およびｍ２が示す対象が実施の第１形態とは異なる。
【０１０４】
第１テーブル３１は、元ファイルの各々の行を特定する行ＩＤ３４と、演算装置６が元ファイル２１の各々の行について当該行と元ファイル２１の各行（当該行自身を含む）とを照合して一致していると判定した行の行数であるｍ１と、演算装置６が元ファイル２１の各々の行について当該行と新ファイルの各行とを照合して一致していると判定した行の行数であるｍ２とを対応づけて格納している。
【０１０５】
図３を参照して、実施の第２形態における第２テーブル３２は、実施の第１形態と図面は同一になるが、行ＩＤ３４、ｎ１、ｎ２、ｎ３及びｎ４が示す対象が実施の第１形態とは異なる。
【０１０６】
第２テーブル３２は、元ファイル２１に含まれる各々の行を特定する行ＩＤ３４と、後述する手順によって元ファイル２１に含まれる各々の行に対して算出されるｎ１、ｎ２、ｎ３、ｎ４とを対応づけて格納している。第２テーブル３２は更に、ｎ１、ｎ２、ｎ３、ｎ４の各々に関して、元ファイル２１に含まれる全ての行について足し合わせた値であるΣｎ１、Σｎ２、Σｎ３、Σｎ４を格納している。
【０１０７】
図１４と図１５とは、実施の第２形態における開発規模測定器１の動作を示すフローチャートである。
【０１０８】
図１４を参照して、演算装置６は、第２テーブル３２が格納しているｎ１、ｎ２、ｎ３及びｎ４の値を０とする（ステップＳ１０２）。
【０１０９】
演算装置６は、開発規模測定器１が開発規模を測定する対象となる元ファイル２１と新ファイル２２とを記憶装置４から読み込む（ステップＳ１０４）。
【０１１０】
演算装置６は元ファイル２１の行数ＮＯＬＤと新ファイル２２の行数ＮＮＥＷとをカウントして、第１記憶装置８に格納する（ステップＳ１０６）。
【０１１１】
演算装置６は、元ファイル２２の最初の行を現在の行に設定する（ステップＳ１０８）。
【０１１２】
演算装置６は、現在の行と元ファイル２１の各行（現在の行自身を含む）とを照合し、一致した行数をｍ１として第１テーブル３１に格納する（ステップＳ１１０）。
【０１１３】
演算装置６は、現在の行と新ファイル２２の各行とを照合し、一致した行数をｍ２として第１テーブル３１に格納する（ステップＳ１１２）。
【０１１４】
図１５を参照して、演算装置６は、ｍ２＝０であるときｎ４＝１を第２テーブル３２に格納する（ステップＳ１１４）。これは現在の行が削除された行として判定されたことを示す。
【０１１５】
演算装置６は、ｍ２−ｍ１＝０であるとき、ｎ２＝１を第２テーブル３２に格納する（ステップＳ１１６）。これは現在の行が流用された行として判定されたことを示す。
【０１１６】
演算装置６は、ｍ２≠０、かつｍ２−ｍ１＜０であるとき、ｎ２＝ｍ２／ｍ１、ｎ４＝（ｍ１−ｍ２）／ｍ１を第２テーブル３２に格納する（ステップＳ１１８）。これは現在の行が削減された行として判定されたことを示す。
【０１１７】
演算装置６は、ｍ２−ｍ１＞０であるとき、ｎ２＝１、ｎ３＝（ｍ２−ｍ１）／ｍ１を第２テーブル３２に格納する（ステップＳ１２０）。これは現在の行が複製された行として判定されたことを示す。
【０１１８】
演算装置６は、現在の行が元ファイル２１の最後の行か否かを判定する（ステップＳ１２２）。現在の行が元ファイル２１の最後の行ではないとき（ステップＳ１２２ＮＯ）、演算装置６は現在の行を元ファイル２１の１行後ろの行に設定しなおし（ステップＳ１２４）、ステップＳ１１０に戻る。
【０１１９】
現在の行が元ファイル２１の最後の行であると判定されたとき（ステップＳ１２２ＹＥＳ）、演算装置６はＮ１＝ＮＮＥＷ−（ＮＯＬＤ＋Ｎ３−Ｎ４）、Ｎ２＝Σｎ２、Ｎ３＝Σｎ３及びＮ４＝Σｎ４を計算し、第３記憶装置１２に格納する（ステップＳ１２６）。
【０１２０】
演算装置６は出力装置１４を制御してＮ１を新規作成行数として、Ｎ２を流用行数として、Ｎ３を複製行数として、Ｎ４を削除行数として出力させる（ステップＳ１２８）。
【０１２１】
こうした開発規模測定器１は、特に元ファイル２１が含む行数が少ないときに少ない計算量で開発規模を測定する。こうした開発規模測定器は、行数が少ない原型ファイルを下敷きにして大幅に拡大したプログラムが開発されたとき、プログラムの開発規模を少ない計算量で測定する。
【０１２２】
【発明の効果】
本発明によれば、任意の形式で記述されたコンピュータプログラムの開発規模を測定する開発規模測定器及び開発規模測定プログラムが提供される。
【０１２３】
更に本発明によれば、コンピュータプログラムの開発規模を測定するためにプログラマに課せられる所定の作業を省く開発規模測定器及び開発規模測定プログラムが提供される。
【０１２４】
更に本発明によれば、元プログラムに変更を加えて作成された新プログラムの開発規模を、新規作成された行数、流用された行数、複製された行数、削除された行数に分けて算出する開発規模測定器及び開発規模測定プログラムが提供される。
【０１２５】
更に本発明によれば、アルゴリズムが簡易な開発規模測定器及び開発規模測定プログラムが提供される。
【０１２６】
更に本発明によれば、計算する量が少ない開発規模測定器及び開発規模測定プログラムが提供される。
【図面の簡単な説明】
【図１】図１は、開発規模測定器の構成を示す。
【図２】図２は、第１テーブルを示す。
【図３】図３は、第２テーブルを示す。
【図４】図４は、フォーマットを示す。
【図５】図５は、元ファイルと新ファイルの一例である。
【図６】図６は、開発規模を測定する方法を説明する図である。
【図７】図７は、元ファイルと新ファイルの一例である。
【図８】図８は、開発規模を測定する方法を説明する図である。
【図９】図９は、元ファイルと新ファイルの一例である。
【図１０】図１０は、開発規模を測定する方法を説明する図である。
【図１１】図１１は、出力画面である。
【図１２】図１２は、開発規模測定器の動作を示すフローチャートである。
【図１３】図１３は、開発規模測定器の動作を示すフローチャートである。
【図１４】図１４は、開発規模測定器の動作を示すフローチャートである。
【図１５】図１５は、開発規模測定器の動作を示すフローチャートである。
【符号の説明】
１…開発規模測定器
４…記憶装置
５…入力装置
６…演算装置
８…第１記憶装置
１０…第２記憶装置
１１…フォーマット記憶装置
１２…第３記憶装置
１４…出力装置
２１…元ファイル
２２…新ファイル
３１…第１テーブル
３２…第２テーブル
３３…補助テーブル
３４…行ＩＤ
５０…フォーマット
５１…行
５２…行番号
５３…本文
【図１】
2004220411.tif 000003
【図２】
2004220411.tif 000004
【図３】
2004220411.tif 000005
【図４】
2004220411.tif 000006
【図５】
2004220411.tif 000007
【図６】
2004220411.tif 000008
【図７】
2004220411.tif 000009
【図８】
2004220411.tif 000010
【図９】
2004220411.tif 000011
【図１０】
2004220411.tif 000012
【図１１】
2004220411.tif 000013
【図１２】
2004220411.tif 000014
【図１３】
2004220411.tif 000015
【図１４】
2004220411.tif 000016
【図１５】
2004220411.tif 000017