(57)【要約】【課題】モデルベース開発において、モデルの品質管理や評価を実現する手段を提供し、ソフトウェアの品質確保を支援する技術を提供する。【解決手段】決定表４００に記述されている条件の値および該当条件に対応付けられた実行項目の値の各組み合わせパターンを決定表４００より抽出して展開表６００を生成する展開表生成部１３１と、展開表６００における各組み合わせパターンの間で状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組み合わせパターンを特定し、当該特定した組み合わせパターンの情報を、該当組み合わせパターンにおける実行項目が対応付けされるべきポリシ８５０として記憶部１０５に格納するポリシ生成部１３２とからソフトウェア開発支援装置１００を構成する。【選択図】図１
2013214222.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア開発の支援を行う情報処理装置であって、
開発対象のソフトウェアが含む制御判断ロジックを定義する、処理実行の条件と当該条件に応じて実行される実行項目とが記述された決定表を記憶する記憶部と、
前記決定表に記述されている前記条件の値および該当条件に対応付けられた前記実行項目の値の各組み合わせパターンを決定表より抽出し、各組み合わせパターンについて抽出した条件の値を、該当組み合わせパターンにおける実行項目実行前のソフトウェアないしソフトウェアの制御対象の状態を示す前状態の値とし、該当組み合わせパターンにおける実行項目の値を、前記ソフトウェアないしソフトウェアの制御対象の状態を前記前状態から遷移させるイベントの値とし、該当組み合わせパターンにおける実行項目実行後の前記条件の値と条件の値が一致する他の組み合わせパターンを特定し、特定した他の組み合わせパターンの識別値を次状態の値とし、前記前状態の値と前記イベントの値と前記次状態の値とを対応付けて展開表を生成する展開表生成部と、
前記展開表における各組み合わせパターンの間で前記状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組み合わせパターンを特定し、当該特定した組み合わせパターンの情報を、該当組み合わせパターンにおける実行項目が対応付けされるべきポリシとして記憶部に格納するポリシ生成部と、
を備えることを特徴とするソフトウェア開発支援装置。
【請求項２】
前記ポリシ生成部は、
予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にて前状態の値の一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットとに分別するものである、
ことを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項３】
前記ポリシ生成部は、
予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にてイベントの値の一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別するものである、
ことを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項４】
前記ポリシ生成部は、
予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にて前状態の値とイベントの値との組み合わせの一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別するものである、
ことを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項５】
前記ポリシ生成部は、
予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にて、前状態と次状態の連なりである状態遷移のシーケンスの一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別するものである、
ことを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項６】
前記ポリシ生成部は、
前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別する際、ポリシに適合するが所定の実行項目が対応付けされていない組み合わせパターンと、ポリシから逸脱するが前記分析対象実行項目が対応付けされている組み合わせパターンを、ポリシ例外として特定するものである、ことを特徴とする請求項２〜５のいずれかに記載のソフトウェア開発支援装置。
【請求項７】
前記ポリシ例外の情報と、当該ポリシ例外の修正をユーザに促す情報とを表示装置に表示するポリシ編集部を備えることを特徴とする請求項６に記載のソフトウェア開発支援装置。
【請求項８】
前記ポリシ編集部は、
ポリシ例外の修正に関するユーザ指示を入力装置で受け、当該ユーザ指示に応じて、前記ポリシ例外を新規ポリシとして記憶部に登録するものであることを特徴とする請求項７に記載のソフトウェア開発支援装置。
【請求項９】
前記ポリシ編集部は、
ポリシ例外の修正に関するユーザ指示を入力装置で受け、当該ユーザ指示に応じて、前記ポリシ例外により前記ポリシを更新するものであることを特徴とする請求項７に記載のソフトウェア開発支援装置。
【請求項１０】
前記ポリシと前記展開表ないし前記決定表とを照合して、前記展開表ないし前記決定表のポリシへの適合ないし逸脱を判定し、ポリシから逸脱した該当箇所について前記展開表ないし前記決定表をポリシの記載に修正するポリシ反映部を備えることを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項１１】
前記ポリシと前記展開表ないし前記決定表とを照合して、前記展開表ないし前記決定表のポリシへの適合ないし逸脱を判定し、ポリシから逸脱した該当箇所について前記展開表ないし前記決定表をポリシの記載に修正するポリシ反映部を備え、  
前記ポリシ編集部が、
ポリシ例外の修正に関するユーザ指示を入力装置で受け、当該ユーザ指示に応じて、前記ポリシ反映部に対し、ポリシに従ってポリシ例外に該当する展開表ないし決定表を修正する指示を行うものであることを特徴とする請求項６に記載のソフトウェア開発支援装置。
【請求項１２】
開発対象のソフトウェアが含む制御判断ロジックを定義する、処理実行の条件と当該条件に応じて実行される実行項目とが記述された決定表を記憶する記憶部を備え、ソフトウェア開発の支援を行う情報処理装置が、
前記決定表に記述されている前記条件の値および該当条件に対応付けられた前記実行項目の値の各組み合わせパターンを決定表より抽出し、各組み合わせパターンについて抽出した条件の値を、該当組み合わせパターンにおける実行項目実行前のソフトウェアないしソフトウェアの制御対象の状態を示す前状態の値とし、該当組み合わせパターンにおける実行項目の値を、前記ソフトウェアないしソフトウェアの制御対象の状態を前記前状態から遷移させるイベントの値とし、該当組み合わせパターンにおける実行項目実行後の前記条件の値と条件の値が一致する他の組み合わせパターンを特定し、特定した他の組み合わせパターンの識別値を次状態の値とし、前記前状態の値と前記イベントの値と前記次状態の値とを対応付けて展開表を生成する処理と、
前記展開表における各組み合わせパターンの間で前記状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組み合わせパターンを特定し、当該特定した組み合わせパターンの情報を、該当組み合わせパターンにおける実行項目が対応付けされるべきポリシとして記憶部に格納する処理と、
を実行することを特徴とするソフトウェア開発支援方法。
【請求項１３】
開発対象のソフトウェアが含む制御判断ロジックを定義する、処理実行の条件と当該条件に応じて実行される実行項目とが記述された決定表を記憶する記憶部を備え、ソフトウェア開発の支援を行う情報処理装置に、
前記決定表に記述されている前記条件の値および該当条件に対応付けられた前記実行項目の値の各組み合わせパターンを決定表より抽出し、各組み合わせパターンについて抽出した条件の値を、該当組み合わせパターンにおける実行項目実行前のソフトウェアないしソフトウェアの制御対象の状態を示す前状態の値とし、該当組み合わせパターンにおける実行項目の値を、前記ソフトウェアないしソフトウェアの制御対象の状態を前記前状態から遷移させるイベントの値とし、該当組み合わせパターンにおける実行項目実行後の前記条件の値と条件の値が一致する他の組み合わせパターンを特定し、特定した他の組み合わせパターンの識別値を次状態の値とし、前記前状態の値と前記イベントの値と前記次状態の値とを対応付けて展開表を生成する処理と、
前記展開表における各組み合わせパターンの間で前記状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組み合わせパターンを特定し、当該特定した組み合わせパターンの情報を、該当組み合わせパターンにおける実行項目が対応付けされるべきポリシとして記憶部に格納する処理と、
を実行させることを特徴とするソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびソフトウェア開発支援プログラムに関するものであり、具体的には、モデルベース開発において、モデルの品質管理や評価を実現する手段を提供し、ソフトウェアの品質確保を支援する技術に関する。
【背景技術】
【０００２】
システムの設計工程において、要件や仕様に関する関係者の理解を深めることや、システムの特徴を端的に表すことを目的として、モデルベース開発が普及している。このモデルベース開発は、システムを抽象化して記述するモデリング言語を用いたシステム開発手法である。また、モデリング言語の例としては、ＵＭＬ（Unified Modeling Language）が著名である。また、設計対象システムの状態等の条件とそれに応じてなされる処理（実行項目）とを対比した表形式で論理を表現し、条件判定を伴う要求、仕様を記述する有効な手段として、決定表が存在する。決定表を利用することは、プログラム制御の条件漏れなどのチェックにも効果を生じる。
【０００３】
こうしたモデルベース開発技術の例として、例えば、静的なインスタンス仕様のモデル化方法と、インスタンス仕様が記述されたプログラムをモデルに基づいて生成する方法であり、静的なインスタンスである設備をモデル化し、さらに設備の仕様を記述したプログラムを得ることを特徴とするプログラム開発支援装置（特許文献１参照）などが提案されている。
【０００４】
また、制御判断ロジックのモデリング言語と、当該モデリング言語に基づいたプログラム生成を行う技術であり、表形式のモデルを扱うことを特徴とするソースプログラム生成システム（特許文献２参照）なども提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２８７６９５号公報
【特許文献２】特開２００３−２０８３０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した従来技術を用いることで、制御判断ロジックのＵＭＬや決定表によるモデル化と、モデルからのプログラム生成が可能となる。しかしながら、従来技術におけるＵＭＬや決定表は、ソフトウェアの信頼性、可用性、保守性といった品質特性を向上するための記法や制約を持っていない。そのため、モデルおよび生成プログラムの品質は、人手による実装作業と同様に、モデリングを行う担当者のスキルに依存してしまうという問題がある。さらに、従来技術では、作成したモデルの品質管理や評価を行う手段を持たない。
【０００７】
そこで本発明の目的は、モデルベース開発において、モデルの品質管理や評価を実現する手段を提供し、ソフトウェアの品質確保を支援する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決する本発明のソフトウェア開発支援装置は、ソフトウェア開発の支援を行う情報処理装置であって、開発対象のソフトウェアが含む制御判断ロジックを定義する、処理実行の条件と当該条件に応じて実行される実行項目とが記述された決定表を記憶する記憶部と、前記決定表に記述されている前記条件の値および該当条件に対応付けられた前記実行項目の値の各組み合わせパターンを決定表より抽出し、各組み合わせパターンについて抽出した条件の値を、該当組み合わせパターンにおける実行項目実行前のソフトウェアないしソフトウェアの制御対象の状態を示す前状態の値とし、該当組み合わせパターンにおける実行項目の値を、前記ソフトウェアないしソフトウェアの制御対象の状態を前記前状態から遷移させるイベントの値とし、該当組み合わせパターンにおける実行項目実行後の前記条件の値と条件の値が一致する他の組み合わせパターンを特定し、特定した他の組み合わせパターンの識別値を次状態の値とし、前記前状態の値と前記イベントの値と前記次状態の値とを対応付けて展開表を生成する展開表生成部と、前記展開表における各組み合わせパターンの間で前記状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組み合わせパターンを特定し、当該特定した組み合わせパターンの情報を、該当組み合わせパターンにおける実行項目が対応付けされるべきポリシとして記憶部に格納するポリシ生成部と、を備えることを特徴とする。
【０００９】
また、本発明のソフトウェア開発支援方法は、開発対象のソフトウェアが含む制御判断ロジックを定義する、処理実行の条件と当該条件に応じて実行される実行項目とが記述された決定表を記憶する記憶部を備え、ソフトウェア開発の支援を行う情報処理装置が、前記決定表に記述されている前記条件の値および該当条件に対応付けられた前記実行項目の値の各組み合わせパターンを決定表より抽出し、各組み合わせパターンについて抽出した条件の値を、該当組み合わせパターンにおける実行項目実行前のソフトウェアないしソフトウェアの制御対象の状態を示す前状態の値とし、該当組み合わせパターンにおける実行項目の値を、前記ソフトウェアないしソフトウェアの制御対象の状態を前記前状態から遷移させるイベントの値とし、該当組み合わせパターンにおける実行項目実行後の前記条件の値と条件の値が一致する他の組み合わせパターンを特定し、特定した他の組み合わせパターンの識別値を次状態の値とし、前記前状態の値と前記イベントの値と前記次状態の値とを対応付けて展開表を生成する処理と、前記展開表における各組み合わせパターンの間で前記状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組み合わせパターンを特定し、当該特定した組み合わせパターンの情報を、該当組み合わせパターンにおける実行項目が対応付けされるべきポリシとして記憶部に格納する処理と、を実行することを特徴とする。
【００１０】
また、本発明のソフトウェア開発支援プログラムは、開発対象のソフトウェアが含む制御判断ロジックを定義する、処理実行の条件と当該条件に応じて実行される実行項目とが記述された決定表を記憶する記憶部を備え、ソフトウェア開発の支援を行う情報処理装置に、前記決定表に記述されている前記条件の値および該当条件に対応付けられた前記実行項目の値の各組み合わせパターンを決定表より抽出し、各組み合わせパターンについて抽出した条件の値を、該当組み合わせパターンにおける実行項目実行前のソフトウェアないしソフトウェアの制御対象の状態を示す前状態の値とし、該当組み合わせパターンにおける実行項目の値を、前記ソフトウェアないしソフトウェアの制御対象の状態を前記前状態から遷移させるイベントの値とし、該当組み合わせパターンにおける実行項目実行後の前記条件の値と条件の値が一致する他の組み合わせパターンを特定し、特定した他の組み合わせパターンの識別値を次状態の値とし、前記前状態の値と前記イベントの値と前記次状態の値とを対応付けて展開表を生成する処理と、前記展開表における各組み合わせパターンの間で前記状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組み合わせパターンを特定し、当該特定した組み合わせパターンの情報を、該当組み合わせパターンにおける実行項目が対応付けされるべきポリシとして記憶部に格納する処理と、を実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、モデルベース開発において、モデルの品質管理や評価を実現する手段を提供し、ソフトウェアの品質確保を支援することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態におけるソフトウェア開発支援装置の構成例を示すブロック図である。
【図２】本実施形態のソフトウェア開発支援装置のハードウェア構成例を示すブロック図である。
【図３】本実施形態におけるソフトウェア開発支援方法の処理手順例１を示すフロー図である。
【図４】本実施形態における決定表の例を示す図である。
【図５】本実施形態における属性定義表の例を示す図である。
【図６】本実施形態における展開表の例を示す図である。
【図７】本実施形態におけるソフトウェア開発支援方法の処理手順例２を示すフロー図である。
【図８】本実施形態におけるポリシ管理表の例を示す図である。
【図９】本実施形態におけるポリシ例外管理表の例を示す図である。
【図１０】本実施形態におけるソフトウェア開発支援方法の処理手順例３を示すフロー図である。
【図１１】本実施形態における画面例１を示す図である。
【図１２】本実施形態における画面例２を示す図である。
【図１３】本実施形態における画面例３を示す図である。
【図１４】本実施形態における画面例４を示す図である。
【発明を実施するための形態】
【００１３】
以下に本発明の実施形態について図面を用いて詳細に説明する。本実施形態では、ソフトウェアにおける制御判断ロジックを決定表形式でモデル化することを前提としている。決定表においては、ソフトウェアが制御する対象システム（或いはソフトウェア自身）が、ある「条件」を満たした場合、ある「実行項目」を実行する、という制御判断ロジックが定義されている。こうした、「条件」、および、「実行項目」は、システムの状態を表す「属性項目」を用いて定義されている。
【００１４】
本実施形態では、決定表における属性項目の値の組（組み合わせパターン）を、システムが取り得る「状態」と見做し、制御判断ロジックを「前状態」、「イベント」、「次状態」から成る状態遷移情報に展開することで、決定表を「展開表」に変換するものとしている。この展開表を分析することで、対象システムにおいて特定の実行項目が実行される際の傾向（ポリシ）を抽出できる。このポリシとの対比により、実行すべき機能を実行していない組や、ポリシから逸脱して機能を実行している組などを特定し、ソフトウェアの信頼性等を評価できる。また、ポリシから逸脱した組を例外ポリシとし、その修正の方針をユーザから受けることで、展開表と決定表を修正する事も出来る。よって、本実施形態により、ポリシおよび例外の管理が容易となるとともに、ソフトウェアの品質向上が可能となる。
【００１５】
以下、こうした本実施形態のソフトウェア開発支援装置１００が備える機能部について説明する。以下に説明する機能部は、例えばソフトウェア開発支援装置１００が備えるプログラムをそれぞれ実行することで実装されるものと言える。図１は、本実施形態のソフトウェア開発支援装置１００の構成例を示す図である。図１に示すソフトウェア開発支援装置１００は、モデルベース開発において、モデルの品質管理や評価を実現する手段を提供し、ソフトウェアの品質確保を支援可能とする情報処理装置である。ソフトウェア開発支援装置１００のユーザは、ユーザインターフェイス１０１を介してソフトウェアの制御判断ロジックの開発を行うものとする。
【００１６】
本実施形態のソフトウェア開発支援装置１００は、記憶部１０５の決定表格納部１２１において、開発対象のソフトウェアが含む制御判断ロジックを定義する、処理実行の条件と当該条件に応じて実行される実行項目とが記述された決定表４００を記憶している。
【００１７】
また、本実施形態のソフトウェア開発支援装置１００は、条件の値および該当条件に対応付けられた実行項目の値の各組を決定表４００より抽出し、各組について抽出した条件の値を、該当組における実行項目実行前のソフトウェアないしソフトウェアの制御対象の状態を示す前状態の値とし、該当組における実行項目の値を、ソフトウェアないしソフトウェアの制御対象の状態を前状態から遷移させるイベントの値とし、該当組における実行項目実行後の条件の値と条件の値が一致する他の組を特定し、特定した他の組の識別値を次状態の値とし、前状態の値とイベントの値と次状態の値とを対応付けて展開表６００を生成する展開表生成部１３１を備えている。ソフトウェア開発支援装置１００は、この展開表６００を、記憶部１０５の展開表格納部１２２に格納する。
【００１８】
また、本実施形態のソフトウェア開発支援装置１００は、展開表６００における各組の間で状態の値の類似度を算定して、当該算定した類似度が所定閾値以上である組を特定し、当該特定した組の情報を、該当組における実行項目が対応付けされるべきポリシ８５０として、記憶部１０５におけるポリシ格納部１２３のポリシ管理表８００（図８）に格納するポリシ生成部１３２を備えている。
【００１９】
なお、上述したポリシ生成部１３２は、予め定義された分析対象実行項目と分析用閾値（いずれも記憶部１０５に予め保持しているか、都度、ユーザからユーザインターフェイス１０１にて受け付ける）に基づいて、展開表６００から分析対象実行項目をイベントに持つ組群を特定し、当該組群が含む組間にて前状態の値の一致率が分析用閾値を上回る組をポリシ８５０として特定し、前記の組群が含む各組を、ポリシ８５０に適合するサブセットと逸脱するサブセットとに分別するものである、とすれば好適である。
【００２０】
また、上述したポリシ生成部１３２は、予め定義された分析対象実行項目と分析用閾値に基づいて、展開表６００から分析対象実行項目をイベントに持つ組群を特定し、当該組群が含む組間にてイベントの値の一致率が分析用閾値を上回る組をポリシ８５０として特定し、前記の組群が含む各組を、ポリシ８５０に適合するサブセットと逸脱するサブセットに分別するものである、としても好適である。
【００２１】
また、上述したポリシ生成部１３２は、予め定義された分析対象実行項目と分析用閾値に基づいて、展開表６００から分析対象実行項目をイベントに持つ組群を特定し、当該組群が含む組間にて前状態の値とイベントの値との組み合わせの一致率が分析用閾値を上回る組み合わせパターンをポリシ８５０として特定し、前記の組群が含む各組を、ポリシ８５０に適合するサブセットと逸脱するサブセットに分別するものである、としても好適である。
【００２２】
また、上述したポリシ生成部１３２は、予め定義された分析対象実行項目と分析用閾値に基づいて、展開表６００から分析対象実行項目をイベントに持つ組群を特定し、当該組群が含む組間にて、前状態と次状態の連なりである状態遷移のシーケンスの一致率が分析用閾値を上回る組をポリシ８５０として特定し、前記の組群が含む各組を、ポリシ８５０に適合するサブセットと逸脱するサブセットに分別するものである、としても好適である。
【００２３】
また、上述したポリシ生成部１３２は、前記の組群が含む各組を、ポリシ８５０に適合するサブセットと逸脱するサブセットに分別する際、ポリシ８５０に適合するが所定の実行項目が対応付けされていない組と、ポリシ８５０から逸脱するが分析対象実行項目が対応付けされている組を、ポリシ例外９５０として特定するものである、としてもよい。この場合、ソフトウェア開発支援装置１００は、このポリシ例外９５０の情報を、記憶部１０５におけるポリシ格納部１２３のポリシ例外管理表９００に格納する。
【００２４】
また、本実施形態のソフトウェア開発支援装置１００は、上述のポリシ例外９５０の情報と、当該ポリシ例外９５０の修正をユーザに促す情報とを表示装置２０５におけるユーザインターフェイス１０１に表示するポリシ編集部１１３を備えるとすれば好適である。
【００２５】
なお、前記のポリシ編集部１１３は、ポリシ例外９５０の修正に関するユーザ指示を入力装置２０６におけるユーザインターフェイス１０１で受け、当該ユーザ指示に応じて、ポリシ例外９５０を新規ポリシとして、記憶部１０５におけるポリシ格納部１２３のポリシ管理表８００に格納し登録するものであるとすれば好適である。
【００２６】
また、前記のポリシ編集部１１３は、ポリシ例外９５０の修正に関するユーザ指示を入力装置２０６におけるユーザインターフェイス１０１で受け、当該ユーザ指示に応じて、ポリシ例外９５０により該当ポリシ８５０を更新するものであるとしてもよい。
【００２７】
また、本実施形態のソフトウェア開発支援装置１００は、ポリシ８５０と展開表６００ないし決定表４００とを照合して、展開表６００ないし決定表４００のポリシ８５０への適合ないし逸脱を判定し、ポリシ８５０から逸脱した該当箇所について展開表６００ないし決定表４００をポリシ８５０の記載に修正するポリシ反映部１３３を備えるとしてもよい。
【００２８】
また、本実施形態のソフトウェア開発支援装置１００が、前記のポリシ反映部１３３を備える場合、前記のポリシ編集部１１３が、ポリシ例外９５０の修正に関するユーザ指示を入力装置２０６におけるユーザインターフェイス１０１で受け、当該ユーザ指示に応じて、ポリシ反映部１３３に対し、ポリシ８５０に従ってポリシ例外９５０に該当する展開表６００ないし決定表４００を修正する指示を行うものであるとしてもよい。
【００２９】
なお、本実施形態のソフトウェア開発支援装置１００は、ユーザインターフェイス１０１を介して受けたユーザ指示に対応して処理を行う、決定表編集部１１１および展開表編集部１１２を更に備えている。決定表編集部１１１はユーザからの指示に応じて決定表４００の編集処理を実行する機能部である。また、展開表編集部１１２はユーザからの指示に応じて展開表６００の編集処理を実行する機能部である。
【００３０】
こうしたソフトウェア開発支援装置１００のハードウェア構成は以下の如くとなる。図２は、ソフトウェア開発支援装置１００のハードウェア構成例を示すブロック図である。ソフトウェア開発支援装置１００は、ＣＰＵ２０２、メモリ２０３、外部記憶装置２０４、表示装置２０５、入力装置２０６、及び外部媒体入出力装置２０７を備えた情報処理装置である。
【００３１】
このうちＣＰＵ２０２は、メモリ２０３に記憶されたプログラムを実行することによって、各種処理を実行し上述の機能部らを実装する。また、メモリ２０３は、ＣＰＵ２０２のワークエリアとして機能し、プログラム及びプログラムの実行に必要なデータを記憶する。具体的には、決定表編集部１１１、展開表編集部１１２、ポリシ編集部１１３、展開表生成部１３１、ポリシ生成部１３２、ポリシ反映部１３３の保持するデータが記憶される。
【００３２】
また、外部記憶装置２０４は、各種データを格納する、例えばハードディスク装置などである。この外部記憶装置２０４の記憶領域が記憶部１０１となる。外部記憶装置２０４は、決定表格納部１２１、展開表格納部１２２、ポリシ格納部１２３を格納している。また、決定表格納部１２１には決定表４００が、展開表格納部１２２には展開表６００が、ポリシ格納部１２３には、ポリシ８５０を記憶するポリシ管理表８００と、ポリシ例外９５０を記憶するポリシ例外管理表９００が格納されている。なお、メモリ２０３に記憶するデータを外部記憶装置２０４に格納するとしてもよい。あるいは、外部記憶装置２０４に格納したデータをメモリ２０３に記憶するとしてもよい。
【００３３】
また、各機能部を実装するための各プログラムは、あらかじめメモリ２０３または外部記憶装置２０４に格納していることを想定する。或いは、ソフトウェア開発支援装置１００が、必要に応じて、利用可能な媒体を介して、他の装置からメモリ２０３または外部記憶装置２０４に読み込むものとしてもよい。媒体とは、例えば、外部媒体入出力装置２０７に着脱可能な記憶媒体、または、ネットワークや、ネットワークを伝搬する搬送波やデジタル信号などの通信媒体を指す。
【００３４】
また、表示装置２０５は、プログラムの処理結果などを表示する、例えばディスプレイなどである。入力装置２０６は、処理の実行指示及び処理に必要な情報の入力などをユーザから受け付ける。入力装置２０６は、例えば、キーボード及びマウスなどである。
【００３５】
外部媒体入出力装置２０７は、外部媒体との間で、外部記憶装置２０４に格納されているデータなどの入出力を行う。外部媒体は、外部媒体入出力装置２０７に着脱可能で可搬性のある記憶媒体である。また、外部媒体出力装置２０７は、外部媒体に読み書き可能なドライブ装置などである。
【００３６】
以下、本実施形態におけるソフトウェア開発支援方法の実際手順について図に基づき説明する。以下で説明するソフトウェア開発支援方法に対応する各種動作は、ソフトウェア開発支援装置１００がメモリ２０３から読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００３７】
図３は、本実施形態におけるソフトウェア開発支援方法の処理手順例１を示すフロー図であり、具体的には、展開表生成部１３１による、展開表生成の手順例を示すフローチャートである。ここでは、予め決定表格納部１２１に決定表４００、および、属性定義表５００（図５参照。詳細後述）が格納されていることを想定とする。また、本手順にて扱う決定表４００および属性定義表５００は、単一であっても複数であってもよいものとする。
【００３８】
この場合まず、展開表生成部１３１は、決定表格納部１２１から決定表４００を取得し、当該決定表４００における各レコードについて、条件４０２および実行項目４０３における、それぞれの属性項目の値を抽出する（ステップ３０１）。図４の例であれば、例えば、ある属性項目の組（組み合わせパターン）を示す行番号「１」のレコードについては、条件“Ａ”＝“ａａａ”、処理＝“処理Ｘ”、などの属性項目の値が得られる。
【００３９】
図４は、決定表格納部１２１に格納する決定表４００の例である。本実施形態における決定表４００は、行番号４０１、条件４０２、実行項目４０３および処理４０４、等のデータを含むレコードの集合体となっている。ここで、行番号４０１は、決定表４００の行を一意に特定し得る番号である。本実施形態の決定表４００における各行は、行番号４０１に従って条件４０２を評価し、条件４０２が成立した場合には、当該行の実行項目４０３を実行した後、処理を終了する（以降の行は評価／実行しない）、といった１つの制御判断ロジックを示している。
【００４０】
また、条件４０２は、制御判断ロジックの条件として評価対象となる、システムが取り得る属性項目の組である。なお、それぞれの属性項目の具体的な値は属性定義表５００に記載されており、ソフトウェア開発支援装置１００は属性項目についてデータ型や候補値を属性定義表５００から取得することが可能である。
【００４１】
属性項目の例のうち、例えば、属性項目“Ｃ”は、その値として“ａａａ”、“ｂｂｂ”、“ｃｃｃ”、が存在することを図４に示している。なお、決定表４００における“−”は該当属性項目を評価しないことを示している。また、条件４０２の例として、例えば、行番号“２”の条件４０２は、「属性項目“Ｂ”が値“ａａａ”であり、かつ、属性項目“Ｃ”が値“ｃｃｃ”であれば」を示している。
【００４２】
また、実行項目４０３は、判断ロジックの実行項目として実行対象となる、システムが取り得る属性項目の組である。この場合、図４における実行項目４０３の例として、例えば、行番号“２”の実行項目４０３は、「属性項目“Ｂ”に値“ａａａ”を設定し、かつ、属性項目“Ｃ”に値“ａａａ”を設定する」ことを示している。
【００４３】
また、実行項目（処理）４０４は、判断ロジックの実行項目として実行対象となる、システムに対して実施し得る処理の組である。実行項目４０３のように、属性項目の設定を伴わないような、ソフトウェアの信頼性、可用性、保守性を担保するための機能（ログ出力や警報・問いかけの出力処理、等）が記載されている。図４における実行項目（処理）４０４の例としては、例えば、行番号“３”の実行項目（処理）４０４は、「“ログ出力Ｘ”処理を実行する」ことを示している。
【００４４】
ここで図３のフローの説明に戻る。次に、展開表生成部１３１は、決定表格納部１２１から属性定義表５００を取得し、前記のステップ３０１で得ている、各属性項目の組に関して、それぞれの属性項目の候補値を属性定義表５００から抽出する（ステップ３０２）。展開表生成部１３１は、例えば、ある属性項目の組で定義されていた、“信号機”に関する“種別”なる属性項目について、“入場”なる候補値を得る。なお、図４で例示した決定表４００では、属性項目の値として、“Ａ”、“ａａａ”といった単純なアルファベットを例示したが、これは後の説明の簡明化の為である。実際には、図５の属性定義表５００における属性項目の値のように、“信号機”、“種別”などといった具体的な名称が属性項目の値として設定されている。従って、図４の決定表４００の属性項目の値と、図５の属性定義表５００での属性項目の値とは対応関係が定まっており、展開表生成部１３１は、図４の決定表４００の属性項目をキーに、図５の属性定義表５００より、具体的な候補値を抽出できるものとする。
【００４５】
図５は、決定表格納部１２１に格納する属性定義表の例である。属性定義表５００は、属性項目ＩＤ５０１、クラス５０２、属性項目５０３、データ型５０４、候補値５０５、等のデータを含むレコードの集合体となっている。ここで、属性項目ＩＤ５０１は、属性項目を一意に特定し得るＩＤである。クラス５０２は、オブジェクト指向開発を意識した、属性項目が属するクラスの名称であり、属性項目をグループ化する概念である。
【００４６】
図５の例では、“信号機”や“軌道回路”等、システムの設備名称を挙げている。属性項目５０３は、当該属性項目の名称である。例では、“信号機”に対する“種別”や“方向”等、クラスに示す設備の属性名称を挙げている。また、データ型５０４は、当該属性項目が取り得るデータ型であり、“選択”型か、“整数”型のいずれかとなっている。また、候補値５０５は、データ型５０４が“選択”型である場合の候補値である。図５の例では、属性項目“種別”に対して、候補値として“不明”、“入場”、“出発”、“駅間”があることを挙げている。
【００４７】
続いて展開表生成部１３１は、上述までのステップで得た、各属性項目の組における、属性項目と属性項目ごとの候補値の各値をもとに、展開表６００における前状態６０２の値を生成する（ステップ３０３）。この場合、展開表生成部１３１は、各組について抽出した条件４０２に対応する属性項目の値を、該当組における実行項目実行前のシステム状態を示す、前状態の値として、展開表６００における前状態６０２に設定する。
【００４８】
すなわち展開表生成部１３１は、決定表４００に記述されている条件４０２の値および条件４０２に対応付けられた実行項目４０３の値の組を決定表４００より抽出し、該当組について抽出した条件４０２の値を、該当組における実行項目４０３の実行前のシステム状態を示す前状態６０２の値とする。
【００４９】
図６は、展開表格納部１２２に格納する展開表６００の例である。展開表６００は、展開表生成部１３１により生成されるものであり、状態ＩＤ６０１、前状態６０２、イベント６０３、次状態６０４、等の値を含むレコードの集合体となってる。ここで例示する展開表６００における各レコードは、「前状態６０２が示す状態において、イベント６０３が発生すると、次状態６０４が示す状態に遷移する」ことを示す状態遷移情報である。
【００５０】
ここで、状態ＩＤ６０１は、前状態６０２における属性項目値の組によって一意に特定し得る、状態のＩＤであり、展開表生成部１３１が適宜採番して設定するＩＤである。また、前状態６０２は、決定表４００の条件４０２に対応する、状態遷移の前状態である。図６の例では、展開表生成部１３１は、状態ＩＤ“Ｓ００１”〜“Ｓ００７”が付された属性項目の各組について、属性項目“Ａ”、“Ｂ”、“Ｃ”が、それぞれ、候補値“ａａａ”か“ｃｃｃ”を取り得る前状態６０２について、その総当たりのパタンとしてレコードを生成している。すなわち、属性項目“Ａ”、“Ｂ”、“Ｃ”、候補値“ａａａ”、“ｃｃｃ”の組み合わせの全パターンについて“Ｓ００１”〜“Ｓ００７”が付された属性項目の各組のレコードを生成している。また、これらの展開表６００のレコードのうち、前状態６０２が示す属性項目の値の組み合わせが、決定表４００で記述されている条件４０２と一致するものについて、展開表生成部１３１は、決定表４００における該当レコードの実行項目４０３および処理４０４の値を、イベント６０３に設定する。この、展開表６００におけるイベント６０３は、決定表４００の実行項目４０３、４０４に対応する、状態遷移のイベントである。図６の例では、決定表４００の実行項目４０３、および、実行項目（処理）４０４の値を、対応する前状態６０２に対応付けたリスト形式で設定したものとなっている。また、次状態６０４は、決定表４００の前状態４０２に実行項目４０３を反映した状態にて、展開表生成部１３１が、展開表６００の前状態６０２を検索することで得られる、次状態の状態ＩＤである。
【００５１】
ここで図３のフローに説明を戻す。上述のステップ３０３の以降（ステップ３０５〜３０７）、展開表生成部１３１は、対象とする決定表４００の行ごとにループして処理を行う（ステップ３０４）。この場合まず、展開表生成部１３１は、決定表４００の条件４０２に対し、展開表６００の前状態６０２から、等しい状態を検索する（ステップ３０５）。次に、展開表生成部１３１は、前記のステップ３０５での検索結果に対し、決定表４００の実行項目４０３をもとに、展開表６００のイベント６０３を求める（ステップ３０６）。続いて展開表生成部１３１は、前記のステップ３０６の検索結果に対し、決定表４００の実行項目４０３をもとに、実行項目４０３の実行後の状態を求め、展開表６００の次状態６０４に入力する（ステップ３０７）。
【００５２】
すなわち展開表生成部１３１は、前記の組みあわせにおける実行項目４０３の値を、システム状態を前状態６０２から遷移させるイベント６０３の値とし、該当組における実行項目４０３の実行後の条件４０２の値と条件４０２の値が一致する他の組を特定し、特定した他の組の識別値（展開表６００における状態ＩＤ６０１）を次状態６０４の値として展開表６００に設定する。
【００５３】
続いて、ポリシ生成部１３２による、ポリシ生成の手順について説明する。図７は、本実施形態におけるソフトウェア開発支援方法の処理手順例２を示すフロー図であり、具体的には、ポリシ生成部１３２による、ポリシ生成の手順例を示すフローチャートである。本実施形態のポリシ生成部１３２は、展開表６００における各組み合わせパターンの間、すなわちレコード間で前状態６０２の値の類似度を算定して、当該算定した類似度が所定閾値以上であるレコード（属性項目の値の組み合わせパターン）を特定し、当該特定したレコードの情報を、該当レコードにおけるイベント６０３（実行項目に対応）が対応付けされるべきポリシ８５０として記憶部１０５のポリシ管理表８００に格納するものである。ここでは、予め展開表格納部１２２に展開表６００が格納されていることを前提としている。
【００５４】
この場合、ポリシ生成部１３２は、展開表格納部１２２から展開表６００を取得する（ステップ７０１）。また、ポリシ生成部１３２は、ポリシ編集部１１３から分析用閾値（状態一致率、イベント一致率、履歴トレース数等）１３０２、および、分析対象機能１３１２（分析対象実行項目）の値を取得する（ステップ７０２）。
【００５５】
続いてポリシ生成部１３２は、前記のステップ７０２で得た分析対象機能１３１２の値で、展開表６００の各行を検索し、分析対象機能１３１２の値をイベント６０３として持っている行、すなわち属性項目の組を、分析対象行として全て抽出する（ステップ７０３）。
【００５６】
また、ポリシ生成部１３２は、分析対象行の集合（組み合わせパターン群）が含む各分析対象行の間で、前状態６０２の類似度を算定し、この類似度を分析用閾値１３０２と照合し、類似度が分析用閾値１３０２以上の類似度であるか判定する。類似度が分析用閾値１３０２以上であった場合、ポリシ生成部１３２は、該当分析対象行の情報を、ポリシ８５０としてポリシ格納部１２３に格納する（ステップ７０４）。
【００５７】
また、ポリシ生成部１３２は、上述の分析対象行の集合に対し、分析対象行間でのイベント６０３の類似度を算定し、この類似度を分析用閾値１３０２と照合し、類似度が分析用閾値１３０２以上の類似度であるか判定する。類似度が分析用閾値１３０２以上であった場合、ポリシ生成部１３２は、該当分析対象行の情報を、ポリシ８５０としてポリシ格納部１２３に格納する（ステップ７０５）。
【００５８】
また、ポリシ生成部１３２は、上述の分析対象行の集合に対し、分析対象行間での前状態６０２とイベント６０３との組の類似度を算定し、この類似度を分析用閾値１３０２と照合し、類似度が分析用閾値１３０２以上の類似度であるか判定する。類似度が分析用閾値１３０２以上であった場合、ポリシ生成部１３２は、該当分析対象行の情報を、ポリシ８５０としてポリシ格納部１２３に格納する（ステップ７０６）。ここで、類似度が分析用閾値１３０２以上であった該当分析対象行らは、ポリシ８５０に適合するサブセットと言える。他方、類似度が分析用閾値１３０２以上であった該当分析対象行らは、ポリシ８５０から逸脱するサブセットと言える。
【００５９】
また、ポリシ生成部１３２は、分析対象行を起点とした状態遷移情報（前状態６０２と次状態６０４の連なり）を、展開表６０から分析対象機能１３１２の値をキーに取得し、状態遷移における前状態６０２、イベント６０３、および、その組のシーケンスの類似度を算定し、この類似度を分析用閾値１３０２と照合し、類似度が分析用閾値１３０２以上の類似度であるか判定する。類似度が分析用閾値１３０２以上であった場合、ポリシ生成部１３２は、該当分析対象行の情報を、ポリシ８５０としてポリシ格納部１２３のポリシ管理表８００に格納する（ステップ７０７）。
【００６０】
図８に、ポリシ格納部１２３におけるポリシ管理表８００の例を示す。ポリシ管理表８００は、ポリシＩＤ８０１、対象機能８０２、種別８０３、前状態８０４、イベント８０５といったデータを含むレコードの集合体となっている。ここで、ポリシＩＤ８０１は、該当ポリシ８５０を一意に特定し得るＩＤであり、ポリシ生成部１３２が、ポリシ８５０の登録時に所定アルゴリズムに則って採番し設定したものである。
【００６１】
また、対象機能８０２は、該当ポリシ８５０にて分析の対象となる機能（処理）である。また、種別８０３は、該当ポリシ８５０の生成に用いたアルゴリズムの種別であり、具体的には、上述のステップ７０４で用いたアルゴリズムである前状態６０２の類似判定に対応する、「状態の類似」などが設定される。また上述のステップ７０５で用いたアルゴリズムであるイベント６０３の類似判定に対応する、「イベントの類似」なども設定される。例えば、展開表６００において、対象機能“警告Ｚ”と同時に実行されるイベント６０３の類似度により、ポリシ８５０を生成し得る。また上述のステップ７０６で用いたアルゴリズムである前状態６０２とイベント６０３の組の類似判定に対応する、「状態−イベントの類似」、また、上述のステップ７０７で用いたアルゴリズムであるシーケンスの類似判定に対応する、「シーケンスの類似」、といった値も種別８０３に設定される。
【００６２】
また、前状態８０４は、展開表６００の前状態６０２に対応し、該当ポリシ８５０を定義する属性項目の値の組み合わせパターンの表記である。また、イベント８０５は、展開表６００のイベント６０３に対応し、該当ポリシ８５０で実行されうるイベントの表記である。
【００６３】
図８におけるポリシ８５０の具体例として、ポリシＩＤ“ＸＣ００１”は、「属性項目“Ａ”が値“ａａａ”であり、属性項目“Ｃ”が値“ｄｄｄ”であるような前状態８０４において、イベント“Ｆ＝ｆｆｆ”が実行されるような組み合わせパターンでは、対象機能“警告Ｚ”が実行される」というポリシを示す。ここで、属性項目“Ｂ”の値“−”は、当該ポリシ８５０に対して、属性項目“Ｂ”は関与しないことを示す。
【００６４】
ここで図７のフローの説明に戻る。続いてポリシ生成部１３２は、上記ステップ７０４〜７０７にて、分析用閾値１３０２を下回った分析対象行の情報を、ポリシ例外９５０として、ポリシ格納部１２３のポリシ例外管理表９００に格納する（ステップ７０８）。
【００６５】
図９にポリシ格納部１２３に格納するポリシ例外管理表９００の例を示す。ポリシ例外管理表９００は、対象ポリシＩＤ９０１、対象ポリシ種別９０２、例外パタン９０３、例外（状態ＩＤ９０４、前状態９０５、イベント９０６、次状態を示す状態ＩＤ９０７）、等のデータを含むレコードの集合体となっている。
【００６６】
ここで、対象ポリシＩＤ９０１は、ポリシ例外９５０を定義する対象となるポリシ８５０のＩＤであり、ポリシ管理表８００のポリシＩＤ８０１に対応する。また、対象ポリシ種別９０２は、ポリシ例外９５０を定義する対象となるポリシ８５０の種別であり、ポリシ管理表８００の種別８０３の値に対応する。また、例外パタン９０３は、対象ポリシ種別９０２ごとに予め定義された例外パタンの説明である。例では、該当ポリシ例外９５０において例外として起こり得るパタンとして“同じ状態で機能を未実行”、“異なる状態で機能を実行”といったものを挙げている。本例の対象ポリシ“ＸＳ００１”は、種別は“状態の類似”であり、前状態９０５は「“Ａ”＝“ａａａ”、“Ｂ”＝“ｂｂｂ”、“Ｃ”＝“ｃｃｃ”」であることから、展開表６００において、前状態６０２が「“Ａ”＝“ａａａ”、“Ｂ”＝“ｂｂｂ”、“Ｃ”＝“ｃｃｃ”」であるのに、イベント６０３に“警告Ｚ”を含まない場合は“同じ状態で機能を未実行”、逆に、イベント６０３に“警告Ｚ”を含むが、前状態６０２が「“Ａ”＝“ａａａ”、“Ｂ”＝“ｂｂｂ”、“Ｃ”＝“ｃｃｃ”」でない場合は“異なる状態で機能を実行”となる。
【００６７】
例外（状態ＩＤ９０４、前状態９０５、イベント９０６、次状態ＩＤ９０７）は、展開表６００から、対象ポリシＩＤ９０１が示すポリシ８５０に対してポリシ例外として検出された状態であり、状態ＩＤ９０４は展開表６００の状態ＩＤ６０１、前状態９０５は展開表６００の前状態６０２、イベント９０６は展開表６００のイベント６０３、次状態ＩＤ９０７は展開表６００の次状態ＩＤ６０４に、それぞれ対応する。
【００６８】
続いて、ポリシ反映部１３３による処理について説明する。図１０は、本実施形態におけるソフトウェア開発支援方法の処理手順例３を示すフロー図であり、具体的には、ポリシ反映部１３３による、決定表および展開表への、ポリシ反映の手順例を示すフローチャートである。
【００６９】
この場合、ポリシ反映部１３３は、ポリシ編集部１１３から、修正する例外対象行１４２１と修正方式１４３２を取得する（ステップ１００１）。この、修正する例外対象行１４２１と修正方式１４３２の取得ステップにあたっては、ポリシ編集部１１３が、図１１に示す決定表編集画面１１００や、図１２に示す展開表編集画面１２００、図１３に示すポリシ編集画面１３００、図１４に示すポリシ反映画面１４００を介して、ユーザからの指示を受けた値を、ポリシ反映部１３３に渡すものとする。
【００７０】
続いてポリシ反映部１３３は、ポリシ格納部１２３から、ポリシ例外管理表９００における例外対象行１４２１に該当するポリシ例外９５０のデータを取得する（ステップ１００２）。また、ポリシ反映部１３３は、展開表格納部１２２にて、展開表６００から例外対象行１４２１に該当する行を検索し、ユーザ指定の修正方式１４３２に応じた修正処理を行う（ステップ１００３）。
【００７１】
またポリシ反映部１３３は、決定表格納部１２１にて、決定表４００から例外対象行１４２１に該当する行を検索し、ユーザ指定の修正方式１４３２に応じた修正処理を行う（ステップ１００４）。
【００７２】
続いてポリシ反映部１３３は、上記修正処理の結果を、決定表編集部１１１および展開表編集部１１２に伝達する（ステップ１００５）。一方、決定表編集部１１１および展開表編集部１１２は、ポリシ反映部１３３による修正結果を、上述の決定表編集画面１１００や、展開表編集画面１２００、ポリシ編集画面１３００、ポリシ反映画面１４００におけるユーザへの表示に反映する（ステップ１００６）。
【００７３】
図１１は、決定表編集部１１１と連携してユーザインターフェイス１０１に表示する、決定表編集画面１１００の例である。決定表編集画面１１００では、まず、決定表１１２０として、選択ボタン１１０１、行番号１１０２、条件１１０３、実行項目１１０４、実行項目（処理）１１０５、ポリシ情報１１０６、等を表示する。また、操作インタフェースとして、編集ボタン１１３０、等を表示する。
【００７４】
ここで、選択ボタン１１０１は、編集ボタン１１３０を押下することで行う編集作業の対象となる行を選択する操作インタフェースである。行番号１１０２は、決定表４００の行番号４０１に対応する。また、条件１１０３は、決定表４００の条件４０２に対応する。また、実行項目１１０４は、決定表４００の実行項目４０３に対応する。また、実行項目（処理）１１０５は、決定表４００の実行項目（処理）４０４に対応する。
【００７５】
また、ポリシ情報１１０６は、ポリシ反映部１３３により、当該行に実行された修正の有無を示す。例では行“１”と“５”は、ポリシのチェック未済（“未”）、行“２”はポリシのチェック済（違反なし）で“ＯＫ”、行“３”はポリシのチェック済（違反あり、かつ、未修正）で“ＮＧ”、行“４”はポリシのチェック済（違反あり、かつ、修正済）で“修正”であることを示す。また、編集ボタン１１３０は、選択ボタン１１０１で選択した対象行を編集するダイアログを起動する操作インタフェースである。
【００７６】
図１２は、展開表編集部１１２と連携してユーザインターフェイス１０１に表示する、展開表編集画面１２００の例である。展開表編集画面１２００では、まず、展開表１２２０として、選択ボタン１２０１、前状態１２０２、イベント１２０３、次状態１２０４、ポリシ情報１２０５、等を表示する。また、操作インタフェースとして、編集ボタン１２３０、等を表示する。
【００７７】
ここで、選択ボタン１２０１は、編集ボタン１２３０を押下することで行う編集作業の対象となる行を選択する操作インタフェースである。前状態１２０２は、展開表６００の前状態６０２に対応する。また、イベント１２０３は、展開表６００のイベント６０３に対応する。また、次状態１２０４は、展開表６００の次状態６０４に対応する。また、ポリシ情報１２０５は、ポリシ反映部１３３により、当該行に実行された修正の有無を示す。凡例（“未”、“ＯＫ”、“ＮＧ”、“修正”）は、図１１で例示した決定表４００のポリシ情報１１０６と同様である。また、編集ボタン１１３０は、選択ボタン１２０１で選択した対象行を編集するダイアログを起動する操作インタフェースである。
【００７８】
図１３は、ポリシ編集部１１３と連携してユーザインターフェイス１０１に表示する、ポリシ編集画面１３００の例である。ポリシ編集画面１３００では、設定１３０１の定義インタフェースとして、分析用閾値１３０２、等を表示する。また、実行１３１１の定義インタフェースとして、分析対象機能１３１２、分析ボタン１３１３、等を表示する。また、結果１３２１の定義インタフェースとして、ポリシ一覧表１３２２、例外ボタン１３２３、等を表示する。
【００７９】
ここで、分析用閾値１３０２は、ポリシ生成部１３２が、類似度をもとにポリシ８５０を生成する際に使用する定数である。例では、状態の一致率（％）（ポリシの種別８０３が“状態の類似”の場合、対象機能８０２に対して前状態８０４が定義するパタンにマッチする割合）、イベントの一致率（％）（ポリシの種別８０３が“イベントの類似”の場合、対象機能８０２に対してイベント８０５が定義するパタンにマッチする割合）、履歴トレース数（回）（ポリシの種別８０３が“シーケンスの類似”の場合、対象機能８０２に対して状態遷移をトレースする上限数）、等を挙げている。
【００８０】
また、分析対象機能１３１２は、展開表６００のイベント６０３に対応し、ユーザが、複数候補から選択可能（例：プルダウンメニュー）となっている。また、分析ボタン１３１３は、分析対象機能１３１２に対して分析を実行するトリガとなる操作インタフェースであり、押下すると結果１３２１が表示される。
【００８１】
ポリシ一覧表１３２２は、上記の分析ボタン１３１３を押下により得られた、分析処理の結果である。各ポリシは、ポリシ管理表８００の各ポリシ８５０にそれぞれ対応する。また、例外ボタン１３２３は、ポリシ一覧表１３２２が示すポリシ８５０に対するポリシ例外を表示させるダイアログ１４００を起動する操作インタフェースである。
【００８２】
図１４は、上述のポリシ編集画面１３００における例外ボタン１３２３の押下をトリガーに起動し、ポリシ編集部１１３と連携してユーザインターフェイス１０１に表示する、ポリシ反映画面１４００の例である。ポリシ反映画面１４００では、対象１４０１の定義インタフェースとして、分析対象機能１４０２、等を表示する。また、ポリシ１４１１の定義インタフェースとして、ポリシ一覧表１４１２、等を表示する。また、例外１４２１の定義インタフェースとして、ポリシ例外一覧表（同じ状態で機能を未実行）１４２２、ポリシ例外一覧表（異なる状態で機能を実行）１４２３、等を表示する。
【００８３】
ここで、分析対象機能１４０２は、図１３に示したポリシ編集画面１３００の分析対象機能１３１２に対応する。ポリシ一覧表１４１２は、図１３に示したポリシ一覧表１３２２に対応する。ポリシ例外一覧表（同じ状態で機能を未実行）１４２２、ポリシ例外一覧表（異なる状態で機能を実行）１４２３は、図９に示したポリシ例外管理表９００に対応し、例外パタン９０３により分別した表示方式を採っている。
【００８４】
また、ポリシ反映画面１４００において、修正方式１４３１の定義インタフェースとして、修正方式ボタン１４３２、修正実行ボタン１４３３、等を表示する。修正方式ボタン１４３２は、ポリシ例外一覧表（同じ状態で機能を未実行）１４２２、ポリシ例外一覧表（異なる状態で機能を実行）１４２３において、選択ボタンで選択したポリシ例外に対し、修正実行ボタン１４３３を押下した際に実施する修正の方式を選択する操作インタフェースである。例では、“ポリシに従って修正”、“別のポリシとして登録”、“ポリシを修正”の３択を提示している。“ポリシに従って修正”がユーザに選択された場合、ポリシ反映部１３３は、該当ポリシ例外９５０に対応するポリシ８５０に合致するよう、ポリシ例外９５０に相当する展開表６００および決定表４００を修正する。また、“別のポリシとして登録”がユーザに選択された場合、ポリシ反映部１３３は、該当ポリシ例外９５０を別のポリシ８５０としてポリシ管理表８００に追加する。また、“ポリシを修正”がユーザに選択された場合、ポリシ反映部１３３は、該当ポリシ例外９５０に従って、該当ポリシ例外９５０に対応するポリシ８５０がポリシ例外９５０に合致するよう、ポリシ管理表８００を更新する。
【００８５】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００８６】
こうした本実施形態によれば、展開表を分析することで、対象システムにおいて、特定の実行項目が実行される際の傾向（ポリシ）を抽出し、ポリシと展開表および決定表を対比することで、実行すべき機能を実行していないケースや、ポリシから逸脱して機能を実行しているケース等を評価することができる。さらに、ポリシから逸脱した例外に対し、ユーザへの警報、問いかけ出力やログ出力等を行った上で、修正の方針指定を受け付けて展開表と決定表を修正することも可能である。これにより、一貫したポリシに従ってソフトウェアを開発し、開発対象であるソフトウェアの信頼性、可用性、保守性を向上することが可能になる。
【００８７】
したがって、モデルベース開発において、モデルの品質管理や評価を実現する手段を提供し、ソフトウェアの品質確保を支援する技術を提供可能となる。
【００８８】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のソフトウェア開発支援装置において、前記ポリシ生成部は、予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にて前状態の値の一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットとに分別するものである、としてもよい。
【００８９】
また、本実施形態のソフトウェア開発支援装置において、前記ポリシ生成部は、予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にてイベントの値の一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別するものである、としてもよい。
【００９０】
また、本実施形態のソフトウェア開発支援装置において、前記ポリシ生成部は、予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にて前状態の値とイベントの値との組み合わせの一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別するものである、としてもよい。
【００９１】
また、本実施形態ソフトウェア開発支援装置において、前記ポリシ生成部は、予め定義された分析対象実行項目と分析用閾値に基づいて、前記展開表から前記分析対象実行項目をイベントに持つ組み合わせパターン群を特定し、当該組み合わせパターン群が含む組み合わせパターン間にて、前状態と次状態の連なりである状態遷移のシーケンスの一致率が前記分析用閾値を上回る組み合わせパターンをポリシとして特定し、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別するものである、としてもよい。
【００９２】
また、本実施形態のソフトウェア開発支援装置において、前記ポリシ生成部は、前記組み合わせパターン群が含む各組み合わせパターンを、前記ポリシに適合するサブセットと逸脱するサブセットに分別する際、ポリシに適合するが所定の実行項目が対応付けされていない組み合わせパターンと、ポリシから逸脱するが前記分析対象実行項目が対応付けされている組み合わせパターンを、ポリシ例外として特定するものである、としてもよい。
【００９３】
また、本実施形態のソフトウェア開発支援装置は、前記ポリシ例外の情報と、当該ポリシ例外の修正をユーザに促す情報とを表示装置に表示するポリシ編集部を備えるとしてもよい。
【００９４】
また、本実施形態のソフトウェア開発支援装置において、前記ポリシ編集部は、ポリシ例外の修正に関するユーザ指示を入力装置で受け、当該ユーザ指示に応じて、前記ポリシ例外を新規ポリシとして記憶部に登録するものであるとしてもよい。
【００９５】
また、本実施形態のソフトウェア開発支援装置において、前記ポリシ編集部は、ポリシ例外の修正に関するユーザ指示を入力装置で受け、当該ユーザ指示に応じて、前記ポリシ例外により前記ポリシを更新するものであるとしてもよい。
【００９６】
また、本実施形態のソフトウェア開発支援装置は、前記ポリシと前記展開表ないし前記決定表とを照合して、前記展開表ないし前記決定表のポリシへの適合ないし逸脱を判定し、ポリシから逸脱した該当箇所について前記展開表ないし前記決定表をポリシの記載に修正するポリシ反映部を備えるとしてもよい。
【００９７】
また、本実施形態のソフトウェア開発支援装置において、前記ポリシと前記展開表ないし前記決定表とを照合して、前記展開表ないし前記決定表のポリシへの適合ないし逸脱を判定し、ポリシから逸脱した該当箇所について前記展開表ないし前記決定表をポリシの記載に修正するポリシ反映部を備え、  前記ポリシ編集部が、ポリシ例外の修正に関するユーザ指示を入力装置で受け、当該ユーザ指示に応じて、前記ポリシ反映部に対し、ポリシに従ってポリシ例外に該当する展開表ないし決定表を修正する指示を行うものであるとしてもよい。
【符号の説明】
【００９８】
１００  ソフトウェア開発支援装置
１０１  ユーザインターフェイス
１０５  記憶部
１１１  決定表編集部
１１２  展開表編集部
１１３  ポリシ編集部
１２１  決定表格納部
１２２  展開表格納部
１２３  ポリシ格納部
１３１  展開表生成部
１３２  ポリシ生成部
１３３  ポリシ反映部
２０２  ＣＰＵ
２０３  メモリ
２０４  外部記憶装置
２０５  表示装置
２０６  入力装置
２０７  外部媒体出力装置
４００  決定表
５００  属性定義表
６００  展開表
８００  ポリシ管理表
８５０  ポリシ
９００  ポリシ例外管理表
９５０  ポリシ例外
【図１】
2013214222.tif 000003
【図２】
2013214222.tif 000004
【図３】
2013214222.tif 000005
【図４】
2013214222.tif 000006
【図５】
2013214222.tif 000007
【図６】
2013214222.tif 000008
【図７】
2013214222.tif 000009
【図８】
2013214222.tif 000010
【図９】
2013214222.tif 000011
【図１０】
2013214222.tif 000012
【図１１】
2013214222.tif 000013
【図１２】
2013214222.tif 000014
【図１３】
2013214222.tif 000015
【図１４】
2013214222.tif 000016