JP6369269B2 - 検証支援装置、検証支援方法およびコンピュータプログラム - Google Patents

検証支援装置、検証支援方法およびコンピュータプログラム Download PDF

Info

Publication number
JP6369269B2
JP6369269B2 JP2014202868A JP2014202868A JP6369269B2 JP 6369269 B2 JP6369269 B2 JP 6369269B2 JP 2014202868 A JP2014202868 A JP 2014202868A JP 2014202868 A JP2014202868 A JP 2014202868A JP 6369269 B2 JP6369269 B2 JP 6369269B2
Authority
JP
Japan
Prior art keywords
group
information
defect candidate
groups
defect
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
JP2014202868A
Other languages
English (en)
Other versions
JP2016071774A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2014202868A priority Critical patent/JP6369269B2/ja
Publication of JP2016071774A publication Critical patent/JP2016071774A/ja
Application granted granted Critical
Publication of JP6369269B2 publication Critical patent/JP6369269B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、開発中のコンピュータプログラム(ソフトウェア)を検査する技術に関する。
近年のソフトウェア(コンピュータプログラム)開発において、開発規模の拡大により、ソフトウェア(ソースプログラム)におけるソースコードの論理的な誤り(不具合)を摘出する作業は多大な手間と時間を要するようになってきている。このため、その摘出作業を補助するために、ソフトウェアを実行せずにソースコードを解析することによって、ソースコードの不具合を指摘するツール(以下、静的解析ツールとも記載する)が開発されている。そのようなツールは、例えば、検査対象のソースプログラムのソースコードが入力すると、当該ツール(システム)内部で独自のプログラムフローを構築し、バグやセキュリティ脆弱性について検査し、検査結果を出力する。
このような静的解析ツールを利用することにより、ソフトウェアの開発時間の短縮化を図ることができる。しかしながら、汎用の静的解析ツールは、検査対象のソースプログラムにおいて、実際には不具合が発生しないのに不具合が発生する虞があるとの指摘(検査結果)を数多く出力してしまう。このため、プログラム開発者は、その指摘(検査結果)の検証(確認)に無用な時間を取られる場合がある。
このようなプログラム開発者の負担を軽減するために、例えば、特許文献1には、次のような技術が開示されている。その技術とは、不具合発生の虞があると静的解析ツールにより指摘(判断)されたプログラム部分の位置情報や種別情報に基づいて、不具合を指摘された複数のプログラム部分をグループ分けする技術である。また、特許文献2には、ソースコードの構文情報を基に、不具合を指摘された複数のプログラム部分間の類似度を算出し、類似度の高いプログラム部分の対(ペア)を提示する技術が開示されている。
特開2012−248050号公報 特許第5125938号公報
特許文献1に開示されている技術では、不具合を指摘されたプログラム部分がグループ分けされた状態で提示される。そのグループ分けの判断基準となる情報は、プログラム部分の位置情報や種別情報である。これら情報は不具合が発生するか否かの検証に役立つ情報ではないことから、不具合を指摘されたプログラム部分がグループ分けされた状態で提示されても、それらプログラム部分の検証作業の時間短縮化を図ることは難しい。
また、特許文献2の技術では、類似度の高いプログラム部分の対が提示されるが、それら対のうちの一方が、検証により不具合が発生しない正常なプログラム部分であると判断されても、他方も不具合が発生しないとは言い切れない。このため、対を成すプログラム部分の両方共に検証する必要があり、特許文献2に開示されている技術も、検証作業の時間短縮化を図ることは難しい。
本発明は上記課題を解決するために考え出された。すなわち、本発明の主な目的は、静的解析ツールによる検査結果を検証する作業に要する時間を短縮化する技術を提供することにある。
上記目的を達成するために、本発明の検証支援装置は、
コンピュータにより実行される複数の処理のそれぞれの処理手順を表す複数のソースコード行が配列されている検査済みのソースプログラムに付加されている検査結果情報に基づいて、前記検査済みのソースプログラムに従って実行可能な複数の前記処理のうち、不具合が発生する虞がある前記処理に関連する前記ソースコード行のグループを不具合候補コード群として前記検査済みのソースプログラムから抽出し、また、前記不具合候補コード群を構成する複数の前記ソースコード行を、不具合が発生する前記ソースコード行である発現行を含む発現グループと、その不具合の要因となる前記ソースコード行である要因行を含む要因グループとに分けるデータ作成部と、
前記データ作成部により抽出された前記不具合候補コード群が複数であった場合に、それら抽出された前記不具合候補コード群における前記発現グループ同士および前記要因グループ同士の類似度を算出する算出部と、
前記算出部により算出された前記類似度の情報を含む情報を提示する支援部と
を備える。
また、本発明の検証支援方法は、
コンピュータにより実行される複数の処理のそれぞれの処理手順を表す複数のソースコード行が配列されている検査済みのソースプログラムに付加されている検査結果情報に基づいて、前記検査済みのソースプログラムに従って実行可能な複数の前記処理のうち、不具合が発生する虞がある前記処理に関連する前記ソースコード行のグループを不具合候補コード群として前記検査済みのソースプログラムから抽出し、
また、前記不具合候補コード群を構成する複数の前記ソースコード行を、不具合が発生する前記ソースコード行である発現行を含む発現グループと、その不具合の要因となる前記ソースコード行である要因行を含む要因グループとに分け、
前記抽出された前記不具合候補コード群が複数であった場合に、それら抽出された前記不具合候補コード群における前記発現グループ同士および前記要因グループ同士の類似度を算出し、
その算出された前記類似度の情報を含む情報を提示する。
さらに、本発明のコンピュータプログラムは、
コンピュータにより実行される複数の処理のそれぞれの処理手順を表す複数のソースコード行が配列されている検査済みのソースプログラムに付加されている検査結果情報に基づいて、前記検査済みのソースプログラムに従って実行可能な複数の前記処理のうち、不具合が発生する虞がある前記処理に関連する前記ソースコード行のグループを不具合候補コード群として前記検査済みのソースプログラムから抽出する処理と、
また、前記不具合候補コード群を構成する複数の前記ソースコード行を、不具合が発生する前記ソースコード行である発現行を含む発現グループと、その不具合の要因となる前記ソースコード行である要因行を含む要因グループとに分ける処理と、
前記抽出された前記不具合候補コード群が複数であった場合に、それら抽出された前記不具合候補コード群における前記発現グループ同士および前記要因グループ同士の類似度を算出する処理と、
その算出された前記類似度の情報を含む情報を提示する処理と
をコンピュータに実行させる処理手順が表されている。
なお、本発明の前記主な目的は、本発明の検証支援装置に対応する本発明の検証支援方法によっても達成される。また、本発明の前記主な目的は、本発明の検証支援装置および検証支援方法に対応するコンピュータプログラムによっても達成される。
本発明によれば、コンピュータプログラムのソースコードに対する検査の結果を検証する作業に要する時間を短縮化できる。
本発明に係る第1実施形態の検証支援装置の構成を簡略化して表すブロック図である。 本発明に係る第2実施形態の検証支援装置の構成を簡略化して表すブロック図である。 検査対象のソースプログラムの具体例と、第2実施形態における不具合候補コード群(指摘情報一覧)の具体例を表す図である。 第2実施形態において不具合候補コード群が要因グループと発現グループに分けられた状態の具体例を表す図である。 第2実施形態における確率計算部が利用する正当性判断情報の具体例を表す図である。 第2実施形態における算出部が算出した結果である類似度の具体例を表す図である。 第2実施形態における確率計算部が算出した結果である検査結果の信頼度の具体例を表す図である。 第2実施形態の検証支援装置の一動作例を表すフローチャートである。
以下に、本発明に係る実施形態を図面を参照しつつ説明する。
<第1実施形態>
図1は、本発明に係る検証支援装置の構成を簡略化して表すブロック図である。この第1実施形態の検証支援装置1は、検査対象のソースプログラム(コンピュータプログラム)に対する検査結果が正しいか否かを検証する作業を支援する装置である。すなわち、ソースプログラムとは、コンピュータにより実行される複数の処理のそれぞれの処理手順(処理フロー)を表す複数のソースコード行が配列されているものである。第1実施形態の検証支援装置1は、例えば静的解析ツールによる検査結果の情報が付加された検査済みのソースプログラムが入力すると、当該ソースプログラムの検査結果に対する検証作業を支援する情報を作成し、当該情報を提示する。
この検証支援装置1は、例えばCPU(Central Processing Unit)を備えたコンピュータ装置であり、記憶装置6から読み出したコンピュータプログラム(以下、プログラムとも記載する)7を実行することにより、次のような機能を持つ。なお、記憶装置7は、検証支援装置1に内蔵されている場合もあるし、外付けである場合もある。
すなわち、第1実施形態では、検証支援装置1は、機能部として、データ作成部2と、算出部3と、支援部4とを有している。
データ作成部2は、検査済みのソースプログラムに付加されている検査結果情報に基づいて、不具合が発生する虞があると判断された処理(処理フロー)に関連するソースコード行のグループを検査済みのソースプログラムから抽出する機能を備えている。ここでは、その抽出されたソースコード行のグループを不具合候補コード群と呼ぶ。
また、データ作成部2は、不具合候補コード群を構成する複数のソースコード行を、不具合が発生するソースコード行である発現行を含む発現グループと、その要因となるソースコード行である要因行を含む要因グループとに分ける機能を備えている。
算出部3は、データ作成部2により複数の不具合候補コード群が抽出された場合に、それら抽出された不具合候補コード群における発現グループ同士および要因グループ同士の類似度を算出する機能を備えている。
支援部4は、算出部3により算出された類似度の情報を含む情報を提示する機能を備えている。例えば、支援部4は、算出部3により算出された類似度の情報を表示要求と共にディスプレイ装置(表示装置)に出力する。これにより、その類似度の情報がディスプレイ装置に表示されることにより、当該類似度の情報を例えばプログラム開発者に提示できる。また、支援部4は、その類似度の情報を印刷要求と共にプリンタに出力する。これにより、類似度の情報がプリンタにより印刷されることによって、当該類似度の情報を例えばプログラム開発者に提示できる。
この第1実施形態の検証支援装置1は上記のような構成を備えていることにより、ソースプログラムの検査結果に対する検証作業の効率化を図ることができる。すなわち、この第1実施形態の検証支援装置1は、不具合候補コード群をさらに発現グループと要因グループに分け、発現グループ同士および要因グループ同士の類似度を算出している。
不具合候補コード群による処理手順(処理フロー)が一部でも正当でない(換言すれば、静的解析ツールの性能の限界に起因する、有り得ないソースコードの実行過程(処理フロー)が不具合候補コード群に含まれる)場合には、その不具合候補コード群に対する検査結果は正当ではない。このことから、発現グループと要因グループの検査結果(不具合が発生する虞があるという結果)が両方共に正当である場合にのみ、その発現グループと要因グループを含む不具合候補コード群の検査結果(不具合が発生する虞があるという結果)は正当であると判断でき、その不具合候補コード群は、より重点的に検証すべき対象であると判断できる。換言すれば、発現グループと要因グループの少なくとも一方の検査結果が正当でない場合には、不具合候補コード群に対する検査結果は正当でない。つまり、不具合候補コード群に対する検査結果は誤りであって不具合が発生する確率が低いと想定されるから、当該不具合候補コード群は、プログラム開発者による検証作業の必要性が低い。
例えば、不具合候補コード群の発現グループと、検査結果が正当であることが分かっている発現グループとの類似度が高い(似ていている)場合には、その不具合候補コード群の発現グループの検査結果は正当である可能性(正当性)が高いと想定される。また同様に、不具合候補コード群の要因グループと、検査結果が正当であることが分かっている要因グループとの類似度が高い(似ていている)場合には、その不具合候補コード群の要因グループの検査結果は正当である可能性(正当性)が高いと想定される。このようなことから、検査結果が正当であることが分かっている発現グループと要因グループとの類似度の情報に基づいて、不具合候補コード群の発現グループと要因グループに対する検査結果の正当性を判断することが可能である。そして、このような類似度を利用した正当性判断により、不具合候補コード群の発現グループおよび要因グループの検査結果が共に正当であると判断した場合には、その不具合候補コード群のソースコードは検証すべき対象であると判断することができる。反対に、不具合候補コード群の発現グループと要因グループの少なくとも一方の検査結果が正当でない場合には、その不具合候補コード群は検証作業の対象から外すことができる。これにより、第1実施形態の検証支援装置1により提示される情報によって、検証作業は軽減されることから、第1実施形態の検証支援装置1は、検証作業に要する時間の短縮化を図ることができる。
<第2実施形態>
以下に、本発明に係る第2実施形態を説明する。
図2は、第2実施形態の検証支援装置の構成を簡略化して表すブロック図である。この検証支援装置10は、第1実施形態の検証支援装置1と同様に、静的解析ツール25によるソースプログラム(アプリケーションプログラム)の検査結果に対する検証作業を支援する情報を提示する装置である。また、検証支援装置10は、第1実施形態の検証支援装置1と同様に、コンピュータ装置により構成されており、記憶装置11から読み出したコンピュータプログラム12を実行することにより、次のような機能を持つことができる。なお、記憶装置11は、検証支援装置10に内蔵されている場合もあるし、外付けである場合もある。
すなわち、検証支援装置10は、機能部として、取得部14と、抽出部15と、算出部16と、確率計算部17と、出力部18と、記憶部19とを備えている。
記憶部19は、各種の情報(データやプログラム)を格納する記憶媒体を有して構成されている。記憶部19には、取得部14と抽出部15と算出部16と確率計算部17と出力部18により、情報が書き込まれ、また、それら取得部14と抽出部15と算出部16と確率計算部17と出力部18により、記憶部19から情報が読み出される。
取得部14は、静的解析ツール25による検査の実行結果の情報(検査結果情報)が付加されている検査済みのソースプログラムを例えば静的解析ツール25から取得する機能を備えている。さらに、取得部14は、次のような指摘情報一覧を作成し、記憶部19に書き込む機能を備えている。指摘情報一覧とは、不具合候補コード群(指摘フロー)と、当該不具合候補コード群を識別するために当該不具合候補コード群に付与された識別番号(指摘番号)とが関連付けられている情報である。なお、不具合候補コード群とは、第1実施形態でも述べた不具合候補コード群と同様に、静的解析ツール25により不具合発生の虞があると指摘(判断)された処理(処理フロー)を表すソースコード行のグループである。
図3は、検査対象のソースプログラムの具体例と、そのソースプログラムが静的解析ツール25により検査された結果に基づいて取得部14が作成する指摘情報一覧の具体例とを表す図である。
図3に表されている例では、静的解析ツール25により検査が実行されたソースプログラムには、“発現”と“要因”の情報が静的解析ツール25による検査結果情報(付加情報)として付加されている。“発現”の情報は、付加されているソースコード行(図3の例では、行番号7,10のソースコード行)が、不具合が発生する虞があるソースコード行(発現行)であることを表す情報である。“要因”の情報は、付加されているソースコード行(図3の例では、行番号2のソースコード行)が、その不具合発生の要因となるソースコード行(要因行)であることを表す情報である。
抽出部15は、不具合候補コード群を構成する複数のソースコード行を要因グループと発現グループに分ける機能を備えている。発現グループとは、不具合を発生する処理手順(処理フロー)を表すソースコード行のグループであり、発現行を含んでいる。要因グループとは、その不具合の要因となる処理手順(処理フロー)を表すソースコード行のグループであり、要因行を含んでいる。
図4は、不具合候補コード群の具体例と、その不具合候補コード群を抽出部15がグループ分けした具体例とを表す図である。この具体例に表されているように、例えば、抽出部15は、不具合候補コード群が表す処理手順を開始するソースコード行から要因行(“要因”の情報が付加されているソースコード行)までの処理手順を表すソースコード行のグループを要因グループとして抽出する。また、抽出部15は、要因行の次の処理手順を表すソースコード行から発現行(“発現”の情報が付加されているソースコード行)に至るまでのソースコード行のグループを発現グループとして抽出する。換言すれば、抽出部15は、不具合候補コード群を要因行に基づいて2つのグループに分ける。
抽出部15は、さらに、そのようにグループ分けした情報を含めた不具合候補コード群を表す情報を更新指摘情報一覧22として記憶部19に書き込む機能を備えている。
さらに、抽出部15は、グループ分けの結果情報に基づいて、図5(a)に表されるような正当性判断情報一覧23を作成する機能を備えている。正当性判断情報一覧23とは、不具合候補コード群の要因グループおよび発現グループのそれぞれに対する検査結果の正当性についてプログラム開発者が検証し、当該検証の結果が書き込まれる例えばテーブルデータである。なお、抽出部15が作成する正当性判断情報一覧23は、プログラム開発者が正当性判断結果を入力する前に作成される。このため、抽出部15が作成する正当性判断情報一覧23において、図5(a)のように、全てのグループにそれぞれ関連付けられている正当性判断結果の情報は、“未判断”を表す情報(横棒(−))である。
この第2実施形態では、取得部14および抽出部15が、静的解析ツール25による検査済みのソースプログラムから不具合候補コード群を抽出し、さらに、不具合候補コード群を要因グループと発現グループに分けるデータ作成部を構成する。
算出部16は、全ての不具合候補コード群における要因グループ同士および発現グループ同士の類似度を算出する機能を備えている。図6(a)は、算出部16により算出された要因グループ同士の類似度の具体例を表すテーブルデータである。図6(b)は、算出部16により算出された発現グループ同士の類似度の具体例を表すテーブルデータである。
算出部16が類似度を算出する手法には様々な手法が有り、ここでは、何れの手法を採用してもよいが、その一例を挙げると、例えば、最長共通部分列を行単位で利用する算出手法が有る。この算出手法は、例えば、参考文献:T.コルメン、他8名著、「アルゴリズムの設計と解析手法 (アルゴリズムイントロダクション)」、株式会社近代科学社、2007年3月に示されている。図6(a)、(b)は、その最長共通部分列を利用して算出された類似度の算出例である。
あるいは、算出部16は、編集距離(レーベンシュタイン距離)やn-グラム頻度に基づいて類似度を算出する手法により、グループ同士の類似度を算出してもよい。このように、算出部16が類似度を算出する手法には様々な手法が有り、これら手法の中から、不具合候補コード群の特徴に応じた分析が可能な手法が適宜選択され算出部16が類似度を算出する手法として採用してよい。なお、類似度を算出する手法を選択する際の参考文献として、竹田正幸、福田智子著、「古典和歌からの知識発見 モビルスーツを着た国文学者」、情報処理学会論文誌、Vol.43、No.9、2002年9月、p.941−949がある。
算出部16は、上記のように算出した類似度の情報を例えば記憶部19に保持されている図6(a)および(b)のようなテーブルデータに書き込む機能を有する。なお、記憶部19が保持する類似度の情報の形態はテーブルデータの態様に限定されない。
出力部18は、記憶部19に格納されている情報や、当該検証支援装置10の制御動作に必要な情報の入力をプログラム開発者に促す情報を、例えばディスプレイ装置(図示せず)に出力する機能を備えている。そのディスプレイ装置は、出力部18から受けた情報を表示する機能を備えている。
例えば、出力部18は、プログラム開発者に向けて、正当性判断情報を例えばキーボード等の入力装置を利用して入力することを促す情報をディスプレイ装置(表示装置)に出力する機能を備えている。この出力部18の機能によってディスプレイ装置に表示された情報に基づいて、プログラム開発者が入力装置により入力した正当性判断情報は、書き込み部(図示せず)によって、記憶部19における図5(a)のような正当性判断情報一覧23に書き込まれる。
図5(b)は、正当性判断情報一覧23に正当性判断情報が入力された(書き込まれた)状態の一例を表す図である。この図5(b)において、プログラム開発者が実際に問題が発生し得るソースコードの実行過程であると判断したグループ(例えば、識別番号“1”の要因グループを参照)には、静的解析ツール25の検査結果が正しい、つまり、“正当性有り”を表す情報(丸印(○))が正当性判断情報として関連付けられている。また、プログラム開発者が、静的解析ツール25の検査結果は有り得ないソースコードの実行過程である、つまり、検査結果が誤りで検証作業が不要であると判断したグループ(例えば、識別番号“1”の発現グループなどを参照)には、検査結果の“正当性無し”を表す情報(バツ印(×))が正当性判断情報として関連付けられている。さらに、前述したように、プログラム開発者が検証していないグループには、“未判断”を表す情報(横棒(−))が正当性判断情報として関連付けられている。
確率計算部17は、要因グループおよび発現グループに対して、算出部16により算出された類似度の情報と、プログラム開発者による正当性判断情報とに基づいて、静的解析ツール25による検査結果の信頼性の度合い(信頼度)を算出する機能を備えている。ここでは、確率計算部17は、プログラム開発者が検証していない要因グループあるいは発現グループ(つまり、正当性判断情報として“未判断”が関連付けられているグループ)について、検査結果の信頼度を算出する。例えば、図5(b)に表されている例では、識別番号“2”を持つ不具合候補コード群の要因グループと発現グループおよび識別番号“3”を持つ不具合候補コード群の要因グループについて、確率計算部17は、算出動作を実行する。例えば、確率計算部17は、要因グループと発現グループのそれぞれにおいて、識別番号“i”を持つ不具合候補コード群における信頼度P(i)を次の数式(1)に従って算出する。
Figure 0006369269
なお、数式(1)におけるNは、全ての不具合候補コード群の数を表す。F(i,j)は、識別番号“i”の不具合候補コード群と識別番号“j”の不具合候補コード群の要因グループ同士あるいは発現グループ同士の、算出部16により算出された類似度を表す。B(j)は、次に表される条件に従った数値を表す。
Figure 0006369269
さらに、確率計算部17は、算出した結果(検査結果の信頼度)を記憶部19に書き込む機能を備えている。図7は、記憶部19が保持する、算出結果を表す信頼度一覧24の一例を表す図である。出力部18が、例えば、その信頼度一覧24をディスプレイ装置に出力することにより、当該信頼度一覧24がディスプレイ装置に表示され、プログラム開発者に提示される。なお、この第2実施形態では、確率計算部17と出力部18により、静的解析ツール25による検査結果に対する検証作業を支援する情報を提示する支援部が構成される。
この第2実施形態の検証支援装置10は、上記のように構成されている。次に、この検証支援装置10における動作の一例を図8を利用して説明する。なお、図8は、検証支援装置10における動作の一例を表すフローチャートであり、このフローチャートは、検証支援装置(コンピュータ装置)10が実行するコンピュータプログラムの処理手順を表す。
例えば、検証支援装置10の取得部14は、静的解析ツール25により検査された検査結果情報を含む検査済みのソースプログラムを取得すると(ステップS101)、当該ソースプログラムから不具合候補コード群を抽出する(ステップS102)。そして、取得部14は、例えば図3に表されるような指摘情報一覧21を作成し、当該指摘情報一覧21の情報を記憶部19に書き込む。
然る後に、抽出部15が、静的解析ツール25による検査結果情報(付加情報)に基づいて、各不具合候補コード群を、要因グループと発現グループにグループ分けする(ステップS103)。そして、抽出部15は、図4に表されるような更新指摘情報一覧22を作成し、この情報を記憶部19に書き込む。
その後、算出部16は、その更新指摘情報一覧22によるグループ分け情報に基づいた要因グループ同士および発現グループ同士の類似度を算出する(ステップS104)。そして、算出部16は、例えば図6(a)、(b)のような算出結果の情報を記憶部19に書き込む。
一方、抽出部15は、図5(a)に表されるような正当性判断情報一覧23を作成し、当該正当性判断情報一覧23の情報を記憶部19に書き込む。
その後、出力部18が、不具合候補コード群の情報と、例えばキーボード等の入力装置を利用して正当性判断情報を入力することを促す情報とをディスプレイ装置(表示装置)に出力する。これにより、ディスプレイ装置が、不具合候補コード群の情報と、正当性判断情報の入力を促す情報とを表示する。これにより、プログラム開発者が正当性判断情報を入力したことにより、正当性判断情報を取得すると(ステップS105)、検証支援装置10は、取得した正当性判断情報を記憶部19の正当性判断情報一覧23に図5(b)のように書き込む。
その後、確率計算部17は、予め定められたタイミングでもって、正当性判断情報一覧23に、“未判断”の情報が関連付けられているグループが有るか否かを判断する(ステップS106)。その予め定められたタイミングとは、例えば、正当性判断情報一覧23に情報が書き込まれ、かつ、計算実行の指令が例えばプログラム開発者により入力装置を利用して検証支援装置10に入力されたときである。
そして、確率計算部17は、“未判断”のグループが有ると判断した場合には、算出部16による類似度の情報と、プログラム開発者による正当性判断結果の情報とに基づき、“未判断”のグループに対する検査結果の信頼度を算出する(ステップS107)。確率計算部17は、その算出結果を記憶部19に書き込む。
然る後に、出力部18が、その算出結果および当該算出結果の表示要求を、ディスプレイ装置(表示装置)に出力する(ステップS108)。これにより、ディスプレイ装置が、算出結果を表示する。この際、例えば、“未判断”のグループに対する正当性判断情報の入力をプログラム開発者に促す情報もディスプレイ装置に表示されるようにする。これにより、例えば、正当性判断情報が記憶部19に新たに書き込まれたことを検知すると、確率計算部17は、ステップS106以降の動作を繰り返す。
また、確率計算部17は、ステップS106の判断動作により、“未判断”のグループが無いと判断した場合には、動作を終了する。これにより、検証支援装置10は、検証済みのソートプログラムの取得から信頼度の算出および出力に関連する一連の動作を終了する。
この第2実施形態の検証支援装置10は、第1実施形態と同様に、静的解析ツール25による検査結果の検証作業の効率化に寄与することができる。特に、この第2実施形態の検証支援装置10は、確率計算部17を備え、静的解析ツール25による検査結果の信頼度を数値化して表示することを実現する構成を備えている。この構成は、不具合候補コード群の検証作業が実際に必要か否かの判断に有効な情報をプログラム開発者に提供できるので、より一層の検証作業の効率化に寄与するものである。
<第3実施形態>
以下に、本発明に係る実施形態を説明する。なお、この第3実施形態の説明において、第2実施形態の検証支援装置の構成部分と同一名称部分には同一符号を付し、その共通部分の重複説明は省略する。
前述した第2実施形態では、抽出部15は、各不具合候補コード群のソースコード行をグループ分けした後に、図4に表されるように、それらグループ分けした情報の一部としてソースコード行がそのまま含まれている態様である。これに代えて、この第3実施形態では、抽出部15は、不具合候補コード群における各グループのソースコードを構文解析し、この構文解析に基づき、各グループに含まれるソースコードの一部を抽象化する構成を備えている。つまり、ソースプログラムに分岐構造を表す構文(例えばC言語では、if文やfor文)が含まれていない場合、そのソースプログラムにおいて、分岐条件の違いによる類似した不具合(指摘の亜種)が発生することは無い。つまり、分岐構造を含まない範囲でソースコードを抽象化しても、第2実施形態で述べたようなグループ同士の類似度には悪影響が及ばない。このことから、この第3実施形態では、抽出部15は、各グループにおいて、分岐構造を含まないソースプログラム部分の一部を、例えばハッシュ関数を用いた符号化により抽象化する。
この第3実施形態における上記以外の構成は、第2実施形態と同様である。
この第3実施形態の検証支援装置10は、第2実施形態と同様に、静的解析ツール25の検査に基づいた不具合候補コード群の中から、実際に検証する不具合候補コード群の絞り込みに有効な情報を例えばプログラム開発者に提供できる。これにより、第3実施形態の検証支援装置10も、検証作業に要する時間の短縮化を図ることができる。
また、この第3実施形態の検証支援装置10は、類似度の算出に悪影響が及ばないように、各グループにおけるソースプログラムの一部を抽象化している。このため、この第3実施形態の検証支援装置10は、類似度の算出の効率化を図ることができる。
<その他の実施形態>
なお、本発明は第1〜第3の実施形態に限定されず、様々な実施の形態を採り得る。例えば、第2と第3の実施形態では、検証支援装置10の出力部18は、確率計算部17による検査結果の信頼度を出力している。これに対し、出力部18は、検査結果の信頼度ではなく、算出部16により算出される各グループ同士の類似度を出力してもよい。この場合には、その出力された情報に基づいて、ディスプレイ装置は、各グループ同士の類似度を表示する。このような場合には、検証支援装置10における確率計算部17が省略されていてもよい。また、出力部18は、例えば装置操作者(プログラム開発者)が入力装置を利用して入力した指示情報に応じて、確率計算部17による検査結果の信頼度と、算出部16による類似度との一方を出力する構成としてもよい。
1,10 検証支援装置
2 データ作成部
3,16 算出部
4 支援部
15 抽出部
17 確率計算部

Claims (6)

  1. コンピュータにより実行される複数の処理のそれぞれの処理手順を表す複数のソースコード行が配列されている検査済みのソースプログラムに付加されている検査結果情報に基づいて、前記検査済みのソースプログラムに従って実行可能な複数の前記処理のうち、不具合が発生する虞がある前記処理に関連する前記ソースコード行のグループを不具合候補コード群として前記検査済みのソースプログラムから抽出し、また、前記不具合候補コード群を構成する複数の前記ソースコード行を、不具合が発生する前記ソースコード行である発現行を含む発現グループと、その不具合の要因となる前記ソースコード行である要因行を含む要因グループとに分けるデータ作成部と、
    前記データ作成部により抽出された前記不具合候補コード群が複数であった場合に、それら抽出された前記不具合候補コード群における前記発現グループ同士および前記要因グループ同士の類似度を算出する算出部と、
    前記算出部により算出された前記類似度の情報を含む情報を提示する支援部と
    を備える検証支援装置。
  2. 前記支援部は、前記算出部により算出された前記類似度の情報を含む情報を提示するのに代えて、前記算出部により算出された前記類似度の情報と、前記不具合候補コード群に対して与えられた正当性判断情報とに基づいて、前記不具合候補コード群に対する前記検査結果情報の信頼度を算出し、当該算出結果を提示する請求項1に記載の検証支援装置。
  3. 前記支援部は、前記正当性判断情報に基づいて、正当性の有無が判断されていないことを検知した前記不具合候補コード群について選択的に前記検査結果情報の信頼度を算出する請求項2に記載の検証支援装置。
  4. 前記データ作成部は、前記不具合候補コード群における前記発現グループと前記要因グループにおいて前記ソースコード行を構文解析し、この構文解析に基づき、かつ、予め定められた条件に応じて選択されたソースプログラム部分を抽象化する機能をさらに備えている請求項1又は請求項2又は請求項3に記載の検証支援装置。
  5. コンピュータにより実行される複数の処理のそれぞれの処理手順を表す複数のソースコード行が配列されている検査済みのソースプログラムに付加されている検査結果情報に基づいて、前記検査済みのソースプログラムに従って実行可能な複数の前記処理のうち、不具合が発生する虞がある前記処理に関連する前記ソースコード行のグループを不具合候補コード群として前記検査済みのソースプログラムから抽出し、
    また、前記不具合候補コード群を構成する複数の前記ソースコード行を、不具合が発生する前記ソースコード行である発現行を含む発現グループと、その不具合の要因となる前記ソースコード行である要因行を含む要因グループとに分け、
    前記抽出された前記不具合候補コード群が複数であった場合に、それら抽出された前記不具合候補コード群における前記発現グループ同士および前記要因グループ同士の類似度を算出し、
    その算出された前記類似度の情報を含む情報を提示する
    検証支援方法。
  6. コンピュータにより実行される複数の処理のそれぞれの処理手順を表す複数のソースコード行が配列されている検査済みのソースプログラムに付加されている検査結果情報に基づいて、前記検査済みのソースプログラムに従って実行可能な複数の前記処理のうち、不具合が発生する虞がある前記処理に関連する前記ソースコード行のグループを不具合候補コード群として前記検査済みのソースプログラムから抽出する処理と、
    また、前記不具合候補コード群を構成する複数の前記ソースコード行を、不具合が発生する前記ソースコード行である発現行を含む発現グループと、その不具合の要因となる前記ソースコード行である要因行を含む要因グループとに分ける処理と、
    前記抽出された前記不具合候補コード群が複数であった場合に、それら抽出された前記不具合候補コード群における前記発現グループ同士および前記要因グループ同士の類似度を算出する処理と、
    その算出された前記類似度の情報を含む情報を提示する処理と
    をコンピュータに実行させる処理手順が表されているコンピュータプログラム。
JP2014202868A 2014-10-01 2014-10-01 検証支援装置、検証支援方法およびコンピュータプログラム Active JP6369269B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014202868A JP6369269B2 (ja) 2014-10-01 2014-10-01 検証支援装置、検証支援方法およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014202868A JP6369269B2 (ja) 2014-10-01 2014-10-01 検証支援装置、検証支援方法およびコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2016071774A JP2016071774A (ja) 2016-05-09
JP6369269B2 true JP6369269B2 (ja) 2018-08-08

Family

ID=55867066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014202868A Active JP6369269B2 (ja) 2014-10-01 2014-10-01 検証支援装置、検証支援方法およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP6369269B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6971835B2 (ja) * 2017-12-26 2021-11-24 三菱電機株式会社 要素類似判定装置、要素類似判定方法及び要素類似判定プログラム
JP7423497B2 (ja) * 2020-12-01 2024-01-29 株式会社日立製作所 計算機及びソフトウェアの修正箇所の選択方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4886404B2 (ja) * 2006-07-14 2012-02-29 株式会社東芝 ソースコード修正優先度付けシステムおよびその優先度付け方法
JP5125938B2 (ja) * 2008-09-24 2013-01-23 富士通株式会社 バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
JP2011113298A (ja) * 2009-11-26 2011-06-09 Canon Inc 流用ソースコード解析システム及びプログラム並びに記録媒体
JP5564448B2 (ja) * 2011-02-08 2014-07-30 株式会社日立製作所 ソフトウェアの類似性評価方法
JP5665128B2 (ja) * 2011-05-30 2015-02-04 日本電気通信システム株式会社 静的解析支援装置、静的解析支援方法、及びプログラム

Also Published As

Publication number Publication date
JP2016071774A (ja) 2016-05-09

Similar Documents

Publication Publication Date Title
US8966449B2 (en) Test case pattern matching
EP2960799A1 (en) Defect localization in software integration tests
US9208451B2 (en) Automatic identification of information useful for generation-based functional verification
US9569345B2 (en) Architectural failure analysis
JP2017534944A (ja) 条件付き検証規則
CN109947637B (zh) 网页兼容性自动化测试方法、装置、设备及介质
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
US8589734B2 (en) Verifying correctness of processor transactions
CN111680463A (zh) 一种文件检查方法和装置
JP6369269B2 (ja) 検証支援装置、検証支援方法およびコンピュータプログラム
JP2018092361A (ja) テストスクリプト修正装置及びテストスクリプト修正プログラム
JP6567212B2 (ja) 等価性検証装置および等価性検証プログラム
JP4477054B2 (ja) 反例解析支援装置
JP2020126603A (ja) 自動候補修正パッチ生成
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
US20140143745A1 (en) Techniques for segmenting of hardware trace and verification of individual trace segments
US20200257613A1 (en) Automated software program repair
JP6169302B2 (ja) 仕様構成装置および方法
US20150199183A1 (en) Program analysis apparatus and program analysis method
JP6731366B2 (ja) ソースコード検証システム
JP2013206310A (ja) モデル検査装置、モデル検査方法、およびプログラム
JP2013008304A (ja) プログラム分析装置、プログラム分析方法、及びプログラム
JPH11282722A (ja) プログラム検証方法
JP2024003945A (ja) プログラム修正装置、プログラム修正方法、及びプログラム修正プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180510

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: 20180612

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180625

R150 Certificate of patent or registration of utility model

Ref document number: 6369269

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150