(57)【特許請求の範囲】
【請求項１】
画面を表示するためのモックアッププログラムと、前記画面から呼び出されるコンポー
ネントのコンポーネント種別と、前記コンポーネント種別のコンポーネントに設定するた
めの属性データとを含むモックアップデータを記憶する手段と、
複数のコンポーネント種別のコンポーネントの仕様を含むコンポーネントデータを記憶
する手段と、
前記モックアップデータ及び前記コンポーネントデータに基づいて、前記画面から呼び
出されるコンポーネントの設計情報を生成する手段と、
実行アーキテクチャを指定する情報を記憶する手段と、
前記実行アーキテクチャを指定する情報に基づいて、指定された実行アーキテクチャに
対応するプログラム実行基盤を設定する手段と、
プログラム実行基盤別のプログラムコード片を記憶する手段と、
前記コンポーネントの設計情報に基づいて、前記設定されたプログラム実行基盤で動作
するプログラムコード片を選択し、選択されたプログラムコード片に前記属性データを設
定してプログラムコードを生成する手段と、を備えるプログラム自動生成装置。
【請求項２】
前記実行アーキテクチャを指定する情報が存在しないときは、前記プログラム実行基盤
は、予め定められたモックアップ用実行アーキテクチャに基づいて定められる、請求項１
記載のプログラム自動生成装置。
【請求項３】
前記コンポーネントデータには、各コンポーネント種別のコンポーネントに設定する属
性値のデフォルト値が含まれていて、
前記モックアップデータに前記属性データが含まれていないときは、前記プログラムコ
ードを生成する手段は、前記選択されたプログラムコード片に前記デフォルト値を設定す
る、請求項１または２に記載のプログラム自動生成装置。
【請求項４】
前記コンポーネントデータに含まれる複数のコンポーネント種別のいずれでも実現でき
ない機能に関する記述を前記モックアップデータから抽出する手段をさらに備え、
前記プログラムコードを生成する手段は、前記画面からのコンポーネント呼び出しが実
行されたときに前記抽出された記述が出力されるように、前記抽出された記述をプログラ
ムコード内に含める、請求項１から３のいずれかに記載のプログラム自動生成装置。
【請求項５】
前記モックアップデータを生成するためのモックアップ開発環境と、
前記プログラムコードを生成する手段によって生成されたプログラムコード及び前記モ
ックアッププログラムを動作させるモックアップレビュー環境と、をさらに備える請求項
２に記載のプログラム自動生成装置。
【請求項６】
複数のコンポーネント種別のコンポーネントの仕様を含むコンポーネントデータを記憶
する手段と、プログラム実行基盤別のプログラムコード片を記憶する手段と、を有するコ
ンピュータが行う方法であって、
画面を表示するためのモックアッププログラムと、前記画面から呼び出されるコンポー
ネントのコンポーネント種別と、前記コンポーネント種別のコンポーネントに設定するた
めの属性データとを含むモックアップデータを記憶するステップと、
実行アーキテクチャを指定する情報を記憶するステップと、
前記モックアップデータ及び前記コンポーネントデータに基づいて、前記画面から呼び
出されるコンポーネントの設計情報を生成するステップと、
前記実行アーキテクチャを指定する情報に基づいて、指定された実行アーキテクチャに
対応するプログラム実行基盤を設定するステップと、
前記コンポーネントの設計情報に基づいて、前記設定されたプログラム実行基盤で動作
するプログラムコード片を選択し、選択されたプログラムコード片に前記属性データを設
定してプログラムコードを生成するステップと、を行うプログラム自動生成方法。
【請求項７】
複数のコンポーネント種別のコンポーネントの仕様を含むコンポーネントデータを記憶
する手段と、プログラム実行基盤別のプログラムコード片を記憶する手段と、を有するコ
ンピュータがプログラムを自動生成する方法であって、
画面を表示するためのモックアッププログラムと、前記画面から呼び出されるコンポー
ネントのコンポーネント種別と、前記コンポーネント種別のコンポーネントに設定するた
めの属性データとを含むモックアップデータを記憶するステップと、
実行アーキテクチャを指定する情報を記憶するステップと、
前記モックアップデータ及び前記コンポーネントデータに基づいて、前記画面から呼び
出されるコンポーネントの設計情報を生成するステップと、
前記実行アーキテクチャを指定する情報に基づいて、指定された実行アーキテクチャに
対応するプログラム実行基盤を設定するステップと、
前記コンポーネントの設計情報に基づいて、前記設定されたプログラム実行基盤で動作
するプログラムコード片を選択し、選択されたプログラムコード片に前記属性データを設
定してプログラムコードを生成するステップと、を行うプログラム自動生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動でプログラムを生成する技術に係り、特に、ソフトウェア及びシステムの画面プロトタイピングにおけるモックアップ開発及びモックアップの本番開発への移行を支援する技術に関する。
【背景技術】
【０００２】
企業情報システムの開発においては、開発担当者が顧客からの要求をいかに効率的かつ確実に獲得するかが重要である。そして、開発された企業情報システムを評価するに際して、顧客が要求した業務仕様に抜けや漏れが無いこともまた重要である。さらに、これに加えて、開発された企業情報システムが提供するＧＵＩ画面及びその他のユーザインターフェース機能については、その操作感によって業務遂行の効率が大きく変わってくるため、顧客にとっての大きな関心事である。
【０００３】
また、近年では、計算機の能力も十分に向上し、ＲＩＡ（Ｒｉｃｈ  Ｉｎｔｅｒｎｅｔ  Ａｐｐｌｉｃａｔｉｏｎｓ）と呼ばれる表現の自由度が高いフレームワークも浸透してきたことから、顧客の画面に対する期待はますます大きくなっている。こうしたＲＩＡなどにより開発される画面は表現力が高いため、文書や紙面などでは顧客と開発者間での画面の振る舞いに対する要求の共有が難しくなってきている。
【０００４】
そこで、開発の途中で、ユーザインターフェース画面のプロトタイプとして、コンピュータ上で実際に動作するモックアップ（画面のプロトタイププログラム）を顧客に対して提示することは、顧客と開発者の意識に齟齬が生じることを未然に防ぐには有効である。
【０００５】
ところで、プロトタイピングにおいてモックアップは、あくまで試作品である。また、一般的なシステム開発においては、顧客の要求獲得にかけられる時間も限られていることから、顧客へのデモンストレーションと、そのデモンストレーションで得られた指摘事項に対する修正を短い期間で繰り返す必要がある。
【０００６】
モックアップを効率的に開発するために、内部的なデータ処理を行わず、システムのアニメーションだけを再現するトイプログラム部品などを用い、あたかも実際に機能するようなプロトタイプを簡便に開発する技術が提案されている。また、例えば特許文献１では、画面の設計情報から、データ等画面以外の動的情報を抽出し、プログラムの自動生成をすることで画面開発の効率向上を図っている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３０２５７１
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、かかる従来の方法においては次のような問題がある。すなわち、特許文献１においては、モックアップの開発終了後に本番開発に移行する際、モックアップ（顧客と合意のとれた画面プログラム）を廃棄し、改めて本番用の画面を、再度工数をかけて開発する必要があり、工数の無駄が生じる。また、その際に開発者が、モックアップから仕様を抽出しなければならないので、この時点で、改めて要求仕様の抜け、漏れが生じるおそれがある。
【０００９】
一方、モックアップ開発と本番開発では目的が異なるため、それぞれが実行されるアーキテクチャも異なる。そのため、一般には、モックアップのプログラムをそのまま本番のアーキテクチャで動作させることはできない。
【００１０】
そこで、本発明の目的は、プロトタイプ用に開発した画面モックアップを、アーキテクチャが異なる本番開発にそのまま流用することである。
【課題を解決するための手段】
【００１１】
本発明の一つの実施態様に従うプログラム自動生成装置は、画面を表示するためのモックアッププログラムと、前記画面から呼び出されるコンポーネントのコンポーネント種別と、前記コンポーネント種別のコンポーネントに設定するための属性データとを含むモックアップデータを記憶する手段と、複数のコンポーネント種別のコンポーネントの仕様を含むコンポーネントデータを記憶する手段と、前記モックアップデータ及び前記コンポーネントデータに基づいて、前記画面から呼び出されるコンポーネントの設計情報を生成する手段と、実行アーキテクチャを指定する情報を記憶する手段と、前記実行アーキテクチャを指定する情報に基づいて、指定された実行アーキテクチャに対応するプログラム実行基盤を設定する手段と、プログラム実行基盤別のプログラムコード片を記憶する手段と、前記コンポーネントの設計情報に基づいて、前記設定されたプログラム実行基盤で動作するプログラムコード片を選択し、選択されたプログラムコード片に前記属性データを設定してプログラムコードを生成する手段と、を備える。
【００１２】
好適な実施形態では、前記実行アーキテクチャを指定する情報が存在しないときは、前記プログラム実行基盤は、予め定められたモックアップ用実行アーキテクチャに基づいて定められるものであってもよい。
【００１３】
好適な実施形態では、前記コンポーネントデータには、各コンポーネント種別のコンポーネントに設定する属性値のデフォルト値が含まれていて、前記モックアップデータに前記属性データが含まれていないときは、前記プログラムコードを生成する手段は、前記選択されたプログラムコード片に前記デフォルト値を設定するようにしてもよい。
【００１４】
好適な実施形態では、前記コンポーネントデータに含まれる複数のコンポーネント種別のいずれでも実現できない機能に関する記述を前記モックアップデータから抽出する手段をさらに備えてもよい。そして、前記プログラムコードを生成する手段は、前記抽出された記述を、前記画面からのコンポーネント呼び出しが実行されたときに出力されるプログラムコード内に含めるようにしてもよい。
【００１５】
好適な実施形態では、前記モックアップデータを生成するためのモックアップ開発環境と、前記プログラムコードを生成する手段によって生成されたプログラムコード及び前記モックアッププログラムを動作させるモックアップレビュー環境と、をさらに備えてもよい。
【発明の効果】
【００１６】
本発明によれば、プロトタイプ用に開発し、顧客と合意した画面モックアップを、アーキテクチャが異なる本番開発にそのまま流用することができる。その結果、顧客の要求仕様の抜け、漏れを防止するとともに、開発工数の削減が可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係るモックアップ開発支援システム１００の全体構成図である。
【図２】モックアップ開発支援システム１００の機能構成図である。
【図３】画面モックアッププログラム１７２０の説明図である。
【図４】コンポーネント設定ファイル１７３０の説明図である。
【図５】実行アーキテクチャ定義情報１７６０の説明図である。
【図６】モックアップを実行するためのアーキテクチャであるモックアップ実行アーキテクチャＡ１である。
【図７】本番システムを実行するためのアーキテクチャである本番実行アーキテクチャＡ２である。
【図８】本システムにおいて使用可能なコンポーネントの一覧を示すコンポーネント一覧１６１０の一例である。
【図９】各コンポーネントの定義情報を含むコンポーネント設定属性定義１６２０の一例である。
【図１０】アーキテクチャ毎コンポーネントコード片群１６３０の一例である。
【図１１】インターフェース生成用コード片１６４０の一例である。
【図１２】モックアップ設計情報解析部１１０の詳細な機能構成図である。
【図１３】データ構造体抽出部１１２によって抽出されたデータ構造体１５１０の一例である。
【図１４】トリガーイベント抽出部１１３によって抽出されたトリガーイベント１５１７の一例である。
【図１５】コンポーネント設定情報抽出部１１４が生成した構成コンポーネント設定情報１５２０の一例である。
【図１６】デフォルト値が補完された構成コンポーネント設定情報１５２０の一例である。
【図１７】実行アーキテクチャ及びコード片格納場所が追加された構成コンポーネント設定情報１５２０の一例である。
【図１８】実行対象アーキテクチャ設定解析部１１７によって生成される実行アーキテクチャ設定情報１５４０の一例である。
【図１９】コンポーネント設定生成プログラム１２０ＰがＣＰＵ１０１で実行されたときに実現されるコンポーネント設定生成部１２０の機能構成図である。
【図２０】プログラムコード生成プログラム１４０ＰがＣＰＵ１０１で実行されたときに実現されるプログラムコード生成部１４０の機能構成図である。
【図２１】本システム１００を用いたモックアップ開発全体の手順を示すフローチャートである。
【図２２】プロトタイピング実行環境用にプログラムコードを生成する場合の入出力ファイルの一例を示す。
【図２３】本番開発用にプログラムコードを生成する場合の出力ファイルの一例を示す。
【図２４】プログラムコード生成処理の詳細な手順を示すフローチャートである。
【図２５Ａ】モックアップに含まれるコンポーネントの設定情報抽出処理の詳細な手順を示すフローチャートである。
【図２５Ｂ】モックアップに含まれるコンポーネントの設定情報抽出処理の詳細な手順を示すフローチャートである。
【図２６】実行アーキテクチャに応じたコンポーネントの設定を生成する処理手順を示すフローチャートである。
【図２７】本発明にかかる第一の実施形態における図である。
【発明を実施するための形態】
【００１８】
以下、本発明の一実施形態に係るモックアップ開発支援システムについて、図面を参照して説明する。本実施形態に係るモックアップ開発支援システムは、プロトタイピング時に開発した画面モックアッププログラムから本番システム用のプログラムコードを自動生成するプログラム自動生成装置であり、画面モックアップから本番システムへ完全移行することを可能とする。それにより、モックアップを用いて顧客と合意した仕様と実際に開発した画面プログラムと食い違いが発生することを防止し、また画面プログラムの再開発の工数を削減するという目的を、例えば以下に説明するような構成ないし機能を有することにより実現した。
（１）異なる実行アーキテクチャにおける機能等価なコンポーネントを予め用意する。
（２）開発者の入力した画面モックアップ情報に対応するコンポーネントを実行アーキテクチャにより自動選択および設定を自動補完する。
（３）予め用意されたコンポーネント外の機能について追記された情報を記録する。
（４）実行アーキテクチャに応じたプログラムコードを自動生成する。
【００１９】
図１は、本実施形態に係るモックアップ開発支援システム１００の全体構成図である。本システム１００は、同図に示すように、ネットワーク１９０を介してモックアップ開発環境１９１及びモックアップレビュー環境１９２と接続されている。モックアップ開発環境１９１は、開発者が画面モックアップの作成もしくは修正を行う開発環境である。モックアップレビュー環境１９２は、モックアップを動作させるための環境であり、顧客レビューなどに用いられる動作環境である。モックアップ開発環境１９１及びモックアップレビュー環境１９２は、モックアップ開発支援システム１００に包含されていても良い。
【００２０】
モックアップ開発支援システム１００は、同図に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、メモリ１０２、外部インターフェース１０５を有し、これらがバス１０４を介して相互に接続されている。
【００２１】
外部インターフェース１０５には、外部記憶装置１０３、入力装置１０６、出力装置１０７、及び通信装置１０８が接続されている。
【００２２】
外部記憶装置１０３は、ＣＰＵ１０１において実行される処理プログラムとして、モックアップ設計情報解析プログラム１１０Ｐ、コンポーネント設定生成プログラム１２０Ｐ、コンポーネント実行アーキテクチャ決定プログラム１３０Ｐ、プログラムコード生成プログラム１４０Ｐを保持している。また、外部記憶装置１０３は、入力モックアップ設計情報記憶部１５０と、アーキテクチャ毎コンポーネント一覧記憶部１６０と、入力画面モックアップ記憶部１７０とを有する。
【００２３】
図２は、モックアップ開発支援システム１００の機能構成図を示す。モックアップ開発支援システム１００は、モックアップ設計情報解析プログラム１１０Ｐ、コンポーネント設定生成プログラム１２０Ｐ、コンポーネント実行アーキテクチャ決定プログラム１３０Ｐ、プログラムコード生成プログラム１４０Ｐが、それぞれＣＰＵ１０１で実行されて生成された、モックアップ設計情報解析部１１０、コンポーネント設定生成部１２０、コンポーネント実行アーキテクチャ決定部１３０、及びプログラムコード生成部１４０を有する。
【００２４】
入力画面モックアップ記憶部１７０には、入力画面モックアップデータが記憶される。本実施形態では、入力画面モックアップデータには、画面モックアッププログラム１７２０（図３参照）と、コンポーネント設定ファイル１７３０（図４参照）と、実行アーキテクチャ定義情報１７６０（図５参照）が含まれる。これらの入力画面モックアップデータは、入力装置１０６乃至通信装置１０８を介して入力され、モックアップ設計情報解析部１１０によって入力画面モックアップ記憶部１７０へ書き込まれる。
【００２５】
図３は、画面モックアッププログラム１７２０の説明図である。画面モックアッププログラム１７２０は、ソフトウェアのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を中心に記述したソースプログラムであり、本発明のモックアップ設計情報解析部１１０により解析が可能なように命名規則や特定の属性を定義する等、一定のルールに従って記述されている。図３の例は、Ｆｌｅｘ（Ｒ）による画面モックアッププログラムである。同図Ａは、画面モックアッププログラム１７２０のスクリプトである。同図Ｂは、画面モックアッププログラム１７２０を実行した結果表示されるモックアップ画面１７１０の一例を示す。文字列入力欄１７１１、１７１２及び１７１３は、それぞれエレメント１７２１、１７２２及び１７２３により定義され、動的データを扱う事を示すためにｉｄ属性にそれぞれデータ名（Ｓｈｉｍｅｉ、Ｂｕｋａｍｅｉ、ＳｈａｉｎＢａｎｇｏｕ）が入力されている。ボタン１７１４は、エレメント１７２４により定義され、クリック時に何らかの動作を発生させる事を示すため、クリック属性にトリガー名（ＳｅａｒｃｈＥｖｅｎｔ）が入力されている。
【００２６】
図４は、コンポーネント設定ファイル１７３０の説明図である。コンポーネント設定ファイル１７３０は、画面モックアッププログラム１７２０に示すモックアップ画面から呼び出されるコンポーネントに関する設定を記述するファイルである。例えば、コンポーネント設定ファイル１７３０は、コンポーネントの種別１７３１と、コンポーネントに設定するための属性データとして、コンポーネント名１７３２、検索キー入力画面１７３３、検索条件１７３４、トリガーイベント１７３５、及び検索結果出力画面１７３６と、このコンポーネントでは実現できない、顧客から要望された事柄に関する顧客要求１７３７とを有する。同図の例は、図３に示す画面モックアッププログラム１７２０のトリガーイベントであるＳｅａｒｃｈＥｖｅｎｔによって動作するコンポーネントの設定が記述されている。
【００２７】
図５は、実行アーキテクチャ定義情報１７６０の説明図である。実行アーキテクチャ定義情報１７６０は、本番システムでの実行アーキテクチャを指定する情報である。ここで、アーキテクチャには物理的及び論理的なアーキテクチャを含み、例えば、物理的なコンピュータマシンの構成をどのようにするか（例えば、スタンドアロン、またはクライアント−サーバ構成など）、各マシンでの実行基盤及びその実行基盤上で動作するコンポーネントの構成などを含む。
【００２８】
実行アーキテクチャ定義情報１７６０は、同図に示すように、アーキテクチャ実行基盤設定１７６１、コンポーネント配置概要設定１７６３、及びコンポーネント配置詳細設定１７６４を含む。
【００２９】
アーキテクチャ実行基盤設定１７６１は、ソフトウェアアーキテクチャにおけるプログラムの実行基盤について定義する。同図の例では、クライアント開発言語１７６２としてＦｌｅｘ（Ｒ）、サーバ開発言語としてＪａｖａ（登録商標）（Ｒ）、データベースとしてＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）製品であるＨｉＲＤＢ（Ｒ）が設定されている。なお、クライアント開発言語１７６２はモックアップをそのまま本番開発へ移行するという本発明の目的から、画面モックアップの開発言語と同じ言語となるため、開発者による定義は不要としても良い。
【００３０】
コンポーネント配置概要設定１７６３は、コンポーネントのグループ単位で、アーキテクチャ上のどこにプログラムを配置するか定義する。同図の例では、画面グループはクライアント上に、ロジックグループ及びデータグループについてはサーバ上に配置するよう設定している。
【００３１】
コンポーネント配置詳細設定１７６４は、アーキテクチャ実行基盤設定１７６１及びコンポーネント配置概要設定１７６３の定義についての例外を詳細に記述するものである。コンポーネント配置詳細設定１７６４では、コンポーネント種別１７６５、コンポーネントの配置１７６６及びコンポーネントの実行基盤１７６７が設定される。同図の例では、データグループの一時データ保管コンポーネントについては、クライアント上配置し、実行基盤はＦｌｅｘ（Ｒ）となるように設定している。
【００３２】
ここで、図６には、モックアップを実行するためのアーキテクチャであるモックアップ実行アーキテクチャＡ１を示し、図７には、本番システムを実行するためのアーキテクチャである本番実行アーキテクチャＡ２を示す。図６のモックアップ実行アーキテクチャＡ１は、スタンドアロン構成であり、基本ＯＳ、Ｗｅｂブラウザ及びＡｄｏｂｅ  Ｆｌａｓｈ  Ｐｌａｙｅｒ（Ｒ）からなる実行基盤Ａ１０において、画面グループ、ロジックグループ及びデータグループのコンポーネントプログラムＡ１２が動作するアーキテクチャである。図７の本番実行アーキテクチャＡ２は、図５の実行アーキテクチャ定義情報１７６０に対応する。すなわち、同図の本番実行アーキテクチャＡ２は、クライアント−サーバ構成であって、クライアントでは、基本ＯＳ、Ｗｅｂブラウザ及びＡｄｏｂｅ  Ｆｌａｓｈ  Ｐｌａｙｅｒ（Ｒ）からなる実行基盤Ａ２０において、画面グループ、及びデータ一時保管のコンポーネントプログラムＡ２１が動作し、サーバでは、Ｊａｖａ（Ｒ）仮想マシン及びＨｉＲＤＢ（Ｒ）からなる実行基盤Ａ２２において、ロジックグループ、及びデータグループのコンポーネントプログラムＡ２３が動作する。
【００３３】
図２に戻ると、入力モックアップ設計情報記憶部１５０には、モックアップ設計情報解析部１１０が入力画面モックアップ記憶部１７０に記憶されている入力画面モックアップデータを解析した結果が格納される。入力モックアップ設計情報記憶部１５０は、画面モックアップ抽出情報記憶部１５１と、モックアップ構成コンポーネント情報記憶部１５２と、ユーザ追記情報記憶部１５３と、アーキテクチャ情報記憶部１５４とを有する。入力モックアップ設計情報記憶部１５０に格納されるデータの詳細は、モックアップ設計情報解析部１１０の処理とともに後述する。
【００３４】
アーキテクチャ毎コンポーネント一覧記憶部１６０には、アーキテクチャ別に予め定義されている、複数のコンポーネント種別のコンポーネントの仕様を含むコンポーネントデータが記憶される。例えば、アーキテクチャ毎コンポーネント一覧記憶部１６０には、コンポーネント一覧１６１０と、コンポーネント設定属性定義１６２０と、アーキテクチャ毎コンポーネントコード片群１６３０と、インターフェース生成用コード片１６４０とが記憶される。
【００３５】
図８は、本システムにおいて使用可能なコンポーネントの一覧を示すコンポーネント一覧１６１０の一例を示す。コンポーネント一覧１６１０は、例えば、同図に示すように、アーキテクチャグループ１６１１と、項番１６１２と、コンポーネント種別１６１３とをデータ項目として含む。
【００３６】
アーキテクチャグループ１６１１は、各コンポーネントが属するアーキテクチャのグループであり、本実施形態では「画面」、「ロジック」及び「データ」がある。これが、上述のコンポーネントプログラムのグループと対応する。
【００３７】
項番１６１２は、コンポーネント種別１６１３に係るコンポーネントの識別情報である。
【００３８】
図９は、各コンポーネントの定義情報を含むコンポーネント設定属性定義１６２０の一例を示す。コンポーネント設定属性定義１６２０は、コンポーネントの仕様を示す。例えば、コンポーネント設定属性定義１６２０は、コンポーネント項番１６２１と、設定属性名１６２２と、繰り返し数１６２３と、データ型１６２４と、デフォルト値１６２５と、必須か否かを示す必須フラグ１６２６とをデータ項目として有する。
【００３９】
設定属性名１６２２は、各コンポーネントが有する属性項目を示す。同図中の「遷移元画面」のように、他の項目と階層的な関係を有するものもある。
【００４０】
繰り返し数１６２３は、設定属性名１６２２に示す属性項目のうち、上位の階層の項目に対する繰り返しの個数を示す。例えば、同図中の「トリガーイベント名」は「遷移元画面名」に対しｎ個定義することができる。
【００４１】
デフォルト値１６２５は、ユーザによって値が設定されていないときに設定されるデフォルト値である。デフォルト値１６２５が「ユニークＩＤ」と設定されていれば、その項目は本システムが任意の一意ＩＤを割り当てることを意味する。また、デフォルト値１６２５が、等号に設定属性名が連結されている場合（例えば「＝遷移元画面名」）は、その設定属性名（遷移元画面名）と同値を代入するということを意味する。さらには、デフォルト値１６２５がダブルクォーテーションによりクォートされている文字列（例えば“ＡＮＤ”）であれば、クォートされた値そのものを代入することを意味する。
【００４２】
必須フラグ１６２６は、設定属性名１６２２が必須項目であるか否かを示す。
【００４３】
図１０は、アーキテクチャ毎コンポーネントコード片群１６３０の一例を示す。アーキテクチャ毎コンポーネントコード片群１６３０は、モックアップ実行アーキテクチャ用コンポーネント及び本番実行アーキテクチャ用コンポーネントの双方を含む。アーキテクチャ毎コンポーネントコード片群１６３０は、プログラム実行基盤別のプログラムコード片を含む。アーキテクチャ毎コンポーネントコード片群１６３０は、各コンポーネントの実行時の環境を示す情報を記憶する。例えば、アーキテクチャ毎コンポーネントコード片群１６３０は、コンポーネント項番１６３１と、実行時配置場所１６３２と、実行基盤１６３３と、プログラムコード片格納場所１６３４とをデータ項目として有する。すなわち、アーキテクチャ毎コンポーネントコード片群１６３０により、コンポーネント項番１６３１のコンポーネントが、実行時配置場所１６３２で示すサーバまたはクライアントの実行基盤１６３３に示す実行基盤上で動作するコンポーネントコード片が、プログラムコード片格納場所１６３４に格納されていることを示す。
【００４４】
図１１は、インターフェース生成用コード片１６４０の一例を示す。インターフェース生成用コード片１６４０には、コンポーネント間のインターフェースに必要なコード片について定義する。例えば、図１１の例では、クライアントとサーバの実行基盤が、それぞれクライアント側インターフェース基盤１６４１とサーバ側インターフェース基盤１６４２であるときに、インターフェースコード片保存場所１６４３と設定ファイルテンプレート保存場所１６４４に示す場所にそれぞれインターフェースコード片と設定ファイルのテンプレートが保存されていることを示している。
【００４５】
次に、図１２は、モックアップ設計情報解析部１１０の詳細な機能構成図である。すなわち、モックアップ設計情報解析部１１０は、同図に示すように、画面モックアップ解析部１１１、データ構造体抽出部１１２、トリガーイベント抽出部１１３、コンポーネント設定情報抽出部１１４、ユーザ追記情報抽出部１１６、及び実行対象アーキテクチャ設定解析部１１７を有する。
【００４６】
画面モックアップ解析部１１１は、入力画面モックアップ記憶部１７０から画面モックアッププログラム１７２０を読み出し、プログラムファイルの拡張子やファイルのヘッダなどの特徴情報から画面モックアップの開発言語を特定する。
【００４７】
画面モックアップ解析部１１１は、アーキテクチャ毎コンポーネントコード片群１６３０（図１０参照）を参照しながら、入力された画面モックアップの開発言語が本システムで対応可能か否かを判定する。例えば、画面モックアップ解析部１１１は、ここで特定された画面モックアッププログラム１７２０のプログラミング言語が画面用のコンポーネント（コンポーネント項番１６３１が「Ｖ」から始まり、実行時配置場所１６３２が「クライアント」）の実行基盤１６３３に存在するか否かにより、本システムで対応可能な開発言語であるか否かを判定する。  例えば、図３の画面モックアッププログラム１７２０の開発言語は「Ｆｌｅｘ（Ｒ）」である。従って、アーキテクチャ毎コンポーネントコード片群１６３０に、コンポーネント項番１６３１が「Ｖ」から始まり、実行時配置場所１６３２が「クライアント」で、実行基盤１６３３が「Ｆｌｅｘ（Ｒ）」のコンポーネントが存在するので、画面モックアップ解析部１１１は、画面モックアッププログラム１７２０が実行可能であると判定する。
【００４８】
なお、本実施形態では、アーキテクチャ毎コンポーネントコード片群１６３０を用いて実行可能性の判定を行ったが、実行基盤に関する別の情報を予め用意しておいて、それと対比してもよい。
【００４９】
画面モックアップ解析部１１１は、プログラムを解析する際に、次に説明するデータ構造体抽出部１１２及びトリガーイベント抽出部１１３を利用する。画面モックアップ解析部１１１の解析結果を示す情報は、画面モックアップ抽出情報記憶部１５１に保存される。
【００５０】
データ構造体抽出部１１２は、画面モックアッププログラム１７２０からデータ構造体に関する記述を抽出する。ここで、データ構造体には、例えば、モックアップ画面内に設けられたデータの入力項目及び出力項目を含む。データ構造体抽出部１１２は、例えば、構造体を示す、プログラミング言語の特定の属性を検出し、構造体を定義するエレメントを抽出する。例えば、図３の画面モックアッププログラム１７２０では、まず、プログラムファイル名である”ＳｈａｉｎＳｅａｒｃｈ”を最上位のデータ構造体として抽出する。さらに、ファイル中に定義されているエレメントのうち、”ｉｄ”属性に名称が記述されているエレメント１７２１、１７２２、１７２３をＳｈａｉｎＳｅａｒｃｈ構造体の中に含まれている動的データとして抽出する。データ構造体抽出部１１２は、画面モックアッププログラム１７２０に、特定のルールに従って定義されたデータ名称が与えられた動的データを抽出する。
【００５１】
図１３は、データ構造体抽出部１１２によって抽出されたデータ構造体１５１０の一例を示す。データ構造体１５１０は、画面モックアッププログラム名１５１１と、データ構造体構成１５１２と、階層の深さを示すレベル１５１３と、データ型１５１４と、繰り返し数１５１５とをデータ項目として有する。
【００５２】
図１２に戻ると、トリガーイベント抽出部１１３は、画面モックアッププログラム１７２０からトリガーイベントに関する記述を抽出する。トリガーイベントとは、例えば、モックアップ画面内でユーザからのイベント入力を受け付けるボタンなどである。トリガーイベント抽出部１１３は、例えば、画面モックアッププログラム１７２０のフレームワークが提供するイベント発生定義を検索する。例えば、Ｆｌｅｘ（Ｒ）であれば、”ｃｌｉｃｋ”や”ｋｅｙＤｏｗｎ”等のイベントである。図３の画面モックアッププログラム１７２０であれば、トリガーイベント抽出部１１３は、エレメント１７２４をトリガーイベントとして抽出する。
【００５３】
図１４は、トリガーイベント抽出部１１３によって抽出されたトリガーイベント１５１７の一例を示す。トリガーイベント１５１７は、画面モックアッププログラム名１５１８と、トリガーイベント名１５１９とをデータ項目として有する。
【００５４】
図１２に戻ると、コンポーネント設定情報抽出部１１４は、アーキテクチャ毎コンポーネント一覧記憶部１６０及び入力画面モックアップ記憶部１７０を参照して、画面モックアッププログラム１７２０から呼び出されるコンポーネントの設計情報（構成コンポーネント設定情報）を生成する。
【００５５】
図１５は、コンポーネント設定情報抽出部１１４が生成したコンポーネントの設計情報である構成コンポーネント設定情報１５２０の一例を示す。構成コンポーネント設定情報１５２０は、コンポーネント名１５２１と、コンポーネント種別１５２２と、設定属性名１５２３と、属性値１５２４とをデータ項目として有する。
【００５６】
例えば、コンポーネント設定情報抽出部１１４は、コンポーネント一覧１６１０（図８参照）を参照して、コンポーネント設定ファイル１７３０のコンポーネント種別１７３１に割り当てられている項番１６１２を特定する。次に、コンポーネント設定情報抽出部１１４は、コンポーネント設定属性定義１６２０（図９参照）から、ここで特定された項番１６１２（１６２１）のコンポーネントが有する設定属性名１６２２を取得する。ここで取得した情報を、構成コンポーネント設定情報１５２０のそれぞれ対応する項目に格納する。さらに、コンポーネント設定情報抽出部１１４は、コンポーネント設定ファイル１７３０で定義されているコンポーネントの属性データ１７３２〜１７３６を取得して、構成コンポーネント設定情報１５２０のそれぞれ対応する設定属性名１５２３の属性値１５２４に保存する。ここで、コンポーネント設定ファイル１７３０に対応する属性データが設定されていないときは、属性値１５２４はブランクにしておく。コンポーネント設定情報抽出部１１４は、顧客要求１７３７に記述されている情報を抽出して、ユーザ追記情報記憶部１５３に保存する。
【００５７】
また、コンポーネント設定情報抽出部１１４及びユーザ追記情報抽出部１１６は、アーキテクチャ毎コンポーネント一覧記憶部１６０に記憶されている複数のコンポーネント種別のいずれでも実現できない機能に関する記述を、入力画面モックアップデータから抽出する。
【００５８】
例えば、コンポーネント設定情報抽出部１１４は、コンポーネント設定ファイル１７３０のコンポーネント種別１７３１がコンポーネント一覧１６１０（図８参照）に登録されていない場合、及び「画面その他」などの「その他」に対応する場合は、コンポーネント種別１５２２をそれぞれの対応するアーキテクチャグループ１６１１の「その他」に対応する項番（Ｖ−０，Ｌ−０，Ｄ−０）に設定する。コンポーネント種別１５２２が「その他」に分類されたコンポーネントは、設定属性名１５２３及び属性値１５２４はブランクである。従って、このコンポーネントは、本システムが自動でプログラムコードを生成する対象外である。コンポーネント種別１５２２が「その他」に分類されたコンポーネントの属性１７３２〜１７３６及び顧客要求１７３７に設定されているすべての情報がユーザ追記情報記憶部１５３に保存される。
【００５９】
ユーザ追記情報抽出部１１６は、入力画面モックアップ記憶部１７０の画面モックアッププログラム１７２０及び実行アーキテクチャ定義情報１７６０から、ユーザがコンポーネントで予め用意されている範囲を超えて独自に定義したプログラムコード及びコメントを抽出し、ユーザ追記情報記憶部１５３へ書き込む。ここで言う、独自に定義したプログラムコードとは、本システムが生成する部品では対応しきれなかった細かな表現などを実現するために、コンポーネントに対して追記したプログラムコードである。ユーザ追記情報抽出部１１６は、コンポーネントが定める拡張個所や、生成コードとの差分検出によって抽出するようにしてもよい。ユーザ追記情報は、例えば、コンポーネントの振る舞いを直接定義するものではなく、本番開発へ向けてユーザ要望などをテキストで記述したものなどでもよい。
【００６０】
ユーザ追記情報記憶部１５３に保存された情報は、様々な方法で出力可能としてもよい。例えば、後述するプログラムコード生成部１４０が、実際には何も動作しないスケルトンコードか、もしくはコンポーネント呼び出し時にポップアップ等により、後に何らかの実装が行われることの表示を実行するプログラムコード内にコメントとして含めてもよい。例えば、図２７は、コンポーネント呼び出し時に表示されるポップアップに、ユーザ追記情報記憶部１５３に保存された情報を出力する例を示す。また、ユーザ追記情報記憶部１５３に保存されている情報が、本番開発に向けて懸案管理表または仕様書として出力されるようにしてもよい。これにより、顧客要求に対する対応の漏れを低減することができる。
【００６１】
図１２に戻ると、実行対象アーキテクチャ設定解析部１１７は、実行アーキテクチャ定義情報１７６０に基づいて、実行アーキテクチャ定義情報１７６０で指定された実行アーキテクチャに対応するプログラム実行基盤を示す実行アーキテクチャ設定情報１５４０を生成する。実行アーキテクチャ設定情報１５４０は、アーキテクチャ情報記憶部１５４に保存される。つまり、実行対象アーキテクチャ設定解析部１１７は、本番実行アーキテクチャについて、実行アーキテクチャ設定情報１５４０を生成する。
【００６２】
図１８は、実行アーキテクチャ設定情報１５４０の一例を示す。実行アーキテクチャ設定情報１５４０は、同図に示すように、アーキテクチャ定義項目１５４１と、属性値１５４２とを有する。同図Ａが実行アーキテクチャ定義情報１７６０から生成されたものである。
【００６３】
図１９は、コンポーネント設定生成プログラム１２０ＰがＣＰＵ１０１で実行されたときに実現されるコンポーネント設定生成部１２０の機能構成図である。すなわち、コンポーネント設定生成部１２０は、対象アーキテクチャ補完部１２１、及びコンポーネント設定補完部１２３を有する。
【００６４】
対象アーキテクチャ補完部１２１は、実行アーキテクチャ定義情報１７６０が存在しないときに、画面モックアッププログラム１７２０を参照して、すべてのコンポーネントをクライアント上で実行するモックアップの実行アーキテクチャを想定した実行アーキテクチャ設定情報１５４０を生成する。すなわち、開発者が実行アーキテクチャ定義情報１７６０を指定しない場合、本システムでは、モックアップ用のプロトタイピング向けアーキテクチャでプログラムコードが生成される。実行アーキテクチャ定義情報１７６０が存在しないときに生成される実行アーキテクチャ設定情報１５４０の例を図１８Ｂに示す。このときのプログラミング言語は、画面モックアッププログラム１７２０と同じとしてもよい。
【００６５】
コンポーネント設定補完部１２３は、入力画面モックアップデータの解析結果に対する補完処理を行う。例えば、コンポーネント設定補完部１２３は、まず、画面モックアップ解析部１１１〜コンポーネント設定情報抽出部１１４の抽出結果を検証する。例えば、コンポーネント設定補完部１２３は、データ構造体１５１０、トリガーイベント１５１７、及び構成コンポーネント設定情報１５２０と、コンポーネント設定属性定義１６２０とを参照して、以下の点を検証してもよい。
（１）データ構造体１５１０のデータ型１５１４及び繰り返し数１５１５が適切か
（２）構成コンポーネント設定情報１５２０において、必須項目であるのに値が定義されていない項目の有無など、定義としての正しさ
（３）コンポーネント設定属性定義１６２０と、既に抽出されているデータ構造体１５１０、及びトリガーイベント１５１７と矛盾が無いか
【００６６】
例えば、コンポーネント設定補完部１２３は、この検証の結果に基づいて、必要な箇所に対して所定の補完処理を行う。例えば、コンポーネント設定補完部１２３は、属性値１５２４が未設定の設定属性名１５２３が必須項目であるか否かを、コンポーネント設定属性定義１６２０の必須フラグ１６２６により判定する。そして、必須フラグ１６２６で必須項目と設定されているときは、対応するデフォルト値１６２５を属性値１５２４に設定する。
【００６７】
コンポーネント設定補完部１２３は、上記のデフォルト値１６２５を属性値１５２４に設定する処理を行った後、改めて、構成コンポーネント設定情報１５２０の内、コンポーネント設定属性定義１６２０で必須フラグ１６２６がセットされている必須項目のすべてに値が設定されているか否かを判定する。いずれかの必須項目に値が設定されていないときは、そのコンポーネントのコンポーネント種別１５２２を「その他」に変更する。必須項目が未設定の場合、このコンポーネントの実行可能なプログラムコードを生成できないからである。
【００６８】
例えば、図１５の構成コンポーネント設定情報１５２０の「トリガーイベント」の「入力画面名（２）」の属性値１５２４が未設定である。そこで、コンポーネント設定補完部１２３が、コンポーネント設定属性定義１６２０に定義されている「＝入力画面名（１）」というルールによりデフォルト値を補完すると、図１６に示す通りとなる。
【００６９】
また、コンポーネント設定補完部１２３は、コンポーネント設定ファイル１７３０の検索キー入力画面１７３３や検索条件１７３４のキー項目名（ＳｈａｉｎＳｅａｒｃｈ、Ｓｈｉｍｅｉ、Ｂｕｋａｍｅｉ、ＳｈａｉｎＢａｎｇｏｕ）が、データ構造体１５１０のデータ構造体構成１５１２に存在しているか否かによって整合状態を確認してもよい。あるいは、コンポーネント設定補完部１２３は、コンポーネント設定ファイル１７３０のトリガーイベント名１７３５（ＳｅａｒｃｈＥｖｅｎｔ）についても、トリガーイベント１５１７のトリガーイベント名１５１９と一致するか否かによって整合状態を確認してもよい。
【００７０】
改めて図２を参照すると、コンポーネント実行アーキテクチャ決定部１３０は、コンポーネントの設計情報に基づいて、設定されたプログラム実行基盤で動作するプログラムコード片を選択する。プログラムコード生成部１４０は、選択されたプログラムコード片に属性データを設定してプログラムコードを生成する。
【００７１】
コンポーネント実行アーキテクチャ決定部１３０は、実行アーキテクチャ設定情報１５４０に定義されているアーキテクチャを実現するために必要なプログラムコード片を、構成コンポーネント設定情報１５２０及びアーキテクチャ毎コンポーネントコード片群１６３０を参照して特定する。コンポーネント実行アーキテクチャ決定部１３０は、ここで特定した情報を構成コンポーネント設定情報１５２０に追加する。コンポーネント実行アーキテクチャ決定部１３０が行う処理の具体例を以下に説明する。
【００７２】
まず、コンポーネント実行アーキテクチャ決定部１３０は、構成コンポーネント設定情報１５２０（図１５，図１６参照）から、対象のコンポーネントを特定する。例えば、ここでは「ＳｈａｉｎＳｅａｒｃｈＡｃｔｉｏｎ」を対象とする。コンポーネント実行アーキテクチャ決定部１３０は、対象のコンポーネント「ＳｈａｉｎＳｅａｒｃｈＡｃｔｉｏｎ」のコンポーネント種別１５２２「Ｌ−１」をキーにして、コンポーネント一覧１６１０（図８参照）から、対応するアーキテクチャグループ１６１１「ロジックグループ」を特定する。次に、コンポーネント実行アーキテクチャ決定部１３０は、実行アーキテクチャ設定情報１５４０（図１８Ａ参照）の「コンポーネント配置概要設定」より、「ロジックグループ」が配置されるマシンが「サーバ」であることを特定する。さらに、コンポーネント実行アーキテクチャ決定部１３０は、サーバ開発言語が「Ｊａｖａ（Ｒ）」であることを特定する。
【００７３】
次に、コンポーネント実行アーキテクチャ決定部１３０が、上記の処理で取得したコンポーネント項番「Ｌ−１」、アーキテクチャ定義情報「サーバ」、サーバ開発言語「Ｊａｖａ（Ｒ）」の３つの情報をキーにして、アーキテクチャ毎コンポーネントコード片群１６３０（図１０参照）のコンポーネント項番１６３１、実行時配置場所１６３２、及び実行基盤１６３３を検索し、該当するレコード１６３５より、対応するプログラムコード片格納場所１６３４「／ｌｏｇｉｃｐａｒｔｓ／ｓｖ／ｊａｖａ／ｌ−１」を取得する。
【００７４】
コンポーネント実行アーキテクチャ決定部１３０は、以上の処理により特定された、実行時配置場所及び実行基盤からなる実行アーキテクチャ１５２５及びコード片格納場所１５２６を、構成コンポーネント設定情報１５２０に項目として追加する。実行アーキテクチャ１５２５ならびにコード片格納場所１５２６を補完したコンポーネント設定情報の例を図１７に示す。
【００７５】
図２０は、プログラムコード生成プログラム１４０ＰがＣＰＵ１０１で実行されたときに実現されるプログラムコード生成部１４０の機能構成図である。すなわち、プログラムコード生成部１４０は、コンポーネント実行コード生成部１４１、及びコンポーネント間インターフェースコード生成・変換部１４２を有する。
【００７６】
コンポーネント実行コード生成部１４１は、構成コンポーネント設定情報１５２０を参照し、コード片格納場所１５２６からプログラムコード片を取得し、各コンポーネントに対応する実行プログラムコードを生成する。例えば、コンポーネント実行コード生成部１４１は、構成コンポーネント設定情報１５２０のコード片格納場所１５２６に定める場所から各設定属性名１５２３のプログラムコード片を取得し、属性値１５２４の値をそのコード片に埋め込み、変換しながら当該コンポーネント用の実行プログラムコードを生成する。属性値１５２４には、デフォルト値１６２５も含まれている。つまり、コンポーネント実行コード生成部１４１は、デフォルト値１６２５をプログラムコード片に埋め込んで実行プログラムコードを生成する。
【００７７】
コンポーネント間インターフェースコード生成・変換部１４２は、構成コンポーネント設定情報１５２０及びインターフェース生成用コード片１６４０を参照して、コンポーネント間のインターフェースプログラムコード、及びインターフェース用設定ファイルを生成する。例えば、コンポーネント間インターフェースコード生成・変換部１４２は、実行アーキテクチャ１５２５を参照し、サーバの実行基盤及びクライアントの実行基盤の組み合わせを特定し、インターフェース生成用コード片１６４０でこれに対応するインターフェースコード片保存場所１６４３及び設定ファイルテンプレート保存場所１６４４を特定し、ここからインターフェースコード片及び設定ファイルテンプレートを取得する。コンポーネント間インターフェースコード生成・変換部１４２は、さらに、ここで取得したテンプレートファイルに、サーバの実行基盤で動作するコンポーネント及びクライアントの実行基盤で動作するコンポーネントにより定まる呼び出しメソッド名及びデータ型などを設定して、インターフェース用設定ファイルを生成する。また、コンポーネント間インターフェースコード生成・変換部１４２は、画面モックアッププログラム１７２０を読み込み、情報抽出のために定めた特別な記法となっている部分について、実行基盤でコンパイル可能とするためにテキスト変換を行う。
【００７８】
以上説明したような構成を有するモックアップ開発支援システム１００が処理を行うときの処理手順について説明する。
【００７９】
まず、図２１は、本システム１００を用いたモックアップ開発全体の手順を示すフローチャートである。また、図２２は、モックアップ実行アーキテクチャ用にプログラムコードを生成する場合の入出力ファイルの一例を示す。図２３は、本番実行アーキテクチャ用にプログラムコードを生成する場合の出力ファイルの一例を示す。図２１、図２２及び図２３を用いて、主に本システム１００に対する入力と出力について説明する。
【００８０】
ステップ１０では、プロトタイピングを目的として、開発者がモックアップ開発環境１９１によって画面モックアップの作成もしくは修正を行う。ここでは、図２２に入力情報１７０１として示す、画面モックアッププログラム１７２０（「ＳｈａｉｎＳｅａｒｃｈ．ｍｘｍｌ」及び「ＳｈａｉｎＬｉｓｔ．ｍｘｍｌ」）と、コンポーネント設定ファイル１７３０（「ＳｈａｉｎＳｅａｒｃｈＡｃｔｉｏｎ」及び「ＭｏｖｅＳｅａｒｃｈＴｏＬｉｓｔ」）とを生成する。
【００８１】
なお、「ＳｈａｉｎＬｉｓｔ．ｍｘｍｌ」は、社員の一覧のイメージを示す画面モックアッププログラムであり、「ＭｏｖｅＳｅａｒｃｈＴｏＬｉｓｔ」は、ＳｈａｉｎＳｅａｒｃｈ画面からＳｈａｉｎＬｉｓｔ画面への画面遷移を実現するための、コンポーネント種別が「画面遷移」のコンポーネント設定ファイルである。
【００８２】
ステップ２０では、上記の入力情報１７０１に基づいて、モックアップ実行アーキテクチャ向けのプログラムコードを生成する。ここで、本番実行アーキテクチャ向けではなく、モックアップ実行アーキテクチャ向けのプログラムコードが生成されるのは、入力情報１７０１に実行アーキテクチャ定義情報１７６０が含まれていないからである。ステップ２０で生成されるプロトタイピング実行アーキテクチャ向けのプログラムコードが、図２２において出力結果１８０１として示されている各プログラムファイル１８１１−１８３３である。ステップ２０の詳細な処理については後述する。
【００８３】
なお、「ＳｈａｉｎＳｅａｒｃｈ．ｍｘｍｌ」１８１１及び「ＳｈａｉｎＬｉｓｔ．ｍｘｍｌ」１８１２は、それぞれ画面モックアッププログラム１７２０の「ＳｈａｉｎＳｅａｒｃｈ．ｍｘｍｌ」及び「ＳｈａｉｎＬｉｓｔ．ｍｘｍｌ」を変換した実行形式のプログラムである。「ＭｏｖｅＳｅａｒｃｈＴｏＬｉｓｔ．ａｓ」１８１３は、コンポーネント設定ファイル１７５０の「ＭｏｖｅＳｅａｒｃｈＴｏＬｉｓｔ．ａｓ」に基づいて生成された画面遷移プログラムファイルである。「ＭｏｖｅＳｅａｒｃｈＴｏＬｉｓｔ．ａｓ」１８２１は、コンポーネント設定ファイル１７３０の「ＭｏｖｅＳｅａｒｃｈＴｏＬｉｓｔ．ａｓ」に基づいて生成された検索プログラムファイルである。「ＳｈａｉｎＳｅａｒｃｈＴｍｐ．ａｓ」１８３１、「ＳｈａｉｎＬｉｓｔＴｍｐ．ａｓ」１８３２及び「ＳｈａｉｎＤａｔａ．ａｓ」１８３３は、画面モックアッププログラム１７２０に記述された動的データの情報から生成されたデータ構造体を保管するプログラムファイルである。
【００８４】
ステップ３０では、ステップ２０において生成されたプログラムを、開発者がモックアップ開発環境１９１にてビルドし、動作を確認する。
【００８５】
ステップ４０では、ステップ３０の動作確認結果に基づき、顧客レビューを実施するか否かを判断する。もし、開発者が顧客レビューを実施すると判断すればステップ５０へ進み、レビューを実施しないと判断すれば、ステップ１０へ戻る。
【００８６】
ステップ５０では、モックアップレビュー環境１９２を用いて、ステップＳ２０で生成されたプログラムを動作させて顧客レビューを実施する。このとき、顧客から得られたコメントを画面モックアッププログラムやコンポーネント設定ファイル、あるいは懸案管理表などに記録し、後で閲覧可能としてもよい。
【００８７】
ステップ６０では、ステップ５０の顧客レビュー結果に基づき、本番開発へ移行するか否かを判断する。もし本番開発へ移行すると判断すればステップ７０へ進み、本番開発へ移行しないと判断すればステップ１０へ戻る。
【００８８】
ステップ７０では、開発者が本番開発用の本番実行アーキテクチャ定義情報１７６０（図５参照）を定義する。
【００８９】
ステップ８０では、本番実行アーキテクチャ向けのプログラムコードを生成する。ステップ８０の詳細な処理手順はステップ２０と同じである。ここで生成される本番実行アーキテクチャ向けのプログラムコードが、図２３において出力結果１８０２として示されているプログラムファイル１８１１−１８３３である。
【００９０】
なお、出力結果１８０２には、ステップ２０で生成された各プログラム１８１２、１８１３、１８３１、１８３２に加えて、以下のプログラム等が含まれる。すなわち、出力結果１８０２には、画面レイアウト１７１０及びコンポーネント設定ファイル１７３０をそれぞれ変換した実行形式のプログラム「ＳｈａｉｎＳｅａｒｃｈ．ｍｘｍｌ」１８４１及び「ＳｈａｉｎＳｅａｒｃｈＡｃｔｉｏｎ．ｊａｖａ」１８４３と、画面モックアッププログラム１７２０から抽出されたデータ構造体定義をサーバに存在するデータベースに定義するためのプログラムファイル「ＳｈａｉｎＤａｔａ.ｄｍｌ」１８４４と、異なるアーキテクチャ間でメソッドの呼び出しなどを実行するためのインターフェースファイル「ＡｃｔｉｏｎＭａｐｐｉｎｇ．ａｓ」１８４２と、「ＲｅｍｏｔｉｎｇＣｏｎｆｉｇ．ｘｍｌ」１８４５とが含まれる。
【００９１】
本システム１００を用いることにより、モックアッププログラムから本番開発へ容易に移行することが可能となる。
【００９２】
次に、ステップ２０の処理を、図２４から図２６のフローチャートに基づいて詳細に説明する。
【００９３】
図２４は、プログラムコード生成処理の詳細な手順を示すフローチャートである。
【００９４】
まず、モックアップ設計情報解析部１１０が、開発者から入力された画面モックアッププログラム１７２０、コンポーネント設定ファイル１７３０及び実行アーキテクチャ定義情報画面１７６０を受理し、入力画面モックアップ記憶部１７０に格納する（ステップ２００）。
【００９５】
モックアップ設計情報解析部１１０は、ステップ２００で受理した情報から、モックアップを構成しているコンポーネントを設定するための入力モックアップ情報を抽出する（ステップ２１０）。ステップ２１０の詳細な処理（図２５Ａ及び図２５Ｂに示す）は後述する。
【００９６】
次に、コンポーネント設定生成部１２０は、プロトタイピング向けや本番開発向けといった実行アーキテクチャに応じて、コンポーネントの設定を生成する（ステップ２２０）。ステップ２２０の詳細な処理（図２６に示す）は後述する。
【００９７】
コンポーネント実行コード生成部１４１は、実行プログラムコードを生成する（ステップ２３０）。例えば、コンポーネント実行コード生成部１４１が、モックアップ構成コンポーネント情報記憶部１５２の構成コンポーネント設定情報１５２０を読み込む。そして、構成コンポーネント設定情報１５２０に記録されている、コード片格納場所１５２６から、生成用のプログラム実行アーキテクチャ毎コンポーネントコード片を取得する。さらに、属性値１５２４を取得したコード片に埋め込み、変換しながら、当該コンポーネント用の実行プログラムコードを生成する。
【００９８】
コンポーネント間インターフェースコード生成・変換部１４２は、コンポーネント間のインターフェース用コードを生成する（ステップ２４０）。例えば、コンポーネント間インターフェースコード生成・変換部１４２が、ステップ２３０で生成した各コンポーネントの実行プログラムコードについて、互いに連携可能なようにインターフェース生成用コード片１６４０を参照しながらインターフェース用コードを生成する。また、入力画面モックアップ記憶部１７０から画面モックアッププログラム１７２０を読み込み、情報抽出のために定めた特別な記法となっている部分について、実行基盤でコンパイル可能とするにテキスト変換を行う。
【００９９】
次に、図２５Ａ及び図２５Ｂは、モックアップに含まれるコンポーネントの設定情報抽出処理の詳細な手順を示すフローチャートである。
【０１００】
モックアップ設計情報解析部１１０は、入力画面モックアップ記憶部１７０に実行アーキテクチャ定義情報１７６０が存在するか否かを判定する（ステップ２１０１）。実行アーキテクチャ定義情報１７６０が存在しないときは（ステップ２１０１：Ｎｏ）、ステップ２１０２及びステップ２１０３をスキップする。
【０１０１】
実行アーキテクチャ定義情報１７６０が存在するときは（ステップ２１０１：Ｙｅｓ）、実行対象アーキテクチャ設定解析部１１７が実行アーキテクチャ定義情報１７６０を参照して、実行アーキテクチャ定義情報１７６０から実行アーキテクチャ設定情報１５４０（図１８（ａ）参照）を抽出する（ステップ２１０２）。ここで抽出した実行アーキテクチャ設定情報１５４０は、アーキテクチャ情報記憶部１５４へ保存される。
【０１０２】
実行対象アーキテクチャ設定解析部１１７は、インターフェース生成用コード片１６４０（図１１参照）を参照し、実行アーキテクチャ定義情報１７６０が本システムで対応可能か否かを判定する（ステップ２１０３）。例えば、実行対象アーキテクチャ設定解析部１１７は、入力された実行アーキテクチャ定義のアーキテクチャ実行基盤設定１７６１やコンポーネント配置詳細設定１８６４で記述されたクライアントとサーバの定義の組みが、クライアント側インターフェース基盤１６４１とサーバ側インターフェース基盤１６４２に存在するか否かによって判定する。
【０１０３】
ステップ２１０２の判定により、本システムで対応不能である場合は（ステップ２１０３：Ｎｏ）、本システム１００は、所定のエラーメッセージ名などを出力して、処理を終了する（ステップ２１１１）。
【０１０４】
本システムで対応可能である場合は（ステップ２１０３：Ｙｅｓ）、画面モックアップ解析部１１１が画面モックアッププログラム１７２０で使用されている言語を特定する（ステップ２１０４）。例えば、画面モックアップ解析部１１１は、画面モックアッププログラム１７２０のプログラムファイルの拡張子やファイルのヘッダなどの特徴情報から画面モックアップの開発言語を特定する。ここで特定された開発言語を示す情報が、画面モックアップ抽出情報記憶部１５１へ保存される。
【０１０５】
画面モックアップ解析部１１１は、アーキテクチャ毎コンポーネントコード片群１６３０（図１０参照）を参照して、ここで特定された開発言語が、本システムで対応している言語であるか否かを判定する（ステップ２１０５）。例えば、実行基盤１６３３に、ステップ２１０４で特定された画面モックアップの開発言語が存在するか否かにより、本システムで対応可能か否かを判定してもよい。ここで、画面モックアップの開発言語が本システムに対応していないときは（ステップ２１０５：Ｎｏ）、所定のエラーメッセージ名などを出力して、処理を終了する（ステップ２１１１）。
【０１０６】
次に、入力画面モックアップ記憶部１７０に保存されているすべての画面モックアッププログラム１７２０に対して、以下に説明するステップ２１０７から２１１０を繰り返し実行する（ステップ２１０６）。
【０１０７】
画面モックアップ解析部１１１は、入力画面モックアップ記憶部１７０から処理対象の画面モックアッププログラム１７２０を読み込む（ステップ２１０７）。
【０１０８】
データ構造体抽出部１１２が、処理対象の画面モックアッププログラム１７２０からデータ構造体１５１０を抽出し、画面モックアップ抽出情報記憶部１５１へ保存する（ステップ２１０８）。
【０１０９】
トリガーイベント抽出部１１３が、処理対象の画面レイアウト１７１０からトリガーイベント１５１７を抽出し、画面モックアップ抽出情報記憶部１５１へ保存する（ステップ２１０９）。
【０１１０】
ユーザ追記情報抽出部１１６は、処理対象の画面レイアウト１７１０から開発者が独自に定義したプログラムコードを抽出し、ユーザ追記情報記憶部１５３へ格納する（ステップ２１１０）。
【０１１１】
すべての画面モックアッププログラム１７２０に対して上記の処理が終了すると、コンポーネント設定生成部１２０が、入力画面モックアップ記憶部１７０内のすべてのコンポーネント設定ファイル１７３０に対して、以下に説明するステップ２１１３から２１２０を繰り返し実行する（ステップ２１１１）。これにより、コンポーネント設定ファイル１７３０から、画面モックアップを構成する構成コンポーネント設定情報１５２０を抽出する。
【０１１２】
コンポーネント設定情報抽出部１１４は、入力画面モックアップ記憶部１７０より処理対象となるコンポーネント設定ファイル１７３０を読み込む（ステップ２１１２）。
【０１１３】
そして、コンポーネント設定情報抽出部１１４は、処理対象のコンポーネント設定ファイル１７３０がコンポーネントの設定に必要な属性を満足しているか否かを判定する（ステップ２１１３）。
【０１１４】
コンポーネントの設定に必要な属性が不足している場合（ステップ２１１３：Ｎｏ）、本システム１００は、不足していた設定情報を知らせるための所定の情報を出力して、開発者に通知する（ステップ２１１４）。
【０１１５】
コンポーネントの設定に必要な属性を満足している場合（ステップ２１１３：Ｙｅｓ）、コンポーネント設定情報抽出部１１４が、コンポーネント設定属性定義１６２０を参照して、処理対象のコンポーネント設定ファイル１７３０から構成コンポーネント設定情報１５２０（図１５参照）を抽出する（ステップ２１１５）。
【０１１６】
コンポーネント設定情報抽出部１１４は、ここで抽出された構成コンポーネント設定情報１５２０が、不整合がなく有効なものか否かを検証する（ステップ２１１６）。
【０１１７】
コンポーネント設定情報抽出部１１４は、構成コンポーネント設定情報１５２０で不整合があれば（ステップ２１１７：Ｎｏ）、検出された不整合を知らせるための所定の情報を出力して、開発者に通知する（ステップ２１１８）。
【０１１８】
コンポーネント設定情報抽出部１１４は、ステップ２１１５で抽出した構成コンポーネント設定情報１５２０をモックアップ構成コンポーネント情報記憶部１５２に保存する（ステップ２１１９）。なお、ステップ２１１６で不整合が検出されていれば、不整合情報も併せて書き込む。
【０１１９】
ユーザ追記情報抽出部１１６がコンポーネント設定ファイルより顧客要求（ユーザ追加情報）１７３７を抽出し、ユーザ追記情報記憶部１５３へ書き込む（ステップ２１２０）。なお、処理対象のコンポーネント設定ファイル１７３０に記述されているコンポーネント種別１７３１がコンポーネント設定属性定義１６２０に設定されていない未定義のコンポーネントであるときは、処理対象のコンポーネント設定ファイル１７３０に記述されている情報はすべてユーザ追記情報記憶部１５３へ保存される。
【０１２０】
これにより、開発者から入力された入力画面モックアップデータから、所望の情報が抽出された。
【０１２１】
次に、図２６は、実行アーキテクチャに応じたコンポーネントの設定を生成する処理手順を示すフローチャートである。
【０１２２】
対象アーキテクチャ補完部１２１が、アーキテクチャ情報記憶部１５４を参照し、開発者が指定した実行アーキテクチャ定義情報１７６０に対応する実行アーキテクチャ設定情報１５４０が存在するか否かを判定する（ステップ２２０１）。
【０１２３】
実行アーキテクチャ設定情報１５４０が存在しないときは（ステップ２２０１：Ｎｏ）、モックアップ実行アーキテクチャでプログラムを実行すると判断し、対象アーキテクチャ補完部１２１が全てのコンポーネントをクライアント上で実行するアーキテクチャに設定する（ステップ２２０２）。アーキテクチャの言語は、ステップ２１０４で抽出された画面モックアップの開発言語を画面モックアップ抽出情報記憶部１５１より読み出して用いる。
【０１２４】
コンポーネント設定補完部１２３は、モックアップ構成コンポーネント情報記憶部１５２に記憶されている構成コンポーネント設定情報１５２０の各コンポーネントに対して、ステップ２２０４からステップ２２１０の処理を適用する（ステップ２２０３）。
【０１２５】
コンポーネント設定補完部１２３は、モックアップ構成コンポーネント情報記憶部１５２から一つのコンポーネントに関する情報を読み出す（ステップ２２０４）。
【０１２６】
コンポーネント設定補完部１２３は、ステップ２２０４で読み出された対象のコンポーネントのコンポーネント種別１５２２をキーにしてコンポーネント一覧１６１０を参照し、コンポーネント種別１６１３を取得する。ここで取得したコンポーネント種別１６１３が有効でないときは、ステップ２２０８へ進む（ステップ２２０５：Ｎｏ）。
【０１２７】
有効なコンポーネント種別１６１３を取得できたときは（ステップ２２０５：Ｙｅｓ）、コンポーネント設定補完部１２３が、対象となっているコンポーネントについて、属性値１５２４がブランクである項目に所定のデフォルト値を補完する（ステップ２２０６）。これは、既に説明したように、対象アーキテクチャ補完部１２１がコンポーネント設定属性定義１６２０を参照し、対応する項目のデフォルト値１６２５を特定して、それを補完する。
【０１２８】
コンポーネント設定補完部１２３は、さらに、対象となっているコンポーネントについて、コンポーネント設定属性定義１６２０で必須フラグ１６２６がセットされている必須項目にすべて値が設定されているか否かを判定する（ステップ２２０７）。
【０１２９】
ステップ２２０５で有効なコンポーネント種別１６１３を取得できないとき、及びステップＳ２２０７で必須項目のいずれかが未設定であるときは、本システムでこのコンポーネントのプログラムコードを自動生成することができないので、コンポーネント種別１５２２を「その他」に設定する（ステップ２２０８）。
【０１３０】
コンポーネント実行アーキテクチャ決定部１３０は、アーキテクチャ情報記憶部１５４及びアーキテクチャ毎コンポーネントコード片群１６３０を参照しながら、対象となっているコンポーネントのプログラムコードの自動生成に用いるプログラムコード片を選択する（ステップ２２０９）。プログラムコード片の選択は、例えば、実行時配置場所１６３２、実行基盤１６３３及びプログラムコード片格納場所１６３４を特定する。
【０１３１】
コンポーネント実行アーキテクチャ決定部１３０は、ステップ２２０９で特定された実行時配置場所１６３２、実行基盤１６３３及びプログラムコード片格納場所１６３４を、実行アーキテクチャ１５２５及びコード片格納場所１５２５として構成コンポーネント設定情報１５２０に追加して、モックアップ構成コンポーネント情報記憶部１５２に書き戻す（ステップ２２１０）。
【０１３２】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【０１３３】
１００  モックアップ開発支援システム、１０２  メモリ、１０３  外部記憶装置、１０４  バス、１０５  外部インターフェース、１０６  入力装置、１０７  出力装置、１０８  通信装置、１１０Ｐ  モックアップ設計情報解析プログラム、１２０Ｐ  コンポーネント設定生成プログラム、１３０Ｐ  コンポーネント実行アーキテクチャ決定プログラム、１４０Ｐ  プログラムコード生成プログラム、１５０  入力モックアップ設計情報記憶部、１６０  アーキテクチャ毎コンポーネント一覧記憶部、１７０  入力画面モックアップ記憶部、１９０  ネットワーク、１９１  モックアップ開発環境、１９２  モックアップレビュー環境
【図１】
0005350428.tif 000002
【図２】
0005350428.tif 000003
【図３】
0005350428.tif 000004
【図４】
0005350428.tif 000005
【図５】
0005350428.tif 000006
【図６】
0005350428.tif 000007
【図７】
0005350428.tif 000008
【図８】
0005350428.tif 000009
【図９】
0005350428.tif 000010
【図１０】
0005350428.tif 000011
【図１１】
0005350428.tif 000012
【図１２】
0005350428.tif 000013
【図１３】
0005350428.tif 000014
【図１４】
0005350428.tif 000015
【図１５】
0005350428.tif 000016
【図１６】
0005350428.tif 000017
【図１７】
0005350428.tif 000018
【図１８】
0005350428.tif 000019
【図１９】
0005350428.tif 000020
【図２０】
0005350428.tif 000021
【図２１】
0005350428.tif 000022
【図２２】
0005350428.tif 000023
【図２３】
0005350428.tif 000024
【図２４】
0005350428.tif 000025
【図２５Ａ】
0005350428.tif 000026
【図２５Ｂ】
0005350428.tif 000027
【図２６】
0005350428.tif 000028
【図２７】
0005350428.tif 000029