(57)【要約】【課題】ソフトウェアの動作仕様が記述された状態遷移図に含まれる複数の状態遷移条件間の排他性チェックをソフトウェアの開発者が容易に行うことができるソフトウェア開発支援装置を提供することにある。【解決手段】本発明に係るソフトウェア開発支援装置１は、複数の状態遷移条件を含む状態遷移図を記憶するソフトウェア仕様記憶部１１と、状態遷移条件の構文解析を行う第１遷移条件解析部２１と、構文解析された状態遷移条件をマトリックス形式又はツリー形式で視覚的に表示する手段を提供する第１遷移条件表示部２２と、ソフトウェア仕様記憶部１１に記憶された状態遷移図に基づいてソースコードを生成するソースコード生成部２７とを備える。【選択図】図１
2010176498.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの動作の状態を表す情報と、前記ソフトウェアの動作の状態を他の前記ソフトウェアの動作の状態に遷移させるための条件を表す状態遷移条件とを記憶するソフトウェア仕様記憶部（１１）と、
前記ソフトウェア仕様記憶部に記憶される前記状態遷移条件の構文解析を行う第１遷移条件解析部（２１）と、
前記第１遷移条件解析部によって構文解析された前記状態遷移条件を、視覚的に表示する手段を提供する第１遷移条件表示部（２２）と、
前記ソフトウェア仕様記憶部に記憶される前記ソフトウェアの動作の状態を表す情報及び前記状態遷移条件に基づいてソースコードを生成するソースコード生成部（２８）と
を備えるソフトウェア開発支援装置（１）。
【請求項２】
前記第１遷移条件表示部は、前記第１遷移条件解析部によって構文解析された前記状態遷移条件を、マトリックス形式で表示する手段を提供する請求項１に記載のソフトウェア開発支援装置。
【請求項３】
前記第１遷移条件表示部は、前記第１遷移条件解析部によって構文解析された前記状態遷移条件を、ツリー形式で表示する手段を提供する請求項１に記載のソフトウェア開発支援装置。
【請求項４】
前記ソフトウェア仕様記憶部に記憶される互いに排他性を有するべき複数の前記状態遷移条件を抽出するための抽出条件を記憶する抽出条件記憶部（２３）と、
前記抽出条件記憶部に記憶される抽出条件に基づいて、互いに排他性を有するべき複数の前記状態遷移条件を抽出する遷移条件抽出部（２４）と
をさらに備える請求項１から３のいずれかに記載のソフトウェア開発支援装置。
【請求項５】
前記遷移条件抽出部によって抽出された複数の前記状態遷移条件の構文解析を行う第２遷移条件解析部（２５）と、
前記第２遷移条件解析部によって構文解析された複数の前記状態遷移条件に含まれる互いに排他性を有していない変数又は論理式を抽出する排他性判断部（２６）と、
前記排他性判断部によって抽出された変数又は論理式を、視覚的に表示する手段を提供する第２遷移条件表示部（２７）と
をさらに備える請求項４に記載のソフトウェア開発支援装置。
【請求項６】
前記第２遷移条件表示部は、前記排他性判断部によって抽出された変数又は論理式を、前記排他性判断部によって抽出されなかった変数又は論理式とは異なる態様で表示する手段を提供する請求項５に記載のソフトウェア開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソフトウェア開発支援装置に関する。
【背景技術】
【０００２】
現在、ソフトウェアの開発においては、ソフトウェアの動作仕様が記述された状態遷移図に基づいてソースコードを自動的に生成するソフトウェア開発支援装置が用いられる場合がある。状態遷移図には、ソフトウェアの動作の状態と、ソフトウェアによる制御が当該状態間を遷移する際の状態遷移条件とが記述される。
【０００３】
例えば、特許文献１（特開２００５−２５０９７４号公報）に開示されているソフトウェア開発装置では、状態遷移図の編集操作を行うための編集画面を提供する編集画面提供手段と、編集画面で編集された状態遷移図からソフトウェアを生成するソフトウェア生成手段とが備えられている。このソフトウェア開発装置は、ソフトウェアの機能拡張を容易に実現するためにオブジェクト指向の概念を導入して作成された状態遷移図に基づいて、ＪＡＶＡ（登録商標）及びＸＭＬなどで記述されたソースコードを自動的に生成する。これにより、このソフトウェア開発装置は、ソフトウェア開発者の作業量を軽減して、効率的なソフトウェア開発を実現することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、ソフトウェアによる制御が状態遷移図に含まれる２つの状態間を双方向に遷移する場合の状態遷移条件について考える。当該２つの状態遷移条件が互いに排他性を有していない場合、ソフトウェアの実行時にソフトウェアによる制御が当該２つの状態間を永久に行き来する無限ループ状態に陥る可能性がある。このような動作上の不具合を未然に防止するために、ソフトウェアの開発者は、状態遷移図に含まれる互いに排他性を有するべき複数の状態遷移条件が互いに排他性を有しているか否かの排他性チェックを入念に行う必要がある。しかし、複数の変数と複数種類の演算子が混在した複雑な状態遷移条件を、ソフトウェアの開発者が文字列で表現された論理式の形式で正確に理解することは困難である。そのため、ソフトウェアの開発者が複数の状態遷移条件間の排他性チェックを行う際に、チェック漏れが発生しやすい。
【０００５】
そこで、本発明の目的は、ソフトウェアの開発者が、複数の状態遷移条件間の排他性チェックを容易に行うことができ、ソフトウェアの品質を向上させることができるソフトウェア開発支援装置を提供することにある。
【課題を解決するための手段】
【０００６】
第１発明に係るソフトウェア開発支援装置は、ソフトウェア仕様記憶部と、第１遷移条件解析部と、第１遷移条件表示部と、ソースコード生成部とを備える。ソフトウェア仕様記憶部は、ソフトウェアの動作の状態を表す情報と状態遷移条件とを記憶する。状態遷移条件は、ソフトウェアの動作の状態を他のソフトウェアの動作の状態に遷移させるための条件を表す。第１遷移条件解析部は、ソフトウェア仕様記憶部に記憶される状態遷移条件の構文解析を行う。第１遷移条件表示部は、第１遷移条件解析部によって構文解析された状態遷移条件を、視覚的に表示する手段を提供する。例として、第１遷移条件表示部は、状態遷移条件によって表されるソフトウェアの動作の状態を遷移させるための条件を、ソフトウェアの開発者が視覚的に理解しやすいように、文字列で表現された論理式ではなく図表の形式でソフトウェア開発用端末の画面上に表示する。ソースコード生成部は、ソフトウェア仕様記憶部に記憶されるソフトウェアの動作の状態を表す情報及び状態遷移条件に基づいてソースコードを生成する。なお、当該ソースコード生成部によって生成されるソースコードとは、実行可能なソフトウェアに変換することができるソースコードである。
【０００７】
本発明によれば、ソフトウェアの開発者にとって視覚的に理解しやすい形式で、状態遷移条件がソフトウェア開発用端末の画面上などに表示される。これにより、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックを容易に行うことができ、ソフトウェアの品質を向上させることができる。
【０００８】
第２発明に係るソフトウェア開発支援装置は、第１発明に係るソフトウェア開発支援装置であって、第１遷移条件表示部は、第１遷移条件解析部によって構文解析された状態遷移条件をマトリックス形式で表示する手段を提供する。なお、マトリックス形式では、状態遷移条件に含まれる任意の論理演算子と、当該論理演算子によって演算される論理式との対応関係が表形式で表される。なお、論理演算子とは、論理積演算子（ＡＮＤ演算子）及び論理和演算子（ＯＲ演算子）を指し、以下同様とする。
【０００９】
本発明によれば、ソフトウェアの開発者にとって視覚的に理解しやすいマトリックス形式で、状態遷移条件がソフトウェア開発用端末の画面上などに表示される。これにより、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックをより容易に行うことができ、ソフトウェアの品質を向上させることができる。
【００１０】
第３発明に係るソフトウェア開発支援装置は、第１発明に係るソフトウェア開発支援装置であって、第１遷移条件表示部は、第１遷移条件解析部によって構文解析された状態遷移条件を、ツリー形式で表示する手段を提供する。ツリー形式では、状態遷移条件はソフトウェア開発で使用される基本的なデータ構造である木構造で表される。この木構造において、状態遷移条件に含まれる任意の論理演算子は内部ノード（葉ノード以外のノード）として表され、当該論理演算子によって演算される論理式は当該内部ノードに接続される下位ノードとして表される。また、この木構造において、葉ノードは論理演算子を含まない論理式を表す。
【００１１】
本発明によれば、ソフトウェアの開発者にとって視覚的に理解しやすいツリー形式で、状態遷移条件がソフトウェア開発用端末の画面上などに表示される。これにより、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックをより容易に行うことができ、ソフトウェアの品質を向上させることができる。
【００１２】
第４発明に係るソフトウェア開発支援装置は、第１発明から第３発明のいずれかに係るソフトウェア開発支援装置であって、抽出条件記憶部と、遷移条件抽出部とをさらに備える。抽出条件記憶部は、ソフトウェア仕様記憶部に記憶される互いに排他性を有するべき複数の状態遷移条件を抽出するための抽出条件を記憶する。遷移条件抽出部は、抽出条件記憶部に記憶される抽出条件に基づいて、互いに排他性を有するべき複数の状態遷移条件を抽出する。
【００１３】
本発明によれば、複数の状態遷移条件が互いに排他性を有するべき場合、当該状態遷移条件が自動的に抽出される。これにより、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックを行う際に、互いに排他性を有するべき複数の状態遷移条件を特定しやすくなる。
【００１４】
第５発明に係るソフトウェア開発支援装置は、第４発明に係るソフトウェア開発支援装置であって、第２遷移条件解析部と、排他性判断部と、第２遷移条件表示部とをさらに備える。第２遷移条件解析部は、遷移条件抽出部によって抽出された複数の状態遷移条件の構文解析を行う。排他性判断部は、第２遷移条件解析部によって構文解析された複数の状態遷移条件に含まれる互いに排他性を有していない変数又は論理式を抽出する。第２遷移条件表示部は、排他性判断部によって抽出された変数又は論理式を、視覚的に表示する手段を提供する。
【００１５】
本発明によれば、互いに排他性を有するべき複数の状態遷移条件が排他性を有していない場合に、当該複数の状態遷移条件に含まれる互いに排他性を有していない変数又は論理式が、ソフトウェアの開発者にとって視覚的に理解しやすい形式で、ソフトウェア開発用端末の画面上などに表示される。これにより、ソフトウェアの開発者は、互いに排他性を有するべき複数の状態遷移条件が互いに排他性を有しているか否かを、容易に確認することができる。
【００１６】
第６発明に係るソフトウェア開発支援装置は、第５発明に係るソフトウェア開発支援装置であって、第２遷移条件表示部は、排他性判断部によって抽出された変数又は論理式を、当該排他性判断部によって抽出されなかった変数又は論理式とは異なる態様で表示する手段を提供する。
【００１７】
本発明によれば、互いに排他性を有するべき複数の状態遷移条件が排他性を有していない場合に、当該複数の状態遷移条件に含まれる互いに排他性を有していない変数又は論理式が、互いに排他性を有している他の変数又は論理式とは異なる態様で、ソフトウェア開発用端末の画面上などに、表示される。これにより、ソフトウェアの開発者は、複数の状態遷移条件に含まれる互いに排他性を有するべき変数又は論理式を容易に特定することができる。
【発明の効果】
【００１８】
第１発明に係るソフトウェア開発支援装置では、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックを容易に行うことができ、ソフトウェアの品質を向上させることができる。
【００１９】
第２発明に係るソフトウェア開発支援装置では、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックをより容易に行うことができ、ソフトウェアの品質を向上させることができる。
【００２０】
第３発明に係るソフトウェア開発支援装置では、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックをより容易に行うことができ、ソフトウェアの品質を向上させることができる。
【００２１】
第４発明に係るソフトウェア開発支援装置では、ソフトウェアの開発者は、複数の状態遷移条件間の排他性チェックを行う際に、互いに排他性を有するべき複数の状態遷移条件を特定しやすくなる。
【００２２】
第５発明に係るソフトウェア開発支援装置では、ソフトウェアの開発者は、互いに排他性を有するべき複数の状態遷移条件が互いに排他性を有しているか否かを、容易に確認することができる。
【００２３】
第６発明に係るソフトウェア開発支援装置では、ソフトウェアの開発者は、複数の状態遷移条件に含まれる互いに排他性を有するべき変数又は論理式を容易に特定することができる。
【図面の簡単な説明】
【００２４】
【図１】本実施形態に係るソフトウェア開発支援装置のブロック図である。
【図２】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示される状態遷移図編集画面である。
【図３】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示される状態遷移条件の表示選択設定画面である。
【図４】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示されるフラット形式の状態遷移条件を表示する状態遷移図表示画面である。
【図５】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示されるマトリックス形式の状態遷移条件を表示する状態遷移図表示画面である。
【図６】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示されるツリー形式の状態遷移条件を表示する状態遷移図表示画面である。
【図７】（ａ）は、本実施形態に係るソフトウェア開発支援装置が、フラット形式の状態遷移条件から木構造を生成する過程を説明するための図である。（ｂ）は、本実施形態に係るソフトウェア開発支援装置が、フラット形式の状態遷移条件から木構造を生成する過程を説明するための図である。
【図８】本実施形態に係るソフトウェア開発支援装置によって、フラット形式の状態遷移条件から生成された木構造を表す図である。
【図９】（ａ）は、本実施形態に係るソフトウェア開発支援装置が備える抽出条件記憶部に記憶される抽出条件をパターン化した状態遷移図である。（ｂ）は、本実施形態に係るソフトウェア開発支援装置が備える抽出条件記憶部に記憶される抽出条件をパターン化した状態遷移図である。（ｃ）は、本実施形態の変形例に係るソフトウェア開発支援装置が備える抽出条件記憶部に記憶される抽出条件をパターン化した状態遷移図である。
【図１０】本実施形態に係るソフトウェア開発支援装置が備える遷移条件抽出部によって互いに排他性を有するべき状態遷移条件が抽出される過程を説明するための状態遷移図である。
【図１１】（ａ）及び（ｂ）は、本実施形態に係るソフトウェア開発支援装置が備える遷移条件抽出部によって抽出された互いに排他性を有するべき１組の状態遷移条件を表す論理式及び当該論理式から生成された木構造を表す図である。
【図１２】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示されるチャート一覧画面である。
【図１３】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示される排他性チェック結果表示選択設定画面である。
【図１４】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示される排他性チェック結果（文言）表示画面である。
【図１５】本実施形態に係るソフトウェア開発支援装置が備える出力装置に表示される排他性チェック結果（イメージ図）表示画面である。
【図１６】本実施形態に係るソフトウェア開発支援装置が備える第１遷移条件解析部が、フラット形式の状態遷移条件から木構造を生成する過程を表すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の一実施形態に係るソフトウェア開発支援装置に関して詳述する。なお、本実施形態に係るソフトウェア開発支援装置の構成に関して説明する前に、本実施形態に係るソフトウェア開発支援装置で使用される状態遷移図に関して説明する。
【００２６】
一般的なソフトウェア開発モデルであるウォーターフォールモデルでは、ソフトウェアの開発作業は、要求定義、設計、プログラミング、テストの順で行われる。「要求定義」の段階では、ソフトウェアが備えるべき機能の調査及び分析作業が行われる。「設計」の段階では、要求定義の結果に基づいてソフトウェアの動作仕様が詳細かつ具体的に記述される。「プログラミング」の段階では、ソフトウェアの動作仕様に基づいてソースコードが作成される。「テスト」の段階では、作成されたソースコードの動作確認及び修正が行われる。本実施形態に係るソフトウェア開発支援装置を用いたソフトウェア開発では、前述の「設計」の段階で記述されるソフトウェアの動作仕様が、状態遷移図の形式で表される。状態遷移図では、ソフトウェアの動作の状態を表す情報と状態遷移条件とが記述される。ソフトウェアの動作の状態は、ソフトウェアの実行状態を表す。状態遷移条件は、ソフトウェアの動作の状態を他のソフトウェアの動作の状態に遷移させるための条件を表す。
【００２７】
本実施形態に係るソフトウェア開発支援装置で使用される状態遷移図について、具体例を用いて説明する。図４、図５及び図６は、開発対象であるソフトウェアの動作仕様の一部分を表す状態遷移図である。これらの状態遷移図は、ソフトウェアの動作の状態（以下、単に「状態」と記述する。）ｓ１、状態ｓ２、状態遷移条件（以下、単に「条件」と記述する。）ｃ１及び条件ｃ２から構成されている。条件ｃ１は、状態ｓ１「＜アイドル＞偏流防止ＳＶＧ＝ＯＦＦ」から状態ｓ２「＜偏流防止制御＞偏流防止ＳＶＧ＝ＯＮ」へソフトウェアの制御を移行させるための条件である。また、条件ｃ２は、状態ｓ２「＜偏流防止制御＞偏流防止ＳＶＧ＝ＯＮ」から状態ｓ１「＜アイドル＞偏流防止ＳＶＧ＝ＯＦＦ」へソフトウェアの制御を移行させるための条件である。図４においては、条件ｃ１及び条件ｃ２が論理式の形式（以下、フラット形式という。）で記述されている。また、図５においては、条件ｃ１及び条件ｃ２がマトリックス形式で記述され、図６においては、条件ｃ１及び条件ｃ２がツリー形式で記述されている。マトリックス形式及びツリー形式では、条件ｃ１及び条件ｃ２に含まれる任意の論理演算子と、当該論理演算子の演算対象である論理式との対応関係が、視覚的に理解しやすい形式で記述されている。例えば、ソフトウェア開発者は、図５及び図６の状態遷移図に記述されている条件ｃ１に含まれる３つの論理式「ＥＶ１状態（＊）＞＝ＥＶ１Ｍａｘ（＊）」、「ＳＨ３（＊）＞（ＳＹＯＳＵ（１０，００））」及び「ＳＨ４（＊）＞（ＳＹＯＳＵ（１０，００））」がＡＮＤ演算子で結合されていることを視覚的に容易に理解することができる。
【００２８】
＜構成＞
本実施形態に係るソフトウェア開発支援装置１の構成を表すブロック図を図１に示す。ソフトウェア開発支援装置１としては、一般的なパーソナルコンピュータが用いられる。ソフトウェア開発支援装置１は、出力装置２と、入力装置３と、コンピュータ本体４とを主な構成要件として備える。また、コンピュータ本体４は、ＣＰＵ（中央演算処理装置）５と、ＲＡＭ（Random Access Memory）６と、ＨＤＤ（Hard Disk Drive）７とを備える。
【００２９】
以下、ソフトウェア開発支援装置１が備えるこれらの構成要素について説明する。
【００３０】
（１）出力装置
出力装置２は、各種画面を表示する。具体的には、出力装置２は、条件式表示選択設定画面（図３）及び状態遷移図（図４、図５及び図６）などを表示する。出力装置２としては、コンピュータ本体４に接続される液晶ディスプレイが用いられる。
【００３１】
（２）入力装置
入力装置３は、出力装置２に表示された情報に基づいてソフトウェア開発者が各種操作を行う際に用いられる。具体的には、ソフトウェア開発者は、入力装置３を用いて後述する状態遷移図の編集、状態遷移条件の表示形式の変更などを行う。入力装置３としては、コンピュータ本体４に接続されるキーボード及びマウスが用いられる。
【００３２】
（３）コンピュータ本体
コンピュータ本体４は、ソフトウェア開発支援装置１が備える各種機能を実現する。具体的には、コンピュータ本体４に内蔵されているＨＤＤ７は、後述するソフトウェア仕様記憶部１１として機能する。また、コンピュータ本体４に内蔵されているＣＰＵ５は、後述する第１遷移条件解析部２１、第１遷移条件表示部２２、抽出条件記憶部２３、遷移条件抽出部２４、第２遷移条件解析部２５、排他性判断部２６、第２遷移条件表示部２７及びソースコード生成部２８としての機能を有する。ＣＰＵ５が有するこれらの機能は、プログラムの形式でＨＤＤ７に記憶されている。ＣＰＵ５は、これらのプログラムをＲＡＭ６に読み出した後に、プログラムを実行して情報の演算処理を行うことで、前述の各種機能を実現する。以下、コンピュータ本体４が実現するこれらの機能について説明する。
【００３３】
（３−１）ソフトウェア仕様記憶部
ソフトウェア仕様記憶部１１は、状態遷移図を記憶する。
【００３４】
ソフトウェア開発者は、出力装置２の画面上に表示される状態遷移図編集画面上で任意の状態遷移図を作成及び編集することができる。状態遷移図編集画面の例を図２に示す。ソフトウェア開発者は、状態遷移図編集画面上で状態遷移図を作成及び編集した後に「保存」操作を行うことで、ソフトウェア仕様記憶部１１に状態遷移図を記憶させることができる。
【００３５】
（３−２）第１遷移条件解析部
第１遷移条件解析部２１は、ソフトウェア仕様記憶部１１に記憶されている状態遷移図に含まれる状態遷移条件の構文解析を行う。第１遷移条件解析部２１は、状態遷移条件に含まれる任意の論理演算子と、当該論理演算子によって演算される複数の論理式との結合関係を表す木構造を、構文解析の対象である状態遷移条件から生成する。なお、構文解析の対象である状態遷移条件としては、ソースコード中にフラット形式で記述されている状態遷移条件が使用される。第１遷移条件解析部２１によって生成された木構造において、全ての内部ノードは論理演算子を表し、全ての葉ノードは論理演算子を含まない論理式を表す。第１遷移条件解析部２１によって生成された木構造は、ＲＡＭ６上に記憶され、後述する第１遷移条件表示部２２によって使用される。
【００３６】
以下、第１遷移条件解析部２１が行う構文解析の具体例として、図７（ａ）で示されるフラット形式で記述される条件ｃ１から図８で示される木構造ｔｒ１が生成される過程について説明する。なお、図７（ａ）において、参照符号ｆ１〜ｆ８は条件ｃ１に含まれる論理式を表す。最初に、遷移条件解析部２１は、図７（ａ）で示される論理式において、一種類の論理演算子のみを介して結合されている複数の論理式を検索する。次いで、遷移条件解析部２１は、検索された当該複数の論理式を表すノードを、当該一種類の論理演算子を表すノードの子ノードとした部分木を作成する。例えば、図７（ａ）に示される条件ｃ１において、論理式ｆ１と論理式ｆ２は、ＡＮＤ演算子及び２つの括弧“［”を介して結合されているので、遷移条件解析部２１は、論理式ｆ１及び論理式ｆ２から部分木を作成することができない。一方、論理式ｆ２〜ｆ５は、ＡＮＤ演算子のみを介して結合されているので、遷移条件解析部２１は、「ＡＮＤ演算子」ノードｎ１と、論理式ｆ２〜ｆ５とを表す子ノードから構成される、図８に示される部分木ｔｒ２を作成することができる。同様に、遷移条件解析部２１は、「ＡＮＤ演算子」ノードｎ２と、論理式ｆ６〜ｆ８とを表す子ノードから構成される、図８に示される部分木ｔｒ３を作成することができる。
【００３７】
次に、部分木ｔｒ２及び部分木ｔｒ３をそれぞれ論理式ｆ９及び論理式ｆ１０と見なして、図７（ｂ）で示される論理式に対して、先述と同様の操作を行う。すなわち、図７（ｂ）において、論理式ｆ９と論理式ｆ１０はＯＲ演算子のみを介して結合されている。従って、遷移条件解析部２１は、「ＯＲ演算子」ノードｎ３と、論理式ｆ９及び論理式ｆ１０とを表す子ノードから構成される、部分木ｔｒ４を作成することができる。同様に、図７（ｂ）において、部分木ｔｒ４を表す論理式ｆ１１と論理式ｆ１はＡＮＤ演算子のみを介して結合されている。従って、遷移条件解析部２１は、「ＡＮＤ演算子」ノードｎ４と、論理式ｆ１１と、論理式ｆ１とを表す子ノードから構成される、条件ｃ１全体を表す木構造ｔｒ１を作成することができる。
【００３８】
（３−３）第１遷移条件表示部
第１遷移条件表示部２２は、第１遷移条件解析部２１によって構文解析された状態遷移条件を、視覚的に表示する手段を提供する。具体的には、第１遷移条件表示部２２は、ＲＡＭ６上に記憶されている遷移条件解析部２１によって生成された木構造に基づいて、状態遷移条件をフラット形式、マトリックス形式及びツリー形式のいずれかの表示形式で、出力装置２の画面上に表示する手段を提供する。ソフトウェア開発者が、出力装置２の画面上に表示されている状態遷移条件の表示形式を変更するためには、表示形式の変更対象である状態遷移条件を選択して、図３に示される「条件式表示選択設定画面」を出力装置２の画面上に表示させる。図３において、ソフトウェア開発者は、選択された状態遷移条件をフラット形式で表示させる場合は、「表で表示する」チェックボックス及び「ツリーで表示する」チェックボックスを両方ともにオフにした後、「ＯＫ」ボタンを押下する。また、ソフトウェア開発者は、選択された状態遷移条件をマトリックス形式で表示させる場合は、「表で表示する」チェックボックスをオンにして「ツリーで表示する」チェックボックスをオフにした後、「ＯＫ」ボタンを押下する。同様に、ソフトウェア開発者は、選択された状態遷移条件をツリー形式で表示させる場合は、「表で表示する」チェックボックスをオフにして「ツリーで表示する」チェックボックスをオンにした後、「ＯＫ」ボタンを押下する。
【００３９】
具体例として、ソフトウェア開発者が条件ｃ１及び条件ｃ２の表示形式を図４で示されるフラット形式から図５で示されるマトリックス形式に変更する場合の操作手順を説明する。最初に、ソフトウェア開発者は、図４に記述されている条件ｃ１を選択して、図３に示される「条件式表示選択設定画面」を出力装置２の画面上に表示させる。次に、ソフトウェア開発者は、「条件式表示選択設定画面」の「表で表示する」チェックボックスをオンにする。その後、ソフトウェア開発者が「ＯＫ」ボタンを押すことで、条件ｃ１がマトリックス形式で出力装置２の画面上に表示される。次に、ソフトウェア開発者は、条件ｃ２に関しても同様の操作を行う。その結果、図５で示される表示画面が出力装置２の画面上に表示される。
【００４０】
（３−４）抽出条件記憶部
抽出条件記憶部２３は、ソフトウェア仕様記憶部１１に記憶される状態遷移図に含まれる互いに排他性を有するべき複数の状態遷移条件を抽出するための抽出条件を記憶する。抽出条件記憶部２３によって記憶される抽出条件とは、少なくとも２つのソフトウェアの動作の状態と、当該状態間に存在する互いに排他性を有するべき複数の状態遷移条件とをパターン化したものである。
【００４１】
当該パターン化の具体例である状態遷移図を図９（ａ）及び図９（ｂ）に示す。図９（ａ）では、状態ｓ１１から状態ｓ１２へ遷移する際の条件ｃ１１と、状態ｓ１２から状態ｓ１１へ遷移する際の条件ｃ１２とが記述されている。本具体例では、条件ｃ１１と条件ｃ１２が互いに排他性を有していない場合、ソフトウェアの制御が状態ｓ１１と状態ｓ１２の間を行き来する動作をすることで、ソフトウェアの実行中の処理が無限ループに陥る可能性がある。また、図９（ｂ）では、状態ｓ２１から状態ｓ２２へ遷移する際の条件ｃ２２と、状態ｓ２１から状態ｓ２３へ遷移する際の条件ｃ２３とが記述されている。本具体例では、条件ｃ２２と条件ｃ２３が互いに排他性を有していない場合、ソフトウェアの制御が状態ｓ２１から状態ｓ２２又は状態ｓ２３のいずれかに移行するかが不定であるため、ソフトウェアの実行中の処理が予期しない動作を行う可能性がある。従って、図９（ａ）及び図９（ｂ）で示されるパターンを一部分に含む状態遷移図では、当該パターンに相当する部分に含まれる複数の状態遷移条件は互いに排他性を有する必要がある。
【００４２】
（３−５）遷移条件抽出部
遷移条件抽出部２４は、抽出条件記憶部２３に記憶される抽出条件に基づいて、互いに排他性を有するべき複数の状態遷移条件を抽出する。具体的には、遷移条件抽出部２４は、抽出条件記憶部２３に記憶される抽出条件を表すパターン化された状態遷移図に相当する部分を、ソフトウェア仕様記憶部１１に記憶される状態遷移図から検索する。遷移条件抽出部２４は、パターン化された状態遷移図に相当する部分が検索された場合、当該部分に含まれる複数の状態遷移条件を抽出する。抽出された複数の状態遷移条件は、互いに排他性を有するべき状態遷移条件である。
【００４３】
具体例として、遷移条件抽出部２４が、図９（ａ）及び図９（ｂ）で示される抽出条件に基づいて、図１０に示される状態遷移図から互いに排他性を有するべき状態遷移条件を抽出する処理に関して説明する。図１０に示される状態遷移図において、破線で囲まれた領域ｒ１は状態ｓ３１と、状態ｓ３２と、状態ｓ３１及び状態ｓ３２間を互いに逆方向に遷移する条件ｃ３１及び条件ｃ３２とを含む。すなわち、領域ｒ１に含まれる状態遷移図は、図９（ａ）で示されるパターンに相当する。従って、遷移条件抽出部２４は、条件ｃ３１及び条件ｃ３２を互いに排他性を有するべき状態遷移条件として抽出する。同様に、一点鎖線で囲まれた領域ｒ２に含まれる状態遷移図は、図９（ｂ）で示されるパターンに相当する。従って、遷移条件抽出部２４は、条件ｃ３１及び条件ｃ３３を互いに排他性を有するべき状態遷移条件として抽出する。
【００４４】
（３−６）第２遷移条件解析部
第２遷移条件解析部２５は、遷移条件抽出部２４によって抽出された複数の状態遷移条件の構文解析を行う。第２遷移条件解析部２５は、第１遷移条件解析部２１と同様に、構文解析の対象である状態遷移条件から木構造を生成する。なお、構文解析の対象である状態遷移条件としては、ソースコード中にフラット形式で記述されている状態遷移条件が使用される。第２遷移条件解析部２５は、第１遷移条件解析部２１によって生成された木構造の葉ノードが表す論理式を部分木に展開する。当該部分木は、論理式に含まれる任意の関係演算子と、当該関係演算子によって演算される複数の変数との結合関係を表す。ここで、関係演算子とは、等号演算子“＝＝”、不等号演算子“！＝”及び比較演算子“＞”、“＞＝”、“＜”、“＜＝”を表す。第２遷移条件解析部２５によって生成された木構造において、全ての内部ノードは論理演算子又は関係演算子を表し、全ての葉ノードは変数又は論理式を表す。第２遷移条件解析部２５によって生成された木構造は、ＲＡＭ６上に記憶され、後述する排他性判断部２６によって使用される。
【００４５】
具体例として、遷移条件抽出部２４によって抽出された互いに排他性を有するべき条件ｃ４１及び条件ｃ４２を表す論理式と、第２遷移条件解析部２５によって条件ｃ４１から生成された木構造ｔｒ１１と、条件ｃ４２から生成された木構造ｔｒ１２とを図１１（ａ）及び図１１（ｂ）に示す。
【００４６】
（３−７）排他性判断部
排他性判断部２６は、第２遷移条件解析部２５によって構文解析された複数の状態遷移条件に含まれる互いに排他性を有していない変数又は論理式を抽出する。排他性判断部２６は、第２遷移条件解析部２５によって生成された木構造に基づいて、当該木構造に含まれる内部ノードごとに、状態遷移条件の排他性を判断する。
【００４７】
具体例として、排他性判断部２６が、図１１（ａ）及び図１１（ｂ）によってそれぞれ示される木構造ｔｒ１１及び木構造ｔｒ１２に関して、互いに排他性を有していない変数又は論理式を抽出する過程に関して説明する。まず、排他性判断部２６は、木構造ｔｒ１１に含まれる内部ノードｎ１１が表す論理式「Ａ＝＝１」と、木構造ｔｒ１２に含まれる内部ノードｎ１１’が表す論理式「Ａ！＝１」とを比較する。当該２つの論理式は、互いに排他性を有するので、排他性判断部２６は、内部ノードｎ１１と内部ノードｎ１１’は互いに排他性を有すると判断する。同様に、排他性判断部２６は、内部ノードｎ１２及び内部ノードｎ１２’は互いに排他性を有すると判断する。一方、内部ノードｎ１３と内部ノードｎ１３’は共に論理式「Ｃ＝＝１」を表し、互いに排他性を有さないので、排他性判断部２６は内部ノードｎ１３と内部ノードｎ１３’によって表される当該論理式を抽出する。次いで、ド・モルガンの法則より、内部ノードｎ１４が表す論理式「（Ａ＝＝１）＆＆（Ｂ＝＝１）」は、内部ノードｎ１４’が表す論理式「（Ａ！＝１）｜｜（Ｂ！＝１）」の補集合であるため、排他性判断部２６は、内部ノードｎ１４及び内部ノードｎ１４’は互いに排他性を有すると判断する。内部ノードｎ１５と内部ノードｎ１５’は、下位に互いに排他性を有さない内部ノードｎ１３と内部ノードｎ１３’が存在するため、排他性判断部２６は、排他性を判断しない。
【００４８】
（３−８）第２遷移条件表示部
第２遷移条件表示部２７は、排他性判断部２６によって抽出された変数又は論理式を、視覚的に表示する手段を提供する。
【００４９】
第２遷移条件表示部２７が、この排他性チェックの結果を出力装置２の画面上に表示する過程について説明する。最初に、ソフトウェア開発者は、図１２に示される「チャート一覧画面」を出力装置２の画面上に表示させる。ソフトウェア開発者が、排他性をチェックする状態遷移図を選択して「排他性チェック」ボタンを押すことで、図１３に示される「排他性チェック結果表示選択設定画面」が出力装置２の画面上に表示される。ここで、ソフトウェア開発者は、排他性チェック結果を文言で出力装置２の画面上に表示させる場合、「排他イメージ図を表示しない」チェックボックスをチェックして「ＯＫ」ボタンを押す。また、ソフトウェア開発者は、排他性チェック結果をイメージ図で出力装置２の画面上に表示させる場合、「排他イメージ図を表示しない」チェックボックスをチェックせずに「ＯＫ」ボタンを押す。ソフトウェア開発者が「ＯＫ」ボタンを押した後に、排他性判断部２６によって状態遷移図に含まれる互いに排他性を有さない変数又は論理式が抽出され、第２遷移条件表示部２７によって抽出された変数又は論理式が出力装置２の画面上に表示される。
【００５０】
具体例として、第２遷移条件表示部２７が、図１１（ａ）及び図１１（ｂ）によってそれぞれ示される条件ｃ４１（木構造ｔｒ１１）及び条件ｃ４２（木構造ｔｒ１２）に含まれる互いに排他性を有さない変数又は論理式を表示する画面に関して説明する。最初に、第２遷移条件表示部２７が、排他性チェック結果を文言で出力装置２の画面上に表示する際の表示画面を図１４に示す。図１４で示される「排他性チェック結果（文言）表示画面」において、互いに排他性を有していない変数又は論理式を含む条件ｃ４１及び条件ｃ４２は、論理式で記述される。次いで、第２遷移条件表示部２７が、排他性チェック結果をイメージ図で出力装置２の画面上に表示する際の表示画面を図１５に示す。図１５で示される「排他性チェック結果（イメージ図）表示画面」において、互いに排他性を有していない変数又は論理式を含む条件ｃ４１及び条件ｃ４２は、それぞれマトリックスｍ１及びマトリックスｍ２で記述される。図１５で示されるマトリックスｍ１及びマトリックスｍ２において、互いに排他性を有さない論理式「Ｃ＝＝１」は強調して表示される。また、互いに排他性を有さない論理式「Ｃ＝＝１」の存在がベン図ｖ１によっても表示される。図１５で示されるベン図ｖ１において、ハッチで示された部分は、条件ｃ４１及び条件ｃ４２に含まれる互いに排他性を有さない集合を示す。
【００５１】
（３−９）ソースコード生成部
ソースコード生成部２８は、ソフトウェア仕様記憶部１１に記憶されている状態遷移図に基づいてソースコードを生成する。ソフトウェア開発者は、生成されたソースコードを実行可能なソフトウェアに変換することができる。
【００５２】
＜動作の流れ＞
次に、本実施形態に係るソフトウェア開発支援装置１の動作の流れについて説明する。図１６は、ソフトウェア開発支援装置１に備えられる第１遷移条件解析部２１が、構文解析の対象であるフラット形式の状態遷移条件から、第１遷移条件表示部２２によって使用される木構造を生成する際の処理の流れを表すフローチャートである。なお、ソフトウェア開発支援装置１に備えられるソフトウェア仕様記憶部１１には、状態遷移図が予め記憶されているものとする。
【００５３】
ステップＳ１：第１遷移条件解析部２１は、ソフトウェア仕様記憶部１１に記憶されている構文解析の対象である状態遷移条件を、ＲＡＭ６上に読み込む。以下のステップでは、ＲＡＭ６上に読み込まれた状態遷移条件に対して構文解析の処理を行う。次に、ステップＳ２に進む。
【００５４】
ステップＳ２：第１遷移条件解析部２１は、状態遷移条件に複数の論理式が含まれているか否かを判断する。複数の論理式が含まれている場合（Ｓ２のＹｅｓ）、ステップＳ３に進む。複数の論理式が含まれていない場合（Ｓ２のＮｏ）、第１遷移条件解析部２１は構文解析が終了したと判断してステップＳ８に進む。
【００５５】
ステップＳ３：第１遷移条件解析部２１は、状態遷移条件に含まれている複数の論理式を抽出する。次に、ステップＳ４に進む。
【００５６】
ステップＳ４：第１遷移条件解析部２１は、ステップＳ３で抽出された複数の論理式が一種類の論理演算子のみを介して結合されているかを判断する。複数の論理式が一種類の論理演算子のみを介して結合されている場合（Ｓ４のＹｅｓ）、ステップＳ５に進む。複数の論理式が一種類の論理演算子のみを介して結合されていない場合（Ｓ４のＮｏ）、他の組み合わせからなる複数の論理式を抽出するために、ステップＳ３に戻る。なお、構文解析の対象である状態遷移条件が正当に記述されている場合、一種類の論理演算子のみを介して結合されている複数の論理式が、必ずステップＳ３で抽出される。
【００５７】
ステップＳ５：第１遷移条件解析部２１は、ステップＳ３で抽出された複数の論理式を表すノード及び当該複数の論理式を結合している論理演算子を表すノードから構成される部分木を作成する。次に、ステップＳ６に進む。
【００５８】
ステップＳ６：第１遷移条件解析部２１は、ステップＳ５で作成された部分木をＲＡＭ６上に記憶する。次に、ステップＳ７に進む。
【００５９】
ステップＳ７：第１遷移条件解析部２１は、ステップＳ５で作成された部分木に相当する論理式を一の論理式と見なした新たな論理式を表す状態遷移条件をＲＡＭ６上に記憶させる。次に、ステップＳ２に戻ってこの状態遷移条件に対して構文解析の処理を行う。
【００６０】
ステップＳ８：第１遷移条件解析部２１は、ステップＳ６でＲＡＭ６上に記憶された一又は複数の部分木に基づいて、状態遷移条件の全体を表す木構造を作成する。
【００６１】
＜効果＞
（１）本実施形態に係るソフトウェア開発支援装置１では、ソフトウェア開発者は、第１遷移条件解析部２１及び第１遷移条件表示部２２によって、複数の状態遷移条件間の排他性チェックを容易に行うことができ、ソフトウェアの品質を向上させることができる。
【００６２】
（２）本実施形態に係るソフトウェア開発支援装置１では、ソフトウェア開発者は、抽出条件記憶部２３及び遷移条件抽出部２４によって、複数の状態遷移条件間の排他性チェックを行う際に、互いに排他性を有するべき複数の状態遷移条件を特定しやすくなる。
【００６３】
（３）本実施形態に係るソフトウェア開発支援装置１では、ソフトウェア開発者は、第２遷移条件解析部２５、排他性判断部２６及び第２遷移条件表示部２７によって、互いに排他性を有するべき複数の状態遷移条件が互いに排他性を有しているか否かを、容易に確認することができる。
【００６４】
（４）本実施形態に係るソフトウェア開発支援装置１では、ソフトウェア開発者は、第２遷移条件表示部２７によって、複数の状態遷移条件に含まれる互いに排他性を有するべき変数又は論理式を容易に特定することができる。
【００６５】
＜変形例＞
（１）本実施形態に係るソフトウェア開発支援装置１では、出力装置２として液晶ディスプレイが用いられているが、条件式表示選択設定画面（図３）などが表示可能な装置であれば、ＣＲＴ（Cathode Ray Tube）ディスプレイが用いられていてもよい。
【００６６】
（２）本実施形態に係るソフトウェア開発支援装置１では、入力装置３としてキーボード及びマウスが用いられているが、ソフトウェア開発者が情報を入力可能な装置であれば、キーボードの代わりにタッチパネルが用いられていてもよく、マウスの代わりにタブレットなどの他のポインティングデバイスが用いられていてもよい。
【００６７】
（３）本実施形態に係るソフトウェア開発支援装置１では、ソフトウェア仕様記憶部１１としてＨＤＤ７が用いられているが、読み取り及び書き込みが可能な記録媒体であれば、ＭＯディスク、メモリカード及びＵＳＢメモリなどが用いられていてもよい。この場合、ソフトウェア開発支援装置１がさらに備えるＭＯドライブ、カードリーダ及びＵＳＢポートなどを介して、作成及び編集されたデータフロー図がこれらの記録媒体に記憶される。
【００６８】
（４）本実施形態に係るソフトウェア開発支援装置１では、第１遷移条件解析部２１などの各種機能を実現するプログラムの記録媒体としてＨＤＤ７が用いられているが、読み取り可能な記録媒体であればＣＤ、ＤＶＤ、メモリカード及びＵＳＢメモリなどが用いられていてもよい。この場合、ソフトウェア開発支援装置１がさらに備えるＣＤドライブ、ＤＶＤドライブ、カードリーダ及びＵＳＢポートなどを介して、ＣＰＵ５がこれらの記録媒体に記憶されているプログラムをＲＡＭ６に読み出す。
【００６９】
（５）本実施形態に係るソフトウェア開発支援装置１では、抽出条件記憶部２３によって記憶される抽出条件として図９（ａ）及び図９（ｂ）に示されるパターン化された状態遷移図が例示されているが、一の状態から他の複数の状態へ遷移する複数の条件が含まれていれば、図９（ｃ）に示されるパターン化された状態遷移図などでもよい。図９（ｃ）では、状態ｓ２１’から状態ｓ２２’へ遷移する際の条件ｃ２２’と、状態ｓ２１’から状態ｓ２３’へ遷移する際の条件ｃ２３’と、状態ｓ２１’から状態ｓ２４’へ遷移する際の条件ｃ２４’とが記述されている。
【産業上の利用可能性】
【００７０】
本発明に係るソフトウェア開発支援装置では、ソフトウェア開発者は、ソフトウェアの動作仕様を表す状態遷移図に含まれる状態遷移条件の排他性チェックを容易に行うことができる。従って、ソフトウェア開発者は、本発明に係るソフトウェア開発支援装置を使用することにより、ソフトウェアの品質を向上させることができる。
【符号の説明】
【００７１】
１  ソフトウェア開発支援装置
２  出力装置
３  入力装置
４  コンピュータ本体
５  ＣＰＵ
６  ＲＡＭ
７  ＨＤＤ
１１  ソフトウェア仕様記憶部
２１  第１遷移条件解析部
２２  第１遷移条件表示部
２３  抽出条件記憶部
２４  遷移条件抽出部
２５  第２遷移条件解析部
２６  排他性判断部
２７  第２遷移条件表示部
２８  ソースコード生成部
ｓ１，ｓ２，ｓ１１，ｓ１２，ｓ２１〜ｓ２３，ｓ２１’〜ｓ２４’，ｓ３１〜ｓ３３  ソフトウェアの動作の状態
ｃ１，ｃ２，ｃ１１，ｃ１２，ｃ２２，ｃ２３，ｃ２２’〜ｃ２４’，ｃ３１〜ｃ３４，ｃ４１，ｃ４２  状態遷移条件
ｔｒ１〜ｔｒ４，ｔｒ１１，ｔｒ１２  木構造
ｆ１〜ｆ１１  論理式
ｎ１〜ｎ４，ｎ１１〜ｎ１５，ｎ１１’〜ｎ１５’  ノード
ｒ１，ｒ２  領域
ｍ１，ｍ２  マトリックス
ｖ１  ベン図
【先行技術文献】
【特許文献】
【００７２】
【特許文献１】特開２００５−２５０９７４号公報
【図１】
2010176498.tif 000003
【図２】
2010176498.tif 000004
【図３】
2010176498.tif 000005
【図４】
2010176498.tif 000006
【図５】
2010176498.tif 000007
【図６】
2010176498.tif 000008
【図７】
2010176498.tif 000009
【図８】
2010176498.tif 000010
【図９】
2010176498.tif 000011
【図１０】
2010176498.tif 000012
【図１１】
2010176498.tif 000013
【図１２】
2010176498.tif 000014
【図１３】
2010176498.tif 000015
【図１４】
2010176498.tif 000016
【図１５】
2010176498.tif 000017
【図１６】
2010176498.tif 000018