(57)【要約】【課題】ソフトウェアの仕様を表すモデルを用いるソフトウェア開発において、モデルとソースコードの２重管理の手間が省く。。【解決手段】前記モデルデバッグ装置は、設備データの更新を伴うソフトウェアの仕様を、設備データを更新するための条件を示す条件部と、条件部に記述された条件が成立した場合に実行する、設備データの更新内容を示す定義部との対応関係で表す決定表モデルを用いて、モデルおよび設備データの更新情報を出力するログ出力部を含むソースコードを生成し、生成したソースコードをコンパイル・実行して実行ログを出力し、その実行ログ情報を用いて決定表モデルを表示し、決定表モデルの中で識別情報が示す処理単位を強調表示し、設備データの更新情報を表示する。【選択図】図１
2011165039.tif 000002
【特許請求の範囲】
【請求項１】
設備データの更新を伴うソフトウェアの仕様を、前記設備データを更新するための条件を示す条件部と、前記条件部に記述された条件が成立した場合に実行する、前記設備データの更新内容を示す定義部との対応関係で表す決定表モデルを編集するモデル編集手段と、
編集された前記決定表モデルからソースコードを生成し、前記設備データを更新する処理である処理単位毎に、前記処理単位を含む前記決定表モデル、前記処理単位を識別する識別情報、および前記設備データの更新情報を出力するログ処理を生成された前記ソースコードに追加するソースコード生成手段と、
前記ソースコードの実行に伴い、前記ログ処理により得られる実行ログを読み込み、前記実行ログに含まれる前記決定表モデルを表示し、前記決定表モデルの中で前記識別情報が示す前記処理単位を強調表示し、前記設備データの更新情報を表示する実行結果表示手段とを備えることを特徴とするモデルデバッグ装置。
【請求項２】
前記設備データの初期値を保持する初期化データ保持手段を備え、前記実行結果表示手段は、前記実行ログに含まれる前記設備データの更新情報を用いて、前記初期化データ保持手段に保持される前記設備データの前記初期値を更新し、前記初期化データ保持手段に保持される他の設備データを含む設備データのスナップショットを表示することを特徴とする請求項１に記載のモデルデバッグ装置。
【請求項３】
前記モデルデバッグ装置において、前記決定表モデルの一覧と、前記決定表モデルに含まれる前記設備データの一覧を表示し、ユーザによる、前記決定表モデルの一覧における決定表モデルの指定、および/または前記設備データの一覧における設備データの指定に応答して、指定されたモデルおよび設備データをブレークポイント情報として保存するブレークポイント保持手段を設け、
前記実行結果表示手段は、前記ブレークポイント情報として指定された前記モデルまたは前記設備データに至る所までの前記実行ログを読み込み、読み込んだ前記実行ログに含まれる前記設備データの更新情報を用いて、前記初期化データ保持手段に保持される前記設備データの前記初期値を更新することを特徴とする請求項２に記載のモデルデバッグ装置。
【請求項４】
前記ブレークポイント保持手段は、１度の実行でモデルの誤りを発見できなかった場合に、前回実行時に保存した前記ブレークポイント情報に含まれる前記モデルの構成要素を呼び出す行を前記モデルから導出し、前記モデルの構成要素の一覧上で強調表示しユーザーの選択を支援することを特徴とする請求項３に記載するモデルデバッグ装置。
【請求項５】
前記ブレークポイント保持手段は、１度の実行でモデルの誤りを発見できなかった場合に、前回実行時に保存した前記ブレークポイント情報に含まれる設備データに関係がある設備データを前記モデルから導出し、前記設備データの一覧上で強調表示しユーザーの選択を支援することを特徴とする請求項３または請求項４に記載するモデルデバッグ装置。
【請求項６】
前記実行結果表示手段は、ユーザが確認した設備データの結果を指定し、指定された設備データの情報を保存し、次回実行時に前記確認済み設備データ情報を用いて、ユーザーに前回未確認の設備データ情報のみを表示することを特徴とする請求項３に記載するモデルデバッグ装置。
【請求項７】
モデルデバッグ装置におけるモデルでバッグ方法であって、前記モデルデバッグ装置は、
設備データの更新を伴うソフトウェアの仕様を、前記設備データを更新するための条件を示す条件部と、前記条件部に記述された条件が成立した場合に実行する、前記設備データの更新内容を示す定義部との対応関係で表す決定表モデルを編集し、
編集された前記決定表モデルからソースコードを生成し、
前記設備データを更新する処理である処理単位毎に、前記処理単位を含む前記決定表モデル、前記処理単位を識別する識別情報、および前記設備データの更新情報を出力するログ処理を前記ソースコードに追加し、
前記ソースコードの実行に伴い、前記ログ処理により得られる実行ログを読み込み、
前記実行ログに含まれる前記決定表モデルを表示し、
前記決定表モデルの中で前記識別情報が示す前記処理単位を強調表示し、
前記設備データの更新情報を表示することを特徴とするモデルデバッグ方法。
【請求項８】
前記モデルデバッグ装置は、前記設備データの初期値を保持し、前記実行ログに含まれる前記設備データの更新情報を用いて、保持される前記設備データの前記初期値を更新し、保持される他の設備データを含む設備データのスナップショットを表示することを特徴とする請求項７に記載のモデルデバッグ方法。
【請求項９】
前記モデルデバッグ装置は、前記決定表モデルの一覧と、前記決定表モデルに含まれる前記設備データの一覧を表示し、
ユーザによる、前記決定表モデルの一覧における決定表モデルの指定、および/または前記設備データの一覧における設備データの指定に応答して、指定されたモデルおよび設備データをブレークポイント情報として保存し、
前記ブレークポイント情報として指定された前記モデルおよび前記設備データに至る所までの前記実行ログを読み込み、読み込んだ前記実行ログに含まれる前記設備データの更新情報を用いて、保持される前記設備データの前記初期値を更新することを特徴とする請求項８に記載のモデルデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの仕様を表すモデルのデバッグ装置およびその方法に関する。
【背景技術】
【０００２】
近年、システム開発の低コスト化・高品質化を目的として、モデル駆動開発が適用されている。モデル駆動開発は、自然言語で書かれていた従来の設計仕様を、決定表または状態遷移図等の図表を用いたモデル形式で表現することで、仕様の影響範囲が明確になり再利用性が高まる。また、そのモデルからソースコードを自動生成することで、言語の修得が必要なソースコードの作成の手間を省くという開発方法である。非特許文献１には、モデル駆動で行う開発方法が開示されている。
【０００３】
上記開発方法において、デバッグするためには、一般的に２つの作業を行う必要がある。まず、モデルから生成したソースコードに、ログ出力部を追加して実行し、実行後に得られるログを用いてソースコード上で誤りを発見・修正を行う。その後、ソースコードの修正部分に対応するモデルの部分を発見して、モデルを修正する。この２つの作業により、モデルおよびソースコードの誤りを除去できる。特許文献１には、上記デバッグの例として決定表（デシジョンテーブル）形式のモデルから作成したソースコードをデバッグする方法が開示されている。
【０００４】
また、上記のモデルデバッグ方法とは別の方法として、モデルのシミュレータを構築し、ソースコードを作成せずに、モデルそのままの形で実行してデバッグする方法がある。特許文献２には、モデルシミュレータを用いたモデルデバッグ方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１００８９１号公報
【特許文献２】特許第４２５１９６４号公報
【非特許文献】
【０００６】
【非特許文献１】Ｄａｖｉｄ  Ｓ．  Ｆｒａｎｋｅｌ「Ｍｏｄｅｌ  Ｄｒｉｖｅｎ  Ａｒｃｈｔｅｃｔｕｒｅ：Ａｐｐｌｙｉｎｇ  ＭＤＡ  ｔｏ  Ｅｎｔｅｒｐｒｉｓｅ  Ｃｏｍｐｕｔｉｎｇ」、Ｗｉｌｅｙ、２００３年１月、ｐｐ．３１−６４
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示されている従来のソースコードを用いたモデルデバッグ方法は、ソースコードとモデルにおいて同じ内容を修正対象とした修正を２度行う必要があり、２重管理の手間がかかる。実際の開発では開発スケジュールの厳しさからソースコードの修正が中心となり、対応するモデルの修正は十分に行われない。これにより、モデルとソースコードの間で乖離が生じ、正確なモデルが存在しないため、開発担当者以外の者がシステムの仕様を正確に把握するのが困難になっている。そのため、次回以降のシステム開発において、過去の設計資産を有効活用できず、同じ仕様でも最初から開発する手間が生じており、モデル駆動開発の特徴であるモデルの再利用が十分に行われていない。
【０００８】
また、特許文献２に開示されているモデルシミュレータを用いたモデルデバッグ方法は、ソースコードを介さずに、モデルを直接実行・デバッグできるため、上記の問題はないが、モデルを実行するためにシミュレータおよびシミュレータ用のデータを実機とは別に用意する開発コストがかかる。また、実機とは別の環境で実行するため、リアルタイムシステムにおける実行タイミングを正確に再現できない恐れがあり、シミュレータでは正常でも実機上では異常が発生する恐れがある。
【０００９】
本発明は、上記の点を考慮してデバッグ時のモデルとソースコードの２重管理の手間を省くと同時に、実機を用いた正確なデバッグを行うための装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明のモデルデバッグ装置は、設備データの更新を伴うソフトウェアの仕様を、設備データを更新するための条件を示す条件部と、条件部に記述された条件が成立した場合に実行する、設備データの更新内容を示す定義部との対応関係で表す決定表モデルを編集するモデル編集手段と、編集された決定表モデルからソースコードを生成し、設備データを更新する処理である処理単位毎に処理単位を含む決定表モデル、処理単位を識別する識別情報、および設備データの更新情報を出力するログ処理を生成されたソースコードに追加するソースコード生成手段と、
ソースコード実行に伴い、ログ処理により得られる実行ログを読み込み、実行ログに含まれる決定表モデルを表示し、決定表モデルの中で識別情報が示す処理単位を強調表示し、設備データの更新情報を表示する実行結果表示手段とを備える。
【００１１】
本発明の望ましい他の態様は、モデルデバッグ装置は、設備データの初期値を保持する初期化データ保持手段を備え、実行結果表示手段は、実行ログに含まれる設備データの更新情報を用いて、初期化データ保持手段に保持される設備データの初期値を更新し、初期化データ保持手段に保持される他の設備データを含む設備データのスナップショットを表示する。
【００１２】
本発明の望ましいさらに他の態様は、モデルデバッグ装置は、決定表モデルの一覧と、決定表モデルに含まれる設備データの一覧を表示し、ユーザによる、決定表モデルの一覧における決定表モデルの指定、および/または設備データの一覧における設備データの指定に応答して、指定されたモデルおよび設備データをブレークポイント情報として保存するブレークポイント保持手段を設け、実行結果表示手段は、ブレークポイント情報として指定された前デルまたは設備データに至る所までの実行ログを読み込み、読み込んだ実行ログに含まれる設備データの更新情報を用いて、初期化データ保持手段に保持される設備データの初期値を更新する。
【発明の効果】
【００１３】
本発明によれば、モデルを直接編集することができ、ソースコードは修正後のモデルから再び自動生成できるため、モデルとソースコードの２重管理の手間が省ける。
【図面の簡単な説明】
【００１４】
【図１】モデルデバッグの構成例である。
【図２】決定表モデルの例である。
【図３】決定表モデルをＸＭＬ形式で示した例である。
【図４】決定表モデルからソースコードを生成した例である。
【図５】実行ログの例である。
【図６】ブレークポイント入力画面の例である。
【図７】ブレークポイント情報の例である。
【図８】モデル実行結果表示画面の例である。
【図９】データスナップショット確認画面の例である。
【図１０】モデルデバッグのハードウェア構成例である。
【図１１】モデルデバッグ装置の処理の流れを示すを示すフローチャートである。
【図１２】次に設定するモデルのブレークポイントを決定する処理を示す例である。
【図１３】次に設定する設備のブレークポイントを決定する処理を示す例である。
【発明を実施するための形態】
【００１５】
ソフトウェアは、その処理の実行に伴い、定義した変数の値(データ)を更新する。特に、列車の進路制御のような制御用のソフトウェアでは、制御対象の設備の状態や設備への制御指令(設備データ)を変数として扱う。本実施形態では、このようなソフトウェアの開発において、実行する処理を設備データの更新に対応させて定義すると、定義が容易であると共に、定義した処理のデバッグも容易であることに注目している。設備データの更新に対応する処理を以下では処理単位と呼ぶ。
【００１６】
設備データの更新を伴うソフトウェアの仕様を、設備データを更新するための条件を示す条件部と、この条件部に記述された条件が成立した場合に実行する、設備データの更新内容を示す定義部との対応関係で表す決定表モデルで表す。一つの対応関係は処理単位に対応する。この決定表モデルからソースコードを生成する。決定表モデルに含まれる、設備データを更新する処理毎に（処理単位毎に）、その処理を含む決定表モデル、その処理を識別する識別情報、およびこの処理に伴う設備データの更新情報を実行ログとして出力するログ処理をソースコードに追加する。
【００１７】
ソースコードの実行に伴い、実行ログに含まれる決定表モデルを表示し、識別情報が示す処理を強調表示し、設備データの更新情報を表示する。このような表示により、ユーザは、設備データの更新情報から決定表モデルの成否を判定できるので、決定表モデル及びソースコードを容易に検証、デバッグできる。
【００１８】
なお、列車の進路制御システムのような大規模なシステムは、列車接近判断、信号機制御などのいくつかのサブシステムに分割し、サブシステム毎に決定表モデルを作成する。
【００１９】
図１は、本実施形態のモデルデバッグ装置の構成例である。モデルデバッグ装置１００は、モデル編集部１０１、モデル保持部１０２、ソースコード生成部１０３、ソースコード保持部１０４、プログラム実行部１０５、実行ログ保持部１０６、ブレークポイント入力部１０７、ブレークポイント保持部１０８、ログ読込制御部１０９、初期化データ保持部１１０、実行結果表示部１１１、及び確認結果保持部１１２を含む。
【００２０】
モデル編集部１０１は、表示装置の画面上に空又は雛形の決定表モデルを表示し、ユーザに、その決定表のテキストをセル単位で編集させることにより、決定表モデルを作成させる。決定表モデルには、ソフトウェアの要求仕様を元にして、ユーザが、設備データの更新を伴う一纏まりの処理を処理単位として、後述する条件と定義とを入力する。したがって、決定表モデルは少なくとも1つの処理単位を含む。また、モデル編集部１０１は、編集した決定表モデルをモデル保持部１０２に保存する。
【００２１】
ソースコード生成部１０３は、モデル保持部１０２保存されている決定表モデルからソースコードを生成し、ソースコード保持部１０４に保存する。ソースコードを生成する際に、決定表モデルに含まれる処理単位に対応するソースコードの処理単位（ある設備データの更新を伴う処理）毎にその処理単位に対応する決定表モデルに係る情報および設備データの更新情報を出力するログ出力処理を追加する。
【００２２】
プログラム実行部１０５は、ソースコード保持部１０４に保持されたソースコードを実行可能なプログラム形式にコンパイルし、コンパイルしたプログラムを実行する。プログラムの実行に伴い、ソースコードに追加したログ出力処理は、テキストファイル形式で決定表モデルの処理単位に係る情報および設備データの更新情報を含む実行ログを出力し、実行ログ保持部１０６に保存する。
【００２３】
ブレークポイント入力部１０７は、モデル保持部１０２に保持されている決定表モデルおよび初期化データ保持部１１０に保持されている設備データをブレークポイント入力画面に表示し、デバッグする際に用いるブレークポイント情報としてユーザに決定表モデルおよび設備データを選択させる。なお、ブレークポイント情報を用いたデバッグを行わない場合には、決定表モデルおよび設備データは選択する必要ない。
【００２４】
初期化データ保持部１１０は、設備データを保持する。なお、その設備データには初期値があらかじめ設定される。
【００２５】
ログ読込制御部１０９は、ブレークポイント保持部１０８に保持されている決定表モデルおよび設備データのブレークポイント情報が現れるまで、実行ログ保持部１０６に保持されている実行ログを一行（処理単位に対応する実行ログ）づつ読み込み、逐次、実行結果表示部１１１に読みこんだ情報を渡す。ブレークポイント情報を用いたデバッグを行わない場合には、プログラムの実行完了までの実行ログを読み込む。なお、実行結果表示部１１１に対するデータ受け渡しに関しては、実行ログを最後まで読み込んだ後で、一括で行ってもよい。
【００２６】
実行結果表示部１１１は、モデル保持部１０２に保持されている決定表モデルの情報をモデル実行結果表示画面に表示し、ログ読込制御部１０９から受け取った実行ログを1行ずつ読み込み、実行ログに含まれる設備データの更新情報と共に、その更新情報に対応する決定表モデルの処理単位の行を強調表示する。設備データの更新情報を表示する部分に、ユーザ確認用のチェックボックスも合わせて表示し、ユーザの確認結果を保持できるようにする。また、実行結果表示部１１１は、初期化データ保持部１１０に保持されている設備データの初期値を用いて、メモリ上に設備データの初期状態を構築しておく。その後、実行ログ読込制御部１０９から受け取った実行ログデータに含まれる設備データの更新情報を基に、指定したブレークポイントのモデルが実行された時点での設備データ値のスナップショットをとり、データスナップショット確認画面に表示する。なお、ユーザがモデル実行結果表示画面およびデータスナップショット確認画面を用いてモデルの誤りを発見した場合、実行結果表示部１１１は、誤りがあったモデルの情報をモデル編集部１０１に通知し、すぐにモデルを編集できるようにする。
【００２７】
確認結果保持部１１２は、モデル実行結果表示画面でユーザがチェックした情報を保持する。保持した情報は次回以降のデバッグ時に再利用し、前回のデバッグ時とモデル、モデルが扱う設備および設定される設備データ値が同じであればチェック済みとする。
【００２８】
図２は、モデル編集部１０１が編集、作成する決定表モデルの例である。図２には、表名「列車接近判断処理」の決定表モデル２００と表名「信号機制御処理」の決定表モデル２１０とを示している。表名「列車接近判断処理」や「信号機制御処理」はモデル名であり、開発対象のソフトウェアを示す。決定表２００、２１０は、処理単位を識別する通し番号（Ｎｏ）に対応して、処理名と条件部と定義部とを含み、処理名には条件部および定義部によって定義される処理の名称を記述し、条件部には定義部で定義する処理を実行するための条件を記述し、定義部には条件部に記述された全ての条件が成り立つ（複数の条件がある場合にそのＡＮＤ条件が成立する）場合に実行する処理の内容を記述する。開発対象のソフトウェアの決定表モデルは、決定表モデルを構成する処理単位の識別情報である通し番号（Ｎｏ）に対応した条件部と定義部とにより記述される。同様に、処理単位２０１、２０２、２０３および２１１、２１２、２１３のように複数行にわたって条件部および定義部を記述することで、多様な条件に応じた処理を定義する。なお、決定表２００で定義部に記述された処理が決定表２１０の条件部で利用されているが、このように、ある決定表の定義部で記述した処理を他の決定表の条件部に記述する成立条件として用いることができる記述方法である。
【００２９】
図３は、図２の決定表モデルをＸＭＬファイル形式で示した例である。図３の、３０１、３０２、３０３、３１１、３１２、及び３１３は、図２における処理単位２０１、２０２、２０３、２１１、２１２、２１３、の部分に対応している。なお、保存するデータの形式はＸＭＬファイル形式３００、３１０を例として説明するが、ＣＳＶ形式などテキスト情報が読みこめるファイル形式やデータベースであればよい。
【００３０】
図４は、図２の決定表モデルをＣ＋＋ソースコードで出力した例である。図４は便宜上日本語で表現している。図４のソースコード４００、４１０は、ぞれぞれ決定表２００、２１０における条件部をｉｆ節の条件部４０１、４０３、４０５、４１１、４１３、４１５に、定義部をｉｆ節の本体部分４０２、４０４、４０６、４１２、４１４、４１６に記述し、実行可能な形式に変換したものである。なお、ここで、ｉｆ節の本体部分には、決定表モデルの内容の他に、図中下線で示すように実行時刻および対応する決定表モデルに関する情報を出力するログ出力部を追加する。決定表モデルに関する情報は、決定表モデル名（表名）、決定表モデル内の処理単位を識別する通し番号、設備の属性名およびその属性値である。対象の設備により、設備の属性名が設備名（設備データ名）であり、属性値が設備の状態（設備データ値）であってもよい。
【００３１】
図５は、実行ログの例である。実行ログには、実行時刻および前述の決定表モデルに関する情報が実行順に出力される。
【００３２】
図６は、ブレークポイント入力部により表示されるブレークポイント入力画面６００の例である。モデル一覧ビュー６１０は、作成されているモデルの一覧を表示するビューである。このビュー６１０には、決定表モデルの1行（レコード）に相当するモデル情報（モデルの種類、モデル名、モデルの行名）の他に、ブレークポイント（図中、Ｂ．Ｐ）６１１コントロールを表示する。設備データ一覧ビュー６２０は、モデル一覧ビュー６１０に含まれる決定表モデルが使用する設備データ(設備名)の一覧を駅および設備種類の順に表示するビューである。このビュー６２０にも、ブレークポイント６２１コントロールを表示する。これら２つのビューを含む画面において、ユーザは、手続き一覧ビュー６１０で、実行中の設備データを確認したい決定表モデルの対応する処理（行）にブレークポイント６１１のチェックを入れる。また、決定表モデルから生成され、コンパイルされた実行形式のプログラムは全駅を対象に繰返し実行されるため、特定の駅設備に着目して確認する場合、設備データ一覧ビュー６２０で確認対象とする設備データにブレークポイント６２１を設定する。なお、決定表モデルに対応したブレークポイントと設備データに対応したブレークポイントは、少なくとも一方が設定されればよく、双方が設定された場合は、プログラム実行において先に到達したブレークポイントが有効になる。
【００３３】
図７は、ブレークポイント保持部１０８で保持されるブレークポイント情報７００の例である。１つのモデルに対応した複数の設備データに対して指定されたブレークポイントを保持することができる。
【００３４】
図８は、実行結果表示部１１１により表示されるモデル実行結果表示画面８００の例である。ステップ実行用コントロール８１０および一括実行用コントロール８１１は、ユーザがログ読込制御部１０９に対してログの読み込み方法を指示するためのユーザインタフェースである。前者は、ユーザがステップ‐バイ‐ステップでモデル実行結果を確認するためのユーザインタフェースであり、後者は、ユーザが一括してモデル実行結果を確認するためのユーザインタフェースである。ステップ実行用コントロール８１０は、１度のアクション（ステップ実行用コントロール８１０の1回の操作）で実行ログを実行ログ保持部１０６から1行分（処理単位に対応する実行ログ）読み込むようログ読込制御部１０９に指示する。一括実行用のコントロール８１１は、ブレークポイントが設定されているときに有効であり、設定されているブレークポイント情報が現れるところまで、実行ログを読み込むようにログ読込制御部１０９に指示する。ステップ実行用コントロール８１０または一括実行用コントロール８１１に対するアクションにより得られる実行ログの内容に基づいて、モデル実行履歴ビュー８２０を表示する。モデル実行履歴ビュー８２０は、実行した決定表モデル８２２、８２３、８２４、各モデルで実行した設備データ更新情報（更新結果）８２５、８２７、８２９および設備データ更新情報のユーザ確認用のチェックボックス８２６、８２８、８３０を含む。実行したモデル８２２、８２３、８２４では、各モデルで実行した処理単位に対応する行を強調表示する（例えば、表示色を他の色と異ならせたり、文字色と背景色を反転表示する）。設備データ更新情報８２５、８２７、８２９では、実際に設定した属性(設備データ名又は設備データの属性)とその属性値(設備データの状態又は設備データ属性の値)を表示する。なお、モデル実行履歴ビュー８２０には多数の駅の情報を表示するため、駅選択用コントロール８２１を用いて駅を選択することで、一度に表示、確認する情報を減らすことができる。
【００３５】
図９は、ブレークポイントを設定した時点（ブレークポイントまでモデルを実行した時点）での設備データ値のスナップショットを表示するデータスナップショット確認画面９００である。設備データ一覧ビュー９１０は、ブレークポイント入力画面６００の設備データ一覧ビュー６２０と同様に設備の一覧を表示するビューであるが、ブレークポイントのコントロール６２１を表示しない。データスナップショットビュー９２０は、設備単位でその設備がもつ属性の情報（属性名、属性値)を詳細に表示する。設備の情報を表示する場合には、ユーザが、設備データ一覧ビュー９１０の1行を選択するか、設備名入力フォーム９２１に設備名を入力することにより設備を指定する。設備データ一覧ビュー９１０で1行選択した場合には、設備名入力フォーム９２１には選択した設備名を自動的に表示する。詳細設備情報表示ビュー９２２では、設備の属性名、属性値、この属性に最後に変更を加えたモデルの対応する行（関係するモデルの処理）、ユーザによる結果確認用のチェックボックスを含む。ユーザは詳細設備情報表示ビュー９２２で結果を確認した属性に対して、その行のチェックボックスにチェックする。
【００３６】
図１０は、モデルデバッグ装置１００のハードウェア構成例を示している。モデルデバッグ装置１００は、ＣＰＵ１００２、メモリ１００３、外部記憶装置１００４、表示装置１００５、入力装置１００６、及び通信部１００７を備える。ＣＰＵ１００２は、メモリ１００３に記憶されたプログラムを実行する。具体的には、モデル編集部１０１、ソースコード生成部１０３、プログラム実行部１０５、ブレークポイント入力部１０７、ログ読込制御部１０９、及び実行結果表示部１１１を実行する。メモリ１００３は、ＣＰＵ１００２によってプログラム及びプログラム実行に必要なデータを記憶する記憶領域である。具体的には、記憶するプログラムは、ＣＰＵ１００２が実行するプログラムと同じであり、プログラム実行に必要なデータは、モデル保持部１０２に保持されるモデル情報、ソースコード保持部１０４に保持されるソースコード、実行ログ保持部１０６に保持される実行ログ、ブレークポイント保持部１０８に保持されるブレークポイント情報、初期化データ保持部１１０に保持される設備データの初期値、確認結果保持部１１２に保持されるユーザ確認結果情報である。ただしこれらの情報は、常時メモリ１００３上にあるのではなく、通常は外部記憶装置１００４に格納されており、プログラム実行時に必要に応じて読み出される。外部記憶装置１００４は、メモリ１００３に格納されるデータおよびプログラムを保持する。表示装置１００５は、プログラムの処理結果を表示する。表示装置は、例えばディスプレイである。入力装置１００６は、ユーザからの実行指示及び実行に必要なデータの入力を受け付ける。具体的には、モデル編集部１０１におけるモデル情報入力、ソースコード生成部１０３におけるソースコード生成指示、プログラム実行部１０５におけるソースコードコンパイル及び実行指示、ブレークポイント入力部１０７におけるブレークポイント情報入力、ログ読込制御部１０９における実行ログ読込指示、実行結果表示部１１１におけるユーザ確認結果入力である。通信部１００７は、ネットワーク１００１を介して他の装置と通信する。図１では、モデルデバッグ装置は１台の装置上で実現されているが、それぞれの機能およびデータ格納領域は他の装置で実行することができ、複数の装置で実行する際に通信部１００７を用いて装置間で通信する。
【００３７】
図１１は、モデルデバッグ装置１００の各部の処理の流れを示すフローチャートである。初めに、ＣＰＵ１００２は、モデル編集部１０１を実行し、モデル編集用の画面を表示する。ユーザは、モデル編集用の画面を用いて、要求仕様をもとに決定表モデルを作成すると同時に、初期化データ保持部１１０に保持される設備データを準備する。モデル編集部１０１は、作成された決定表モデルの情報をモデル保持部１０２に保存する。（ステップ１１０１）。
【００３８】
続いて、ＣＰＵ１００２は、ソースコード生成部１０３を実行し、モデル保持部１０２に保持されている決定表モデルを用いてソースコードを生成し、ソースコード保持部に保存する（ステップ１１０２）。ＣＰＵ１００２は、プログラム実行部１０５を実行し、ユーザからの実行要求を基に、ソースコード保持部１０４に保持されたソースコードをコンパイルして実行し、実行ログを実行ログ保持部１０６に保存する（ステップ１１０３）。ＣＰＵ１００２は、実行結果表示部１１１を実行し、モデル実行結果表示画面８００を表示する（ステップ１１０４）。ただし、この時点では、ステップ実行用のコントロール８１０および一括実行用のコントロール８１１のみが表示され、ユーザはどちらかのコントロールを用いてアクションを実行する。ＣＰＵ１００２は、ログ読込制御部１０９を実行し、ユーザによって実行されたアクションがブレークポイント情報を用いたデバッグであるかどうかを判断する（ステップ１１０５）。
【００３９】
ブレークポイント情報を用いたデバッグであれば、ログ実行制御部１０９は、モデル保持部１０２に保持されている決定表モデル及び初期化データ保持部１１０に保持されている設備データを用いて、ブレークポイント入力部１０７を実行し、ブレークポイント入力画面を表示する。ユーザは、ブレークポイント入力画面上でモデル及び設備データにブレークポイントを入力する。その後、ブレークポイント入力部１０７は、入力されたブレークポイント情報をブレークポイント保持部１０８に保存する（ステップ１１０６）。その後、ログ読込制御部１０９は、入力されたブレークポイント情報が現れるところまで、実行ログ保持部１０６に保持されている実行ログを読み込み、実行結果表示部１１１に渡す（ステップ１１０７）。
【００４０】
一方、ユーザが実行したアクションがブレークポイント情報を用いたデバッグでない場合、ログ実行制御部１０９は、実行ログ保持部１０６に保持されている実行ログを1行読み込み実行結果表示部１１１に渡す（ステップ１１０８）。ここで、実行結果表示部１１１は、既にユーザが既に確認済みの結果が確認結果保持部１１２に存在するかどうかを確認する（ステップ１１０９）。ユーザによる確認済み結果があればその情報を読み込む（ステップ１１１０）。実行結果表示部１１１は、受け取った実行ログに含まれるモデルの手続き情報および設備データ更新情報を基に、モデル実行結果表示画面を表示する。また、実行結果表示部１１１は、初期化データ保持部１１０に保持されている設備データをメモリ上に読み込み、ログ読込制御部１０９からの実行ログに含まれる設備データ変更情報を基に、設備データのスナップショットをとり、データスナップショット確認画面に表示する。その後、ユーザは、設備データの変更情報および画面上で設備データスナップショットを確認し、属性１つずつ確認結果を入力し、確認結果保持部１１２に保存する（ステップ１１１１）。結果を確認していく際に、設備データの誤りがないかどうかをユーザが確認する。もし誤りがあれば、実行結果表示部１１１は、誤りのあるモデルの情報をモデル編集部１０１に伝える（ステップ１１１２）。誤りがなければ、処理を終了する（ステップ１１０３）。以後、設備データに誤りがなくなるまで、ステップ１１０１からステップ１１１２までを繰り返す。
【００４１】
図１２は、１度のモデルの実行でモデルの誤りを発見できなかった際に、次に設定するモデルのブレークポイントを決定する処理を示す例である。モデル一覧６１０において、Ｎｏ６のブレークポイントを設定し、その部分のモデルの処理１２０２を実行していた場合、その処理１２０２を呼び出す1つ前の処理を特定し（１２０１）、モデル一覧６１０の該当する部分を強調表示する。
【００４２】
図１３は、１度のモデルの実行でモデルの誤りを発見できなかった際に、次に設定する設備のブレークポイントを決定する処理を示す例である。設備データ一覧６２０において、Ｎｏ７の設備１３０１に対してブレークポイントに設定し実行していた場合、設備対応関係定義１３０３からその設備１３０１に関係がある設備を特定し（１３０２）、設備データ一覧６２０の該当する部分を強調表示する。なお、設備対応関係定義１３０３にはある設備に対して関係のある設備を定義しておく。設備対応関係定義１３０３に、１つの設備に対して関係のある設備が複数定義されていた場合、複数の設備を強調表示する。また、ブレークポイント保持部１０８において保持しているブレークポイント情報を用いて、すでに結果確認済みの設備を特定し（１３０４）、その設備のブレークポイントはチェック部品を表示しないようにすることができる。
【００４３】
本実施形態によれば、決定表モデルから生成するソースコードのログ出力部分に、対応する決定表モデル情報を埋め込み、実行時にログ出力させることで、ソースコードを介さずに決定表モデル上でのデバッグが可能となる。これによりモデルを直接編集することができ、ソースコードは修正後のモデルから再び自動生成できるため、モデルとソースコードの２重管理の手間が省ける。
【００４４】
また、決定表モデルは、要求仕様を満たす設計情報のみを含むが、ソースコードには、それを実現するための実装上の細かな演算処理等直接仕様とは関係ない情報も含む。そのため、実装の詳細を把握しなければならないソースコードのデバッグに比べ、モデルのデバッグは作業の属人化が解消される。
【００４５】
さらに本実施形態は、実機上での結果を用いることで、非実機環境の結果を用いるシミュレータでのデバッグに比べ、実行タイミング等の不具合を正確に再現できるため、開発対象のソフトウェアの品質の向上につながる。また、シミュレータ及びシミュレータ用のデータの用意も不要であるので、ソフトウェアの開発コストも抑えることができる。
【符号の説明】
【００４６】
１００：モデルデバッグ装置、１０１：モデル編集部、１０２：モデル保持部、１０３：ソースコード生成部、１０４：ソースコード保持部、１０５：プログラム実行部、１０６：実行ログ保持部、１０７：ブレークポイント入力部、１０８：ブレークポイント保持部、１０９：ログ読込制御部、１１０：初期化データ保持部、１１１：実行結果表示部、１１２：確認結果保持部。
【図１】
2011165039.tif 000003
【図２】
2011165039.tif 000004
【図３】
2011165039.tif 000005
【図４】
2011165039.tif 000006
【図５】
2011165039.tif 000007
【図６】
2011165039.tif 000008
【図７】
2011165039.tif 000009
【図８】
2011165039.tif 000010
【図９】
2011165039.tif 000011
【図１０】
2011165039.tif 000012
【図１１】
2011165039.tif 000013
【図１２】
2011165039.tif 000014
【図１３】
2011165039.tif 000015