(57)【要約】【課題】ソフトウェアの品質を向上させることができるソフトウェア開発支援装置を提供する。【解決手段】ソフトウェア開発支援装置１は、第１記憶部５と、第２記憶部８と、抽出部７２とを備える。第１記憶部５は、ソフトウェアの仕様が、ソフトウェアの動作の状態と複数の状態遷移条件とを含む状態遷移図及び／または状態遷移表で表された状態遷移情報を記憶する。第２記憶部８は、状態遷移情報に含まれる複数の状態遷移条件のうち、排他性を有するべき状態遷移条件を抽出するための抽出条件を記憶する。抽出部７２は、抽出条件に基づいて、状態遷移情報から排他性を有するべき状態遷移条件を抽出する。【選択図】図１
2009157751.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの仕様が、前記ソフトウェアの動作の状態と前記ソフトウェアの動作の状態を他の状態に遷移させるための複数の状態遷移条件とを含む状態遷移図及び／または状態遷移表で表された状態遷移情報、を記憶する第１記憶部（５）と、
前記状態遷移情報に含まれる複数の前記状態遷移条件のうち、排他性を有するべき前記状態遷移条件を抽出するための抽出条件、を記憶する第２記憶部（８）と、
前記抽出条件に基づいて、前記状態遷移情報から排他性を有するべき前記状態遷移条件を抽出する抽出部（７２）と、
を備えるソフトウェア開発支援装置（１）。
【請求項２】
前記第１記憶部（５）内に記憶されている前記状態遷移情報の構文解析を行う第１構文解析部（７１）を更に備える、
請求項１に記載のソフトウェア開発支援装置（１）。
【請求項３】
前記抽出部（７２）は、互いに排他性を有するべき前記状態遷移条件を少なくとも２つ抽出する、
請求項１または２に記載のソフトウェア開発支援装置（１）。
【請求項４】
前記抽出部（７２）により抽出された前記状態遷移条件の構文解析を行う第２構文解析部（７３）と、
前記第２構文解析部（７３）の解析結果に基づいて、抽出された前記状態遷移条件が互いに排他性を有しているか否かを判断する排他性判断部（７４）と、
を更に備える、請求項１〜３のいずれかに記載のソフトウェア開発支援装置（１）。
【請求項５】
前記第２構文解析部（７３）は、抽出された前記状態遷移条件について複数の階層を有するツリー構造を生成し、
前記排他性判断部（７４）は、生成された前記状態遷移条件それぞれの前記ツリー構造に基づいて、各前記ツリー構造の階層毎に前記状態遷移条件が互いに排他性を有しているか否かを判断する、
請求項４に記載のソフトウェア開発支援装置（１）。
【請求項６】
生成された前記ツリー構造の階層毎に前記状態遷移条件が互いに排他性を有しているか否かを判断するための判断条件、を記憶する第３記憶部（９）を更に備え、
前記排他性判断部（７４）は、前記判断条件に基づいて、前記ツリー構造の階層毎に前記状態遷移条件の排他性を判断する、
請求項５に記載のソフトウェア開発支援装置（１）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援装置に関する。
【背景技術】
【０００２】
従来より、ソフトウェアの開発においては、例えば特許文献１に開示されているように、ソフトウェアの動作仕様に基づいてソフトウェアのソースコードを自動的に生成する装置が用いられる場合がある。具体的に、特許文献１に係る装置は、状態遷移図の形式で表されたソフトウェアの動作仕様であるモデルが入力されると、このモデルに基づいてソースコードを自動生成する。上記モデルには、ソフトウェアの動作の状態と、ソフトウェアの動作の状態が他の状態に遷移する際の状態遷移条件とが含まれている。
【特許文献１】特開２００６−３１６１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
一般的に、開発対象となるソフトウェアの規模が大きく程、モデルに含まれるソフトウェアの動作の状態の数や状態遷移条件の数も多くなる。このような場合において、各状態遷移条件が排他性を有しておらず同時に成立するような場合があると、ソフトウェアの動作が特定の状態間を行き来するような無限ループが発生し、不具合が生じてしまう恐れがある。また、モデルに含まれる各状態遷移条件が排他性を有していないと、本来遷移するべき状態に直接遷移せず、他の状態を経由してから本来遷移するべき状態に遷移するような場合が生じる可能性もある。この場合、無駄なソースコードが生成されてしまう恐れがある。
【０００４】
そこで、本発明は、上述したような無限ループの発生や無駄なソースコードの生成を防ぐことができ、ソフトウェアの品質を向上させることができるソフトウェア開発支援装置の提供を目的とする。
【課題を解決するための手段】
【０００５】
発明１に係るソフトウェア開発支援装置は、第１記憶部と、第２記憶部と、抽出部とを備える。第１記憶部は、状態遷移情報を記憶する。状態遷移情報は、ソフトウェアの仕様が、ソフトウェアの動作の状態と複数の状態遷移条件とを含む状態遷移図及び／または状態遷移表で表された情報である。状態遷移条件は、ソフトウェアの動作の状態を他の状態に遷移させるための条件である。第２記憶部は、抽出条件を記憶する。抽出条件は、状態遷移情報に含まれる複数の状態遷移条件のうち、排他性を有するべき状態遷移条件を抽出するための条件である。抽出部は、抽出条件に基づいて、状態遷移情報から排他性を有するべき状態遷移条件を抽出する。
【０００６】
このソフトウェア開発支援装置によると、状態遷移情報の中から互いに排他性を有するべき状態遷移条件が抽出される。これにより、抽出された状態遷移条件が排他性を有しているか否かが確認でき、排他性を有していない状態遷移条件については排他性を満たすように修正を行うことできる。従って、例えばソフトウェアの動作が特定の状態を行き来するような無限ループに陥ったり、無駄にソースコードが生成されたりすることを防ぐことができ、ソフトウェアの品質を向上させることができる。
【０００７】
発明２に係るソフトウェア開発支援装置は、発明１に係るソフトウェア開発支援装置であって、第１構文解析部を更に備える。第１構文解析部は、第１記憶部内に記憶されている状態遷移情報の構文解析を行う。
【０００８】
これにより、状態遷移情報に含まれる状態遷移条件が特定し易くなる。
【０００９】
発明３に係るソフトウェア開発支援装置は、発明１または２に係るソフトウェア開発支援装置であって、抽出部は、互いに排他性を有するべき状態遷移条件を少なくとも２つ抽出する。
【００１０】
これにより、抽出された少なくとも２つの状態遷移条件が互いに排他性を有するか否かを、確認することができる。
【００１１】
発明４に係るソフトウェア開発支援装置は、発明１〜３のいずれかに係るソフトウェア開発支援装置であって、第２構文解析部と、排他性判断部とを更に備える。第２構文解析部は、抽出部により抽出された状態遷移条件の構文解析を行う。排他性判断部は、第２構文解析部の解析結果に基づいて、抽出された状態遷移条件が互いに排他性を有しているか否かを判断する。
【００１２】
これにより、抽出された状態遷移条件が排他性を有しているか否かを判断することができる。
【００１３】
発明５に係るソフトウェア開発支援装置は、発明４に係るソフトウェア開発支援装置であって、第２構文解析部は、抽出された状態遷移条件について複数の階層を有するツリー構造を生成する。排他性判断部は、生成された状態遷移条件それぞれのツリー構造に基づいて、各ツリー構造の階層毎に状態遷移条件が互いに排他性を有しているか否かを判断する。
【００１４】
これにより、状態遷移条件が互いに排他性を有しているか否かを、生成された状態遷移条件の各ツリー構造に基づいて部分ごとに判断することができる。
【００１５】
発明６に係るソフトウェア開発支援装置は、発明５に係るソフトウェア開発支援装置であって、第３記憶部を更に備える。第３記憶部は、判断条件を記憶する。判断条件は、生成されたツリー構造の階層毎に状態遷移条件が互いに排他性を有しているか否かを判断するための条件である。排他性判断部は、判断条件に基づいて、ツリー構造の階層毎に状態遷移条件の排他性を判断する。
【００１６】
これにより、抽出された状態遷移条件が互いに排他性を有しているか否かを、より詳細に判断できるようになる。
【発明の効果】
【００１７】
発明１に係るソフトウェア開発支援装置によると、抽出された状態遷移条件が排他性を有しているか否かが確認でき、排他性を有していない状態遷移条件については排他性を満たすように修正を行うことできる。従って、例えばソフトウェアの動作が特定の状態を行き来するような無限ループに陥ったり、無駄にソースコードが生成されたりすることを防ぐことができ、ソフトウェアの品質を向上させることができる。
【００１８】
発明２に係るソフトウェア開発支援装置によると、状態遷移情報に含まれる状態遷移条件が特定し易くなる。
【００１９】
発明３に係るソフトウェア開発支援装置によると、抽出された少なくとも２つの状態遷移条件が互いに排他性を有するか否かを、確認することができる。
【００２０】
発明４に係るソフトウェア開発支援装置によると、抽出された状態遷移条件が排他性を有しているか否かを判断することができる。
【００２１】
発明５に係るソフトウェア開発支援装置によると、状態遷移条件が互いに排他性を有しているか否かを、生成された状態遷移条件の各ツリー構造に基づいて部分ごとに判断することができる。
【００２２】
発明６に係るソフトウェア開発支援装置によると、抽出された状態遷移条件が互いに排他性を有しているか否かを、より詳細に判断できるようになる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の一実施形態に係るソフトウェア開発支援装置について、図面を用いて詳細に説明する。
【００２４】
（１）概要
図１は、本実施形態に係るソフトウェア開発支援装置１の構成を模式的に示す図である。ソフトウェア開発支援装置１は、例えば空調機のマイコンに組み込まれる制御用ソフトウェアのように、比較的規模の大きいソフトウェアのソースコードを自動生成するために用いられる装置である。
【００２５】
一般的に、ソフトウェア開発は、基本計画、外部設計、コーディング、テストの順で行われる。基本計画では、例えば空調機の大まかな仕様を記述した概要仕様書等が作成される。この概要仕様書等の作成には、主にウォーターフォールモデルが使用される。外部設計では、開発対象となるソフトウェアの詳細な仕様を示すモデルが生成される。モデルは、ソフトウェア開発支援装置１上に直接記述されるか、またはソフトウェア開発支援装置１とは別のＰＣ等の端末上に直接記述された後、ソフトウェア開発支援装置１に読み込まれる。そして、コーディングにおいては、外部設計において生成されたモデルに基づいて、ソフトウェアのソースコードが生成される。
【００２６】
次に、上述したモデルについて、図２及び図３を用いて説明する。図２は、開発対象であるソフトウェアの仕様の一部が、状態遷移図の形式で表されたモデルｍ１の表示画面ｐ１であって、図３は、開発対象であるソフトウェアの仕様の一部が、状態遷移表の形式で表されたモデルｍ２の表示画面図ｐ２である。図２及び図３に示すように、状態遷移図及び状態遷移表で表されたモデルｍ１，ｍ２には、ソフトウェアの動作の状態ｓ１，ｓ２と複数の状態遷移条件ｃ１，ｃ２とが含まれている。ここで、ソフトウェアの動作の状態ｓ１，ｓ２とは、このソフトウェアのソースコードの実行状態を示すものであって、状態遷移条件ｃ１，ｃ２とは、ソフトウェアの動作の状態ｓ１，ｓ２を他の状態に遷移させるための条件である。例えば、図２に係る状態遷移条件ｃ１は、ソフトウェアの動作の状態を、状態ｓ２「モータ運転要求“ＯＮ”をモータに出力」から状態ｓ１「モータ運転要求“ＯＦＦ”をモータに出力」に移行させるための条件である。状態遷移条件ｃ２は、ソフトウェアの動作の状態を、状態遷移条件ｃ１とは逆に状態ｓ１「モータ運転要求“ＯＦＦ”をモータに出力」から状態ｓ２「モータ運転要求“ＯＮ”をモータに出力」に移行させるための状態である。
【００２７】
このように、本実施形態に係るモデルｍ１，ｍ２では、ソフトウェアの仕様が状態遷移図及び状態遷移表の形式で表されているが、以下では、このモデルｍ１，ｍ２を「状態遷移情報」と言う。状態遷移情報は、外部設計後のコーディングの過程において、ソフトウェアのソースコードの自動生成に用いられる。しかし、状態遷移情報に含まれる各状態遷移条件が排他性を有していない（即ち状態遷移条件がそれぞれ独立した内容を有していない）と、自動生成されるソフトウェアのソースコードに悪影響が及ぼされる可能性があるため、本実施形態に係るソフトウェア開発支援装置１は、状態遷移条件ｃ１，ｃ２が排他性を有するか否かを判断するための機能を有する。
【００２８】
尚、以下では、説明の便宜上、開発対象となるソフトウェアの仕様が図４に示すような状態遷移図で表されたモデル（即ち、状態遷移情報）を例に取り説明する。図４のモデルでは、４つのソフトウェアの動作の状態Ａ，Ｂ，Ｃ，Ｄと、４つの状態遷移条件ａ，ｂ，ｃ，ｄとが含まれている。より具体的には、状態Ｃには、状態Ａと状態Ｂとが含まれている。そして、状態遷移条件ａは、ソフトウェアの動作の状態Ａを状態Ｂに移行させるための条件であって、状態遷移条件ｂは、ソフトウェアの動作の状態Ｂを状態Ａに移行させるための条件である。状態遷移条件ｃは、ソフトウェアの動作の状態Ｄを状態Ｃに移行させるための条件であって、状態遷移条件ｄは、ソフトウェアの動作の状態Ｂを状態Ｄに移行させるための条件である。
【００２９】
（２）構成
次に、上述した機能を搭載しているソフトウェア開発支援装置１の構成について、具体的に説明する。ソフトウェア開発支援装置１は、図１に示すように、読み込み部２、表示部３、操作部４、第１記憶部５及び制御部６を備える。
【００３０】
（２−１）読み込み部
読み込み部２は、上述した状態遷移情報を読み込む。読み込まれた状態遷移情報は、制御部６により第１記憶部５内に記憶される。ここで、状態遷移情報が、例えばフラッシュメモリやＣＤ、ＤＶＤ等のソフトウェア開発支援装置１外部の記録媒体に格納されている場合には、読み込み部２は、その記録媒体がＵＳＢインターフェースやＣＤドライブ、ＤＶＤドライブ等を介してソフトウェア開発支援装置１内に挿入され認識された後、状態遷移情報をその記憶媒体内から読み出す。また、例えば状態遷移情報がソフトウェア開発支援装置１とは別のＰＣ等の端末内における記憶部に格納されており、その端末とソフトウェア開発支援装置１とがイントラネット等のネットワークを介して通信可能に接続されている場合には、読み込み部２は、ネットワークを介して端末から状態遷移情報を取得することができる。
【００３１】
（２―２）表示部
表示部３は、例えば液晶ディスプレイで構成され、各種画面を表示することができる。具体的に、表示部３は、ソフトウェアの仕様を状態遷移図や状態遷移表で表したモデルの表示画面ｐ１，ｐ２（図２，図３）や、作業者がソフトウェア開発支援装置１を操作する際に表示される操作画面ｐ３（図５）、状態遷移条件が排他性を有するか否かの判断結果を表示するチェック結果画面ｐ４（図６）等を表示する。ここで、図５の操作画面ｐ３は、主として、第１記憶部５に記憶されている状態遷移情報を選択可能に表示する画面ｐ１３や、状態遷移条件が排他性を有するか否かの判断を開始させるための排他性チェックボタンｑ１等を有している。また、図６のチェック結果画面ｐ４では、排他性があると判断された状態遷移条件を“１”、排他性がないと判断された状態遷移条件を“０”として表示している。
【００３２】
（２−３）操作部
操作部４は、例えば文字キーやテンキーを備えたキーボードと、マウス等のポインティングデバイスとからなり、表示部３に表示された各種画面に基づいて作業者が各種条件の設定を行う場合等に用いられる。例えば、表示部３に図５の操作画面ｐ３が表示されている場合、作業者は、操作部４を介して例えば排他性チェックボタンｑ１を選択することができる。また、操作者は、図２に示すように、モデルを、操作部４を介してソフトウェア開発支援装置１に直接記述することができる。このように、操作部４は、作業者によってなされる様々な操作を受け付けることができる。
【００３３】
（２―４）第１記憶部
第１記憶部５は、例えばＨＤＤやフラッシュメモリ等で構成され、状態遷移情報を記憶する。具体的には、第１記憶部５は、読み込み部２により読み込まれた状態遷移情報や、ソフトウェア開発支援装置１上に直接記述されたモデルに対応する状態遷移情報を記憶する。
【００３４】
（２−５）制御部
制御部６は、主として、ＣＰＵ７、それぞれＲＯＭからなる第２記憶部８及び第３記憶部９、及びワークメモリとして機能するＲＡＭ（図示せず）で構成されている。第２記憶部８には、抽出条件が記憶されており、第３記憶部９には、判断条件が記憶されている。
【００３５】
ここで、第２記憶部８が記憶している抽出条件とは、状態遷移情報に含まれる複数の状態遷移条件のうち、排他性を有するべき状態遷移条件を抽出するための条件である。本実施形態に係る抽出条件は、図７（ａ）（ｂ）に示すように、少なくとも２つの状態とその状態間に関連する状態遷移条件とがパターン化されたものである。このパターン化された情報に含まれる状態遷移条件が、互いに排他性を有するべき条件に該当する。図７（ａ）は、ソフトウェアの動作の任意の状態ｉ及び状態ｉｉの間に、状態遷移条件１及び状態遷移条件２が存在するパターンを示している。具体的に、図７（ａ）では、状態遷移条件１の始点が「状態ｉ」、終点が「状態ｉｉ」であって、状態遷移条件２の始点が「状態ｉｉ」、終点が「状態ｉ」であるパターンを示している。図７（ｂ）は、任意の状態ｉと状態ｉｉとの間及び状態ｉと状態ｉｉｉとの間に、状態遷移条件１及び状態遷移条件２がそれぞれ存在するパターンを示している。具体的に、図７（ｂ）では、状態遷移条件１の始点が「状態ｉ」、終点が「状態ｉｉ」であって、状態遷移条件２の始点が「状態ｉ」、終点が「状態ｉｉｉ」であるパターンを示している。このように、本実施形態では、状態遷移条件１，２の始点及び終点のいずれかが他の状態遷移条件の始点及び終点のいずれかと同一であるような場合が抽出条件として定義されている。
【００３６】
尚、第３記憶部９が記憶している判断条件については、“〔排他性判断部〕”で詳述する。
【００３７】
制御部６は、読み込み部２、表示部３、操作部４及び第１記憶部５と接続されており、接続された各種機器の制御を行う。特に、本実施形態に係る制御部６は、例えばソフトウェアのソースコードが生成される前の状態遷移情報から、排他性を有するべき状態遷移条件の抽出を行ったり、抽出した状態遷移条件の排他性をチェックしたりする。このような動作を実現するため、制御部６のＣＰＵ７は、モデル構文解析部７１（第１構文解析部に相当）、抽出部７２、条件構文解析部７３（第２構文解析部に相当）、排他性判断部７４及び自動生成部７５として機能する。
【００３８】
〔モデル構文解析部〕
モデル構文解析部７１は、第１記憶部５に記憶されている状態遷移情報の構文解析を行う。即ち、モデル構文解析部７１は、状態遷移情報に対応するモデルの構造を解析し、状態遷移情報を例えばツリー構造に展開する。モデル構文解析部７１による解析結果（即ち、ツリー構造に展開された状態遷移情報）は、抽出部７２が状態遷移情報の抽出を行う場合に用いられる。
【００３９】
〔抽出部〕
抽出部７２は、第２記憶部８に記憶されている抽出条件に基づいて、排他性を有するべき状態遷移条件を状態遷移情報から少なくとも２つ抽出する。即ち、抽出部７２は、モデル構文解析部７１により解析された状態遷移情報の解析結果から、図７（ａ）（ｂ）に示す抽出条件パターンに該当する状態遷移条件を抽出する。
【００４０】
具体的に、状態遷移条件がどのようにして抽出されるかを、図４のモデルを用いて説明する。尚、モデル構文解析部７１による解析結果を用いて抽出が行われると述べたが、以下では説明を簡単にするため、解析結果を用いてではなく図４のモデル（即ち、ソフトウェアの使用が状態遷移図で表された状態遷移情報）を用いて抽出動作を説明する。
【００４１】
既に述べたように、図４のモデルには、状態Ａ及び状態Ｂの間に状態遷移条件ａ，ｂが記述されている部分Ｖがある（図８）。この部分Ｖの「状態Ａ」「状態Ｂ」「状態遷移条件ａ」「状態遷移条件ｂ」は、図７（ａ）における「状態ｉ」「状態ｉｉ」「状態遷移条件１」「状態遷移条件２」それぞれに相当するため、抽出部７２は、部分Ｖが図７（ａ）の抽出条件に該当すると判断する。この場合、抽出部７２は、部分Ｖにおける状態遷移条件ａ及び状態遷移条件ｂを互いに排他性を有するべき条件として抽出する。即ち、抽出部７２は、状態遷移条件ａ，ｂを対として抽出する。
【００４２】
また、図４のモデルには、状態Ａ，状態Ｂ及び状態Ｄの間に状態遷移条件ｂ，ｄが記述されている部分Ｗがある（図８）。この部分Ｗの「状態Ｂ」「状態Ａ」「状態Ｄ」「状態遷移条件ｂ」「状態遷移条件ｄ」は、図７（ｂ）における「状態ｉ」「状態ｉｉ」「状態ｉｉｉ」「状態遷移条件１」「状態遷移条件２」それぞれに相当するため、抽出部７２は、部分Ｗが図７（ｂ）の抽出条件に該当すると判断する。この場合、抽出部７２は、部分Ｗにおける状態遷移条件ｂ及び状態遷移条件ｄを互いに排他性を有するべき条件として抽出する。即ち、抽出部７２は、状態遷移条件ｂ，ｄを対として抽出する。
【００４３】
〔条件構文解析部〕
条件構文解析部７３は、抽出部７２により抽出された状態遷移条件の構文解析を行う。より具体的には、条件構文解析部７３は、抽出された状態遷移条件について複数の階層を有するツリー構造を生成する。
【００４４】
以下に、本実施形態に係る状態遷移条件が、どのようにしてツリー構造に展開されるかについて、具体的に説明する。図９の表ｃｈａ，ｃｈｂそれぞれは、状態遷移条件ａ，ｂの内容を示しており、表ｃｈａ，ｃｈｂ中の“Ｘ”“Ｙ”“Ｚ”は変数、“ｘ”“ｙ”“ｚ”は定数を表している。表ｃｈａ，ｃｈｂ中の“＝＝”“！＝”“＞＝及び＞”は、順に等価、不等価、比較を表す数式演算子であって、表ｃｈａ，ｃｈｂ中の“｜｜”“＆＆”は、順に論理和、論理積を表す論理演算子である。また、図９の表ｃｈａ，ｃｈｂの下方には、各状態遷移条件ａ，ｂのツリー構造ｔｒａ，ｔｒｂが示されている。
【００４５】
先ず、条件構文解析部７３は、表ｃｈａに示された状態遷移条件ａの内容のうち、右部分に書かれた数式ｆ１〜ｆ３を変数、演算子、定数に分解し、分解した変数を左側、定数を右側、演算子を変数及び定数間の上側（即ち、変数及び定数の上階層）に位置させる（ツリー構造ｔｒａの部品ｇ１ａ〜ｇ３ａ）。次いで、条件構文解析部７３は、表ｃｈａ中の数式ｆ１，ｆ２に関連する論理和ｆ４を示す演算子“｜｜”を、部品ｇ１ａ，ｇ２ａ中の数式演算子“＝＝”の上階層に位置させ（ツリー構造ｔｒａの部品ｇ４ａ）、更に表ｃｈａ中の論理和ｆ４と数式ｆ３とに関連する論理積ｆ５を示す演算子“＆＆”を、部品ｇ４ａと部品ｇ３ａにおける数式演算子“＞＝”との上階層に位置させる（部品ｇ５ａ）。そして、条件構文解析部７３は、関連する部品ｇ１ａ〜ｇ５ａ毎に線を繋ぐことで、ツリー構造ｔｒａを生成する。
【００４６】
条件構文解析部７３は、状態遷移条件ｂについても上記と同様の方法で、状態遷移条件ｂの構造を解析し、表ｃｈｂの内容をツリー構造ｔｒｂに展開する。
【００４７】
〔排他性判断部〕
排他性判断部７４は、条件構文解析部７３の解析結果に基づいて、抽出された状態遷移条件が互いに排他性を有しているか否かを判断する。ここで、解析結果とは、条件構文解析部７３により生成された各状態遷移条件のツリー構造を言う。従って、排他性判断部７４は、生成された状態遷移条件それぞれのツリー構造に基づいて、各ツリー構造の階層毎に状態遷移条件が互いに排他性を有しているか否かを判断する。
【００４８】
以下に、排他性判断部７４が状態遷移条件の排他性を判断する具体的な方法について説明する。排他性判断部７４は、第３記憶部９が記憶している判断条件に基づいて、各ツリー構造の階層毎に状態遷移条件の排他性を判断する。ここで、第３記憶部９が記憶している判断条件とは、生成されたツリー構造の階層毎に状態遷移条件が互いに排他性を有しているか否かを判断するための条件であって、具体的には図１０（ａ）（ｂ）に示すものが挙げられる。図１０（ａ）は、図９に示すようにツリー構造で表された状態遷移条件のうち、数式を含む部品についての排他性を判断するために用いられる判断条件であって、排他性ありと判断される部品の組み合わせを示している。例えば、図１０（ａ）の判断条件Ｎｏ．１では、一方の状態遷移条件には任意の変数Ａと定数ａとを含む式として「変数Ａ＝＝定数ａ」が含まれ、他方の状態遷移条件には同様の変数Ａと定数ａとを含む式として「変数Ａ！＝定数ａ」が含まれるパターンが示されている。このパターンが満たされる場合、各状態遷移条件のうち変数Ａ及び定数ａに関する部分については排他性ありと判断される。図１０（ｂ）は、図９に示すようにツリー構造で表された各状態遷移条件のうち、論理式を含む部品についての排他性を判断するために用いられる判断条件であって、排他性ありと判断される部品の組み合わせを示している。例えば、図１０（ｂ）の判断条件Ｎｏ．１では、一方の状態遷移条件には任意の部品Ｂ，Ｃを含む式として「部品Ｂ＆＆部品Ｃ」が含まれ、他方の状態遷移条件には同様の部品Ｂ，Ｃを含む式として「部品Ｂ｜｜部品Ｃ」が含まれるパターンが示されている。このパターンが満たされる場合、各状態遷移条件のうち部品Ｂ，Ｃに関する部分については排他性ありと判断される。即ち、本実施形態では、図１０（ａ）（ｂ）に示すように、排他性があると判断されるパターンを集めたものを、判断条件と言う。
【００４９】
次に、図９及び図１０（ａ）（ｂ）を用いて、排他性判断部７４が排他性を判断する一例を説明する。先ず、排他性判断部７４は、状態遷移条件ａのツリー構造ｔｒａと状態遷移条件ｂのツリー構造ｔｒｂとについて、部品ｇ１ａの変数Ｘと部品ｇ１ｂの変数Ｘとが同一であると判断すると、各部品ｇ１ａ，ｇ１ｂにおける変数Ｘの上階層の数式演算子に注目する。ツリー構造ｔｒａでは、数式演算子が“＝＝”であるのに対し、ツリー構造ｔｒｂでは、数式演算子が“！＝”である。更に、排他性判断部７４は、この数式演算子“＝＝”“！＝”それぞれの下階層の変数に注目し、各数式演算子“＝＝”“！＝”の下には共に同じ変数ｘが位置していると判断する。次いで、排他性判断部７４は、部品ｇ１ａ，ｇ１ｂの構成が、図１０（ａ）のパターンのうちＮｏ．１のパターンに該当するため、部品ｇ１ａ，ｇ１ｂは、互いに排他性を有すると判断する。排他性判断部７４は、このような方法を、ツリー構造ｔｒａ，ｔｒｂ内の他の変数Ｙ，Ｚについても行う。すると、ツリー構造ｔｒａ，ｔｒｂのうち変数Ｚを含む部品ｇ３ａ，ｇ３ｂは、同一の変数Ｚ及び定数ｚをそれぞれ有しており、かつ数式演算子が“＞＝”“＞”であることから、図１０（ａ）には、部品ｇ３ａ，ｇ３ｂに該当するパターンが存在しない。この場合、排他性判断部７４は、部品ｇ３ａ，ｇ３ｂが互いに排他性がないものとして判断する。
【００５０】
次いで、排他性判断部７４は、ツリー構造ｔｒａ，ｔｒｂについて、各部品ｇ４ａ，ｇ４ｂの論理演算子“｜｜”“＆＆”に注目し、図１０（ｂ）にあてはまるパターンがあるか否かを判断する。その下の部品ｇ１ａ，ｇ１ｂは互いに同一、かつ部品ｇ２ａ，ｇ２ｂも互いに同一である。従って、排他性判断部７４は、各部品ｇ４ａ，ｇ４ｂの構成が図１０（ｂ）のＮｏ．１のパターンに該当するため、部品ｇ４ａ，ｇ４ｂは互いに排他性を有すると判断する。また、排他性判断部７４は、ツリー構造ｔｒａ，ｔｒｂの各部品ｇ５ａ，ｇ５ｂについても、同様の方法で排他性の判断を行う。
【００５１】
このように、本実施形態に係る排他性判断部７４は、各ツリー構造ｔｒａ，ｔｒｂの下階層から上階層に向かって順に部品の構成を検討し、排他性の判断を行う。
【００５２】
〔自動生成部〕
自動生成部７５は、排他性チェックや状態遷移条件の修正などが行われた後の状態遷移情報に基づいて、ソフトウェアのソースコードを自動生成する。自動生成部７５により生成されたソフトウェアのソースコードは、例えばＨＤＤで構成される第１記憶部５の、状態遷移情報が記憶されている領域とは別の領域に記憶される。
【００５３】
（３）一連の動作の流れ
次に、本実施形態に係るソフトウェア開発支援装置１の一連の動作の流れについて説明する。図１１は、ソフトウェア開発支援装置１の動作の流れを示すフローチャートである。尚、はじめに、開発対象となるソフトウェアの仕様が状態遷移図で表されたモデル（例えば図４）が、状態遷移情報として読み込み部２により読み込まれ、第１記憶部５に記憶されているものとする。
【００５４】
ステップＳ１〜Ｓ３：表示部３に図５の操作画面ｐ３が表示され、作業者により操作部４を介して排他性チェックボタンｑ１が選択された場合（Ｓ１のＹｅｓ）、モデル構文解析部７１として機能する制御部６のＣＰＵ７は、第１記憶部５内の状態遷移情報を読み出し、構文解析を行う（Ｓ２）。次いで、抽出部７２として機能するＣＰＵ７は、第２記憶部８に記憶されている抽出条件（図７）に基づいて、構文解析された後の状態遷移情から互いに排他性を有するべき状態遷移条件を少なくとも２つ抽出する（Ｓ３）。
【００５５】
ステップＳ４〜Ｓ５：条件構文解析部７３として機能するＣＰＵ７は、ステップＳ３で抽出された各状態遷移条件の構造解析を行うことで、各状態遷移条件についてツリー構造を生成する（Ｓ４）。次いで、排他性判断部７４として機能するＣＰＵ７は、各ツリー構造の階層毎に排他性があるか否かを判断する（Ｓ５）。
【００５６】
ステップＳ６〜Ｓ８：ステップＳ５において、排他性なしと判断された階層がある場合（Ｓ６のＹｅｓ）、排他性判断部７４として機能するＣＰＵ７は、その状態遷移条件自体を排他性なしと判断する。表示部３は、図６に示すように、排他性判断部７４による判断結果を表示する。この時、排他性があると判断された状態遷移条件についても、表示部３は、図６に示すように、その旨を示す判断結果を表示する（Ｓ７）。次いで、表示部３は、排他性がなしと判断された状態遷移条件について作業者が編集可能なように、作業者が編集を行うための画面（例えば図２の画面ｐ１）を表示する（Ｓ８）。編集を行うための画面が表示部３に表示された後、ソフトウェア開発支援装置１は、ステップＳ１以降の動作を繰り返す。
【００５７】
ステップＳ９：ステップＳ５において、排他性なしと判断された階層がない場合（Ｓ６のＮｏ）、排他性判断部７４として機能するＣＰＵ７は、その状態遷移条件自体を排他性があると判断する。表示部３は、状態遷移条件が排他性を有するとする判断結果を表示する。
【００５８】
ステップＳ１０〜Ｓ１１：操作部４を介してソースコードの自動生成が作業者により指示された場合（Ｓ１０のＹｅｓ）、自動生成部７５として機能するＣＰＵ７は、排他性の判断が行われた後の状態遷移情報に基づいて、ソフトウェアのソースコードを自動生成する（Ｓ１１）。
【００５９】
（４）効果
（Ａ）
本実施形態に係るソフトウェア開発支援装置１は、第１記憶部５と、第２記憶部８と、抽出部７２とを備える。第１記憶部５は、ソフトウェアの仕様が、ソフトウェアの動作の状態と複数の状態遷移条件とを含む状態遷移図及び／または状態遷移表で表された状態遷移情報を記憶する。第２記憶部８は、状態遷移情報に含まれる複数の状態遷移条件のうち、排他性を有するべき状態遷移条件を抽出するための抽出条件を記憶する。抽出部７２は、抽出条件に基づいて、状態遷移情報から排他性を有するべき状態遷移条件を抽出する。これにより、抽出された状態遷移条件が排他性を有しているか否かが確認でき、排他性を有していない状態遷移条件については排他性を満たすように修正を行うことできる。従って、例えばソフトウェアの動作が特定の状態を行き来するような無限ループに陥ったり、無駄にソースコードが生成されたりすることを防ぐことができ、ソフトウェアの品質を向上させることができる。
【００６０】
（Ｂ）
また、ソフトウェア開発支援装置１は、第１記憶部５内に記憶されている状態遷移情報の構文解析を行うモデル構文解析部７１を更に備える。これにより、状態遷移情報に含まれる状態遷移条件が特定し易くなる。
【００６１】
（Ｃ）
また、ソフトウェア開発支援装置１に係る抽出部７２は、互いに排他性を有するべき状態遷移条件を少なくとも２つ抽出する。これにより、抽出された少なくとも２つの状態遷移条件が互いに排他性を有するか否かを、確認することができる。
【００６２】
（Ｄ）
また、ソフトウェア開発支援装置１は、抽出部７２により抽出された状態遷移条件の構文解析を行う条件構文解析部７３と、条件構文解析部７３の解析結果に基づいて状態遷移条件が互いに排他性を有しているか否かを判断する排他性判断部７４とを更に備える。これにより、抽出された状態遷移条件が排他性を有しているか否かを判断することができる。
【００６３】
（Ｅ）
また、ソフトウェア開発支援装置１に係る条件構文解析部７３は、抽出された状態遷移条件について複数の階層を有するツリー構造を生成する。そして、排他性判断部７４は、生成された状態遷移条件それぞれのツリー構造に基づいて、各ツリー構造の階層毎に状態遷移条件が互いに排他性を有しているか否かを判断する。これにより、状態遷移条件が互いに排他性を有しているか否かを、生成された状態遷移条件の各ツリー構造に基づいて部分ごとに判断することができる。
【００６４】
（Ｆ）
更に、ソフトウェア開発支援装置１の第３記憶部９には、生成されたツリー構造の階層毎に状態遷移条件が互いに排他性を有しているか否かを判断するための判断条件が記憶されている。そして、排他性判断部７４は、判断条件に基づいて、ツリー構造の階層毎に状態遷移条件の排他性を判断する。これにより、抽出された状態遷移条件が互いに排他性を有しているか否かを、より詳細に判断できるようになる。
【００６５】
＜その他の実施形態＞
（ａ）
上記実施形態では、第２記憶部８及び第３記憶部９が別々のＲＯＭで設けられている場合について説明した。しかし、本発明に係る第２記憶部及び第３記憶部は、１つのＲＯＭで構成されてもよい。この場合、１つのＲＯＭは２つの記憶領域に分けられ、１つの記憶領域には抽出条件が記憶され、もう１つの記憶領域には判断条件が記憶される。
【００６６】
（ｂ）
上記実施形態では、抽出部７２が、２つの状態遷移条件（具体的には、図８の部分Ｖについては状態遷移条件ａ，ｂ、部分Ｗについては状態遷移条件ｂ，ｄ）を抽出する場合について説明した。しかし、本発明に係るソフトウェア開発支援装置において抽出される状態遷移条件の数は、２つ以上であればよく、例えば３つであってもよい。この場合、第２記憶部８は、図７（ａ）（ｂ）のパターンに加え、図１２（ａ）（ｂ）に示すようなパターンを抽出条件として記憶する。これより、抽出部７２は、状態遷移情報に対応するモデルにおいて図１２（ａ）（ｂ）に該当する部分があれば（即ち、図１２（ａ）（ｂ）の状態遷移条件１〜３を含む部分）、その部分に含まれる３つの状態遷移条件を、排他性を有するべき条件として抽出することができる。
【００６７】
（ｃ）
上記実施形態では、第３記憶部９には、図１０（ａ）（ｂ）に示すようにパターン化された判断条件が記憶されている場合について説明した。しかし、判断条件は、図１０（ａ）（ｂ）に示すようにパターン化されていなくてもよく、例えば図１３のＳ１０１〜Ｓ１０３，図１４のＳ２０１〜Ｓ２０３に示すような条件であってもよい。ここで、図１３は、数式演算子を含む部品についての排他性判断の動作フローであって、図１４は、論理演算子を含む部品についての排他性判断の動作フローである。
【００６８】
図１３では、例えば２つのツリー構造において、共通した変数、数式演算子及び変数がある場合（ステップＳ１０１のＹｅｓ，ステップＳ１０２のＹｅｓ，ステップＳ１０３のＹｅｓ）、排他性判断部７４は、該当する部品は互いに排他性がないと判断する（Ｓ１０４）。また、排他性判断部７４は、例えば２つのツリー構造において、変数、数式演算子及び変数の少なくとも１つが異なる場合（ステップＳ１０１のＮｏ，ステップＳ１０２のＮｏ，ステップＳ１０３のＮｏ）、排他性判断部７４は、該当する部品は互いに排他性があると判断する（Ｓ１０５）。排他性判断部７４は、上述した動作を、各ツリー構造内に含まれる各変数について行う（Ｓ１０６）。
【００６９】
図１４では、例えば２つのツリー構造において、共通した部品、論理演算子がある場合（ステップＳ２０１のＹｅｓ，ステップＳ２０２のＹｅｓ，ステップＳ２０３のＹｅｓ）、排他性判断部７４は、該当する部品は互いに排他性がないと判断する（Ｓ２０４）。また、排他性判断部７４は、例えば２つのツリー構造において、部品、論理演算子の少なくとも１つが異なる場合（ステップＳ２０１のＮｏ，ステップＳ２０２のＮｏ，ステップＳ２０３のＮｏ）、排他性判断部７４は、該当する部品は互いに排他性があると判断する（Ｓ２０５）。排他性判断部７４は、上述した動作を、各ツリー構造内に含まれる各部品について行う（Ｓ２０６）。
【００７０】
（ｄ）
上記実施形態では、図６の排他性チェック結果画面ｐ４に示すように、状態遷移条件自体に排他性があるか否かの結果が表示される場合について説明した。しかし、排他性チェック結果の表示形態は、これに限定されない。例えば、排他性チェック結果は、具体的に状態遷移条件中のどの部分が排他性がないかが作業者にわかるように、表示されてもよい。例えば、排他性チェック結果は、図２の状態遷移表で表された画面ｐ１において、状態遷移条件中の排他性のない部品の記述が他の記述と異なる色で表示される等して、排他性チェックの結果が作業者に分かるように表示されてもよい。
【産業上の利用可能性】
【００７１】
本発明に係るソフトウェア開発支援装置は、無限ループの発生や無駄なソースコードの生成を防ぐことができ、ソフトウェアの品質を向上させることができるという効果を有する。このようなソフトウェア開発支援装置は、例えば空調機のマイクロコンピュータに組み込まれる空調機制御用ソフトウェアの開発時に使用される装置として適用することができる。
【図面の簡単な説明】
【００７２】
【図１】本実施形態に係るソフトウェア開発支援装置の構成を模式的に示すブロック図。
【図２】開発対象であるソフトウェアの仕様の一部が、状態遷移図で表されたモデルの表示画面例。
【図３】開発対象であるソフトウェアの仕様の一部が、状態遷移表で表されたモデルの表示画面例。
【図４】本実施形態において説明に用いるソフトウェアのモデルを示した図。
【図５】本実施形態に係るソフトウェア開発支援装置１が作業者により操作される際に、表示部に表示される操作画面。
【図６】状態遷移条件が排他性を有するか否かの判断結果を示すチェック結果画面。
【図７】（ａ）本実施形態に係る状態遷移条件の抽出条件を説明するための図であって、抽出条件がパターン化されている場合１を示す図。（ｂ）本実施形態に係る状態遷移条件の抽出条件を説明するための図であって、抽出条件がパターン化されている場合２を示す図。
【図８】図４のモデルにおいて、状態遷移条件の抽出動作を説明するための図。
【図９】本実施形態に係る状態遷移条件のツリー構造の生成動作を説明するための図。
【図１０】本実施形態に係る状態遷移条件が互いに排他性を有しているか否かを判断するための判断条件を説明するための図。
【図１１】本実施形態に係るソフトウェア開発支援装置の一連の動作の流れを説明するためのフロー図。
【図１２】（ａ）その他の実施形態（ｂ）に係る状態遷移条件の抽出条件であって、抽出する状態遷移条件が３つである場合の抽出条件１を示す図。（ｂ）その他の実施形態（ｂ）に係る状態遷移条件の抽出条件であって、抽出する状態遷移条件が３つである場合の抽出条件２を示す図。
【図１３】その他の実施形態（ｃ）に係る抽出条件を用いて状態遷移条件の排他性を判断するための動作を示した図であって、特に数式演算子を含む部品の排他性を判断するための動作を示すフロー図。
【図１４】その他の実施形態（ｃ）に係る抽出条件を用いて状態遷移条件の排他性を判断するための動作を示した図であって、特に論理演算子を含む部品の排他性を判断するための動作を示すフロー図。
【符号の説明】
【００７３】
１  ソフトウェア開発支援装置
２  読み込み部
３  表示部
４  操作部
５  第１記憶部
６  制御部
７  ＣＰＵ
８  第２記憶部
９  第３記憶部
７１  モデル構文解析部
７２  抽出部
７３  条件構文解析部
７４  排他性判断部
７５  自動生成部
ｐ１，ｐ２，ｐ３，ｐ４  表示画面
ｃ１，ｃ２  状態遷移条件
ｓ１，ｓ２  ソフトウェアの動作の状態
ｑ１  排他性チェックボタン
ｍ１，ｍ２  モデル
ｃｈａ，ｃｈｂ  表
ｔｒａ，ｔｒｂ  ツリー構造
ｇ１ａ〜ｇ５ａ、ｇ１ｂ〜ｇ５ｂ  部品
【図１】
2009157751.tif 000003
【図２】
2009157751.tif 000004
【図３】
2009157751.tif 000005
【図４】
2009157751.tif 000006
【図５】
2009157751.tif 000007
【図６】
2009157751.tif 000008
【図７】
2009157751.tif 000009
【図８】
2009157751.tif 000010
【図９】
2009157751.tif 000011
【図１０】
2009157751.tif 000012
【図１１】
2009157751.tif 000013
【図１２】
2009157751.tif 000014
【図１３】
2009157751.tif 000015
【図１４】
2009157751.tif 000016