(57)【特許請求の範囲】
【請求項１】
複数のモジュールで構成されたソフトウェアで記述されたコンピュータシステムが組み込まれた組込システムの保守支援装置において、
前記ソフトウェアとして前記コンピュータシステムに対する一連の指示である前記モジュールの情報と、前記モジュールで使用され、前記コンピュータシステム上で処理を行う構成要素の集合であるクラスタの情報と、を入力し、前記クラスタのテストを行い、その結果に対して評価指標となるテスト網羅率を示すテストカバレッジを表示し、
前記モジュールは、少なくとも、関数やその関数が含まれるクラス，コンポーネント，オブジェクト、およびライブラリのいずれかを含み、
前記クラスタは、少なくとも、変数や関数，クラス，コンポーネント，オブジェクト、およびライブラリのいずれかを含み、
さらに、前記モジュールの情報を示すソースコード情報を入力としテスト対象部を特定するソースコード解析部と、
前記ソースコード解析部の結果が入力されてテスト対象部のテストケースを作成するテストケース作成部と、
前記テストケース作成部により作成された前記テストケースの情報を蓄積するテストケース記憶部と、
前記テストケースを実行するテスト実行部と、
前記クラスタの情報と、前記ソースコード解析部で特定されたテスト対象部と、により該テスト対象部で用いられた変数が分類されているクラスタを特定する変数クラスタ情報取得部と、
前記変数クラスタ情報取得部により特定されたクラスタを強調表示するクラスタ情報強調表示部と、を有し、
前記クラスタ情報強調表示部は、前記ソースコード情報と、前記変数クラスタ情報取得部で特定されたクラスタの情報と、前記クラスタ情報強調表示部における表示方法を選択可能とするモニタ表示選択部と、前記モニタ表示選択部で注目信号が属するクラスタを特定しそのクラスタをモニタに表示する注目信号強調表示部と、前記ソースコード情報と、前記クラスタ情報と、前記テスト実行部の出力であるテスト結果と、前記注目信号と、により前記クラスタにおけるテスト状況をモニタに出力するテスト状況表示部と、を備え、
前記クラスタ情報強調表示部とは、少なくともテスト対象クラスタのソースコード部分を強調表示，テスト対象クラスタの変数クラスタ情報テーブルを強調表示，テスト対象クラスタの変数データフロー図を強調表示，テスト対象クラスタのフローチャートを強調表示のうちいずれか一つの強調表示手段を有することを特徴とする組込システムの保守支援装置。
【請求項２】
請求項１に記載の組込システムの保守支援装置において、前記テストカバレッジは、少なくとも、モジュールあるいはクラスタ内の全ての処理を１回実行する命令網羅率，全ての分岐の組み合わせを１回は実行する分岐網羅率，全ての条件の組み合わせを１回は実行する条件網羅率のいずれかを含むことを特徴とする組込システムの保守支援装置。
【請求項３】
請求項１に記載の組込システムの保守支援装置において、前記クラスタは変数であり、前記クラスタの情報は、少なくとも、クラスタ番号，入力変数，出力変数，内部変数，参照変数合計数，更新変数合計数，内部変数合計数，変数合計数のいずれかを含むことを特徴とする組込システムの保守支援装置。
【請求項４】
請求項１に記載の組込システムの保守支援装置において、前記組込システムはエレベータであり、前記クラスタは、変数として少なくとも、ドアゾーンスイッチ，ファイナルリミットスイッチ，メンテナンスリミットスイッチ，方向リミットスイッチ，終端階強制減速スイッチ、のいずれかの状態を示す情報を含むことを特徴とする組込システムの保守支援装置。
【請求項５】
請求項１に記載の組込システムの保守支援装置において、前記テストカバレッジは、少なくともソフトウェアにおけるステートメントの実行割合を示すステートメントカバレッジ，ブランチの実行割合を示すブランチカバレッジ，ブランチ条件中の組み合わせ実行割合を示すコンディションカバレッジ，ブランチ条件の各々の組み合わせ実行割合を示すマルチコンディションカバレッジ，分岐方向に影響を与える判定条件の実行割合を示すＭＣ／ＤＣカバレッジ，全ての経路に対する実行割合を示すパスカバレッジのいずれかを含むことを特徴とする組込システムの保守支援装置。
【請求項６】
請求項１に記載の組込システムの保守支援装置において、前記クラスタの情報は、変数クラスタ情報記憶部に記憶され、該変数クラスタ情報記憶部は、少なくともクラスタ番号、入力変数、出力変数、内部変数、参照変数合計数、更新変数合計数、内部変数合計数、変数合計数のいずれかを含むことを特徴とする組込システムの保守支援装置。
【請求項７】
請求項１に記載の組込システムの保守支援装置において、
前記クラスタ情報強調表示部とは、少なくともテスト対象クラスタのソースコードに対するテスト状況，テスト対象クラスタの変数クラスタ情報テーブルに対するテスト状況，テスト対象クラスタの変数データフロー図に対するテスト状況，テスト対象クラスタのフローチャートに対するテスト状況のいずれか一つのテスト状況表示手段を有することを特徴とする組込システムの保守支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、家庭用機器，産業用機器，医療用機器等、電子制御を必要とする製品の特定の機能を実現するためにコンピュータシステムが組み込まれる組込システムの保守支援装置に関し、特に携帯電話やデジタル家電、さらには自動車，鉄道，エレベータ等の輸送機械など、必要とする機能が多岐にわたるシステム，複数のハードウェア，複数のソフトウェア（モジュール）を組み合わせた規模の大きなシステムの開発，検証，保守に好適である。
【背景技術】
【０００２】
コンピュータシステムによるソフトウェア製品ライフサイクルにおいて、ソフトウェアを改良・最適化していくとともにバグを修正するプロセスは、開発，検証，保守として重要である。また、近年、ソースコードの大規模化・複雑化に伴いソフトウェア保守作業量は肥大化の一途を辿っており、保守作業の効率化が強く望まれている。
【０００３】
特に、エレベータに関しては、その制御に対する仕様が大規模，複雑化し、高級言語でプログラムが実装されることが多く、従来のように論理式を解析する手法のみで、故障の直接の要因となっている変数から、故障の発端の原因となっている変数を探索することが困難となっている。
【０００４】
また、ソフトウェア単体試験の試験効率を向上するため、試験対象の関数と試験対象の関数が呼びだす下位の関数との間の入出力Ｉ／Ｆを抽出し、分析結果に基づいてインターフェースを実装したスタブ関数（複数のモジュールからなるコンピュータプログラムの検査（ソフトウェアテスト）時における下位モジュールの代用となる小さなプログラム）を生成することが知られ、例えば特許文献１に記載されている。
【０００５】
さらに、プログラミング言語に精通していない者が、ソフトウェアが組み込まれた装置を解析するに際して、ソフトウェアを理解することを支援するため、ソフトウェアのソースコード情報及び解析対象装置の制御信号・回路図情報を表示し、そのなかから着目する部分を選択すると、選択部分に関連する制御信号を着目制御信号とすると共に、ソースコードを解析して得た制御信号の依存関係に基づき、着目制御信号と依存関係のある制御信号も着目制御信号とし、着目制御信号に関連する部分を判別し、強調して表示する、ことが知られ例えば特許文献２に記載されている。
【０００６】
さらに、複数のモジュールからなるプログラムの単体テストにおいて、スタブ作成や外部変数の設定の前処理を行わずテストを開始できるようにするため、グローバル変数等の被テストプログラム内にない変数に関する変数参照管理テーブルを設け、そのような変数の参照がある毎にテーブルを参照することが知られ、例えば特許文献３に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１４０２６３号公報
【特許文献２】特開２００６−３２３４８０号公報
【特許文献３】特開２００１−２２９０４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記従来技術において、特許文献１に記載されたものでは、試験対象の関数と試験対象の関数が呼びだす下位の関数との間の入出力Ｉ／Ｆを抽出するため、テスト対象のソースコードと下位関数のソースコードが明確に分離されている、いわゆる構造化されたソフトウェアに限られ、構造化されていないソフトウェアについては適用ができない。
【０００９】
また、特許文献２に記載されたものでは、着目する部分の選択はユーザの任意になるため、ユーザの熟練度によって保守作業等の効率が大きく異なることになる。
【００１０】
さらに、特許文献３に記載されたものでは、大規模，複雑化するに連れてテスト量が増大し、結果を得るまでに長時間を要するため作業効率が低下する。
【００１１】
本発明の目的は、上記従来技術の課題を解決し、組込システムとして比較的に大規模，複雑化され複数のモジュールで構成されたソフトウェア（コンピュータプログラム、特に電子安全エレベータ）であっても、テスト量の削減を図ると共に、構造化されていないソフトウェアにおいても適用が可能、かつ作業担当者が熟練者でなくても故障の発端の原因追及を容易にすることにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明は、複数のモジュールで構成されたソフトウェアで記
述されたコンピュータシステムが組み込まれた組込システムの保守支援装置において、前記ソフトウェアとして前記コンピュータシステムに対する一連の指示である前記モジュールの情報と、前記モジュールで使用され、前記コンピュータシステム上で処理を行う構成要素の集合であるクラスタの情報と、を入力し、前記クラスタのテストを行い、その結果に対して評価指標となるテスト網羅率を示すテストカバレッジを表示（モニタへ表示、所定用紙へ印刷など）し、前記モジュールは、少なくとも、関数やその関数が含まれるクラス，コンポーネント，オブジェクト、およびライブラリのいずれかを含み、前記クラスタは、少なくとも、変数や関数，クラス，コンポーネント，オブジェクト、およびライブラリのいずれかを含み、
さらに、前記モジュールの情報を示すソースコード情報を入力としテスト対象部を特定するソースコード解析部と、前記ソースコード解析部の結果が入力されてテスト対象部のテストケースを作成するテストケース作成部と、前記テストケース作成部により作成された前記テストケースの情報を蓄積するテストケース記憶部と、前記テストケースを実行するテスト実行部と、前記クラスタの情報と、前記ソースコード解析部で特定されたテスト対象部と、により該テスト対象部で用いられた変数が分類されているクラスタを特定する変数クラスタ情報取得部と、前記変数クラスタ情報取得部により特定されたクラスタを強調表示するクラスタ情報強調表示部と、を有し、
前記クラスタ情報強調表示部は、前記ソースコード情報と、前記変数クラスタ情報取得部で特定されたクラスタの情報と、前記クラスタ情報強調表示部における表示方法を選択可能とするモニタ表示選択部と、前記モニタ表示選択部で注目信号が属するクラスタを特定しそのクラスタをモニタに表示する注目信号強調表示部と、前記ソースコード情報と、前記クラスタ情報と、前記テスト実行部の出力であるテスト結果と、前記注目信号と、により前記クラスタにおけるテスト状況をモニタに出力するテスト状況表示部と、を備え、
前記クラスタ情報強調表示部とは、少なくともテスト対象クラスタのソースコード部分を強調表示，テスト対象クラスタの変数クラスタ情報テーブルを強調表示，テスト対象クラスタの変数データフロー図を強調表示，テスト対象クラスタのフローチャートを強調表示のうちいずれか一つの強調表示手段を有するものである。
【発明の効果】
【００１４】
本発明によれば、モジュールの情報と、モジュールで使用される構成要素の集合であるクラスタの情報と、を入力し、クラスタのテストを行い、その結果に対して評価指標となるテスト網羅率を示すテストカバレッジを表示するので、組込システムとして比較的に大規模，複雑化され複数のモジュールで構成されたソフトウェア（コンピュータプログラム）であっても、テスト量の削減を図ると共に、作業担当者が熟練者でなくても故障の発端の原因追及を容易にすることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明による一実施の形態の全体構成を示すブロック図。
【図２】一実施の形態におけるソースコード情報を示す図。
【図３】一実施の形態における変数クラスタ情報を示す図。
【図４】一実施の形態におけるソースコード解析部１１の処理を示すフローチャート。
【図５】一実施の形態における条件文情報を示す図。
【図６】一実施の形態における変数クラスタ取得部の処理を示すフローチャート。
【図７】一実施の形態におけるクラスタ情報を示す図。
【図８】一実施の形態におけるテストケース作成部の処理を示すフローチャート。
【図９】一実施の形態におけるテストケースを示す図。
【図１０】従来技術によるテストケースを示す図。
【図１１】一実施の形態におけるテストケース実行部の処理を示すフローチャート。
【図１２】一実施の形態におけるテスト結果を示す図。
【図１３】一実施の形態におけるクラスタ情報強調表示部の構成を示すブロック図。
【図１４】一実施の形態における注目信号強調表示部の処理を示すフローチャート。
【図１５】一実施の形態における注目信号強調表示部の結果を画面表示した図。
【図１６】従来技術による注目信号強調表示部の結果を画面表示した図。
【図１７】一実施の形態におけるテスト状況表示部の処理を示すフローチャート。
【図１８】一実施の形態におけるテスト状況表示部の結果を画面表示した図。
【図１９】従来技術によるテスト状況表示部の結果を画面表示した図。
【図２０】一実施の形態におけるテスト結果の画面表示を示す図。
【図２１】一実施の形態におけるモニタ選択画面を示す図。
【図２２】一実施の形態における注意勧告が表示された例を示す図。
【図２３】他の実施の形態におけるフローチャートを用いて画面表示した図。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明による一実施の形態を説明する。
【００１７】
ソフトウェア開発，検証，保守作業において、ソフトウェアの信頼性や安全性向上のため、抜け漏れの無いソフトウェアの保守等が重要視されている。しかし、特にエレベータ等の組込システムでは、従来、機械式で行っていた安全装置等の電子化が進められ、ソフトウェアが大規模化・複雑化し、作業が膨大な量になっており、抜け漏れ無く保守することが必要とされている。
【００１８】
また、保守等の作業において頻繁に欠陥が混入する箇所を重点的に検証することが効率化を図るうえで望ましいが、どこを重点的に検証すべきかと言う検証箇所の判定は熟練者の経験に頼る部分が大きく、初心者では極めて困難である。
【００１９】
図１は、組込システムの保守支援装置１０の全体構成を示すブロック図であり、ソースコード記憶部２０は、対象とするソフトウェアの関数、その関数が含まれるクラス，コンポーネント，オブジェクト及びライブラリ等、解析対象となる組込システムに対する一連の指示であり、特定の機能を実行するためのモジュールの情報としてソースコードが記憶されている。
【００２０】
また、モジュールで使用され、コンピュータシステム上で処理を行う構成要素の集合であるクラスタの情報として、変数クラスタ情報が変数のグループ情報（クラスタ毎の入力変数，出力変数及び各変数の参照関係を示すアドレス等の情報）として変数クラスタ情報記憶部３０に記憶され、この情報を入力することが組込システムの保守支援装置１０の特徴となる。
【００２１】
組込システムの保守支援装置１０は、ソースコードの構成を解析するソースコード解析部１１と、ソースコード解析部１１の結果と変数クラスタ情報とを基にソースコードにクラスタ情報を反映する変数クラスタ情報取得部１２と、テストケース作成部１３と、テストケース記憶部１４と、テスト実行部１５と、クラスタ情報強調表示部１６と、モニタ表示選択部１７と、を主要部として構成される。
【００２２】
テストケース作成部１３は、ソースコード情報と変数クラスタ情報取得部１２との結果から、目的のテストカバレッジ（テスト対象の品質評価指標となる網羅率）を計測するためのテストケースを作成する。テストカバレッジの種類は、ソースコード内の全ての処理を１回実行する命令網羅率，ソースコード内の全ての分岐の組み合わせを１回は実行する分岐網羅率，ソースコード内の全ての条件の組み合わせを１回は実行する条件網羅率である。
【００２３】
つまり、テストカバレッジは、少なくともソフトウェアにおけるステートメントの実行割合を示すステートメントカバレッジ，ブランチの実行割合を示すブランチカバレッジ，ブランチ条件中の組み合わせ実行割合を示すコンディションカバレッジ，ブランチ条件の各々の組み合わせ実行割合を示すマルチコンディションカバレッジ，分岐方向に影響を与える判定条件の実行割合を示すＭＣ／ＤＣカバレッジ，全ての経路に対する実行割合を示すパスカバレッジのいずれかを含むことが良い。
【００２４】
テストケース記憶部１４は、テストケース作成部１３で作成されたテストケースを蓄積したデータベースである。テスト実行部１５は、テストケース作成部１３で作成されたテストケースを実行し、テスト結果を出力する。
【００２５】
クラスタ情報強調表示部１６は、ソースコード情報と変数クラスタ情報取得部１２の結果とテスト実行部１５の結果と、モニタ表示選択部１７の結果を受けて、保守者（ユーザ）７０に対して必要とされる情報を表示する。
【００２６】
保守者（ユーザ）７０は、モニタ表示選択部１７で必要とする情報を選択する。
【００２７】
以上、ソースコード情報と変数クラスタ情報を用いることでテストケースを作成・実行し、テスト結果を各クラスタに明示するので、モジュール単位でモジュール情報に基づいてテストを行うものに比べ、保守者（ユーザ）はソースコードの欠陥や変更点をクラスタ単位で認識可能となり、テストケースの数が減少すると共に、テスト結果を出力までの時間が短縮され、保守作業量の削減を図ることができる。
【００２８】
以下、具体例を挙げて詳細に説明する。本実施例はモジュールにソースコード、クラスタに変数の集合、テストカバレッジにブランチ条件の各々の組み合わせ実行割合を示すマルチコンディションカバレッジを用いた例である。
【００２９】
図２はソースコード記憶部２０におけるソースコード情報を示し、図３は変数クラスタ情報記憶部３０における変数クラスタ情報を示す。変数クラスタ情報は、クラスタ番号や入力変数，出力変数，内部変数，参照変数合計数，更新変数合計数，内部変数合計数，変数合計数等である。
【００３０】
図４はソースコード解析部１１の処理を示すフローチャートであり、ステップＳ１１０１から処理が開始される。
【００３１】
ステップＳ１１０２：ソースコード記憶部２０よりソースコード情報を入力。  
ステップＳ１１０３：条件文番号の初期化を行う。  
ステップＳ１１０４：選択行番号の初期化を行う。  
ステップＳ１１０５：選択行がＥＯＦと同等ではないことをチェックする。
【００３２】
ＥＯＦでない場合（ＹＥＳ）はステップＳ１１０６に進み、ＥＯＦである場合（ＮＯ）はステップＳ１１１３に進む。
【００３３】
ステップＳ１１０６：選択行で条件文が開始されているかどうかをチェックする。選択行で条件文が開始されていた場合（ＹＥＳ）はステップＳ１１０７に進み、そうでない場合（ＮＯ）はステップＳ１１０８に進む。
【００３４】
ステップＳ１１０７：条件文における条件情報を取得する。  
ステップＳ１１０８：選択行番号をインクリメントし、処理を続行する。  
ステップＳ１１０９：選択行で使用されている変数情報を取得する。  
ステップＳ１１１０：選択行で条件文が終了されたかどうかをチェックする。
【００３５】
選択行で条件文が終了されていた場合（ＹＥＳ）はステップＳ１１１１に進み、そうでない場合（ＮＯ）はステップＳ１１１２に進む。
【００３６】
ステップＳ１１１１：条件番号をインクリメントして、処理続行する。  
ステップＳ１１１２：選択行番号をインクリメントして、処理を続行する。  
ステップＳ１１１３：変数クラスタ情報取得部１２に条件文情報を出力し、ステップＳ１１１４で処理を終了する。
【００３７】
図５は、以上説明したソースコード解析部１１により解析された条件文情報を示し、条件文情報は、条件文番号や条件文開始行，条件文終了行，条件情報，変数情報である。
【００３８】
図６は変数クラスタ情報取得部１２の処理を示すフローチャートであり、ステップＳ１２０１から処理が開始される。
【００３９】
ステップＳ１２０２：ソースコード解析部１１より条件文情報を入力する。  
ステップＳ１２０３：変数クラスタ情報記憶部３０より変数クラスタ情報を入力する。
ステップＳ１２０４：条件文番号の初期化を行う。  
ステップＳ１２０５：条件文変数情報を取得する。  
ステップＳ１２０６：クラスタ番号を初期化する。  
ステップＳ１２０７：クラスタ変数情報を取得する。  
ステップＳ１２０８：条件文変数がクラスタ変数に含まれているかどうかをチェックする。条件変数がクラスタ変数に含まれていた場合（ＹＥＳ）ステップＳ１２０９に進み、そうでない場合（ＮＯ）はステップＳ１２１０に進む。
【００４０】
ステップＳ１２０９：クラスタ情報として条件文情報と変数クラスタ情報を足し合わせる。
ステップＳ１２１０：クラスタ番号をインクリメントし、処理を続行する。  
ステップＳ１２１１：条件文番号が最終条件文番号かどうかをチェックする。条件文番号が最終条件番号だった場合（ＹＥＳ）ステップＳ１２１２に進み、そうでない場合（ＮＯ）はステップＳ１２１３に進む。  
ステップＳ１２１２：テストケース作成部１３へクラスタ情報を出力し、ステップＳ１２１５で処理を終了する。  
ステップＳ１２１３：条件文番号をインクリメントし、処理を続行する。
【００４１】
図７は変数クラスタ情報取得部１２により取得された変数クラスタ情報を示し、クラスタ情報は、条件文番号，条件文開始番号，条件文終了番号，条件情報，クラスタ番号，入力変数，出力変数，内部変数，参照変数合計数，更新変数合計数，内部変数合計数，変数合計数である。
【００４２】
図８は、テストケース作成部１３の処理を示すフローチャートであり、ステップＳ１３０１から処理が開始される。  
ステップＳ１３０２：ソースコード記憶部２０よりソースコード情報が入力される。
ステップＳ１３０３：変数クラスタ情報取得部１２よりクラスタ情報を入力する。
ステップＳ１３０４：クラスタ番号の初期化を行う。  
ステップＳ１３０５：クラスタ情報の条件情報を参考に全ての命令組み合わせに対しテストケースを作成する。  
ステップＳ１３０６：クラスタ番号が最終クラスタ番号かどうかチェックを行う。クラスタ番号が最終クラスタ番号である場合（ＹＥＳ）ステップＳ１３０７に進み、そうでない場合（ＮＯ）はステップＳ１３０８に進む。  
ステップＳ１３０７：テストケース記憶部１４へテストケース情報を出力する。  
ステップＳ１３０８：クラスタ番号をインクリメントし、処理を続行する。  
ステップＳ１３０９：テスト実行部１５へテストケース情報を出力し、ステップＳ１３１０で処理を終了する。
【００４３】
図９は、テストケース記憶部１４に蓄積され、テストケース作成部１３により作成されたテストケースを示す。テストケースは、テスト番号，クラスタ番号，テストケースシナリオであり、図８で示した手順のようにクラスタ情報に基づいてテストケースを作成するので、クラスタ情報で分離の可否が判断でき、条件Ａ，Ｂと条件Ｃの組み合わせにテストケースシナリオの分離が可能である。また、条件が分離されたことによって総テストケースシナリオが減少し、欠陥の原因究明が容易となる。
【００４４】
図１０は、本実施例と異なり、テストケースの作成をモジュール情報に基づいて行った場合の条件Ａ，Ｂ，Ｃにおけるテストケースを示し、総テストケースシナリオが多くなり、条件が分離されていないため、欠陥の原因究明も複雑化する。
【００４５】
図１１はテストケース実行部１５の詳細を示すフローチャート図であり、ステップＳ１５０１から処理が開始される。  
ステップＳ１５０２：テストケース作成部１３により作成されたテストケースを入力する。  
ステップＳ１５０３：テスト番号の初期化を行う。  
ステップＳ１５０４：テストケースを実行する。  
ステップＳ１５０５：テストケースのテスト結果を記録する。  
ステップＳ１５０６：テスト番号が最終テスト番号かどうかチェックする。
【００４６】
テスト番号が最終テスト番号だった場合（ＹＥＳ）ステップＳ１５０７に進み、そうでない場合（ＮＯ）はステップＳ１５０８に進む。
ステップＳ１５０７：クラスタ情報強調表示部１６にテスト実行結果を出力する。
ステップＳ１５０８：テスト番号をインクリメントして、処理を続行する。  
ステップＳ１５０９：モニタ４０にテスト実行結果を出力したり、所定用紙に印刷したり、することで表示する。
【００４７】
図１２はテスト実行部１５で実行されたテスト結果を示し、テスト結果は、クラスタ番号やテストカバレッジであり、クラスタに対するテストカバレッジを算出する。
【００４８】
図１３はクラスタ情報強調表示部１６詳細であり、ソースコード記憶部２０と変数クラスタ情報取得部１２とモニタ表示選択部１７を入力とし、保守者（ユーザ）７０が要求した注目信号を強調表示する注目信号強調表示部１６０１と、ソースコード記憶部２０と変数クラスタ情報取得部１２とテスト実行部１５とモニタ表示選択部１７を入力とし、現在のテスト状況を表示するテスト状況表示部１６０２とを備える。
【００４９】
図１４は注目信号強調表示部１６０１の詳細を示すフローチャートであり、ステップＳ１６０１０１から処理が開始される。  
ステップＳ１６０１０２：モニタ表示選択部１７より表示要求を入力する。  
ステップＳ１６０１０３：ソースコード記憶部２０よりソースコード情報を入力する。
ステップＳ１６０１０４：変数クラスタ情報取得部１２より変数クラスタ情報を入力する。  
ステップＳ１６０１０５：クラスタ番号の初期化を行う。  
ステップＳ１６０１０６：表示要求信号がクラスタ情報における更新変数に含まれるかどうかチェックする。表示要求信号がクラスタ情報における更新変数に含まれている場合（ＹＥＳ）ステップＳ１６０１０７に進み、そうでない場合（ＮＯ）はステップＳ１６０１０８に進む。  
ステップＳ１６０１０７：変数クラスタ情報取得部１２の出力である変数クラスタ情報から条件文開始行情報と条件文終了行情報を取得する。  
ステップＳ１６０１０８：クラスタ番号が最終クラスタ番号かどうかチェックする。クラスタ番号が最終クラスタ番号である場合（ＹＥＳ）ステップＳ１６０１０９に進み、そうでない場合（ＮＯ）はステップＳ１６１０１０に進む。  
ステップＳ１６０１０９：モニタ４０にエラー出力をし、処理を終了する。  
ステップＳ１６０１１０：テスト番号をインクリメントし、処理を続行する。  
ステップＳ１６０１１１：モニタ４０に条件文開始行から条件文終了行までを強調表示するよう出力し、ステップＳ１６０１１２で処理を終了する。
【００５０】
図１５は注目信号強調表示部１６０１の結果をモニタ４０に画面表示した図であり、注目信号として変数ｖ７を選択した場合、変数ｖ７が更新されているクラスタ番号のみ強調表示してユーザが理解することを支援する。これにより、保守者（ユーザ）７０は、注目信号と結びつきの強いクラスタ範囲を容易に判断することが可能である。
【００５１】
図１６は、本実施例とは異なり、変数クラスタ情報から条件文開始行情報と条件文終了行情報を取得するものでなく、モジュール情報に基づいて強調表示を出力したものであり、注目信号として変数ｖ７を選択した場合、変数ｖ７を用いているファイル全体を強調表示せざるを得なく、注目信号ｖ７が及ぼす影響範囲を特定することは困難である。
【００５２】
図１７はテスト状況表示部１６０２の詳細を示すフローチャートであり、ステップＳ１６０２０１から処理が開始される。  
ステップＳ１６０２０２：モニタ表示選択部１７より表示要求を入力する。  
ステップＳ１６０２０３：ソースコード記憶部２０よりソースコード情報を入力する。
ステップＳ１６０２０４：変数クラスタ情報取得部１２よりクラスタ情報を入力する。
ステップＳ１６０２０５：テスト実行部１５よりテスト結果情報を入力する。  
ステップＳ１６０２０６：クラスタ番号の初期化を行う。  
ステップＳ１６０２０７：クラスタのテスト結果情報を取得する。  
ステップＳ１６０２０８：クラスタ情報から条件文開始行情報と条件文終了行情報を取得する。  
ステップＳ１６０２０９：クラスタ番号が最終クラスタ番号かどうかチェックする。クラスタ番号が最終クラスタ番号である場合（ＹＥＳ）ステップＳ１６０２１０に進み、そうでない場合（ＮＯ）はステップＳ１６０２１１に進む。  
ステップＳ１６０２１０：モニタ４０に条件文開始行から条件文終了行を強調表示するとともに、テスト結果を表示するよう出力し、ステップＳ１６０１１２で処理を終了する。ステップＳ１６０２１１ではクラスタ番号をインクリメントし、処理を続行する。
【００５３】
図１８はテスト状況表示部１６０２の結果をモニタ４０に表示した図であり、変数同士の結びつきの強いクラスタ単位でのテスト結果としてテストカバレッジを示す。これによりクラスタ単位でテストカバレッジを知り、故障の原因の追及が容易となる。
【００５４】
図１９は本実施例とは異なり、クラスタ情報から条件文開始行情報と条件文終了行情報を取得するものでなく、モジュール情報（ファイル全体）に基づいてテストカバレッジの表示を出力したものであり、クラスタ情報を用いなかったことにより、ファイル全体のテストカバレッジしか表示できないため、故障の原因の追及は非常に困難である。
【００５５】
図２０はテスト実行部１５のテスト結果をモニタ４０に表示した図であり、テストカバレッジをデータテーブルに表示することで、クラスタ一覧のテストカバレッジ確認が容易となる。
【００５６】
図２１はモニタ選択画面を示す図である。保守者（ユーザ）７０は入力装置６０を用いて、モニタ出力やフォーマット，注目クラスタ，注目信号，テスト種類を選択する。図２２はモニタ選択画面において、注意勧告が表示された例を示す図である。試験対象のソースコードに対し、存在しない注目信号ｖ８を指定したために注意勧告を受けた画面である。存在しない注目クラスタや注目信号を指定した場合、注意勧告を表示することによって保守者（ユーザ）７０に認識させる。
【００５７】
図２３はテスト状況表示部１６０２の結果に対してフローチャートを用いてモニタ４０に表示した図である。つまり、表示フォーマットはソースコード以外でも良く、フローチャートとすれば、クラスタとテストカバレッジの対応を保守者（ユーザ）７０が理解することが容易となる。
【００５８】
以上述べたように、クラスタ単位でのテストケースの作成やテストカバレッジの測定結果表示を行ったので、これを基に欠陥原因の箇所特定は熟練者の経験によらず容易に類推することが可能となる。なお、本実施例は、ソースコード以外のモジュール，変数の集合以外のクラスタ，マルチコンディションカバレッジ以外のカバレッジ算出においても同様である。
【００５９】
また、組込システムをエレベータとした場合、ある特定の機能単位のソフトウェア部分集合を指すモジュール（例えば、着床制御機能，保守運転機能，非常時運転機能を実現するソフトウェアモジュール）に対し、特定の機能単位に依らないソフトウェア部分集合であるクラスタは、変数として少なくとも、ドアゾーンスイッチ，ファイナルリミットスイッチ，メンテナンスリミットスイッチ，方向リミットスイッチ，終端階強制減速スイッチ、のいずれかの状態を示す情報を含み、つまり、昇降路内に必要とされる定位置として決定することが良く、国際安全規格への対応，エレベータの構成部品の機械部品から電子部品への置き換えによる高機能，低コストを行う電子安全化への対応，安全性の説明責任，遠隔アップデート、などの点で望ましい。
【００６０】
メンテナンスリミットスイッチ：保守員が安全に作業を実施するための頂部隙間を確保する位置を明示するスイッチ
方向リミットスイッチ：乗りかごが終端階に到達したことを検出するスイッチ
終端階強制減速スイッチ：乗りかごが何らかの原因で過速状態になったときに定格速度以下でバッファに衝突させるための位置を検出するスイッチ
【符号の説明】
【００６１】
１０  組込システムの保守支援装置
１１  ソースコード解析部
１２  変数クラスタ情報取得部
１３  テストケース作成部
１４  テストケース記憶部
１５  テスト実行部
１６  クラスタ情報強調表示部
１７  モニタ表示選択部
２０  ソースコード記憶部
３０  変数クラスタ情報記憶部
４０  モニタ
５０  ＰＣ
６０  入力装置
７０  保守者（ユーザ）
【図１】
0005303531.tif 000002
【図２】
0005303531.tif 000003
【図３】
0005303531.tif 000004
【図４】
0005303531.tif 000005
【図５】
0005303531.tif 000006
【図６】
0005303531.tif 000007
【図７】
0005303531.tif 000008
【図８】
0005303531.tif 000009
【図９】
0005303531.tif 000010
【図１０】
0005303531.tif 000011
【図１１】
0005303531.tif 000012
【図１２】
0005303531.tif 000013
【図１３】
0005303531.tif 000014
【図１４】
0005303531.tif 000015
【図１５】
0005303531.tif 000016
【図１６】
0005303531.tif 000017
【図１７】
0005303531.tif 000018
【図１８】
0005303531.tif 000019
【図１９】
0005303531.tif 000020
【図２０】
0005303531.tif 000021
【図２１】
0005303531.tif 000022
【図２２】
0005303531.tif 000023
【図２３】
0005303531.tif 000024