(57)【要約】【課題】データフロー図の任意の処理ブロックに設計変更が行われた場合に、その設計変更の影響を推定する。【解決手段】ソフトウェアにより実行される処理を複数の処理に分解し、且つ各処理を示す複数の処理ブロックと、処理ブロックによる処理の流れを示すデータ線とを生成し情報処理を行うソフトウェア検証装置は、処理ブロックにより実行される処理と、該処理ブロックにより実行される処理が変更された場合に、該処理ブロックに入力される情報の該変更による影響の度合いを示す影響度を表す情報とを紐付けた影響度データベースと、複数の処理ブロックのうち、第１の処理ブロックにより実行される処理が変更された場合に、影響度データベースを参照し、第１の処理ブロックと接続され、且つ第１の処理ブロックの後段となる第２の処理ブロックについて、第１の処理ブロックにより実行される処理の変更による影響度を演算する演算部とを有する。【選択図】図１
2015072505.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアにより実行される処理を複数の処理に分解し、且つ各処理を示す複数の処理ブロックと、処理ブロックによる処理の流れを示すデータ線とを生成し情報処理を行うソフトウェア検証装置であって、
処理ブロックにより実行される処理と、該処理ブロックにより実行される処理が変更された場合に、該処理ブロックに入力される情報の該変更による影響の度合いを示す影響度を表す情報とを紐付けた影響度データベースと、
前記複数の処理ブロックのうち、第１の処理ブロックにより実行される処理が変更された場合に、前記影響度データベースを参照し、前記第１の処理ブロックと接続され、且つ前記第１の処理ブロックの後段となる第２の処理ブロックについて、前記第１の処理ブロックにより実行される処理の変更による影響度を演算する演算部と
を有する、ソフトウェア検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア検証装置に関する。
【背景技術】
【０００２】
ソフトウェア開発のためにツール群などを利用することが行われている。
【０００３】
例えば、CASE(Computer Aided Software Environment)ツールは、ソフトウェアを開発するために、構造化手法、オブジェクト指向分析などの方法論に基づいてソフトウェア開発の作法を規定する。さらに、CASEツールでは、これらの方法論で採用されているドキュメントの記法を用いて仕様書を作成するためのエディタを提供する。例えば構造化手法を採用するものは、データフロー図などの情報システムのデータの流れ(flow)をグラフィカルに表現する図を描画するためのエディタを有する。
【０００４】
例えば、データフロー図により制御システムの概要を表現する際には、「処理ブロック」と「データ線」により処理の流れを表す。データフロー図を使用することにより、システムの全体像を把握できるため、システム設計行為やレビューの効率化を図ることができる。
【０００５】
任意の成果物を修正する際に、その修正内容に応じて関連する成果物の情報を提示するソフトウェア開発支援方式が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−１６３９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データフロー図を使用し、設計行為やレビューの留意点や着目点に見当を付けるには、設計者やデザインレビューを行う者のスキルや勘に頼ることが多い。
【０００８】
特に、制御システムの一部に設計変更を行う場合、その設計変更による影響のおよぶ範囲や影響の大きさを推測し、その影響への対応を検討することは非常に重要なプロセスである。設計変更による影響のおよぶ範囲や影響の大きさを推測し、その影響への対応を検討することは、DRBFM(Design Review based on Failure Modes)と呼ばれることがある。
【０００９】
データフロー図を使用してDRBFMを行う際、設計変更の影響を表すために設計変更された箇所(処理ブロック)からデータ線を機械的に辿った経路を影響範囲とすることもできる。しかし、この場合、後段になるにしたがって、影響範囲とされる処理ブロックが多くなり、且つ広がるため、効率的に影響範囲を求めることはできない。つまり、このような非常に重要なプロセスであっても、設計者やデザインレビューを行う者のスキルや勘に頼ることが多い。
【００１０】
本発明は、データフロー図の任意の処理ブロックに設計変更が行われた場合に、その設計変更の影響を推定することである。
【課題を解決するための手段】
【００１１】
開示の一実施例のソフトウェア検証装置は、
ソフトウェアにより実行される処理を複数の処理に分解し、且つ各処理を示す複数の処理ブロックと、処理ブロックによる処理の流れを示すデータ線とを生成し情報処理を行うソフトウェア検証装置であって、
処理ブロックにより実行される処理と、該処理ブロックにより実行される処理が変更された場合に、該処理ブロックに入力される情報の該変更による影響の度合いを示す影響度を表す情報とを紐付けた影響度データベースと、
前記複数の処理ブロックのうち、第１の処理ブロックにより実行される処理が変更された場合に、前記影響度データベースを参照し、前記第１の処理ブロックと接続され、且つ前記第１の処理ブロックの後段となる第２の処理ブロックについて、前記第１の処理ブロックにより実行される処理の変更による影響度を演算する演算部と
を有する。
【発明の効果】
【００１２】
開示の実施例によれば、データフロー図の任意の処理ブロックに設計変更が行われた場合に、その設計変更の影響を推定することができる。
【図面の簡単な説明】
【００１３】
【図１】ソフトウェア検証装置の一実施例を示す図である。
【図２】データフロー図の一例を示す図である。
【図３】ソフトウェア検証装置の動作の一実施例を示す図である。
【図４】データフロー図の一例を示す図である。
【図５】影響度データベースの一例を示す図である。
【発明を実施するための形態】
【００１４】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。以下で説明する実施例は一例に過ぎず、本発明が適用される実施の形態は、以下の実施例に限られない。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００１５】
＜実施例＞
＜ソフトウェア検証装置１００＞
図１に、ソフトウェア検証装置１００の一実施例を示す。ソフトウェア検証装置１００は、任意のシステムを制御する制御ソフトウェアを検証する。
【００１６】
ソフトウェア検証装置１００は、検証対象のソフトウェア、例えば制御ソフトウェア（以下、「ソフトウェア」という）が入力されると、ソフトウェアの検証要件を自動生成し、その検証要件に応じてソフトウェアを検証する。
【００１７】
さらに、ソフトウェア検証装置１００は、設計変更などにより検証対象のソフトウェアの一部が変更される場合に、その設計変更された部分が他の部分におよぼす影響を演算する。
【００１８】
ソフトウェア検証装置１００は、ソフトウェアの検証を主に行う専用の装置で実現されてもよいし、汎用コンピュータで制御ソフトウェア検証用のアプリケーションを実行することにより実現されてもよい。ソフトウェア検証装置１００は、CPU、記憶装置、表示装置などのハードウェアにより構成される。
【００１９】
検証対象のソフトウェアは、単一の言語で記述されたものであってもよいし、異なる複数の言語で記述されたものであってもよい。記述言語としては、様々な言語が適用可能である。例えば、Ｃ言語などの手続き型言語、Simulinkなどのデータフロー型のモデリング言語で記述されてもよい。
【００２０】
ソフトウェア検証装置１００は、機能モデル生成部１０２と、影響度演算部１０４と、影響度評価部１０６と、影響度データベース１０８とを備える。図１においては、ソフトウェアの検証を行う部分についての機能ブロックは省略される。
【００２１】
機能モデル生成部１０２には、検証対象のソフトウェアが入力される。機能モデル生成部１０２は、検証対象のソフトウェアから機能モデルを生成する。機能モデルは、ソフトウェアの検証を行うポイントを抽出してモデル化することにより、ソフトウェアの機能を網羅したものである。
【００２２】
機能モデルは、ソフトウェアの検証を行う者がソフトウェアの機能を容易に読み解けるように、目に見える形で示される。このように機能モデルという形で明示することにより、ソフトウェアの検証を行う者が機能モデルを見て検証する機能が網羅されているか否かが容易に判る。
【００２３】
ソフトウェアを実現する制御機能は様々な側面を有するため、その制御機能の各側面に応じた機能モデルでモデル化される。例えば、ソフトウェアを実現する制御機能は、制御フローであればデータフローグラフモデル（ＤＦＧモデル）、制御モードの切り替えであれば状態遷移モデル、タイミングの問題であればTimed Automataでモデル化される。
【００２４】
ソフトウェア検証装置１００の一実施例では、データフローグラフモデルが適用される。データフローグラフモデル以外のモデルについても適用できる。例えば、状態遷移モデルが適用された場合には、変更された状態が他の状態におよぼす影響を演算できる。データフローグラフモデルにより制御システムの概要を表現する際には、ソフトウェアにより実行される制御機能が１または複数の処理に分解される。各処理を表すために「処理ブロック」が用意され、「処理ブロック」間を「データ線」により接続することにより、処理の流れが表される。
【００２５】
「処理ブロック」は、ソフトウェアにより実行される制御機能を分解した処理を表す。「データ線」は、処理ブロック間で授受する情報の流れを表す。前段の処理ブロックにより実行される処理は、後段の処理ブロックの処理に影響をおよぼす（与える）。
【００２６】
図２は、データフロー図の一例を示す。データフロー図は、システムの制御内容を表す。
【００２７】
図２に示されるデータフロー図は、処理Ａブロック２０２と、処理Ａブロック２０２とデータ線により接続され、処理Ａブロック２０２からの出力信号(情報)が入力される後段となる処理Ｂブロック２０４および処理Ｃブロック２０６で表される。
【００２８】
さらに、データフロー図は、処理Ｂブロック２０４とデータ線により接続され、処理Ｂブロック２０４からの出力信号(情報)が入力される後段となる処理Ｄブロック２０８で表される。
【００２９】
さらに、データフロー図は、処理Ｄブロック２０８とデータ線により接続され、処理Ｄブロック２０８からの出力信号(情報)が入力される後段となる処理Ｇブロック２１４で表される。
【００３０】
さらに、データフロー図は、処理Ｃブロック２０６とデータ線により接続され、処理Ｃブロック２０６からの出力信号(情報)が入力される後段となる処理Ｅブロック２１０および処理Ｆブロック２１２で表される。
【００３１】
さらに、データフロー図は、処理Ｆブロック２１２とデータ線により接続され、処理Ｆブロック２１２からの出力信号(情報)が入力される後段となる処理Ｈブロック２１６で表される。
【００３２】
ソフトウェア検証装置１００の説明に戻る。
【００３３】
影響度演算部１０４は、機能モデル生成部１０２と接続される。影響度演算部１０４には、処理ブロックにより実行される処理を変更する命令が入力される。影響度演算部１０４は、設計変更などによりある処理ブロックに変更が生じる場合に、その変更が生じた処理ブロックにより他の処理ブロックに与える影響度を演算する。演算内容と該演算内容により示される演算により演算前の情報におよぼす影響の度合いを表す影響係数とが紐付けられたデータベースが用意され、影響度を演算する際に参照される。
【００３４】
影響度評価部１０６は、影響度演算部１０４で演算された影響度に基づいて、変更が生じた処理ブロックにより他の処理ブロックに与える影響度を評価する。例えば、各処理ブロックを影響度に応じて色の濃淡を付するようにしてもよいし、色分けして表示するようにしてもよい。また、閾値以上の影響度の処理ブロックと、閾値未満の影響度の処理ブロックとを異なる色で表示するようにしてもよい。
【００３５】
影響度データベース１０８は、影響度演算部１０４と接続される。影響度データベース１０８は、演算内容と該演算内容により示される演算により演算前の情報におよぼす影響の度合いを表す影響係数とを紐付けて格納する。
【００３６】
＜ソフトウェア検証装置１００の動作＞
図３は、ソフトウェア検証装置１００の動作を示す。
【００３７】
ステップＳ３０２では、機能モデル生成部１０２は、検証対象のソフトウェアから、データフロー図を生成する。
【００３８】
図３に示される例では、ソフトウェア検証装置１００は、センサ（１）３０２と、処理Ａブロック３０４−処理Ｊブロック３２２と、アクチュエータ（１）３２４−アクチュエータ（５）３３２からなるデータフローグラフを生成する。処理Ａブロック３０４−処理Ｊブロック３２２により、それぞれ処理Ａ−処理Ｊが実行される。
【００３９】
センサ（１）３０２から、種々のセンサによる検出値が出力される。処理Ａブロック３０４−処理Ｊブロック３２２は、センサ（１）３０２からの検出値に対して、種々の処理を行う。アクチュエータ（１）３２４−アクチュエータ（５）３３２は、処理Ａブロック３０４−処理Ｊブロック３２２から出力される情報を物理的運動に変換する。
【００４０】
ステップＳ３０４では、影響度演算部１０４は、変更が生じた処理ブロックにより実行される処理が他の処理ブロックにより実行される処理に与える影響度を演算する。例えば、処理Ａブロック３０４により実行される処理Ａに設計変更が生じた場合について説明する。処理Ａブロック３０４により実行される処理Ａに設計変更が生じた場合、処理Ａブロック３０４に接続され、且つ処理Ａブロック３０４の後段となる処理Ｂブロック３０６および処理Ｃブロック３０８に影響がおよぶと想定される。影響度演算部１０４は、処理Ｂブロック３０６および処理Ｃブロック３０８について、処理Ａブロック３０４への設計変更による影響度を演算する。ここでは、一例として、処理Ｃブロック３０８についての影響度の演算例について説明する。
【００４１】
図３に示されるように、処理Ｃブロック３０８は、加算器(sum)３０８２と、増幅器(gain)３０８４と、スイッチ３０８６とから構成される。影響度演算部１０４は、処理Ｃブロック３０８への影響度を演算する際に、影響度データベース１０８から、処理Ｃブロック３０８に含まれる演算子の影響度係数を取得する。
【００４２】
図３には、影響度データベース１０８の一例として、Simulinkに適用される演算子による演算内容と、演算内容により表される演算がおよぼす影響の度合いを示す影響度係数とが紐付けられる。ここでは、加算器(Sum)３０８２の影響度係数０．８と、増幅器(Gain)３０８４の影響度係数０．９５と、スイッチ(Switch)３０８６の影響度係数０．５が取得される。影響度演算部１０４は、影響度データベース１０８から取得した影響度係数に基づいて、処理Ｃブロック３０８の影響度を演算する。
【００４３】
ここで、処理Ｃブロック３０８には、設計変更される処理Ａブロック３０４から出力される信号が直接入力されるため、影響度は「１」（初期値）とされる。加算器３０８２では、処理Ａブロック３０４から出力される信号と定数「５」とが加算される。一方、加算器３０８２の影響度係数は「０．８」である。影響度演算部１０４は、演算子への入力信号の影響度と、該演算子の影響度係数とを乗算することにより、演算子からの出力信号の影響度を演算する。例えば、影響度演算部１０４は、加算器３０８２への入力信号の影響度１と、加算器３０８２の影響度係数０．８とを乗算することにより、加算器３０８２からの出力信号の影響度０．８を演算する。
【００４４】
加算器３０８２から出力された信号は、増幅器３０８４へ入力される。増幅器３０８４の影響度係数は、０．９５である。影響度演算部１０４は、増幅器３０８４への入力信号の影響度０．８と、増幅器３０８４の影響度係数０．９５とを乗算することにより、増幅器３０８４からの出力信号の影響度０．７６を演算する。
【００４５】
増幅器３０８４から出力された信号は、スイッチ３０８６へ入力される。スイッチ３０８６の影響度係数は、０．５である。影響度演算部１０４は、スイッチ３０８６への入力信号の影響度０．７６と、スイッチ３０８６の影響度係数０．５とを乗算することにより、スイッチ３０８６からの出力信号の影響度０．３８を演算する。
【００４６】
影響度演算部１０４は、処理Ｃブロック３０８と接続される処理Ｄブロック３１０と、処理Ｅブロック３１２について、入力される信号の影響度を０．３８として、上述した演算を適用する。処理Ｄブロック３１０に対する演算後、処理Ｄブロック３１０と接続され、且つ後段となる処理Ｈブロック３１８および処理Ｉブロック３２０について、入力される信号の影響度を処理Ｄブロック３１０の影響度として、上述した演算を適用する。影響度の演算は、一段毎に行われるのが好ましい。
【００４７】
ステップＳ３０６では、影響度評価部１０６は、処理ブロックごとに影響度の演算結果を可視化する。例えば、影響度評価部１０６は、色の濃淡で、影響度を表すようにしてもよい。影響度を色の濃淡で表すことにより、ユーザは影響度を直感的に判別可能となる。図３に示される例では、影響度が０．６以上となる処理ブロックに色づけが実行される。
【００４８】
ソフトウェア検証装置の一実施例によれば、データフロー図の任意の処理ブロックについて、その処理ブロックによる処理が後段の処理ブロックにおよぼす影響を推定できるとともに可視化できる。
【００４９】
＜変形例＞
ソフトウェア検証装置の一変形例は、図１に示されるソフトウェア検証装置１００を適用できる。
【００５０】
ソフトウェア検証装置の一変形例は、処理ブロックにより実行される処理について、処理内容と該処理内容により示される処理により処理前の情報におよぼす影響の度合いを表す影響係数とが紐付けられた影響度データベースが用意される。上述した実施例では、影響度データベースに、演算内容と該演算内容により示される演算により演算前の情報におよぼす影響の度合いを表す影響係数とを紐付けて格納する。これに対し、変形例では、影響度データベースに、処理内容と該処理内容により示される処理により処理前の情報におよぼす影響の度合いを表す影響係数とが紐付けて格納する。
【００５１】
ソフトウェア検証装置は、設計変更などによりある処理ブロックに変更が生じる場合に、その変更が生じた処理ブロックにより他の処理ブロックに与える影響度を演算する際に、影響度データベースを参照する。
【００５２】
機能モデル生成部１０２は、検証対象のソフトウェアから、データフローグラフを生成する。
【００５３】
図４は、データフロー図の一例を示す図である。
【００５４】
図４に示される例では、ソフトウェア検証装置１００は、センサ（１）４０２と、処理Ａブロック４０４−処理Ｊブロック４２２と、アクチュエータ（１）４２４−アクチュエータ（５）４３２からなるデータフローグラフを生成する。処理Ａブロック４０４−処理Ｊブロック４２２により、それぞれ処理Ａ−処理Ｊが実行される。
【００５５】
影響度演算部１０４は、変更が生じた処理ブロックにより実行される処理が他の処理ブロックにより実行される処理に与える影響度を演算する。例えば、処理Ａブロック４０４により実行される処理Ａに設計変更が生じた場合について説明する。処理Ａブロック４０４により実行される処理Ａに設計変更が生じた場合、処理Ａブロック４０４に接続され、且つ処理Ａブロック４０４の後段となる処理Ｂブロック４０６および処理Ｃブロック４０８に影響がおよぶと想定される。影響度演算部１０４は、処理Ｂブロック４０６および処理Ｃブロック４０８について、処理Ａブロック４０４への設計変更による影響度を演算する。ここでは、一例として、処理Ｂブロック４０６についての影響度の演算例について説明する。
【００５６】
図４に示されるように、処理Ｂブロック４０６の処理内容は、信号変換である。
影響度演算部１０４は、処理Ｂブロック４０６への影響度を演算する際に、影響度データベース２０８から、処理Ｂブロック４０６により実行される処理に紐付けられた影響度係数を取得する。
【００５７】
図５は、影響度データベース２０８の一例を示す。図５には、処理の属性と、処理によりおよぼす影響の度合いを示す影響度係数とが紐付けられる。ここでは、信号変換の影響度係数１．０が取得される。影響度演算部１０４は、影響度データベース２０８から取得した影響度係数に基づいて、処理Ｂブロック４０６の影響度を演算する。
【００５８】
ここで、処理Ｂブロック４０６には、設計変更される処理Ａブロック４０４から出力される信号が直接入力されるため、影響度は「１」（初期値）とされる。影響度演算部１０４は、処理ブロックへの入力信号の影響度と、該処理ブロックの影響度係数とを乗算することにより、該処理ブロックからの出力信号の影響度を演算する。例えば、影響度演算部１０４は、処理Ｂブロック４０６への入力信号の影響度「１」と、該処理Ｂブロック４０６の影響度係数「1」とを乗算することにより、処理Ｂブロック４０６からの出力信号の影響度「１」を演算する。
【００５９】
影響度演算部１０４は、処理Ｂブロック４０６と接続される処理Ｆブロック４１４および処理Ｇブロック４１６について、入力される信号の影響度を前段の処理Ｂブロック４０６からの出力信号の影響度１として、上述した演算を適用する。影響度の演算は、一段毎に行われるのが好ましい。
【００６０】
影響度評価部１０６は、処理ブロックごとに影響度の演算結果を可視化する。例えば、影響度評価部１０６は、色の濃淡で、影響度を表すようにしてもよい。影響度を色の濃淡で表すことにより、ユーザは影響度を直感的に判別可能となる。
【００６１】
ソフトウェア検証装置の一変形例によれば、データフロー図の任意の処理ブロックについて、その処理ブロックによる処理が後段の処理ブロックにおよぼす影響を推定できるとともに可視化できる。
【００６２】
処理ブロックによる処理と、その処理により後段の処理ブロックにおよぼす影響度の度合いを示す影響度係数が紐付けられるため、処理ブロックにより個々の演算に影響度係数が紐付けられるよりも演算負荷を低減できる。
【００６３】
以上、本発明は特定の実施例及び変形例を参照しながら説明されてきたが、各実施例及び変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウエアで、ソフトウエアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【００６４】
１００  ソフトウェア検証装置
１０２  機能モデル生成部
１０４  影響度演算部
１０６  影響度評価部
１０８  影響度データベース
２０８  影響度データベース
【図１】
2015072505.tif 000003
【図２】
2015072505.tif 000004
【図３】
2015072505.tif 000005
【図４】
2015072505.tif 000006
【図５】
2015072505.tif 000007