(57)【要約】【課題】ソースコード再利用率を高精度で測定できるソースコード再利用率測定装置を実現すること。【解決手段】データ部と関数部で構成されるソースモジュールを用いた派生製品における既存製品に関わるソースコードの再利用率を測定するソースコード再利用率測定装置において、前記ソースコードの再利用率を、前記ソースコードのデータ部と関数部のそれぞれについて測定することを特徴とするもの。【選択図】                    図１
2011170482.tif 000002
【特許請求の範囲】
【請求項１】
データ部と関数部で構成されるソースモジュールを用いた派生製品における既存製品に関わるソースコードの再利用率を測定するソースコード再利用率測定装置において、
前記ソースコードの再利用率を、前記ソースコードのデータ部と関数部のそれぞれについて測定することを特徴とするソースコード再利用率測定装置。
【請求項２】
既存製品とその派生製品のソースコードが入力されるソースコード入力部と、
このソースコード入力部に入力された前記ソースコードをデータ部と関数部に分離するソースコード分解部と、
これら分離されたデータ部と関数部のそれぞれのソースコードについて新旧を比較するソースコード比較部と、
前記分離されたデータ部と関数部のそれぞれのソースコード行数を求めるソースコード行数算出部と、
前記ソースコード比較部の比較結果および前記ソースコード行数算出部のデータ部行数算出結果に基づき前記データ部のソースコード再利用率を算出するデータ部再利用率計測部と、
前記ソースコード比較部の比較結果および前記ソースコード行数算出部の関数部行数算出結果に基づき前記関数部のソースコード再利用率を算出する関数部再利用率計測部と、
これらデータ部のソースコード再利用率と関数部のソースコード再利用率をリスト形式で出力する再利用率リスト生成出力部、
とで構成されたことを特徴とするソースコード再利用率測定装置
【請求項３】
前記ソースコード分解部は、関数部内のデータ定義部分をデータ部としてデータ部の行数に組み入れることを特徴とする請求項２記載のソースコード再利用率測定装置。
【請求項４】
前記ソースコード比較部は、データ部または関数部の名称を比較する時の名称の一致の検出基準が任意に選択できることを特徴とする請求項２記載のソースコード再利用率測定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード再利用率測定装置に関し、詳しくは、ソフトウェア開発の効率化改善に関するものである。
【０００２】
ソフトウェア製品の開発にあたっては、開発製品に関連した過去のソフトウェア製品(以下既存製品という)で用いられているソースコードを再利用する「派生製品」開発が広く行われている。
【０００３】
このような派生製品開発におけるソースコードの再利用率は、ソフトウェア製品を検証するのにあたり、検証工数の見積もり確保や検証方針の策定など、検証方法を計画する上で重要な尺度となっており、正確な測定が必要となる。
【０００４】
図５は従来のソースコード再利用率測定装置の一例を示すブロック図、図６は図５の処理動作の流れを説明するフローチャートである。図５において、ソースコード入力部１には、既存製品のソースモジュールＳＭＡに含まれるソースコードＳＣＡと派生製品のソースモジュールＳＭＢに含まれるソースコードＳＣＢが入力される。
【０００５】
これら新旧のソースコードＳＣＡとＳＣＢはソースコード比較部２に入力されて比較され、両者の差分が検出される。
【０００６】
具体的には、図６に示すように、まず、派生製品のそれぞれのソースモジュールＳＭＢについて、「ソースモジュール名」を比較して既存製品に存在するソースモジュールＳＭＡか否かを判断する（ステップＳ１）。「ソースモジュール名」が一致すれば存在している再利用モジュールと判断し、続いて「タイムスタンプ」を比較することにより既存製品と同一か否かを判断する（ステップＳ２）が、「ソースモジュール名」が一致しなければ新規モジュールとしてソースコード行数計算処理にジャンプする（ステップＳ３）。
【０００７】
ステップＳ２において、「タイムスタンプ」が一致すれば既存製品と同一の再利用モジュールと判断してソースコード行数計算処理に移行し（ステップＳ３）、「タイムスタンプ」が一致しなければ既存製品のモジュールの一部を変更した変更モジュールと判断してソースコード行数計算処理に移行する（ステップＳ３）。
【０００８】
図７は、ソースモジュールＳＭの構成例図である。ソースモジュールＳＭは、データ部ＤＢと複数ブロックに分割された関数部ＦＢとで構成されている。
【０００９】
再び図５において、再利用率演算部３は、ソースコード比較部２で検出された新旧のソースコードＳＣＡとＳＣＢの差分に基づき、ソースコードの再利用率を算出する。再利用率は、再利用モジュールのソースコード行数を全モジュールのソースコード行数の合計で除することにより求める。
【００１０】
たとえば新規モジュールのソースコード行数を○行、変更モジュールのソースコード行数を△行、再利用モジュールのソースコード行数を□行とすると、再利用率は以下の式で求めることができる。
再利用率＝□／（○＋△＋□）
【００１１】
そして、再利用率リスト生成出力部４は、再利用率演算部３の算出結果に基づき、所定のリスト形式の再利用率リストを生成して出力する。
【００１２】
特許文献１には、ソフトウェア開発プロジェクトにおける完了プロジェクトの再利用率に基づき、高精度の作業見積もりを実現する手法が記載されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００８−１５２３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところで、図５の構成によれば、モジュール単位での集計を行うので、変更モジュールの全行数が修正コード行数と見なされ、修正モジュールに含まれている再利用コード行数が欠落する。このため、求められる再利用行数が実際の再利用行数よりも低くなり、ソフトウェアの検証計画を行う上で検証時間や検証工数を見誤る恐れがある。
【００１５】
この問題を補う方法として、
ａ）変更モジュール行数に1以下の係数を乗じ、その値を再利用行数に加算する。
ｂ）既存製品から派生製品へのソースコード行数の増加分を修正行数とし、既存製品のソースコード行数を全て再利用行数に加算する。
などが行われている。
【００１６】
しかし、ａ）の方法は、係数の与え方を決める手段が経験に依存するため、客観性に乏しく、計測法としては問題がある。
【００１７】
また、ｂ）の方法は、図７に示すようなソースモジュールＳＭにおけるのどの部分のソースコードが変更されたかによって変更の影響が大きく異なるにも拘わらず、このことが考慮されていないという問題がある。
【００１８】
すなわち、ｂ）の方法は、図７に示すソースモジュール構成において、変数や定数定義などを行うデータ部ＤＢでは比較的合理的であるが、関数部ＦＢに対してはこの考え方はあてはまらない。ｂ）の方法をデータ部と関数部の両方に適用すると、求まる再利用率は実際の再利用ソースコードの量よりも高くなりすぎるため、テスト計画のための再利用率の計算方法としては適切ではない。
【００１９】
本発明は、このような問題点を解決するものであり、その目的は、ソースコード再利用率を高精度で測定できるソースコード再利用率測定装置を実現することにある。
【課題を解決するための手段】
【００２０】
上記目的を達成するために、本発明のうち請求項１に記載の発明は、
データ部と関数部で構成されるソースモジュールを用いた派生製品における既存製品に関わるソースコードの再利用率を測定するソースコード再利用率測定装置において、
前記ソースコードの再利用率を、前記ソースコードのデータ部と関数部のそれぞれについて測定することを特徴とする。
【００２１】
請求項２記載の発明は、
既存製品とその派生製品のソースコードが入力されるソースコード入力部と、
このソースコード入力部に入力された前記ソースコードをデータ部と関数部に分離するソースコード分解部と、
これら分離されたデータ部と関数部のそれぞれのソースコードについて新旧を比較するソースコード比較部と、
前記分離されたデータ部と関数部のそれぞれのソースコード行数を求めるソースコード行数算出部と、
前記ソースコード比較部の比較結果および前記ソースコード行数算出部のデータ部行数算出結果に基づき前記データ部のソースコード再利用率を算出するデータ部再利用率計測部と、
前記ソースコード比較部の比較結果および前記ソースコード行数算出部の関数部行数算出結果に基づき前記関数部のソースコード再利用率を算出する関数部再利用率計測部と、
これらデータ部のソースコード再利用率と関数部のソースコード再利用率をリスト形式で出力する再利用率リスト生成出力部、
とで構成されたことを特徴とするソースコード再利用率測定装置である。
【００２２】
請求項３記載の発明は、請求項２記載のソースコード再利用率測定装置において、
前記ソースコード分解部は、関数部内のデータ定義部分をデータ部としてデータ部の行数に組み入れることを特徴とする。
【００２３】
請求項４記載の発明は、請求項２記載のソースコード再利用率測定装置において、
前記ソースコード比較部は、データ部または関数部の名称を比較する時の名称の一致の検出基準が任意に選択できることを特徴とする。
【発明の効果】
【００２４】
これらにより、ソースコード再利用率を高精度で測定できる。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施例を示すブロック図である。
【図２】図１の動作説明図である。
【図３】図１の処理動作の流れを説明するフローチャートである。
【図４】同一の派生製品における再利用率の実測例図である。
【図５】従来のソースコード再利用率測定装置の一例を示すブロック図である。
【図６】図５の動作説明図である。
【図７】ソースモジュールＳＭの構成例図である。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して、本発明を詳細に説明する。図１は本発明の一実施例を示すブロック図である。
【００２７】
図１において、ソースコード入力部５には、既存製品のソースモジュールＳＭＡに含まれるソースコードＳＣＡと派生製品のソースモジュールＳＭＢに含まれるソースコードＳＣＢが入力される。なお、図１の細線は既存製品で用いられている「旧」のソースコードを表し、太線は派生製品で用いられている「新」のソースコードを表している。
【００２８】
これら新旧のソースコードＳＣＡとＳＣＢはソースコード分解・行数算出部６に入力され、図７に示すようなデータ部ＤＢと関数部ＦＢに分解されるとともに、図２に示すようにそれぞれのソースコードの行数が算出される。ここで、図１の実線は「データ部」のソースコードを表し、点線は「関数部」のソースコードを表している。
【００２９】
ソースコード分解・行数算出部６でデータ部ＤＢと関数部ＦＢに分解された新旧のソースコードはソースコード比較部７に入力され、データ部ＤＢと関数部ＦＢのそれぞれについて新旧が比較されて新旧両者の差分が検出される。
【００３０】
ソースコード比較部７におけるデータ部の比較結果はデータ部再利用率演算部８に入力されてデータ部のソースコードの再利用率が演算され、関数部の比較結果は関数部再利用率演算部９に入力されて関数部のソースコードの再利用率が演算される。
【００３１】
そして、再利用率リスト生成出力部１０は、データ部再利用率演算部８および関数部再利用率演算部９の算出結果に基づき、所定のリスト形式の再利用率リストを生成して出力する。
【００３２】
図３は、図１の装置における処理動作の流れを説明するフローチャートである。図３において、はじめに、派生製品のそれぞれのソースモジュールＳＭＢについて、データ部の「名称」（モジュール名をデータ名とする）または関数部の「名称」を比較して既存製品に存在するソースモジュールＳＭＡか否かを判断する（ステップＳ１）。「名称」が一致すれば存在している再利用モジュールと判断し、続いて「コード行数」を比較することにより既存製品と同一か否かを判断する（ステップＳ２）が、「名称」が一致しなければ新規モジュールとしてデータ部か関数部かの判断処理に移行する（ステップＳ６）。
【００３３】
ステップＳ２において、「コード行数」が一致すれば既存製品と同一の再利用モジュールと判断してデータ部か関数部かの判断処理に移行し（ステップＳ６）、「コード行数」が一致しなければ既存製品のモジュールの一部を変更した変更モジュールと判断してデータ部か関数部かの判断処理に移行する（ステップＳ９）。
【００３４】
ステップＳ３において、再利用モジュールについてデータ部と判断した場合にはその行数を再利用データ部の行数に加算し（ステップＳ４）、関数部と判断した場合にはその行数を再利用関数部の行数に加算する（ステップＳ５）。
【００３５】
ステップＳ６において、新規モジュールについてデータ部と判断した場合にはその行数を新規データ部の行数に加算し（ステップＳ７）、関数部と判断した場合にはその行数を新規関数部の行数に加算する（ステップＳ８）。
【００３６】
ステップＳ９において、変更モジュールについてデータ部と判断した場合には派生製品と既存製品のデータ部行数のうち小さい方を再利用データ部行数に加算して大きい方を合計データ行数に加算し（ステップＳ１０）、関数部と判断した場合には派生製品と既存製品の関数部行差の絶対値を集計行数に加算して新しい方を合計関数行数に加算し再利用行数には加算しない（ステップＳ１１）。ここで、合計データ部行数を派生製品と既存製品の多い方としたのは、派生製品のデータ行数が既存製品のデータ行数よりも少ないときに再利用率が１００％になることを避けるための対策である。
【００３７】
その後、データ部および関数部に対して、以下の式を用いてそれぞれの再利用率を算出する。
データ部再利用率＝（再利用データ部行数＋新旧データ部行数の小さい方）／
（再利用データ部行数＋新旧データ部行数の大きい方＋新規データ部行数）
関数部再利用率＝再利用関数部行数／派生製品の全関数部行数
【００３８】
図４は、同一の派生製品における再利用率の実測例図であり、従来方法の実測値と本発明に基づく実測値をリスト化して示している。従来方法では、モジュール単位で再利用率を測定しているので、再利用率の実測値は６１．４％になっている。これに対し、本発明では関数部とデータ部に分離して測定しているので、関数部の再利用率の実測値は９０．２％になり、データ部の再利用率の実測値は９１．７％になっている。
【００３９】
このように、本発明によれば、ソースコードの再利用率をデータ部と関数部に分離して算出することで、ソースコードの再利用率をより現実に近い値として把握することができる。これにより、従来よりも精度の高い製品検証計画の立案が可能になる。
【００４０】
なお、ソースコードの再利用率の測定精度をさらに高める方法として、たとえば図１のソースコード分解・行数算出部６の機能を強化して関数部の内部構成をさらに詳細に分解し、関数部内のデータを定義する部分と実際に処理を行う部分に細分化して関数部内のデータを定義する部分をデータ部とみなし、データ部の行数に組み入れて再利用率を求めるようにしてもよい。
【００４１】
また、ソースコード比較部７における関数部の機能を強化し、ソースコード行数以外のソースコードメトリクス（たとえば、サイクロマティック複雑度など）を併用して、ソースコードの違いの検出力を高めるようにしてもよい。
【００４２】
さらに、ソースコード比較部７の機能を強化し、データ部名や関数名を比較する時の名称の一致の検出基準を、
ａ）その名称のみ一致
ｂ）その名称とモジュール名が一致
ｃ）その名称とモジュール名およびそのモジュールが属するディレクトリ名が一致
などが任意に選択できるようにして、再利用時のモジュールのディレクトリ構成の変更に追従可能な機能を追加するようにしてもよい。
【００４３】
また、上記実施例では、製品のソフトウェア(ファームウェア)を再利用することを前提に説明したが、本発明はたとえばディジタル回路のＦＰＧＡ設計の論理記述言語(VHDL、Verilog)などにも応用展開が可能である。
【００４４】
以上説明したように、本発明によれば、ソースコード再利用率を高精度で測定できるソースコード再利用率測定装置を実現でき、ソフトウェア開発の効率化改善に有効である。
【符号の説明】
【００４５】
ＳＭ  ソースモジュール
ＳＣ  ソースコード
５  ソースコード入力部
６  ソースコード分解・行数算出部
７  ソースコード比較部
８  データ部再利用率演算部
９  関数部再利用率演算部
１０  再利用率リスト生成出力部
【図１】
2011170482.tif 000003
【図２】
2011170482.tif 000004
【図３】
2011170482.tif 000005
【図４】
2011170482.tif 000006
【図５】
2011170482.tif 000007
【図６】
2011170482.tif 000008
【図７】
2011170482.tif 000009