(57)【要約】【課題】ソフトウェアのテストにおいて、ソースコードの変換により、２つ以上の条件項の条件式をもつ制御構文を含むソースコードのＣ２カバレッジ相当の計測を実施可能にする。【解決手段】制御構文分解部１２３２は、２つ以上の条件項の条件式をもつ制御構文を含む変換前ソースコード２０１を、論理的に等価である、１つの条件項の条件式のみをもつ複数の制御構文に変換して変換後ソースコード２０２とし、Ｃ０カバレッジ計測ツールを用いた、Ｃ２カバレッジ相当の計測を可能とする。【選択図】図１
2015219737.tif 000002
【特許請求の範囲】
【請求項１】
条件式に複数の条件項が含まれる制御構文を取得する制御構文取得部と、
前記制御構文を、前記制御構文と論理的に等価の複数の制御構文であって、それぞれの条件式に含まれる条件項の個数が１つである複数の制御構文に変換する制御構文変換部とを有することを特徴とする情報処理装置。
【請求項２】
前記制御構文取得部は、
前記制御構文を解析して、前記制御構文の種別を判断し、前記制御構文から、前記制御構文の複数の構成要素を抽出し、
前記制御構文変換部は、
前記制御構文の種別に対応させて、前記複数の構成要素を用いて、前記複数の制御構文への変換を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、更に、
制御構文の記述言語を判別する記述言語判別部を有し、
前記制御構文取得部は、
前記記述言語判別部により判別された記述言語に対応させて前記制御構文を解析することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、更に、
前記制御構文変換部が対応している複数の変換方式の中から、いずれかの変換方式を指定する変換方式指定部を有し、
前記制御構文変換部は、
前記変換方式指定部により指定された変換方式にて、前記複数の制御構文への変換を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記制御構文取得部は、
前記制御構文から、前記複数の条件項と、前記複数の条件項を結合する条件演算子と、前記条件式が真である場合の処理を示す真文と、前記条件式が偽である場合の処理を示す偽文とを抽出し、
前記制御構文変換部は、
前記制御構文取得部により抽出された前記複数の条件項と前記条件演算子と前記真文と前記偽文とを用いて、前記複数の制御構文への変換を行うことを特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記制御構文取得部は、
前記制御構文から、前記複数の条件項と、前記複数の条件項を結合する条件演算子と、前記条件式が真である場合の処理を示す真文とを抽出し、
前記制御構文変換部は、
前記制御構文取得部により抽出された前記複数の条件項と前記条件演算子と前記真文とを用いて、前記複数の制御構文への変換を行うことを特徴とする請求項２に記載の情報処理装置。
【請求項７】
条件式に複数の条件項が含まれる制御構文を取得する制御構文取得処理と、
前記制御構文を、前記制御構文と論理的に等価の複数の制御構文であって、それぞれの条件式に含まれる条件項の個数が１つである複数の制御構文に変換する制御構文変換処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の条件項（条件項目ともいう）の条件式が含まれる制御構文を変換する技術に関する。
【背景技術】
【０００２】
ソフトウェア開発において、品質を向上させるために、ソースコードの内容に基づいたテストが実施されることが多い。
テストによるソースコードの品質向上は、実施するテストの内容がどの程度障害を検出できるものか、というテストの品質に依存する。
ソースコードのテストの品質の定量的な評価の手段として、テストの網羅度（以降、カバレッジとする）を計測することが有効である。
【０００３】
カバレッジは、一般的に、ソースコードのテストにおいて、どのような基準でテストを実行したかを示す。
Ｃ０カバレッジ（命令網羅）、Ｃ１カバレッジ（分岐網羅）、Ｃ２カバレッジ（条件網羅）というカバレッジ基準が多く用いられており、Ｃ２、Ｃ１、Ｃ０の順に細かい粒度でテストの網羅度を測定する。
【０００４】
しかし、カバレッジを計測するツールの現状において、Ｃ２カバレッジに対応しているツールはＣ０カバレッジ計測ツールやＣ１カバレッジ計測ツールに比べて少なく、そのツールが対応するプログラミング言語も限られている。
このため、実際のソフトウェア開発では対応言語や費用の制約上からＣ２カバレッジの計測ができない場合がある。
【０００５】
そのため、Ｃ２カバレッジ相当の計測をＣ０カバレッジ計測ツールで計測することができれば、テストの品質をより容易に、より安価に測ることができ、ソフトウェアの品質向上に有効である。
【０００６】
Ｃ２カバレッジ計測ツールでは、ソースコードに含まれる条件文において条件式を構成する条件項の各項について、プログラムを実行した際に真と評価されたか、偽と評価されたかを計測することで、ソースコードに含まれる条件項の網羅度をチェックする（例えば、特許文献１）。
一方、Ｃ０カバレッジ計測ツールは、ソースコードに含まれる実行文について、プログラムを実行した際に実行されたかどうかを計測することでソースコードに含まれる実行文の網羅度をチェックする。
このように、Ｃ０カバレッジとＣ２カバレッジでは計測箇所が異なるためＣ０カバレッジ計測ツールでＣ２カバレッジを計測することはできない。
【０００７】
特許文献１に開示される方法によると、ソースプログラム中の条件文を走査し、条件文の行番号とすべての条件項目を登録することが可能である。
また、条件文の個々の条件項目を通過条件項目として登録し、実行結果から双方の条件項目を比較するテスト結果照合による網羅度チェックが可能である。
【０００８】
特許文献２に開示される方法によると、ソフトウェアのモデル検査において、ソースコードを異なる複数の変換ルールにより、検証ツールの入力言語で記述された検査コードに変換することが可能である。
【０００９】
特許文献３に開示される方法によると、ユーザが指定した条件を単純な条件に分解し、得られた論理的表現による単純な条件の組み合わせを用いて機械的にプログラムチェックリスト（ＰＣＬ）を作成することが可能である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開昭６３−２９２３４１号公報
【特許文献２】特開２０１２−０５９０２６号公報
【特許文献３】特開２００１−２８２５７９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
Ｃ２カバレッジでは、条件文の各項の真偽評価が計測対象となることに対し、Ｃ０カバレッジでは、実行文の実行有無が計測対象となる。
Ｃ０カバレッジ計測ツールでは、条件分岐後の実行文が実行されたかどうかは計測できるが、条件式が複数の条件項から構成されている場合に各条件項がどのような真偽の組み合わせで分岐したかを計測できない。
つまり、Ｃ０カバレッジ計測ツールで、Ｃ２カバレッジ相当の計測ができない。
しかし、条件式が１つの条件項（単項）から構成されている場合、条件分岐後の実行有無を計測すれば、条件式の条件項の真偽評価が真または偽のどちらであったかを特定することができる。
そこで、２つ以上の条件項の条件式をもつ制御構文を含むソースコードを、論理的に等価である、１つの条件項の条件式のみをもつ複数の制御構文に分解することができれば、Ｃ０カバレッジ計測ツールでＣ２カバレッジ相当の計測ができる。
【００１２】
特許文献１では、ソースコード中の条件項目を１００％実行したか否かを判定可能である。
しかし、ソースコードを変換して、ソースコードのカバレッジを計測するという方策は実施されておらず、２つ以上の条件項の条件式をもつ制御構文を含むソースコードを変換して、Ｃ０カバレッジ計測ツールで計測することが実現できていなかった。
【００１３】
特許文献２では、ソースコードを複数の変換ルールにより、モデル検査における検査コードへ変換を行うことが可能である。
しかし、ソースコードの変換によりＣ２カバレッジ相当の計測をするという方策は実施されていない。
また、２つ以上の条件項の条件式をもつ制御構文を含むソースコードを、論理的に等価である、１つの条件項の条件式のみをもつ複数の制御構文に変換する方策は実施されていない。
２つ以上の条件項の条件式をもつ制御構文を含むソースコードのＣ２カバレッジ相当の計測を、Ｃ０カバレッジ計測ツールで計測することが実現できていなかった。
【００１４】
特許文献３では、プログラムチェックリスト（ＰＣＬ）作成より、ソースコードの関数を実行する際の入力値の組合せの支援が可能である。
しかし、ソースコードの関数の内部構造に関するカバレッジの計測については支援しておらず、ソースコードの変換によるＣ２カバレッジ相当の計測は実現できていなかった。
【００１５】
この発明は、上記の事情に鑑みたものであり、条件式に複数の条件項が含まれる制御構文を変換して、Ｃ２カバレッジ相当の計測をＣ０カバレッジ計測ツールで計測可能とすることを主な目的とする。
【課題を解決するための手段】
【００１６】
本発明に係る情報処理装置は、
条件式に複数の条件項が含まれる制御構文を取得する制御構文取得部と、
前記制御構文を、前記制御構文と論理的に等価の複数の制御構文であって、それぞれの条件式に含まれる条件項の個数が１つである複数の制御構文に変換する制御構文変換部とを有することを特徴とする。
【発明の効果】
【００１７】
本発明では、条件式に複数の条件項が含まれる制御構文をそれぞれの条件式に含まれる条件項の個数が１つである複数の制御構文に変換するため、Ｃ２カバレッジ相当の計測をＣ０カバレッジ計測ツールで計測可能とすることが可能である。
【図面の簡単な説明】
【００１８】
【図１】実施の形態１に係るソースコード変換装置の概要を示すブロック構成図である。
【図２】実施の形態１に係るソースコード変換の処理フローの一例を示す図である。
【図３】実施の形態１に係るソースコード変換の処理の一例を示す図である。
【図４】実施の形態１に係るＣ２カバレッジの条件の組合せを示す図である。
【図５】実施の形態１に係る条件の組合せと変換後ソースコードの命令文との対応を示す図である。
【図６】実施の形態２に係るソースコード変換装置の概要を示すブロック構成図である。
【図７】実施の形態２に係るソースコード変換の処理フローの一例を示す図である。
【図８】実施の形態３に係るソースコード変換装置の概要を示すブロック構成図である。
【図９】実施の形態３に係るソースコード変換の処理フローの一例を示す図である。
【図１０】実施の形態３に係るソースコード変換の処理の一例を示す図である。
【図１１】実施の形態３に係るＣ２カバレッジの条件の組合せを示す図である。
【図１２】実施の形態３に係る条件の組合せと変換後ソースコードの条件分岐の処理との対応を示す図である。
【図１３】実施の形態１〜３に係るソフトウェア変換装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１９】
実施の形態１．
本実施の形態では、２つ以上の条件項の条件式をもつ制御構文を含むソースコードのＣ２カバレッジ（条件網羅）相当の計測を可能とする、ソースコード変換装置を説明する。
より具体的には、本実施の形態では、２つ以上の条件項の条件式をもつ制御構文を含むソースコードを、論理的に等価である、１つの条件項の条件項の条件式のみをもつ複数の制御構文に分解して、Ｃ２カバレッジ相当の計測をＣ０カバレッジ計測ツールで計測可能とするソースコード変換装置を説明する。
【００２０】
図１は、実施の形態１に係るソースコード変換装置１のブロック構成例を示す。
以降、図１を用いて、実施の形態１におけるソースコード変換装置１を説明する。
【００２１】
ソースコード変換装置１は、２つ以上の条件項の条件式をもつ制御構文を含むソースコードに対して変換ルールを適用し、論理的に等価である１つの条件項の条件式のみをもつ複数の制御構文に分解する。
【００２２】
ソースコード変換装置１は、入力部１１と、ソースコード変換処理部１２と、出力部１３とを有する。
【００２３】
入力部１１は、変換前ソースコード２０１を入力する変換前ソースコード入力部１１１を有する。
【００２４】
ソースコード変換処理部１２は、言語表現規格記憶部１２１と、変換ルール記憶部１２２と、変換部１２３とを有する。
【００２５】
出力部１３は、変換後ソースコード２０２を表示する変換後ソースコード表示部１３１を有する。
【００２６】
言語表現規格記憶部１２１は、条件式を内部にもつｉｆやｆｏｒなどの制御構文の種別と、条件式の位置及び構文と、条件の真偽により実行される処理位置の情報をもつ言語表現規格３０１を記憶する。
言語表現規格３０１は、あるプログラミング言語の構文規則に相当する情報をもっている。
例えば、Ｃ言語では、「＆＆」や「｜｜」が論理積や論理和の条件演算子を意味する言語表現規格の一つである。
また、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）言語（以降、ＶＢ言語とする）では、「Ａｎｄ」や「Ｏｒ」が論理積や論理和の条件演算子を意味する言語表現規格の一つである。
このように、プログラミング言語ごとに、言語表現規格が異なる。
【００２７】
変換ルール記憶部１２２は、変換ルール４０１を記憶する。
変換ルール４０１は、２つ以上の条件項の条件式をもつ制御構文を含む変換前ソースコード２０１を、論理的に等価である、１つの条件項の条件式のみをもつ複数の制御構文に分解するための、変換前後の制御構文、条件式、条件の真偽により実行される処理内容の対応を示した情報である。
【００２８】
変換部１２３は、言語表現規格抽出部１２３１と、制御構文分解部１２３２とを有する。
【００２９】
言語表現規格抽出部１２３１は、言語表現規格記憶部１２１より取り出した言語表現規格３０１をもとに、入力された変換前ソースコード２０１から、変換対象となる制御構文を識別し、制御構文の種別を判断し、制御構文の構成要素である、条件式の内容と、条件の真偽により実行される処理内容（真文、偽文）を抽出する。
言語表現規格抽出部１２３１は、制御構文取得部の例に相当する。
【００３０】
制御構文分解部１２３２は、変換ルール記憶部１２２から取り出した変換ルール４０１を、言語表現規格抽出部１２３１で抽出したソースコードに適用し、２つ以上の条件項の条件式をもつ制御構文を、論理的に等価である、１つの条件項の条件式のみをもつ複数の制御構文に変換する。
制御構文分解部１２３２は、制御構文変換部の例に相当する。
【００３１】
図２に、実施の形態１におけるソースコード変換の処理フローの一例を示す。
以降、図２を用いて、実施の形態１におけるソースコード変換の処理フローの一例を説明する。
【００３２】
ソースコード変換の処理は、変換前ソースコード入力ステップ（Ｓ１０１）と、言語表現規格取出しステップ（Ｓ１０２）と、言語表現規格抽出ステップ（Ｓ１０３）と、変換ルール取出しステップ（Ｓ１０４）と、制御構文分解ステップ（Ｓ１０５）と、変換後ソースコード出力ステップ（Ｓ１０６）とからなる。
【００３３】
変換前ソースコード入力ステップ（Ｓ１０１）において、変換前ソースコード入力部１１１により、変換前ソースコード２０１をソースコード変換装置１に入力する。
【００３４】
言語表現規格取出しステップ（Ｓ１０２）において、言語表現規格抽出部１２３１は、言語表現規格記憶部１２１から言語表現規格３０１を取出す。
言語表現規格３０１は、言語表現規格記憶部１２１に、ある言語の言語表現規格が記憶されているものとする。
例えば、言語表現規格３０１には、Ｃ言語の構文規則に相当する情報が記述されているとする。
【００３５】
言語表現規格抽出ステップ（Ｓ１０３）において、言語表現規格抽出部１２３１は、入力された変換前ソースコード２０１から、言語表現規格取出しステップ（Ｓ１０２）にて取出した言語表現規格３０１に合致する制御構文を識別し、制御構文の種別と、条件式の内容と、条件の真偽により実行される処理内容を抽出する。
【００３６】
変換ルール取出しステップ（Ｓ１０４）において、制御構文分解部１２３２は、変換ルール記憶部１２２から変換ルール４０１を取出す。
変換ルール４０１の例は、後述する。
【００３７】
制御構文分解ステップ（Ｓ１０５）において、制御構文分解部１２３２は、言語表現規格抽出ステップ（Ｓ１０３）において抽出したソースコードに対して、変換ルール取出しステップにて取出した変換ルールを適用し、２つ以上の条件項の条件式をもつ制御構文を含む変換前ソースコード２０１を、論理的に等価である、１つの条件項の条件式のみをもつ複数の制御構文に分解する。
【００３８】
変換後ソースコード出力ステップ（Ｓ１０６）において、変換後ソースコード表示部１３１が、制御構文分解ステップ（Ｓ１０５）において変換したソースコードを表示する。
【００３９】
図３に、実施の形態１におけるソースコード変換の処理の一例を示す。
以降、図３を用いて、実施の形態１におけるソースコード変換の処理の一例を説明する。
【００４０】
本例で用いる、変換前ソースコード２０１は、Ｃ言語で記述し、制御構文において２項以上の分岐条件をもつソースコードとする。
Ｃ言語で分岐条件をもつ制御構文は、「ｉｆ−ｅｌｓｅ」、「ｉｆ」、「ｗｈｉｌｅ」、「ｆｏｒ」、「ｄｏ−ｗｈｉｌｅ」の５種類である。
２項の条件項の条件式で用いる条件演算子は、「＆＆」、「｜｜」の２種類である。
【００４１】
変換前ソースコード例は、制御構文の種別「ｉｆ−ｅｌｓｅ」、論理積を意味する条件演算子「＆＆」を含む２項からなる条件式を有し、条件式の評価結果が真であれば処理「ｆ１（）」を実施し、偽であれば処理「ｆ２（）」を実施するものである。
【００４２】
変換前ソースコード例に対して、言語表現規格記憶部１２１からＣ言語の言語表現規格３０１を取出し、言語表現規格の情報より、言語表現規格抽出部１２３１にて、制御構文の種別と条件演算子と条件の左項と条件の右項と真の処理（真文）と偽の処理（偽文）を抽出する。
本例では、制御構文の種別は「ｉｆ−ｅｌｓｅ」、条件演算子は「＆＆」、条件の左項は「Ａ」、条件の右項は「Ｂ」、真の処理は「ｆ１（）」、偽の処理は「ｆ２（）」を抽出する。
言語表現規格抽出部１２３１において抽出した情報は、例えば、構文木の形式で保持される。
抽出したソースコードの形式は、構文木に限らず、任意の形式でもよい。
【００４３】
言語表現規格抽出部１２３１において抽出したソースコードに対して、変換ルール記憶部１２２から変換ルール４０１を取出し、制御構文分解部１２３２により、変換ルール４０１を適用して、１つの条件項の条件式のみをもつ複数の制御構文に分解する。
本例では、制御構文の種別が「ｉｆ−ｅｌｓｅ」、条件演算子が「＆＆」の変換ルール４０１を適用する。
変換ルール４０１の適用により、条件左項「Ａ」と条件右項「Ｂ」の２項の論理積からなる条件式を有する制御構文を、条件式に単項「Ａ」を有する制御構文と、条件式に単項「Ｂ」を有する制御構文の２つに分解する。
この変換ルール４０１に対して、言語表現規格抽出部１２３１において抽出した、条件左項「Ａ」、条件右項「Ｂ」、真の処理「ｆ１（）」、偽の処理「ｆ２（）」をあてはめて、ソースコードを変換する。
変換後ソースコード例が変換した結果である。
真の処理、偽の処理が、一つの処理である必要はなく、例えばｆ（ａ）；，ｆ（ｂ）；といった連続した複数の処理であってもよい。
【００４４】
３項以上の条件式をもつ制御構文を含む変換前ソースコードの場合は、演算子の評価順序の優先順位を考慮した上で２項とみなし、上述の処理を再帰的に繰り返して適用する。
例えば、（Ａ＆＆Ｂ）｜｜Ｃの場合、評価順序について優先順位の高いＡ＆＆Ｂを仮に「Ｘ」とし、Ｘ｜｜Ｃとする。
Ｘ｜｜Ｃについて、同様に、１つの条件項の条件式のみをもつ複数の制御構文に分解し、続いて、Ｘについて、同様に分解する。
【００４５】
図４に、実施の形態１におけるＣ２カバレッジの条件の組合せを示す。
図５に、実施の形態１における図４の条件の組合せと変換後ソースコードの命令文との対応を示す。
以降、図３、図４、図５を用いて、実施の形態１における変換前ソースコードのＣ２カバレッジと変換後のソースコードのＣ０カバレッジについて説明する。
【００４６】
図３に示す変換前ソースコード例について、Ｃ２カバレッジの条件の組合せは、図４に示すとおり３種類である。
１種類目は、「Ａ」が真で「Ｂ」が真のＮｏ．１のパターンである。
２種類目は、「Ａ」が真で「Ｂ」が偽のＮｏ．２のパターンである。
３種類目は、「Ａ」が偽で「Ｂ」は特定しない（以降、Ｎ／Ａとする）のＮｏ．３のパターンである。
Ｎｏ．３のパターンについて、Ｃ言語では、Ａ＆＆Ｂの場合、「Ａ」が偽であれば「Ｂ」は評価しない特性を持つため、「Ｂ」は真または偽を特定できない。
この３種類により、Ｃ２カバレッジが１００％となる。
【００４７】
図３の変換後ソースコード例において、図４のＮｏ．１のパターンの「Ａ」が真で「Ｂ」が真に相当する経路は、命令行（ａ）を必ず実行し、Ｎｏ．１に相当しない経路は命令行（ａ）を必ず実行しない。
図４のＮｏ．２のパターンの「Ａ」が真で「Ｂ」が偽に相当する経路は、命令行（ｂ）を必ず実行し、Ｎｏ．２に相当しない経路は命令行（ｂ）を必ず実行しない。
図４のＮｏ．３のパターンの「Ａ」が偽で「Ｂ」は特定しない（以降、Ｎ／Ａとする）に相当する経路は、命令行（ｃ）を必ず実行し、Ｎｏ．３に相当しない経路は命令行（ｃ）を必ず実行しない。
Ｎｏ．３について、「Ａ」が偽の場合は、「Ｂ」の条件分岐は通過しないため、「Ｂ」は真または偽のどちらでも良い。
この３種類により、Ｃ０カバレッジが１００％となる。
つまり、図４に示す「Ａ」と「Ｂ」の条件の組合せは、図５に示す「Ａ」と「Ｂ」の条件の組合せと等しい。
【００４８】
図３の変換前ソースコード例と変換後ソースコード例は、論理的に等価である。
また、変換前ソースコード例のＣ２カバレッジが１００％になるための条件の組合せと、変換後ソースコード例のＣ０カバレッジが１００％になるための命令文実行時の条件の組合せは等しく、変換前ソースコード例のＣ２カバレッジ相当の計測結果を、変換後ソースコード例にてＣ０カバレッジ計測ツールで得ることができる。
【００４９】
実施の形態２．
図６は、実施の形態２に係るソースコード変換装置１のブロック構成例を示す。
以降、図６を用いて、実施の形態２におけるソースコード変換装置１を説明する。
【００５０】
上記の実施の形態１では、言語表現規格を特定していたが、本実施の形態では、言語表現規格の指定により、指定した言語表現規格に対応したソースコード変換が可能となる。
つまり、実施の形態１に係るソースコード変換装置１は、固定的に例えばＣ言語にのみ対応していたが、本実施の形態に係るソースコード変換装置１は複数種類の言語に対応しており、変換対象のソースコードの記述言語を指定することにより、当該記述言語に応じたソースコードの変換を行うことができる。
【００５１】
図６に示すように、本実施の形態に係るソースコード変換装置１は、実施の形態１の構成に加えて、言語表現規格指定部１４を有する。
言語表現規格指定部１４は、複数のプログラミング言語（Ｃ言語、ＶＢ言語等）の言語表現規格の中から、変換前ソースコード２０１に対応する言語表現規格を指定する。
例えば、変換前ソースコード２０１がＶＢ言語で記述されていれば、言語表現規格指定部１４は、変換前ソースコード２０１の記述言語がＶＢ言語であると判別し、ＶＢ言語の言語表現規格を指定する。
言語表現規格指定部１４は、記述言語判別部の例に相当する。
【００５２】
図７に、実施の形態２におけるソースコード変換の処理フローの一例を示す。
以降、図７を用いて、実施の形態２におけるソースコード変換の処理フローの一例を説明する。
【００５３】
実施の形態２における処理は、図２に示した実施の形態１の処理に対し、言語表現規格指定ステップ（Ｓ２０１）を追加した処理である。
【００５４】
言語表現規格指定ステップ（Ｓ２０１）では、言語表現規格指定部１４が、変換前ソースコード２０１の記述言語を判別し、言語表現規格記憶部１２１に、変換前ソースコード２０１の言語表現規格３０１を格納する。
【００５５】
実施の形態１では、特定の言語表現規格のみソースコード変換が可能であったが、実施の形態２では、複数の言語表現規格の中から変換前ソースコードの言語表現規格を指定することにより、複数のプログラミング言語に対応するソースコード変換が可能となる。
【００５６】
実施の形態３．
図８に、実施の形態３に係るソースコード変換装置１のブロック構成例を示す。
以降、図８を用いて、実施の形態３におけるソースコード変換装置１を説明する。
【００５７】
上記の実施の形態１では、変換ルールを特定していたが、変換ルールの指定により、例えば、Ｃ０カバレッジではなく、Ｃ１カバレッジに対応したソースコード変換が可能となる。
つまり、実施の形態１に係るソースコード変換装置１は、固定的に例えばＣ０カバレッジにのみ対応していたが、本実施の形態では、制御構文分解部１２３２が変換方式としてＣ０カバレッジに加えてＣ１カバレッジにも対応していれば、変換方式としてＣ１カバレッジを指定することにより、Ｃ１カバレッジ用のソースコードの変換を行うことができる。
【００５８】
図８において、ソースコード変換装置１は、実施の形態１の構成に加えて、変換ルール指定部１５を有する。
変換ルール指定部１５は、例えば、Ｃ０カバレッジやＣ１カバレッジなどの変換ルールを指定する。
変換ルール指定部１５は、変換方式指定部の例に相当する。
【００５９】
図９に、実施の形態３におけるソースコード変換の処理フローの一例を示す。
以降、図９を用いて、実施の形態３におけるソースコード変換の処理フローの一例を説明する。
【００６０】
実施の形態３における処理は、図２に示した実施の形態１の処理に対し、変換ルール指定ステップ（Ｓ３０１）が追加された処理である。
【００６１】
変換ルール指定ステップ（Ｓ３０１）では、変換ルール指定部１５が、変換ルール記憶部１２２に指定された変換ルール４０１を格納する。
【００６２】
図１０に、実施の形態３におけるソースコード変換の処理の一例を示す。
以降、図１０を用いて、実施の形態３におけるソースコード変換の処理の一例を説明する。
【００６３】
変換前ソースコード例は、制御構文の種別「ｉｆ」、条件演算子「＆＆」を含む２項の条件項からなる条件式を有し、条件式の評価結果が真であれば処理「ｆ１（）」を実施するものである。
【００６４】
変換前ソースコード例に対して、言語表現規格記憶部１２１からＣ言語の言語表現規格３０１を取出し、言語表現規格３０１の情報より、言語表現規格抽出部１２３１にて、制御構文の種別と条件演算子と条件の左項と条件の右項と真の処理と偽の処理を抽出する。
本例では、制御構文の種別は「ｉｆ−ｅｌｓｅ」、条件演算子は「＆＆」、条件の左項は「Ａ」、条件の右項は「Ｂ」、真の処理は「ｆ１（）」を抽出する。
【００６５】
言語表現規格抽出部１２３１において抽出したソースコードに対して、変換ルール記憶部１２２から変換ルール４０１を取出し、制御構文分解部１２３２により、変換ルール４０１を適用して、１つの条件項の条件式のみをもつ複数の制御構文に分解する。
本例では、制御構文の種別が「ｉｆ」、条件演算子が「＆＆」の変換ルール（Ｃ１カバレッジに対応した変換ルール）を適用する。
変換ルール４０１の適用により、条件左項「Ａ」と条件右項「Ｂ」の２項の論理積からなる条件式を有する制御構文を、条件式に単項「Ａ」を有する制御構文と条件式に単項「Ｂ」を有する制御構文の２つに分解する。
この変換ルール４０１に対して、言語表現規格抽出部１２３１において抽出した、条件左項「Ａ」、条件右項「Ｂ」、真の処理「ｆ１（）」をあてはめて、ソースコードを変換する。
変換後ソースコード例が変換した結果である。
【００６６】
図１１に、実施の形態３におけるＣ２カバレッジの条件の組合せを示す。
図１２に、実施の形態３における図１１の条件の組合せと変換後ソースコードの条件分岐の処理との対応を示す。
以降、図１０、図１１、図１２を用いて、実施の形態３における変換前ソースコードのＣ２カバレッジと変換後のソースコードのＣ１カバレッジについて説明する。
【００６７】
図１０に示す変換前ソースコード例について、Ｃ２カバレッジが１００％になるための処理経路パターンは、図１１に示すとおり３種類である。
１種類目は、「Ａ」が真で「Ｂ」が真のＮｏ．１のパターンである。
２種類目は、「Ａ」が真で「Ｂ」が偽のＮｏ．２のパターンである。
３種類目は、「Ａ」が偽で「Ｂ」がＮ／ＡのＮｏ．３のパターンである。
Ｎｏ．３のパターンについて、Ｃ言語では、Ａ＆＆Ｂの場合、「Ａ」が偽であれば「Ｂ」は評価しない特性を持つため、「Ｂ」は真または偽を特定できない。
【００６８】
図１０の変換後ソースコード例は、図１１のＮｏ．１のパターンの「Ａ」が真で「Ｂ」が真に相当する経路は、ｉｆ（Ａ）の条件分岐の「Ａ」が真で、ｉｆ（Ｂ）の条件分岐の「Ｂ」が真の処理を必ず実行し、Ｎｏ．１に相当しない経路は前記の経路を必ず実行しない。
図１１のＮｏ．２のパターンの「Ａ」が真で「Ｂ」が偽に相当する経路は、ｉｆ（Ａ）の条件分岐の「Ａ」が真で、ｉｆ（Ｂ）の条件分岐の「Ｂ」が偽の処理を必ず実行し、Ｎｏ．２に相当しない経路は前記の経路を必ず実行しない。
図１１のＮｏ．３のパターンの「Ａ」が真で「Ｂ」は特定しない（以降、Ｎ／Ａとする）に相当する経路は、ｉｆ（Ａ）の条件分岐の「Ａ」が偽の処理を必ず実行し、Ｎｏ．３に相当しない経路は前記の経路を必ず実行しない。
この３種類により、Ｃ１カバレッジが１００％となる。
つまり、図１１に示す「Ａ」と「Ｂ」の条件の組合せは、図１２に示す「Ａ」と「Ｂ」の条件の組合せと等しい。
【００６９】
図１０の変換前ソースコード例と変換後ソースコード例は、論理的に等価である。
また、変換前ソースコード例のＣ２カバレッジが１００％になるための条件の組合せと、変換後ソースコード例のＣ１カバレッジが１００％になるための条件の組合せは等しく、変換後ソースコード例で変換前ソースコード例のＣ２カバレッジ相当の計測結果を得ることができる。
【００７０】
実施の形態１では、特定の変換ルールのみのソースコード変換が可能であったが、実施の形態３では、変換ルールを指定することにより、複数の変換ルールに対応するソースコード変換が可能となる。
【００７１】
以上に説明したように、実施の形態１及び２によれば、２つ以上の条件項の条件式をもつ制御構文を含むソースコードを、論理的に等価である、１つの条件項の条件式のみをもつ複数の制御構文に分解することで、Ｃ０カバレッジ計測ツールにてＣ２カバレッジ相当の計測が可能となる。
また、実施の形態３によれば、Ｃ０カバレッジ計測ツール以外でもＣ２カバレッジ相当の計測が可能となる。
【００７２】
さらに、言語表現規格を指定することにより、複数のプログラミング言語に対して、ソースコード変換が可能となる。
【００７３】
また、変換ルールを指定することにより、複数の変換ルールに対して、ソースコード変換が可能となる。
【００７４】
最後に、実施の形態１〜３に示したソースコード変換装置１のハードウェア構成例を図１３を参照して説明する。
ソースコード変換装置１はコンピュータであり、ソースコード変換装置１の各要素をプログラムで実現することができる。
ソースコード変換装置１のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００７５】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
言語表現規格記憶部１２１及び変換ルール記憶部１２２は、外部記憶装置９０２又は主記憶装置９０３で実現される。
通信装置９０４は、例えばＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
【００７６】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図１に示す「〜部」（但し、言語表現規格記憶部１２１及び変換ルール記憶部１２２を除く、以下も同様）として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図１に示す「〜部」の機能を実現するプログラムを実行する。
また、実施の形態１〜３の説明において、「〜の判断」、「〜の判定」、「〜の判別」、「〜の抽出」、「〜の分解」、「〜の変換」、「〜の指定」、「〜の選択」、「〜の生成」、「〜の解析」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
【００７７】
なお、図１３の構成は、あくまでもソースコード変換装置１のハードウェア構成の一例を示すものであり、ソースコード変換装置１のハードウェア構成は図１３に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００７８】
１  ソースコード変換装置、１１  入力部、１２  ソースコード変換処理部、１３  出力部、１４  言語表現規格指定部、１５  変換ルール指定部、１１１  変換前ソースコード入力部、１２１  言語表現規格記憶部、１２２  変換ルール記憶部、１２３  変換部、１３１  変換後ソースコード表示部、２０１  変換前ソースコード、２０２  変換後ソースコード、３０１  言語表現規格、４０１  変換ルール、１２３１  言語表現規格抽出部、１２３２  制御構文分解部。
【図１】
2015219737.tif 000003
【図２】
2015219737.tif 000004
【図３】
2015219737.tif 000005
【図４】
2015219737.tif 000006
【図５】
2015219737.tif 000007
【図６】
2015219737.tif 000008
【図７】
2015219737.tif 000009
【図８】
2015219737.tif 000010
【図９】
2015219737.tif 000011
【図１０】
2015219737.tif 000012
【図１１】
2015219737.tif 000013
【図１２】
2015219737.tif 000014
【図１３】
2015219737.tif 000015