(57)【要約】【課題】並行して開発しているソフトウェアの中の、新規に作成されたプログラムソースコードの行数を正確に集計できるソフトウェア差分測定装置を提案する。【解決手段】プログラムソースコードとコンパイル設定情報との組であるソフトウェア構成を入力にとり、上記ソフトウェア構成に含まれるプログラムソースコードのうち、コンパイル作業で無視される部分を削除したコード（実効コード）を出力する実効コード抽出部と、測定の対象となる実効コードと比較対象となる実効コードとを入力とし、測定の対象となる実効コードに含まれるコードのうち、比較対象となる実効コードのある一部と一致する部分を削除したコード生成することにより、測定対象で固有な実効コード部分を抽出する測定対象構成固有コード抽出部と、２つのコードを入力とし、その２つのコードを比較することにより、その２つのコードの差分を出力する比較部を設ける。【選択図】図２
2008123343.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア構成より実効コードを抽出する実効コード抽出手段と、
第１のソフトウェア構成より抽出された第１の実効コードと、第２のソフトウェア構成より抽出された第２の実効コードとから、前記第１のソフトウェア構成に固有の実効コードを抽出する固有コード抽出手段とを備え、
前記固有コード抽出手段において、前記第１のソフトウェア構成より抽出された前記第１の実効コードおよび前記第２のソフトウェア構成より抽出された前記第２の実効コードから前記第１のソフトウェア構成に固有の実効コードである第１の固有コードと、第３のソフトウェア構成より抽出された第３の実効コードおよび第４のソフトウェア構成より抽出された第４の実効コードから第２の固有コードとを抽出し、
前記第１の固有コードと前記第２の固有コードとの差分を出力する比較手段をさらに備える、ソフトウェア差分測定装置。
【請求項２】
前記固有コード抽出手段は、前記第１の実効コードに含まれるコードのうち、前記第２の実効コードのある一部と一致する部分を削除したコード生成することにより、前記第１の固有コードを抽出する、請求項１に記載のソフトウェア差分測定装置。
【請求項３】
前記ソフトウェア構成はプログラムソースコードとコンパイル設定情報とを対にして含み、
前記実効コード抽出手段は、
前記ソフトウェア構成より前記プログラムソースコードを取得するコード入力手段と、
前記ソフトウェア構成より前記コンパイル設定情報を取得するコンパイル設定情報入力手段と、
前記コンパイル設定情報を解析してマクロ定義を抽出するコンパイル設定情報解析手段と、
前記マクロを記憶するマクロ記憶手段と、
前記プログラムソースコードを解析して実効コードであるか否かを判定するコード解析手段と、
前記コード解析手段において抽出された前処理指令について、前処理条件を判定する前処理条件判定手段とを含む、請求項１に記載のソフトウェア差分測定装置。
【請求項４】
前記前処理条件判定手段は、前記コード解析手段において抽出された前処理指令に前記マクロが含まれているときに、前記前処理条件が成立したものと判定する、請求項３に記載のソフトウェア差分測定装置。
【請求項５】
前記第１のソフトウェア構成は測定対象の環境における第１ソフトウェアの構成であり、
前記第２のソフトウェア構成は比較対象の環境における第２ソフトウェアの構成であり、
前記第３のソフトウェア構成は前記測定対象の環境における第３ソフトウェアの構成であり、
前記第４のソフトウェア構成は前記比較対象の環境における第４ソフトウェアの構成であり、
前記ソフトウェア構成はプログラムソースコードを含み、
前記比較手段で出力する前記差分は、前記第１ソフトウェアのプログラムソースコードと、前記第３ソフトウェアのプログラムソースコードとの、前記測定対象の環境に固有の差分である、請求項１に記載のソフトウェア差分測定装置。
【請求項６】
測定対象の環境における第１ソフトウェアのプログラムソースコードおよび第３ソフトウェアのプログラムソースコードの、前記測定対象の環境に固有の差分を測定する処理をコンピュータに実行させるプログラムであって、
前記第１ソフトウェアの構成である第１ソフトウェア構成より第１実効コード、前記第３ソフトウェアの構成である第３ソフトウェア構成より第３実効コード、比較対象の環境における第２ソフトウェアの構成である第２ソフトウェア構成より第１実効コード、および前記比較対象の環境における第４ソフトウェアの構成である第４ソフトウェア構成より第１実効コードを抽出する実効コード抽出ステップと、
前記第１実効コードと前記第２実効コードとから前記第１ソフトウェア構成に固有の実効コードである第１固有コードを抽出し、前記第３実効コードと前記第４実効コードから前記第３ソフトウェア構成に固有の実効コードである第２固有コードを抽出する固有コード抽出ステップ手段と、
前記第１固有コードと前記第２固有コードとの差分を出力する比較ステップとを実行させる、ソフトウェア差分測定プログラム。
【請求項７】
請求項６に記載のソフトウェア差分測定プログラムを記録した、コンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はソフトウェア差分測定装置、ソフトウェア差分測定プログラム、およびソフトウェア差分測定プログラムを記録した記録媒体に関し、特に、ソフトウェアの開発規模を測定するソフトウェア差分測定装置、ソフトウェア差分測定プログラム、およびソフトウェア差分測定プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
ソフトウェア開発において、ソフトウェアの生産性を算出する方法として、新規開発したプログラムソースードの規模を開発に要した時間で割る方法が一般的に用いられる。また、開発規模の指標としてプログラムソースコード行数を用いる場合も数多い。
【０００３】
ところが、近年のソフトウェア開発においては、その規模の増大により、そのすべてのプログラムソースコードを新規作成することは困難な状況となっている。そのため、既存のプログラムソースコードを基に追加・変更を行なうという開発方法を選択することが多くなっている。したがって、あるソフトウェアの開発規模の指標としてそのプログラムソースコード全体の行数を用いると、正しく開発規模が示されない場合が多い。
【０００４】
このような開発方法を用いた場合、新規作成したプログラムソースコードの行数を測定するためには、基になった既存のプログラムソースコードと、追加・変更後のプログラムソースコードとの差分を取得し、その差分の行数を集計する方法が用いられている。
【０００５】
たとえば、２つのプログラムソースコードの差分を取得する方法として、特開平５−１５８７６５号公報（以下、特許文献１）には、Ｃ言語プログラム差分情報取得方式が提案されている。
【０００６】
このＣ言語プログラム差分情報取得方式は、註釈、インデントなど、プログラムの処理内容に直接影響しない部分の差分を含まない差分情報を取得することが可能であり、生産性算出を目的とした新規作成プログラムソースコード行数の測定に適している。
【０００７】
ところで、近年ではソフトウェアの商品化サイクルの短縮に伴い、複数の類似したソフトウェアを同時期に変更・開発することが多くなってきている。
【０００８】
この場合、既存のプログラムソースコードを基に追加・変更を行なう上述の開発方法に加え、複数の類似ソフトウェアを個別に開発するのではなく、先行開発しているソフトウェアのプログラムソースコードに対し、並行開発している類似ソフトウェア固有の部分を追加し、コンパイル時に先行開発しているソフトウェアに必要なプログラムソースコードだけを抽出したり、並行開発しているソフトウェアに必要なプログラムソースコードだけを抽出したりすることにより、複数のソフトウェアを同時期に開発する方法が取られる。
【０００９】
プログラムソースコードがＣ言語で書かれている場合においては、図１９に示すように前処理指令を用いる条件コンパイルと呼ばれる方法が取られることがある。図１９はスクリーン上のデスクトップ領域幅を取得する関数の具体例を示す図である。図１９に示される例においてはスクリーンの右端または左端にメニュー領域があり、スクリーンの幅からメニュー領域の幅を減算することによりデスクトップ領域幅を取得している。この例において、「#ifdef Ｘ１００」、「#else」、「#endif」と書かれた行がそれぞれ前処理指令である。
【００１０】
ソフトウェアが搭載される機器によって画面のサイズは異なる場合があり、その場合、それぞれのソフトウェアでそれぞれのスクリーンのサイズに応じたプログラムを個別に作成しなければならない。図１９に示す関数では、「Ｘ１００」という名前のマクロが定義されていれば図２０に示すプログラムソースコードが抽出される。定義されていなければ図２１に示すプログラムソースコードが抽出される。このように、図１９に示す関数では、「Ｘ１００」というマクロを定義する、しないによって別々の画面幅を取得するプログラムソースコードが抽出される。
【００１１】
「Ｘ１００」を先行して開発しているソフトウェア、「Ｘ２００」を「Ｘ１００」と平行して開発しているソフトウェアとして、２つのソフトウェア「Ｘ１００」および「Ｘ２００」を同時期に開発を進めているとする。また、先行して開発しているソフトウェアにおいては「Ｘ１００」マクロを定義して「Ｘ２００」マクロを定義しないものとし、並行して開発しているソフトウェアにおいては「Ｘ２００」マクロを定義して「Ｘ１００」マクロを定義しないものとすると、図２０に示すプログラムソースコードは先行開発しているソフトウェアに必要なプログラムソースコードであり、図２１に示すプログラムソースコードは並行開発しているソフトウェアに必要なプログラムソースコードである。
【００１２】
このような開発方法を採用することで、複数の類似するソフトウェアに同一の機能拡張が必要になった場合、または複数の類似するソフトウェアで共通する部分に誤りが発見され、修正が必要になった場合において、一度の追加・修正で済ませることができる。また、一部のソフトウェアでの追加・修正漏れの発生を防ぐことができる。
【００１３】
たとえば、図１９に示す例において、デスクトップ領域幅の計算式が変更になったとしても、類似ソフトウェアの数に関係なく、図１９内のreturn文における計算式を正しい値に変更するという一度の修正でよい。
【００１４】
このような開発方法の場合、生産性算出を目的として、先行開発しているソフトウェアにおいて新規に作成されたプログラムソースコードの行数を測定するには、先行開発しているソフトウェアに固有であるプログラムソースコードと、複数の類似するソフトウェアに共通するプログラムソースコードとの両方において、既存のプログラムソースコードからの差分を取得し、その差分のプログラムソースコードの行数を集計する必要がある。
【００１５】
また、同じく生産性算出を目的として、並行開発しているソフトウェアにおいて新規に作成されたプログラムソースコードの行数を測定するには、並行開発しているソフトウェアに固有であるプログラムソースコードについてのみ既存のプログラムソースコードからの差分を取得し、その差分のプロゴラムソースコードの行数を集計する必要がある。
【００１６】
なお、並行開発しているソフトウェアにおいて新規に作成されたプログラムソースコードの行数を測定する際には、複数の類似するソフトウェアに共通するプログラムソースコードの、既存のプログラムソースコードからの差分を取得してはならない。なぜなら、複数の類似するソフトウェアに共通するプログラムソースコードにおける差分を新規に作成されたプログラムソースコードの行数に含めると、複数の類似するソフトウェアにおいて新規に作成されたプログラムソースコードの行数の測定するときに重複が生じ、全体としての開発規模および生産性が実際のものよりも高く算出されるためである。
【特許文献１】特開平５−１５８７６５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、特許文献１に開示されているＣ言語プログラム差分情報取得方式を採用して、並行して開発しているソフトウェアで新規に作成されたプログラムソースコードの行数を測定すると、入力されたプログラムソースコードが複数の類似するソフトウェアに共通するプログラムソースコードであるかどうかが識別されない。そのため、並行開発しているソフトウェアに固有であるプログラムソースコードと、複数の類似するソフトウェアに共通するプログラムソースコードとの両方について新規に作成されたプログラムソースコードの行数の合計が得られ、並行開発しているソフトウェアに固有であるプログラムソースコードのみで新規に作成されたプログラムソースコードの行数を得ることができないという問題があった。
【００１８】
本発明は、このような問題に鑑みてなされたものであり、並行して開発しているソフトウェアの中の、新規に作成されたプログラムソースコードの行数を正確に集計できるソフトウェア差分測定装置、ソフトウェア差分測定プログラム、およびソフトウェア差分測定プログラムを記録した記録媒体を提供することを目的としている。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明のある局面に従うと、ソフトウェア差分測定装置は、ソフトウェア構成より実効コードを抽出する実効コード抽出手段と、第１のソフトウェア構成より抽出された第１の実効コードと、第２のソフトウェア構成より抽出された第２の実効コードとから、前記第１のソフトウェア構成に固有の実効コードを抽出する固有コード抽出手段とを備え、固有コード抽出手段において、第１のソフトウェア構成より抽出された第１の実効コードおよび第２のソフトウェア構成より抽出された第２の実効コードから第１のソフトウェア構成に固有の実効コードである第１の固有コードと、第３のソフトウェア構成より抽出された第３の実効コードおよび第４のソフトウェア構成より抽出された第４の実効コードから第２の固有コードとを抽出し、第１の固有コードと第２の固有コードとの差分を出力する比較手段をさらに備える。
【００２０】
好ましくは、固有コード抽出手段は、第１の実効コードに含まれるコードのうち、第２の実効コードのある一部と一致する部分を削除したコード生成することにより、第１の固有コードを抽出する。
【００２１】
好ましくは、ソフトウェア構成はプログラムソースコードとコンパイル設定情報とを対にして含み、実効コード抽出手段は、ソフトウェア構成よりプログラムソースコードを取得するコード入力手段と、ソフトウェア構成よりコンパイル設定情報を取得するコンパイル設定情報入力手段と、コンパイル設定情報を解析してマクロ定義を抽出するコンパイル設定情報解析手段と、上記マクロを記憶するマクロ記憶手段と、プログラムソースコードを解析して実効コードであるか否かを判定するコード解析手段と、コード解析手段において抽出された前処理指令について、前処理条件を判定する前処理条件判定手段とを含む。
【００２２】
より好ましくは、前処理条件判定手段は、コード解析手段において抽出された前処理指令に上記マクロが含まれているときに、前処理条件が成立したものと判定する。
【００２３】
好ましくは、第１のソフトウェア構成は測定対象の環境における第１ソフトウェアの構成であり、第２のソフトウェア構成は比較対象の環境における第２ソフトウェアの構成であり、第３のソフトウェア構成は上記測定対象の環境における第３ソフトウェアの構成であり、第４のソフトウェア構成は上記比較対象の環境における第４ソフトウェアの構成であり、ソフトウェア構成はプログラムソースコードを含み、比較手段で出力する差分は、第１ソフトウェアのプログラムソースコードと、第３ソフトウェアのプログラムソースコードとの、上記測定対象の環境に固有の差分である。
【００２４】
本発明の他の局面に従うと、ソフトウェア差分測定プログラムは、測定対象の環境における第１ソフトウェアのプログラムソースコードおよび第３ソフトウェアのプログラムソースコードの、上記測定対象の環境に固有の差分を測定する処理をコンピュータに実行させるプログラムであって、第１ソフトウェアの構成である第１ソフトウェア構成より第１実効コード、第３ソフトウェアの構成である第３ソフトウェア構成より第３実効コード、比較対象の環境における第２ソフトウェアの構成である第２ソフトウェア構成より第１実効コード、および上記比較対象の環境における第４ソフトウェアの構成である第４ソフトウェア構成より第１実効コードを抽出する実効コード抽出ステップと、第１実効コードと第２実効コードとから第１ソフトウェア構成に固有の実効コードである第１固有コードを抽出し、第３実効コードと第４実効コードから第３ソフトウェア構成に固有の実効コードである第２固有コードを抽出する固有コード抽出ステップ手段と、第１固有コードと第２固有コードとの差分を出力する比較ステップとを実行させる。
【００２５】
本発明のさらに他の局面に従うと、記録媒体はコンピュータ読取可能な記録媒体であって、上述のソフトウェア差分測定プログラムを記録する。
【発明の効果】
【００２６】
この発明により、複数の類似するソフトウェアを同時期に変更・開発する場合において、測定対象となるソフトウェアの開発規模を求める際に、複数の類似するソフトウェアで共通する部分において新規に開発したソースコードプログラムの開発規模を含めることなく、測定対象となるソフトウェアの開発規模をより正確に得ることができる。それにより、ソフトウェアの生産性をより正確に算出することが可能となり、開発期間の見積もりやリソース配分などの精度の向上につながる。
【発明を実施するための最良の形態】
【００２７】
以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。
【００２８】
図１は、本実施の形態にかかるソフトウェア差分測定装置１００のハードウェア構成の具体例を示すブロック図である。本実施の形態にかかるソフトウェア差分測定装置１００のハードウェア構成は、一般的なパーソナルコンピュータのハードウェア構成と同様である。具体的には、図１を参照して、ソフトウェア差分測定装置１００は、全体を制御するＣＰＵ（Central Processing Unit）などで構成される演算部１０１、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）やＨＤ（Hard Disk）などの記憶装置１０２、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）などの記録媒体から情報を読取る読取装置やキーボードやマウスや通信装置などの情報を入力する入力装置１０３、および通信装置や表示装置などの演算結果を出力する出力装置１０４を含む。これらはバス１０５で接続される。または、ソフトウェア差分測定装置１００は独立した複数の装置から構成されて、専用回線や無線通信回線などで接続されてもよい。
【００２９】
さらに、記憶装置１０２には、所定の記憶領域として、入力装置から入力されるソフトウェア構成を記憶するソフトウェア構成記憶部１０２１と、ＣＰＵで実行されるソフトウェア差分測定プログラムを記憶するプログラム記憶部１０２２とが含まれる。ここでのソフトウェア構成は、プログラムソースコードとコンパイル設定情報と組合わせであるものとする。
【００３０】
図２は、ソフトウェア差分測定処理を行なうためのソフトウェア差分測定装置１００の機能構成の具体例を示すブロック図である。図２に示される各部は、ＣＰＵがプログラム記憶部１０２２に記憶されるソフトウェア差分測定プログラムを実行することで主にＣＰＵに形成される機能であるが、少なくとも一部が図示されないソフトウェア差分測定装置１００の他のハードウェア構成に形成されてもよい。
【００３１】
図２を参照して、ソフトウェア差分測定装置１００の演算部１０１には、実効コード抽出部１と、測定対象構成固有コード抽出部２と、比較部３とが含まれる。
【００３２】
実効コード抽出部１は、ソフトウェア構成記憶部１０２１に記憶されているソフトウェア構成であって、比較の対象とされるソフトウェア構成４，６および測定の対象とされるソフトウェア構成５，７を読出し、各ソフトウェア構成に含まれるプログラムソースコードから、コンパイル作業で無視される部分を削除したコード（このコードを、以降、実効コードと称する）を各々抽出して、測定対象構成固有コード抽出部２に出力する。
【００３３】
ここで、「実効コード」とはその環境に対応したプログラムを生成するために実際に利用されるプログラムコードを指す。たとえば、プログラムコードがＣ言語で記述されている場合であれば、プリプロセッサによる前処理によって削除される、または空白に置換えられることなくコンパイラに渡される文字列を含む部分を指す。
【００３４】
測定対象構成固有コード抽出部２は、実効コード抽出部１から入力された測定対象となる実効コードに含まれるコードから、比較対象となる実効コードの一部と一致する部分を削除して、測定対象のソフトウェア構成に含まれる実効コードであって、固有な実効コード部分（以下、固有コードとも称する）を抽出する。抽出された固有コードは比較部３に入力される。
【００３５】
比較部３では、測定対象構成固有コード抽出部２から入力された２つの固有コードを比較し、その差分を出力する。
【００３６】
図３は、上記実効コード抽出部１の詳細な構成の具体例を示すブロック図である。
図３を参照して、実効コード抽出部１は、ソフトウェア構成に含まれるソースコードを読込むコード入力部８と、ソフトウェア構成に含まれるコンパイルオプションを読込むコンパイルオプション入力部９と、コンパイルオプション入力部９によって読込まれたコンパイルオプションを解析し、マクロ定義の内容を抽出するオプション解析部１０と、マクロ定義の内容を記憶するマクロ記憶部１１と、コード入力部８から読込まれたソースコードの解析し、実効コードかどうかの判断を行なうコード解析部１２と、コード解析部１２の判断に利用される数値情報を記憶するカウンタ記憶部１３と、コード入力部８によって入力されたソースコードの前処理条件の判定を行なう前処理条件判定部１４と、コード解析部１２が実効コードと判定したコードを出力するコード出力部１５とを含んで構成される。
【００３７】
本実施の形態においては、本実施の形態にかかるソフトウェア差分測定装置１００を、Ｘ１００環境，Ｘ２００環境という、各々異なった２つの環境で動作する、類似したソフトウェアの開発に用いるものとして以下の説明を行なう。さらに、この仮定において、各ソフトウェアに、バージョン１．０と、次バージョンであるバージョン２．０との２つのバージョンが存在するものとする。そして、ソフトウェア差分測定装置１００を用いて、Ｘ２００環境のソフトウェアのバージョン１．０とバージョン２．０との間の差分のうち、Ｘ２００環境固有の差分を求めるものとする。この仮定において、Ｘ２００環境は測定対象の環境であり、「測定対象環境」と呼ぶこととする。また、Ｘ１００環境は測定対象環境固有の差分を求めるための比較対象であり、「比較対象環境」と呼ぶこととする。
【００３８】
この場合において、比較の対象とされるソフトウェア構成４，６および測定の対象とされるソフトウェア構成５，７は、それぞれ下記のソフトウェア構成を表わしている：
ソフトウェア構成４：バージョン１．０におけるＸ１００環境のソフトウェア構成、
ソフトウェア構成５：バージョン１．０におけるＸ２００環境のソフトウェア構成、
ソフトウェア構成６：バージョン２．０におけるＸ１００環境のソフトウェア構成、
ソフトウェア構成７：バージョン２．０におけるＸ２００環境のソフトウェア構成。
【００３９】
より具体的に、ソフトウェア構成４〜７の具体例を図４〜図７に示す。
図４を参照して、ソフトウェア構成４は、プログラムソースコード１６とコンパイル設定情報１７との対で構成されるものとする。本実施の形態において、プログラムソースコード１６はＣ言語で記述されているものとする。また、コンパイル設定情報１７はコンパイラに渡されるコンパイラオプションである。この具体例においては、１つのソフトウェア構成にプログラムソースコードとコンパイル設定情報であるコンパイラオプションとは各々１つずつ含まれるものとしているが、複数含まれてもよい。１つのソフトウェア構成にプログラムソースコードが複数存在する場合は、後述する処理をそれぞれのプログラムソースコードに対して繰返して実行すればよい。
【００４０】
また、図５〜図７を参照して、ソフトウェア構成５〜７も、図４に示されたソフトウェア構成４と同様に、１つのソフトウェア構成に、プログラムソースコードと、コンパイル設定情報であるコンパイラオプションとを、各々１つずつ含んだ構成であるものとする。
【００４１】
図８は、本実施の形態にかかるソフトウェア差分測定装置１００におけるソフトウェア差分測定処理の具体例を示すフローチャートである。図８のフローチャートに示される処理はＣＰＵがソフトウェア構成記憶部１０２１に記憶されるソフトウェア差分測定プログラムを実行し、図２および図３に示された各部を制御することによって実現される。なお、以降の処理の説明においては、具体的に、図４〜図７に示されたソフトウェア構成４〜７に対してソフトウェア差分測定処理が行なわれるものとして説明を行なう。
【００４２】
図８を参照して、始めに、実効コード抽出部１は、比較の対象とされるソフトウェア構成４をソフトウェア構成記憶部１０２１より取得して入力とし、プログラムソースコード１６より実効コードを抽出する（ステップＳ１００）。ソフトウェア構成４が図４に示された構成である場合、ステップＳ１００においては、図９に示される実効コードが抽出されて、測定対象構成固有コード抽出部２に出力される。
【００４３】
同様に、実効コード抽出部１は、測定の対象とされるソフトウェア構成５をソフトウェア構成記憶部１０２１より取得して入力とし、ソフトウェア構成５のプログラムソースコードより実効コードを抽出する（ステップＳ１１０）。ソフトウェア構成５が図５に示された構成である場合、ステップＳ１１０においては、図１０に示される実効コードが抽出されて、測定対象構成固有コード抽出部２に出力される。
【００４４】
また同様に、実効コード抽出部１は、比較の対象とされるソフトウェア構成６をソフトウェア構成記憶部１０２１より取得して入力とし、ソフトウェア構成６のプログラムソースコードより実効コードを抽出する（ステップＳ１２０）。ソフトウェア構成６が図６に示された構成である場合、ステップＳ１２０においては、図１１に示される実効コードが抽出されて、測定対象構成固有コード抽出部２に出力される。
【００４５】
また同様に、実効コード抽出部１は、測定の対象とされるソフトウェア構成７をソフトウェア構成記憶部１０２１より取得して入力とし、ソフトウェア構成７のプログラムソースコードより実効コードを抽出する（ステップＳ１３０）。ソフトウェア構成７が図７に示された構成である場合、ステップＳ１３０においては、図１２に示される実効コードが抽出されて、測定対象構成固有コード抽出部２に出力される。
【００４６】
続いて、測定対象構成固有コード抽出部２は、ステップＳ１００で実効コード抽出部１が比較対象であるバージョン１．０におけるＸ１００環境のソフトウェア構成４より抽出した実効コードと、ステップＳ１１０で実効コード抽出部１が測定対象であるバージョン１．０におけるＸ２００環境のソフトウェア構成５より抽出した実効コードとをそれぞれ入力とし、バージョン１．０におけるＸ２００環境に固有のコードを抽出する（ステップＳ１４０）。ステップＳ１１０で抽出された実効コードが図９に示される実効コードであり、ステップＳ１１０で抽出された実効コードが図１０に示される実効コードである場合、ステップＳ１４０においては図１３に示される測定対象に固有の実効コード（以下、測定対象固有コード）が抽出されて、比較部３に出力される。
【００４７】
同様に、測定対象構成固有コード抽出部２は、ステップＳ１２０で実効コード抽出部１が測定対象であるバージョン２．０におけるＸ１００環境のソフトウェア構成６より抽出した実効コードと、ステップＳ１３０で実効コード抽出部１が測定対象であるバージョン２．０におけるＸ２００環境のソフトウェア構成７より抽出した実効コードとをそれぞれ入力とし、バージョン２．０におけるＸ２００環境に固有のコードを抽出する（ステップＳ１５０）。ステップＳ１２０で抽出された実効コードが図１１に示される実効コードであり、ステップＳ１３０で抽出された実効コードが図１２に示される実効コードである場合、ステップＳ１５０においては、図１４に示される測定対象固有コードが抽出されて、比較部３に出力される。
【００４８】
最後に、比較部３は、ステップＳ１４０において測定対象構成固有コード抽出部２が抽出したバージョン１．０における測定対象環境固有コードと、ステップＳ１５０において測定対象構成固有コード抽出部２が抽出したバージョン２．０における測定対象環境固有コードとを入力にして、これらを比較することにより、バージョン１．０とバージョン２．０との間でも比較対象環境Ｘ２００における環境固有部分差分を出力する（ステップＳ１６０）。ステップＳ１４０で抽出された測定対象環境固有コードが図１３に示される実効コードであり、ステップＳ１５０で抽出された測定対象環境固有コードが図１４に示される実効コードである場合、ステップＳ１６０においては、図１５に示される差分が出力される。
【００４９】
図１６は、上記ステップＳ１００〜Ｓ１３０での、実効コード抽出部１による実効コード抽出処理を示すフローチャートである。
【００５０】
図１６を参照して、始めに、コンパイルオプション入力部９がソフトウェア構成に含まれるコンパイルオプションを読込み、オプション解析部１０がそのコンパイルオプションを解析し、コンパイルオプションにマクロ定義オプションが含まれていればマクロ記憶部１１にそのマクロを定義する（ステップＳ２００）。コンパイルオプション入力部９から読込まれるオプションについては様々な種類のものが含まれるが、ステップＳ２００においてオプション解析部１０はコンパイルオプションを解析し、ソースコードのある部分が実効コードかどうかの判定に影響する部分をコンパイルオプションの中から検出して、その値をマクロ記憶部１１に格納する。ソースコードのある部分が実効コードかどうかの判定に影響する部分としては、たとえばコンパイルオプションが図４に示されるコンパイルオプション１７である場合には、「-DX100」のようなマクロ定義オプションが該当する。
【００５１】
ステップＳ２００で、マクロ記憶部１１は、１つの具体例として、図１７に示されるような表形式でマクロ名とマクロ定義文字列とを対にして記憶することで、抽出されたマクロを定義する。たとえば、「-DMAX_SIZE=10」というマクロ定義オプションであれば、オプション解析部１０は、マクロ名が「MAX_SIZE」、マクロ定義文字列が「10」であると解析し、このマクロ名とマクロ定義との対をマクロ記憶部１１に記憶させる。また、先に示した「-DX100」というマクロ定義オプションであれば、オプション解析部１０において、マクロ名が「X100」であり、マクロ定義文字列が不明であると解析されるため、マクロ定義文字列にはその旨を表わす文字列の具体例として「１」が設定されて、このマクロ名とマクロ定義との対がマクロ記憶部１１に記憶される。
【００５２】
マクロ記憶部１１にこのように記憶されることで、マクロ名を与えると記憶された各マクロのマクロ名で表を検索して、マクロ名が一致するものがあればその定義内容である文字列を得ることができる。
【００５３】
続いて、コード解析部１２がカウンタ記憶部１３に記憶されているカウンタ値を０に設定する（ステップＳ２０５）。続いて、コード入力部８はソフトウェア構成に含まれるソースコードから１行分のデータを読込む（ステップＳ２１０）。ステップＳ２１０で、コード入力部８はソースコードの先頭から順にまだ読込まれていない行を読込んでいき、読込まれた１行分のソースコードはコード解析部１２に渡される。
【００５４】
続いて、コード解析部１２はカウンタ記憶部１３に格納されているカウンタ値を確認する（ステップＳ２２０）。カウンタ値が正の値である場合は（ステップＳ２２０でＹＥＳ）、後述のステップＳ３４０以降の処理を行なう。そうでない場合は（ステップＳ２２０でＮＯ）、ステップＳ２３０以降の処理を行なう。処理が開始されて第１行目のソースコードが解析されている際には、上記ステップＳ２０５でカウンタ値が０であるため、ステップＳ２３０以降の処理に移行する。
【００５５】
ステップＳ２３０で、コード解析部１２はコード入力部８によって読込まれた行のソースコードが#if文または#ifdef文であるかどうかを確認する。#ifdef文でも#if文でもない場合（ステップＳ２３０でＮＯ）、後述のステップＳ２７０以降の処理を行なう。#ifdef文または#if文のいずれかであれば（ステップＳ２３０でＹＥＳ）、ステップＳ２４０以降の処理を行なう。
【００５６】
ステップＳ２４０で、コード解析部１２は、前処理条件判定部１４を用いて#ifdef文または#if文に記述されている条件の判定を行なう。上記行のソースコードが#ifdef文であれば、ステップＳ２４０で前処理条件判定部１４は「#ifdef」に続くマクロ名がマクロ記憶部１１に記憶されているかどうかを検索し、検索されたマクロが存在すれば、条件が成立したものと判定する。
【００５７】
また、上記行のソースコードが#if文であれば、前処理条件判定部１４は「#if」に続く条件式が満たされるかどうかを判定する。ステップＳ２４０で前処理条件判定部１４は条件式をトークンに分割し、マクロ記憶部１１にトークンと同じ文字列であるマクロ名が存在するかどうかを確認する。存在する場合はその一致するトークンの文字列を一致するマクロの定義内容の文字列に置換した上で、条件式の解釈を行ない、条件式が満たされるかどうかの確認を行なう。
【００５８】
そして、コード解析部１２は前処理条件判定部１４による条件成立の判定を確認する（ステップＳ２５０）。条件が成立していれば（ステップＳ２５０でＹＥＳ）、コード解析部１２はカウンタ記憶部１３に記憶されているカウンタ値を１加算し（ステップＳ２６０）、コード出力部１５から測定対象構成固有コード抽出部２に空行（何も記述されていない行）を出力させる（ステップＳ３２０）。条件が成立していない場合（ステップＳ２５０でＮＯ）、コード解析部１２は上記ステップＳ２６０の処理をスキップして、つまりカウンタ値を加算せずにコード出力部１５から測定対象構成固有コード抽出部２に空行を出力させる（ステップＳ３２０）。
【００５９】
コード入力部８が読込んだ行のソースコードが#ifdef文でも#if文でもなかった場合は（ステップＳ２３０でＮＯ）、コード解析部１２は、さらに、コード入力部８が読込んだ行のソースコードが#else文であるかどうかを確認する（ステップＳ２７０）。#else文である場合（ステップＳ２７０でＹＥＳ）、コード解析部１２はカウンタ記憶部１３に記憶されているカウンタ値を１加算し（ステップＳ２８０）、コード出力部１５から測定対象構成固有コード抽出部２に空行を出力させる（ステップＳ３２０）。
【００６０】
コード入力部８が読込んだ行のソースコードが#ifdef文、#if文、および#else文のいずれでもなかった場合は（ステップＳ２７０でＮＯ）、コード解析部１２は、さらに、コード入力部８が読込んだ行のソースコードが#define文であるかどうかを確認する（ステップＳ３００）。コード入力部８が読込んだ行のソースコードがマクロ定義するコードである#define文であれば（ステップＳ３００でＹＥＳ）、コード解析部１２は#define文を解析し、解析の結果得られたマクロ定義の内容をマクロ記憶部１１に格納し（ステップＳ３１０）、コード出力部１５から空行を出力させる（ステップＳ３２０）。そうでない場合、つまりコード入力部８が読込んだ行のソースコードが#ifdef文、#if文、#else文、および#define文のいずれでもなかった場合は（ステップＳ３００でＮＯ）、コード解析部１２はコード入力部８から入力された行をコード出力部１５を用いて測定対象構成固有コード抽出部２に出力する（ステップＳ３３０）。
【００６１】
上記ステップＳ２２０において、カウンタ値が正値でないことが確認された場合（ステップＳ２２０でＮＯ）、コード解析部１２はコード入力部８が読込んだ行のソースコードが#ifdef文または#if文であるかどうかを確認する（ステップＳ３４０）。#ifdef文または#if文のいずれかであれば（ステップＳ３４０でＹＥＳ）、コード解析部１２はカウンタ記憶部１３に記憶されているカウンタ値を１加算し（ステップＳ３５０）、コード出力部１５から測定対象構成固有コード抽出部２に空行を出力させる（ステップＳ３２０）。
【００６２】
コード入力部８によって読込まれた行のソースコードが#ifdef文でも#if文でもない場合（ステップＳ３４０でＮＯ）、コード解析部１２は、さらに、コード入力部８が読込んだ行のソースコードが#endif文であるかどうかを確認する（ステップＳ３６０）。#endif文である場合（ステップＳ３６０でＹＥＳ）、コード解析部１２はカウンタ記憶部１３に記憶されているカウンタ値を１減算し（ステップＳ３７０）、コード出力部１５から測定対象構成固有コード抽出部２に空行を出力させる（ステップＳ３２０）。
【００６３】
コード入力部８が読込んだ行のソースコードが#ifdef文、#if文、および#endif文のいずれでもなかった場合は（ステップＳ３６０でＮＯ）、コード解析部１２は、さらに、コード入力部８が読込んだ行のソースコードが#else文であり、かつカウンタ記憶部１３に格納されているカウンタ値が１であるかどうかを確認する（ステップＳ３８０）。
【００６４】
コード入力部８で読込んだ行のソースコードが#else文であり、かつカウンタ記憶部１３に格納されているカウンタ値が１であれば（ステップＳ３８０でＹＥＳ）、コード解析部１２はカウンタ記憶部１３に記憶されているカウンタ値を１減算し（ステップＳ３９０）、コード出力部１５から測定対象構成固有コード抽出部２に空行を出力させる（ステップＳ３２０）。コード入力部８で読込んだ行のソースコードが#ifdef文、#if文、endif文、および#else文のいずれでもなかった場合は、またはカウンタ記憶部１３に格納されているカウンタ値が１でなかった場合は（ステップＳ３８０でＮＯ）、上記ステップＳ３９０の処理をスキップして、つまりカウンタ値を減算せずにコード出力部１５から測定対象構成固有コード抽出部２に空行を出力させる（ステップＳ３２０）。
【００６５】
以上のステップＳ２１０〜ステップＳ３９０の処理が実行されることで、コード解析部１２はコード入力部８から読込まれた１行のソースコードを処理し、その行のうちのマクロを定義している部分、つまり実効コードである部分をコード出力部１５より測定対象構成固有コード抽出部２に出力する（ステップＳ３１０）。また、実効コードが含まれていない場合には、その行についてはコード出力部１５より測定対象構成固有コード抽出部２に空行が出力される（ステップＳ３２０）。
【００６６】
ステップＳ２１０〜ステップＳ３９０の処理が終了すると、コード解析部１２はコード入力部８がすべての行を読込んだかどうかを確認する（ステップＳ４００）。すべての行を読込んでいれば（ステップＳ４００でＹＥＳ）、実効コード抽出の処理は完了する。この場合、これまでの処理でコード出力部１５が測定対象構成固有コード抽出部２に出力したものが実効コードである。読込んでいない行が残っている場合（ステップＳ４００でＮＯ）、すべての行についての処理が完了するまでステップＳ２１０からの処理を繰返し実行する。
【００６７】
具体的に、図４に示されたソフトウェア構成４のプログラムソースコード１６から実効コードを抽出する場合、第１行「void GetImageExt (ImgType type)」から第６行「{」までについては、カウンタ値が０であるため上記ステップＳ２２０〜Ｓ３３０が実行されて、図９に示されるように、実効コードとしてこれらの行がそのまま出力される。また、ここまでの処理では、カウンタ値が０のままである。
【００６８】
次に、第７行「#ifdef X100」については、上記ステップＳ２３０でコード解析部１２によって#ifdef文であると判定され、さらにステップＳ２４０で、すでに上記ステップＳ２００でマクロ定義されていると判定されるため、ステップＳ２５０で条件成立とされてカウンタ値が０のままとされる。また、図９に示されるように、上記ステップＳ３２０で実効コードとして第７行は空行で出力される。
【００６９】
次に、第８行「case IMAGE_JPEG:」から第１０行「break;」までについては、カウンタ値が０であるため上記ステップＳ２２０〜Ｓ３３０が実行されて、図９に示されるように、実効コードとして第８行から第１０行はこれらの行がそのまま出力される。また、ここまでの処理では、カウンタ値が０のままである。
【００７０】
次に、第１１行「#endif /* X100 */」については、上記ステップＳ２９０でコード解析部１２によって#endif文であると判定されるため、図９に示されるように、上記ステップＳ３２０で実効コードとして第１１行は空行で出力される。また、ここまでの処理では、カウンタ値が０のままである。
【００７１】
次に、第１２行「#ifdef X200」については、上記ステップＳ２３０でコード解析部１２によって #ifdef文であると判定されるが、ステップＳ２４０で、上記ステップＳ２００でマクロ定義されたものとことなることが判定されるため、ステップＳ２５０で条件不成立とされてステップＳ２６０でカウンタ値が１とされる。また、図９に示されるように、上記ステップＳ３２０で実効コードとして第１２行は空行で出力される。
【００７２】
次に、第１３行「case IMAGE_SVG:」から第１５行「break;」までについては、カウンタ値が１であるために上記ステップＳ３４０〜Ｓ３８０が実行されて、図９に示されるように、上記ステップＳ３２０で実効コードとして第１３行から第１５行は空行で出力される。また、ここまでの処理で、カウンタ値が１のままである。
【００７３】
次に、第１６行「#endif /* X200 */」については、上記ステップＳ３６０でコード解析部１２によって#endif文であると判定されるため、ステップＳ３７０でカウンタ値が０に戻る。また、図９に示されるように、上記ステップＳ３２０で実効コードとして第１６行は空行で出力される。
【００７４】
最後に、第１７行「case IMAGE_PNG:」から第２２行「}」までについては、カウンタ値が０であるため上記ステップＳ２２０〜Ｓ３３０が実行されて、図９に示されるように、実効コードとして第１７行から第２２行はこれらの行がそのまま出力される。
【００７５】
以上の処理によって、図４のソフトウェア構成４のプログラムソースコード１６から図９の実効コードが抽出される。また、他のソフトウェア構成５〜７についても同様にして図１０〜１２の実効コードが抽出される。
【００７６】
図１８は、上記ステップＳ１４０，Ｓ１５０での、測定対象構成固有コード抽出部２による固有コードの抽出処理を示すフローチャートである。
【００７７】
図１８を参照して、始めに、測定対象構成固有コード抽出部２は、測定対象環境の実効コードから１行読込む（ステップＳ５００）。ステップＳ５００で、測定対象構成固有コード抽出部２は、測定対象環境の実効コードの記述順にまだ読込まれていない１行を読込む。
【００７８】
続いて、測定対象構成固有コード抽出部２は、ステップＳ５００で読込まれた行が空行でないことを確認する（ステップＳ５１０）。ステップＳ５００で読込まれた行が空行である場合（ステップＳ５１０でＮＯ）、測定対象構成固有コード抽出部２は比較部３に空行を出力する（ステップＳ５５０）。
【００７９】
ステップＳ５００で読込まれた行が空行でなければ（ステップＳ５１０でＹＥＳ）、測定対象構成固有コード抽出部２は、比較対象環境の実効コードから１行読込む（ステップＳ５２０）。ステップＳ５２０で、測定対象構成固有コード抽出部２は、比較対象環境の実効コードの記述順にまだ読込まれていない１行を読込む。
【００８０】
次に、測定対象構成固有コード抽出部２は、ステップＳ５２０で読込まれた行が空行であることを確認する（ステップＳ５３０）。ステップＳ５００で読込まれた測定対象環境の実効コードの行が空行でなく、かつステップＳ５２０で読込まれた比較対象環境の実効コードの行が空行である場合（ステップＳ５３０でＹＥＳ）、測定対象構成固有コード抽出部２は、ステップＳ５００で読込まれた測定対象環境の実効コードの行を比較部３に出力する（ステップＳ５４０）。
【００８１】
ステップＳ５００で読込まれた測定対象環境の実効コードの行も、ステップＳ５２０で読込まれた行も空行でない場合（ステップＳ５３０でＮＯ）、測定対象構成固有コード抽出部２は比較部３に空行を出力する（ステップＳ５５０）。
【００８２】
続いて、測定対象構成固有コード抽出部２は、測定対象環境の実効コードをすべて読込んだかどうかを確認する（ステップＳ５６０）。すべての行を読込んでいれば（ステップＳ５６０でＹＥＳ）、処理は完了する。読込んでいない行が残っている場合（ステップＳ５６０でＮＯ）、すべての行についての処理が完了するまでステップＳ５０００からの処理を繰返し実行する。
【００８３】
以上の処理によって、測定対象構成固有コード抽出部２は、固有コードでない部分を空行として、固有コードとなる部分は入力されたソースコードそのままの内容として、比較部３に出力する。
【００８４】
具体的に、図９に示された比較対象環境の実効コードを用いて、図１０に示された測定対象環境の実効コードから固有コードを抽出する場合、上記ステップＳ５００で図１０の測定対象環境の実効コードの第４行、第７行〜第１３行、第１７行、および第２２行が読込まれた場合には、上記ステップＳ５１０で測定対象構成固有コード抽出部２においてこれらの行が空行であると判定され、図１３に示されるように、上記ステップＳ５５０で固有コードとして第４行、第７行〜第１３行、第１７行、および第２２行は空行で出力される。
【００８５】
上記ステップＳ５００で図１０の測定対象環境の実効コードの第１行〜第３行、第５行〜第６行、第１８行〜第２１行、および第２３行〜第２４行が読込まれた場合には、上記ステップＳ５１０およびステップＳ５３０で測定対象構成固有コード抽出部２においてこれらの行が空行でなく、図９の比較対照環境コードの実効コードの対応する行も空行でないと判定され、図１３に示されるように、上記ステップＳ５５０で固有コードとして第１行〜第３行、第５行〜第６行、第１８行〜第２１行、および第２３行〜第２４行は空行で出力される。
【００８６】
上記ステップＳ５００で図１０の測定対象環境の実効コードの第１４行〜第１６行が読込まれた場合には、上記ステップＳ５１０およびステップＳ５３０で測定対象構成固有コード抽出部２においてこれらの行が空行でなく、図９の比較対照環境コードの実効コードの対応する行が空行であると判定され、上記ステップＳ５００で固有コードとして上記ステップＳ５００で読込まれた行がそのまま出力される。
【００８７】
以上の処理によって、図１０の測定対象環境の実効コードから図９の比較対象環境の実効コードを用いて図１３の測定対象環境固有コードが抽出される。また、図１２の測定対象環境の実効コードについても同様にして図１１の比較対象環境の実効コードを用いて図１４の測定対象環境固有コードが抽出される。
【００８８】
上記ステップＳ２６０では比較部３によって図１３に示された固有コードと図１４に示された固有コードとが比較されて、その差分として図１４の固有コードの第１３行「case IMAGE_SVG:」から第１５行「break;」が抽出されて、図１５に示される差分が出力される。
【００８９】
図１３の測定対象環境固有コードは、測定対象環境であるＸ２００環境のバージョン１．０のソフトウェア構成５の実効コード（図１０）の、比較対象であるＸ１００環境のバージョン１．０のソフトウェア構成４の実効コード（図９）に対して固有な実効コードであり、Ｘ２００環境で固有な実効コードである。また、図１４の測定対象環境固有コードは、測定対象環境であるＸ２００環境のバージョン２．０のソフトウェア構成７の実効コード（図１２）の、比較対象であるＸ１００環境のバージョン２．０のソフトウェア構成６（図１１）に対して固有な実効コードであり、Ｘ２００環境で固有な実効コードである。そのため、これらの差分である図１５に示される差分は、バージョン１．０とバージョン２．０との間での、Ｘ２００環境固有の差分となる。
【００９０】
本実施の形態にかかるソフトウェア差分測定装置１００においてこのように差分が得られることで、並行して開発しているソフトウェアの中の、新規に作成されたプログラムソースコードが抽出され、行数を正確に集計することができる。
【００９１】
さらに、上述のソフトウェア差分測定処理をコンピュータに実行させるためのプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ、ＲＯＭ、ＲＡＭおよびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【００９２】
なお、本発明にかかるプログラムは、コンピュータのオペレーションシステム（ＯＳ）の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずＯＳと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
【００９３】
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
【００９４】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【００９５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００９６】
【図１】ソフトウェア差分測定装置１００のハードウェア構成の具体例を示すブロック図である。
【図２】ソフトウェア差分測定処理を行なうためのソフトウェア差分測定装置１００の機能構成の具体例を示すブロック図である。
【図３】実効コード抽出部１の詳細な構成の具体例を示すブロック図である。
【図４】ソフトウェア構成４の具体例を図である。
【図５】ソフトウェア構成５の具体例を図である。
【図６】ソフトウェア構成６の具体例を図である。
【図７】ソフトウェア構成７の具体例を図である。
【図８】ソフトウェア差分測定処理の具体例を示すフローチャートである。
【図９】ソフトウェア構成４から抽出される実効コードの具体例を図である。
【図１０】ソフトウェア構成５から抽出される実効コードの具体例を図である。
【図１１】ソフトウェア構成６から抽出される実効コードの具体例を図である。
【図１２】ソフトウェア構成７から抽出される実効コードの具体例を図である。
【図１３】ソフトウェア構成４から抽出される実効コードとソフトウェア構成５から抽出される実効コードとから得られる測定対象固有コードの具体例を図である。
【図１４】ソフトウェア構成６から抽出される実効コードとソフトウェア構成７から抽出される実効コードとから得られる測定対象固有コードの具体例を図である。
【図１５】ソフトウェア構成４から抽出される実効コードとソフトウェア構成５から抽出される実効コードとから得られる測定対象固有コードと、ソフトウェア構成６から抽出される実効コードとソフトウェア構成７から抽出される実効コードとから得られる測定対象固有コードとの差分の具体例を示す図である。
【図１６】ステップＳ１００〜Ｓ１３０での実効コード抽出処理を示すフローチャートである。
【図１７】マクロ定義の具体例を示す図である。
【図１８】ステップＳ１４０，Ｓ１５０での固有コードの抽出処理を示すフローチャートである。
【図１９】スクリーン上のデスクトップ領域幅を取得する関数の具体例を示す図である。
【図２０】プログラムソースコードの具体例を示す図である。
【図２１】プログラムソースコードの具体例を示す図である。
【符号の説明】
【００９７】
１  実効コード抽出部、２  測定対象構成固有コード抽出部、３  比較部、４〜７  ソフトウェア構成、８  コード入力部、９  コンパイルオプション入力部、１０  オプション解析部、１１  マクロ記憶部、１２  コード解析部、１３  カウンタ記憶部、１４  前処理条件判定部、１５  コード出力部、１６  プログラムソースコード、１７  コンパイル設定情報、１００  ソフトウェア差分測定装置、１０１  演算部、１０２  記憶装置、１０３  入力装置、１０４  出力装置、１０５  バス、１０２１  ソフトウェア構成記憶部、１０２２  プログラム記憶部。
【図１】
2008123343.tif 000003
【図２】
2008123343.tif 000004
【図３】
2008123343.tif 000005
【図４】
2008123343.tif 000006
【図５】
2008123343.tif 000007
【図６】
2008123343.tif 000008
【図７】
2008123343.tif 000009
【図８】
2008123343.tif 000010
【図９】
2008123343.tif 000011
【図１０】
2008123343.tif 000012
【図１１】
2008123343.tif 000013
【図１２】
2008123343.tif 000014
【図１３】
2008123343.tif 000015
【図１４】
2008123343.tif 000016
【図１５】
2008123343.tif 000017
【図１６】
2008123343.tif 000018
【図１７】
2008123343.tif 000019
【図１８】
2008123343.tif 000020
【図１９】
2008123343.tif 000021
【図２０】
2008123343.tif 000022
【図２１】
2008123343.tif 000023