本発明の一実施形態であるGUIプログラム自動生成装置について図面を用いて説明する。
図2は、GUIプログラム自動生成装置が自動生成ソースコードを生成する様子を示す概念図である。GUIプログラム自動生成装置10には、GUIプログラムに含まれる複数の対象画面のそれぞれについて、各設計書20、30、40、60、70を解析し、ソースコードテンプレートファイル50を利用して、自動生成ソースコード60を生成する。その際、GUIプログラム自動生成装置10は、複数の対象画面に共通の共通定義設計書70を利用する。
プログラマは、GUIプログラムを開発するにあたり、まず、GUIプログラム自動生成装置10で解析可能な形式の画面設計書20と、他サーバとの通信に用いる通信インタフェースを規定するインタフェース設計書30と、GUIプログラムの項目毎の動作確認内容を規定した入力条件設計書40を作成する。また、プログラマは、予め、GUIプログラム名称、GUI部品名称、GUI部品とソースコードテンプレートファイル50との紐付けを規定する共通定義設計書70も作成しておき、GUIプログラム開発に際し、必要に応じてそれを修正する。
画面設計書20には画面項目設計書21とシナリオ定義設計書22が含まれている。
画面項目設計書21には、対象画面の画面構成の情報、例えば、GUIプログラムの画面に表示するGUI部品の種別や配置の定義、および定義したGUI部品へ入力する情報について規定される。
図3は、画面項目設計書21に含まれるテーブルの記述例を示す図である。図3を参照すると、テーブル300には、各GUI部品の項目名301、コントロール種別302、タブオーダー303、コンテンツ情報304、配置情報305が互いに対応づけて記述されている。コントロール種別302は、各項目名301のGUI部品の制御に関する種別を示している。EDITは、入力したり、編集したりできる項目を意味し、PANELは固定な表示の項目を意味し、BTNはボタンを意味している。タブオーダー303は、Tabキーによってフォーカスが移動する順序を示している。コンテンツ情報の表示値は、GUI部品に表示するテキストを示している。配置情報305は、GUI部品を表示する座標および大きさを示している。
図4は、独自処理がある場合に画面項目設計書21に含まれるテーブルの記述例を示す図である。図4を参照すると、テーブル500には、各独自処理について、アクション501、コントロール種別502、項目名503、および独自処理名504が互いに対応づけて記述されている。アクション501は、独自処理を呼び出す操作を示している。項目名503は、独自処理を呼び出す項目を示し、コントロール種別502は、その項目の制御に関する種別を示している。独自処理名504は、独自処理の名称である。作成するGUIプログラムに独自処理を実装する必要がない場合、画面項目設計書21に独自処理を呼出すためのテーブル500を記述する必要はない。
一方、シナリオ定義設計書22には、各対象画面の画面項目設計書21により作成されるGUI画面への操作によって実行する処理のシナリオ、例えば、GUI画面に対する操作による遷移先となるGUI画面といった複数のGUI画面同士の関連動作が規定される。
ソースコードテンプレートファイル50は、自動生成ソースコード60の生成に使用するテンプレートのファイルである。
インタフェース設計書30には、GUIプログラムを実装したコンピュータが他のサーバ等との通信に用いる通信インタフェースが規定されている。
入力条件設計書40には、画面項目設計書21における入力項目について、正常とされるための入力条件が規定されている。例えば「月」の項目であれば、「1」月から「12」月までのような正常な入力値の範囲が規定される。この入力条件設計書40がGUIプログラムの項目毎の動作確認内容となる。
GUIプログラム自動生成装置10が生成する自動生成ソースコード60には、GUIレイアウトソースコード61、画面間シナリオ定義ソースコード62、通信インタフェース定義63、単体試験用ソースコード64、イベント動作定義ソースコード65、独自処理雛形ソースコード66という6種類のものが含まれている。
GUIレイアウトソースコード61はGUIプログラムの画面レイアウトを構築するソースコードである。
画面間シナリオ定義ソースコード62は、GUIプログラム自動生成装置10で作成されるGUIプログラムの画面間の関連動作などの処理を構築するソースコードである。
通信インタフェース定義63は、例えば他サーバとの通信によるデータの送受信を行うための通信インタフェースの構造の定義である。
単体試験用ソースコード64は、入力条件設計書40に記載された入力条件に基づいた試験を実施するためのソースコードである。従来は自動生成されたソースコードから作成されたGUIプログラムについて、GUI部分の動作確認は手作業で行わなければならず、類似した項目が多数に及ぶ場合でも、同一あるいは類似の動作確認を項目単位で繰り返し実施する必要があったが、本実施形態では、単体試験が自動化できるので、試験作業が低減される。
イベント動作定義ソースコード65は、GUIレイアウトソースコード61で定義されたGUI部品に何らかのイベントが発生した場合の動作を構築するソースコードである。
独自処理雛形ソースコード66は、GUIプログラムに、個別に作成すべき独自処理が必要な場合に生成されるソースコードの雛形であり、独自処理のソースコードがそこに追加記述される。
以上のように6種類のソースコードは全て内容が異なっている。ソースコードテンプレートファイル50には、これら各ソースコードについての様々な形態のソースコードテンプレートファイルが含まれている。
GUIプログラム自動生成装置10は共通定義設計書70からGUIプログラムで用いる共通定義情報を取得し、その情報を用いて画面設計書20に記載された定義情報からテンプレートファイルを結合し、自動生成ソースコード60を生成する。
図5は、GUIプログラム自動生成装置10の概略構成を示すブロック図である。図5を参照すると、テンプレート選択部15、ソースコード生成部16、独自処理有無判定部17、雛形ソースコード生成部18、および設計書チェック部19を有している。更に、ソースコード生成部16は、画面間シナリオ定義作成部161、試験コード生成部162、生成処理部163、および通信インタフェース特定部164を有している。
テンプレート選択部15は、画面設計書20に規定された画面構成に基づいて、対象画面のプログラムのソースコードに使用するテンプレートを選択する。
画面間シナリオ定義作成部161は、画面設計書20に規定された処理シナリオに基づいて、画面遷移のシナリオ定義を作成する。
生成処理部163は、テンプレート選択部15で選択されたテンプレートと、画面間シナリオ定義作成部161で作成されたシナリオ定義を用いて、対象画面の画面構成と対象画面への入力に対する動作とを実現する各種ソースコード(第1の自動生成ソースコード)を生成する。第1の自動生成ソースコードには、GUIレイアウトソースコード61および画面間シナリオ定義ソースコード62が含まれている。
独自処理有無判定部17は、対象画面のGUIプログラムに個別に作成すべき独自処理があるか否か判定する。
雛形ソースコード生成部18は、独自処理有無判定部17による判定で独自処理があれば、その独自処理を示すソースコードの雛形(第2の自動生成ソースコード)を、前記第1のソースコーから独立した形で生成する。
本実施形態によれば、テンプレートからの自動生成とは別に作成する独自処理のソースコードの雛形の部分と、テンプレートから自動生成されるソースコードに部分とをそれぞれ互いに独立した形で生成するので、ソースコードの可読性が向上し、また修正の影響を受ける範囲を自動生成部分あるいは独自処理部分に限定することができる。
通信インタフェース特定部164は、他サーバ等の外部装置との通信に用いる通信インタフェースを特定する。
生成処理部163は、通信インタフェース特定部164で特定された通信インタフェースの情報を更に用いて、その通信インタフェースを実現する通信インタフェース定義を生成する。第1の自動生成ソースコードに、この通信インタフェース定義も含まれる。
これによれば、所望の通信インタフェースを備えたGUIプログラムを自動生成することができる。
試験コード生成部162は、対象画面に含まれる部品に対する試験のための入力を定めた試験コードを作成する。
その場合、生成処理部163は、対象画面に含まれる部品のそれぞれについての試験コードに基づいて、対象画面のソースコードに単体試験用の入力を与える単体試験用ソースコードを、更に生成する。
これによれば、対象画面のプログラムのソースコードを単体試験するための単体試験用ソースプログラムを併せて生成することができる。
なお、この単体試験用ソースコードは、テンプレートから作成された第1の自動生成ソースコードに対して単体試験用の入力を与えるプログラムのソースコードである。これによれば、テンプレートに形態が定まっているため単体試験の入力を規定することが比較的容易な第1の自動生成ソースコードを独立した形に生成するので、容易に、その部分についての単体試験用のソースプログラムを併せて生成することができる。
図6は、GUIプログラム自動生成装置10がGUIプログラムのソースコードを自動生成するときの動作の流れを示すフローチャートである。図6において、細線矢印は処理の流れを示し、破線矢印はファイルの入力を示し、太線矢印はファイルの出力を示している。GUIプログラムのソースコードの生成に用いる、共通定義設計書70、画面設計書20、ソースコードテンプレートファイル50、入力条件設計書40、およびインタフェース30は、外部記憶装置80に格納されている。また、GUIプログラム自動生成装置10が自動生成した、GUIレイアウトソースコード61、画面間シナリオ定義ソースコード62、通信インタフェース定義63、単体試験用ソースコード64、イベント動作定義ソースコード65、および独自処理雛形ソースコード66は外部記憶装置80に格納される。
GUIプログラム自動生成装置10は、一時格納領域としてメモリ11と中央演算装置としてCPU12を備えている。メモリ11に適時情報を格納し、その情報を持ってCPU12で演算を行う基本構成のコンピュータ装置上で動作する。
GUIプログラムの自動生成を開始すると、GUIプログラム自動生成装置10は、まず初めに共通定義設計書70をメモリ11に格納する(ステップ200)。これは、ソースコードテンプレートファイル50とGUI部品とを対応付ける紐付き情報と、他の画面のGUIプログラムの情報を取得するためである。
それらの情報の取得が完了すると、GUIプログラム自動生成装置10は、次に画面設計のための情報として、自動生成の対象画面の画面設計書20とソースコードテンプレートファイル50と入力条件設計書40を外部記憶装置80から取得してメモリ11に格納する(ステップ205)。
次に、GUIプログラム自動生成装置10は、それまでにメモリ11に格納した情報を元に、CPU12によって、各設計書のチェックを実施する(ステップ210)。設計書のチェック内容としては、例えば、画面項目設計書21に記載してあるGUI部品名称が共通定義設計書70に存在しているか、記入漏れの項目が存在しているかがある。設計書のチェックは既存の方法で実施すればよい。
設計書のチェックが完了すると、GUIプログラム自動生成装置10は、次に、画面項目設計書21内に記載のあるGUI部品情報に基づき、ステップ200で共通定義設計書70から取得しておいた共通定義の情報から、ソースコードテンプレートファイル50とGUI部品情報との紐付き情報を参照し、画面項目設計書21内に記載のあるGUI部品情報に対応するソースコードテンプレートファイル50の該当ソースコードを取得し、GUIプログラムとする(ステップ215)。このステップ215で、当該GUI部品のGUIレイアウトソースコード61とイベント動作定義ソースコード65の準備が整う。
画面設計書20に記載のある全てのGUI部品に対してステップ215を繰り返し実施し、各GUI部品のGUIレイアウトソースコード61とイベント動作定義ソースコード65をGUIプログラムに加えていく(ステップ220)。
次に、GUIプログラム自動生成装置10は、ステップ220で作成したGUIプログラムに対して、他のGUIプログラムとの関連動作の処理シナリオをシナリオ定義設計書22から取得し、画面間遷移の動作定義を構築する(ステップ230)。このステップ230では、画面間シナリオ定義ソースコード62が準備される。
この段階でGUIプログラムの基本動作部分は完成するので、GUIプログラム自動生成装置10は、入力条件設計書40を用いて、GUIプログラムを構成しているGUI部品単位で、それぞれの試験を実施するための試験コードを生成する(ステップ235)。
GUI部品単位での試験コードの作成方式について説明する。
上述したように図3には画面項目設計書21の記述例が示されている。図3を参照すると、画面項目設計書21には、GUIプログラムを構成するGUI部品の情報として、項目名301と、コントロール種別302と、タブオーダー303、コンテンツ情報304、および配置情報305が格納されている。項目名301は、設計するGUIプログラムの中で使用するGUI部品の名称となる。コントロール種別302はGUI部品の種別を表す。ここでは画面項目設計書21に記載する内容として上記を例示しているが、その他の情報を追加で定義してもよい。
図7は、入力条件設計書40の記述例を示す図である。
入力条件設計書40には、テキスト入力やボタン操作などの入力が可能なGUI部品のそれぞれについて、その入力条件が規定されている。これが単体テストコードを生成するための設計書となる。
入力条件設計書40のテーブル400には、各GUI部品について、コントロール種別401、項目名402、入力条件値403が記述されている。コントロール種別401は、単体試験を実施するGUI部品の種別を表す。項目名402は単体試験を実施する項目を表すものである。入力条件値403には、当該項目に入る基本の値、入力可能な最小値および最大値、入力可能でない範囲の値が記述されている。なお、ここでは図7に示したものを例示したが、その他の情報を追加記載してもよい。また、入力条件は通常の入力条件の他に、最小入力値および最大入力値等については、試験を実施する分だけ定義を記述することにしてもよい。
次に本実施形態の図3と図4において、GUI部品単位での試験コード作成方式について説明する。GUIプログラム自動生成装置10は画面項目設計書21からコントロール種別302と、項目名301を抽出し、そこから入力条件設計書の中からコントロール種別302と一致するコントロール種別401を検索し、一致した検索結果の中から項目名301と項目名402が一致する項目を検索する。一致した行が存在した場合は、入力条件値403から入力条件を抽出して、GUI部品に対する入力試験コードを自動的に生成する。別のGUIプログラムを設計する際に既存のGUIプログラムと同じ入力項目が存在する場合、作成済みの入力条件設計書40に定義したコントロール種別401と項目名402と同じ定義で画面項目設計書を作成することで、入力条件設計書40を共有して使用することができる。単体試験用ソースコード64は、単体動作可能なソースコードを生成するでもよいし、一般的な単体試験用プログラムを利用する形のソースコードを生成することでもよい。
ステップ235で各部品毎の試験コード生成が完了した後、自動生成対象のGUIプログラムが使用する他通信網用のインタフェースを判別し(ステップ240)、対象のインタフェース設計書30をメモリ11に読み出す(ステップ245)。ここまでのステップまでに準備された情報を用いて、ステップ250にてGUIレイアウトソースコード61、画面間シナリオ定義ソースコード62、通信インタフェース定義63、単体試験用ソースコード64、イベント動作定義ソースコード65を生成する。
画面項目設計書21に、図7で示すような独自処理の定義が存在するかをチェック(ステップ255)し、存在する場合には独自処理を記載するための雛形ソースコードとして、独自処理雛形ソースコード66を生成する(ステップ260)。本実施形態における独自処理の記述例について、図7を用いて説明する。
上述した図4のテーブル500において、項目名503は、独自処理を呼び出す項目を示し、コントロール種別502は、その項目の制御に関する種別を示している。独自処理名504は、独自処理の名称である。これは、画面項目設計書21における独自処理について、呼び出し方(項目名503、コントロール種別502、およびアクション501)と、呼び出し先ファンクション名称(独自処理名504)とを対応づけた紐付け情報を定義したものである。
アクション501には、GUI部品に対してどのような動作を実施した場合に呼び出し先ファンクションが呼び出されるかが定義される。コントロール種別502と項目名503は、どのGUI部品に対する独自処理なのかが定義される。独自処理名504は呼び出し先ファンクションのファンクション名称が定義される。
なお、本実施形態では、独自処理の部分の定義を画面項目設計書21中に記述する形態を例示するが、それを独立した設計書として作成することにしてもよい。
また、図4におけるコントロール種別502および項目名503は、図3におけるコントロール種別302および項目名301と紐付くように定義し、それが示すGUI部品に対して、アクション501に定義された動作が行われたときに、独自処理名504の独自処理のファンクションが呼び出されるような定義が設定される。
また、図3、図4、図7では、一例として表形式で各情報を定義しているが、XML、CSVまたはその他の形式で情報を定義してもよい。
上述したように、本実施形態では、GUIプログラムを製造する際に独自処理部分をGUIプログラムの基本部分とは独立したソースコードで生成することで、ソースコードの可読性を向上させることが可能となる。また、独自部分のみの改修が必要となった場合でも、ソースコードが独立しているため、プログラムの再構築作業は独自部分箇所のみ実施すればよい。
図8は、GUIプログラム自動生成装置10を用いたGUIプログラム開発の流れを示すフローチャートである。
はじめに、GUIプログラムの開発を行うにあたり、GUIプログラム自動生成装置10で生成するための基本情報として、画面設計書20を作成する(ステップ600)。次に、作成するGUIプログラムのGUI部品に対し、単体試験の要否および必要な試験内容を決定し、それを基に入力条件設計書40を作成する(ステップ610)。また、作成するGUIプログラムが他サーバ向けに新しい通信インタフェースを使用する場合、その通信インタフェースを規定するインタフェース設計書30を作成する(ステップ620)。なお、既存の通信インタフェースを利用するのであれば、インタフェース設計書30を作成する必要はない。
次に、共通定義設計書70が既に存在するが新しいGUI部品を追加するなどの修正がある場合など、共通定義設計書70における共通定義を修正する必要があるか否かを判断し(ステップ630)、必要に応じて共通定義設計書70を修正する(ステップ640)。
以上、これら設計書の作成が完了した後、GUIプログラム自動生成装置10にて、設計書のチェックを実施する(ステップ210)。設計書に不備が存在していた場合は設計書を修正し(ステップ650)、再度設計書チェックを実施することを、不備がなくなるまで繰り返す。設計書に不備が無くなったら、GUIプログラム自動生成装置10にて、各ソースコードの自動生成を実施する(ステップ250)。なお、このとき独自処理が存在するのであれば、GUIプログラム自動生成装置10は独自処理雛形ソースコード66も生成する。このとき生成される独自処理雛形ソースコード66は、独自処理名504で定義されたファンクション名のみが定義された状態である。そのため、独自処理の実装が必要であれば、独自処理の実装を行う(ステップ660)。その場合、ステップ660で実装した独自処理の部分についての確認を実施する(ステップ670)。
更に、単体試験用ソースコード64を用いた対象画面のGUIプログラムの単体試験を実施する(ステップ680)。
なお、図中には記載していないが、ステップ680で想定通りの動作が起こらない場合、ステップ650に戻り、それ以降の作業を再度実施する。本実施形態のGUIプログラム自動生成装置10が生成した自動生成ソースコード60は、独自処理の部分と、テンプレートを用いて生成された部分とが互いに独立しているので、修正内容が独自処理に影響しないものであれば、ステップ660およびステップ670を省略することができる。
また、ステップ670で想定通りの動作が起こらない場合は、ステップ660に戻りそれ以降の作業を再度実施するだけでよい。独自処理の部分に修正や設計変更が発生した場合、本実施形態では独自処理雛形ソースコード66に処理の実装を行ったソースコードの部分に対してのみ修正を実施すればよく、テンプレートから自動生成された他のソースコードに影響を及ぼすことがない。
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。