JP5056396B2 - ソフトウェア動作監視装置、プログラム - Google Patents

ソフトウェア動作監視装置、プログラム Download PDF

Info

Publication number
JP5056396B2
JP5056396B2 JP2007326943A JP2007326943A JP5056396B2 JP 5056396 B2 JP5056396 B2 JP 5056396B2 JP 2007326943 A JP2007326943 A JP 2007326943A JP 2007326943 A JP2007326943 A JP 2007326943A JP 5056396 B2 JP5056396 B2 JP 5056396B2
Authority
JP
Japan
Prior art keywords
module
software
normal
execution
failure
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.)
Expired - Fee Related
Application number
JP2007326943A
Other languages
English (en)
Other versions
JP2009151420A (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.)
Toyota Central R&D Labs Inc
Original Assignee
Toyota Central R&D Labs Inc
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 Toyota Central R&D Labs Inc filed Critical Toyota Central R&D Labs Inc
Priority to JP2007326943A priority Critical patent/JP5056396B2/ja
Publication of JP2009151420A publication Critical patent/JP2009151420A/ja
Application granted granted Critical
Publication of JP5056396B2 publication Critical patent/JP5056396B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、互いに入出力のやり取りを行う複数のモジュールによって構成されているソフトウェアの動作を監視するソフトウェア動作監視装置、及びそのプログラムに関する。
現在、多くの産業分野において、ソフトウェアの重要性が高まるとともに、ソフトウェアが大規模かつ複雑になっている。一例を挙げると、自動車産業においては、自動車のエレクトロニクス化が進展し、いわゆる車載システムに係るソフトウェアの開発量が急増している。こうした中で、ソフトウェアをリリースする際、全ての瑕疵(設計、コーディング等の欠陥、不具合のことであり、「バグ」とも呼ばれる。)をなくすことは非常に困難である。
そこで、ソフトウェアに潜在的なバグが含まれていることを前提として、システムが実際に稼動している時に、ソフトウェアのバグに起因した障害を予測または検出する仕組みが考案されている。例えば、特許文献1では、ソフトウェアの実行履歴から監視対象の動作を検出する第1の解析部と、検出された動作に対して正常動作パターンからの乖離を判定する第2の解析部とを具備するソフトウェア動作監視機構が開示されている。また、前述のソフトウェア動作監視機構を計算機の基本ソフトウェア(オペレーティングシステム)に導入し、複数のソフトウェアを監視する仕組みも開示されている。
特開2006−53788号公報
しかしながら、監視対象のソフトウェアの規模が大きくなると、誤検出(「正常」を「異常」と誤って判定し、検出すること。)の発生の可能性が高くなる。これは、後述するように、監視対象のソフトウェアの全ての正常動作パターンがシステム稼動前に網羅されていない場合は誤検出の発生の可能性が高くなるところ、規模が大きくなるにつれて、全ての正常動作パターンを網羅することは極めて困難になるからである。
ここで、図14を参照しながら、監視対象のソフトウェアの全ての正常動作パターンがシステム稼動前に網羅されていないと誤検出の発生の可能性が高くなることについて説明する。
図14は、ソフトウェアの動作の全体集合を示す図である。図14に示すように、ソフトウェアの動作は、(1)事前条件を充足しているパターン(=部分集合(B)、(C)、(D))、または(2)事前条件を違反しているパターン(=部分集合(A)、(E))の二つに分けられる。ここで、事前条件とは、ソフトウェアが実行されるときに必ず守られていなければならない条件である。また、事前条件を充足しているパターンの中でも、(1)−(b)動作が正常かつテスト実施済のパターン(=部分集合(B))、(1)−(c)動作が正常かつテスト未実施のパターン(=部分集合(C))、(1)−(d)動作が異常のパターン(=部分集合(D))の三つに分けられる。一方、事前条件違反のパターンの中でも、(2)−(a)テスト実施済のパターン(=部分集合(A))、(2)−(b)テスト未実施のパターン(=部分集合(E))の二つに分けられる。
ところで、システム稼動前に把握ができる正常動作パターンは、図14に示すパターンの中で、部分集合(B)のパターンのみとなる。従って、特許文献1の仕組みにおいて、検出された動作に対して正常動作パターンからの乖離を判定する第2の解析部は、部分集合(B)のパターン以外を「異常」と判定する。しかしながら、全ての正常動作パターンがシステム稼動前に網羅されていない場合、部分集合(C)のパターンが存在することになる。そして、部分集合(C)のパターンが実行された場合、第2の解析部は、「正常」の動作を「異常」の動作と判定し、誤検出が発生する。
また、特許文献1の仕組みについてのもう一つの問題点は、障害の予測を行うことができず、障害を未然に防ぐことができないことである。これは、監視対象がソフトウェア全体の動作であることに起因する。そして、ソフトウェア全体の動作を監視した結果、故障が発生したか、または故障が発生していないかのいずれかを検出するのみとなる。すなわち、部分的に発生する障害の兆候を捉えることはできない。
本発明は、前述した問題点に鑑みてなされたもので、その目的は、大規模なソフトウェアに対して、障害に至らしめる動作を正確に観測して誤検出を低減し、更に部分的に発生する障害の兆候を捉えて障害を予測できるソフトウェア動作監視装置等を提供することである。
前述した目的を達成するために第1の発明は、互いに入出力のやり取りを行う複数のモジュールによって構成されているソフトウェアの動作を監視するソフトウェア動作監視装置であって、モジュールの実行時の動作が記録される実行動作記録部を具備し、前記モジュールの実行時の動作を抽出し、前記実行動作記録部に記録するモジュール動作抽出部と、予め前記モジュールの正常動作が記録されている正常動作記録部を具備し、前記実行動作記録部及び前記正常動作記録部を参照し、前記モジュールの実行時の動作が正常、又は正常であるのか否かが判別不明、のいずれかを示す正常パターン比較表を更新するモジュール動作解析部と、前記正常パターン比較表を参照し、正常であるのか否かが判別不明であったモジュールが連続している故障伝播の度合いを示す故障伝播レベル表を更新する故障伝播解析部と、を具備することを特徴とするソフトウェア動作監視装置である。前記故障伝播解析部は、更に、前記モジュール間の距離を示すモジュール間距離表を具備し、前記モジュール間距離表も参照して前記故障伝播レベル表を更新するものであって良い。
また、監視対象のソフトウェアが周期実行タスクとして実行され、各モジュールが前回実行時の出力値を入力値として用いるものである場合、第1の発明に係るソフトウェア動作監視装置は、前記ソフトウェアの実行ごとに動作を監視するものであることが望ましい。
また、第1の発明に係るソフトウェア動作監視装置は、前記故障伝播レベル表を参照し、故障伝播の度合いを解析し、障害への進展を予測する障害予測部、を更に具備するものであっても良い。
また、前記モジュールの動作のパターンは、システムコールの時系列パターン、条件分岐パターン、他モジュールとの通信の時系列パターン等の任意の組み合わせとして定義されるものである。
また、監視対象のソフトウェアは連続する処理を行う複数のモジュールで構成され、より後続の処理を行う前記モジュールに対して、テスト実施済のパターンを増やすことが望ましい。
第1の発明に係るソフトウェア動作監視装置は、監視対象のソフトウェアの動作が正常であるところを異常と誤って判定し、検出するという誤検出の発生を低減することができる。また、第1の発明に係るソフトウェア動作監視装置は、部分的に発生する障害の兆候を捉えて障害を予測することができる。特に、監視対象のソフトウェアが周期実行タスクとして実行され、各モジュールが前回実行時の出力値を入力値として用いるものである場合、第1の発明に係るソフトウェア動作監視装置が、ソフトウェアの実行ごとに動作を監視することで、障害を正確に予測することができる。
第2の発明は、制御部および記憶部を具備する装置を第1の発明に係るソフトウェア動作監視装置として機能させるプログラムである。
本発明により、大規模なソフトウェアに対して、障害に至らしめる動作を正確に観測して誤検出を低減し、更に部分的に発生する障害の兆候を捉えて障害を予測できるソフトウェア動作監視装置等を提供することができる。
以下図面に基づいて、本発明の実施形態を詳細に説明する。
最初に、用語について説明する。まず、本発明の実施の形態におけるモジュールとは、事前条件を充足した場合にのみ事後条件を満足するプログラムである。事前条件とは、モジュールが呼び出されるときに必ず守られていなければならない条件である。また、事後条件とは、モジュールが終了するときに保証しなければならない条件である。そして、モジュールの動作が正常であるとは、仕様を満足する状態、すなわち事前条件を充足する入力値を与えたときに出力値が事後条件を満足する状態をいう。一方、モジュールの動作が異常であるとは、仕様を満足しない状態、すなわち事前条件を充足する入力値を与えたときに出力値が事後条件を満足しない状態をいう。更に、モジュールが故障しているとは、モジュールが正常に動作しない状態、すなわち異常または事前条件違反の状態である。
次に、図1から図5を参照しながら、本発明の基本的な考え方について説明する。尚、本発明の実施形態においては、監視対象のソフトウェアは、互いに入出力のやり取りを行う複数のモジュールによって構成されているものとする。
図1は、モジュールの動作の全体集合を示す図である。
図1に示すように、部分集合(A)は、事前条件を違反し、かつテスト実施済のパターンである。部分集合(A)に対しては、モジュールの正常動作を定義することができる。
部分集合(B)は、事前条件を充足し、かつテスト実施済のパターンである。部分集合(B)に対しては、モジュールの正常動作を定義することができる。
部分集合(C)および部分集合(D)は、事前条件を充足し、かつテスト未実施のパターンである。部分集合(C)は、モジュールの動作が正常のパターンである。一方、部分集合(D)は、モジュールの動作が異常のパターンである。このように、テスト未実施のパターンについては、モジュールの動作が正常または異常のいずれであるか判断をすることができない。
部分集合(E)は、事前条件を違反しているパターンである。この場合、モジュールの定義から言えば、出力値は事後条件を満足しないものであっても良い。
本発明の実施の形態に係るソフトウェア動作監視装置は、このようにモジュールの動作を捉えて、モジュール単位の動作を監視する。
図2は、モジュールの結合の一例を示す図である。モジュール同士は、互いに入出力のやり取りを行うことで結合されている。図2に示す例では、モジュールAとモジュールBとの間では、双方向に入出力のやり取りを行う。また、モジュールAとモジュールDとの間では、モジュールAの出力値をモジュールDの入力値として用いる。また、モジュールBとモジュールDとの間では、直接的な入出力のやり取りはない。このように、本発明の実施の形態においては、モジュール同士が任意のトポロジで結合していても良い。
図3は、故障伝播の一例を示す図である。故障伝播とは、モジュールが正常に動作しないことの連鎖である。図3に示す例では、モジュールAの出力値がモジュールBの入力値、モジュールBの出力値がモジュールCの入力値とする。図3に示すように、モジュールAの動作が「異常」(または「事前条件違反」)の場合、モジュールAの出力値は、後続のモジュールBの事前条件に違反する可能性が高いと推定される。そして、図3に示すように、モジュールAの出力値がモジュールBの事前条件に違反する場合、モジュールBの出力値は、更に後続のモジュールCの事前条件に違反する可能性が高いと推定される。このように、あるモジュールの動作が正常であるのか否かが判別不明の場合、後続のモジュールも正常であるのか否かが判別不明の動作になり、故障伝播が発生することになる。本発明の着眼点は、このような故障伝播を検出し、正常であるのか否かが判別不明のモジュールの特定、及びソフトウェア全体に影響を及ぼす障害への進展の予測をすることにある。
図4は、故障伝播と正常動作の区別を説明するための図である。図4(1)は、故障伝播の例である。図4(2)、図4(3)は、正常動作の例である。また、各例の下段には、モジュールの動作判定を行う装置(後述するソフトウェア動作監視装置は、モジュールの動作判定を行う機能を具備する。)による判定結果を示している。
図4(1)では、処理31aにおいて、モジュールAは事前条件を充足する入力値に対して、異常の動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールAの動作を不明と判定する。次に、処理31bにおいて、モジュールBは事前条件を違反する入力値に対して、何らかの動作をしている(黒丸で図示)。尚、事前条件を違反する入力値に対しては、動作が正常または異常のいずれであるかを判断する基準はない。この場合、モジュールの動作判定を行う装置は、モジュールBの動作を不明と判定する。次に、処理31cにおいて、モジュールCは事前条件を違反する入力値に対して、何らかの動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールCの動作を不明と判定する。このように、図4(1)では、故障伝播が発生している。
次に、図4(2)では、処理32aにおいて、モジュールAは事前条件を充足する入力値に対して、正常の動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールAの動作を不明と判定する。これは、処理32aにおけるモジュールAの動作がテスト実施済でないことから、正常または異常のいずれであるかを判断できないためである。次に、処理32bにおいて、モジュールBは事前条件を充足する入力値に対して、正常の動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールBの動作を不明と判定する。次に、処理32cにおいて、モジュールCは事前条件を充足する入力値に対して、正常の動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールCの動作を不明と判定する。このように、図4(2)では、故障伝播が発生していないにもかかわらず、モジュールの動作判定を行う装置は、全てのモジュールの動作を不明と判定している。これでは、図4(1)の例と図4(2)の例とを区別することができず、誤検出が発生してしまう。そこで、図4(3)の例を参照し、故障伝播を正確に検出するための一つの解決手段について説明する。
図4(3)では、処理33aにおいて、モジュールAは事前条件を充足する入力値に対して、正常の動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールAの動作を不明と判定する。次に、処理33bにおいて、モジュールBは事前条件を充足する入力値に対して、テスト実施済み、かつ正常の動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールBの動作を正常と判定する。次に、処理33cにおいて、モジュールCは事前条件を充足する入力値に対して、テスト実施済み、かつ正常の動作をしている(黒丸で図示)。この場合、モジュールの動作判定を行う装置は、モジュールCの動作を正常と判定する。このように、図4(3)では、モジュールの動作判定を行う装置は、モジュールAの動作を不明と判定しているが、後続のモジュールB、モジュールCの動作を正常と判定している。
図4(2)と図4(3)との相違点は、図4(3)におけるモジュールB、モジュールCの動作がテスト実施済であることである。すなわち、故障伝播を正確に検出するための一つの解決手段は、テスト実施済のパターンを増やすことである。特に、連続する処理を行うモジュールで構成するソフトウェアにおいて、より後続の処理を行うモジュールに対して、テスト実施済のパターンを増やすことで、先行のモジュールが不明と判定されても、後続のモジュールの動作の判定が正常に収束し、誤検出を減らすことができる。
図5は、テストの実施方法を説明するための図である。本発明の実施の形態では、発明の目的を達成するために、各モジュールについて、テスト未実施のパターンを可能な限り減らし、不必要に故障が伝播しないようにすることが望ましい。そのためには、次に説明するような方法でテストを実施すれば良い。
図5を参照しながら、テストの実施方法を説明する。図5に示す例では、モジュールAの出力値がモジュールXの入力値である。ここで、モジュールAのテストが終了し、モジュールXのテストをする場合を考える。前述の前提を満たす為には、テストデータとしてのモジュールXの入力値集合は、モジュールAをテストした際の出力値集合(但し、バグがあった場合には、バグを修正した後の出力値集合とする。)に加えて、モジュールXの事前条件を充足する他の値も含むものとすれば良い。そうすると、図5に示すように、モジュールAがテスト未実施のパターンの動作をしても(黒丸で図示)、モジュールAの出力値がモジュールXの事前条件を充足する限り、モジュールXはテスト実施済のパターンの動作をする(黒丸で図示)ことになり、不必要に故障が伝播することはない。
次に、図6と図7を参照しながら、動作判定の具体例について説明する。図6は、動作判定の対象となるモジュール構成の一例を示す図である。図6に示すモジュールA、モジュールB、モジュールCは、線形変換y=Ax(x、yは2次元ベクトル、Aは2×2行列)を実行するモジュールである。具体的には、各モジュールは、入力座標に対して、右回り変換を施した座標を出力する。但し、モジュールごとに、一定の領域内に含まれる座標群を事前条件として定めている。これは、一般に、モジュール分割によってソフトウェアを構成する場合、各モジュールの責任範囲を明確にするという考え方によるものである。
図6の凡例で示すように、事前条件充足の領域は、線形変換を正常に行うべき領域である。事前条件違反の領域は、線形変換を正常に行わなくてもよい領域である。正常の領域は、正常に線形変換できる領域である。異常の領域は、正常に線形変換できない領域である。テスト済の領域は、正常に線形変換できるかをテストした領域である。正常の領域とテスト済の領域が重なり合う領域は、正常パターンとして定義する領域であり、モジュールの動作判定を行う装置が確実に正常と判定できる。尚、入力値が正常の領域(テスト未実施の領域を含む。)であれば、確実に、後続のモジュールにおける事前条件充足の領域に変換されるものとする。また、それ以外の領域であれば、どの領域に変換されてもよいものとする。
図7は、図6に例示したモジュール構成における動作判定の一例を示す図である。図7(1)は、故障伝播と判定する例である。図7(2)は、正常動作と判定する例である。各モジュールの入力値および出力値は、黒丸で図示するものとする。
図7(1)に示すように、モジュールAは、事前条件を充足する入力値(xa、ya)に対して、異常の動作をしている。次に、モジュールBは、事前条件を違反する入力値(xb、yb)に対して、何らかの動作をしている。次に、モジュールCは、事前条件を違反する入力値(xc、yc)に対して、何らかの動作をしている。これらの実行結果を受けて、モジュールの動作判定を行う装置は、モジュールA、モジュールB、モジュールCの動作を不明と判定し、故障伝播を検出する。このように、あるモジュールにおいて異常が発生した場合、後続のモジュールにおいて事前条件違反が発生することで、不明と判定する動作が連続することになり、故障伝播を検出することができる。
次に、図7(2)に示すように、モジュールAは、事前条件を充足する入力値(xa、ya)に対して、正常の動作をしている。次に、モジュールBは、事前条件を違反する入力値(xb、yb)に対して、正常の動作をしている。次に、モジュールCは、事前条件を違反する入力値(xc、yc)に対して、テスト実施済、かつ正常の動作をしている。これらの実行結果を受けて、モジュールの動作判定を行う装置は、モジュールA、モジュールBの動作を不明、モジュールCの動作を正常と判定し、ソフトウェア全体の動作としては正常であると判定する。このように、図5の説明にて前述したテスト実施方法を行ったモジュールによってソフトウェアを構成すれば、各モジュールが正常の動作をしている限り、後続のモジュールにおいてテスト実施済のパターンに収束し、ソフトウェア全体の動作を正常と判定することができる。すなわち、誤検出が発生しない。
次に、図8を参照しながら、本発明の実施の形態に係るソフトウェア動作監視装置1のハードウェア構成について説明する。
図8は、ソフトウェア動作監視装置1のハードウェア構成図である。図8に示すように、ソフトウェア動作監視装置1は、制御部3、記憶部5、通信制御部7等が、バス9を介して接続される。尚、図8のハードウェア構成は一例であり、用途、目的に応じて様々な構成を採ることが可能である。
制御部3は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等で構成される。
CPUは、記憶部5、ROM等に格納されるプログラムをRAM上のワークメモリ領域に呼び出して実行し、バス9を介して接続された各装置を駆動制御し、ソフトウェア動作監視装置1が行う後述する処理を実現する。
ROMは、不揮発性メモリであり、ソフトウェア動作監視装置1のブートプログラムやBIOS等のプログラム、データ等を恒久的に保持している。
RAMは、揮発性メモリであり、記憶部5、ROM等からロードしたプログラム、データ等を一時的に保持するとともに、制御部3が各種処理を行う為に使用するワークエリアを備える。
記憶部5は、HDD(ハードディスクドライブ)またはEEPROM(Electrically Erasable Programmable ROM)等であり、制御部3が実行するプログラム、プログラム実行に必要なデータ等が格納される。プログラムに関しては、OS(オペレーティングシステム)に相当する制御プログラムや、後述の処理に相当するアプリケーションプログラムが格納されている。これらの各プログラムは、制御部3により必要に応じて読み出されてRAMに移され、CPUに読み出されて各種の手段として実行される。
通信制御部7は、通信制御装置、通信ポート等を有し、他の装置との通信を媒介する通信インタフェースであり、他の装置との通信制御を行う。
次に、図9から図13を参照しながら、ソフトウェア動作監視装置1の機能を実現する構成について説明する。以下では、監視対象のソフトウェアは周期実行タスクとして実行され、各モジュールは前回実行時の出力値を入力値として用いるものとする。そして、ソフトウェア動作監視装置1は、ソフトウェアの実行ごとに動作を監視するものとする。ソフトウェアが周期実行タスクとして実行されるようなシステムの一例としては、自動車に搭載される車載システムが挙げられる。車載システムの場合、各種のセンサを具備するモジュール(車載システムの場合、一般には、ハードウェアも含めてECU(Electric Control Unit)と呼ばれる。)が、実行周期T(Tは、数ms〜数十ms程度)ごとに、並列的に自らのタスクを実行する。各モジュールの出力値は、例えば、統括的なモジュールのRAM等にバッファとして一時的に保持され、次回実行時に各モジュールの入力値として用いられる。
図9は、ソフトウェア動作監視装置1の機能の概要を示すブロック図である。図9に示すように、ソフトウェア動作監視装置1は、モジュール動作抽出部13、モジュール動作解析部15、故障伝播解析部17等を具備する。また、11aはモジュールM1、11bはモジュールM2、11cはモジュールMkを示しており、これらのモジュールによって監視対象のソフトウェアが構成される。以下では、モジュールを総称する場合、モジュール11と記載し、例えば、モジュールM1のように特定のものを指称する場合と区別することとする。
モジュール動作抽出部13は、モジュール11の実行時の動作が記録される実行動作記録部19を具備し、モジュール11の実行時の動作を抽出し、実行動作記録部19に記録する。実行動作記録部19は、記憶部5等に記憶されるデータの集合であり、モジュール11が実行されると、モジュール11の実行時の動作がデータとして記録される。尚、実行動作記録部19に係るデータは、一定期間後に削除しても良い。
モジュール動作解析部15は、予めモジュール11の正常動作が記録されている正常動作記録部23を具備し、実行動作記録部19及び正常動作記録部23を参照し、モジュール11の実行時の動作が正常、又は正常であるのか否かが判別不明、のいずれかを示す正常パターン比較表21を更新する。正常動作記録部23は、記憶部5等に記憶されているデータの集合であり、モジュール11の正常動作がデータとして記録されている。正常動作記録部23に係るデータは、監視対象のソフトウェアに係るシステムが稼動している間に内容が更新されるものではない。正常パターン比較表21は、例えば、記憶部5に記憶されるデータの集合であり、モジュール動作解析部15が実行されると、モジュール動作解析部15の解析結果がデータとして記録される。尚、正常パターン比較表21に係るデータは、一定期間後に削除しても良い。
故障伝播解析部17は、正常パターン比較表21を参照し、正常であるのか否かが判別不明であったモジュール11が連続している故障伝播の度合いを示す故障伝播レベル表27を更新する。また、故障伝播解析部17は、更に、モジュール11間の距離を示すモジュール間距離表25を具備し、モジュール間距離表25も参照して故障伝播レベル表27を更新するものであっても良い。モジュール間距離表25は、記憶部5等に記憶されているデータの集合であり、モジュール11同士の距離がデータとして記録されている。モジュール間距離表25に係るデータは、監視対象のソフトウェアに係るシステムが稼動している間に内容が更新されるものではない。故障伝播レベル表27は、記憶部5等に記憶されるデータの集合であり、故障伝播解析部17が実行されると、故障が伝播している度合いがデータとして記録される。尚、故障伝播レベル表27に係るデータは、一定期間後に削除しても良い。
また、図示はしていないが、ソフトウェア動作監視装置1は、故障伝播レベル表27を参照し、故障伝播の度合いを解析し、障害への進展を予測する障害予測部を更に具備しても良い。障害予測部は、故障伝播レベルの値が閾値を超えた場合、高い確率で障害に進展すると判断し、監視対象のソフトウェアに係るシステムを安全に停止して、再起動等の対処処理も行うと良い。
図10は、モジュール動作抽出部13の詳細を示す図である。図10では、監視対象のソフトウェアを構成するモジュール11の数は3つとしている。各モジュール11は、時刻t(tは離散時刻であり、実行周期Tごとに1ずつ増加する値とする。)における実行時の動作のパターンに係る情報をソフトウェア動作監視装置1に送信する。例えば、P1(t)は、モジュールM1の時刻tにおける実行時の動作のパターンを示している。モジュール動作抽出部13は、各モジュール11から受信した時刻tにおける実行時の動作のパターンに係る情報を基に、実行時の動作のパターンを抽出し、実行動作記録部19に記録する。
ここで、モジュール11の動作に係るパターンについて説明する。最初に、モジュール11の動作をオートマトンとして捉えることができる場合を考える。オートマトンとは、(1)外から、連続している情報が入力される、(2)内部に状態を保持する、(3)外へ、何らかの情報を出力する、といった特徴を持ったシステムである。特許文献1では、システムコールの発生パターンを有限オートマトンとしてモデル化することが記載されている。この仕組みを本発明の実施の形態に応用することで、モジュール11の実行時の動作をパターンとして定義することができる。そして、モジュール動作抽出部13は、各モジュール11から実行したシステムコールの時系列情報を受信し、実行時の動作のパターンとして実行動作記録部19に記録する。尚、モデル化する対象は、システムコールだけでなく、更に、監視対象のソフトウェア独自の関数の呼び出しを含めても良い。
次に、モジュール11の動作をプログラムの構造からパターンの定義ができる場合を考える。例えば、C言語によって記述したプログラムであれば、if文、switch文などの条件分岐に着目してパターンの定義ができる。そして、各モジュール11は、実行時にどのような条件分岐を行ったかを変数に記憶し、実行終了後に当該変数の情報をソフトウェア動作監視装置1に送信する。更に、モジュール動作抽出部13は、各モジュール11から当該変数の情報を受信し、実行時の動作のパターンとして実行動作記録部19に記録する。
次に、モジュール11の動作を他モジュール11との通信の時系列パターンとして捉えることができる場合を考える。例えば、図10に示すモジュールM2が、モジュールM1、モジュールM3と通信を行いながら、自らのタスクを実行するものであるとする。この場合、モジュールM2の動作をモジュールM1、モジュールM3との通信の時系列パターンとして捉えることができる。具体的には、通信の時系列パターンは、例えば、happens−before関係として定義することができる。happens−before関係とは、例えば、モジュールM1からモジュールM2への通信が、モジュールM2からモジュールM3への通信よりも「事前に発生」するといった関係を言う。各モジュール11は、他モジュール11との通信に係るhappens−before関係等の時系列情報をソフトウェア動作監視装置1に送信する。そして、モジュール動作抽出部13は、各モジュール11からhappens−before関係等の時系列情報を受信し、実行時の動作のパターンとして実行動作記録部19に記録する。
モジュール11の動作に係るパターンは、以上の説明に係るパターンの任意の組合せとして定義される。すなわち、モジュール11の動作に係るパターンは、システムコールの時系列パターン、条件分岐パターン、他モジュールとの通信の時系列パターン等の任意の組み合わせとして定義されるものである。
図11は、モジュール動作解析部15の詳細を示す図である。図11では、時刻tにおけるモジュールM1〜M3の実行時の動作のパターンP1(t)〜P3(t)が実行動作記録部19に記録されている。また、モジュールM1〜M3の正常動作P1〜P3が正常動作記録部23に記録されている。
モジュール動作解析部15は、P1(t)とP1、P2(t)とP2、P3(t)とP3をそれぞれ比較する。比較方法は、例えば、モジュール11の動作をオートマトンとして定義した場合、入力P1(t)がオートマトンP1に受理されるか否かによって行う。受理された場合、P1(t)は正常と判断する。また、例えば、モジュール11の動作をパターンとして定義した場合、パターンP1(t)がパターン群P1の中に一致するものが存在するかどうかのパターン検索によって行う。一致するものが存在した場合、P1(t)は正常と判断する。
次に、モジュール動作解析部15は、比較結果から正常パターン比較表21を更新する。図11では、t=1のとき、モジュールM1〜M3の全てが正常な動作をしている。次に、t=2、3のとき、モジュールM1が正常であるのか否かが判別不明の動作をしている。次に、t=4のとき、モジュールM1、M2が正常であるのか否かが判別不明の動作をしている。次に、t=5のとき、モジュールM1〜M3の全てが正常であるのか否かが判別不明の動作をしている。このように、正常パターン比較表21には、複数のモジュール11の動作が正常か否かの情報が時系列順に記録される。
図12は、故障伝播解析部17の詳細を示す図である。図12では、正常パターン比較表21に、時刻t=1〜5におけるモジュールM1〜M3の動作が正常、又は正常であるのか否かが判別不明、のいずれかの情報が記録されている。また、モジュール間距離表25には、モジュールM1〜M3のそれぞれの距離の情報が記録されている。図12では、(A)モジュールM1の出力値がモジュールM2の入力値、(B)モジュールM2の出力値がモジュールM3の入力値、という入出力の関係がある場合を示している。このように、モジュール11間の入出力の関係が一方通行の場合、すなわち、逆の入出力の関係がない場合、モジュール間距離表25は対称行列にはならない。尚、値が「NULL」のモジュール11間は、故障が伝播しないことを意味する。従って、値が「NULL」のモジュール11間は、故障伝播レベルの算出において無視される。
また、図12では、故障伝播レベル表27に、時刻t=5における故障伝播レベルが記録されている。これは、故障伝播解析部17が、モジュール間距離表25を参照しない場合の例である。正常パターン比較表21を参照すると、時刻t=5のとき、モジュールM1は正常であるのか否かが判別不明の動作をしており、後続のモジュールM2、M3も正常であるのか否かが判別不明の動作をしている。従って、故障伝播解析部17は、モジュールM1について、故障が伝播した可能性のあるモジュール数が2個と判断する。そして、故障伝播解析部17は、故障伝播レベル表27におけるモジュールM1の値を「2」に更新する。また、時刻t=5のとき、モジュールM2は正常であるのか否かが判別不明の動作をしており、後続のモジュールM3も正常であるのか否かが判別不明の動作をしている。従って、故障伝播解析部17は、故障が伝播した可能性のあるモジュール数が1個と判断する。そして、故障伝播解析部17は、故障伝播レベル表27におけるモジュールM2の値を「1」に更新する。また、時刻t=5のとき、モジュールM3は正常であるのか否かが判別不明の動作をしているが、後続のモジュール11は存在しない。従って、故障伝播解析部17は、モジュールM3について、故障が伝播した可能性のあるモジュール数が0個と判断する。そして、故障伝播解析部17は、故障伝播レベル表27におけるモジュールM3の値を「0」に更新する。
次に、故障伝播解析部17が、モジュール間距離表25を参照する場合を考える。この場合、例えば、モジュールM1の故障伝播レベルを算出する際は、(a)モジュールM1からモジュールM2への距離(図12の例では第1行第2列の行列要素であり、値が「1」である。)、(b)モジュールM1からモジュールM3への距離(図12の例では第1行第3列の行列要素であり、値が「2」である。)を参照する。そして、図12の例では、時刻t=5のとき、モジュールM2、M3のいずれにも故障が伝播している可能性があることから、モジュールM1の故障伝播レベルは、例えば、両方の距離を足した値である「3」とする。また、モジュールM2の故障伝播レベルを算出する際は、(c)モジュールM2からモジュールM3への距離(図12の例では第2行第3列の行列要素であり、値が「1」である。)を参照する。そして、図12の例では、時刻t=5のとき、モジュールM3にも故障が伝播している可能性があることから、モジュールM2の故障伝播レベルは、例えば、モジュールM2からモジュールM3への距離の値である「1」とする。また、モジュールM3の故障伝播レベルを算出する際は、参照する値はない。従って、モジュールM2の故障伝播レベルは、例えば、「0」とする。
次に、図13を参照しながら、ソフトウェア動作監視装置1の動作の詳細について説明する。図13は、時刻tにおけるソフトウェア動作監視装置1の全体の流れを示すフローチャートである。以下では、説明の便宜上、監視対象のソフトウェアを構成する各モジュール11は、モジュールM1、モジュールM2、・・・、モジュールMkの順に処理を行うものとする。また、モジュールM1を除いた各モジュール11は、一つ前のモジュール11の出力値を入力値として用いるものとする。また、故障伝播レベルの算出については、故障伝播解析部17がモジュール間距離表25を参照しない場合を例にして説明する。
図13に示すように、ソフトウェア動作監視装置1の制御部3は、動作解析対象のモジュールMn(1≦n≦k)を決定する(ステップ101)。
次に、制御部3は、モジュール動作抽出部13によって、ステップ101で決定したモジュールMnの実行パスパターンPn(t)を抽出する(ステップ102)。抽出した実行パスパターンPn(t)は、実行動作記録部19に記録される。尚、モジュール11の実行動作の抽出処理は、各モジュール11から実行動作に係る情報を受信したときに行うようにしても良い。そして、ステップ102の処理が全てのモジュール11に対して終了した後、図13に示すフローチャートに係る処理を開始しても良い。
次に、制御部3は、モジュール動作解析部15によって、実行パスパターンPn(t)が、正常動作記録部23に記録されているモジュールMnの正常パスパターンPnと一致するかどうか確認する(ステップ103)。制御部3は、例えば、オートマトン受理、パターン検索等の方法によって、実行パスパターンPn(t)が正常パスパターンPnと一致するかどうか確認する。
一致する場合、制御部3は、モジュールMnの動作を「正常」と判断し(ステップ104)、判断結果を基に正常パターン比較表21を更新する。
一致しない場合、制御部3は、モジュールMnの動作を「不明」と判断し(ステップ105)、判断結果を基に正常パターン比較表21を更新する。
次に、制御部3は、全てのモジュール11について動作解析が終了したかどうか確認する(ステップ106)。
終了していない場合、制御部3は、ステップ101から処理を繰り返す(ステップ106のNo)。
終了している場合、制御部3は、ステップ107に進む(ステップ106のYes)。
次に、制御部3は、故障伝播解析対象のモジュールMn(1≦n≦k)を決定する(ステップ107)。
次に、制御部3は、故障伝播解析部17によって、正常パターン比較表21を参照し、ステップ107で決定したモジュールMnの動作が「正常」であるかどうか確認する(ステップ108)。
正常である場合、制御部3は、ステップ110に進む。
正常であるのか否かが判別不明の場合、制御部3は、ステップ107で決定したモジュールMnの後続のモジュール11の中で動作が「不明」であるモジュール11の個数Unをカウントし、故障伝播レベル表27を更新する(ステップ109)。
次に、制御部3は、全てのモジュール11について故障伝播解析が終了したかどうか確認する(ステップ110)。
終了していない場合、制御部3は、ステップ107から処理を繰り返す(ステップ110のNo)。
終了している場合、制御部3は、ステップ111に進む(ステップ110のYes)。
次に、制御部3は、障害進展の度合いを解析し(ステップ111)、必要があれば対処処理を行い、処理を終了する。
尚、説明の便宜上、監視対象のソフトウェアを構成する各モジュール11は、モジュールM1、モジュールM2、・・・、モジュールMkの順に処理を行うとしたが、本発明が適用できるソフトウェアはこのようなものに限られない。本発明は、モジュール11間の入出力の関係等を反映したモジュール間距離表25を用いることで、モジュール11同士が複雑に結合されているソフトウェアであっても、適用することができる。
以上説明したように、本発明の実施の形態によれば、ソフトウェア監視装置1は、ソフトウェアを構成する各モジュール11の動作を個別的に監視し、他のモジュール11への故障伝播を検出する。これによって、ソフトウェア監視装置1は、特定のモジュール11が正常であるのか否かが判別不明の動作(例えば、テスト未実施の正常パターンの動作)をしているが、他のモジュール11が正常の動作をしている場合などに即座にソフトウェア全体を故障と判断せず、誤検出を低減することができる。
また、ソフトウェア監視装置1は、部分的な障害の兆候を捉えることができるので、ソフトウェア全体に影響を及ぼす障害への進展を予測することができる。特に、監視対象のソフトウェアが周期実行タスクとして実行され、各モジュール11は前回実行時の出力値を入力値として用いる場合、図11に示した正常パターン比較表21のように、周期ごとに故障伝播を把握することができる為、障害予測において高い効果を奏する。
以上、添付図面を参照しながら、本発明に係るソフトウェア監視装置等の好適な実施形態について説明したが、本発明はかかる例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
モジュールの動作の全体集合を示す図 モジュールの結合の一例を示す図 故障伝播の一例を示す図 故障伝播と正常動作の区別を説明するための図 テストの実施方法を説明するための図 動作判定の対象となるモジュール構成の一例を示す図 図6に例示したモジュール構成における動作判定の一例を示す図 ソフトウェア動作監視装置1のハードウェア構成図 ソフトウェア動作監視装置1の機能の概要を示すブロック図 モジュール動作抽出部13の詳細を示す図 モジュール動作解析部15の詳細を示す図 故障伝播解析部17の詳細を示す図 時刻tにおけるソフトウェア動作監視装置1の全体の流れを示すフローチャート ソフトウェアの動作の全体集合を示す図
符号の説明
1………ソフトウェア動作監視装置
3………制御部
5………記憶部
7………通信制御部
9………バス
11………モジュール
13………モジュール動作抽出部
15………モジュール動作解析部
17………故障伝播解析部
19………実行動作記録部
21………正常パターン比較表
23………正常動作記録部
25………モジュール間距離表
27………故障伝播レベル表

Claims (7)

  1. 互いに入出力のやり取りを行う複数のモジュールによって構成されているソフトウェアの動作を監視するソフトウェア動作監視装置であって、
    モジュールの実行時の動作が記録される実行動作記録部を具備し、前記モジュールの実行時の動作を抽出し、前記実行動作記録部に記録するモジュール動作抽出部と、
    予め前記モジュールの正常動作が記録されている正常動作記録部を具備し、前記実行動作記録部及び前記正常動作記録部を参照し、前記モジュールの実行時の動作が正常、又は正常であるのか否かが判別不明、のいずれかを示す正常パターン比較表を更新するモジュール動作解析部と、
    前記正常パターン比較表を参照し、正常であるのか否かが判別不明であったモジュールが連続している故障伝播の度合いを示す故障伝播レベル表を更新する故障伝播解析部と、
    を具備することを特徴とするソフトウェア動作監視装置。
  2. 前記故障伝播解析部は、更に、前記モジュール間の距離を示すモジュール間距離表を具備し、前記モジュール間距離表も参照して前記故障伝播レベル表を更新するものであることを特徴とする請求項1に記載のソフトウェア動作監視装置。
  3. 監視対象のソフトウェアは周期実行タスクとして実行され、各モジュールは前回実行時の出力値を入力値として用いるものであって、
    前記ソフトウェアの実行ごとに動作を監視するものであることを特徴とする請求項1または請求項2に記載のソフトウェア動作監視装置。
  4. 前記故障伝播レベル表を参照し、故障伝播の度合いを解析し、障害への進展を予測する障害予測部、
    を更に具備することを特徴とする請求項1から請求項3のいずれかに記載のソフトウェア動作監視装置。
  5. 前記モジュールの動作のパターンは、システムコールの時系列パターン、条件分岐パターン、他モジュールとの通信の時系列パターン等の任意の組み合わせとして定義されるものであることを特徴とする請求項1から請求項4のいずれかに記載のソフトウェア動作監視装置。
  6. 監視対象のソフトウェアは連続する処理を行う複数のモジュールで構成され、より後続の処理を行う前記モジュールに対して、テスト実施済のパターンを増やすことを特徴とする請求項1から請求項5のいずれかに記載のソフトウェア動作監視装置。
  7. 制御部および記憶部を具備する装置を請求項1から請求項6のいずれかに記載のソフトウェア動作監視装置として機能させるプログラム。
JP2007326943A 2007-12-19 2007-12-19 ソフトウェア動作監視装置、プログラム Expired - Fee Related JP5056396B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007326943A JP5056396B2 (ja) 2007-12-19 2007-12-19 ソフトウェア動作監視装置、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007326943A JP5056396B2 (ja) 2007-12-19 2007-12-19 ソフトウェア動作監視装置、プログラム

Publications (2)

Publication Number Publication Date
JP2009151420A JP2009151420A (ja) 2009-07-09
JP5056396B2 true JP5056396B2 (ja) 2012-10-24

Family

ID=40920535

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007326943A Expired - Fee Related JP5056396B2 (ja) 2007-12-19 2007-12-19 ソフトウェア動作監視装置、プログラム

Country Status (1)

Country Link
JP (1) JP5056396B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5867962B2 (ja) * 2012-02-16 2016-02-24 Necプラットフォームズ株式会社 情報処理装置および故障診断方法
JP5714543B2 (ja) * 2012-08-23 2015-05-07 トヨタ自動車株式会社 自己監視機能を備えたコンピュータ、監視プログラム
JP6528999B2 (ja) * 2015-06-08 2019-06-12 富士電機株式会社 電源装置
CN115461723A (zh) * 2020-04-27 2022-12-09 三菱电机株式会社 信息处理装置以及信息处理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293401A (ja) * 1999-04-02 2000-10-20 Hitachi Ltd ソフトウェア異常処理装置を備えた分散処理計算機システム
JP2006053788A (ja) * 2004-08-12 2006-02-23 Ntt Docomo Inc ソフトウェア動作監視装置及びソフトウェア動作監視方法
JP2007249373A (ja) * 2006-03-14 2007-09-27 Osaka Prefecture Univ 分散型プログラムの監視システム

Also Published As

Publication number Publication date
JP2009151420A (ja) 2009-07-09

Similar Documents

Publication Publication Date Title
Soualhia et al. Infrastructure fault detection and prediction in edge cloud environments
US9245116B2 (en) Systems and methods for remote monitoring, security, diagnostics, and prognostics
KR102025556B1 (ko) 처리 장치, 추적 유닛 및 진단 장치
US8340923B2 (en) Predicting remaining useful life for a computer system using a stress-based prediction technique
JP4124514B2 (ja) エラー診断装置およびエラー診断方法
KR20110064971A (ko) 추적점 기반의 고장 진단/복구 시스템 및 그 방법
WO2017051562A1 (ja) 異常診断システム
JP5056396B2 (ja) ソフトウェア動作監視装置、プログラム
EP3839727A1 (en) Multi-model code management
CN110825561A (zh) 控制系统以及控制装置
KR102340395B1 (ko) 플랜트의 고장을 진단하기 위한 장치 및 이를 위한 방법
US8359577B2 (en) Software health management testbed
US8161324B2 (en) Analysis result stored on a field replaceable unit
JP6880961B2 (ja) 情報処理装置、およびログ記録方法
Abreu et al. A Model-Based Software Reasoning Approach to Software Debugging
WO2016063816A1 (ja) 計算機システムの異常予兆検出装置および方法
US20200310907A1 (en) Augmented exception prognosis and management in real time safety critical embedded applications
US11526162B2 (en) Method for detecting abnormal event and apparatus implementing the same method
JP2009223714A (ja) 演算回路及び演算回路の異常解析方法
CN100369009C (zh) 使用系统管理中断信号的监控系统及方法
Salfner et al. Cross-core event monitoring for processor failure prediction
GB2590414A (en) Anomaly detection for code management
WO2020109252A1 (en) Test system and method for data analytics
JP2010122133A (ja) 故障箇所特定システム、故障箇所特定方法
GB2590416A (en) Logistic model for code management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120417

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120716

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees