(57)【要約】【課題】プログラムが他のプログラムをどの程度利用して制作されたかを計数することで、プログラム制作の生産性を客観的且つ性格に評価することを可能とする。【解決手段】複数のセンテンス行を含むプログラムについて、既存の他のプログラムを再利用して作成した部分を計数するために、計数対象のプログラムＡＡＡと他のプログラムＸＸＸ、ＹＹＹ、ＺＺＺとをプログラム記憶手段１に保持し、読出手段２により読み出して、判定手段３により、計数対象プログラムの各センテンス行と他のプログラムの各センテンス行とを比較してセンテンス記述の一致を判定し、一致を判定された計数対象プログラムのセンテンス行からなる再利用部分をカウンタ手段５により計数する。なお、この際に、設定テーブル４に設定された基準行数以上一致が判定された場合に、再利用部分として計数するようにしてもよい。【選択図】  図１
2004348400.tif 000002
【特許請求の範囲】
【請求項１】
複数のセンテンス行を含むプログラムについて、既存の他のプログラムを再利用して作成した部分を計数する方式であって、
計数対象のプログラムと他のプログラムとを記憶手段に保持して、
判定手段により、計数対象プログラムの各センテンス行と他のプログラムの各センテンス行とを比較してセンテンス記述の一致を判定し、
一致を判定された計数対象プログラムのセンテンス行からなる再利用部分をカウンタ手段により計数することを特徴とする再利用プログラム計数方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のコンピュータプログラム間での内容の一致量を計数する技術に関し、例えば、コンピュータプログラムを他の既存のコンピュータプログラムを再利用して新規制作する場合に、再利用規模と新規開発規模を測定して生産性を客観的且つ正確に測るために利用することができる技術に関する。
【０００２】
【従来の技術】
コンピュータプログラムの開発は、一般的に、プログラム開発者がソースプログラムのセンテンス行を記述していくことにより行われるが、このコンピュータプログラムの開発は種々な方法でなされ、ソースプログラムの全てのセンテンス行を新規に内容記述（コーディング）する方法の他に、既存のプログラムの一部分を再利用して新規なプログラムを制作する方法も実施されている。
【０００３】
このような既存ソースプログラムを再利用して制作された新規プログラムを、図２を例にとって説明する。
同図のソースプログラムＡＡＡは新規に制作されたプログラムであり、他の３つのソースプログラムＸＸＸ、ＹＹＹ、ＺＺＺはソースプログラムＡＡＡの制作に再利用されたプログラムである。これらソースプログラムＡＡＡ、ＸＸＸ、ＹＹＹ、ＺＺＺはそれぞれコンピュータに処理を実行させるための内容記述がなされた複数のセンテンス行数を含んでいる。
【０００４】
図２に示す例では、新規プログラムＡＡＡはそれぞれ１又は複数のセンテンス行からなる部分Ａ１〜Ａ１＋ｘ１、Ａ２〜Ａ２＋ｘ２、Ａ３〜Ａ３＋ｙ１、Ａ４〜Ａ４＋ｚ１を他の既存プログラムＸＸＸ、ＹＹＹ、ＺＺＺ再利用することにより制作されている。
【０００５】
すなわち、再利用部分Ａ１〜Ａ１＋ｘ１は既存プログラムＸＸＸの部分Ｘ１〜Ｘ１＋ｘ１をコピーすることにより制作され、再利用部分Ａ２〜Ａ２＋ｘ２は既存プログラムＸＸＸの部分Ｘ２〜Ｘ２＋ｘ２をコピーすることにより制作され、再利用部分Ａ３〜Ａ３＋ｙ１は既存プログラムＹＹＹの部分Ｙ１〜Ｙ１＋ｙ１をコピーすることにより制作され、再利用部分Ａ４〜Ａ４＋ｚ１は既存プログラムＺＺＺの部分Ｚ１〜Ｚ１＋ｚ１をコピーすることにより制作されており、新規プログラムＡＡＡはこれら再利用部分Ａ１〜Ａ１＋ｘ１、Ａ２〜Ａ２＋ｘ２、Ａ３〜Ａ３＋ｙ１、Ａ４〜Ａ４＋ｚ１を除いた他の部分が新規にコーディングして制作されている。
【０００６】
【発明が解決しようとする課題】
プログラム開発において、上記のように既存プログラムを再利用して新規プログラムを制作する方法は、極めて効率的で時間コストを抑えて新規プログラムを完成させることができる。
一方、プログラム開発の企業活動としてみると、生産管理や制作されたプログラムの評価などの観点から、完成されたプログラムが既存プログラムをどの程度再利用したものかを評価する必要がある。
しかしながら、従来においては、完成したプログラムに対して他のプログラムをどの程度再利用したかを開発者がコメントしない限り、再利用の程度を評価することは極めて困難であった。
【０００７】
本発明は上記従来の事情に鑑みなされたもので、他のプログラムの再利用規模を客観的且つ正確に計測することを目的としている。
なお、本発明の更なる目的は、以下に説明するところにより明らかである。
【０００８】
【課題を解決するための手段】
本発明は、複数のセンテンス行を含むプログラムについて、既存の他のプログラムを再利用して作成した部分を計数する方式であって、計数対象のプログラムと他のプログラムとを記憶手段に保持して、判定手段により、計数対象プログラムの各センテンス行と他のプログラムの各センテンス行とを比較してセンテンス記述の一致を判定し、一致を判定された計数対象プログラムのセンテンス行からなる再利用部分をカウンタ手段により計数することを特徴とする。
【０００９】
したがって、新規制作されたプログラムがどの程度他の既存プログラムを再利用しているかを情報処理して計数することができる。
なお、本発明は、プログラム制作の生産性評価などに利用することができるが、その他に、例えば、プログラムの違法盗用の摘発などにおいて、プログラム間の同一性や類似性の判定にも利用することができ、その利用用途は特に限定されるものではない。
【００１０】
ここで、再利用部分は最小単位の１センテンス行としてもよいが、一般的にプログラムは多数のセンテンス行で構成されているので、新規にコーディングした或るセンテンス行が他の既存プログラム中のセンテンス行と内容記述が同じであることも考えられることから、プログラム中の連続した或る数のセンテンス行が新規プログラムと他の既存プログラムとで内容が一致する場合に、当該連続したセンテンス行部分の再利用がなされたとして計数するようにするのが好ましい。このために、判定部による判定処理の基準となる連続行数を設定する設定テーブルなどの設定手段を備えるのが好ましく、更には、必要に応じて設定する連続行数を任意に変更できるようにするのが好ましい。
【００１１】
また、上記のようにして再利用部分と判定されない新規プログラム中の部分は新規にコーディングされた新規制作部分と判定することができるので、カウンタ手段は再利用部分と共に又は再利用部分に代えて新規制作部分を計数するようにしてもよい。
更には、再利用部分又は新規作成部分について、これら部分のセンテンス行の行番号に計数値を挿入したり、或いは、これら部分のセンテンス行番号を別途記録したりして、プログラム中のどのセンテンス行が再利用或いは新規制作されたかを判別できるようにしてもよい。
【００１２】
本発明は、再利用プログラム計数方式によって実施される方法や、本発明の方式を構成する機能をコンピュータに実現するためのプログラムとしても表現することができる。
なお、以下の説明では、１つ又は連続する複数のセンテンス行からなる再利用部分あるいは新規作成部分をステップとも称する。
【００１３】
【発明の実施の形態】
本発明を実施例に基づいて具体的に説明する。
図１には本発明の再利用プログラム計数方式に係る装置の主要な機能構成を示してあり、本例では、当該装置はコンピュータに本発明に係る計数処理プログラムを実行させることにより構成されている。なお、再利用プログラム計数方式に係る装置は各機能部を専用回路として構成するようにしてもよい。
【００１４】
図２に示したように、本例に係る新規に作成されたソースプログラムＡＡＡは、その１又は連続する複数のセンテンス行からなる部分（ステップ）を既存の他のソースプログラムＸＸＸ、ＹＹＹ、ＺＺＺの部分をコピーすることにより再利用して制作されたものであり、以下の説明では同図の適宜参照する。
なお、再利用する単位のステップは、一般的に、コンピュータに或る単位処理を実行させるセンテンス行のまとまりに該当する。
【００１５】
本例に係る再利用プログラム計数装置は、図１に示すように、計数対象のソースプログラムＡＡＡと他のソースプログラムプログラムＸＸＸ、ＹＹＹ、ＺＺＺとを読出し自在に保持するプログラム記憶手段１、プログラム記憶手段１からこれらプログラムＡＡＡ、ＸＸＸ、ＹＹＹ、ＺＺＺを適宜読み出す読出手段２、読み出された計数対象プログラムＡＡＡの各センテンス行と他のプログラムＸＸＸ、ＹＹＹ、ＺＺＺの各センテンス行とを順次比較してセンテンス記述内容の一致を判定する判定手段３、判定手段３が前記判定処理に参照する設定情報を保持する設定テーブル４、記述内容が一致（又は不一致）と判定された１又は連続する複数のセンテンス行からなるステップの数を計数するカウンタ手段５、計数結果を画面表示等により出力する出力手段６を有している。
【００１６】
ここで、プログラム記憶手段１はハードディスク装置やＲＡＭなどの読み出し自在なメモリが用いられる、ソースプログラムＡＡＡ、ＸＸＸ、ＹＹＹ、ＺＺＺはそれぞれ別個のメモリに保持するようにしてもよい。
【００１７】
また、設定テーブル４は読出し書き込み自在なメモリが用いられ、図３（ａ）〜（ｃ）に示すような設定情報が計数処理に先だって予め設定される。
同図（ａ）に示す計数ソーステーブルには、計数ソース名として計数対象のソースプログラムの名称（ＡＡＡ）と、ソース行数としてソースプログラムＡＡＡを構成しているセンテンス行の総数（Ｎａ）が設定される。
【００１８】
同図（ｂ）に示す再利用ソース登録テーブルには、計数ソース名として再利用された各ソースプログラムの名称（ＸＸＸ、ＹＹＹ、ＺＺＺ）と、ソース行数としてこれら各ソースプログラムＸＸＸ、ＹＹＹ、ＺＺＺをそれぞれ構成しているセンテンス行の総数（Ｎｘ、Ｎｙ、Ｎｚ）が設定される。なお、本例では、当該再利用ソース登録テーブルの最終行には値“０”が設定され、再利用ソース登録テーブルに設定されているソースプログラムがもう無いことを示している。
【００１９】
また、同図（ｃ）に示す連続数基準値テーブルには、計数対象ソースプログラムＡＡＡと他のソースプログラムＸＸＸ、ＹＹＹ、ＺＺＺとの間で幾行のセンテンス行が一致した場合に１ステップのカウントアップを行うかが設定される。本例では、１０行以上のセンテンス行が一致した場合にカウントアップするようにしているため、連続数基準値テーブルには当該行数を設定する値“１０”が設定されている。
【００２０】
なお、上記のように、計数対象プログラムＡＡＡの新規に記述された或る１又は複数のセンテンス行が他のプログラムＸＸＸ、ＹＹＹ、ＺＺＺとたまたま同じ記述内容で一致してしまった場合にも再利用としてカウントアップしてしまわないように、連続数基準値テーブルに値“１０”を設定して、連続する１０のセンテンス行の一致がある場合にカウントアップするようにしているが、この連続行数の設定は任意であり、場合によっては１つのセンテンス行の一致でもカウントアップするように値“１”を設定するようにしてもよい。
【００２１】
また、カウンタ手段５は図３（ｄ）に示すような計数処理用のカウンタエリアを有しており、後述するように、計数処理に際して所定の数値が書き込まれる。
すなわち、計数ソース行カウント用エリア５１には、計数処理対象としているソースプログラムＡＡＡのセンテンス行数が先頭から順次更新して１つずつ書き込まれる。再利用ソース登録テーブル行カウント用エリア５２には、計数処理対象としている図３（ｂ）のテーブル中の行位置数（すなわち、ソースプログラムＸＸＸ、ＹＹＹ、ＺＺＺの内のどれか）が順次更新して１つずつ書き込まれる。
【００２２】
また、再利用ソース行カウント用エリア５３には、計数処理対象としているいずれかの再利用ソースプログラムＸＸＸ、ＹＹＹ、ＺＺＺのセンテンス行数がその先頭から順次更新して１つずつ書き込まれる。連続行数カウント用エリア５４には、上記のように一致したセンテンス行の連続数が順次更新して書き込まれる。
そして、再利用ステップ数カウント用エリア５６には、一致するセンテンス行からなるステップ数が書き込まれる。
【００２３】
なお、本例では、一致しないセンテンス行（すなわち、新規に制作されたセンテンス行）からなるステップ数も計数するようにしており、新規ステップカウント用エリア５５には不一致のセンテンス行からなるステップ数が書き込まれる。
ここで、後述するように本例では不一致（すなわち、新規）なプログラム部分については１センテンス行で１ステップとしてカウントアップするが、一致の場合と同様に、不一致についての連続行数を設定しておき、当該設定数以上のセンテンス行が不一致である場合に当該ステップを新規ステップとしてカウントアップするようにしてもよい。
更に、本例では、一致のステップ数と不一致のステップ数の両方を計数するが、いずれか一方のステップ数を計数するようにしてもよい。
【００２４】
本例の装置による計数処理は図４及び図５に示す手順によってなされる。なお、図４はメインルーチンであり、図５は再利用行数カウントサブルーチンである。
プログラム記憶手段１に計数対象の計数ソースＡＡＡ及び再利用元となる再利用ソースＸＸＸ、ＹＹＹ、ＺＺＺが保持され、更に、設定テーブル４に図３に示すような情報が設定された状態で、図４に示すメインルーチンが開始される。
【００２５】
まず、図３（ｄ）に示す各種カウンタ類をそれぞれ初期設定して計数値を“０”にして（ステップＳ１）、ステップＳ２以降の計数処理ルーチンを実行する。
計数ソース行カウント用エリア５１の値が計数ソーステーブル（図３（ａ））のソース行数（本例ではＮａ）まで達したかを判定手段３が比較判定し（ステップＳ２）、計数ソースＡＡＡの最後のセンテンス行まで比較処理（すなわち計数処理）が終了したか否かを判定する。
この結果、終了の場合は、新規ステップカウント用エリア５５に保持されている新規制作されたステップ数と、再利用ステップカウント用エリア５６に保持されている再利用されたステップ数とを出力手段６により出力して終了する（ステップＳ３）。
【００２６】
本例の計数処理は、読出手段２が計数ソースＡＡＡをその先頭のセンテンス行から１行ずつ読み出して最終行Ｎａに達するまで繰り返し行っており、上記の判断結果（ステップＳ２）で未了の場合は、計数ソースＡＡＡの次のセンテンス行を比較計数処理するために、読出手段２がプログラム記憶手段１から計数ソースＡＡＡの次のセンテンス行を読み出す（ステップＳ４）。
【００２７】
次いで、再利用ソース登録テーブル（図３（ｂ））と再利用ソース登録テーブル行カウントエリア５２と参照し、読出手段２が再利用元ソースＸＸＸ、ＹＹＹ、ＺＺＺの内の再利用ソース登録テーブル行カウントエリア５２に示されている該当するソースをプログラム記憶手段１から読出し（ステップＳ５）、判定手段３が、再利用ソース登録テーブルを再利用ソース登録テーブル行カウントエリア５２で参照して、再利用元となるソースＸＸＸ、ＹＹＹ、ＺＺＺの全てについて比較計数処理が終了したかを判定する（ステップＳ６）。
【００２８】
本例では、計数ソースＡＡＡの１つのセンテンス行に対して、全ての再利用元ソースＸＸＸ、ＹＹＹ、ＺＺＺと比較処理を終了した後に、計数ソースＡＡＡの次のセンテンス行と全ての再利用元ソースＸＸＸ、ＹＹＹ、ＺＺＺとの比較処理を繰り返し行うようにしている。したがって、再利用ソース登録テーブル（図３（ｂ））の最終行（すなわち、ソース行が“０”）である場合には、上記の判定（ステップＳ６）で計数ソースＡＡＡの或る１つのセンテンス行に対して全ての再利用元ソースＸＸＸ、ＹＹＹ、ＺＺＺとの比較処理が終了したと判定され、カウンタ手段５が計数ソース行カウント用エリア５１を１つカウントアップしてステップＳ２の処理に戻り（ステップＳ７）、計数ソースＡＡＡの次のセンテンス行の比較処理を行う。
【００２９】
上記の判定（ステップＳ６）で未了である場合には再利用ソースの比較に入るが、その前に、判定手段３が、再利用ソース行カウント用エリア５３と上記読み出した現在比較中の再利用ソースの行数を比較しする（ステップＳ８）。この結果、現在比較中の再利用ソースの行数がその最終行数（本例では、Ｎｘ、Ｎｙ、Ｎｚ）をオーバしているときには、当該再利用ソース（ＸＸＸ、ＹＹＹ、ＺＺＺ）は終了しているので、再利用ソース登録テーブル行カウント用エリア５２を１つカウントアップしてステップＳ５の処理に戻り（ステップＳ９）、再利用ソース登録テーブルに従って次の再利用ソースの比較処理に入る。
【００３０】
上記の判定（ステップＳ８）の結果が未了である場合には、判定手段３が、現在比較中の再利用ソースの次のセンテンス行を比較処理の対象として取り出し（ステップＳ１０）、当該取り出した再利用ソースのセンテンス行と、ステップＳ４で取り出した計数ソースＡＡＡのセンテンス行との記述内容が一致しているかを判定する（ステップＳ１１）。
【００３１】
この判定の結果、両センテンス行の内容が不一致であれば、当該計数ソースＡＡＡのセンテンス行は新規制作されたものであるので、カウンタ手段５が、新規ステップ数としてカウントして新規ステップカウント用エリア５５を更新し、当該再利用ソースの次の行を比較するために再利用ソース行カウント用エリア５３を１つカウントアップしてステップＳ５の処理に戻る（ステップＳ１３）。
なお、上記の不一致なセンテンス行の行番号にカウント値を挿入したり、或いは、別途メモリに不一致なセンテンス行の行番号とカウント値とを対応付けて記録しておくようにしてもよく、このようにすれば、後に当該情報に基づいて、計数ソースＡＡＡのどのセンテンス行が新規制作されたかを容易に判定することができる。
【００３２】
一方、上記の判断（ステップＳ１１）の結果、再利用ソースのセンテンス行と計数ソースＡＡＡのセンテンス行との記述内容が一致している場合には、計数ソースＡＡＡと再利用ソースとの間で連続する幾つの行が一致しているかを判定するために、カウンタ手段５が計数ソース行カウント用エリア５１及び再利用ソース行カウント用エリア５３の両方の値を１つカウントアップする（ステップＳ１４）。
【００３３】
次いで、両カウント用エリア５１及び５３がそれぞれに対応するソースの最終行値に達しているか否かを判定するために、まず、計数ソース行カウント用エリア５１の値が計数ソースＡＡＡの最終行数の値Ｎａをオーバしているかを判定し（ステップＳ１５）、オーバしている場合には計数ソースＡＡＡが最終行値Ｎａに達しているので、後述するサブルーチン（図５）の処理を行って（ステップＳ１６）、計数処理の最終結果の出力処理（ステップＳ３）を行なう。
【００３４】
一方、上記の判断（ステップＳ１５）の結果、計数ソースＡＡＡの最終行値に達していない場合には、再利用ソース行カウント用エリア５３の値が対応する再利用ソースの最終行数の値（Ｎｘ、Ｎｙ、Ｎｚ）をオーバしているかを判定し（ステップＳ１７）、オーバしている場合には後述するサブルーチン（図５）の処理を行って（ステップＳ１８）、計数ソースＡＡＡの次の行又は次の再利用ソースについての処理を行うために、ステップＳ９の処理に戻る。
【００３５】
上記のように再利用ソースのセンテンス行と計数ソースＡＡＡのセンテンス行との記述内容の一致が判明すると、計数ソースＡＡＡ又は再利用ソースのいずれかが最終行に達するまで、両センテンス行の内容の一致があるかを判定手段３が両センテンス行を順次更新しながら判断し（ステップＳ１９）、両センテンス行の内容一致が判定された数をカウンタ手段５が連続行数カウント用エリア５４にカウントアップして行く処理（ステップＳ２０）を繰り返し行う。
すなわち、計数ソースＡＡＡと再利用ソースとの間で、連続する幾つのセンテンス行が一致しているかが連続行数カウント用エリア５４に更新記録される。
【００３６】
上記の判定（ステップＳ１９）で不一致となった場合には、カウンタ手段５が当該不一致になった行の新規制作ステップとしての新規ステップカウント用エリア５５へのカウントアップを行う（ステップＳ２１）。なお、上記のように行番号の挿入等を行ってもよい。
【００３７】
次いで、このように不一致となったときには、それまでの繰り返し処理によって一致が判定されたセンテンス行の再利用ステップ数を計数するために後述するサブルーチン（図５）の処理を行って（ステップＳ２２）、テーブルの再利用ソースの最初からサーチするために、カウンタ手段５が、再利用ソース登録テーブル行カウント用エリア５２及び再利用ソース行カウント用エリア５３の値を初期値にリセットして（ステップＳ２３）、ステップＳ５の処理に戻って処理を続行する。
【００３８】
上記のサブルーチン（ステップＳ１６、Ｓ１８、Ｓ２２）は、連続数基準値テーブル（図３（ｃ））に設定されている連続数基準値（本例では、１０）に基づいて再利用された連続するセンテンス行を再利用ステップとしてカウントアップする機能を有しており、図５に示す手順で行われる。
【００３９】
まず、判定手段３が、ステップＳ２０で更新される連続行数カウント用エリア５４の値を取り出し（ステップＳ３１）、当該カウンタ値が設定された連続数基準値をオーバしているか否かを判定する（ステップＳ３２）。
この結果、オーバしている場合には、一致を判定された連続するセンテンス行を１つの再利用ステップとしてカウンタ手段５が再利用ステップカウント用エリア５６の値を１つカウントアップして更新し、連続行数カウント用エリア５４の値をクリアしてメインルーチンに戻る（ステップＳ３３）。一方、オーバしていない場合には、再利用ステップとして計数することなく連続行数カウント用エリア５４の値をクリアしてメインルーチンに戻る。
【００４０】
上記のようにして計数ソースプログラムＡＡＡと他の再利用ソースプログラムＸＸＸ、ＹＹＹ、ＺＺＺとの間で、設定条件に従った１０行以上連続して内容が一致するセンテンス行からなるステップの数を計数することができ、当該計数結果を出力することにより、プログラムＡＡＡの制作において他の既存プログラムＸＸＸ、ＹＹＹ、ＺＺＺをどの程度再利用したかを管理者等に知らしめることができる。
【００４１】
【発明の効果】
以上説明したように、本発明によると、プログラムが他のプログラムをどの程度利用して制作されたかを計数することができ、プログラム制作の生産性を客観的且つ性格に評価することが可能となる等の実用的な効果を得ることができる。
【図面の簡単な説明】
【図１】本発明の一実施例に係る計数装置の主要な機能構成を示す図である。
【図２】計数対象プログラムと他のプログラムとの再利用の形態を説明する図である。
【図３】本発明の一実施例に係る設定テーブル及びカウンタ値を説明する図である。
【図４】本発明の一実施例に係る計数処理のメインルーチンを示す図である。
【図５】本発明の一実施例に係る計数処理のサブルーチンを示す図である。
【符号の説明】
１：プログラム記憶手段、
３：判定手段、
４：設定テーブル、
５：カウンタ手段、
ＡＡＡ：計数対象プログラム、
ＸＸＸ、ＹＹＹ、ＺＺＺ：再利用プログラム、
＋
【図１】
2004348400.tif 000003
【図２】
2004348400.tif 000004
【図３】
2004348400.tif 000005
【図４】
2004348400.tif 000006
【図５】
2004348400.tif 000007