JP2005196291A - ユーザインタフェースアプリケーション開発プログラム、および開発装置 - Google Patents
ユーザインタフェースアプリケーション開発プログラム、および開発装置 Download PDFInfo
- Publication number
- JP2005196291A JP2005196291A JP2003435608A JP2003435608A JP2005196291A JP 2005196291 A JP2005196291 A JP 2005196291A JP 2003435608 A JP2003435608 A JP 2003435608A JP 2003435608 A JP2003435608 A JP 2003435608A JP 2005196291 A JP2005196291 A JP 2005196291A
- Authority
- JP
- Japan
- Prior art keywords
- user interface
- screen
- specification data
- interface application
- application development
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
【課題】 例えばUMLを用いて、ユーザインタフェースを持つアプリケーションプログラムの完全な自動生成を可能とする。
【解決手段】 ユーザインタフェースアプリケーション開発プログラムにおいて、画面および/または処理とデータを入出力するオブジェクトとの間の関連付けを行うことが可能なアプリケーション開発用仕様書データを読み込むステップと、画面および/または処理とオブジェクトとの間の関連付けを含んで仕様書データを自動的に解釈し、ユーザインタフェースアプリケーションプログラムを生成するステップとを備える。
【選択図】図1
【解決手段】 ユーザインタフェースアプリケーション開発プログラムにおいて、画面および/または処理とデータを入出力するオブジェクトとの間の関連付けを行うことが可能なアプリケーション開発用仕様書データを読み込むステップと、画面および/または処理とオブジェクトとの間の関連付けを含んで仕様書データを自動的に解釈し、ユーザインタフェースアプリケーションプログラムを生成するステップとを備える。
【選択図】図1
Description
本発明はプログラムの開発方式に係り、さらに詳しくはユーザインタフェースを持つアプリケーションプログラムの完全な自動生成を可能とし、プログラムの開発効率と、保守性を向上させることができるユーザインタフェースアプリケーション開発プログラム、および開発装置に関する。
近年ソフトウエアの設計方法として、オブジェクト指向技術を用いた方法が広範囲に用いられている。特にUML(Unified Modeling Language)というプラットフォームに依存しない言語と、オブジェクト指向言語、例えばJava(登録商標)とを組み合わせたWebアプリケーションの開発方式が注目されている。
このようなソフトウエアの開発方法としては、できるだけプログラムあるいはその部品の自動生成が可能な方法が望まれている。このようなプログラムの自動生成については次のような従来技術がある。
特開平6−230949号公報「プログラム自動生成装置」
特開平11−237982号公報「ソフトウエア部品開発支援装置」
特開2000−339149号公報「状態遷移モデル作成方法および装置」
特開2000−116911号公報「オブジェクト指向プログラムの自動生成装置」
特許文献1には、制御対象システムを構成するユニットの変更にあたって、変更のなかったユニットに関する仕様を再利用することができ、ソフトウエアの生産効率を向上させ、またユニットの数が多くなった場合にもコンパクトで簡明な仕様記述を行うことができるプログラム自動生成装置が開示されている。
特許文献2には、オブジェクト指向ソフトウエアにおいて再利用可能な部品の開発を行うために、ある問題領域のアプリケーションに共通となる要求仕様を分析して得られる仕様の不変/変動部に関する情報を利用して、再利用可能な部品の開発を支援する技術が開示されている。
特許文献3には、状態遷移モデルの作成において状態抽出、入力イベント抽出、アクション抽出、および出力イベント抽出に必要とされる時間を短縮することができる技術が開示されている。
特許文献4には、オブジェクト指向プログラムの開発において静的部分のプログラムコードの自動生成と共に動的部分のプログラムコードの自動生成を行って、ソフトウエア開発の作業効率を向上させることができるプログラムの自動生成装置が開示されている。
しかしながらまず特許文献1では、状態遷移モデルでユニット間の関係を記述しなければならない。例えばユーザインタフェースアプリケーションにおける、クライアント側の画面と表示データ項目、画面レイアウトの関係を状態遷移モデルで記述しなければならず、開発に手間がかかるという問題点があった。
特許文献2では、要求仕様の分析モデルが設計情報に変換され、オブジェクト指向のソフトウエア部品が開発されるが、設計モデルの定義によって、例えばWebアプリケーションのプログラムに自動変換することは困難であった。
特許文献3では、状態遷移表に加えて、さらにメッセージシーケンスチャートを記述する必要があり、プログラムの自動生成までには手間がかかるという問題点があった。
特許文献4では、動的部分の定義を抽出し、ステートマシンツリーを構築した後に、静的部分と統合してプログラムコードを生成する必要があり、最終プログラム製品の開発までには、手数を要するという問題点があった。
特許文献4では、動的部分の定義を抽出し、ステートマシンツリーを構築した後に、静的部分と統合してプログラムコードを生成する必要があり、最終プログラム製品の開発までには、手数を要するという問題点があった。
次に、前述のようにオブジェクト指向におけるプログラムの自動開発において、プラットフォームに依存しない言語としてのUMLがあるが、この言語は一般的なプログラム言語のように文法や構文が規定され、それによってプログラムを作成し、コンパイルを行うというものではなく、オブジェクト指向におけるクラスやオブジェクトなどの要素を用いたモデリングを、例えばアクティビティ図などの図面を表記することによって行うところに特徴がある。
しかしながら、もともとUMLには画面遷移の特徴をすべて表現できる表記法が存在せず、画面遷移に関する部分の設計表記には困難があるという問題点があった。その結果、画面遷移の部分についてのみ、全く異なる表記法を導入するなどの必要があり、開発者は両方の表記法を習得しなくてはならないというような煩雑さがあった。このような問題点を解決するための従来技術に関して次の文献がある。
http://www−6.ibm.com/jp/software/websphere/developer/wsad/workshop/v5/index.html 「Struts アプリケーション開発(後編)」
http://www−6.ibm.com/jp/software/websphere/developer/wsad/workshop/v5/index.html 「Struts アプリケーション開発(後編)」
この文献は画面遷移図からユーザインタフェースを自動生成する装置を開示しているが、この技術ではUMLと異なる表記法を用いて画面遷移で使用されるオブジェクトを表記することが可能であるが、処理ロジックを含むアプリケーションの完全な生成を行うことができず、ユーザはこの技術によって途中まで生成されたソースを読みながら、生成されない範囲のプログラム生成を行わなければならないという問題点があった。
具体的には、この技術においては第1に画面遷移ロジック、およびプログラムの制御の流れやデータの流れに関して、画面、および処理で使用されるデータの入出力の対象オブジェクトは何であるかを明確にすることができず、第2に画面のレイアウトの名称を指定したり、画面上に表れるボタンの名称を指定する方法がなく、第3に画面処理モジュールの間におけるオブジェクトの受け渡しの順序を正確に表現する方法がないという問題点があった。
本発明の課題は、上述の問題点に鑑み、例えばUMLを用いたプログラムの自動生成に関して、例えば画面、および処理と、入出力データとしてのオブジェクトとの間の関連付けを行うことが可能なアプリケーション開発用仕様書データの表記を可能とすることによって、オブジェクト指向のプログラムの完全な自動生成を可能とすることである。
図1は、本発明のユーザインタフェースアプリケーション開発プログラムの原理的な機能ブロック図である。同図は、ユーザインタフェースアプリケーションのプログラムを自動生成するためのプログラムの原理的な機能ブロック図であり、ステップS1で仕様書データの読込が行われ、ステップS2でプログラムの生成が行われる。
ステップS1では、画面と処理とが記述される形式の画面遷移図に相当する仕様書データであって、画面、および/または処理と、入出力データとしてのオブジェクトとの間の関連付けを行うことが可能なアプリケーション開発用仕様書データが読み込まれ、ステップS2で読み込まれた仕様書データが、前述の画面、または処理とオブジェクトとの間の関連付けを含んで自動的に解釈され、ユーザインタフェースアプリケーションプログラムの生成が行われる。
発明の実施の形態においては、前述のオブジェクトが画面表示の処理に対応するオブジェクトであり、前述の仕様書データがその処理と表示される画面に対するデータ入出力オブジェクトとの関連付けに加えて、画面レイアウトを示すこともでき、あるいはオブジェクトが、画面遷移に関連する処理であって、外部の処理を読み出すための処理に対応し、仕様書データの前述の関連付けがその関連する処理に対するそれぞれ複数の入力オブジェクト、または出力オブジェクトの順序を示すこともできる。
実施の形態においては、前述の仕様書データが、ユーザが次の状態遷移条件、例えば画面上でクリックするためのボタン名をさらに指定可能であることもできる。
また実施の形態において、仕様書データが画面遷移図上の1つ以上の終了状態にそれぞれ対応し、終了状態の識別子、例えば名前、例外を含む状態の種類、終了後の動作を記述する式、画面遷移図の呼出元に対する1つ以上の返り値、状態に対応する入出力オブジェクトと、入出力の順序をさらに定義可能であり、複数の画面遷移図間での呼出関係を含む終了状態の制御を可能とすることもでき、あるいは仕様書データが、画面遷移図上の開始状態に対応して、その状態に対応するデータ入出力オブジェクトと、入出力の順序をさらに定義可能であり、複数の画面遷移図間での呼出関係を含む開始状態の制御を可能とすることもできる。
また実施の形態において、仕様書データが画面遷移図上の1つ以上の終了状態にそれぞれ対応し、終了状態の識別子、例えば名前、例外を含む状態の種類、終了後の動作を記述する式、画面遷移図の呼出元に対する1つ以上の返り値、状態に対応する入出力オブジェクトと、入出力の順序をさらに定義可能であり、複数の画面遷移図間での呼出関係を含む終了状態の制御を可能とすることもでき、あるいは仕様書データが、画面遷移図上の開始状態に対応して、その状態に対応するデータ入出力オブジェクトと、入出力の順序をさらに定義可能であり、複数の画面遷移図間での呼出関係を含む開始状態の制御を可能とすることもできる。
実施の形態においては、仕様書データが、複数の画面遷移図の間で同一名称のオブジェクトの複数のインスタンスが同一であるか否かを、そのインスタンスに対するスコープの指定によりさらに区別可能であることも、また仕様書データが画面遷移図内の分岐処理に対応して、その分岐の条件を示すパラメータ入力オブジェクトをさらに指定可能であることもでき、さらに仕様書データが分散オブジェクト型コンポーネントのプロトコルに基いて、分散オブジェクト型コンポーネントの呼出を可能にするデータをさらに含むこともできる。
本発明のユーザインタフェースアプリケーション開発装置は、仕様書データ読込手段とプログラム生成手段とを備える。仕様書データ読込手段は、画面と処理とが記述される形式の画面遷移図に相当する仕様書データであって、画面、および/または処理と入出力データとしてのオブジェクトとの間の関連付けを行うことが可能なアプリケーション開発用仕様書データを読み込むものであり、プログラム生成手段は、前述の画面、または処理とオブジェクトの間の関連付けを含んで、読み込まれた仕様書データを自動的に解釈し、ユーザインタフェースアプリケーションプログラムを生成するものである。
本発明によれば、画面や処理を記述するアクティビティとオブジェクトの間のデータ入出力関係、外部のプログラムなどを呼び出す呼出アクティビティにおける入出力の指定、開始状態や終了状態に対応する制御など、例えば従来のUMLの表記方法では表記することが困難であった仕様を新たに指定可能とすることにより、ユーザインタフェースを持つアプリケーションプログラムの完全な自動生成を行うことが可能となり、プログラムの開発、および保守効率の向上に寄与するところが大きい。
図2は、本発明におけるユーザインタフェースアプリケーション自動開発方式の全体説明図である。本発明の実施の形態においては、まずプラットフォームに依存しない、例えばUMLによって記述された定義体10が作成され、その定義体10に対してプラットフォームに依存する自動生成ツールを用いることによって、ユーザインタフェースアプリケーションとしてのWebアプリケーション、またはクライアントアプリケーションが作成される。
図2において、例えばJava Server Pages(JSP)/Servlet用の自動生成ツール11aを用いることによって、JSP/Servlet用のWebアプリケーション12aが作成される。同様にWebサーバ上でページを生成する仕組みの1つとしてのActive Server Pages(ASP).NET用の自動生成ツール11bを用いることによって、Webアプリケーション12bが作成される。
またブラウザにダウンロードして実行されるJava(登録商標)のクライアントソフトであるJava Applet用の自動生成ツール11cを用いることによって、Java Applet用のクライアントアプリケーション12cが作成される。
さらにグラフィックユーザインタフェースを簡単に作成するためのベーシックを基にしたプログラミング言語としてのVisual Basic用の自動生成ツール11dを用いることによって、Visual Basic用のクライアントアプリケーション12dが作成される。
図3は、本実施形態における各種の自動ツールを利用した、ユーザインタフェースアプリケーションに対する定義ファイルの生成からアプリケーションプログラムの実行、および検証までのユーザインタフェースアプリケーション開発方式の全体説明図である。同図において前述のように、例えばUMLによって定義図/表15が記述され、その記述に対応して仕様定義ツールによって仕様定義ファイル16が作成される。
そして仕様定義ファイル16を用いて、自動生成ツールによってプログラムに相当するソースコードや定義体など17が自動的に生成され、その生成結果を用いて仕様実行エンジン18によってその仕様、すなわちプログラムが実行され、検証ツールによって仕様実行結果が検証され、デバッグ情報が生成され、例えばイベント通知としてそのデバッグ情報が仕様定義ファイルに与えられ、必要に応じて仕様定義ファイルの修正が行われる。
図4は本実施形態において解決されるアプリケーション領域の説明図である。前述のように本実施形態におけるアプリケーション領域は、プラットフォーム非依存部20を主体として構成されるが、当然プラットフォームに依存する画面デザイン21と外部コンポーネント呼び出し22とを含むことになる。
プラットフォーム非依存部20は、本実施形態におけるユーザインタフェースアプリケーション開発の主体となる画面遷移25、ロジックフロー26と、ロジックフロー26に対応するビジネスアクティビティ(ビジネスロジック)実装27を主たる構成要素として含んでいる。画面遷移25に対しては、画面項目の管理と表示内容編集が必要となり、ビジネスアクティビティ実装27に対しては、入力値のチェック、入力値編集、およびパターン適用が必要となる。
図5は、本実施形態において作成される定義体の全体構成図である。同図において定義体は、図4のアプリケーション領域に対応して、画面遷移図30、ロジックフロー図31、データ定義図32、および画面レイアウト33によって基本的に構成されている。
画面遷移図30は、画面とロジック(処理)とが必要に応じて、例えば交互に記述され、画面とロジックの間の遷移、各画面に関連する項目やレイアウトを表現するものであり、例えばUMLアクティビティ図である。またロジックフロー図31は、画面遷移図内のロジックの詳細を記述するものであり、例えば同様にUMLアクティビティ図である。
また画面レイアウト33は、画面のレイアウト情報を記述するものであり、Webアプリケーションの実装では、JSPページによって表現される。データ定義図32は、アクティビティ図を含まないクラス図によって表現され、画面項目定義34、列挙定義35、および中間データ項目定義36などの項目定義に利用される。
画面項目定義34は、画面表示のための項目を定義するものであり、項目は名前と型から構成され、型としては文字列、整数、実数、複合型などがある。列挙定義35は、列挙項目の定義を行うものであり、また中間データ項目定義36は、例えばロジックフロー図に相当するビジネスフロー定義の内部で利用される中間的なデータの項目定義に用いられる。なおロジックフロー図はビジネスロジックをビジネスアクティビティ間のフローとして表現したものである。
本実施形態においては、図5で説明した画面遷移図30、およびロジックフロー図31の表現例としてのUMLアクティビティ図において、従来と異なる新たな表記法を用いることによって、ユーザインタフェースアプリケーションとしてのプログラムの完全な自動生成を可能とするものであり、そのようなアクティビティ図の具体例を図6を用いて説明する。
図5で説明した画面遷移図30としてのUMLアクティビティ図では、一般的に開始状態(初期状態)と終了状態(最終状態)との間で、画面を表すアクティビティと、処理(ロジック)を表すアクティビティとを、例えば交互に、あるいは複数の処理を連続して実行する形式で図面が記述される。
図6はロジックフロー図の簡単な例であり、開始状態40と終了状態、ここでは2つの終了状態42、43との間のロジックフローが記述される形式となっており、ExecuteSearch アクティビティ41は、Callアクティビティと呼ばれ、他のロジックフローや、モデルの外部を含む他のメソッドを呼び出すために使用されるアクティビティである。
本実施形態では、このようなロジックフローや画面遷移図において、アクティビティに対するデータ入出力を行なうオブジェクトの指定を可能とするとともに、コールアクティビティに対しては、呼出対象となるオブジェクトの指定を可能とするところに1つの特徴がある。なお各オブジェクトには識別子(ID)として名称が付加されており、この名称がクラスの型を示すものと解釈されてプログラムの生成が行われる。
例えばアクティビティ41に対しては、2つのオブジェクトUserBean44、SearchConditionBean45からの入力データが与えられ、また開始状態40からオブジェクトSearchConditionBean45に対して出力が与えられることが、ステレオタイプ<<NijoIn>>、および<<NijoOut>>の矢印によって示され、またオブジェクトSearchUtility46が呼出対象となるオブジェクトであることが<<NijoTargetInstance>>の矢印によって指定されている。
終了状態42に関しては、オブジェクト46の呼出結果に対応した処理が正常に終了した場合にオブジェクトResultBean47に、例えば図6のロジックフローの呼出元への返り値が格納され、その返り値は終了状態42への入力となる。なお本実施形態では、例えばオブジェクト46を瞬間的な状態ではなく、アクティビティ41などの状態がアクセスするオブジェクトフロー状態として定義する。
オブジェクト46の呼出結果による処理が異常終了の場合には[SearchException]のガード(遷移条件)が適用され、オブジェクトSearchException48に例外が格納され、終了状態43へのアクティビティ41からの遷移が行われるとともに、その例外は終了状態43に対する入力となる。
本実施形態におけるユーザインタフェースアプリケーションの完全な自動開発のために用いられる様々な新しい表記法についてさらに説明する前に、図7と図8を用いてプログラムの開発処理の基本的フローチャートを説明する。図7は、図2に対応してプラットフォームに依存する実際のアプリケーションプログラムを生成する処理の全体フローチャートである。同図において処理が開始されると、まずステップS10で、例えばテキスト形式の定義(体)が読み込まれ、ステップS12でその定義体が、例えばUML言語における内部モデル、例えばJava(登録商標)言語のオブジェクトモデルに変換され、ステップS12でそのモデルが正当であるか否かのバリディティチェックが行われる。このステップS12まではプラットフォームに依存しない処理である。
続いてステップS13で、内部モデル構造がターゲット、すなわちプラットフォームに依存する構造に変換され、ステップS14で図2で説明したようなプラットフォームに依存したアプリケーションプログラムとしてのファイルが出力されて処理を終了する。
図8は、図7のプラットフォームに依存しない処理としてのステップS10からステップS12の処理のうちで、特にステップS10とS11とを強調したプログラム自動生成処理のフローチャートである。同図において処理が開始されると、まずステップS21で、例えばUMLアクティビティ図によって表現された画面遷移図、ロジックフロー図など、図5で説明した定義体などが記述された仕様書が読み込まれ、ステップS22でその仕様書が中間形式としてのXMLテキスト形式にXMI(XML Metadata Interchange)によって変換される。その変換用には、市販のUMLツール、またはフリーのツールを使用することができる。異なるCASEツール間でのデータ変換のための標準フォーマットであるXMIは、UMLの拡張部分を扱うことができ、仕様書に書かれているものは忠実にテキストに落とされるために、本実施形態において新しく定義される表記法を用いても、中間形式への変換は問題なく実行される。
続いてステップS23で中間処理が行われる。この中間処理では、ステップS22で出力された中間形式ファイルが読み込まれ、例えば図6で説明したようなアクティビティとオブジェクトの間の入出力関係、オブジェクトの呼出関係などの解釈が行われ、ステップS24でその解釈に基いてプログラムとしてのファイルが生成されて処理を終了する。
以下本実施形態における仕様の新しい表記方式の具体例について、アクティビティ図の例に対応させて、図8のフローチャートにおけるステップS23の中間処理、およびステップS24のプログラム生成処理について説明する。
図9は、例えば画面遷移図としてのアクティビティ図の一部を示し、PrepareCondition50というCallアクティビティ、すなわち処理を表すアクティビティからConditionInput51という画面表示用アクティビティへの遷移と、このアクティビティ51からExecuteSearch41とQuit53の2つのアクティビティへの分岐が示されている。ここでアクティビティ51は、例えばJSP画面表示を表すオブジェクトであり、このようなアクティビティをUI(ユーザインタフェース)アクティビティと呼ぶことにする。アクティビティ50の処理終了後に、その結果に対応して画面表示が実行される。
このアクティビティ51と、2つのオブジェクト44、45との間には依存関係があり、図6で説明したようにこれら2つのオブジェクトは、UIオブジェクト51に対する画面表示のための入力データを示すオブジェクトであることが表記され、またオブジェクト45は、同時にUIアクティビティ51からの出力データを示すオブジェクトであることも表記されている。すなわちユーザが画面において入力したデータは、画面から見るとオブジェクト45への出力の意味を持つことになる。
UIアクティビティ51から2つのアクティビティ41と53への分岐は、例えばユーザが画面上で2つのボタンのいずれを押すかによって分岐が決定される。アクティビティ41、53への矢印にそれぞれつけられているガード(遷移条件)としての[search]、および[quit]が画面上のボタン名に相当し、ユーザがどちらのボタンを押すかによって分岐が決定される。
図9において、UIアクティビティ51は、ScreenLayout52というプロパティと関連付けられ、JSPにおける画面レイアウトを表すことができる。図10は、この画面レイアウトに関連するアクティビティ図の一部を示す。図9のScreen Layout52には、main.jspとして画面がヘッドペインと、ボディーペインとの2つの部分からなることが記述されており、図10においてUIアクティビティ51がUserBeanオブジェクト44と、SearchConditionBeanオブジェクト45とを表示するにあたり、ヘッドペインにhead1.jspというレイアウトファイルを利用してオブジェクト44を表示し、ボディーペインにcond.jspというレイアウトファイルを利用してオブジェクト45の表示を行うことが指定されている。
図9、図10に対応して図8のステップS23における中間処理、ステップS24におけるプログラム生成処理について説明する。
ステップS23では中間形式ファイル(XMI)を読み込んで
(1) 作成するJSPファイル名(ConditionInput.jsp)をアクティビティ名のConditionInputから特定する。
(2) XMIではIDで関連付けされているレイアウト情報(main.jsp)とそのpane名(head/body)およびpaneに連結するjspファイル(head=head1.jsp/body=cond.jsp)をPaneLayout定義から特定する。
(3) それぞれのpaneとpaneで使うオブジェクトとの関連付けを特定する。
(4) ConditionInputから出ている2つの線のアクション名[search][quit]からボタン名を特定する。
(5) オブジェクトとそのメソッドの関連付けを特定する。
ステップS23では中間形式ファイル(XMI)を読み込んで
(1) 作成するJSPファイル名(ConditionInput.jsp)をアクティビティ名のConditionInputから特定する。
(2) XMIではIDで関連付けされているレイアウト情報(main.jsp)とそのpane名(head/body)およびpaneに連結するjspファイル(head=head1.jsp/body=cond.jsp)をPaneLayout定義から特定する。
(3) それぞれのpaneとpaneで使うオブジェクトとの関連付けを特定する。
(4) ConditionInputから出ている2つの線のアクション名[search][quit]からボタン名を特定する。
(5) オブジェクトとそのメソッドの関連付けを特定する。
ステップS24では上記の情報に基づいてファイルを作成する。
(1) 表示head1.jsp/cond.jsp/ConditionInput.jspを作成し、paneおよびそこで使われるオブジェクトとのリンクタグを埋め込む。
(2) 上記ファイルにボタンとオブジェクトリンクタグを埋め込む。
(3) ボタンと関連付けされた処理メソッドをテーブルに書き出す。(このテーブルは、このテーブルを読み込む仕様のServletに対応する。そのような動作に対応しない場合には、ファイルに直接メソッドを呼び出すリンクを埋め込む)
(4) 処理メソッドプログラムを書き出す。具体的には次のようになる。
(1) 表示head1.jsp/cond.jsp/ConditionInput.jspを作成し、paneおよびそこで使われるオブジェクトとのリンクタグを埋め込む。
(2) 上記ファイルにボタンとオブジェクトリンクタグを埋め込む。
(3) ボタンと関連付けされた処理メソッドをテーブルに書き出す。(このテーブルは、このテーブルを読み込む仕様のServletに対応する。そのような動作に対応しない場合には、ファイルに直接メソッドを呼び出すリンクを埋め込む)
(4) 処理メソッドプログラムを書き出す。具体的には次のようになる。
ConditionInput.jsp:
略..
<include pane=“head”/>
<include pane=“body”/>
略..
head1.jsp:
略..
<jsp:useBean...id=head...class=“UserBean”/>
略..
cond.jsp:
略..
<jsp:useBean...id=body...class=“SearchConditionBean”/>
<input value=“search”type=“submit”name=“search○○”/>
<input value=“quit”type=“submit”name=“quit××”/>
略..
テーブル:
略..
SearchConditionBean;search○○=ExecuteSearch.search_method
SearchConditionBean;quit××=Quit.quit_method
略..
略..
<include pane=“head”/>
<include pane=“body”/>
略..
head1.jsp:
略..
<jsp:useBean...id=head...class=“UserBean”/>
略..
cond.jsp:
略..
<jsp:useBean...id=body...class=“SearchConditionBean”/>
<input value=“search”type=“submit”name=“search○○”/>
<input value=“quit”type=“submit”name=“quit××”/>
略..
テーブル:
略..
SearchConditionBean;search○○=ExecuteSearch.search_method
SearchConditionBean;quit××=Quit.quit_method
略..
図11、および図12は、図6で説明した呼出アクティビティの仕様の表記例の説明図である。前述のように呼出アクティビティは、Callアクティビティと呼ばれ、図11においてコールアクティビティとしてのActivity1 55は、2つのオブジェクト44、45との間に依存関係があり、これらのオブジェクトから入力データを受け取る。その時、処理の内容として2つの入力データがどの順序で与えられるべきか、すなわち入力パラメータの順序がインデックスの値として指定される。このインデックスの値を指定することによって入力データの数も指定されることになる。このように本実施形態では、アクティビティとオブジェクトを結ぶ線分に矢印を付け、またラベルと順番をつけたところに特徴がある。
図11において、図6におけると同様にCallアクティビティ55は、LogicHandlerクラス56を呼び出しており、そのインスタンスの名前はhandlerであることが示されている。さらにActivity1のオペレーションタグ付値で表されるロジックハンドラークラスのロジックオペーレーションメソッドが呼び出されることが示されている。
図8のフローチャートのステップS23の中間処理では中間形式ファイル(XMI)を読み込んで
(1) Activity1が呼び出す対象は<<NijoTargetInstance>>で示されるLogicHandlerクラス(インスタンス名はhandler)であり、さらに、Activity1のOperationタグ付き値で表されるLogicHandlerクラスのlogicOperationメソッドを呼び出すことを特定する。
(2) XMIではIDで関連付けされている入出力情報を検索し、その順序(indexを読み込み)も含めて特定する。この例ではUserBean,SearchConditionBeanが順に上記クラスのメソッドの入力パラメータとして使われていることが特定される
(3) <<NijoOut>>で関連付けさているResultBeanクラスのオブジェクトが出力されることを特定する。
(1) Activity1が呼び出す対象は<<NijoTargetInstance>>で示されるLogicHandlerクラス(インスタンス名はhandler)であり、さらに、Activity1のOperationタグ付き値で表されるLogicHandlerクラスのlogicOperationメソッドを呼び出すことを特定する。
(2) XMIではIDで関連付けされている入出力情報を検索し、その順序(indexを読み込み)も含めて特定する。この例ではUserBean,SearchConditionBeanが順に上記クラスのメソッドの入力パラメータとして使われていることが特定される
(3) <<NijoOut>>で関連付けさているResultBeanクラスのオブジェクトが出力されることを特定する。
ステップS24では上記の情報に基いてファイルを作成する。
オペレーションの呼出部分を作成する。具体的には次のようになる。
LogicHandler handler=new LogicHandler();
ResultBean res=handler.logicOperation(SearchConditionBeanのオブジェクト、UserBeanのオブジェクト);
オペレーションの呼出部分を作成する。具体的には次のようになる。
LogicHandler handler=new LogicHandler();
ResultBean res=handler.logicOperation(SearchConditionBeanのオブジェクト、UserBeanのオブジェクト);
次に終了状態からの返り値の記述方法について説明する。例えば複数のアクティビティ図の間で、プログラムのサブルーチンに対応する部分的なアクティビティ図(モジュール)がある場合には、その部分的なアクティビティ図からその呼び出し元への返り値が終了状態に対応して必要となるが、その記述方法について図12から図15を用いて説明する。図12は単一終了状態に付随する返り値の表記方法の説明図である。同図においては終了状態58に付随する返り値は入力値としてのオブジェクト47となり、この終了状態が含まれるオペレーションの仕様は次のように記述される。
ResultBean メソッド名(引数);
図12で、終了状態58とオブジェクト47との間に依存関係がない場合には、返り値が無いものとして扱われる。その場合、この終了状態58が含まれるオペレーションの仕様は次のように記述される。
図12で、終了状態58とオブジェクト47との間に依存関係がない場合には、返り値が無いものとして扱われる。その場合、この終了状態58が含まれるオペレーションの仕様は次のように記述される。
void メソッド名(引数);
図13は終了状態に対応して式などを設定し、終了状態に対応する動作、および処理を指定する例である。同図において終了状態58に対応してURL59が設定されており、終了状態58から、例えばこのURLによって指定されるメニュー画面への移動動作を設定することが可能となる。
図13は終了状態に対応して式などを設定し、終了状態に対応する動作、および処理を指定する例である。同図において終了状態58に対応してURL59が設定されており、終了状態58から、例えばこのURLによって指定されるメニュー画面への移動動作を設定することが可能となる。
図14は例外の終了状態に付随する返り値の記述例の説明図である。同図の例では、終了状態59が含まれるオペレーションの仕様は、SearchExceptionをthrows句に記述することにより、次のような形式となる。
返り値 メソッド名(引数) throwsSearchException;
返り値 メソッド名(引数) throwsSearchException;
図15は複数の終了状態を含むアクティビティ図の例である。同図においてActivity1 55からの遷移が行われる終了状態normal61からは、2つのオブジェクト44、47が返り値となり、またActivity2 60からの遷移が行われる終了状態hyper62からの返り値はオブジェクト45となる。そして終了状態61からの返り値に対してはインデックスの値によってその順序が指定されている。終了状態62からの返り値に対するインデックスは省略可能である。なお図の一番上のひし形は条件分岐を表す。この終了状態が含まれるオペレーションの仕様は次のように記述される。
NijoResultSet メソッド名(引数);
図8のフローチャートのステップS23では中間形式ファイル(XMI)を読み込んで
(1) この終了状態が含まれるオペレーションを検索し、メソッド名を特定する。
(2) 終了状態からリンクされた入力データが無しの場合には返り値としてvoidを特定する。入力データが1つの場合はリンクされたオブジェクト名を返り値として特定する。例外の場合はthrows句として特定する。複数の終了状態を持つ場合は、全部を含むNijoResultというクラスを作成し、その属性としてそれぞれの状態名と返り値のリンクおよび返り値のオブジェクトの順番を保持する。
(3) 式(URL)がリンクされているかどうかを検索し、特定する。
図8のフローチャートのステップS23では中間形式ファイル(XMI)を読み込んで
(1) この終了状態が含まれるオペレーションを検索し、メソッド名を特定する。
(2) 終了状態からリンクされた入力データが無しの場合には返り値としてvoidを特定する。入力データが1つの場合はリンクされたオブジェクト名を返り値として特定する。例外の場合はthrows句として特定する。複数の終了状態を持つ場合は、全部を含むNijoResultというクラスを作成し、その属性としてそれぞれの状態名と返り値のリンクおよび返り値のオブジェクトの順番を保持する。
(3) 式(URL)がリンクされているかどうかを検索し、特定する。
ステップS24では上記の情報に基いてファイルを作成する。
(1) オペレーションのシグネチャを作成する時、それぞれのケースに応じたメソッドのシグネチャを書き出す。
(2) NijoResultの場合は、返り値をそのクラスの属性として、終了状態名に応じてSet/Getするメソッドを作成する。
(1) オペレーションのシグネチャを作成する時、それぞれのケースに応じたメソッドのシグネチャを書き出す。
(2) NijoResultの場合は、返り値をそのクラスの属性として、終了状態名に応じてSet/Getするメソッドを作成する。
NijoResult res=new NijoResult();
res.set(normal,1,ResultBean);
res.set(normal,2,UserBean);
res.set(hyper,1,SearchConditionBean);
....
(3) 式がリンクされている場合は次の動作として書き出す。
res.set(normal,1,ResultBean);
res.set(normal,2,UserBean);
res.set(hyper,1,SearchConditionBean);
....
(3) 式がリンクされている場合は次の動作として書き出す。
図16は開始状態に付随する入出力オブジェクト表記方法の説明図である。同図において開始状態63からアクティビティ55への遷移が行われるが、同時に開始状態63が2つのオブジェクト44、45を出力しており、そのオペレーションの仕様は次のようになる。
返り値 オペレーション名(UserBean,SearchConditionBean);
返り値 オペレーション名(UserBean,SearchConditionBean);
図8のフローチャートのステップS23では中間形式ファイル(XMI)を読み込んで
(1) この開始状態が含まれるオペレーションを検索し、メソッド名を特定する。
(2) 開始状態からリンクされた出力データが無しの場合はパラメータ無しとして特定する。リンクがある場合には、それぞれindexの順番に基いてXMIファイルを検索して特定する。図16の例では、UserBeanが1つ目のパラメータ、2つ目のパラメータがSearchConditionBeanのように特定する。
(1) この開始状態が含まれるオペレーションを検索し、メソッド名を特定する。
(2) 開始状態からリンクされた出力データが無しの場合はパラメータ無しとして特定する。リンクがある場合には、それぞれindexの順番に基いてXMIファイルを検索して特定する。図16の例では、UserBeanが1つ目のパラメータ、2つ目のパラメータがSearchConditionBeanのように特定する。
ステップS24では上記の情報に基いてファイルを作成する。すなわちオペレーションに関するシグネチャの作成時にパラメータ名を書き出す。
次にアクティビティインスタンスのライフサイクル仕様の記述方法について、図17と図18を用いて説明する。一般に異なる画面遷移アクティビティ図上において、オブジェクトのスコープと識別子、例えば名前を指定することによって、同一のインスタンス、または異なるインスタンスに対するオペレーションを表現することができる。図17においては、左側の画面遷移図では、Check Conditionアクティビティ65が、右側の画面遷移図では、Search Conditionアクティビティ67が同じSearchUtilityオブジェクトフロー状態66をそれぞれ指定しているが、これらのオブジェクトのインスタンスがそのスコープをSessionとし、同じ名前を指定しているため、2つのオブジェクト66のインスタンスが同一のものであることが指定されている。
次にアクティビティインスタンスのライフサイクル仕様の記述方法について、図17と図18を用いて説明する。一般に異なる画面遷移アクティビティ図上において、オブジェクトのスコープと識別子、例えば名前を指定することによって、同一のインスタンス、または異なるインスタンスに対するオペレーションを表現することができる。図17においては、左側の画面遷移図では、Check Conditionアクティビティ65が、右側の画面遷移図では、Search Conditionアクティビティ67が同じSearchUtilityオブジェクトフロー状態66をそれぞれ指定しているが、これらのオブジェクトのインスタンスがそのスコープをSessionとし、同じ名前を指定しているため、2つのオブジェクト66のインスタンスが同一のものであることが指定されている。
オブジェクトの生存期間を示すスコープについては、5つの区別が可能なものとする。その種類としては、現在のフローに対応するページだけに有効なLocal、クライアントからのリクエストに対して応答が返るまでの間有効なRequest、サーバ側で管理され、画面が変わってもオブジェクトが生かされるSession、現在のアプリケーションの間有効なApplication、およびシステム全体で有効なSystemの5種類があるものとする。
図18は、異なるインスタンスの指定方式の記述例である。同図においてはアクティビティ65と67が、それぞれ同じクラス66を指定しているが、インスタンスの名前が異なることが示されている。
図17、図18に対応して図8のフローチャートの処理を説明する。ステップS23では中間形式ファイル(XMI)を読み込んで
(1) 図18ではCheckConditionにリンクされたNijoTargetInstance情報を検索し、その名前からSearchUtiltyクラスであることを特定する。関連情報としてScopeがSessionでオブジェクトの名前がutil1であることを特定する。
(2) SearchConditionにリンクされたNijoTargetInstance情報を検索し、その名前からSearchUtiltyクラスであることを特定する。関連情報としてScopeがSessionでオブジェクトの名前がutil2であることを特定する。
(3) 上記でオブジェクトの名前およびScopeが図17のように一致する場合には、同じインスタンスを呼び出すものと特定し、CheckConditionで使ったのと同じオブジェクトインスタンスをSearchConditionで使えるようにする。
(4) Scopeまたは名前が違う場合には異なるインスタンスなので、別々のオブジェクトを生成して使うようにする。
(1) 図18ではCheckConditionにリンクされたNijoTargetInstance情報を検索し、その名前からSearchUtiltyクラスであることを特定する。関連情報としてScopeがSessionでオブジェクトの名前がutil1であることを特定する。
(2) SearchConditionにリンクされたNijoTargetInstance情報を検索し、その名前からSearchUtiltyクラスであることを特定する。関連情報としてScopeがSessionでオブジェクトの名前がutil2であることを特定する。
(3) 上記でオブジェクトの名前およびScopeが図17のように一致する場合には、同じインスタンスを呼び出すものと特定し、CheckConditionで使ったのと同じオブジェクトインスタンスをSearchConditionで使えるようにする。
(4) Scopeまたは名前が違う場合には異なるインスタンスなので、別々のオブジェクトを生成して使うようにする。
ステップS24では上記の情報に基いてファイルを作成する。
上記特定事項に基いて、同じインスタンスを呼び出す場合はオブジェクトの受け渡しができるようにプログラムを生成する。実際には、メソッドの外でセッションごとのオブジェクトを作成し、オブジェクトテーブルにて管理しておくので、メソッド内で使うときには名前で引いてくるだけでよい。
上記特定事項に基いて、同じインスタンスを呼び出す場合はオブジェクトの受け渡しができるようにプログラムを生成する。実際には、メソッドの外でセッションごとのオブジェクトを作成し、オブジェクトテーブルにて管理しておくので、メソッド内で使うときには名前で引いてくるだけでよい。
インスタンスが異なる場合の例を具体的に以下に示す。
CheckConditionから呼び出されるSearchUtilty.javaクラスのメソッド
呼び出しターゲット=セッションオブジェクトテーブルget(util1);
呼び出しターゲット=check(...);
SearchConditionから呼び出されるSearchUtilty.javaクラスのメソッド
呼び出しターゲット=セッションオブジェクトテーブルget(util2);
呼び出しターゲット=search(...);
CheckConditionから呼び出されるSearchUtilty.javaクラスのメソッド
呼び出しターゲット=セッションオブジェクトテーブルget(util1);
呼び出しターゲット=check(...);
SearchConditionから呼び出されるSearchUtilty.javaクラスのメソッド
呼び出しターゲット=セッションオブジェクトテーブルget(util2);
呼び出しターゲット=search(...);
図19は、条件分岐に対する条件としてのパラメータ指定の記述方法の説明図である。図15で説明したように、アクティビティ図ではひし形で条件分岐が表されるが、従来は条件自体は記述することができても、条件判断の対象となるパラメータを指定することはできなかった。ここでは依存関係のあるオブジェクトを条件判断に対する入力パラメータとすることで、条件判断のパラメータを表現することを可能する。すなわち図19では、条件分岐68と依存関係があり、入力を与えるオブジェクト45の値を基にして分岐が行われる。オブジェクト45のnameプロパティが、“foo”であればアクティビティ69へ、そうでなければアクティビティ60への分岐が行われる。
図8のフローチャートのステップS23では中間形式ファイル(XMI)を読み込んで
(1) 分岐と分岐に関連する入力データSearchConditionBeanを検索して特定する。
(2) SearchConditionBeanクラスのインスタンスがcondと表記されていることから
分岐からの条件文[cond.name=“foo”]と[else]の行き先activityを特定する。
(1) 分岐と分岐に関連する入力データSearchConditionBeanを検索して特定する。
(2) SearchConditionBeanクラスのインスタンスがcondと表記されていることから
分岐からの条件文[cond.name=“foo”]と[else]の行き先activityを特定する。
if文の条件にcond.name=“foo”が入り、trueの場合にはActivity3に行くことがわかり、falseの場合にはActivity2に行くことがわかる。
ステップS24では上記の情報に基いてファイルを作成する。
上記仕様を反映するプログラムを書き出す。具体的には次のようになる。
if(cond.name=“foo”)
Activity3のターゲットクラス.メソッド名();
else
Activity2のターゲットクラス.メソッド名();
上記仕様を反映するプログラムを書き出す。具体的には次のようになる。
if(cond.name=“foo”)
Activity3のターゲットクラス.メソッド名();
else
Activity2のターゲットクラス.メソッド名();
最後に分散オブジェクト型コンポーネントの呼出仕様の記述方式について図20によって説明する。ここでは、分散オブジェクト型コンポーネントの代表アプリケーションとして、サーバサイドJavaにおける技術仕様であるEJB(Enterprise Java Beans)コンポーネントを考え、Entity Beanを例として説明する。このようなEJBに代表される分散コンポーネントをアクティビティ図において呼び出すことによって、例えばフローチャートなどでやり取りを書いた場合の欠点、すなわち実際の動作で何度にもわたってリクエスト、レスポンスが発生し、それらをいちいち記述しなくてはならないという欠点を避けることができる。このような分散コンポーネントにおける処理は定型のため、コンフィグレーション情報さえあれば、ユーザが書くべきコードを組み立てることは容易である。このEJBアクティビティは、このような定型処理で扱われる情報を表す例として代表的なものである。
図8のフローチャートのステップS23では中間形式ファイル(XMI)を読み込んで
(1) CallingMyEntityBeanアクティビティのステレオタイプがNijoEJBであることを特定し、EJBコンポーネントを呼び出すための情報を探す。
(2) <<NijoTargetInstance>>でFinderが付いていないので、MyEntityBeanが呼び出すクラスであることがわかる。
(3) Finderに指定されていないEntityArgumentBeanが<<NijoIn>>であることからdoBusinessのパラメータとなることを特定する。
(4) CallingMyEntityBeanのタグ付き値からJNDI名=MyEntityBean,EJBのタイプがSessionではなくEntity、FinderOperation=MyEJBHome.findByPrimaryKey、呼び出しOperationがMyEntityBeanクラスのdoBusinessメソッドであることを特定する。
(5) <<NijoTargetInstance>>Finderに指定されているHomeオブジェクトと同じく、Finderに指定されている入力オブジェクトがFinderArgumentBeanHomeオブジェクトの同じFinderパラメータであることを特定する。
(6) <<NijoOut>>には、ResultBeanがあり、これが出力オブジェクトとなる。もう1つはEJBExceptionラベルが付いているので、例外時に出力されるExceptionクラスであることがわかる。例外時にはこのオブジェクトを出力してActivity3に移行し、正常時はActivity2に移行する。
(1) CallingMyEntityBeanアクティビティのステレオタイプがNijoEJBであることを特定し、EJBコンポーネントを呼び出すための情報を探す。
(2) <<NijoTargetInstance>>でFinderが付いていないので、MyEntityBeanが呼び出すクラスであることがわかる。
(3) Finderに指定されていないEntityArgumentBeanが<<NijoIn>>であることからdoBusinessのパラメータとなることを特定する。
(4) CallingMyEntityBeanのタグ付き値からJNDI名=MyEntityBean,EJBのタイプがSessionではなくEntity、FinderOperation=MyEJBHome.findByPrimaryKey、呼び出しOperationがMyEntityBeanクラスのdoBusinessメソッドであることを特定する。
(5) <<NijoTargetInstance>>Finderに指定されているHomeオブジェクトと同じく、Finderに指定されている入力オブジェクトがFinderArgumentBeanHomeオブジェクトの同じFinderパラメータであることを特定する。
(6) <<NijoOut>>には、ResultBeanがあり、これが出力オブジェクトとなる。もう1つはEJBExceptionラベルが付いているので、例外時に出力されるExceptionクラスであることがわかる。例外時にはこのオブジェクトを出力してActivity3に移行し、正常時はActivity2に移行する。
ステップS24では上記の情報に基いてファイルを作成する。この例では以下の内容のコードが生成される。
1. JNDIタグ付き値が指定されているために、MyEntityBeanをキーとしてMyEJBHomeオブジェクトを取得する。呼び出した結果得られたオブジェクトはMyEJBHomeオブジェクトフロー状態で示されるオブジェクトに格納される。
2. MyEJBHomeのfindByPrimaryKeyメソッドを呼び出す。その際、FinderArgumentBeanオブジェクトフロー状態で示されるオブジェクトを引数とする。呼び出した結果得られたオブジェクトはMyEntityBeanオブジェクトフロー状態で示されるオブジェクトに格納される。
3. 上記で得られたMyEntityBeanに対し、doBusinessメソッドを呼び出す。引数はEntityArgumentBeanオブジェクトフロー状態で示されるオブジェクトが使用される。結果はResultBeanに格納される。例外の場合、EJBExceptionに格納される。
1. JNDIタグ付き値が指定されているために、MyEntityBeanをキーとしてMyEJBHomeオブジェクトを取得する。呼び出した結果得られたオブジェクトはMyEJBHomeオブジェクトフロー状態で示されるオブジェクトに格納される。
2. MyEJBHomeのfindByPrimaryKeyメソッドを呼び出す。その際、FinderArgumentBeanオブジェクトフロー状態で示されるオブジェクトを引数とする。呼び出した結果得られたオブジェクトはMyEntityBeanオブジェクトフロー状態で示されるオブジェクトに格納される。
3. 上記で得られたMyEntityBeanに対し、doBusinessメソッドを呼び出す。引数はEntityArgumentBeanオブジェクトフロー状態で示されるオブジェクトが使用される。結果はResultBeanに格納される。例外の場合、EJBExceptionに格納される。
以上の説明ではUMLの画面遷移図、ロジックフロー図などのアクティビティ図を例として本発明の実施形態を説明したが、本発明の適用対象としてのプログラムの自動生成はUMLに限定されないことは当然である。
本発明は例えばWebプログラムなど、ユーザインタフェースを持つアプリケーションプログラムを開発する必要のあるすべての産業、例えばそのようなプログラムをユーザ対象のビジネス業者などに提供するソフトウエア開発産業などにおいて利用可能である。
10 定義体
11 自動生成ツール
12 アプリケーション
15 定義図/表
16 仕様定義ファイル
17 ソースコード、定義体等
18 仕様実行エンジン
20 プラットフォーム非依存部
21 画面デザイン
22 外部コンポーネント呼び出し
25 画面遷移
26 ロジックフロー
27 ビジネスアクティビティ実装
30 画面遷移図(アクティビティ図)
31 ロジックフロー図(アクティビティ図)
32 データ定義図
33 画面レイアウト(JSP)
34 画面項目定義(クラス図)
35 列挙定義(クラス図)
36 中間データ項目定義(クラス図)
11 自動生成ツール
12 アプリケーション
15 定義図/表
16 仕様定義ファイル
17 ソースコード、定義体等
18 仕様実行エンジン
20 プラットフォーム非依存部
21 画面デザイン
22 外部コンポーネント呼び出し
25 画面遷移
26 ロジックフロー
27 ビジネスアクティビティ実装
30 画面遷移図(アクティビティ図)
31 ロジックフロー図(アクティビティ図)
32 データ定義図
33 画面レイアウト(JSP)
34 画面項目定義(クラス図)
35 列挙定義(クラス図)
36 中間データ項目定義(クラス図)
Claims (10)
- ユーザインタフェースアプリケーションのプログラムを自動生成するためのプログラムであって、
画面と処理とが記述される形式の画面遷移図に相当する仕様書データであって、画面、および/または処理と入出力データとしてのオブジェクトとの間の関連付けを行うことが可能なアプリケーション開発用仕様書データを読み込むステップと、
該読み込まれた仕様書データを、前記画面、および/または処理とオブジェクトとの間の関連付けを含んで自動的に解釈し、ユーザインタフェースアプリケーションプログラムを生成するステップとを計算機に実行させるためのユーザインタフェースアプリケーション開発プログラム。 - 前記オブジェクトが画面表示の処理に対応するオブジェクトであり、前記仕様書データが該処理と表示される画面に対するデータ入出力オブジェクトとの関連付けに加えて、画面レイアウトをさらに示すことを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- 前記オブジェクトが画面遷移に関連する処理であって、外部の処理を呼び出すための処理に対応し、前記仕様書データが前記関連付けにおいて該関連する処理に対するそれぞれ複数の入力オブジェクト、または出力オブジェクトの順序を示すことを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- 前記仕様書データが、表示された画面上でユーザが次の状態遷移条件をさらに指定可能であることを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- 前記仕様書データが、前記画面遷移図上の1つ以上の終了状態にそれぞれ対応して、該終了状態の識別子、例外を含む状態の種類、終了時の動作を記述する式、画面遷移図の呼出元に対する1つ以上の返り値、該状態に対応するデータ入出力オブジェクトと入出力の順序をさらに定義可能であり、複数の画面遷移図間での呼出関係を含む終了状態の制御を可能とすることを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- 前記仕様書データが、前記画面遷移図上の開始状態に対応して、該状態に対応するデータ入出力オブジェクトと、入出力の順序をさらに定義可能であり、複数の画面遷移図間での呼出関係を含む開始状態の制御を可能とすることを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- 前記仕様書データが、複数の画面遷移図の間で同一名称のオブジェクトの複数のインスタンスが同一であるか否かを、該インスタンスに対するスコープの指定によりさらに区別可能とすることを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- 前記仕様書データが、前記画面遷移図内の分岐処理に対応して、該分岐の条件を示すパラメータ入力オブジェクトをさらに指定可能であることを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- 前記仕様書データが、分散オブジェクト型コンポーネントのプロトコルに基いて、分散オブジェクト型コンポーネントの呼出を可能にするデータをさらに含むことを特徴とする請求項1記載のユーザインタフェースアプリケーション開発プログラム。
- ユーザインタフェースアプリケーションの開発装置において、
画面と処理とが記述される形式の画面遷移図に相当する仕様書データであって、画面、および/または処理と入出力データとしてのオブジェクトとの間の関連付けを行うことが可能なアプリケーション開発用仕様書データを読み込む仕様書データ読込手段と、
該読み込まれた仕様書データを、前記画面、および/または処理とオブジェクトの間の関連付けを含んで自動的に解釈し、ユーザインタフェースアプリケーションプログラムを生成するプログラム生成手段とを備えることを特徴とするユーザインタフェースアプリケーション開発装置。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003435608A JP2005196291A (ja) | 2003-12-26 | 2003-12-26 | ユーザインタフェースアプリケーション開発プログラム、および開発装置 |
| US10/851,570 US20050149868A1 (en) | 2003-12-26 | 2004-05-21 | User interface application development program and development apparatus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003435608A JP2005196291A (ja) | 2003-12-26 | 2003-12-26 | ユーザインタフェースアプリケーション開発プログラム、および開発装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2005196291A true JP2005196291A (ja) | 2005-07-21 |
Family
ID=34708951
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003435608A Withdrawn JP2005196291A (ja) | 2003-12-26 | 2003-12-26 | ユーザインタフェースアプリケーション開発プログラム、および開発装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20050149868A1 (ja) |
| JP (1) | JP2005196291A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007087127A (ja) * | 2005-09-22 | 2007-04-05 | Open Stream Inc | データ生成プログラム、該プログラムを記憶した記憶媒体、オープンソースソフトウェア開発環境統合プログラム、該プログラムを記憶した記憶媒体 |
| JP2011159202A (ja) * | 2010-02-03 | 2011-08-18 | Nippon Telegr & Teleph Corp <Ntt> | テスト項目生成方法及び装置及びプログラム |
| JP2012221380A (ja) * | 2011-04-12 | 2012-11-12 | Hitachi Ltd | 自動プログラム生成装置、方法及びコンピュータプログラム |
| JP2017038808A (ja) * | 2015-08-20 | 2017-02-23 | 株式会社アトミテック | オンラインゲーム開発システム |
| US9858113B2 (en) | 2013-03-05 | 2018-01-02 | Fujitsu Limited | Creating execution flow by associating execution component information with task name |
Families Citing this family (25)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6647395B1 (en) * | 1999-11-01 | 2003-11-11 | Kurzweil Cyberart Technologies, Inc. | Poet personalities |
| US20060005174A1 (en) * | 2004-07-01 | 2006-01-05 | International Business Machines Corporation | Defining hierarchical structures with markup languages and reflection |
| US20060026555A1 (en) * | 2004-07-13 | 2006-02-02 | International Business Machines Corporation | Method and apparatus to support multiple hierarchical architectures |
| US20060059459A1 (en) * | 2004-09-13 | 2006-03-16 | Microsoft Corporation | Generating solution-based software documentation |
| US7596577B2 (en) * | 2005-04-12 | 2009-09-29 | Microsoft Corporation | Methods and systems for specifying a user interface for an application |
| JP2007052703A (ja) * | 2005-08-19 | 2007-03-01 | Fujitsu Ltd | テストシナリオ作成プログラム、テストシナリオ作成装置、テストシナリオ作成方法 |
| US7752607B2 (en) * | 2005-10-13 | 2010-07-06 | Sap Ag | System and method for testing business process configurations |
| US7925659B2 (en) * | 2006-10-09 | 2011-04-12 | Sap Ag | Business process change analysis and test case adaptation based on change detection |
| US8151247B2 (en) * | 2006-10-09 | 2012-04-03 | Sap Ag | Test data management |
| US8893089B2 (en) * | 2006-10-09 | 2014-11-18 | Sap Se | Fast business process test case composition |
| JP4899971B2 (ja) * | 2007-03-27 | 2012-03-21 | 富士通株式会社 | テスト仕様書作成プログラム、テスト仕様書作成装置、およびテスト仕様書作成方法 |
| US8276165B2 (en) * | 2008-05-29 | 2012-09-25 | Microsoft Corporation | Continuation-based runtime callback invocation |
| US8683432B2 (en) * | 2009-03-20 | 2014-03-25 | Microsoft Corporation | Providing execution context in continuation based runtimes |
| US20100293538A1 (en) * | 2009-05-15 | 2010-11-18 | Microsoft Corporation | Dynamic program updating in a continuation based runtime |
| US20120324377A1 (en) * | 2011-06-15 | 2012-12-20 | Microsoft Corporation | User interface extensibility for web application development tool |
| US9274762B2 (en) * | 2011-11-16 | 2016-03-01 | Raytheon Company | System and method for developing an object-oriented system |
| JP5903276B2 (ja) * | 2012-01-04 | 2016-04-13 | 富士通株式会社 | 表示制御プログラム及び該装置 |
| GB2517408A (en) | 2013-07-05 | 2015-02-25 | Blue Prism Ltd | System for automating processes |
| US9672010B2 (en) * | 2015-07-29 | 2017-06-06 | The Boeing Company | Unified modeling language (UML) analysis system and method |
| GB201702450D0 (en) | 2017-02-15 | 2017-03-29 | Blue Prism Ltd | System for optimising distribution of processing an automated process |
| WO2019051480A1 (en) * | 2017-09-11 | 2019-03-14 | Nextworld Llc | SYSTEMS AND METHODS FOR CREATING BUSINESS SOFTWARE |
| US10783061B2 (en) * | 2018-06-22 | 2020-09-22 | Microsoft Technology Licensing, Llc | Reducing likelihood of cycles in user interface testing |
| US10970052B2 (en) | 2018-10-19 | 2021-04-06 | Oracle International Corporation | System and method for enhancing component based development models with auto-wiring |
| GB2590967A (en) | 2020-01-10 | 2021-07-14 | Blue Prism Ltd | Method of remote access |
| US11269694B2 (en) | 2020-03-03 | 2022-03-08 | The Toronto-Dominion Bank | Automated API code generation |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0644339A (ja) * | 1992-03-06 | 1994-02-18 | Hewlett Packard Co <Hp> | 図形オブジェクト操作システム及び方法 |
| US5353401A (en) * | 1992-11-06 | 1994-10-04 | Ricoh Company, Ltd. | Automatic interface layout generator for database systems |
| US6366300B1 (en) * | 1997-03-11 | 2002-04-02 | Mitsubishi Denki Kabushiki Kaisha | Visual programming method and its system |
| US6346953B1 (en) * | 1999-02-04 | 2002-02-12 | Relativity Technologies | Method and system for recreating a user interface of an existing application text based user interface into a graphical user interface |
| US8479109B2 (en) * | 1999-08-19 | 2013-07-02 | National Instruments Corporation | Programmatically generating a graphical program in response to user input |
| US6404445B1 (en) * | 1999-12-30 | 2002-06-11 | Cybrant Corporation | Method and system for modeling data |
| JP2001344105A (ja) * | 2000-03-31 | 2001-12-14 | Hitachi Software Eng Co Ltd | Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体 |
| US7334216B2 (en) * | 2000-04-04 | 2008-02-19 | Sosy, Inc. | Method and apparatus for automatic generation of information system user interfaces |
| US6681383B1 (en) * | 2000-04-04 | 2004-01-20 | Sosy, Inc. | Automatic software production system |
| US7013297B2 (en) * | 2001-02-27 | 2006-03-14 | Microsoft Corporation | Expert system for generating user interfaces |
| US7882497B2 (en) * | 2001-05-17 | 2011-02-01 | Attachmate Corporation | Symbiotic computer application and system and method for generation and presentation of same |
| US20040046787A1 (en) * | 2001-06-01 | 2004-03-11 | Attachmate Corporation | System and method for screen connector design, configuration, and runtime access |
| US6941521B2 (en) * | 2002-03-29 | 2005-09-06 | Intel Corporation | Method for dynamically generating a user interface from XML-based documents |
| US7188336B2 (en) * | 2002-04-17 | 2007-03-06 | International Bussiness Machines Corporation | Multi-platform software interface and documentation generator |
| US7076766B2 (en) * | 2002-06-03 | 2006-07-11 | Steve Wirts | Software application development methods and framework |
| ATE411559T1 (de) * | 2002-06-12 | 2008-10-15 | Telelogic North America Inc | Bereitstellung einer dynamischen modellcodeassoziativität |
| US7506302B2 (en) * | 2002-10-22 | 2009-03-17 | The Boeing Company | System and methods for business process modeling |
| US7412658B2 (en) * | 2002-11-14 | 2008-08-12 | Sap Ag | Modeling system for graphic user interface |
| US6876314B1 (en) * | 2004-02-18 | 2005-04-05 | Robocoder Corporation | Self-generating automatic code generator |
-
2003
- 2003-12-26 JP JP2003435608A patent/JP2005196291A/ja not_active Withdrawn
-
2004
- 2004-05-21 US US10/851,570 patent/US20050149868A1/en not_active Abandoned
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007087127A (ja) * | 2005-09-22 | 2007-04-05 | Open Stream Inc | データ生成プログラム、該プログラムを記憶した記憶媒体、オープンソースソフトウェア開発環境統合プログラム、該プログラムを記憶した記憶媒体 |
| JP2011159202A (ja) * | 2010-02-03 | 2011-08-18 | Nippon Telegr & Teleph Corp <Ntt> | テスト項目生成方法及び装置及びプログラム |
| JP2012221380A (ja) * | 2011-04-12 | 2012-11-12 | Hitachi Ltd | 自動プログラム生成装置、方法及びコンピュータプログラム |
| US9858113B2 (en) | 2013-03-05 | 2018-01-02 | Fujitsu Limited | Creating execution flow by associating execution component information with task name |
| JP2017038808A (ja) * | 2015-08-20 | 2017-02-23 | 株式会社アトミテック | オンラインゲーム開発システム |
Also Published As
| Publication number | Publication date |
|---|---|
| US20050149868A1 (en) | 2005-07-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2005196291A (ja) | ユーザインタフェースアプリケーション開発プログラム、および開発装置 | |
| US11789706B2 (en) | Development system with improved methodology for creation and reuse of software assets | |
| KR100661393B1 (ko) | 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법 | |
| CA2641941C (en) | Legacy software modernization system | |
| Di Lucca et al. | WARE: A tool for the reverse engineering of web applications | |
| Di Lucca et al. | Reverse engineering Web applications: the WARE approach | |
| CN101271475B (zh) | 一种商业智能系统 | |
| US8024703B2 (en) | Building an open model driven architecture pattern based on exemplars | |
| WO2014155148A1 (en) | Method for transforming first code instructions in a first programming language into second code instructions in a second programming language | |
| CN118796180B (zh) | 一种代码的自动生成方法、装置、设备及介质 | |
| CN102426519A (zh) | 基于关联数据的bpel模板和服务的复用方法及其系统 | |
| CN101901148A (zh) | 基于autosar标准的ecu参数配置界面生成方法 | |
| Freeman | Essential TypeScript | |
| Tesoriero et al. | Transformation architecture for multi-layered webapp source code generation | |
| Oliveira et al. | Software process representation and analysis for framework instantiation | |
| JP2013037580A (ja) | 情報処理装置 | |
| Wilkes | Advanced Python Development | |
| Amyot et al. | Flexible verification of user-defined semantic constraints in modelling tools | |
| Koskinen et al. | Profile-based approach to support comprehension of software behavior | |
| Amalfitano et al. | Automated architecture recovery for embedded software systems: An industrial case study | |
| JP2009223856A (ja) | 支援システム、モデル生成装置、表示装置、支援方法、及び、製造方法 | |
| Dragaš et al. | A Novel Approach to Integration of Manual Changes in Generated Code: SeamlessMDD | |
| Tallis et al. | The Briefing Associate: A Role for COTS applications in the Semantic Web. | |
| El-Ramly et al. | Legacy systems interaction reengineering | |
| KR102876286B1 (ko) | 개발도구에서 맥락 정보를 활용한 ai 기반 프롬프트 자동 생성 시스템 및 방법과 이를 수행하는 프로그램 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060316 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080715 |
|
| A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090206 |