(57)【特許請求の範囲】
【請求項１】
ソフトウェアシステムのソフトウェアプロダクトライン開発支援装置であって、
前記ソフトウェアシステムにおける制御対象または仮想的な対象の状態をユーザの入力により定義する状態定義手段と、
前記定義された各状態に就き、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、次の状態に移るときに実行される実行コンポーネントを定義可能であるコンポーネント定義手段と、
実行されるプログラムモジュールである前記実行コンポーネントの情報を保存する実行コンポーネント記憶部と、
判断を行うプログラムモジュールである判断コンポーネントの情報を保存する判断コンポーネント記憶部と、
前記制御対象または前記仮想的な対象の状態の遷移を示す状態遷移の情報を含む特性を表すフィーチャの情報が記憶されるフィーチャ情報記憶部と、
ユーザに対して、前記定義された各状態に就き、前記実行コンポーネント記憶部の前記実行コンポーネントの情報のうちから、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、および次の状態に移るときに実行される実行コンポーネントを画面を用いて選択させて、前記フィーチャ情報記憶部に保存する実行コンポーネント選択手段と、
ユーザに対して、前記定義された各状態に就き、画面を用いて、前記各状態のうちから遷移元の状態と遷移先の状態とを選択させ、前記遷移元の状態から前記遷移先の状態へ遷移させるための判断を行う判断コンポーネントを、画面を用いて、前記判断コンポーネント記憶部の前記判断コンポーネントの情報のうちから選択させるととともに、前記遷移が可能となる当該選択された判断コンポーネントの返り値を画面を用いて選択させて、前記フィーチャ情報記憶部に保存する判断コンポーネント選択手段と、
前記選択される実行コンポーネントを、前記実行コンポーネント記憶部に記憶保持するとともに、必要に応じて読み出すことを可能とする実行コンポーネント管理手段と、
前記選択可能な判断コンポーネントを、前記判断コンポーネント記憶部に記憶保持するとともに、必要に応じて読み出すことを可能とする判断コンポーネント管理手段とを
具備することを特徴とするソフトウェアプロダクトライン開発支援装置。
【請求項２】
請求項１に記載のソフトウェアプロダクトライン開発支援装置において、
機能的にまとめられた前記フィーチャと、前記判断コンポーネントとを分離して管理する
ことを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項３】
請求項１に記載のソフトウェアプロダクトライン開発支援装置において、
ユーザにより選択された前記実行または前記判断コンポーネントの実行または判断結果を用いて、前記定義された状態の間を遷移させる状態遷移手段を具備する
ことを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項４】
請求項３に記載のソフトウェアプロダクトライン開発支援装置において、
前記状態遷移手段は、
前記ソフトウェアシステムの入出力情報によって、前記状態間を遷移させる 
ことを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項５】
請求項１から請求項４の何れか一項に記載のソフトウェアプロダクトライン開発支援装置において、
ユーザにより定義される前記状態を入れ子構造で構成する状態管理手段を
具備することを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項６】
請求項１から請求項５の何れか一項に記載のソフトウェアプロダクトライン開発支援装置において、
前記実行コンポーネントが前記実行コンポーネント記憶部にあるかチェックする実行コンポーネントチェック手段と、
前記判断コンポーネントが前記判断コンポーネント記憶部にあるかチェックする判断コンポーネントチェック手段とを
具備することを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項７】
請求項３または請求項４に記載のソフトウェアプロダクトライン開発支援装置において、
前記状態遷移が整合がとれているかチェックする整合性チェック手段を
具備することを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項８】
請求項１から請求項４の何れか一項に記載のソフトウェアプロダクトライン開発支援装置において、
ユーザにより定義された前記フィーチャと前記実行および前記判断コンポーネントとから実行可能なソースコードを生成するソースコード生成手段を
具備することを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項９】
請求項３または請求項４に記載のソフトウェアプロダクトライン開発支援装置において、
前記状態間の遷移と前記判断コンポーネントと前記実行コンポーネントとの組み合わせを仮想環境で意図通りに作動するか試験するソフトウェア試験手段を
具備することを特徴としたソフトウェアプロダクトライン開発支援装置。
【請求項１０】
ソフトウェアシステムのソフトウェアプロダクトライン開発支援装置の方法であって、
前記ソフトウェアプロダクトライン開発支援装置は、状態定義手段と、コンポーネント定義手段と、実行コンポーネント記憶部と、判断コンポーネント記憶部と、フィーチャ情報記憶部と、実行コンポーネント選択手段と、判断コンポーネント選択手段と、実行コンポーネント管理手段と、判断コンポーネント管理手段とを具備し、
前記状態定義手段は、前記ソフトウェアシステムにおける制御対象または仮想的な対象の状態をユーザの入力により定義し、
前記コンポーネント定義手段は、前記定義された各状態に就き、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、次の状態に移るときに実行される実行コンポーネントを定義し、
前記実行コンポーネント記憶部に、実行されるプログラムモジュールである前記実行コンポーネントの情報が保存され、
前記判断コンポーネント記憶部に、判断を行うプログラムモジュールである判断コンポーネントの情報が保存され、
前記フィーチャ情報記憶部に、前記制御対象または前記仮想的な対象の状態の遷移を示す状態遷移の情報を含む特性を表すフィーチャの情報が記憶され、
前記実行コンポーネント選択手段は、ユーザに対して、前記定義された各状態に就き、前記実行コンポーネント記憶部の前記実行コンポーネントの情報のうちから、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、および次の状態に移るときに実行される実行コンポーネントを画面を用いて選択させて、前記フィーチャ情報記憶部に保存し、
前記判断コンポーネント選択手段は、ユーザに対して、前記定義された各状態に就き、画面を用いて、前記各状態のうちから遷移元の状態と遷移先の状態とを選択させ、前記遷移元の状態から前記遷移先の状態へ遷移させるための判断を行う判断コンポーネントを、画面を用いて、前記判断コンポーネント記憶部の前記判断コンポーネントの情報のうちから選択させるととともに、前記遷移が可能となる当該選択された判断コンポーネントの返り値を画面を用いて選択させて、前記フィーチャ情報記憶部に保存し、
前記実行コンポーネント管理手段は、前記選択される実行コンポーネントを、前記実行コンポーネント記憶部に記憶保持するとともに、必要に応じて読み出すことを可能とし、
前記判断コンポーネント管理手段は、前記選択可能な判断コンポーネントを、前記判断コンポーネント記憶部に記憶保持するとともに必要に応じて読み出すことを可能とする
ことを特徴とするソフトウェアプロダクトライン開発支援装置の方法。
【請求項１１】
請求項１０に記載のソフトウェアプロダクトライン開発支援装置の方法において、
機能的にまとめられた前記フィーチャと、前記判断コンポーネントとを分離して管理する
ことを特徴としたソフトウェアプロダクトライン開発支援装置の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御監視システムのソフトウェアプロダクトライン開発に関する情報を管理するソフトウェアプロダクトライン開発支援装置およびその方法に関する。
【背景技術】
【０００２】
従来、ユーザのソフトウェアの開発を支援するソフトウェアプロダクトラインの開発には、一般にフィーチャ（特性）を関連付けたフィーチャモデルが利用される。このフィーチャモデルの作成に際しては、モデル作成者は、適切なフィーチャの抽出やフィーチャ間の関連付けの抽出を行うことが求められる。
【０００３】
例えば、特許文献１には、フィーチャ指向ソフトウェアプロダクトライン（feature-oriented software product line）の開発環境を提供するシステムが記載されている。この特許文献１のシステムは、特定ドメイン（または領域）に対して、既知のソフトウェア製品ライン方法論を適用してドメイン(例えば、制御対象)に対するフィーチャ分析と応用プログラムの開発のための必要なフィーチャ選択、再利用可能な資産コンポーネント(プログラムモジュール資産)の生成、マクロ処理を通じたソフトウェアコンポーネントの生成とコンポーネントに対する形状管理(プログラムソースの作り)、ソフトウェアコンポーネントを利用した応用ソフトウェア開発と仮想環境におけるソフトウェアテスティングの支援を行うものである。
【０００４】
特許文献１を含む従来の技術において、ドメイン分析・フィーチャ分析では機能的、環境的、技術的および具現的な共通点と相違点を明確に分析し、コンポーネント開発に反映することで、コンポーネントの再利用性と適用可能性を高める利点を有している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１２００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、一般にプラントなどを制御対象とする制御監視システムは次のような機能を有する。制御監視対象となる設備の情報を取得（以下、設備状態監視機能と称す）し、設備の状態をもとに制御演算（以下、制御演算機能と称す）を行い、制御監視対象の設備に対して制御出力（以下、制御出力機能と称す）を行い、当該設備を制御している。
【０００７】
設備状態監視機能や制御出力機能は、システムごとに異なる制御監視対象の設備種別(例えば、運行システムの場合には普通列車、快速列車などの列車の種別)や制御出力の通信方式(例えば、通信プロトコル)などを相違点として捉え、ドメイン(例えば、制御対象)分析・フィーチャ（特性）分析を行い、再利用可能なコンポーネント(プログラムモジュール)が作成可能である。
【０００８】
しかし、制御演算機能は、制御監視対象となる設備の状態やシステム全体の状態を総合的に判断し演算を行い、制御監視対象となる設備に出力する機能を有している。これらの設備の状態やシステム全体の状態は、ユーザのシステム毎に異なることが一般的であり、従来の機能的、環境的、技術的、具現的なドメイン分析・フィーチャ分析で表現するには共通性が乏しく、再利用性が困難である。
【０００９】
例えば、あるユーザの中央集中型のＡシステムにおいて、一部の装置で故障が発生した場合、制御演算機能は制御出力を行わないよう判断しなければならない。一方、他のユーザの分散型のＢシステムにおいて、一部の装置に故障が発生した場合、制御演算機能は半自動で制御出力を行うが、Ｂシステム全体に重大な故障が発生した場合には、制御出力を行わないよう判断する。
【００１０】
このように、システムの運用により実行する機能が異なることや、どの装置が故障したときに重故障として扱うかという点は、ユーザ毎のシステム構成や各ユーザの運用により異なるため、コンポーネントを実行するフィーチャを(システム構成×運用)の数だけ作成しなければならず、別のユーザのシステムに再利用可能なフィーチャを作成することは難しい。
【００１１】
すなわち、従来のソフトウェアプロダクトライン開発では、機能的、環境的、技術的、具現的なドメイン分析・フィーチャ分析に基づきフィーチャーモデリングおよびコンポーネントの開発を行う。しかし、ユーザの運用やシステム構成がシステムごとに異なる制御監視システムにおいて、機能的にまとめられたフィーチャではフィーチャ内にコンポーネントの追加、削除が発生するため、システム構成によってフィーチャの再利用性が望めない問題がある。
【００１２】
このように、制御監視システムは、ユーザごとの各システムの機能がそれぞれ異なるため、機能ごとのモジュールの組み換えで行われる現ソフトウェアプロダクトラインでは機能の共通化が不可能であり、対応が困難になっている。
【００１３】
本発明は上記実状に鑑み、状態遷移の遷移条件で実行されるコンポーネントを任意にマッピング可能とし、フィーチャを再利用可能とするソフトウェアプロダクトライン開発支援装置およびその方法の提供を目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成すべく、第１の本発明に関わるソフトウェアプロダクトライン開発支援装置は、ソフトウェアシステムのソフトウェアプロダクトライン開発支援装置であって、前記ソフトウェアシステムにおける制御対象または仮想的な対象の状態をユーザの入力により定義する状態定義手段と、前記定義された各状態に就き、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、次の状態に移るときに実行される実行コンポーネントを定義可能であるコンポーネント定義手段と、実行されるプログラムモジュールである前記実行コンポーネントの情報を保存する実行コンポーネント記憶部と、判断を行うプログラムモジュールである判断コンポーネントの情報を保存する判断コンポーネント記憶部と、前記制御対象または前記仮想的な対象の状態の遷移を示す状態遷移の情報を含む特性を表すフィーチャの情報が記憶されるフィーチャ情報記憶部と、ユーザに対して、前記定義された各状態に就き、前記実行コンポーネント記憶部の前記実行コンポーネントの情報のうちから、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、および次の状態に移るときに実行される実行コンポーネントを画面を用いて選択させて、前記フィーチャ情報記憶部に保存する実行コンポーネント選択手段と、ユーザに対して、前記定義された各状態に就き、画面を用いて、前記各状態のうちから遷移元の状態と遷移先の状態とを選択させ、前記遷移元の状態から前記遷移先の状態へ遷移させるための判断を行う判断コンポーネントを、画面を用いて、前記判断コンポーネント記憶部の前記判断コンポーネントの情報のうちから選択させるととともに、前記遷移が可能となる当該選択された判断コンポーネントの返り値を画面を用いて選択させて、前記フィーチャ情報記憶部に保存する判断コンポーネント選択手段と、前記選択される実行コンポーネントを、前記実行コンポーネント記憶部に記憶保持するとともに、必要に応じて読み出すことを可能とする実行コンポーネント管理手段と、前記選択可能な判断コンポーネントを、前記判断コンポーネント記憶部に記憶保持するとともに、必要に応じて読み出すことを可能とする判断コンポーネント管理手段とを具備している。
【００１５】
第２の本発明に関わるソフトウェアプロダクトライン開発支援装置の方法は、ソフトウェアシステムのソフトウェアプロダクトライン開発支援装置の方法であって、前記ソフトウェアプロダクトライン開発支援装置は、状態定義手段と、コンポーネント定義手段と、実行コンポーネント記憶部と、判断コンポーネント記憶部と、フィーチャ情報記憶部と、実行コンポーネント選択手段と、判断コンポーネント選択手段と、実行コンポーネント管理手段と、判断コンポーネント管理手段とを具備し、前記状態定義手段は、前記ソフトウェアシステムにおける制御対象または仮想的な対象の状態をユーザの入力により定義し、前記コンポーネント定義手段は、前記定義された各状態に就き、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、次の状態に移るときに実行される実行コンポーネントを定義し、前記実行コンポーネント記憶部に、実行されるプログラムモジュールである前記実行コンポーネントの情報が保存され、前記判断コンポーネント記憶部に、判断を行うプログラムモジュールである判断コンポーネントの情報が保存され、前記フィーチャ情報記憶部に、前記制御対象または前記仮想的な対象の状態の遷移を示す状態遷移の情報を含む特性を表すフィーチャの情報が記憶され、前記実行コンポーネント選択手段は、ユーザに対して、前記定義された各状態に就き、前記実行コンポーネント記憶部の前記実行コンポーネントの情報のうちから、その状態になったときに始めて実行される実行コンポーネント、状態を維持しているときに実行される実行コンポーネント、および次の状態に移るときに実行される実行コンポーネントを画面を用いて選択させて、前記フィーチャ情報記憶部に保存し、前記判断コンポーネント選択手段は、ユーザに対して、前記定義された各状態に就き、画面を用いて、前記各状態のうちから遷移元の状態と遷移先の状態とを選択させ、前記遷移元の状態から前記遷移先の状態へ遷移させるための判断を行う判断コンポーネントを、画面を用いて、前記判断コンポーネント記憶部の前記判断コンポーネントの情報のうちから選択させるととともに、前記遷移が可能となる当該選択された判断コンポーネントの返り値を画面を用いて選択させて、前記フィーチャ情報記憶部に保存し、前記実行コンポーネント管理手段は、前記選択される実行コンポーネントを、前記実行コンポーネント記憶部に記憶保持するとともに、必要に応じて読み出すことを可能とし、前記判断コンポーネント管理手段は、前記選択可能な判断コンポーネントを、前記判断コンポーネント記憶部に記憶保持するとともに必要に応じて読み出すことを可能としている。
【発明の効果】
【００１７】
以上、本発明によれば、状態遷移の遷移条件で実行されるコンポーネントを任意にマッピング可能とし、フィーチャを再利用可能とするソフトウェアプロダクトライン開発支援装置およびその方法を実現できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係るソフトウェアプロダクトライン開発支援装置のブロック図。
【図２】実施形態に係る実行コンポーネント情報の構成の一例を示す図。
【図３】実施形態に係る判断コンポーネント情報の構成の一例を示す図。
【図４】実施形態に係るフィーチャ情報の構成の一例を示す図。
【図５】実施形態に係る状態識別情報の登録を説明するための概念図。
【図６】実施形態に係る状態識別情報編集画面を示す図。
【図７】実施形態に係る状態間関連情報の登録を説明するための概念図。
【図８】実施形態に係る状態間関連情報編集表示画面を示す図。
【図９】実施形態に係る入れ子構造をとる状態遷移を表示した状態間関連情報編集画面を示す図。
【図１０】実施形態に係る状態遷移情報の整合性チェックの概念図。
【図１１】実施形態に係る状態遷移不可能な条件の一例を示す図。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について添付図面を参照して説明する。
図１は、本発明の一実施形態に係るソフトウェアプロダクトライン開発支援装置１のブロック図である。
本実施形態では、鉄道における列車の運行を管理する列車運行管理システムのソフトウェアプロダクトラインを開発するためのソフトウェアプロダクトライン開発支援装置１について述べる。列車運行管理システム(監視制御システム)の制御対象は、列車の運行に係わる設備などである。
【００２０】
実施形態のソフトウェアプロダクトライン開発支援装置１は、列車の運行に係わる様々な特性を示すフィーチャの情報などを記憶するハードディスクなどの記憶手段である記憶部２と、マウスやキーボード、タッチパネルなどの入力装置３１およびＬＣＤ(Liquid Crystal Display)などの表示装置３２を備えるユーザインターフェース部３と、ソフトウェアプロダクトライン開発支援装置１の全体を制御する制御部４とを具備する。
【００２１】
記憶部２には、ソフトウェアプロダクトライン開発支援装置１の制御(処理)を担うソフトウェアプロダクトライン開発支援プログラム１０が記憶されている。ＣＰＵ(Central Processing Unit)により、ソフトウェアプロダクトライン開発支援プログラム１０(以下、開発支援プログラム１０と称す)が実行されることにより、制御部４が具現化される。なお、図１においては、ＣＰＵが、ＨＤＤ(Hard disk drive)などの記憶部２から開発支援プログラム１０を読み出し主記憶部(図示せず)に展開して実行し、制御部４を具現化している状態を示している。
【００２２】
記憶部２は、実行されるプログラムモジュールである実行コンポーネントの情報(実行コンポーネント情報)を管理する実行コンポーネント情報保存部２１と、判断を行うプログラムモジュールである判断コンポーネントの情報(判断コンポーネント情報)を管理する判断コンポーネント情報保存部２２と、運行に係わる設備などの状態遷移を含むフィーチャ(特性)の情報を格納するフィーチャ情報保存部２３と、各情報を分析した結果が格納されるフィーチャモデル分析結果保存部２４とを含み構成されている。
【００２３】
開発支援プログラム１０で具体化される制御部４は、ユーザインターフェース部３からの入出力を管理するインターフェース部１１と、どういうプログラムモジュールレベルがあるかなどの実行コンポーネント情報を管理する実行コンポーネント情報管理部１２と、どのような判断を行うプログラムモジュールがあるかなどの判断コンポーネント情報を管理する判断コンポーネント情報管理部１３と、設備などの状態遷移を含むフィーチャの情報を管理するフィーチャ情報管理部１４と、各種の情報を統合的に管理する情報管理部１５と、記憶部２の各情報保存部(２１、２２、２３、２４)に保存されている情報からシステムの整合性チェックおよび自動ソースコードの生成やシステムテストなどを行う情報分析部１６とを含み構成されている。
【００２４】
インターフェース部１１は、本ソフトウェアプロダクトライン開発支援装置１の各種機能と操作者(ユーザ)が使用する入力装置３１、表示装置３２との間の情報の受け渡しを行うものである。なお、表示装置３２は、ソフトウェアプロダクトラインの開発に際しての表示を行う。
【００２５】
例えば、インターフェース部１１は、入力装置３１からの操作者(ユーザ)の指示を情報管理部１５や情報分析部１６に伝達する機能と、情報管理部１５や情報分析部１６から伝えられる情報に基づいて表示装置３２に表示すべき画面を生成する機能(例えば、画面定義、画面オブジェクトなど)を有している。また、インターフェース部１１は、入力装置３１からの操作者(ユーザ)の操作に応じて、表示装置３２に表示される各種の画面の切り替えを行う機能(例えば、画面切り替え定義など)を備えている。
【００２６】
実行コンポーネント情報管理部１２は、実行コンポーネント情報保存部２１に保存される実行コンポーネント情報を管理するものである。
記憶部２の実行コンポーネント情報保存部２１は、個々の実行コンポーネントを識別する実行コンポーネント識別情報や実行コンポーネント間の親子関係を示す実行コンポーネント間の関連情報を含む実行コンポーネント間関連情報、実行コンポーネントを保存する記憶媒体である。
【００２７】
記憶部２の判断コンポーネント情報保存部２２は、個々の判断コンポーネントの情報(判断コンポーネント情報)、例えば判断コンポーネントの識別情報、判断コンポーネントなどや判断コンポーネント間の関連情報を含む設備情報を保存する記憶媒体である。
制御部４の判断コンポーネント情報管理部１３は、判断コンポーネント情報保存部２２に保存される判断コンポーネント情報を管理するものである。すなわち、判断コンポーネント情報管理部１３は、判断コンポーネント情報保存部２２に判断コンポーネント情報を記憶・保持したり、読み出したり、更新したり、削除などする。
【００２８】
記憶部２のフィーチャ情報保存部２３は、制御対象となる設備などが保持する状態とその状態遷移の条件に使用される判断コンポーネントとの関係および状態遷移したときに実行される実行コンポーネントの情報を保存する記憶媒体に相当するものである。
制御部４のフィーチャ情報管理部１４は、フィーチャ情報保存部２３に保存される状態遷移情報を含むフィーチャ情報を管理するものである。フィーチャ情報管理部１４は、フィーチャ情報をフィーチャ情報保存部２３に記憶したり、読み出し、更新したり、削除などする。なお、状態などのフィーチャ情報を保持するフィーチャ情報保存部２３と、フィーチャ情報を管理するフィーチャ情報管理部１４とは、任意の状態を定義するので、状態定義手段である。任意の状態は、ユーザがユーザインターフェース部３から入力することができる。或いは、他のシステムからデータを転送して、任意の状態をフィーチャ情報管理部１４でフィーチャ情報保存部２３に記録してもよい。
【００２９】
制御部４の情報管理部１５は、各管理部１２、１３、１４とインターフェース部１１との情報の受け渡しや情報分析部１６との情報の受け渡しを行うものである。
情報分析部１６は、情報管理部１５から取得される実行コンポーネント情報と、判断コンポーネント情報と、状態遷移を含むフィーチャ情報とに基づき、各情報の整合性を検証する機能と、その検証結果を表示装置３２側へ出力する機能と、実行可能なソースコード(プログラムソースのコード)を自動生成する機能と、生成したソースコードを試験する機能とを有する。
記憶部２のフィーチャモデル分析結果保存部２４は、情報分析部１６が解析した結果を保存する記憶媒体である。
【００３０】
＜各情報保存部２１、２２、２３に保存される情報の構成＞
次に、各種の情報保存部２１、２２、２３に保存される情報の構成について、図２〜図４を参照して説明する。
図２は、実行コンポーネント情報保存部２１に保存される実行コンポーネント情報Ｊの構成の一例を示す図である。
実行コンポーネント情報Ｊは、実行コンポーネント識別情報Ｊ１と実行コンポーネント間関連情報Ｊ２とを含む。
【００３１】
実行コンポーネント識別情報Ｊ１は、個々の実行コンポーネントを識別するための“実行コンポーネントＩＤ(Identification)”や、“実行コンポーネント名”などの情報を含む。その他、実行コンポーネント識別情報Ｊ１は、当該実行コンポーネントが何を行うかのコメントである“実行コンポーネントコメント”、当該実行コンポーネントの“作成日時”を含む。
【００３２】
実行コンポーネント間関連情報Ｊ２は、実行コンポーネント間の関連情報を一意に識別するための“実行コンポーネント間関連ＩＤ”、実行コンポーネントの親子関係を識別するための“子実行コンポーネントＩＤ”などの情報を含む。さらに、実行コンポーネント間関連情報Ｊ２は、子実行コンポーネントとの関連を示す“子コンポーネントとの関連”(図２では、C10001またはC10002の何れかを選択する“択一式”を示す)、および当該実行コンポーネントが動作するために必要となる関連する実行コンポーネント情報を示す“実行コンポーネント参照関連”を含むものである。すなわち、図２では、実行コンポーネントIDが“C10000”の実行コンポーネントが動作するためには、実行コンポーネントIDが“C20001”の実行コンポーネントを参照する必要があることを示している。
【００３３】
図３は、判断コンポーネント情報保存部２２(図１参照)に保存される判断コンポーネント情報Ｈの構成の一例を示す図である。
判断コンポーネント情報Ｈは、判断コンポーネント識別情報Ｈ１および判断コンポーネント間関連情報Ｈ２を含む。
判断コンポーネント識別情報Ｈ１は、個々の判断コンポーネントを識別するための“判断コンポーネントＩＤ”や、“判断コンポーネント名”などの情報を含む。さらに、判断コンポーネント識別情報Ｈ１は、当該判断コンポーネントの内容を示す“判断コンポーネントコメント”、その“作成日時”を含む。
【００３４】
判断コンポーネント間関連情報Ｈ２は、当該判断コンポーネントの関連情報を一意に識別するための“判断コンポーネント間関連ＩＤ”、当該判断コンポーネントの親子関係をなす“子判断コンポーネントＩＤ”などの情報を含む。さらに、判断コンポーネント間関連情報Ｈ２は、子判断コンポーネントとの関連を示す“子コンポーネントとの関連”(図３では、“C10001”または“C10002”の何れかを選択する“択一式”が指定された場合を示す)、当該判断コンポーネント(W10000)を動作させる際に必要となる判断コンポーネントを示す“判断コンポーネント間関連”を含むものである。つまり、図３では、判断コンポーネント(W10000)を動作させるには判断コンポーネントＩＤ：C20001、C20002、C20003の判断コンポーネントを参照する必要があることを示している。
【００３５】
図４は、フィーチャ情報保存部２３に保存される状態遷移情報のフィーチャ情報Ｆの構成の一例を示す図である。
フィーチャ情報Ｆは、状態識別情報Ｆ１および状態間関連情報Ｆ２を含む。
状態識別情報Ｆ１は、個々の設備などの状態を識別するための“状態ID”や、状態名称、本状態に至る場合に実行される実行コンポーネントＦ１ａなどの情報を含む。実行コンポーネントＦ１ａは、本状態に入る際(entry)には自動制御Ａを実行し、本状態の間(stay)は、何もせず(ＮＵＬＬ)、本状態から出る際(exit)には何もしない (ＮＵＬＬ)ことを示している。状態識別情報Ｆ１には、その他、本状態の内容を説明する“コメント”、本状態の“作成日時”が表示される。 
【００３６】
状態間関連情報Ｆ２は、状態間の関連情報である状態間関連情報を識別する“関連ＩＤ”を含み、また、状態から状態への“状態遷移情報”として設備の状態間の遷移するための条件として使用される状態判断コンポーネントＦ２ａ、状態遷移元Ｆ２ｂと状態遷移先Ｆ２ｃを含むものである。
【００３７】
＜ソフトウェアプロダクトライン開発支援を実現する各種の処理＞
次に、ソフトウェアプロダクトライン開発支援を実現する各種の処理について、図５〜図１１を参照して、説明する。
以下では、設備などの状態に関して、「１．状態識別情報の登録」、「２．状態間関連情報の登録」、「３．状態遷移の整合性チェック」、「４．状態遷移を実現するソースコード生成」について説明し、その後、生成されたプログラムソースのテストである「５．生成ソースコードの試験」について説明する。
【００３８】
なお、実行コンポーネント情報、判断コンポーネント情報については、記憶部２に登録済みであるものとする。実行コンポーネント情報、判断コンポーネント情報の登録は、従来のコンポーネント作成や応用プログラム作成、ソフトウェアプログラム作成に類するものであり周知の技術であるため、ここでは特に説明しない。さらに実行コンポーネント、判断コンポーネントは登録時に試験済みとし、保証されているものとする。
【００３９】
１．状態識別情報の登録
図５は、状態識別情報の登録を説明するための概念図である。
状態遷移作成者(ユーザ)Ｐは、図６に示される状態識別情報編集画面Ｇ１を介して、状態の作成を行う。
一般に、状態を作成する対象は制御対象となる設備やシステム全体の状態など状態遷移を持つ具現的な対象について作成されるものであるが、仮想的な設備や事象についての対象に状態を定義しても構わない。
【００４０】
状態識別情報編集画面Ｇ１では、定義した状態に遷移した際に実行される実行コンポーネント（以下、entry時実行コンポーネントとする）を実行コンポーネントコンボボックスＧ１ａから選択可能である。具体的には、状態識別情報編集画面Ｇ１で、entry時実行コンポーネントを選択する実行コンポーネントコンボボックスＧ１ａをクリックすると、このクリック情報により、図５のインターフェース部１１、情報管理部１５、実行コンポーネント情報管理部１２を介して、実行コンポーネント情報管理部１２が実行コンポーネント情報保存部２１から選択可能な実行コンポーネント一覧を取得することで、実行コンポーネントコンボボックスＧ１ａに表示する。
ユーザは、必要に応じて実行コンポーネントコンボボックスＧ１ａに表示された実行コンポーネント一覧からentry時の実行コンポーネントを選択する。entry時に実行する必要がない場合は、非選択の状態で問題ない。
【００４１】
また、定義した状態に停滞している(定義した状態を維持している)場合に実行されるコンポーネントや、状態から抜け出した場合に実行されるコンポーネント（以下、それぞれstay時実行コンポーネント、exit時実行コンポーネントとする）に関しても同様に、それぞれ実行機能フィーチャ(stay)コンボボックスＧ１ｂ、実行機能フィーチャ(exit)コンボボックスＧ１ｃから選択することが可能である。なお、状態識別情報編集画面Ｇ１には、状態名称“ＮＯＰ”の内容を説明する“コメント”、“作成日時”が表示される。
【００４２】
状態遷移作成者Ｐが「登録」ボタンＧ１ｄを押下すると、状態識別情報編集画面Ｇ１で入力した情報が、ユーザインターフェース部３(図１参照)から、図５のインターフェース部１１、情報管理部１５、フィーチャ情報管理部１４を介して、フィーチャ情報管理部１４によってフィーチャ情報保存部２３に保存される。
【００４３】
２．状態間関連情報の登録
図７は、状態間関連情報の登録を説明するための概念図である。
状態遷移作成者(ユーザ)Ｐは、図８に示す状態間関連情報編集表示画面Ｇ２を介して、状態から状態へ遷移する状態遷移の条件定義を行う。一般に、状態遷移する条件は、その条件を判断するフィーチャを利用するものとするが、各設備の入出力情報(標準入出力情報や外部システムの入出力情報)を使用しても構わない。
【００４４】
まず、状態遷移作成者Ｐは、「１．状態識別情報の登録」で登録した状態を図８の状態間関連情報編集表示画面Ｇ２の状態情報一覧Ｇ２ａで選択する。状態間関連情報編集表示画面Ｇ２の状態情報一覧Ｇ２ａのスペースに登録されている全ての状態一覧が表示されている。
状態遷移作成者(ユーザ)Ｐは、ユーザインターフェース部３(図１参照)を介して、状態情報一覧Ｇ２ａから使用する状態を選択し、状態間関連情報編集画面Ｇ２ｂに登録する。
【００４５】
次に、ユーザインターフェース部３で、図８の状態間関連情報編集画面Ｇ２ｂにおいて、状態遷移が起りうる状態間を、マウスでドラッグなどして状態遷移線Ｇ２ｓで結びつける。
図８の状態間関連情報編集画面Ｇ２ｂにおける遷移元(矢印の始点)の状態と遷移先(矢印の終点)の状態を選択した結果は、図７のインターフェース部１１、情報管理部１５を介して、フィーチャ情報管理部１４に通知され、一時的にフィーチャ情報管理部１４で管理される、例えばフィーチャ情報管理部１４の一時記憶領域に保存される。
【００４６】
さらに、図９に示す状態間関連情報編集画面Ｇ２ｂのように、入れ子構造をとりうる状態Ｇ２ｂ１に関しては、その状態Ｇ２ｂ１内にさらに状態遷移を格納することができる。つまり、親状態(Ｇ２ｂ１)になったタイミングで、最初に遷移する状態Ｇ２ｂ２を上記と同様に定義する。
【００４７】
次に、ユーザインターフェース部３(図１参照)を介して、状態遷移が生じる条件を定義する。
状態遷移線Ｇ２ｓをクリックし、条件コンポーネント入力コンボボックスＧ２ｃに表示されている判断コンポーネントと返り値Ｇ２ｄの選択をする。選択可能な判断コンポーネントは、図７の判断コンポーネント情報保存部２２、判断コンポーネント情報管理部１３、情報管理部１５、インターフェース部１１を介して、判断コンポーネント情報管理部１３が判断コンポーネント情報保存部２２から取得することで、結果を表示装置３２(図１参照)に表示する。
【００４８】
そして、選択した結果は、図７のインターフェース部１１、情報管理部１５を介して、フィーチャ情報管理部１４に通知され、フィーチャ情報管理部１４が一時的に記憶する、例えば、フィーチャ情報管理部１４の一時記憶領域に保存する。ここで、状態遷移するための判断コンポーネントは１つとは限らず、複数選択することも可能であり、複数の判断コンポーネントの論理式を組んでも構わない。なお、条件コンポーネント入力コンボボックスＧ２ｃで選択した判断コンポーネントと選択した返り値Ｇ２ｄは、条件コンポーネント一覧Ｇ２ｅに表示される。
状態遷移作成者Ｐが図９の「登録」ボタンＧ２ｆを押下すると、入力した情報は、図７のインターフェース部１１、情報管理部１５を介して、フィーチャ情報管理部１４に通知され、フィーチャ情報管理部１４によりフィーチャ情報保存部２３に保存される。
【００４９】
３．状態遷移の整合性チェック
図１０は、状態遷移情報の整合性チェックを説明するための概念図である。
前記の「１．状態識別情報の登録」、「２．状態間関連情報の登録」の登録完了後、図１０に示す実行コンポーネント情報保存部２１、判断コンポーネント情報保存部２２、フィーチャ情報保存部２３に登録されている内容の整合性チェックを行う。
【００５０】
まず、フィーチャ情報保存部２３に保存されているentry時実行コンポーネント、stay  時実行コンポーネント、exit時実行コンポーネントおよび判断コンポーネントが、それぞれ実行コンポーネント情報保存部２１、判断コンポーネント情報保存部２２に存在するか、それぞれ実行コンポーネント情報管理部１２、判断コンポーネント情報管理部１３で確認する。削除等され存在しないフィーチャを使用していた場合は、インターフェース部１１を介して、図１のユーザインターフェース部３の表示装置３２にエラーとして表示する。
【００５１】
次に、状態遷移の整合性チェックを情報分析部１６が行う。論理的に状態遷移が不可能な状態が定義されていないか、チェックを行う。
図１１に状態遷移不可能な条件の一例Ｇ２ｇを示す。
図１１の例に示したように、情報分析部１６の状態遷移の整合性チェックの結果、論理が矛盾している状態遷移や１つの状態から状態遷移が不可能な条件があった場合(図１１の一例Ｇ２ｇ)は、インターフェース部１１を介して、ユーザインターフェース部３の表示装置３２にエラーとして表示する。
【００５２】
状態遷移作成者Ｐ(ユーザ)は、表示装置３２に表示される各エラーの内容を確認し、必要に応じて、実行コンポーネント情報、判断コンポーネント情報、フィーチャ情報を修正し、再度、整合性チェックをかける。
【００５３】
４．状態遷移を実現するソースコード生成
次に、状態遷移を実現するソースコードを生成する。
情報分析部１６は、登録されている情報を基に状態遷移を実現する実行可能なソースコードを自動生成する。状態遷移図を用いた自動のソースコード生成については周知の技術であるため、ここでは特に説明しない。
【００５４】
生成されたソースコードは、実際に列車運行管理システム(監視制御システム)にダウンロードされて制御を行うコードであり、次に説明する「５．生成ソースコードの試験」に用いられるものである。生成されたソースコードは、フィーチャモデル分析結果保存部２４に情報分析部１６によって保存される。
【００５５】
５．生成ソースコードの試験
次に、「４．状態遷移を実現するソースコード生成」で生成したソースコードの試験を情報分析部１６(図１参照)が行う。前記で定義した状態遷移と判断コンポーネントと実行コンポーネントの組み合わせを、仮想環境上で網羅的に試験する。試験のシナリオは情報分析部１６において、ソースコード生成を行った際に、テストコードも同時に吐き出され、仮想環境で意図通りに作動するか検証することができる。
【００５６】
上記構成によれば、外部定義により指定した状態遷移に従い、コンポーネント実行(実行コンポーネント、判断コンポーネント)の条件をソフトウェア開発者(ユーザ)が任意に選択可能とする。
すなわち、システム構成や運用が各ユーザごとに異なる特徴をもつ制御監視システム(例えば、列車運行管理システム)において、コンポーネントの実行タイミングは異なるが、比較的統一されている状態遷移に着目し、状態遷移の遷移条件で実行されるコンポーネントをソフトウェア開発者(ユーザ)が、図８、図９に示すように、任意にマッピング可能とすることで、フィーチャの再利用性が図れ、ソフトウェアプロダクトラインの高生産性を実現できる。
【００５７】
なお、前記実施形態においては、ソフトウェアプロダクトライン開発支援装置１は、一つの形態に制御部４が納まる場合を例示しているが、説明した機能が果たせれば、複数のコンピュータ上に制御部４を展開してもよい。
また、記憶部２は、別体のデータベースサーバに記憶してもよいし、分割して構成してもよい。
【産業上の利用可能性】
【００５８】
本発明は、状態遷移図を用いて表現が可能なシステムや処理であれば、監視制御システムに限ることなく、他のシステム装置や処理でも利用することが可能である。
【符号の説明】
【００５９】
１      ソフトウェアプロダクトライン開発支援装置
１０    ソフトウェアプロダクトライン開発支援プログラム
１２    実行コンポーネント情報管理部(コンポーネント定義手段、実行コンポーネントチェック手段)
１３    判断コンポーネント情報管理部(判断コンポーネント選択手段、判断コンポーネント管理手段、判断コンポーネントチェック手段)
１４    フィーチャ情報管理部(フィーチャ管理手段、状態定義手段、コンポーネント定義手段、状態管理手段、状態遷移手段)
１６    情報分析部(ソースコード生成手段、ソフトウェア試験手段、整合性チェック手段)
２１    実行コンポーネント情報保存部(コンポーネント定義手段)
２２    判断コンポーネント情報保存部(判断コンポーネント記憶部)
２３    フィーチャ情報保存部(状態定義手段、フィーチャ情報記憶部、状態管理手段、コンポーネント定義手段)
２４    フィーチャモデル分析結果保存部
Ｆ２    状態間関連情報(状態遷移手段)
【図１】
0005319643.tif 000002
【図２】
0005319643.tif 000003
【図３】
0005319643.tif 000004
【図４】
0005319643.tif 000005
【図５】
0005319643.tif 000006
【図６】
0005319643.tif 000007
【図７】
0005319643.tif 000008
【図８】
0005319643.tif 000009
【図９】
0005319643.tif 000010
【図１０】
0005319643.tif 000011
【図１１】
0005319643.tif 000012