(57)【要約】【課題】ＧＵＩを伴うソフトウェアのプログラム作成工程からテスト工程までを一貫して支援し、一連のＧＵＩソフトウェア開発を効率的に行うことを目的とする。【解決手段】ＧＵＩの画面情報からソースコードを生成するソースコード生成手段と、画面情報からソースコードをテストするテストソースコードを生成するテストソースコード生成手段と、画面情報からテストソースコードを実行する手順を定めたテストシナリオを生成するテストシナリオ生成手段と、ソースコード及びテストソースコードから実行プログラム及び実行テストプログラムを生成する実行プログラム生成手段と、テストシナリオに基づいて実行テストプログラムを実行し、実行プログラムをテストするテスト実行手段とを有することによって前記課題を解決する。【選択図】図２
2007213249.tif 000002
【特許請求の範囲】
【請求項１】
ＧＵＩの画面情報からソースコードを生成するソースコード生成手段と、
前記画面情報から前記ソースコードをテストするテストソースコードを生成するテストソースコード生成手段と、
前記画面情報から前記テストソースコードを実行する手順を定めたテストシナリオを生成するテストシナリオ生成手段と、
前記ソースコード及び前記テストソースコードから実行プログラム及び実行テストプログラムを生成する実行プログラム生成手段と、
前記テストシナリオに基づいて前記実行テストプログラムを実行し、前記実行プログラムをテストするテスト実行手段と
を有することを特徴とするソフトウェア開発支援装置。
【請求項２】
前記画面情報は、
少なくともＧＵＩ部品の位置と、大きさとの情報を含むレイアウト情報と、
ＧＵＩに関する状態と、イベントと、アクションの情報とを含む状態遷移情報と
を含むことを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項３】
前記画面情報は、マークアップ言語によって記述されることを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項４】
前記画面情報は、ソフトウェアモデリング言語によって記述されることを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項５】
ソフトウェア開発支援装置におけるソフトウェア開発支援方法であって、
ＧＵＩの画面情報からソースコードを生成するソースコード生成工程と、
前記画面情報から前記ソースコードをテストするテストソースコードを生成するテストソースコード生成工程と、
前記画面情報から前記テストソースコードを実行する手順を定めたテストシナリオを生成するテストシナリオ生成工程と、
前記ソースコード及び前記テストソースコードから実行プログラム及び実行テストプログラムを生成する実行プログラム生成工程と、
前記テストシナリオに基づいて前記実行テストプログラムを実行し、前記実行プログラムをテストするテスト実行工程と
を有することを特徴とするソフトウェア開発支援方法。
【請求項６】
請求項５に記載のソフトウェア開発支援方法をコンピュータに実行させることを特徴とするプログラム。
【請求項７】
請求項６に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援装置及びソフトウェア開発支援方法に関する。
【背景技術】
【０００２】
近年のディジタル化の潮流の中で、種々のディジタル機器については、その普及が日々拡大している。更にディジタル機器に搭載されるＣＰＵの高性能化やディスプレイの高精細化が進んでいる。
【０００３】
このような背景のもと、ソフトウェアの設計は、キャラクタベースのユーザインターフェースから、より使いやすく、分かりやすいＧＵＩ（Ｇｒａｐｈｉｃ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）をベースとしたディジタル機器が主流となってきている。
【０００４】
一般に、ソフトウェアの開発はプログラムの作成工程からそのプログラムをテストするテスト工程を経て行う。ＧＵＩプログラム作成工程においては、ＧＵＩ部品のレイアウト情報及び状態遷移情報からソフトウェアのプログラムを生成する装置が存在する（例えば、特許文献１参照。）。
【０００５】
また、テスト工程においては、ソフトウェアのプログラムが設計仕様を満たしているかどうかを調べるためのテストが行われる。テストを行うためのテストシナリオを仕様書や操作ログから生成するテスト装置は存在する（例えば、特許文献２参照。）。
【０００６】
【特許文献１】特開平０８−２８６８９９号公報
【特許文献２】特開２０００−１１２７８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、プログラムの作成からテストプログラム作成及びテストシナリオ作成までを一貫して支援するための開発支援装置は存在しない。つまり、従来は一連のＧＵＩを伴うソフトウェア開発の中でプログラム作成工程、又はテストプログラム作成工程、又はテストシナリオ作成工程の何れかの工程の自動化を図るためのツールが提案されるに止まっていた。
【０００８】
このため、一連のＧＵＩを伴うソフトウェア開発工程において、プログラムのソースコードを自動生成するプログラムコード作成工程と、作成したプログラムのテストを行うテストコード作成工程とが別々であった。その結果、プログラム作成と、テストコード作成と、テストシナリオ作成とを同時に行うことが困難であり、非効率であった。
【０００９】
また、ＣＰＵの処理能力向上やディスプレイの高精細化により、ＧＵＩ表現能力の向上が急速に進むと同時に、ＧＵＩ操作とその操作によるＧＵＩ部品制御の複雑化が進んでいる。そのため、ＧＵＩを伴うソフトウェアの機能を検証するためのテストを作成する工数が膨大になったり、テスト項目の抜けが生じたりする問題があった。
【００１０】
本発明は前記の問題点に鑑みなされたもので、ＧＵＩを伴うソフトウェアのプログラム作成工程からテスト工程までを一貫して支援し、一連のＧＵＩソフトウェア開発を効率的に行うことを目的とする。
【課題を解決するための手段】
【００１１】
そこで、前記問題を解決するため、本発明は、ＧＵＩの画面情報からソースコードを生成するソースコード生成手段と、前記画面情報から前記ソースコードをテストするテストソースコードを生成するテストソースコード生成手段と、前記画面情報から前記テストソースコードを実行する手順を定めたテストシナリオを生成するテストシナリオ生成手段と、前記ソースコード及び前記テストソースコードから実行プログラム及び実行テストプログラムを生成する実行プログラム生成手段と、前記テストシナリオに基づいて前記実行テストプログラムを実行し、前記実行プログラムをテストするテスト実行手段とを有することを特徴とする。
【００１２】
また、前記問題を解決するため、本発明は、ソフトウェア開発支援方法、プログラム、及び記憶媒体としてもよい。
【発明の効果】
【００１３】
本発明によれば、ＧＵＩを伴うソフトウェアのプログラム作成工程からテスト工程までを一貫して支援し、一連のＧＵＩソフトウェア開発を効率的に行うことができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施例について図面に基づいて説明する。
【実施例１】
【００１５】
図１は、ソフトウェア開発支援装置のハードウェア構成の一例を示す図である。後述するソフトウェア開発支援装置の機能又は後述するフローチャートは、プログラムがハードディスク等の外部補助記憶装置１６より記憶装置（ＲＡＭ）１３にロードされ、中央処理装置（ＣＰＵ）１２によって実行されることにより実現される。また、プログラムと共に、後述するレイアウト情報、状態遷移情報、ソースコード、テストソースコード、テストシナリオ、実行プログラム、実行テストプログラム等も外部補助記憶装置１６に格納される。
【００１６】
入力装置１１は、操作者が必要な操作をするための装置であり、一般にはキーボードやポインティングデバイス（マウス）等を示している。表示装置１５は、画面等を表示する装置であり、一般にはＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）や液晶表示装置等を示している。
【００１７】
Ｉ／Ｏインタフェース装置１７は、ソフトウェア開発支援装置を、ネットワークやプリンタ等の外部装置に接続するインタフェース装置である。Ｉ／Ｏバス１４は、上述した各ユニット間を接続するバス（アドレスバス、又はデータバス、又は制御バス）である。
【００１８】
図２は、ソフトウェア開発支援装置の機能構成の一例を示す図である。図２において、（１０１）はＧＵＩ部品の位置や大きさの情報から成るレイアウト情報である。（１０２）はＧＵＩに関するイベントやアクションや状態の情報から成る状態遷移情報である。（１０３）は画面情報であり、レイアウト情報（１０１）と、状態遷移情報（１０２）とから成る。（１０４）はソースコード生成部であり、画面情報（１０３）よりプログラム言語で記述されたソースコード（１０７）を生成する。
【００１９】
（１０５）はテストコード生成部であり、画面情報（１０３）よりプログラム言語で記述されたテストコード（１０８）を生成する。（１０６）はテストシナリオ生成部であり、画面情報（１０３）よりテストコードを実行する手順を記述したテストシナリオ（１０９）を生成する。
【００２０】
（１１０）はプログラム生成部であり、ソースコード（１０７）及びテストソースコード（１０８）に対してコンパイル及びリンクを行い、実行プログラム（１１１）及び実行テストプログラム（１１２）を生成する。（１１３）はテスト実行部であり、実行プログラム（１１１）が仕様を満たすものであるか否かをテストするために、実行テストプログラム（１０８）をテストシナリオ（１０９）に基づいて実行する。
【００２１】
なお、上述した例では、実行プログラム（１１１）と、実行テストプログラム（１１２）とは異なる実行オブジェクトとして存在するが、同一の実行イメージに実行プログラム（１１１）及び実行テストプログラム（１１２）が存在しても良い。
【００２２】
また、上述した例では、ソフトウェア開発支援装置が実行プログラム生成部１１０を有する構成となっているが、他の開発支援装置によって実行プログラムが生成される構成であっても良い。
【００２３】
まず、ソフトウェア開発支援装置において、レイアウト情報（１０１）及び画面情報（１０２）から構成される画面情報（１０３）を解析し、ソースコード生成部（１０４）によってソースコード（１０７）を生成する処理について説明する。
【００２４】
図３、図４、図５は、ＧＵＩの部品の大きさと、位置情報とから構成されるレイアウト情報をマークアップ言語で記述したファイルの一例を示す図である。
【００２５】
図３において、（２０１）は、レイアウト情報である。また、（２０２）は、一画面の画面情報である。また、（２０３）は、ビットマップやＪＰＥＧ等のイメージ情報である。また、（２０４）は、画面（２０２）やイメージ（２０４）のｘ座標、ｙ座標等の位置情報である。また、（２０５）は、イメージ（２０４）の幅、高さ等の大きさ情報である。
【００２６】
前記情報以外に、レイアウト情報には、画複数画面や複数イメージの中から唯一の画面やイメージを特定するためのＩＤ情報やイメージファイルの位置を示すパス情報が記述されている。
【００２７】
図４において、（３０１）はレイアウト情報である。また、（３０２）は、一画面の画面情報である。また、（３０３）は、ビットマップやＪＰＥＧ等のイメージ情報である。また、（３０４）は、文字列情報である。また、（３０５）は、画面（３０２）やイメージ（３０３）、文字列（３０５）のｘ座標、ｙ座標等の位置情報である。また、（３０６）は、イメージ（３０３）及び文字列（３０４）の幅、高さ等の大きさ情報である。
【００２８】
前記情報以外に、レイアウト情報には、画複数画面や複数イメージ、複数文字列の中から唯一の画面やイメージ、文字列を特定ためのＩＤ情報やイメージファイルの位置を示すパス情報、文字列そのものが記述されている。
【００２９】
図５において、（４０１）はレイアウト情報である。また、（４０２）は、一画面の画面情報である。また、（４０３）は、矩形オブジェクト情報である。また、（４０４）は、円オブジェクト情報である。また、（４０５）は、画面（３０２）や矩形オブジェクト（４０４）、円オブジェクト（４０５）のｘ座標、ｙ座標等の位置情報である。また、（４０６）は、矩形オブジェクト（４０４）及び円オブジェクト（４０７）の幅、高さ又は半径の大きさ情報である。
【００３０】
前記情報以外に、レイアウト情報には、画複数画面や複数イメージの中から唯一の画面や、矩形オブジェクト、円オブジェクトを特定するためのＩＤ情報が記述されている。
【００３１】
図６、図７、図８は、ＧＵＩに関するイベント、アクション、状態から構成される状態遷移情報をマークアップ言語で記述したファイルの一例を示す図である。
【００３２】
図６において、（５０１）は、状態遷移情報である。（５０２）から（５０４）までは、状態であり、（５０５）から（５０９）までは、各々の状態において、イベントと、そのイベントの発生時に対応するアクションとである。
【００３３】
例えば、状態１（５０２）は、右ボタン押下イベント（５０５）発生時は「イメージ１表示」アクションを起こし、左ボタン押下イベント（５０６）発生時は「イメージ１非表示」アクションと、「状態２へ遷移」アクションとを起こすことを意味する。
【００３４】
また、状態２（５０３）は、右ボタン押下イベント（５０７）発生時は「イメージ１非表示」アクションを起こし、左ボタン押下イベント（５０８）発生時は「イメージ１表示」アクションと、「状態３へ遷移」アクションとを起こすことを意味する。
【００３５】
また、状態３（５０４）は、ＯＫボタン押下イベント（５０９）発生時は「画面２へ遷移」アクションを起こすことを意味する。
【００３６】
図７において、（６０１）は、状態遷移情報である。（６０２）から（６０４）までは、状態であり、（６０５）から（６０９）までは、各々の状態において、イベントと、そのイベントの発生時に対応するアクションとである。
【００３７】
例えば、状態１（６０２）では、右ボタン押下イベント（６０５）発生時は「イメージ２表示」アクションを起こし、左ボタン押下イベント（６０６）発生時は「イメージ２非表示」アクションと、「状態２へ遷移」アクションとを起こすことを意味する。
【００３８】
また、状態２（６０３）では、右ボタン押下イベント（６０７）発生時は「文字列１表示」アクションを起こし、左ボタン押下イベント（６０８）発生時は「文字列１非表示」アクションと、「状態３へ遷移」アクションとを起こすことを意味する。
【００３９】
また、状態３（６０４）では、ＯＫボタン押下イベント（６０９）発生時は「画面３へ遷移」アクションを起こすことを意味する。
【００４０】
図８において、（７０１）は、状態遷移情報である。（７０２）から（７０４）までは、状態であり、（７０５）から（７０９）までは、各々の状態において、イベントと、そのイベントの発生時に対応するアクションとである。
【００４１】
状態１（７０２）では、右ボタン押下イベント（７０５）発生時は「矩形オブジェクト１表示」アクションを起こし、左ボタン押下イベント（７０６）発生時は「矩形オブジェクト１非表示」アクションと、「状態２へ遷移」アクションとを起こすことを意味する。
【００４２】
状態２（７０３）では、右ボタン押下イベント（７０７）発生時は「円弧オブジェクト表示」アクションを起こし、左ボタン押下イベント（７０８）発生時は「円弧オブジェクト非表示」アクションと、「状態３へ遷移」アクションとを起こすことを意味する。
【００４３】
また、状態３（７０４）では、ＯＫボタン押下イベント（７０９）発生時は「画面１へ遷移」アクションを起こすことを意味する。
【００４４】
次に、レイアウト情報から、ソースコード生成部（１０４）によってソースコードを生成する方法について説明する。図９は、図３から図５までに示すレイアウト情報から、ソースコード生成部（１０４）によってＧＵＩ部品ごとの単位で構造化された情報として生成されたソースコードの一例を示す図である。
【００４５】
ＧＵＩ部品ごとの単位で構造化された情報は、例えばＣ言語の場合は構造体として生成され、Ｃ＋＋言語及びＪａｖａ（登録商標）の場合は、クラスとして生成される。図９では図３から図５までのレイアウト情報から、Ｃ言語の構造体としてソースコードが生成された例を示す。
【００４６】
図９において、（８０１）はイメージ１のレイアウト情報を示し、図３における（２０３）に対応したソースコードである。（８０２）はイメージ２のレイアウト情報を示し、図４における（３０３）に対応したソースコードである。（８０３）は文字列１のレイアウト情報を示し、図４における（３０４）に対応したソースコードである。
【００４７】
（８０４）は矩形オブジェクト１のレイアウト情報を示し、図５における（４０３）に対応したソースコードである。（８０５）は円弧オブジェクト１のレイアウト情報を示し、図５における（４０４）に対応したソースコードである。
【００４８】
（８０６）は画面１から画面３までの画面ごとに配置されたリソース情報を示し、それぞれ図３における（２０２）、図４における（３０２）、図５における（４０２）に対応したソースコードである。
【００４９】
（８０７）は画面１のレイアウト情報を示し、図３の（２０２）に対応したソースコードである。（８０８）は画面２のレイアウト情報を示し、図４の（３０２）に対応したソースコードである。（８０９）は画面３のレイアウト情報を示し、図５の（４０２）に対応したソースコードである。
【００５０】
（８１０）は画面１から画面３までの画面情報をまとめたソースコードである。（８０１）から（８０５）まではＧＵＩ部品のレイアウト情報であり、何れもＩＤと、リソースタイプ（イメージ、文字列、矩形、円弧）情報とを持つ。
【００５１】
その他、上記以外の情報として、イメージリソースは、位置情報、サイズ情報、イメージファイルへのパス情報を持つ。また、文字列リソースは、位置情報、サイズ情報、文字列情報を持つ。また、矩形オブジェクトは、位置情報、サイズ情報を持つ。また、円弧オブジェクトは位置情報、半径情報を持つ。なお、これらの情報は上述したものに限らず、設計によって自由に拡張可能である。
【００５２】
また、上述した例では、画面１から画面３までの全てのレイアウト情報を図９に示すように１ファイルに定義したが、１画面の情報を１ファイルに定義しても良く、画面数や設計指針によって変更可能である。
【００５３】
図１０から図１２までは、図６から図８までに示す状態遷移情報から、ソースコード生成部（１０４）によって、ＧＵＩ画面の状態遷移の情報として生成されたソースコードの一例を示す図である。
【００５４】
ＧＵＩ画面の状態遷移の情報は、キーイベントや、タイマーイベント、ハードウェアの割り込みをイベントフラグやメッセージとして送受信し、各イベント又はメッセージに対応した表示に関するオペレーション（関数又はメソッド）を実行することで取得される。
【００５５】
図１０から図１２まででは、キーイベントやタイマーイベント、ハードウェア割り込みをメッセージ送受信と、そのメッセージに対応した表示に関する関数とによって状態遷移の情報を表現する。
【００５６】
また、図１０から図１２まででは、メッセージはμＩＴＲＯＮのメールボックス機能を用いて実現しているが、ＶｘＷｏｒｋｓ等のその他のＯＳのメールボックス機能を用いても良いし、イベントフラグ等のその他のＯＳリソースを用いても良い。また、ＯＳリソースを用いず、メッセージ送受信機能を実現しても良い。
【００５７】
図１０では、図６で示す状態遷移情報からＣ言語のソースコードが生成された例を示す。図１０において（９０１）は、画面１の状態遷移情報を示し、図６における（５０１）に対応する。
【００５８】
（９０２）は、画面１の状態１の状態情報を示し、図６における（５０２）に対応する。（９０３）は、画面１の状態２の状態情報を示し、図６における（５０３）に対応する。（９０４）は、画面１の状態３の状態情報を示し、図６における（５０４）に対応する。
【００５９】
（９０５）は、画面１の状態１において、右ボタンが押下された場合、イメージ１を非表示にすることを示し、図６における（５０５）に対応する。（９０６）は、画面１の状態１において、左ボタンが押下された場合、イメージ１を表示し、状態２に遷移することを示し、図６における（５０６）に対応する。
【００６０】
（９０７）は、画面１の状態２において、右ボタンが押下された場合、イメージ１を表示することを示し、図６における（５０７）に対応する。（９０８）は、画面１の状態２において、左ボタンが押下された場合、イメージ１を非表示にし、状態３に遷移することを示し、図６における（５０８）に対応する。（９０９）は、画面１の状態３において、ＯＫボタンが押下された場合、画面２に遷移することを示し、図６における（５０９）に対応する。
【００６１】
図１１は、図７で示す状態遷移情報からＣ言語のソースコードが生成された例を示す図である。図１１において（１００１）は、画面２の状態遷移情報を示し、図７における（６０１）に対応する。（１００２）は、画面２の状態１の状態情報を示し、図７における（６０２）に対応する。（１００３）は、画面２の状態２の状態情報を示し、図７における（６０３）に対応する。
【００６２】
（１００４）は、画面２の状態３の状態情報を示し、図７における（６０４）に対応する。（１００５）は、画面２の状態１において、右ボタンが押下された場合、イメージ１を非表示にすることを示し、図７における（６０５）に対応する。（１００６）は、画面２の状態１において、左ボタンが押下された場合、イメージ１を表示し、状態２に遷移することを示し、図７における（６０６）に対応する。
【００６３】
（１００７）は、画面２の状態２において、右ボタンが押下された場合、イメージ１を表示することを示し、図７における（６０７）に対応する。（１００８）は、画面２の状態２において、左ボタンが押下された場合、イメージ１を非表示にし、状態３に遷移することを示し、図７における（６０８）に対応する。（１００９）は、画面２の状態３において、ＯＫボタンが押下された場合、面面３に遷移することを示し、図７における（６０９）に対応する。
【００６４】
図１２は、図８で示す状態遷移情報からＣ言語のソースコードが生成された例を示す図である。図１２において（１１０１）は、画面３の状態遷移情報を示し、図８における（７０１）に対応する。（１１０２）は、画面３の状態１の状態情報を示し、図８における（７０２）に対応する。（１１０３）は、画面３の状態２の状態情報を示し、図８における（７０３）に対応する。
【００６５】
（１１０４）は、画面３の状態３の状態情報を示し、図８における（７０４）に対応する。（１１０５）は、画面３の状態１において、右ボタンが押下された場合、イメージ１を非表示にすることを示し、図８における（７０５）に対応する。
【００６６】
（１１０６）は、画面３の状態１において、左ボタンが押下された場合、イメージ１を表示し、状態２に遷移することを示し、図８における（７０６）に対応する。（１１０７）は、画面３の状態２において、右ボタンが押下された場合、イメージ１を表示することを示し、図８における（７０７）に対応する。
【００６７】
（１１０８）は、画面３の状態２において、左ボタンが押下された場合、イメージ１を非表示にし、状態３に遷移することを示し、図８における（７０８）に対応する。（１１０９）は、画面３の状態３において、ＯＫボタンが押下された場合、面面３に遷移することを示し、図８における（７０９）に対応する。
【００６８】
次に、上記状態遷移情報（図６）からソースコード生成部（１０４）によってソースコード（図１０）を生成する際の、詳細なアルゴリズムについて説明する。図１３は、図６で示す状態遷移情報から図１０で示すソースコードを生成する処理の一例を示すフローチャートである。
【００６９】
ステップ１２０１は、本フローチャートのスタート地点である。ステップ１２０２では、状態遷移のメッセージ受信を行うメッセージループを出力する。ここでは、μＩＴＲＯＮのＯＳに用意された、メッセージ受信関数によって、メッセージを受信する関数と、状態遷移情報に応じて、状態、イベントタイプ、イベントターゲット、オペレーションを出力するための、条件分岐の骨子を出力する。
【００７０】
ステップ１２０３は、状態遷移情報に応じて出力処理を行うループのスタート地点である。このループは、状態遷移情報がなくなるまで繰り返され、状態遷移情報がなくなると終了する。
【００７１】
ステップ１２０４では、状態遷移情報を取得する。図６において、状態遷移情報は、一行がまとまった情報となっているため、一行ずつの状態遷移情報を取得する。ステップ１２０５では、ステップ１２０４において、状態遷移情報があるか否かを判断する。状態遷移情報がある場合は、ステップ１２０６へ、状態遷移情報がない場合は、ステップ１２１６へ遷移する。
【００７２】
ステップ１２０６では、ステップ１２０４において取得した状態遷移情報の種別を取得する。図６では、状態遷移情報の種別として、「状態」、「イベントタイプ」、「イベントターゲット」、「オペレーション」、の４種類がある。
【００７３】
ステップ１２０７では、ステップ１２０６において取得した状態遷移情報の種別が、「状態」であるか否かを判断する。状態遷移情報の種別が「状態」である場合は、ステップ１２０８へ、そうでない場合は、ステップ１２０９へ遷移する。
【００７４】
ステップ１２０８では、ステップ１２０４で取得した状態遷移情報に基づき、状態の条件分岐文を出力する。図６では、「状態１」、「状態２」、「状態３」の３状態があるので、最終的には３状態の条件分岐文が出力されることになる。
【００７５】
ステップ１２０９では、ステップ１２０６で取得した状態遷移情報の種別が、「イベントタイプ」であるか否かを判断する。状態遷移情報の種別が「イベントタイプ」である場合は、ステップ１２１０へ、そうでない場合は、ステップ１２１１へ遷移する。
【００７６】
ステップ１２１０では、ステップ１２０４で取得した状態遷移情報に基づき、イベントタイプの条件分岐文を出力する。図６では、イベントタイプとして、「ＰＵＳＨ（押下）」の１タイプがあるので、最終的には、前記１タイプの条件分岐文が出力されることになる。
【００７７】
ステップ１２１１では、ステップ１２０６で取得した状態遷移情報の種別が、「イベントターゲット」であるか否かを判断する。状態遷移情報の種別が「イベントターゲット」である場合は、ステップ１２１２へ、そうでない場合は、ステップ１２１３へ遷移する。
【００７８】
ステップ１２１２では、ステップ１２０４で取得した状態遷移情報に基づき、イベントターゲットの条件分岐文を出力する。図６では、イベントターゲットとして、「右ボタン」、「左ボタン」、「ＯＫボタン」の３ターゲットがあるので、最終的には、３種類の、イベントターゲットの条件分岐文が出力されることになる。
【００７９】
ステップ１２１３では、ステップ１２０６で取得した状態遷移情報の種別が「オペレーション」であるか否かを判断する。状態遷移情報の種別が「オペレーション」である場合は、ステップ１２１４へ、そうでない場合は、ステップ１２１５へ遷移する。
【００８０】
ステップ１２１４では、ステップ１２０４で取得した状態遷移情報に基づき、オペレーションを出力する。図６では、オペレーションとして、「表示」、「非表示」、「状態遷移」、「画面遷移」の４種類があるので、最終的には、前記４種類のオペレーションを出力する。
【００８１】
ステップ１２１５は、状態遷移情報に応じて出力処理を行うループの終点である。ステップ１２１６は、本フローチャートの終点である。
【００８２】
前記フローチャートの処理によって、図９及び図１０に示す状態遷移情報からソースコード生成部（１０４）によってソースコードを出力することが出来る。
【００８３】
次に、状態遷移情報から、テストソースコード生成部（１０５）によってソースコードを生成する方法について説明する。図１４は、図６に示す状態遷移情報から、テストソースコード生成部（１０５）によって生成された、全ての状態遷移を発生させるイベントタイプ及びイベントターゲットの組み合わせをメッセージ送信するテストソースコードの一例を示す図である。
【００８４】
図１４において、（１３０１）は、右ボタン押下メッセージ送信関数である。また、（１３０２）は、左ボタン押下メッセージ送信関数である。また、（１３０３）は、ＯＫボタン押下メッセージ送信関数である。上記テストソースコードを生成することによって、図８から図１０までに示す状態遷移ソースコードを網羅的にテストすることが出来る。
【００８５】
次に、上記状態遷移情報（図６）からテストソースコード生成部（１０５）によってテストソースコード（図１４）を生成する際の、詳細なアルゴリズムについて説明する。図１５は、図６に示す状態遷移情報からテストソースコード生成部（１０５）によってテストソースコード（図１４）を生成する処理の一例を示すフローチャートである。
【００８６】
ステップ１４０１は、本フローチャートのスタート地点である。ステップ１４０２は、状態遷移情報に応じて出力処理を行うループのスタート地点である。このループは、状態遷移情報がなくなるまで繰り返され、状態遷移情報がなくなると終了する。
【００８７】
ステップ１４０３では、状態遷移情報を取得する。図６において、状態遷移情報は、一行がまとまった情報となっているため、一行ずつの状態遷移情報を取得する。
【００８８】
ステップ１４０４では、ステップ１４０４において状態遷移情報があるか否かを判断する。状態遷移情報がある場合は、ステップ１４０５へ、状態遷移情報がない場合は、ステップ１４１１へ遷移する。
【００８９】
ステップ１４０５では、ステップ１４０４において取得した状態遷移情報の種別を取得する。図６では、状態遷移情報の種別として、「状態」、「イベントタイプ」、「イベントターゲット」、「オペレーション」、の４種類がある。
【００９０】
ステップ１４０６では、ステップ１４０５で取得した状態遷移情報の種別が、「イベントタイプ」であるか否かを判断する。状態遷移情報の種別が「イベントタイプ」である場合は、ステップ１４０７へ、そうでない場合は、ステップ１４０８へ遷移する。
【００９１】
ステップ１４０７では、ステップ１４０３で取得した状態遷移情報に基づき、イベントタイプを記憶装置１３に記憶する。
【００９２】
ステップ１４０８では、ステップ１４０５で取得した状態遷移情報の種別が、「イベントターゲット」であるか否かを判断する。状態遷移情報の種別が「イベントターゲット」である場合は、ステップ１１４０９へ、そうでない場合は、ステップ１４１０へ遷移する。
【００９３】
ステップ１４０９では、ステップ１４０３で取得した状態遷移情報に基づき、イベントターゲットを記憶装置１３に記憶する。
【００９４】
ステップ１４１０は、状態遷移情報に応じて出力処理を行うループの終点である。ステップ１４１１では、ステップ１４０７及びステップ１４０９において記憶された「イベントタイプ」及び「イベントターゲット」の全ての組み合わせのメッセージを送信する関数を出力する。ステップ１４１２は、本フローチャートの終点である。
【００９５】
本フローチャートでは、ステップ１４１１で、「イベントタイプ」及び「イベントタイプ」の全ての組み合わせのメッセージを送信する関数を出力した例を示した。しかしながら、プログラムサイズを抑える必要がある場合は、図６で取り得る組み合わせのメッセージ送信関数を出力しても良い。
【００９６】
前記フローチャートの処理によって、図７及び図８に示す状態遷移情報からソースコード生成部（１０４）によってソースコード（図１１及び図１２）を出力することが出来る。
【００９７】
次に、上記状態遷移情報（図６）からテストシナリオ生成部（１０６）によってテストシナリオを生成する方法について、説明する。図１６は、図６に示す状態遷移情報から、テストシナリオ生成部（１０５）によって生成された、テストソースコード（図１４）を呼び出す手順を記述したシナリオの一例を示す図である。
【００９８】
（１５０１）は、右ボタン、左ボタン、ＯＫボタン、の順でボタン押下された場合のテストシナリオである。図１４において、右ボタン押下メッセージ送信関数（１３０１）、左ボタン押下メッセージ送信関数（１３０２）、ＯＫボタン押下メッセージ送信関数（１３０３）の順に実行する。
【００９９】
（１５０２）は、左ボタン、右ボタン、ＯＫボタン、の順でボタン押下された場合のテストシナリオである。図１４において、左ボタン押下メッセージ送信関数（１３０２）、右ボタン押下メッセージ送信関数（１３０１）、ＯＫボタン押下メッセージ送信関数（１３０３）の順に実行する。
【０１００】
（１５０３）は、ＯＫボタン、右ボタン、左ボタン、の順でボタン押下された場合のテストシナリオである。図１４において、ＯＫボタン押下メッセージ送信関数（１３０３）、右ボタン押下メッセージ送信関数（１３０１）、左ボタン押下メッセージ送信関数（１３０２）の順に実行する。
【０１０１】
前記テストシナリオ生成において、網羅テストとして、全てのテスト関数を異なる順序で実行するテストシナリオを作成しても良いし、ストレステストとして、同一テスト関数を複数回実行するテストシナリオを作成しても良い。また、ランダムテストとして、複数のテスト関数をランダムに実行するテストシナリオを作成しても良いし、特定のフローチャートに基づいてテスト関数を実行するテストシナリオを作成しても良い。
【実施例２】
【０１０２】
実施例１において、レイアウト情報及び状態遷移情報はＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）で記述されていても良い。
【実施例３】
【０１０３】
実施例１において、レイアウト情報及び状態遷移情報はＣＳＶ形式で記述されていても良い。
【０１０４】
以上、上述した各実施例によれば、ＧＵＩを伴うソフトウェアのプログラム作成工程からテスト工程までを一貫して支援し、一連のＧＵＩソフトウェア開発を効率的に行うことが出来る。また、プログラムコード及びテストコード及びテストシナリオを同一の画面情報から生成し、プログラム仕様とテスト仕様の矛盾を防止し、更に網羅的なテストを実行することが出来る。
【０１０５】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１０６】
【図１】ソフトウェア開発支援装置のハードウェア構成の一例を示す図である。
【図２】ソフトウェア開発支援装置の機能構成の一例を示す図である。
【図３】ＧＵＩの部品の大きさと、位置情報とから構成されるレイアウト情報をマークアップ言語で記述したファイルの一例を示す図（その１）である。
【図４】ＧＵＩの部品の大きさと、位置情報とから構成されるレイアウト情報をマークアップ言語で記述したファイルの一例を示す図（その２）である。
【図５】ＧＵＩの部品の大きさと、位置情報とから構成されるレイアウト情報をマークアップ言語で記述したファイルの一例を示す図（その３）である。
【図６】ＧＵＩに関するイベント、アクション、状態から構成される状態遷移情報をマークアップ言語で記述したファイルの一例を示す図（その１）である。
【図７】ＧＵＩに関するイベント、アクション、状態から構成される状態遷移情報をマークアップ言語で記述したファイルの一例を示す図（その２）である。
【図８】ＧＵＩに関するイベント、アクション、状態から構成される状態遷移情報をマークアップ言語で記述したファイルの一例を示す図（その３）である。
【図９】図３から図５までに示すレイアウト情報から、ソースコード生成部（１０４）によってＧＵＩ部品ごとの単位で構造化された情報として生成されたソースコードの一例を示す図である。
【図１０】図６から図８までに示す状態遷移情報から、ソースコード生成部（１０４）によって、ＧＵＩ画面の状態遷移の情報として生成されたソースコードの一例を示す図（その１）である。
【図１１】図６から図８までに示す状態遷移情報から、ソースコード生成部（１０４）によって、ＧＵＩ画面の状態遷移の情報として生成されたソースコードの一例を示す図（その２）である。
【図１２】図６から図８までに示す状態遷移情報から、ソースコード生成部（１０４）によって、ＧＵＩ画面の状態遷移の情報として生成されたソースコードの一例を示す図（その３）である。
【図１３】図６で示す状態遷移情報から図１０で示すソースコードを生成する処理の一例を示すフローチャートである。
【図１４】図６に示す状態遷移情報から、テストソースコード生成部（１０５）によって生成された、全ての状態遷移を発生させるイベントタイプ及びイベントターゲットの組み合わせをメッセージ送信するテストソースコードの一例を示す図である。
【図１５】図６に示す状態遷移情報からテストソースコード生成部（１０５）によってテストソースコード（図１４）を生成する処理の一例を示すフローチャートである。
【図１６】図６に示す状態遷移情報から、テストシナリオ生成部（１０５）によって生成された、テストソースコード（図１４）を呼び出す手順を記述したシナリオの一例を示す図である。
【符号の説明】
【０１０７】
１１  入力装置
１２  中央処理装置
１３  記憶装置
１５  表示装置
１６  外部補助記憶装置
１７  ＩＯ  Ｉ／Ｆ装置
【図１】
2007213249.tif 000003
【図２】
2007213249.tif 000004
【図３】
2007213249.tif 000005
【図４】
2007213249.tif 000006
【図５】
2007213249.tif 000007
【図６】
2007213249.tif 000008
【図７】
2007213249.tif 000009
【図８】
2007213249.tif 000010
【図９】
2007213249.tif 000011
【図１０】
2007213249.tif 000012
【図１１】
2007213249.tif 000013
【図１２】
2007213249.tif 000014
【図１３】
2007213249.tif 000015
【図１４】
2007213249.tif 000016
【図１５】
2007213249.tif 000017
【図１６】
2007213249.tif 000018