JP6037034B2 - ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム - Google Patents

ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム Download PDF

Info

Publication number
JP6037034B2
JP6037034B2 JP2015538996A JP2015538996A JP6037034B2 JP 6037034 B2 JP6037034 B2 JP 6037034B2 JP 2015538996 A JP2015538996 A JP 2015538996A JP 2015538996 A JP2015538996 A JP 2015538996A JP 6037034 B2 JP6037034 B2 JP 6037034B2
Authority
JP
Japan
Prior art keywords
section
register
write
specified
specifying unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015538996A
Other languages
English (en)
Other versions
JPWO2015045612A1 (ja
Inventor
美和子 長谷川
美和子 長谷川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nissan Motor Co Ltd
Original Assignee
Nissan Motor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nissan Motor Co Ltd filed Critical Nissan Motor Co Ltd
Application granted granted Critical
Publication of JP6037034B2 publication Critical patent/JP6037034B2/ja
Publication of JPWO2015045612A1 publication Critical patent/JPWO2015045612A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1737Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラムに関するものである。
従来から、処理速度等のシステム性能に影響を与えないアプリケーションプログラムの追加を可能とするアプリケーション開発装置が知られている(特許文献1参照)。特許文献1のアプリケーション開発装置は、アプリケーションプログラムの検査を行い、検査に合格しシステム性能に影響がないことが証明されたアプリケーションプログラムのみを情報処理装置内で動作させる。
特開2012−063960号公報
しかし、特許文献1は、アプリケーションプログラムの実行時におけるメモリ、処理速度などを検査する、いわゆる動的な検査であるため、実際に実行しなければ、検査することはできない。よって、アプリケーションプログラムに記述された総てのパスを漏れなく検査することは難しい。
本発明は上記課題に鑑みて成されたものであり、その目的は、コンピュータプログラムの実行を伴わない静的な手法により、コンピュータプログラムの間違い箇所を特定することができるソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラムを提供することである。
本発明の一態様に係わるソフトウェア検査装置は、検査対象となるコンピュータプログラムの中から、コンピュータシステムが起動する時に実行される処理が記述されたスタートアップ区間、コンピュータシステムが起動した後に、通常モードから通常モードよりもコンピュータシステムの消費電力が低い低消費電力モードへ移行する時に実行される処理が記述された移行区間、及び低消費電力モードから通常モードへ復帰する時に実行される処理が記述された復帰区間の各々に属するステートメントを特定し、特定されたステートメントにおいて書込が行われるレジスタを区間毎に特定する。そして、スタートアップ区間、移行区間、及び復帰区間から選ばれる2つの区間のうち一方で書込が有り、他方で書込が無いレジスタに関して、想定される間違いを検出して出力する。
図1は、実施形態に係わるソフトウェア検査装置のハードウェア構成を示すブロック図である。 図2は、CPU11の機能的構成を示すブロック図である。 図3は、実施形態に係わるソフトウェア検査装置によって実行される情報処理の流れを示すフローチャートである。 図4(a)、(b)、(c)は、ソースコード入力部21により読み込まれたソースコードD01として、C言語で記述されたコンピュータプログラムの一例を示す図である。 図5は、図2のエントリーポイント一覧D04の一例を示す表である。 図6は、図2のソフトウェア情報リストD02の一例を示す表である。 図7は、図2の対応表D03の一例を示す表である。 図8は、始点終点特定部22による特定結果の一例として、スタートアップ区間、移行区間、及び復帰区間の各々の始点及び終点に係わるステートメントにおいて直接的或いは間接的に実行される関数を示す表である。 図9は、図3のステップS03の詳細な手順の一例を示すフローチャートである。 図10は、図9に示す手順にしたがって、ステートメントを分類した結果を示す表である。 図11は、レジスタ書込特定部24による特定結果の一例を示す表である。 図12は、危険性判定データD05の一例を示す表である。 図13は、検査結果出力部26により出力される検出結果の一例を示す表である。 図14は、変形例に係わるCPU11bの機能的構成を示すブロック図である。 図15は、変形例に係わる検査結果出力部26により出力される検出結果の具体例を示す表である。
図面を参照して、実施形態を説明する。図面の記載において同一部分には同一符号を付し説明を省略する。
実施形態に係わるソフトウェア検査装置は、例えば車両に搭載されるバッテリを電源に使用した組み込み機器(コンピュータシステム)が行う処理を記述したコンピュータプログラムを検査する処理に適用することができる。
車載バッテリを電源に使用した組み込み機器の開発において、性能や機能の増強による消費電力の増加に対し、低消費電力化を図ることが強く要求される。そのため、組み込み機器が備えるマイコン(ハードウェア)には電力の消費量を少なくする機能が装備されている。また同時に、マイコンを制御するソフトウェアにおいても、通常モードから低消費電力モードへの移行制御、及び低消費電力モードから通常モードへの復帰制御を行っている。
低消費電力モードへの移行或いは低消費電力モードからの復帰時には、ソフトウェアにおいて所定の手続きを行う必要がある。具体的には、低消費電力モードへ移行する時、及び低消費電力モードから通常モードへ復帰する時の各々で、所定のレジスタや変数の設定又は再設定を実施する必要がある。ここで、必要なレジスタの設定が無かったり、レジスタに設定した値に間違いがあると、低消費電力モードへの移行或いは復帰が正しく行われない。最終的には、バッテリが枯渇したり、コンピュータプログラムがフリーズしてしまうという現象に陥る。
実施形態に係わるソフトウェア検査装置は、静的な解析手法を用いて、低消費電力モードへの移行或いは復帰時に、レジスタの設定が正しく行われているか否かを検査する装置である。
[ソフトウェア検査装置のハードウェア構成]
図1を参照して、実施形態に係わるソフトウェア検査装置のハードウェア構成を説明する。ソフトウェア検査装置のハードウェア構成として、汎用のコンピュータを用いることができる。例えば、ソフトウェア検査装置は、入出力装置12と、記憶装置14と、CPU(中央処理装置)11と、入力装置13と、表示装置15とを備える。入出力装置12は、記憶媒体から検査対象のコンピュータプログラム(ソースコードD01)を読み込む。記憶装置14は、入出力装置12で読み込んだソースコードD01、解析の中間データ、及び解析に必要なデータを格納する。CPU(中央処理装置)11は、各種演算を実行してソースコードD01を解析する。入力装置13は、ユーザが解析に必要な情報を入力するための装置である。表示装置15は、CPU11から出力される検査結果を表示する。検査結果は、入出力装置12を用いて記憶媒体に書き込むことも可能である。ソースコードD01の具体例は、図4を参照して後述する。
或いは、ソフトウェア検査装置は、クライアントサーバモデルとしても実現可能である。例えば、汎用のパーソナルコンピュータ(クライアント)をコンピュータネットワークを介してサーバに接続する。これにより、図1に示すCPU11を備えるサーバを、コンピュータネットワークを介して、入出力装置12、入力装置13、記憶装置14、或いは表示装置15に接続することができる。この場合、ソフトウェア検査装置は、主にCPU11(サーバ)により構成され、入出力装置12、入力装置13、記憶装置14、或いは表示装置15はソフトウェア検査装置に含まれない。
図2を参照して、図1のCPU11の機能的構成を説明する。CPU11を備えるコンピュータをソフトウェア検査装置として機能させるためのコンピュータプログラム(ソフトウェア検査プログラム)を、CPU11を備えるコンピュータにインストールして実行する。これにより、CPU11は、以下に示す各情報処理部として機能する。なお、ここでは、ソフトウェアによってソフトウェア検査装置を実現する例を示すが、もちろん、以下に示す各情報処理を実行するための専用のハードウェアを用意して、ソフトウェア検査装置を構成することも可能である。ソフトウェア検査プログラムを記録した記録媒体は、本発明の他の実施形態の1つである。
第1実施形態に係わるCPU11aは、ソースコード入力部21、始点終点特定部22、区間特定部23、レジスタ書込特定部24、間違い検出部25、及び検査結果出力部26として機能する。
ソースコード入力部21は、検査対象となるコンピュータプログラム(ソースコードD01)を入出力装置12或いは入力装置13から読み取り、記憶装置14に格納する。
始点終点特定部22は、検査対象となるソースコードD01の中から、スタートアップ区間、移行区間、及び復帰区間の各々の始点及び終点に係わるステートメントを特定する。「スタートアップ区間」とは、組み込み機器が起動する時に実行されるスタートアップ処理が記述された区間である。「移行区間」とは、組み込み機器が起動した後に、通常モードから低消費電力モードへ移行する時に実行される移行処理が記述された区間である。「復帰区間」とは、低消費電力モードから通常モードへ復帰する時に実行される復帰処理が記述された区間である。低消費電力モードとは、通常モードよりも組み込み機器の消費電力が低いモードである。組み込み機器が起動すると、先ず、スタートアップ処理が実行され、その後、通常モードが開始される。所定時間ユーザからの操作入力が無い等の所定の条件が満たされた場合、「移行区間」を経て、通常モードから低消費電力モードへ移行する。ユーザからの操作入力を受け付けることを含む所定の条件が満たされた場合、「復帰区間」を経て、低消費電力モードから通常モードへ復帰する。
始点終点特定部22には、ソフトウェア情報リストD02及び対応表D03が入力される。ソフトウェア情報リストD02には、移行処理、復帰処理、及びスタートアップ処理に関するソフトウェア情報が記述されている。ソフトウェア情報は、検査実行時に、入出力装置12或いは入力装置13を介してユーザにより登録される外部情報である。ソフトウェア情報リストD02は、例えば、通常モードと低消費電力モードとの区切れ目に関する情報、及び割り込み許可及び割り込み禁止を制御する命令のリストである。ソフトウェア情報リストD02の具体例は、図6を参照して後述する。
対応表D03には、ソフトウェア情報と移行区間、復帰区間、及びスタートアップ区間との関係を定義した区間対応データが記述されている。区間対応データは、検査実行前に、予め入出力装置12から入力され、記憶装置14に格納された内部情報である。始点終点特定部22は、ソフトウェア情報リストD02及び対応表D03を用いて、スタートアップ区間、移行区間、及び復帰区間の各々の始点及び終点を特定する。対応表D03及び始点及び終点を特定方法の具体例は、図6及び図7を参照して後述する。
区間特定部23は、始点終点特定部22により特定された始点及び終点に基づいて、ソースコードD01に含まれるステートメントの中から、スタートアップ区間、移行区間、及び復帰区間の各々に属するステートメントを特定する。区間特定部23は、エントリーポイント一覧D04を入出力装置12或いは入力装置13から読み取り、記憶装置14に格納する。区間特定部23は、エントリーポイント一覧D04に記述されたエントリーポイント(プログラムの開始点)に登録された関数について、各区間に属するステートメントを特定する。区間特定部23の具体的な動作例は、図9及び図10を参照して後述する。
レジスタ書込特定部24は、区間特定部23により特定されたステートメントにおいて書込が行われるレジスタを、スタートアップ区間、移行区間、及び復帰区間の各々について特定する。レジスタ書込特定部24は、レジスタのみならず、レジスタに書込が行われる箇所、及びその代入値をも特定してもよい。レジスタ書込特定部24は、ソフトウェア情報リストD02に登録された消費電力モード移行命令及び消費電力モード復帰命令に関わるレジスタ以外のレジスタの中から、書込を行っているレジスタ及びその箇所、代入値を検出することが望ましい。レジスタ書込特定部24による特定結果の具体例は、図11を参照して後述する。
間違い検出部25は、書込が行われるレジスタについて、各区間での書き込みの有無、代入値を比較し、設定漏れ及び設定値間違いの危険性を判定する。具体的には、間違い検出部25は、危険性判定データD05を用いて、レジスタ書込特定部24で特定されたレジスタに関して、想定される間違いを検出する。危険性判定データD05は、検査実行前に予め、入出力装置12或いは入力装置13から読み込まれ、記憶装置14(データ記憶部)に格納されている。危険性判定データD05は、スタートアップ区間、移行区間、及び復帰区間から選ばれる2つの区間のうち一方で書込が有り、他方で書込が無いレジスタに関して、想定される間違いを規定する。間違い検出部25による検出結果の具体例は、図13を参照して後述する。
検査結果出力部26は、レジスタ書込特定部24で特定されたレジスタ毎に、間違い検出部25により検出された間違いを出力する。検査結果出力部26は、例えば、レジスタ名や、ファイル名、行番号、関数名など、設定漏れ或いは設定値間違い箇所の特定できる情報を、区間に関連づけて出力する。検査結果出力部26は、表示装置15或いは入出力装置12に挿入された記憶媒体へ出力する。
[ソフトウェア検査装置により実行される情報処理の手順]
次に、図3〜図13を参照して、実施形態に係わるソフトウェア検査方法の一例として、図1及び図2に示すソフトウェア検査装置によって実行される情報処理の手順を説明する。
先ず、ステップS01において、ソースコード入力部21は、検査対象となるソースコードD01を例えば入出力装置12から読み込み、記憶装置14に格納する。なお、ソースコードD01は、予め入出力装置12を用いてユーザによりソフトウェア検査装置内に読み込まれ、記憶装置14に格納されていてもよい。この場合、ステップS01の処理は不要である。図4(a)、(b)、(c)は、読み込まれたソースコードD01として、C言語で記述されたコンピュータプログラムの一例を示す。検査対象となるコンピュータプログラムは、図4(a)、(b)、(c)に示す3つのファイルに跨って記述されている。図4(a)のファイル名は「file1.c」であり、図4(b)のファイル名は「file2.c」であり、図4(c)のファイル名は「file3.c」である。C言語で記述されたコンピュータプログラムの一例において、各ファイルの左端部に記載された1から始まる連続番号は、各ステートメントの「行番号」を示す。エントリーポイント一覧D04に記述された関数“reset”(図5)には、「file1.c」において、スタートアップ区間、移行区間、復帰区間が記述され、各区間において、サブルーチンコールが記述され、サブルーチンコールに従って「file2.c」或いは「file3.c」のステートメントが実行される。「file1.c」において、割り込みを許可する“EI”、 割り込みを禁止する“DI”が記述されている。
次に、ステップS02において、始点終点特定部22は、読み込まれたソースコードD01の中から、スタートアップ区間、移行区間、及び復帰区間の各々の始点及び終点に係わるステートメントを特定する。先ず、ユーザにより入力された図6に示すソフトウェア情報リストD02を読み込む。ソフトウェア情報リストD02のうち、図6に示す左側の項目(1.〜6.)は予め用意されたものであり、これに対してユーザは、図6に示す右側の欄を入力する。次に、始点終点特定部22は、記憶装置14から図7に示す対応表D03を読み込む。対応表D03は、スタートアップ区間、移行区間、及び復帰区間の各々の始点及び終点と、図6のソフトウェア情報リストD02の左側の項目(1.〜6.)との対応関係を定義している。始点終点特定部22は、ソフトウェア情報リストD02及び対応表D03に基づいて、各区間の始点及び終点に係わるステートメントで直接的或いは間接的に実行される関数を特定する。始点終点特定部22による特定結果を、図8の表に示す。図8において、「直接的に実行する関数」として“SLEEP”及び“WAKEUP”が特定された場合、「間接的に実行する関数」が特定される。なぜなら、図4の例において、関数“SLEEP”及び“WAKEUP”は、“reset”或いは“interrupt1”(間接的に実行する関数)の中で実行されるからである。
次に、ステップS03において、区間特定部23は、図5に示すエントリーポイントに登録された関数について、スタートアップ区間、移行区間、及び復帰区間の各々の始点及び終点の間に属するステートメントを特定する。ステップS03の詳細な手順を、図9を参照して説明する。図9に示す手順では、ステートメントを実行順に検査し、ソフトウェア情報リストD02及び対応表D03に基づいて、各区間の始点・終点に該当するコード、或いは関数に合致するか否かを判定し、その結果に応じて、ステートメントを該当する区間に登録する。
先ず、ステップS31で、エントリーポイントに登録された関数(例えば、“reset”)における最初のステートメント(例えば、「file1.c」の2行目)を選択する。ステップS32で、選択したステートメントを、属する区間で分類する。選択したステートメントに、スタートアップ区間(SU区間)の始点で実行される関数“reset”が記述されている場合、ステップS33で、SU区間フラグに「1」を設定する。SU区間の終点に該当するコード(file1.c、8行目の直前)である場合、ステップS34でSU区間フラグを「0」にリセットする。移行区間(SL区間)の始点に該当するコード(file1.c、11行目、file2.c、9行目)である場合、ステップS35でSL区間フラグに「1」を設定する。SL区間の終点に該当するコード(REG111=1;の直前)である場合、ステップS36でSL区間フラグを「0」にリセットする。復帰区間(WU区間)の始点に該当するコード(REG111=0;の直後)である場合、ステップS37でWU区間フラグに「1」を設定する。WU区間の終点に該当するコード(file1.c、8行目の直前)である場合、ステップS38でWU区間フラグを「0」にリセットする。
ステップS39に進み、SU区間、SL区間及びWU区間の各フラグの状態に応じて、選択されたステートメントを分類する。SU区間フラグに「1」が設定されている場合、ステップS40において、選択されたステートメントをSU区間に属するステートメントとして登録する。SL区間フラグに「1」が設定されている場合、ステップS41において、選択されたステートメントをSL区間に属するステートメントとして登録する。WU区間フラグに「1」が設定されている場合、ステップS42において、選択されたステートメントをWU区間に属するステートメントとして登録する。
ステップS43に進み、ソースコードD01の中に次のステートメントが有れば(S43でYES)、次のステートメントを選択して(S44)、上記したステップS32〜S42を繰り返し実施する。
図10は、図9に示す手順にしたがって、ステートメントを分類した結果を示す。区間特定部23は、図5に示すエントリーポイントに登録された関数“reset”及び“interrupt1”を対象にして、ステートメントを分類している。図10の右端の3つの項目は、それぞれ、SU区間、SL区間及びWU区間のフラグの状態を示す。file1cの2、3、5行目のステートメントは、SU区間フラグの「1」が設定され、SU区間に属するステートメントとして登録される。同様にして、SL区間及びWU区間に属するステートメントが登録された。なお、図10の間接関数とは、図8に示す間接関数である。
図3に戻り、ステップS04において、レジスタ書込特定部24は、ステップS03で各区間に登録されたステートメントを解析して、レジスタに書込を行っているステートメントを検出する。レジスタは、図6の「4.低消費電力モードの移行命令」及び「5.低消費電力モードの復帰命令」に関わるレジスタ(REG111)以外のレジスタである。各区間に登録されたステートメントが関数コールの場合は、その関数を解析して、同様にしてステートメントを検出する。各区間に登録されたステートメントが関数コールであり、かつ間接的に始点若しくは終点を実行する関数である場合は、その関数を解析し、始点以降もしくは終点以前のステートメントを解析する。検出されたステートメントについて、書込が行われるレジスタ名と代入値を登録する。レジスタ書込特定部24は、処理の結果を、区間毎に分類して出力する。その結果の一例を図11に示す。
ステップS05に進み、間違い検出部25は、例えば、図12に示す危険性判定データD05を用いて、書込が行われるレジスタについて、想定される間違いを検出する。
低消費電力モードへ移行する時、組み込み機器が備えるマイコン(ハードウェア)は、電力の消費量を少なくするために様々な機能(例えば、アナログ/デジタル変換機能)を無効にし、低消費電力モードから復帰する時、無効にした機能を有効にしている。このハードウェアが備える機能の無効/有効に対して、ソフトウェアにおいても必要な処理(レジスタの設定/再設定)を行う必要がある。例えば、アナログ/デジタル変換機能を無効にしても、データレジスタが入力を受け付ける状態のままではノイズがデータレジスタに入力されてしまい、再び有効になった時に、このノイズ、即ち意図しないデータをマイコンが処理してしまうことになる。よって、SL区間及びWU区間のうち一方の区間でレジスタへの書込が有り、他方でレジスタへの書込が無い場合、低消費電力モードへの移行/復帰時におけるレジスタの設定が抜けている、という間違いが想定される。
スタートアップ処理の際に初期化されたレジスタは、復帰処理の際にも同じように再初期化される必要がある。よって、SU区間及びWU区間のうち一方の区間でレジスタへの書込が有り、他方でレジスタへの書込が無い場合、レジスタの初期化或いは再初期化が抜けている、という間違いが想定される。更に、SU区間及びWU区間の両区間で書込が行われているが、異なる代入値が書き込まれている場合、レジスタの初期化或いは再初期化における設定値に間違いがあることが想定される。
以上の観点から、間違い検出部25は、例えば、図12に示す危険性判定データD05を用いて、書込が行われるレジスタについて、想定される間違いを検出する。間違い検出部25による検出結果を図13に示す。
レジスタ“REG1”は、SU区間及びSL区間で書込が行われているが、WU区間で書込が行われていない。よって、レジスタ“REG1”に関して、低消費電力モードへの移行/復帰時におけるレジスタの設定が抜けているという間違い、及びレジスタの初期化或いは再初期化が抜けている、という間違いが想定される。レジスタ“REG2”は、SL区間及びWU区間で書込が行われているが、SU区間で書込が行われていない。よって、レジスタ“REG2”に関して、レジスタの初期化或いは再初期化が抜けている、という間違いが想定される。レジスタ“REG3”は、SU区間、SL区間及びWU区間の総てで書込が行われているが、代入値が異なっている。よって、レジスタ“REG3”に関して、レジスタの初期化或いは再初期化における設定値に間違いがあることが想定される。レジスタ“REG4”は、SU区間で書込が行われているが、SL区間及びWU区間で書込が行われていない。よって、レジスタ“REG4”に関して、レジスタの初期化或いは再初期化が抜けている、という間違いが想定される。
ステップS06に進み、検査結果出力部26は、ステップS04で特定されたレジスタ毎に、ステップS05で検出された間違いを出力する。出力形式は、例えば、図13に示す表形式で構わない。
以上説明したように、本発明の実施形態によれば、以下の作用効果が得られる。
ソースコードD01の中から、SU区間、SL区間、及びWU区間の各々に属するステートメントを特定し、特定されたステートメントにおいて書込が行われるレジスタを区間毎に特定する。そして、SU区間、SL区間、及びWU区間から選ばれる2つの区間のうち一方で書込が有り、他方で書込が無いレジスタに関して、想定される間違いを検出して出力する。これにより、コンピュータプログラムを実際に実行することなく、静的な解析手法により、コンピュータプログラムの間違い箇所を特定することができる。また、静的な解析手法により、コンピュータプログラムに記述された総てのパスを漏れなく検査することができる。
システムレベルのテストでしか検出することができなかった間違いを、ソースコードレビューの段階で検出できるようになる。ソースコードの解析により、全ての処理、全ての変数、全ての処理と変数の組み合わせを網羅的に検査するため、手動でテストケースを作成するこれまでの手法に比べ、正確なテストができるようになる。また、より早い段階で不具合の検出ができるため、間違い分析工数、間違い修正工数を削減できる。
レガシーコードのような仕様書が整備されていないコードや、分散開発等により他拠点で開発されたコードなど、低消費電力モードへの移行処理及び低消費電力モードからの復帰処理に関わる情報が整備或いは管理されていないケースにおいて、ソースコードから自動的に移行処理及び復帰処理におけるレジスタ設定の間違いを検出できる効果は大きい。ソースコードの解析により、全ての処理、全ての変数、全ての処理と変数の組み合わせを網羅的に検査することで、レガシーコードの移植間違いや、分散開発されたソースコードの結合間違いを、効率よく発見できる。
ソフトウェアの複雑化や、派生開発の繰り返しが進むと、管理ミスや記述ミスにより意図しないパスが作りこまれ、必要なレジスタへの設定処理漏れや不必要なレジスタへの設定処理の混入が発生する。本実施形態によれば、静的な解析手法により、コンピュータプログラムに記述された総てのパスを漏れなく検査することができるので、意図しないパスの発生によるレジスタの設定に関する間違いを特定できる。
(変形例)
実施形態では、各区間におけるレジスタの書込の有無及び代入値の不一致に基づいて間違いを判定した。レジスタの書込が行われるために書込条件を更に考慮して間違いを判定してもよい。つまり、2つの区間で同じ値がレジスタに書込が行われているが、書込を行うために条件文が一方の区間のみで設定されている場合、間違いが想定されると判断してもよい。
図14を参照して、変形例に係わるCPU11bの機能的構成を説明する。CPU11bは、図2のCPU11aに比べて、更に、レジスタ書込特定部24により特定されたレジスタに書込が行われるために書込条件が規定されているか否かを判断し、且つ、書込条件が規定されている場合に、当該書込条件を抽出する条件抽出部27を備える点が相違する。その他の構成はCPU11aと同じであり説明を省略する。
間違い検出部25は、SU区間、SL区間、及びWU区間から選ばれる2つの区間の一方で書込条件が無く、他方で書込条件が有る場合、及び、2つの区間の両方で異なる書込条件が規定されている場合、2つの区間の一方で書込が有り、他方で書込が無いレジスタに関して想定される間違いを検出する。
レジスタへの書込が、区間内の書込条件により実行されている場合、書込条件が満たされなければ、レジスタへの書込は実行されない可能性がある。よって、この場合、レジスタへの書込が無いものと同様にして扱う。
間違い検出部25による検出結果の一例を図15に示す。図13に比べて、区間毎に「書き込み条件」の欄が追加されている。また、レジスタ“REG3”のWU区間で、書込条件を検出している。よって、間違い検出部25は、WU区間で、レジスタ“REG3”に書込が行われない場合に想定される間違い、具体的には、レジスタの初期化或いは再初期化が抜けている、という間違いを新たに検出する。
変形例によれば、書込条件の有無を更に考慮して間違いを検出するため、間違い箇所の検出精度が向上する。
上記のように、本発明の実施形態を記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
特願2013−198138号(出願日:2013年9月25日)の全内容は、ここに援用される。
14 記憶装置(データ記憶部)
21 ソースコード入力部
22 始点終点特定部
23 区間特定部
24 レジスタ書込特定部
25 間違い検出部
26 検査結果出力部
27 条件抽出部
D01 ソースコード(コンピュータプログラム)
D05 危険性判定データ

Claims (4)

  1. コンピュータシステムが行う処理を記述したコンピュータプログラムを検査するソフトウェア検査装置であって、
    検査対象となる前記コンピュータプログラムの中から、コンピュータシステムが起動する時に実行される処理が記述されたスタートアップ区間、コンピュータシステムが起動した後に、通常モードから前記通常モードよりもコンピュータシステムの消費電力が低い低消費電力モードへ移行する時に実行される処理が記述された移行区間、及び低消費電力モードから通常モードへ復帰する時に実行される処理が記述された復帰区間の各々の始点及び終点を特定する始点終点特定部と、
    前記始点終点特定部により特定された始点及び終点に基づいて、前記コンピュータプログラムに含まれるステートメントの中から、前記スタートアップ区間、前記移行区間、及び前記復帰区間の各々に属するステートメントを特定する区間特定部と、
    前記区間特定部により特定されたステートメントにおいて書込が行われるレジスタを、区間毎に特定するレジスタ書込特定部と、
    前記スタートアップ区間、前記移行区間、及び前記復帰区間から選ばれる2つの区間のうち一方で書込が有り、他方で書込が無いレジスタに関して、想定される間違いを規定する危険性判定データを格納したデータ記憶部と、
    前記データ記憶部に記憶された前記危険性判定データを用いて、前記レジスタ書込特定部で特定されたレジスタに関して、想定される間違いを検出する間違い検出部と、
    前記レジスタ書込特定部で特定されたレジスタ毎に、前記間違い検出部により検出された間違いを出力する検査結果出力部と
    を備えることを特徴とするソフトウェア検査装置。
  2. 前記レジスタ書込特定部により特定されたレジスタに書込が行われるために書込条件が規定されているか否かを判断し、且つ、書込条件が規定されている場合に、当該書込条件を抽出する条件抽出部を更に備え、
    前記間違い検出部は、前記スタートアップ区間、前記移行区間、及び前記復帰区間から選ばれる2つの区間で同じ値がレジスタに書き込まれる場合において、2つの区間の一方で書込条件が無く、他方で書込条件が有る場合、及び、2つの区間の両方で異なる書込条件が規定されている場合、2つの区間の一方で書込が有り、他方で書込が無いレジスタに関して想定される間違いを検出する
    ことを特徴とする請求項1に記載のソフトウェア検査装置。
  3. 始点終点特定部と、区間特定部と、レジスタ書込特定部と、間違い検出部と、検査結果出力部とを備えるソフトウェア検査装置を用いて、コンピュータシステムが行う処理を記述したコンピュータプログラムを検査するソフトウェア検査方法であって、
    前記始点終点特定部が、検査対象となる前記コンピュータプログラムの中から、コンピュータシステムが起動する時に実行される処理が記述されたスタートアップ区間、コンピュータシステムが起動した後に、通常モードから前記通常モードよりもコンピュータシステムの消費電力が低い低消費電力モードへ移行する時に実行される処理が記述された移行区間、及び低消費電力モードから通常モードへ復帰する時に実行される処理が記述された復帰区間の各々の始点及び終点を特定し、
    前記区間特定部が、前記始点終点特定部により特定された始点及び終点に基づいて、前記コンピュータプログラムに含まれるステートメントの中から、前記スタートアップ区間、前記移行区間、及び前記復帰区間の各々に属するステートメントを特定し、
    前記レジスタ書込特定部が、前記区間特定部により特定されたステートメントにおいて書込が行われるレジスタを、区間毎に特定し、
    前記間違い検出部が、前記スタートアップ区間、前記移行区間、及び前記復帰区間から選ばれる2つの区間のうち一方で書込が有り、他方で書込が無いレジスタに関して、想定される間違いを規定する危険性判定データを用いて、前記レジスタ書込特定部により特定されたレジスタに関して、想定される間違いを検出し、
    前記検査結果出力部が、レジスタ毎に、前記間違い検出部により検出された間違いを出力する
    ことを特徴とするソフトウェア検査方法。
  4. コンピュータシステムが行う処理を記述したコンピュータプログラムを検査するソフトウェア検査プログラムであって、
    コンピュータに、
    検査対象となる前記コンピュータプログラムの中から、コンピュータシステムが起動する時に実行される処理が記述されたスタートアップ区間、コンピュータシステムが起動した後に、通常モードから前記通常モードよりもコンピュータシステムの消費電力が低い低消費電力モードへ移行する時に実行される処理が記述された移行区間、及び低消費電力モードから通常モードへ復帰する時に実行される処理が記述された復帰区間の各々の始点及び終点を特定する機能と、
    特定された始点及び終点に基づいて、前記コンピュータプログラムに含まれるステートメントの中から、前記スタートアップ区間、前記移行区間、及び前記復帰区間の各々に属するステートメントを特定する機能と、
    特定されたステートメントにおいて書込が行われるレジスタを、区間毎に特定する機能と、
    前記スタートアップ区間、前記移行区間、及び前記復帰区間から選ばれる2つの区間のうち一方で書込が有り、他方で書込が無いレジスタに関して、想定される間違いを規定する危険性判定データを用いて、前記特定されたレジスタに関して、想定される間違いを検出する機能と、
    レジスタ毎に、検出された間違いを出力する機能と、
    を実現させることを特徴とするソフトウェア検査プログラム。
JP2015538996A 2013-09-25 2014-07-30 ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム Active JP6037034B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013198138 2013-09-25
JP2013198138 2013-09-25
PCT/JP2014/070093 WO2015045612A1 (ja) 2013-09-25 2014-07-30 ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム

Publications (2)

Publication Number Publication Date
JP6037034B2 true JP6037034B2 (ja) 2016-11-30
JPWO2015045612A1 JPWO2015045612A1 (ja) 2017-03-09

Family

ID=52742768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015538996A Active JP6037034B2 (ja) 2013-09-25 2014-07-30 ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム

Country Status (3)

Country Link
JP (1) JP6037034B2 (ja)
CN (1) CN105593825B (ja)
WO (1) WO2015045612A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11451388B2 (en) 2016-08-30 2022-09-20 Nec Corporation Data extraction system, data extraction method, registration apparatus, and program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008102627A (ja) * 2006-10-17 2008-05-01 Fujitsu Ltd 検査装置、制約条件解析支援装置、及びデバッグシステム
US20080320334A1 (en) * 2007-06-19 2008-12-25 Microsoft Corporation Transactional debugger for a transactional memory system
JP2011034250A (ja) * 2009-07-31 2011-02-17 Nec Corp 副作用解析装置、方法、及び、プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5226328B2 (ja) * 2007-03-27 2013-07-03 パナソニック株式会社 コード変換装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008102627A (ja) * 2006-10-17 2008-05-01 Fujitsu Ltd 検査装置、制約条件解析支援装置、及びデバッグシステム
US20080320334A1 (en) * 2007-06-19 2008-12-25 Microsoft Corporation Transactional debugger for a transactional memory system
JP2011034250A (ja) * 2009-07-31 2011-02-17 Nec Corp 副作用解析装置、方法、及び、プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6014037711; 大須賀俊憲、小林隆志、渥美紀寿、間瀬順一、山本晋一郎、鈴村延保、阿草清滋: 'CX-Checker:柔軟にカスタマイズ可能なC言語プログラムのコーディングチェッカ' 情報処理学会論文誌 Vol.53,No.2, 20120215, pp.590-600, 一般社団法人情報処理学会 *

Also Published As

Publication number Publication date
WO2015045612A1 (ja) 2015-04-02
CN105593825B (zh) 2018-04-13
JPWO2015045612A1 (ja) 2017-03-09
CN105593825A (zh) 2016-05-18

Similar Documents

Publication Publication Date Title
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
US20100275062A1 (en) Functional Coverage Using Combinatorial Test Design
US10229042B2 (en) Detection of meaningful changes in content
CN112149136A (zh) loT设备固件漏洞的检测方法、系统及电子设备
JP5976209B2 (ja) プログラム解析装置、プログラム解析方法およびプログラム解析プログラム
JP6037034B2 (ja) ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム
JP6107455B2 (ja) テストスケジュール決定装置、プログラム
US11422916B2 (en) Usage amount monitoring method and monitoring unit of electronic control unit for vehicle
US20090259835A1 (en) System and method for tracking and recording system configurations of electronic devices
JP5170555B2 (ja) エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム
US9165007B2 (en) Log message optimization to ignore or identify redundant log messages
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
JP7211135B2 (ja) 情報処理装置、情報処理方法及び情報処理システム
JP5962779B2 (ja) フラグアクセス不具合検査装置、フラグアクセス不具合検査方法、フラグアクセス不具合検査プログラム
US9223584B2 (en) Information processing apparatus, restoring method of BIOS setup, restoring program
JP5755861B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
US8458523B2 (en) Meta attributes in functional coverage models
JPH10293683A (ja) プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体
JP5343840B2 (ja) プログラムの解析装置及び解析方法
JP5949391B2 (ja) 実行条件検査装置、実行条件検査システム、実行条件検査方法およびプログラム
WO2016117317A1 (ja) ソフトウェア判定装置、ソフトウェア判定方法、ソフトウェア判定プログラムが格納された記録媒体、ソフトウェア解析装置、及び、マルウェア診断装置
CN104778050A (zh) 基本输入输出系统除错方法
US20190251017A1 (en) Computer system, test method, and recording medium
WO2017168748A1 (ja) 試験装置および試験プログラム
JP2018005321A (ja) 試験仕様生成装置、試験仕様生成方法及び試験仕様生成プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161017

R151 Written notification of patent or utility model registration

Ref document number: 6037034

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151