(57)【特許請求の範囲】
【請求項１】
ソースコードを静的解析することで判明する制御フローグラフに基づいて、前記ソースコードをモデル記述言語に変換したモデル情報から、予め登録された条件に基づいて検査条件を表す論理式をプロパティ情報として抽出するプロパティ抽出部と、
前記プロパティ情報に基づいて、前記プロパティ情報１個当たりの検証処理時間を演算するプロパティ解析部と、
前記プロパティ情報に基づいて、前記ソースコードのソースコード検証処理のタイムアウト時間を演算するプロパティカウント部と
を具備し、
前記プロパティ解析部は、
前記モデル情報と、前記プロパティ情報から無作為にサンプリングされたプロパティ情報とを用いて前記ソースコードを検証し、前記サンプリングされたプロパティ情報の個数に対して、検証が完了した前記サンプリングされたプロパティ情報の個数の割合である検証完了率と、前記サンプリングされたプロパティ情報の検証時間との関係を算出する時間解析処理制御部と、
前記検証完了率と前記検証時間との関係に基づいて、前記検証完了率が収束した時間を判定して、前記プロパティ情報１個当たりに必要な検証処理時間を算出する解析可否判定部と、
前記プロパティ情報１個当たりに必要な検証処理時間が予め設定された基準時間以内の場合、前記プロパティ情報１個当たりに必要な検証処理時間を前記プロパティ情報１個当たりの検証処理時間として設定し、前記プロパティ情報１個当たりに必要な検証処理時間が前記基準時間より長い場合、前記基準時間を前記プロパティ情報１個当たりの検証処理時間として設定する処理上限設定部と
を備え、
前記プロパティカウント部は、
前記プロパティ情報の個数をカウントするプロパティカウント処理部と、
前記プロパティ情報の個数と、前記プロパティ情報１個当たりの検証処理時間とに基づいて、前記タイムアウト時間を演算する検証処理時間演算部と、
前記タイムアウト時間を出力する検証設定情報提供部と
を備える
ソースコード検証処理時間計算装置。
【請求項２】
請求項１に記載のソースコード検証処理時間計算装置であって、
前記時間解析処理制御部は、
設定された時間間隔毎に前記検証完了率を算出し、第１の時間における第１検証完了率と、前記第１の時間より後の第２の時間における第２検証完了率とに基づいて、前記検証完了率の変化率を算出し、
解析可否判定部は、
前記検証完了率の変化率が一定値を下回る場合、前記第２の時間を前記検証完了率が収束した時間として判定し、前記第２の時間と検証が完了した前記サンプリングされたプロパティ情報の個数とに基づいて、前記プロパティ情報１個当たりに必要な検証処理時間を算出する
ソースコード検証処理時間計算装置。
【請求項３】
請求項２に記載のソースコード検証処理時間計算装置であって、
解析可否判定部は、
前記検証完了率の変化率が一定値を上回る場合、前記設定された時間間隔を長くした再設定された時間間隔を生成し、
前記時間解析処理制御部は、
前記再設定された時間間隔毎に前記検証完了率を算出する
ソースコード検証処理時間計算装置。
【請求項４】
請求項２又は３に記載のソースコード検証処理時間計算装置であって、
前記時間解析処理制御部は、
前記サンプリングされたプロパティ情報を、前記検査条件を表す論理式の種類に基づいて第１プロパティ情報と第２プロパティ情報とに分類し、前記第１プロパティ情報又は前記第２プロパティと、前記モデル情報とを用いて前記ソースコードを検証し、前記第１プロパティ情報の個数に対して、検証が完了した前記第１プロパティ情報の個数の割合である第１プロパティ検証完了率と、前記第２プロパティ情報の個数に対して、検証が完了した前記第２プロパティ情報の個数の割合である第２プロパティ検証完了率とをそれぞれ前記設定された時間間隔毎に算出し、前記第１プロパティ検証完了率と前記第２プロパティ検証完了率とを集計して、前記第１検証完了率及び前記第２検証完了率とする
ソースコード検証処理時間計算装置。
【請求項５】
（ａ）プロパティ抽出部が、ソースコードを静的解析することで判明する制御フローグラフに基づいて、前記ソースコードをモデル記述言語に変換したモデル情報から、予め登録された条件に基づいて検査条件を表す論理式をプロパティ情報として抽出するステップと、
（ｂ）プロパティ解析部が、前記プロパティ情報に基づいて、前記プロパティ情報１個当たりの検証処理時間を演算するステップと、
（ｃ）プロパティカウント部が、前記プロパティ情報に基づいて、前記ソースコードのソースコード検証処理のタイムアウト時間を演算するステップと
を具備し、
前記ステップ（ｂ）は、
（ｂ１）前記モデル情報と、前記プロパティ情報から無作為にサンプリングされたプロパティ情報とを用いて前記ソースコードを検証し、前記サンプリングされたプロパティ情報の個数に対して、検証が完了した前記サンプリングされたプロパティ情報の個数の割合である検証完了率と、前記サンプリングされたプロパティ情報の検証時間との関係を算出するステップと、
（ｂ２）前記検証完了率と前記検証時間との関係に基づいて、前記検証完了率が収束した時間を判定して、前記プロパティ情報１個当たりに必要な検証処理時間を算出するステップと、
（ｂ３）前記プロパティ情報１個当たりに必要な検証処理時間が予め設定された基準時間以内の場合、前記プロパティ情報１個当たりに必要な検証処理時間を前記プロパティ情報１個当たりの検証処理時間として設定し、前記プロパティ情報１個当たりに必要な検証処理時間が前記基準時間より長い場合、前記基準時間を前記プロパティ情報１個当たりの検証処理時間として設定するステップと
を備え、
前記ステップ（ｃ）は、
（ｃ１）前記プロパティ情報の個数をカウントするステップと、
（ｃ２）前記プロパティ情報の個数と、前記プロパティ情報１個当たりの検証処理時間とに基づいて、前記タイムアウト時間を演算するステップと、
（ｃ３）前記タイムアウト時間を出力するステップと
を備える
ソースコード検証処理時間計算方法。
【請求項６】
請求項５に記載のソースコード検証処理時間計算方法であって、
前記ステップ（ｂ１）は、
（ｂ１−１）設定された時間間隔毎に前記検証完了率を算出し、第１の時間における第１検証完了率と、前記第１の時間より後の第２の時間における第２検証完了率とに基づいて、前記検証完了率の変化率を算出するステップ
を備え、
前記ステップ（ｂ２）は、
（ｂ２−１）前記検証完了率の変化率が一定値を下回る場合、前記第２の時間を前記検証完了率が収束した時間として判定し、前記第２の時間と検証が完了した前記サンプリングされたプロパティ情報の個数とに基づいて、前記プロパティ情報１個当たりに必要な検証処理時間を算出するステップ
を備える
ソースコード検証処理時間計算方法。
【請求項７】
請求項６に記載のソースコード検証処理時間計算方法であって、
前記ステップ（ｂ２）は、
（ｂ２−２）前記検証完了率の変化率が一定値を上回る場合、前記設定された時間間隔を長くした再設定された時間間隔を生成するステップ
を備える
ソースコード検証処理時間計算方法。
【請求項８】
請求項６又は７に記載のソースコード検証処理時間計算方法であって、
前記ステップ（ｂ１−１）は、
（ｂ１−１−１）前記サンプリングされたプロパティ情報を、前記検査条件を表す論理式の種類に基づいて第１プロパティ情報と第２プロパティ情報とに分類するステップと、
（ｂ１−１−２）前記第１プロパティ情報又は前記第２プロパティと、前記モデル情報とを用いて前記ソースコードを検証し、前記第１プロパティ情報の個数に対して、検証が完了した前記第１プロパティ情報の個数の割合である第１プロパティ検証完了率と、前記第２プロパティ情報の個数に対して、検証が完了した前記第２プロパティ情報の個数の割合である第２プロパティ検証完了率とをそれぞれ前記設定された時間間隔毎に算出するステップと、
（ｂ１−１−３）前記第１プロパティ検証完了率と前記第２プロパティ検証完了率とを集計して、前記第１検証完了率及び前記第２検証完了率とするステップと
を備える
ソースコード検証処理時間計算方法。
【請求項９】
（ａ）ソースコードを静的解析することで判明する制御フローグラフに基づいて、前記ソースコードをモデル記述言語に変換したモデル情報から、予め登録された条件に基づいて検査条件を表す論理式をプロパティ情報として抽出するステップと、
（ｂ）前記プロパティ情報に基づいて、前記プロパティ情報１個当たりの検証処理時間を演算するステップと、
（ｃ）前記プロパティ情報に基づいて、前記ソースコードのソースコード検証処理のタイムアウト時間を演算するステップと
をコンピュータに実行させるためのコンピュータプログラムであって、
前記ステップ（ｂ）は、
（ｂ１）前記モデル情報と、前記プロパティ情報から無作為にサンプリングされたプロパティ情報とを用いて前記ソースコードを検証し、前記サンプリングされたプロパティ情報の個数に対して、検証が完了した前記サンプリングされたプロパティ情報の個数の割合である検証完了率と、前記サンプリングされたプロパティ情報の検証時間との関係を算出するステップと、
（ｂ２）前記検証完了率と前記検証時間との関係に基づいて、前記検証完了率が収束した時間を判定して、前記プロパティ情報１個当たりに必要な検証処理時間を算出するステップと、
（ｂ３）前記プロパティ情報１個当たりに必要な検証処理時間が予め設定された基準時間以内の場合、前記プロパティ情報１個当たりに必要な検証処理時間を前記プロパティ情報１個当たりの検証処理時間として設定し、前記プロパティ情報１個当たりに必要な検証処理時間が前記基準時間より長い場合、前記基準時間を前記プロパティ情報１個当たりの検証処理時間として設定するステップと
を含み、
前記ステップ（ｃ）は、
（ｃ１）前記プロパティ情報の個数をカウントするステップと、
（ｃ２）前記プロパティ情報の個数と、前記プロパティ情報１個当たりの検証処理時間とに基づいて、前記タイムアウト時間を演算するステップと、
（ｃ３）前記タイムアウト時間を出力するステップと
を含む
ソースコード検証処理時間計算プログラム。
【請求項１０】
請求項９に記載のソースコード検証処理時間計算プログラムであって、
前記ステップ（ｂ１）は、
（ｂ１−１）設定された時間間隔毎に前記検証完了率を算出し、第１の時間における第１検証完了率と、前記第１の時間より後の第２の時間における第２検証完了率とに基づいて、前記検証完了率の変化率を算出するステップ
を備え、
前記ステップ（ｂ２）は、
（ｂ２−１）前記検証完了率の変化率が一定値を下回る場合、前記第２の時間を前記検証完了率が収束した時間として判定し、前記第２の時間と検証が完了した前記サンプリングされたプロパティ情報の個数とに基づいて、前記プロパティ情報１個当たりに必要な検証処理時間を算出するステップ
を備える
ソースコード検証処理時間計算プログラム。
【請求項１１】
請求項１０に記載のソースコード検証処理時間計算プログラムであって、
前記ステップ（ｂ２）は、
（ｂ２−２）前記検証完了率の変化率が一定値を上回る場合、前記設定された時間間隔を長くした再設定された時間間隔を生成するステップ
を備える
ソースコード検証処理時間計算プログラム。
【請求項１２】
請求項１０又は１１に記載のソースコード検証処理時間計算プログラムであって、
前記ステップ（ｂ１−１）は、
（ｂ１−１−１）前記サンプリングされたプロパティ情報を、前記検査条件を表す論理式の種類に基づいて第１プロパティ情報と第２プロパティ情報とに分類するステップと、
（ｂ１−１−２）前記第１プロパティ情報又は前記第２プロパティと、前記モデル情報とを用いて前記ソースコードを検証し、前記第１プロパティ情報の個数に対して、検証が完了した前記第１プロパティ情報の個数の割合である第１プロパティ検証完了率と、前記第２プロパティ情報の個数に対して、検証が完了した前記第２プロパティ情報の個数の割合である第２プロパティ検証完了率とをそれぞれ前記設定された時間間隔毎に算出するステップと、
（ｂ１−１−３）前記第１プロパティ検証完了率と前記第２プロパティ検証完了率とを集計して、前記第１検証完了率及び前記第２検証完了率とするステップと
を備える
ソースコード検証処理時間計算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ソースコードの検証システムおいて、検証処理時間を算出する装置及び方法に関する。
【背景技術】
【０００２】
プログラミングのソースコードのコンパイル前や、プログラム実行前に、記述ミスや動作時の不具合を発見するソースコード検証処理としてモデル検査方式がある（例えば、非特許文献１及び２参照）。モデル情報とは、ソースコードを静的解析することで判明する、Ｃｏｎｔｒｏｌ  Ｆｌｏｗ  Ｇｒａｐｈ（値域情報）を論理化した論理式である。モデル検査方式とは前述モデル情報を利用してプログラムにおける全てのデータパターン、全ての処理パスを網羅する検証手段である。モデル検査方式を用いたソースコード検証処理は、データパターンや処理パスを全て網羅出来るため、人が想定出来なかった不具合を見つけ出すことが可能である。
【０００３】
ソースコード検証処理に要する時間の計算方法及びプロパティ抽出する方法として、特許文献１に記載の技術がある。これは、まずプログラムを構成している命令を、実行する処理部（計算機、入出力装置）ごとに分類集計する。さらに計算機システムの各部性能（機種）、入力したデータ量等動作環境条件に基づき、命令を実行する各処理部における処理時間を集計する。以上よりバッチジョブの処理時間を計算するという、バッチジョブの処理時間計算装置に関するものである。
【０００４】
ソースコードからプロパティを抽出する方法は、特許文献２に記載の技術がある。これは、まず半導体集積回路の仕様をグラフィカルに編集して得られた設計データに基づき、検証するべきプロパティを生成する。さらにプロパティをアサーション記述に変換するという、アサーション生成システムに関するものである。
【０００５】
【特許文献１】特開平１−１１６８４５号公報
【特許文献２】特開２００６−９９５１８号公報
【非特許文献１】「ソフトウエアは硬い」、日経エレクトロニクス、株式会社日経ＢＰ、２００５年１２月１９日、Ｐ．８−４３
【非特許文献２】“モデル検査”、[online]、2007年8月13日、ウィキメディア財団（the Wikimedia Foundation）、ウィキペディア (Wikipedia): フリー百科事典、[2007年8月23日検索]、インターネット＜http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%87%E3%83%AB%E6%A4%9C%E6%9F%BB＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
モデル検査方式を用いたソースコード検証処理は、データパターンや処理パスを全て網羅する必要があるため、検証にかかるソースの規模が大きくなると、ソースコード検証処理時間が増大してしまう問題がある。ソースコード検証処理時間にタイムアウト時間を設定し、ソースコード検証処理をある程度の時間内で終わらせて、検証時間が増大し過ぎないようにすれば検証の効率が向上するのだが、モデル検査方式を用いたソースコード検証処理には適切なタイムアウト時間を設定する方法がない。よって、本発明は最適なソースコード検証処理のタイムアウト時間設定を可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明のソースコード検証処理時間計算装置は、プロパティ抽出部とプロパティカウント部とを備える。プロパティ抽出部は、ソースコードをモデル化したモデル情報からプロパティ情報を抽出する。プロパティカウント部は、プロパティ情報に基づいてソースコードのソースコード検証のタイムアウト時間を演算する。
【発明の効果】
【０００８】
ソースコードのモデル情報からプロパティ情報を抽出し、抽出したプロパティ情報からソースコード検証処理のタイムアウト時間を設定する。これによって、モデル検査方式でのソースコード検証処理に、タイムアウト時間が設定可能となり、適切なソースコード検証処理が可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明のソースコード検証処理時間計算装置１００の実施形態について、図面を参照し説明する。
【００１０】
図１は、ソースコード検証処理時間計算装置１００の実施形態における、ハードウエア構成例を示すブロック図である。尚、ソースコード検証処理時間計算装置１００は、ソースコード検証システム２４０内に配置する。
【００１１】
図１に示すように、本発明の実施形態に係るソースコード検証処理時間計算装置１００は、ＣＰＵ１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理装置）と、ハードディスクやメモリ等からなる記憶装置２０と、キーボードやマウスからなる入力装置３０と、ディスプレイなどの出力装置４０と、各装置１０〜４０を接続するバス５０とを備えるコンピュータシステムである。
【００１２】
ＣＰＵ１０は記憶装置２０に保存された、本発明のソースコード検証処理時間計算装置、方法及びプログラムに係る演算処理および制御処理を行う。記憶装置２０は、本発明に係る各機能、手段を、ＣＤ−ＲＯＭやＤＶＤ等のコンピュータ読み取り可能な記録媒体から読み取られたプログラムや、入力装置３０から入力されたプログラム等の実行可能な形式で格納する。さらに記憶装置２０は、ＣＰＵ１０の演算時に作業領域として使用される。入力装置３０を用いて、ユーザーは本発明に係る命令や設定等を入力出来る。出力装置４０は、本発明の各手段を実現したプログラムの実行経過や実行結果を表示する。
【００１３】
図２は、本発明のソースコード検証処理時間計算装置１００及び、それを適用したソースコード検証システム２４０の実施形態の構成を示す図である。
【００１４】
ソースコード検証システム２４０は、ソースファイル３１０のソースコードをモデル化したモデル情報に基づいて、ソースコードの適否を検証するシステムである。ソースコード検証システム２４０では、ソースコード検証処理のタイムアウト時間を設定することが可能である。
【００１５】
ソースコード検証システム２４０は、モデル化処理部２１０と、ソースコード検証処理時間計算装置１００と、検証設定情報部２２０と、ソースコード検証処理部２３０とを具備する。
【００１６】
モデル化処理部２１０は、ソースファイル３１０からのソースコードのモデル化を行い、モデル化されたソースコードのモデル情報をソースコード検証処理時間計算装置１００へ提供する。モデル化方法は公知の方法を用いることが出来る（例えばＰｒｏｍｅｌａ（Ｐｒｏｃｅｓｓ  Ｍｅｔａ  Ｌａｎｇｕａｇｅ））。
【００１７】
本発明のソースコード検証処理時間計算装置１００は、モデル化処理部２１０から提供されたモデル情報からプロパティ情報を抽出し、抽出したプロパティ情報に基づきソースコード検証処理のタイムアウト時間を演算する。演算したソースコード検証処理のタイムアウト時間は、検証設定情報部２２０へ提供する。また、モデル化処理部２１０から提供されたモデル情報を、ソースコード検証処理部２３０へ提供する。
【００１８】
ここで、プロパティ情報とはモデル情報から抽出された検査条件論理式である。プロパティ情報としては「ポインタの参照箇所」、「メモリ開放関数が呼ばれている箇所」、「エントリ関数の末尾」、「ポインタ・配列の参照箇所」、「"配列境界"関連の出現箇所」、「文字列操作関数の利用箇所」、「アサーションの記述箇所」を示す検査条件論理式などが例示される。これらプロパティ情報は検証するソースコードによって異なる。
【００１９】
検証設定情報部２２０は、ソースコード検証処理を実行する際に必要となる、ソースコード検証処理時間計算装置１００から提供されるソースコード検証処理のタイムアウト時間や、検証結果のレポート出力方式などの検証設定情報を保持し、ソースコード検証処理部２３０へ検証設定情報を提供する。
【００２０】
ソースコード検証処理部２３０は、ソースコード検証処理時間計算装置１００から提供されたプロパティ情報と、検証設定情報部２２０から提供されたソースコード検証処理のタイムアウト時間や検証結果のレポート出力方式などの検証設定情報とに基づき、ソースコード検証処理を実施する。ソースコード検証処理部２３０は、ソースコード検証処理結果の検証結果ファイル３３０を生成し、また入出力装置３２０に備わるディスプレイにソースコード検証処理結果を提供する。
【００２１】
ソースコード検証処理時間計算装置１００は、プロパティ抽出部１１０と、プロパティカウント部１２０と、プロパティ解析部１３０とを備える。
【００２２】
プロパティ抽出部１１０は、モデル化処理部２１０が作成したモデル情報を取得し、プロパティ情報を抽出して、プロパティカウント部１２０及びプロパティ解析部１３０へプロパティ情報を提供する。
【００２３】
プロパティカウント部１２０は、プロパティ抽出部１１０から提供されたプロパティ情報と、プロパティ解析部１３０から提供されたプロパティ情報１個当たりの検証処理時間とに基づき、ソースコード検証処理のタイムアウト時間を算出する。ソースコード毎に算出することで、より適切なタイムアウト時間を求めることが出来る。さらに、プロパティカウント部１２０は、ソースコード検証処理のタイムアウト時間を検証設定情報部２２０へ提供し、プロパティ情報をソースコード検証設定処理部２３０へ提供する。
尚、プロパティ情報１個当たりの検証処理時間は、プロパティ解析部１３０からではなくプロパティカウント部１２０に予め定数で与えられていてもよい。この場合、定数で予め与えられることによって、タイムアウト時間の設定処理がより迅速に行える。
【００２４】
プロパティ解析部１３０は、プロパティ抽出部１１０から提供されたプロパティ情報に基づき、プロパティ情報１個当たりの検証処理時間を算出する。
【００２５】
図３は、ソースコード検証処理時間計算装置１００における、プロパティ抽出部１１０の実施形態を示す図である。
【００２６】
プロパティ抽出部１１０は、モデル情報取得部１１１と、プロパティ抽出処理部１１２と、抽出情報提供部１１３とを含む。
モデル情報取得部１１１は、モデル化処理部２１０が作成したモデル情報を取得する。
プロパティ抽出処理部１１２は、モデル情報取得部１１１のモデル情報からプロパティ情報を抽出する。抽出方法は、予め抽出する検査条件論理式が登録されており、それに該当するものを抽出する。
抽出情報提供部１１３は、プロパティ抽出処理部１１２で抽出したプロパティ情報を、プロパティカウント部１２０及び、プロパティ解析部１３０へ提供する。
【００２７】
図４は、ソースコード検証処理時間計算装置１００における、プロパティカウント部１２０の実施形態を示す図である。
【００２８】
プロパティカウント部１２０は、プロパティカウント処理部１２１と、検証処理時間演算部１２２と、検証設定情報提供部１２３とを含む。
プロパティカウント処理部１２１は、プロパティ抽出部１１０から提供されたプロパティ情報の個数をカウントし、検証処理時間演算部１２２へ提供する。
検証処理時間演算部１２２は、プロパティカウント処理部１２１から提供されたプロパティ情報の個数と、プロパティ解析部１３０から提供されたプロパティ情報１個当たりの検証処理時間、または定数として設定されたプロパティ情報１個当たりの検証処理時間とに基づき、ソースコード検証処理のタイムアウト時間を演算する。そしてソースコード検証処理のタイムアウト時間とプロパティ情報とを、検証設定情報提供部１２３へ提供する。
検証設定情報提供部１２３は、検証処理時間演算部１２２より提供されたソースコード検証処理のタイムアウト時間を検証設定情報部２２０へ提供し、プロパティ情報をソースコード検証処理部２３０へ提供する。
【００２９】
図５は、ソースコード検証処理時間計算装置１００における、プロパティ解析部１３０の実施形態を示す図である。
【００３０】
プロパティ解析部１３０は、時間解析処理制御部１３１と、解析可否判定部１３２と、解析結果保持部１３３と、情報表示部１３４と、処理上限設定部１３５とを備える。
【００３１】
時間解析処理制御部１３１は、プロパティ抽出部１１０から提供されたプロパティ情報の適否を検証する。このプロパティ情報の検証は、ソースコードの検証における当該プロパティ情報に対応する部分の検証を意味する。そしてプロパティ情報の検証完了率を演算し、さらにプロパティ情報の検証完了率を演算する検証時間を演算する。プロパティ情報の検証完了率とは、プロパティ情報の適否の検証が完了したプロパティ情報の個数を、プロパティ情報の個数に対する割合で示したものである。プロパティ情報の検証完了率の演算は、プロパティ情報の検証期間中の任意に設定した時間間隔毎に行う。さらに、プロパティ情報の検証時間に対するプロパティ情報の検証完了率の変化率を演算する。
【００３２】
解析可否判定部１３２は、時間解析処理制御部１３１で実行する、プロパティ情報の検証完了率の変化率から、プロパティ情報の検証完了とする時間を判定し、プロパティ情報１個当たりに必要な検証処理時間とする。解析可否判定部１３２は、時間解析処理制御部１３１へプロパティ情報1個当たりに必要な検証処理時間を提供する。
【００３３】
解析結果保持部１３３は、時間解析処理制御部１３１から提供されるプロパティ情報の検証時間と、プロパティ情報の検証完了率と、プロパティ情報1個当たりに必要な検証処理時間とを解析結果情報として保持する。
【００３４】
情報表示部１３４は、解析結果保持部１３３の解析結果情報を入出力装置３２０に備わるディスプレイに提供する。
【００３５】
処理上限設定部１３５は、プロパティ情報１個当たりの検証処理時間を、解析結果情報から決定した値に設定する。設定方法は以下の方法が考えられる。１つ目は入出力装置３２０に備わるディスプレイに表示された結果に基づき、ユーザーが判断し入力した値に決定する方法である。この方法の場合、検証完了率と検証時間のバランスをユーザーが確認してから設定出来るため、より適切なプロパティ情報１個当たりの検証処理時間を設定することが可能となる。２つ目は、時間解析処理制御部１３１で予め設定された条件に従って、自動でプロパティ情報１個当たりの検証処理時間を決定する方法である。例えば、予め基準時間が設定されているとする。プロパティ情報１個当たりに必要な検証処理時間が、基準時間以上の場合、基準時間をプロパティ情報１個当たりの検証処理時間とする。また基準時間以内の場合、プロパティ情報１個当たりに必要な検証処理時間をプロパティ情報１個当たりの検証処理時間とする。この方法の場合は、検証を迅速に且つユーザー同士での誤差なく実行出来る点で優れている。
【００３６】
尚、本発明ソースコード検証処理時間計算装置１００は、ソースコード検証システム２４０と一体でもよい。
【００３７】
本発明により、モデル検査方式のソースコード検証処理において、ソースコードをモデル化したモデル情報からプロパティ情報を抽出し、抽出したプロパティ情報の個数とプロパティ情報１個当たりの検証処理時間から、ソースコード検証処理のタイムアウト時間が設定可能となる。タイムアウト時間の設定により、従来よりも適切なソースコード検証処理が可能である。
【００３８】
次に、本発明ソースコード検証処理時間計算装置１００の、ソースコード検証システム２４０での処理動作を示したフローチャート図６を参照して、動作の詳細について説明する。
【００３９】
ソースコード検証処理時間計算装置１００は、モデル化処理部２１０からモデル情報が提供されると起動し、プロパティ抽出処理を開始する（図６；ステップＳ０１）。
【００４０】
モデル情報取得部１１１はモデル情報を取得し、プロパティ抽出処理部１１２へモデル情報を提供する（図６；ステップＳ０２）。
【００４１】
プロパティ抽出処理部１１２は、取得したモデル情報から、プロパティ情報を抽出し、プロパティ情報を抽出情報提供部１１３へ提供する。抽出情報提供部１１３は、抽出したプロパティ情報をプロパティカウント部１２０及びプロパティ解析部１３０に提供する（図６；ステップＳ０３）。
【００４２】
プロパティカウント部１２０のプロパティカウント処理部１２１は、抽出したプロパティ情報に基づき、プロパティ情報の個数をカウントする（図６；ステップＳ０４−１）。
【００４３】
プロパティ解析部１３０は、プロパティ情報に基づき、プロパティ情報１個当たりの検証処理時間を検証処理時間演算部１２２へ提供する（図６；ステップＳ０４−２）。
【００４４】
検証処理時間演算部１２２は、プロパティカウント処理部１２１によってカウントされたプロパティ情報の個数と、プロパティ解析部１３０で算出されたプロパティ情報１個当たりの検証処理時間を掛けることにより、ソースコード検証処理のタイムアウト時間を演算する（図６；ステップＳ０５）。
尚、プロパティ情報１個当たりの検証処理時間は、プロパティ解析部１３０からでなく予めプロパティカウント部１２０に定数で与えられていてもよい。
【００４５】
検証設定情報提供部１２３は、検証処理時間演算部１２２より提供されたソースコード検証処理のタイムアウト時間とプロパティ情報とを、検証設定情報部２２０へ提供する。
【００４６】
検証設定情報部２２０は、ソースコード検証処理のタイムアウト時間を、ソースコード検証時の設定情報として保存する。検証設定情報部２２０は、ソースコード検証処理を実行する際に必要となる、ソースコード検証処理のタイムアウト時間や検証結果のレポート出力方式などを検証設定情報として保存し、ソースコード検証処理部２３０へ検証設定情報を提供する（図６；ステップＳ０６）。
【００４７】
ソースコード検証処理部２３０が、検証設定情報部２２０からソースコード検証処理の検証設定情報を受け取り、さらにプロパティカウント部１２０からプロパティ情報が提供されると本発明ソースコード検証処理時間計算装置１００の動作は終了する（図６；ステップＳ０７）。
【００４８】
本発明は、モデル検査方式のソースコード検証において、プロパティ情報の個数とプロパティ情報１個当たりの検証処理時間とによって、ソースコード検証処理のタイムアウト時間の設定を可能にしている。実際に検証するソースコードからプロパティ情報の一部を検証して求める場合と、プロパティ情報１個当たりの検証処理時間は定数として予め設定される場合との両方の対応が可能である。プロパティ情報１個当たりの検証処理時間を実際のソースコードから求めることは、実際の検証処理時間と設定したタイムアウト時間との演算誤差が小さくなる有効な方法である。プロパティ情報１個当たりの検証処理時間が予め定数として与えられた場合は、検証を迅速に且つユーザー同士の誤差なく実行出来る点で優れている。何れの方法も設定したタイムアウト時間によって、従来よりも適切なソースコード検証処理が可能となる。
【００４９】
次に、実際に検証するソースコードからプロパティ情報の一部を抽出して、プロパティ情報１個当たりの検証処理時間の設定する方法の詳細について説明する。
【００５０】
図７は、プロパティ解析部１３０において、プロパティ情報1個当たりの検証処理時間を設定する動作を示したフローチャートである。
【００５１】
図８は、時間解析処理制御部１３１の、プロパティ情報の検証完了率を演算する動作を示したものである。
【００５２】
図７及び図８を用いて、図６ステップＳ０４−２での、プロパティ解析部１３０が、提供されたプロパティ情報に基づきプロパティ情報１個当たりの検証処理時間を演算する処理動作の詳細について説明する。但し、プロパティ情報の分類とは、検査条件論理式を示す情報毎の分類であって、「ポインタの参照箇所」、「メモリ開放関数が呼ばれている箇所」、「エントリ関数の末尾」、「ポインタ・配列の参照箇所」、「"配列境界"関連の出現箇所」、「文字列操作関数の利用箇所」、「アサーションの記述箇所」などの検査条件論理式が分類として例示される。これらプロパティ情報は検証するソースコードによって異なる。
【００５３】
時間解析処理制御部１３１は、プロパティ抽出部１１０から提供されたプロパティ情報を取得する（図７；ステップＳ１１）。ここで仮に、分類１である「ポインタ参照箇所」のプロパティ情報α−１、α―２、α―３、α―４、分類２である「メモリ開放関数が呼ばれている箇所」のプロパティ情報β−１、β―２、β―３、β―４、分類３である「エントリ関数の末尾」のプロパティ情報γ−１、γ―２、γ―３、γ―４を取得した例を図８に示す（図８；ステップＳ１１（例））。
【００５４】
時間解析処理制御部１３１は、プロパティ情報の一部を無作為にサンプリングする（図７；ステップＳ１２）。図８においては、α―１、α−4、β―２、β―３、β―４、γ―１、γ―２が無作為にサンプリングされた場合を示す（図８；ステップＳ１２（例））。
【００５５】
時間解析処理制御部１３１は、無作為にサンプリングしたプロパティ情報を予め指定したプロパティ分類毎に分類する（図７；ステップＳ１３）。図８においては、分類１にプロパティ情報α―１、α―４が分類され、分類２にプロパティ情報β―２、β―３、β―４が分類され、分類３にプロパティ情報γ―１、γ―２が分類されたことを示す（図８；ステップＳ１３（例））。
【００５６】
ユーザーはプロパティ情報の検証期間中における、プロパティ情報の検証完了率を演算する時間間隔を入出力装置３２０から任意に設定する。プロパティ情報の検証完了率とは、プロパティ情報の個数に対して、プロパティ情報の適否の検証が完了したプロパティ情報の個数を割合で示したものである（図７；ステップＳ１４）。また、検証完了率を演算する時間間隔は、時間解析処理制御部１３１で予め任意設定されていてもよい。
【００５７】
時間解析処理制御部１３１は、分類したプロパティ情報を分類毎に検証し、プロパティ情報の検証期間中において任意設定した時間間隔毎にプロパティ情報の検証完了率を演算する（図７；ステップＳ１５〜Ｓ１７）。図８においては、分類１、分類２、分類３のそれぞれで検証完了率が演算されたことを示す（図８；ステップＳ１５（例））。サンプリングされたプロパティ情報を分類１〜分類ｎに分類したとき、任意の検証時間ｔにおける任意のプロパティ分類i（１≦i≦ｎ）の検証完了率は以下の式で表される。
式：サンプリングされた分類iのプロパティ情報の検証完了率
＝（サンプリングされた分類iのプロパティ情報の検証が完了した個数）
／（サンプリングされた分類iのプロパティ情報の個数）  ・・・・・（式１）
【００５８】
時間解析処理制御部１３１は、サンプリングされた分類１〜分類ｎのプロパティ情報の検証完了率を以下の式で集計する。任意の検証時間ｔにおける、サンプリングされた全てのプロパティ情報の検証完了率とする（図７；ステップＳ１８）。図８においては、分類１〜分類３までの検証完了率が集計され、サンプリングされた全てのプロパティ情報の検証完了率になったことを示す（図８；ステップＳ１８（例１））。
式：サンプリングされた全てのプロパティ情報の検証完了率＝
（サンプリングされた分類１のプロパティ情報の検証完了率）＊（サンプリングされた分類１のプロパティ情報の個数／サンプリングされた全てのプロパティ情報の個数）
＋（サンプリングされた分類２のプロパティ情報の検証完了率）＊（サンプリングされた分類２のプロパティ情報の個数／サンプリングされた全てのプロパティ情報の個数）
＋（サンプリングされた分類３のプロパティ情報の検証完了率）＊（サンプリングされた分類３のプロパティ情報の個数／サンプリングされた全てのプロパティ情報の個数）
＋  ・・・
＋（サンプリングされた分類ｎのプロパティ情報の検証完了率）＊（サンプリングされた分類ｎのプロパティ情報の個数／サンプリングされた全てのプロパティ情報の個数）
・・・・・（式２）
【００５９】
時間解析処理制御部１３１は、検証期間中に任意設定した時間間隔毎、サンプリングされた全てのプロパティ情報の検証完了率を式２同様に演算する。図８においては、検証完了率を求める検証時間ｔ０、ｔ１、ｔ２、ｔ３において、サンプリングされた全てのプロパティ情報の検証完了率を演算することを示す（図８；ステップＳ１８（例２））。
【００６０】
図９は、サンプリングされた全てのプロパティ情報の検証時間と検証完了率との関係を表したものである。図９を用いて、図７のステップＳ１９、Ｓ２０を説明する。
【００６１】
図９において、サンプリングされた全てのプロパティ情報の検証時間を横軸、サンプリングされた全てのプロパティ情報の検証完了率（図７；ステップＳ１８にて演算されたもの）を縦軸、時間間隔をＴとする。傾き（Ｋ）はサンプリングされた全てのプロパティ情報検証完了率の変化率を表す。
【００６２】
図９におけるサンプリングされた全てのプロパティ情報の検証時間ｔ１〜ｔ２（時間間隔Ｔ）における、サンプリングされた全てのプロパティ情報の検証完了率の傾き（Ｋ１）は次式で演算する。
式：サンプリングされた全てのプロパティ情報の検証完了率の傾き（Ｋ１）
＝（検証時間ｔ２のサンプリングされた全てのプロパティ情報の検証完了率
−検証時間ｔ１のサンプリングされた全てのプロパティ情報の検証完了率）
／（サンプリングされた全てのプロパティ情報の検証時間ｔ２
−サンプリングされた全てのプロパティ情報の検証時間ｔ１；時間間隔Ｔ）
・・・・・（式３）
サンプリングされた全てのプロパティ情報の検証完了率を演算する毎に、前回の検証完了率との変化率を式３同様に求める。
【００６３】
解析可否判断部１３２は、時間間隔毎のサンプリングされた全てのプロパティ情報の検証完了率の傾き（Ｋ）から、サンプリングされたプロパティ情報の検証完了とする時間を判定し、検証完了とする時間と検証が完了したサンプリングされたプロパティ情報の数とに基づいて、プロパティ情報１個当たりに必要な検証処理時間を算出する。傾き（Ｋ）が一定値を下回る場合、サンプリングされた全てのプロパティ情報の検証完了率は収束したものとし、サンプリングされた全てのプロパティ情報の検証完了率の演算を終了する。傾き（Ｋ）が一定値を上回る場合、サンプリングされたプロパティ情報を検証する任意の時間間隔を再設定する。サンプリングされた全てのプロパティ検証完了率の傾き（Ｋ）の一定値とは、検証するソースファイル毎に異なる可能性があるため定義しない（図７；ステップＳ１９、Ｓ２０）。
【００６４】
傾き（Ｋ）が一定値を上回る場合は、検証成功率が大きく上昇中であることを示す。よって検証の時間間隔をＴ＋Ｔ１（Ｔ１＞０）と広げた値に再設定する。
【００６５】
解析結果保持部１３３は、時間解析処理制御部１３１から、サンプリングされたプロパティ情報の検証時間と、サンプリングされた全てのプロパティ情報検証完了率と、プロパティ情報１個当たりに必要な検証処理時間とを解析結果情報として取得する。
【００６６】
情報表示部１３４は、解析結果保持部１３３から提供された解析結果情報に基づき、横軸をサンプリングされたプロパティ情報の検証時間、縦軸をサンプリングされた全てのプロパティ情報検証率としたグラフ情報を入出力装置３２０に提供する。
【００６７】
入出力装置３２０は、情報表示部１３４から提供されたグラフ情報に基づき、解析結果情報を入出力装置３２０に備わるディスプレイに表示する（図７；ステップＳ２１）。
【００６８】
処理上限設定部１３５には、プロパティ情報１個当たりの検証処理時間として決定した値が設定される（図７；ステップＳ２２）。決定する値は、ディスプレイ表示された値からユーザーが判断し入力する値と、時間解析処理制御部１３１で自動演算された値とのどちらでもよい。ディスプレイ表示された解析結果情報から、ユーザーがプロパティ情報１個当たりの検証処理時間を決める場合は、検証完了率と検証時間のバランスをユーザーが判断出来るため、適切な検証時間が選択出来る。時間解析処理制御部１３１で自動演算する場合は、より迅速に且つユーザー同士の誤差なく検証を実行することが可能となる。
【００６９】
検証処理時間演算部１２２は、処理上限設定部１３５からのプロパティ情報１個当たりの検証処理時間と、プロパティカウント処理部１２１からのプロパティ情報の個数を掛けることで、ソースコード検証処理のタイムアウト時間を演算する。
【００７０】
以上より、本発明の機能を使用することで、ソースコードによって異なるプロパティ情報１個当たりの検証処理時間を、実際に検証するソースコードのプロパティ情報の一部から演算し求めることが出来る。本発明によって、ソースコード検証処理において、ソースコードに適応したタイムアウト時間設定が可能となる。
【図面の簡単な説明】
【００７１】
【図１】図１は、本発明のソースコード検証処理時間計算装置の実施形態におけるハードウエア構成例を示すブロック図である。
【図２】図２は、本発明のソースコード検証処理時間計算装置及びそれを適用したソースコード検証システムの実施形態を示す図である。
【図３】図３は、ソースコード検証処理時間計算装置における、プロパティ抽出部の実施形態を示す図である。
【図４】図４は、ソースコード検証処理時間計算装置における、プロパティカウント部の実施形態を示す図である。
【図５】図５は、ソースコード検証処理時間計算装置における、プロパティ解析部の実施形態を示す図である。
【図６】図６は、本発明のソースコード検証処理時間計算装置の処理動作を示すフローチャートである。
【図７】図７は、プロパティ解析部において、プロパティ情報1個当たりの検証処理時間を設定する動作を示したフローチャートである。
【図８】図８は、時間解析処理制御部において、プロパティ情報の検証完了率を演算する動作を示したものである。
【図９】図９は、サンプリングされた全てのプロパティ情報の検証時間と検証完了率との関係を表したものである。
【符号の説明】
【００７２】
１０    ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；情報演算処理装置）
２０    記憶装置
３０    入力装置
４０    出力装置
５０    バス
１００  ソースコード検証処理時間計算装置
１１０  プロパティ抽出部
１１１  モデル情報取得部
１１２  プロパティ抽出処理部
１１３  抽出情報提供部
１２０  プロパティカウント部
１２１  プロパティカウント処理部
１２２  検証処理時間演算部
１２３  検証設定情報提供部
１３０  プロパティ解析部
１３１  時間解析処理制御部
１３２  解析可否判定部
１３３  解析結果保持部
１３４  情報表示部
１３５  処理上限設定部
２１０  モデル化処理部
２２０  検証設定情報部
２３０  ソースコード検証処理部
２４０  ソースコード検証システム
３１０  ソースファイル
３２０  出力装置（ディスプレイ）
３３０  検証結果ファイル
【図１】
0004973997.tif 000002
【図２】
0004973997.tif 000003
【図３】
0004973997.tif 000004
【図４】
0004973997.tif 000005
【図５】
0004973997.tif 000006
【図６】
0004973997.tif 000007
【図７】
0004973997.tif 000008
【図８】
0004973997.tif 000009
【図９】
0004973997.tif 000010