(57)【要約】表示時にプロトタイプＧＵＩの外観に一致する外観を有する実際ＧＵＩ（５５２、５５４）への変換のためのプロトタイプＧＵＩ（５００）を生成するための方法とシステムとコンピュータ可読媒体とが提供される。プロトタイプＧＵＩは最初に様々なＧＵＩエレメントに関して指定されたレイアウトおよび他の外観情報に基づいて作成され、外観情報を格納するが、実際ＧＵＩの一部分として使用される様々な非外観情報は格納しない対応するプロキシＧＵＩオブジェクト（５４０）が生成される。次に、プロトタイプＧＵＩに関するプロキシＧＵＩオブジェクトは、実際ＧＵＩと共に使用するための実際ＧＵＩオブジェクト（５５０）に変換され、実ＧＵＩオブジェクトに関して様々な非外観情報は様々な方法で指定される。
2005531083.tif 000002
【特許請求の範囲】
【請求項１】
実グラフィカルユーザインタフェース（ＧＵＩ）に変換するためのプロトタイプＧＵＩを生成するためのコンピュータによって実行される方法であって、
プロトタイプＧＵＩのＧＵＩエレメントの指示を受け取ること、
前記ＧＵＩエレメントに関する外観情報を含むプロキシＧＵＩオブジェクトによって前記指示されたＧＵＩエレメントを表現すること、
前記プロトタイプＧＵＩに関する前記プロキシＧＵＩを、実ＧＵＩの表示に使用するための実ＧＵＩオブジェクトに変換し、前記実ＧＵＩオブジェクトは前記プロキシＧＵＩオブジェクトからの前記外観情報を含むこと、
を含む方法。
【請求項２】
自動化された仕方で、プロトタイプグラフィカルユーザインタフェース（ＧＵＩ）を実ＧＵＩに変換することによってグラフィカルユーザインタフェースを生成するための計算システムにおける方法であって、前記プロトタイプＧＵＩは前記実ＧＵＩの視覚的外観をシミュレートし、
ＧＵＩデザイナのコントロールにしたがって、
生成すべき新たなプロトタイプＧＵＩの指示を受け取ること、
前記プロトタイプＧＵＩの視覚的表現を表示すること、
前記プロトタイプＧＵＩに加えられるべきＧＵＩエレメントであって、実ＧＵＩである時に外部データソースからのデータを表示するタイプの前記ＧＵＩエレメントの視覚的外観に関する情報を前記ＧＵＩデザイナから受け取ること、前記ＧＵＩエレメントを表現するためにプロキシＧＵＩオブジェクトであって、前記視覚的外観情報を含むが前記ＧＵＩエレメントに関する外部データソースの仕様を欠いている前記プロキシＧＵＩオブジェクトを作成すること、前記作成されたプロキシＧＵＩオブジェクトからの前記視覚的外観情報に基づいており、外部データソースからのデータのための１つ以上のプレースホルダを含む前記ＧＵＩエレメントの視覚的表現を含むように、前記プロトタイプＧＵＩの前記表示された視覚的表現を更新することとによって、反復的に、前記プロトタイプＧＵＩを生成すること、
前記プロキシＧＵＩオブジェクトの各々に関して、前記プロキシＧＵＩオブジェクトからの前記視覚的外観情報を含む前記実ＧＵＩに関する対応実ＧＵＩオブジェクトを生成することによって、自動化された仕方で前記プロトタイプＧＵＩを実ＧＵＩに変換すること、
ＧＵＩ開発者のコントロールにしたがって、外部データソースの仕様を含むように前記実ＧＵＩオブジェクトの各々を変更すること、
前記実ＧＵＩオブジェクトに対応する表示されたＧＵＩエレメントであって、各々は、前記対応する実ＧＵＩオブジェクトからの前記視覚的外観情報に基づいており、その実ＧＵＩオブジェクトに関して指定された前記外部データソースからのデータを含み、その結果として、前記プロトタイプＧＵＩの更新されて表示された前記視覚的表現と同一の視覚的外観を有し、そして外部データソースからの実データを含む前記表示されたＧＵＩエレメントを含むように前記実ＧＵＩを表示することを含む方法。
【請求項３】
前記プロトタイプＧＵＩの生成は、さらに、前記プロトタイプＧＵＩに加えられる前記ＧＵＩエレメントのレイアウトに関する前記ＧＵＩデザイナからの情報を受け取ること、そして前記レイアウト情報を含むように前記ＧＵＩエレメントを表現する前記プロキシＧＵＩオブジェクトを変更すること、を含み、前記実ＧＵＩへの前記プロトタイプＧＵＩの変換の最中に生成される前記実ＧＵＩオブジェクトは、さらに、前記プロキシＧＵＩオブジェクトからの前記レイアウト情報を含む請求項２に記載の方法。
【請求項４】
前記プロトタイプＧＵＩの生成は、さらに、ＧＵＩエレメントを保持するためのロケーションプレースホルダを含む前記プロトタイプＧＵＩに関するＧＵＩテンプレートに関して前記ＧＵＩデザイナから情報を受け取ることを含み、前記ＧＵＩエレメントの前記レイアウトに関する前記ＧＵＩデザイナからの情報は、ＧＵＩエレメントを前記ロケーションプレースホルダに割り当てることを含む請求項３に記載の方法。
【請求項５】
前記プロトタイプＧＵＩの生成は、さらに、実ＧＵＩである時に外部データソースからのデータを表示しないタイプである前記プロトタイプＧＵＩに加えられるべきＧＵＩエレメントの視覚的外観に関して前記ＧＵＩデザイナから情報を受け取ること、そしてその視覚的外観情報を含むそのＧＵＩエレメントを表現するプロキシＧＵＩオブジェクトを作成すること、を含む請求項２に記載の方法。
【請求項６】
ＧＵＩ開発者のコントロールにしたがって、実ＧＵＩにおける対応する表示ＧＵＩエレメントに機能を提供するためのソフトウェアルーチンの仕様を含むように、前記実ＧＵＩオブジェクトの少なくとも幾つかを変更すること、をさらに含む請求項２に記載の方法。
【請求項７】
前記実ＧＵＩへの前記プロトタイプＧＵＩの変換の最中に生成される前記実ＧＵＩオブジェクトは、前記対応するプロキシＧＵＩオブジェクトとは別個のオブジェクトであり、前記実ＧＵＩオブジェクトの生成は、前記対応するプロキシＧＵＩオブジェクトから情報をコピーすることを含む請求項２に記載の方法。
【請求項８】
前記実ＧＵＩの表示の後に、
前記プロトタイプＧＵＩに関する前記ＧＵＩエレメントの１つ以上を変更するために前記ＧＵＩデザイナから情報を受け取ること、
前記受け取った変更情報を反映させるために、そのＧＵＩエレメントを表現する前記プロキシＧＵＩオブジェクトを変更すること、
そのプロキシＧＵＩオブジェクトに対する変更を反映するために、前記変更されたプロキシＧＵＩオブジェクトに対応する前記実ＧＵＩオブジェクトを変更すること、
前記変更された実ＧＵＩオブジェクトに対応する変更された表示ＧＵＩエレメントであって前記ＧＵＩデザイナからの前記受け取った変更情報を反映する前記変更された表示ＧＵＩエレメントを含む、前記実ＧＵＩの更新されたバージョンを表示すること、
とによって前記実ＧＵＩを変更することを含む請求項２に記載の方法。
【請求項９】
前記ＧＵＩデザイナは非専門的ユーザであり、前記ＧＵＩ開発者は明確な専門的ユーザである請求項２に記載の方法。
【請求項１０】
実グラフィカルユーザインタフェース（ＧＵＩ）への変換のためにプロトタイプＧＵＩを作成するためのコンピュータによって実行される方法であって、
作成されるべきプロトタイプＧＵＩの指示を受け取ること、
前記プロトタイプＧＵＩのＧＵＩエレメントに関する外観情報のＧＵＩデザイナからの指示を受け取ること、
指示された外観情報を格納するが、実ＧＵＩの一部である時に対応するＧＵＩエレメントに関して必要とされる情報を欠いている前記ＧＵＩエレメントを表現するプロキシＧＵＩオブジェクトを作成すること、
前記プロキシＧＵＩオブジェクトからの前記格納された外観情報に基づいた前記ＧＵＩエレメントの視覚的表現を含む前記プロトタイプＧＵＩの視覚的表現を前記ＧＵＩデザイナに対して表示すること、
前記プロトタイプＧＵＩに関する前記プロキシＧＵＩオブジェクトを、実ＧＵＩに関する実ＧＵＩオブジェクトであって前記プロキシＧＵＩオブジェクトからの前記ＧＵＩエレメントに関する前記外観情報を含み、その結果として、前記プロトタイプＧＵＩの前記ＧＵＩエレメントの外観に一致する外観を有するが前記実ＧＵＩの一部分として機能することが可能である前記実ＧＵＩにおいてＧＵＩエレメントを表示するために使用されることが可能である前記実ＧＵＩオブジェクトに自動的に変換することから成る方法。
【請求項１１】
前記実ＧＵＩにおいて表示される時に対応するＧＵＩエレメントに関して必要とされており、１つの実ＧＵＩオブジェクトがそれから変換された１つ以上のプロキシＧＵＩオブジェクトにおいて欠落していた、前記１つの実ＧＵＩオブジェクトに関する非外観情報のＧＵＩ開発者からの指示を受け取ること、そして前記指示された非外観情報を含むように前記１つの実ＧＵＩオブジェクトを変更すること、を含む請求項１０に記載の方法。
【請求項１２】
前記１つの実ＧＵＩオブジェクトに関する前記非外観情報は、前記１つの実ＧＵＩオブジェクトに対応する前記ＧＵＩエレメントによって前記実ＧＵＩにおいて表示されるべき静的データを含む請求項１１に記載の方法。
【請求項１３】
前記１つの実ＧＵＩオブジェクトに関する前記非外観情報は、前記１つの実ＧＵＩオブジェクトに対応する前記ＧＵＩエレメントによって前記実ＧＵＩにおける表示のためにデータがそれから得られるデータソースの指示を含む請求項１１に記載の方法。
【請求項１４】
前記１つの実ＧＵＩオブジェクトに関する前記非外観情報は、呼び出される時に前記１つの実ＧＵＩオブジェクトに対応する前記表示ＧＵＩエレメントに関する機能性を提供するソフトウェアルーチンの指示を含む請求項１１に記載の方法。
【請求項１５】
前記１つの実ＧＵＩオブジェクトに関する前記非外観情報は、前記実ＧＵＩオブジェクトのもう１つのものに対応するもう１つの表示ＧＵＩエレメントに対する、前記１つの実ＧＵＩオブジェクトに対応する前記表示ＧＵＩエレメントの関係の指示を含む請求項１１に記載の方法。
【請求項１６】
前記１つの実ＧＵＩオブジェクトの変更は、前記１つの実ＧＵＩオブジェクトへの１つ以上の前記プロキシＧＵＩオブジェクトの自動変換の一部分として行われる請求項１１に記載の方法。
【請求項１７】
前記プロキシＧＵＩオブジェクトは、実ＧＵＩの一部分である対応するＧＵＩエレメントに関して必要とされる欠落した情報に関するスタブを含む請求項１１に記載の方法。
【請求項１８】
前記１つの実ＧＵＩオブジェクトは変更されたプロキシＧＵＩオブジェクトである請求項１１に記載の方法。
【請求項１９】
前記１つの実ＧＵＩオブジェクトは、前記１つの実ＧＵＩオブジェクトがそれから変換された前記１つ以上のプロキシＧＵＩオブジェクトとは別個のオブジェクトであり、前記１つの実ＧＵＩオブジェクトへのそのプロキシＧＵＩオブジェクトの自動変換は、そのプロキシＧＵＩオブジェクトからの情報を前記１つの実ＧＵＩオブジェクトにコピーすることを含む請求項１１に記載の方法。
【請求項２０】
前記ＧＵＩ開発者は、前記ＧＵＩデザイナとは異なる請求項１１に記載の方法。
【請求項２１】
前記実ＧＵＩオブジェクトに基づいて前記実際のＵＩを生成することを含む請求項１０に記載の方法。
【請求項２２】
前記プロキシＧＵＩオブジェクトに対応しかつ前記プロトタイプＧＵＩの前記ＧＵＩエレメントの外観に一致する外観を有するＧＵＩエレメントを含むように前記実際のＵＩを表示することを含む請求項１０に記載の方法。
【請求項２３】
前記ＧＵＩエレメントに関する前記指示された外観情報は、そのＧＵＩエレメントに関するレイアウト情報を含む請求項１０に記載の方法。
【請求項２４】
ＧＵＩエレメントに関するロケーションプレースホルダを含む前記プロトタイプＧＵＩに関するＧＵＩテンプレートの指示を受け取ることを含み、前記指示されたレイアウト情報は、ＧＵＩエレメントを前記ロケーションプレースホルダに関連付けることを含む請求項２３に記載の方法。
【請求項２５】
ＧＵＩエレメントの各々に関する指示された外観情報は、各々が別個の視覚的表現を有する複数のタイプのＧＵＩエレメントの１つの指示を含む請求項１０に記載の方法。
【請求項２６】
前記プロキシＧＵＩオブジェクトの各々は前記ＧＵＩエレメントの１つを表現するために作成され、前記作成されたプロキシＧＵＩオブジェクトの各々は、前記表現されたＧＵＩエレメントのタイプに少なくとも部分的に基づいている複数の別個のタイプの１つである請求項２５に記載の方法。
【請求項２７】
前記プロキシＧＵＩオブジェクトタイプの各々は別個のタイプの情報を格納することが可能である請求項２６に記載の方法。
【請求項２８】
前記プロトタイプＧＵＩは既存の実ＧＵＩに対応し、前記ＧＵＩエレメントに関する前記外観情報の前記受け取られた指示は、前記既存の実ＧＵＩに対する変更を反映する請求項１０に記載の方法。
【請求項２９】
前記プロキシＧＵＩオブジェクトを前記実ＧＵＩオブジェクトに変更することは、前記既存の実ＧＵＩに関する既存の実ＧＵＩオブジェクトを変更することを含む請求項２８に記載の方法。
【請求項３０】
プロトタイプグラフィカルユーザインタフェース（ＧＵＩ）のＧＵＩエレメントに関する外観情報のユーザからの指示を受け取ること、
前記ＧＵＩエレメントを表現するために前記指示された外観情報を含むプロキシＧＵＩオブジェクトを作成すること、
前記プロトタイプＧＵＩに関する前記プロキシＧＵＩオブジェクトを実ＧＵＩに関する実ＧＵＩオブジェクトに変換することであって、前記実ＧＵＩオブジェクトは前記プロキシＧＵＩオブジェクトからの前記ＧＵＩエレメントに関する前記外観情報を含むこと
とを含む方法を行うことによって、実ＧＵＩへの変換のためのプロトタイプＧＵＩを計算装置が生成することをその内容が生じさせるコンピュータ可読媒体。
【請求項３１】
前記方法は、前記プロキシＧＵＩオブジェクトからの前記外観情報に基づいた前記ＧＵＩエレメントの視覚的表現を含む前記プロトタイプＧＵＩの視覚的表現を表示することを含む請求項３０に記載のコンピュータ可読媒体。
【請求項３２】
前記方法は、前記実ＧＵＩオブジェクトに基づいておりかつその外観が前記プロトタイプＧＵＩの前記ＧＵＩエレメントに関する前記指示された外観情報に一致するＧＵＩエレメントを含むように、前記実ＧＵＩを表示することを含む請求項３０に記載のコンピュータ可読媒体。
【請求項３３】
前記コンピュータ可読媒体は計算装置のメモリである請求項３０に記載のコンピュータ可読媒体。
【請求項３４】
前記コンピュータ可読媒体は、前記内容を含む生成されたデータ信号を伝送するデータ伝送媒体である請求項３０に記載のコンピュータ可読媒体。
【請求項３５】
前記内容は、実行される時に前記計算装置が前記方法を実行することを引き起こす命令である請求項３０に記載のコンピュータ可読媒体。
【請求項３６】
実ＧＵＩへの変換のためのプロトタイプグラフィカルユーザインタフェース（ＧＵＩ）を作成する計算システムであって、
プロトタイプＧＵＩのＧＵＩエレメントに関する外観情報のユーザからの指示を受け取ること、そして前記ＧＵＩエレメントを表現するために前記指示された外観情報を含むプロキシＧＵＩオブジェクトを作成することができるＧＵＩプロトタイパコンポーネントと、
前記実ＧＵＩオブジェクトが前記プロキシＧＵＩオブジェクトからの前記ＧＵＩエレメントに関する前記外観情報を含むように、前記プロトタイプＧＵＩに関する前記プロキシＧＵＩオブジェクトを実ＧＵＩに関する実ＧＵＩオブジェクトに変換できるＧＵＩコンバータコンポーネント
とを含む計算システム。
【請求項３７】
実ＧＵＩオブジェクトに関する非外観情報のユーザからの指示を受け取ること、そして前記指示された非外観情報を含むように前記実ＧＵＩオブジェクトを変換することができるＧＵＩマッパコンポーネントをさらに含む請求項３６に記載の計算システム。
【請求項３８】
実ＧＵＩへの変換のためのプロトタイプグラフィカルユーザインタフェース（ＧＵＩ）を作成するコンピュータシステムであって、
プロトタイプＧＵＩのＧＵＩエレメントに関する外観情報のユーザからの指示を受け取り、そして前記ＧＵＩエレメントを表現するために前記指示された外観情報を含むプロキシＧＵＩオブジェクトを作成するための手段と、
前記実ＧＵＩオブジェクトが前記プロキシＧＵＩオブジェクトからの前記ＧＵＩエレメントに関する前記外観情報を含むように、前記プロトタイプＧＵＩに関する前記プロキシＧＵＩオブジェクトを実ＧＵＩに関する実ＧＵＩオブジェクトに変換するための手段
とを含むコンピュータシステム。
【請求項３９】
プロトタイプグラフィカルユーザインタフェース（ＧＵＩ）を変換することによって実ＧＵＩを作成するためのコンピュータによって実行される方法であって、
対応するＧＵＩエレメントに関する外観情報を含むプロトタイプＧＵＩに関する複数のプロキシＧＵＩオブジェクトの指示を受け取ること、
前記プロトタイプＧＵＩに関する前記プロキシＧＵＩオブジェクトを、前記プロキシＧＵＩオブジェクトからの前記外観情報を含む実ＧＵＩオブジェクトに変換することと、
前記実ＧＵＩオブジェクトに少なくとも部分的に基づいたＧＵＩエレメントを含む実ＧＵＩを生成すること、
とを含む方法。
【請求項４０】
前記実ＧＵＩを生成する前に、前記実ＧＵＩの前記ＧＵＩエレメントに関する非外観情報を含むように前記実ＧＵＩオブジェクトを変更することを含む請求項３９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の開示は、グラフィカルユーザインタフェース（「ＧＵＩ」）の開発に関し、特に、表示時に実際に用いるＧＵＩ（以降「実ＧＵＩ」と称す。）の外観がプロトタイプＧＵＩの外観と一致し、専門的なＧＵＩ開発者によって実ＧＵＩに容易に変換可能なプロトタイプＧＵＩの外観を、非専門的なＧＵＩデザイナが指定できるように、プロトタイプＧＵＩが容易に実ＧＵＩに変換される仕方でプロトタイプＧＵＩを作成することに関する。
【背景技術】
【０００２】
多くのソフトウェアプログラムやオンラインサービスは、ユーザが表示情報とインタラクションしてそれを受け取ることを可能にするグラフィカルユーザインタフェース（ＧＵＩ）を有している。当初は、基礎となるプログラムのためのソフトウェアコードを作成したソフトウェアエンジニア（「開発者」とも呼ばれる）が対応するＧＵＩを開発していたが、ソフトウェアエンジニア以外の非専門的な人間が少なくともＧＵＩの部分をデザインすることが多くなっている。こうした非専門的なＧＵＩデザイナには、人間−コンピュータインタフェースの最適化を専門に扱う心理学者、または、ソフトウェアまたはオンラインサービスコンポーネントを有する製品に関するプロダクトマネージャとして働くビジネスマンのような、様々な状況における様々なタイプの人間が含まれる。
【０００３】
不幸なことに、ＧＵＩを生成する既存の技術は、非専門的なＧＵＩデザイナや専門的なＧＵＩ開発者のような複数の異なる人間のインタラクションを容易には行なわない。例えば、非専門的なＧＵＩデザイナは、ＧＵＩの一部分である様々なＧＵＩエレメント（例えば、ボタン、スクロールバー、ポップアップウインドウ、ドロップダウンメニュー、テキスト入力エリア、テーブル、チャート、画像、ビデオ、テキスト表示エリア等）の外観を手作業で指定するために、例えば、作図プログラムまたはデスクトップパブリッシングプログラムを使用することによって、様々な方法でＧＵＩの視覚的外観をシミュレートすることが可能である。これに加えて、例えば、シミュレートされたＧＵＩに（例えば、ドラッグドロップのインタラクションによって）加えられることができる様々なＧＵＩエレメントの視覚的表現を与えることによって、シミュレートされたＧＵＩの外観の作成を補助するように特に設計された、ＧＵＩデザイナが入手し得るソフトウェアツールも存在する。しかし、こうした技術はＧＵＩデザイナがＧＵＩのシミュレートされた外観を特定することを可能にするが、例えば、シミュレートされた外観の複雑さのせいで、または、実ＧＵＩの表示能力および／または機能性を正確に表現しないシミュレートされた外観の諸側面のせいで、同一の外観を有する実ＧＵＩをＧＵＩ開発者が生成することは困難であり、更には不可能でさえあり得る。
【０００４】
さらに、既存の技術は、ＧＵＩ開発者に様々な方法で実ＧＵＩを作成することを可能にする。例えば、ソフトウェア開発ツールは、実ＧＵＩの一部分として表示されるべきＧＵＩエレメントに対応した基礎となるＧＵＩオブジェクトをＧＵＩ開発者が指定することを可能にする。このＧＵＩエレメントは様々なタイプでもよく、そして対応するＧＵＩオブジェクトはこれらのＧＵＩエレメントの表示をサポートする様々な情報を含んでいてもよい。例えば、幾つかのＧＵＩエレメントがデータ（例えば、データベースのような外部データソースからのデータ）を表示し、そのソフトウェア開発者は、対応するＧＵＩオブジェクトに対して表示されるデータに関係する情報（例えば、外部データソースにアクセスするためのデータバインディング、又は表示データを選択および／またはフォーマットするための情報）を指定することが可能である。さらに、幾つかのＧＵＩエレメントが様々な形でユーザとのインタラクションに応答し、様々な機能性を提供し、および／または、他のＧＵＩエレメントとの様々なタイプの相互依存性を有し、ソフトウェア開発者は、そのインタラクション応答と機能性と相互依存性を実現するための対応するＧＵＩオブジェクトに関する情報（例えば、様々なタイプのインタラクションまたはイベントを取り扱うためのソフトウェアルーチンの指示）を指定することが可能である。しかしながら、そのような技術は、ＧＵＩ開発者が実ＧＵＩの一部分として使用される基礎となるＧＵＩエレメントを指定できるようにするが、非専門的なＧＵＩ開発者がそうした実ＧＵＩの作成に容易に参加できるようにはしない。
【０００５】
様々なソフトウェア開発ツール（すなわち、「ＳＤＴ」）がＧＵＩ開発者に利用可能であり（例えば、２００１年６月以前に市販品として入手可能なＳｉｅｂｅｌ  ｅＢｕｓｉｎｅｓｓ  Ａｐｐｌｉｃａｔｉｏｎｓ、バージョン７のＳｉｅｂｅｌ  Ｔｏｏｌｓ部分）、実ＧＵＩを含むソフトウェアプログラムの作成および／または変更を補助する様々な追加の機能性を提供することが可能である。
【０００６】
ＳＤＴは、生成するソフトウェアを様々な形で要約し、次にその要約に関する機能性を提供することができる。例えば、幾つかのＳＤＴは、特定のレイヤ内のオブジェクトが次の低次のレイヤ内のオブジェクトに依存し、そして他のレイヤから隔離されている階層化アーキテクチャをサポートする。こうした階層化構造の１つは、論理ユーザインタフェースオブジェクトレイヤ（例えば、ユーザが目視してインタラクションする視覚インタフェースを定義するユーザインタフェースオブジェクトを含む）と、ビジネスオブジェクトレイヤ（例えば、ユーザインタフェースオブジェクトによってユーザに表示するために、データオブジェクトからのデータを論理データ構成に組み込むためのビジネスオブジェクトを含む）と、データオブジェクトレイヤ（例えば、ビジネスオブジェクトによるデータ構造にアクセスさせるために、基礎となるデータベースからのデータ構造の論理表現を提供するデータオブジェクトを含む）とを含む。このような階層化構造を有するＳＤＴは、対応するオブジェクトが生成されるソフトウェアプログラムの一部分として、そのレイヤの幾つかまたは全部において定義されることを可能にする。
【０００７】
さらに、オブジェクトは、例えば、生成されるソフトウェアプログラムの１つの部分を各オブジェクトに実行させることによって、ＳＤＴによって様々に使用されることも可能である。オブジェクトによって実行されるこうしたソフトウェアプログラムの部分は、例えば、ユーザインタフェースのエレメント（例えば、レコード選択のためのポップアップウィンドウ）、要約データ表示（例えば、データベースカラム）、または、直接データベース表示もしくは構成子（例えば、データベーステーブル間の結合関係）を含んでいてもよい。こうしたオブジェクトの属性が、そのオブジェクトが実現するソフトウェア構成子の特徴（例えば、名称、データタイプ、データベースカラムの長さ、または、ポップアップウィンドウのタイトルバーの標題）を表現してもよい。さらに、例えば、親オブジェクトがテーブルを表現し、子オブジェクトがそのテーブルのカラムを表現する場合のように、異なるオブジェクトの間の階層（すなわち、親子）関係をサポートすることができるＳＤＴもある。
【０００８】
ＳＤＴは、例えば割り当てられた値を有する１組の属性によって、作成されたオブジェクトを様々な形で表現してもよい。作成されたオブジェクトは、基礎となるオブジェクト指向プログラミング言語（例えば、Ｃ＋＋）におけるオブジェクトとして直接的に実現されてもよく、または、その代わりに、様々な仕方で要約されてもよい。これに加えて、オブジェクトの一部または全部が、例えば、関連付けられたセットの１つまたは複数のソフトウェアルーチンを有することによって（例えば、オブジェクトに割り当てられたＤＬＬを介して）、割り当てられた動作セットを有してもよい。ＳＤＴは、さらに、例えばオブジェクトのコアセット（ｃｏｒｅ  ｓｅｔ）のような１つまたは複数の既存オブジェクトを提供し、生成されるアプリケーションのための基礎としてその既存オブジェクトをユーザが使用することを可能にしてもよい。
【０００９】
さらに、そのタイプのオブジェクトがそれから生成されることが可能なオブジェクトタイプを有することをサポートすることができるＳＤＴもあり、そのオブジェクトタイプは定義された属性セットを有する。オブジェクトタイプから作成されたオブジェクトは、例えばユーザ指定値またはデフォルト値のような、オブジェクトタイプの属性の各々に関する値を有することもでき、幾つかのＳＤＴでは、対応するオブジェクトタイプの属性だけに関する値を有することに限定されてもよい。オブジェクトタイプがさらに他のオブジェクトタイプと親子関係を有してもよく、親オブジェクトタイプが多数の子オブジェクトタイプを有することが可能なＳＤＴもある。ＳＤＴは、さらに、例えば、特定の目的を有するオブジェクトタイプの事前定義セット（例えば、ユーザインタフェースユニットを定義する「アプレット」のためのアプレットオブジェクトタイプ、または、１つまたは複数のデータベーステーブルからデータレコード構造を各々が定義するビジネスオブジェクトのためのビジネスコンポーネントオブジェクトタイプ）のような１つまたは複数の既存オブジェクトタイプを提供することもできる。
【００１０】
さらに、複数の異なるプロジェクトの生成をサポートすることができ、その場合に、（例えば、作成されるアプリケーションの一部分であるオブジェクトを、そのアプリケーションが関連付けられているプロジェクトに関連付けるために）生成されるオブジェクトの一部または全部を１つまたは複数のプロジェクトに関連付けることができるＳＤＴがある。
【００１１】
ＳＤＴは、さらに、例えば、各ローがオブジェクトを表しかつ各カラムがそのオブジェクトの属性を表すテーブルを表示するオブジェクトエディタウィンドウのような、オブジェクトを目視および／または操作（例えば、追加、編集および削除）することを補助する様々なツールを提供することができる。オブジェクトに関する属性設定は、テーブル内の対応するセルをクリックすることと、新しい値（例えば、手作業で入力される値、または、ピックリスト（ｐｉｃｋ  ｌｉｓｔ）から選択される値）を提供することとによって、変更されてもよい。さらに、オブジェクトエディタウィンドウ内の選択されたオブジェクト（例えば、テーブルの選択されたロー）のような特定のオブジェクトの属性に関する追加の詳細を提供する属性ウィンドウを提供できるＳＤＴもある。同様に、Ｗｉｎｄｏｗｓ  ２０００またはＮＴにおけるＷｉｎｄｏｗｓ  Ｅｘｐｌｏｒｅｒプログラムの階層的オブジェクトタイプ関係に類似している階層的オブジェクトタイプ関係を表示するために視覚的メタファーを使用するオブジェクトエクスプローラウィンドウ（ｏｂｊｅｃｔ  ｅｘｐｌｏｒｅｒ  ｗｉｎｄｏｗ）のような、オブジェクトタイプを目視および／または操作するためのツールを提供できるＳＤＴもある。こうしたオブジェクトエクスプローラウィンドウは、例えばオブジェクトタイプがそのオブジェクトエクスプローラウィンドウ内で選択される時にオブジェクトエディタウィンドウ内で特定のタイプのオブジェクトを表示することによって、対応するオブジェクトエディタウィンドウに並行して動作してもよい。
【００１２】
さらに、オブジェクトを生成することを補助するための様々なツールを提供できるＳＤＴもある。例えば、ソフトウェアウィザードが、各オブジェクトタイプのオブジェクトを作成および構成するプロセスをユーザが行うことをガイドするために、様々なオブジェクトタイプの各々に関して提供されてもよい。特に、ウィザードは、様々なタイプの情報を提供することによってユーザをガイドし、次に作成されるオブジェクトに関する属性設定を指定するためにその情報を使用してもよい。様々なウィザードが、例えばテーブルアプレット、チャートアプレット、ツリーアプレット、フォームアプレット、マルチバリューグループアプレット（ｍｕｌｔｉｖａｌｕｅ  ｇｒｏｕｐ  ａｐｐｌｅｔ）、ピックリストアプレット（ｐｉｃｋ  ｌｉｓｔ  ａｐｐｌｅｔ）、ビュー（ｖｉｅｗ）、スクリーン等のような様々なオブジェクトタイプのために、特定のＳＤＴから得られてもよい。さらに、例えば、他のオブジェクトに対する無効な参照を検査するためのツールのような、オブジェクトが論理的に矛盾するということを確実にするのを促進するように、生成されたオブジェクトを妥当性検査するためのツールが利用可能であってもよい。
【００１３】
上述したように、ソフトウェアプログラムのユーザがインタラクションする視覚的インタフェースを定義するために、そのソフトウェアプログラムに関して論理ユーザインタフェースオブジェクトが指定されることを可能にすることができるＳＤＴがある。こうしたユーザインタフェースオブジェクトは、ビジネスオブジェクトからのデータのようなデータを、目視および／または変更のためにユーザに提供することができる。コントロールツールバーおよびメニューエレメント、ドロップダウンリスト、ビュータブ（ｖｉｅｗ  ｔａｂ）、スクリーンタブ、メニューボタン、コントロールボタン等を含む様々なユーザインタフェースエレメントが、ユーザインタフェースオブジェクトによって表現されてよい。
【００１４】
特定のＳＤＴにおける１つのタイプの論理ユーザインタフェースオブジェクトの一例が、テキストボックス、チェックボックス、コマンドボタン等のようなコントロールから構成されている、データコントロール、編集可能スクローリングテーブル、データ入力用フォーム、ビジネスグラフィックス、マルチバリューグループおよびレコード選択のためのポップアップウィンドウ等といった低レベルのユーザインタフェースエレメントによって構成されている高レベルユーザインタフェースエレメントを実現するために使用される「アプレット」オブジェクトタイプである。特定のＳＤＴでは、アプレットが（例えば、ビジネスコンポーネントのフィールドを目視し、編集し、変更するために）単一のビジネスコンポーネントのデータに対するアクセスを可能にし、および、単一のレコードのためのデータ入力を可能にするように、複数のレコードを表示するスクローリングテーブルを提供するように、または、ビジネスグラフィックスまたはナビゲーションツリー（ｎａｖｉｇａｔｉｏｎ  ｔｒｅｅ）を表示するように構成されることが可能であってもよい。
【００１５】
１つ以上の他のユーザインタフェースオブジェクト（例えば、アプレットオブジェクト）を、事前に定義された視覚的配置と論理データ関係とにおいてすべて一度に表示するために使用される「ビュー」ユーザインタフェースオブジェクトタイプをサポートすることができるＳＤＴもある。ビューは名称を有し、特定のユーザインタフェースでは、メニューからの名称および／または表示タブシンボルによって選択されてもよい。特定のＳＤＴでは、各ビューが単一のビジネスオブジェクトにマップされ、そうである場合には、こうしたビューにおける各アプレットが、そのビジネスオブジェクトにおけるビジネスコンポーネントにマップされてもよい。
【００１６】
さらに、適切なスクリーンユーザインタフェースオブジェクトタイプの場合のように、１つまたは複数の関係したビューの集まりである「スクリーン」をサポートすることができるＳＤＴがある。一部または全部のスクリーンにおけるビューが同一のビジネスオブジェクトにマップされるＳＤＴがある。さらに、スクリーン自体は視覚的構成子ではないが、その代わりに、いっしょに表示されるべきビューの論理的集まりであるＳＤＴがある。
【００１７】
ソフトウェアプログラム（すなわち「アプリケーション」）のためのユーザインタフェースとしてスクリーンの集まりを使用することができるＳＤＴがある。特定の状況下では、アプリケーションは、ウェブエンジン（ｗｅｂ  ｅｎｇｉｎｅ）がスクリーンを表示するためにＨＴＭＬページを生成するために使用される場合のように、そのアプリケーションにアクセスするためにユーザが指定することができる１つまたは複数の関連のＵＲＬを有してもよい。１つまたは複数のページタブが表示されてもよく、この場合に各ページタブオブジェクト（ｐａｇｅ  ｔａｂ  ｏｂｊｅｃｔ）はそのアプリケーションのスクリーンに関連付けられている。
【００１８】
さらに、ユーザインタフェースの様々なエレメントのレイアウトとフォーマッティングとを定義するテンプレート、オブジェクトがそのテンプレートのためにどのようにレイアウトされフォーマットされるべきかを指定するためにテンプレート内に挿入されるタグ、ＨＴＭＬまたはＸＭＬエレメントとその内容とがウェブ文書にどのように出現するべきかを定義するカスケーディングスタイルシート等のような、ユーザインタフェースの作成を補助するための追加の機能性を提供できるＳＤＴもある。
【００１９】
オブジェクトの目視および／または操作を補助するための上述のツールに加えて、さらに、ユーザインタフェースのエレメントのレイアウトの指定を補助するための、および／または、（例えばＷＹＳＩＷＹＧの形で）表示される時の実際の外観に類似した仕方でオブジェクト（例えば、ページ、アプレット、ビュー等）を表示するためのツールを提供できるＳＤＴもある。例えば、例えば加えられるオブジェクトのためのプレースホルダ（ｐｌａｃｅｈｏｌｄｅｒ）を有する関連のテンプレートに基づいて、そのオブジェクトの表示の上に他のオブジェクトをドラッグアンドドロップすることによって、ユーザがそのタイプのオブジェクトを変更および／または構築することを可能にするための、様々なタイプのオブジェクト（例えば、ビュー、アプレット、スクリーン、および、メニュー）のためのレイアウトウィンドウを提供できるＳＤＴもある。アプレットレイアウトウィンドウが、アプレットにコントールが加えられることを可能にし、ビューレイアウトウィンドウがアプレットとコントロールとがビューに加えられることを可能にし、および、スクリーン（または「ページ」）レイアウトウィンドウがビューとコントロールとがスクリーンに加えられることを可能する。加えられるべきオブジェクト（例えば、ビュー，アプレット、および、コントロール）の指示も様々な形で表示されてよい。さらに、既存のテンプレートを変更するための、および／または、新しいテンプレートを作成するための、さらには、必要に応じてテンプレートをオブジェクトに関連付けるためのツールを提供できるＳＤＴもある。
【発明の開示】
【００２０】
したがって、様々な既存の技術がＧＵＩの生成を補助するが、こうした技術は、非専門的なＧＵＩデザイナと専門的なＧＵＩ開発者のような複数の互いに異なる人間のインタラクションを容易にしない。したがって、非専門的なＧＵＩデザイナが表示された時の実ＧＵＩの外観が、プロトタイプＧＵＩの外観と一致するように容易に変換可能なプロトタイプＧＵＩを作成でき、複数の人間がＧＵＩの作成に関与可能にする方法を提供することが有益である。
【発明を実施するための最良の形態】
【００２１】
Ｉ．序論
以下では、表示された時の実ＧＵＩの外観が、プロトタイプＧＵＩの外観と一致するように容易に変換できるプロトタイプＧＵＩを作成可能としたソフトウェア機能について説明する。特定の実施形態では、プロトタイプＧＵＩに関する外観情報を指定する１人または複数人の非専門的なＧＵＩデザイナと、対応する実ＧＵＩのための様々な非外観情報を指定する１人または複数人の専門的なＧＵＩ開発者のような、複数の互いに異なる人間がそのプロセスに関与する。
【００２２】
特に、特定の実施形態では、ユーザが、プロトタイプＧＵＩに加えられるべき様々なＧＵＩエレメントを視覚的に選択し、次にそのＧＵＩエレメントに関するレイアウトおよび他の外観情報とを指定することとによって、プロトタイプＧＵＩを作成する。ＧＵＩエレメントとこれに対応する外観情報は、様々な方法でユーザによって指定される。例えば、特定の実施形態では、ユーザが、ツールバーから表示されたＧＵＩエレメントのタイプの指示を選択するドラッグアンドドロップ方法を使用してもよく、その代わりに表示されたポップアップメニューからＧＵＩエレメントタイプを選択してもよい。ユーザは、さらに、例えば、ＧＵＩエレメントの視覚的表現を所望の位置にドラッグすることによって、または、ポップアップメニューが使用されている時には、加えられるＧＵＩエレメントの位置をカーソルの位置に基づいて指示することによって、等の様々な仕方でＧＵＩエレメントに関するレイアウト情報を指定することもできる。ＧＵＩエレメントに関する様々な他のタイプの外観情報は、例えば、そのＧＵＩエレメントに特有の外観を有するようにそのＧＵＩエレメントに関するデフォルトの視覚的表現を変更すること（例えば、表示されるべきタイトルまたは他のテキスト、フォントのタイプとサイズ、ＧＵＩエレメントのサイズ情報、色情報等を指定すること）によって、その代わりに指定されたＧＵＩエレメントの一部または全部の中で共有されるべき外観情報（例えば、コントロールＧＵＩエレメントのカラースキームまたスタイル）を指定することによって、等の様々な仕方で指定できる。
【００２３】
ある実施形態では、ユーザがプロトタイプＧＵＩを作成するのを補助するために、様々な追加のツールが提供される。例えば、ソフトウェアＷＹＳＩＷＹＧ（Ｗｈａｔ  Ｙｏｕ  Ｓｅｅ  Ｉｓ  Ｗｈａｔ  Ｙｏｕ  Ｇｅｔ）レイアウトエディタが、任意の指定された外観情報にしたがって、そしてプロトタイプＧＵＩの外観が後に表示される時の対応する実ＧＵＩの外観と同一となる仕方で、ＧＵＩエレメントの視覚的表現を表示するのに使用できる。このレイアウトエディタは、さらに、例えば、ユーザからの（例えば、マウスまたはタブレット入力装置による表示スクリーン上の）視覚的指示に基づいて、そのユーザが様々なＧＵＩエレメントのレイアウトを容易に変更することを可能にする。また、ある実施形態では、上書きできるデフォルト外観情報等の様々な外観情報を提供するために、ＧＵＩテンプレートを選択して、プロトタイプＧＵＩと関連付けることが可能である。さらに、特定のＧＵＩエレメントは、１つ以上のタイプの１つ以上のＧＵＩエレメントを、各々が表示することができる指定された場所の１つ以上の場所プレースホルダを提供することによって、ＧＵＩエレメントのレイアウトを補助することができる。さらに、ある実施形態では、ソフトウェアウィザードまたは他のプログラムが、ＧＵＩエレメントを作成する一連のステップを通じてユーザをガイドすることによって、一部または全部のＧＵＩエレメント（例えば、テーブルおよびチャートのような複雑なタイプのＧＵＩエレメント）の作成を補助するために利用される。
【００２４】
ユーザが様々なＧＵＩエレメントを含むプロトタイプＧＵＩを作成すると、ソフトウェア機能は、ＧＵＩエレメントに対応するプロキシＧＵＩオブジェクトを生成する。このプロキシＧＵＩオブジェクトは、ユーザによって指定されているレイアウト情報と他の外観情報とを格納することができるが、実ＧＵＩの一部分として使用される様々な非外観情報（例えば、データベース、ソフトウェアコンポーネント、および／または、他のオブジェクトのような表示すべきデータを提供する外部データソースに対するデータバインディングと、ユーザインタラクションまたは他のイベントに応答して様々なタイプの機能性を提供するために実行されるソフトウェアハンドラルーチン（ｓｏｆｔｗａｒｅ  ｈａｎｄｌｅｒ  ｒｏｕｔｉｎｅ）に対するバインディングなど）は含まない。ある実施形態では、プロキシＧＵＩオブジェクトは、そうした非外観情報を格納するための格納領域および／またはアクセス機構を含まないが、一方、他の実施形態では、プロキシＧＵＩオブジェクトは、そうした非外観情報に対応するプロキシＧＵＩオブジェクトの一部分のためのプレースホルダ情報（すなわち、「スタブ（ｓｔｕｂ）」）を含んでもよい。他に、ある実施形態では、各タイプのＧＵＩエレメントは、そのタイプのＧＵＩエレメントに特有の情報を格納できる対応するタイプのプロキシＧＵＩオブジェクトを有する。
【００２５】
プロトタイプＧＵＩに関して１つ以上のＧＵＩエレメントが指定された後に、例えば、プロトタイプＧＵＩを作成するユーザから、または、実ＧＵＩの作成を完了するであろうユーザから受けた指示に基づいて自動的に、プロキシＧＵＩオブジェクトの一部または全部は、実ＧＵＩに関して使用する実ＧＵＩオブジェクトに変換される。実ＧＵＩオブジェクトは、対応するプロキシＧＵＩオブジェクトからの外観情報を含むが、実ＧＵＩオブジェクトの一部分として使用される様々な非外観情報を含むことも可能である。ある実施形態では、生成されたＧＵＩオブジェクトはプロキシＧＵＩオブジェクトとは別個のオブジェクトであるが、一方、他の実施形態では、生成されたＧＵＩオブジェクトは同一のオブジェクトであるがスタブ情報を伴い、それは実際の情報によって置き換えられる。実ＧＵＩオブジェクトに関する非外観情報は様々な仕方で提供可能であり、様々なタイプが可能である。例えば、ある実施形態では、ユーザ（例えば、開発者）が実ＧＵＩオブジェクトに関する情報の一部または全部を手作業で指定し、一方、他の実施形態では、非外観情報の一部または全部が変換プロセスの一部分としてまたは変換プロセス後に、実ＧＵＩオブジェクトに自動的に加えられてもよい。さらに、ある実施形態では、実ＧＵＩオブジェクトの一部でない追加のタイプの情報が、実ＧＵＩを完成させる一部分として指定されてもよい。
【００２６】
これに加えて、ある実施形態では、上述した方法が、プロトタイプＧＵＩに基づいて以前に生成された実ＧＵＩ、および／または、他の仕方で生成された実ＧＵＩのように、既存の実ＧＵＩを変更するために同様に使用可能である。そうした実ＧＵＩを変更するために、例えば変換プロセスの一部分として、以前に実ＧＵＩオブジェクトに変換されたプロキシＧＵＩオブジェクトの情報を検索することによって、または、その代わりに、逆の変換プロセスで新たなプロキシＧＵＩを生成することによって、プロキシＧＵＩオブジェクトが実ＧＵＩの実ＧＵＩオブジェクトと識別される。こうしたプロキシＧＵＩオブジェクトは、それによりプロトタイプＧＵＩの一部分として変更可能であり、変換が完了した後に（例えば、既存の実ＧＵＩオブジェクトを変換することによって、および／または、新たな実ＧＵＩオブジェクトを生成することによって）実ＧＵＩオブジェクトに変換されて戻される。
【００２７】
ＩＩ．システムの概観と全体的アーキテクチャ
一実施形態では、ソフトウェア機能が統合されている計算システムが、図１に示されるマルチレイヤアーキテクチャとして論理的に構造化される。特に、図１に示す論理マルチレイヤアーキテクチャでは、様々なアプリケーションをサポートするコモンサービスのためのプラットフォームを提供する。これらのサービスは、ユーザインタフェースレイヤ１１０と、オブジェクトマネージャレイヤ１２０と、データマネージャレイヤ１３０と、データ交換レイヤ１４０とを含んでもよい。
【００２８】
ユーザインタフェースレイヤ１１０は、１つ以上のアプリケーションと関連付けられるアプレット、ビュー、チャート、レポートのような様々な高レベルのＧＵＩエレメントを提供し得る。一実施形態では、様々なタイプのクライアントがユーザインタフェースレイヤ１１０を介してサポートされる。これらの様々なタイプのクライアントは、従来の接続クライアント、リモートクライアント、イントラネットを経由したシンクライアント（ｔｈｉｎ  ｃｌｉｅｎｔ）、Ｊａｖａシンクライアントもしくは非Ｗｉｎｄｏｗｓベースのオペレーティングシステム、インターネット経由のＨＴＭＬクライアント等を含んでもよい。
【００２９】
オブジェクトマネージャレイヤ１２０は、１つ以上のアプリケーションと関連付けられたビジネスルールまたはビジネスコンセプトの１つ以上のセットを管理し、そしてユーザインタフェースレイヤ１１０とデータマネージャレイヤ１３０との間のインタフェースを提供するように設計できる。一実施形態では、ビジネスルールまたはビジネスコンセプトは、ビジネス（または、「ビジネスプロセス」）オブジェクトとして表現できる。このビジネスオブジェクトは、アカウント、コンタクト、オポチュニティ、サービスリクエスト、ソリューション等の様々なビジネスルールやビジネスコンセプトを構成できるソフトウェア表現としても設計し得る。
【００３０】
データマネージャレイヤ１３０は、基礎となるデータの論理ビューを維持するように、そして中にデータが格納される基礎となるデータ構造またはテーブルとは独立にオブジェクトマネージャが機能できるように設計されてよい。一実施形態では、データマネージャ１３０は、データにリアルタイムでアクセスする際の構造化問合せ言語（ＳＱＬ）を生成するような特定のデータベース問合せ機能を提供することもできる。一実施形態では、データマネージャ１３０は、データベーススキーマを定義するリポジトリファイル１６０内にオブジェクト定義を行なうように設計される。データ格納サービス１７０は、１つ以上のアプリケーションに関連付けられるデータモデルのデータ格納を提供する。
【００３１】
データ交換レイヤ１４０は、１つ以上の特定ターゲットデータベースとのインタラクションを処理し、データマネージャレイヤ１３０と基礎となるデータソースとの間のインタフェースを提供するように設計してもよい。
【００３２】
図２は、ソフトウェア機能が動作可能な計算システム構成の一実施形態のブロック図を示す。特に、示されているマルチレイヤアーキテクチャは、１つ以上のソフトウェアレイヤが異なるマシン上に存在することを可能にする。例えば、ユーザインタフェースと、オブジェクトマネージャと、データマネージャとのすべてが専用ウェブクライアント上に存在してもよい。ワイヤレスクライアントのような他のタイプのクライアントの場合には、オブジェクトマネージャとデータマネージャはシステムサーバ上に存在してもよい。図２に示すシステム構成は、例示と説明のためのものであり、上述の方法の特定の実施及び適用に応じて変化してもよいことが当業者であれば認識され理解されるであろう。
【００３３】
一実施形態では、図２に示すシステム環境は、２つ以上のデータベース２９０を含んでもよく、データベースの１つ以上のサブセットが生成され、または複製マネージャによって複製可能である。さらに、モバイルウェブクライアントが、データベース２９０（このクライアントに対してローカルデータベースと呼ばれる）に関する追加のリモートデータベースを有することが可能である。一実施形態では、モバイルウェブクライアントと関連するリモート／ローカルデータベースが読出し専用データベースとして定義されない場合、このモバイルウェブクライアントは、各モバイルウェブクライアントがシステムサーバと同期する時に、主データベースに最終的に伝達されるデータをローカルで生成して更新できる。
【００３４】
一実施形態では、データベース２９０は、事前に定義されたデータスキーマ（例えば、テーブルオブジェクト、インデックスオブジェクト、等）と、リポジトリオブジェクト（例えば、ビジネスオブジェクトおよびコンポーネント、ビュー定義、可視性ルール、等）と、ユーザおよび顧客のデータとを含む様々なタイプのデータを格納するように設計される。専用ウェブクライアントとサーバコンポーネントは、他のタイプのクライアントと協働して動作するそれらを含み、データベース２９０に直接接続され、そしてリアルタイムに変化させてもよい。さらに、モバイルウェブクライアントは、ローカルで使用するサーバデータのサブセットをダウンロードし、ローカルおよびサーバデータベースの両方を更新するためシステムサーバを経由してサーバデータベースと周期的に同期することができる。
【００３５】
ある実施形態では、データベース２９０に含まれる様々なテーブルが、次のタイプ、すなわち、データテーブル、インタフェーステーブル、リポジトリテーブル等に論理的に構成される。さらに、データテーブルは、ユーザビジネスデータ、管理データ、シードデータ（ｓｅｅｄ  ｄａｔａ）、トランザクションデータ等、を格納するために使用される。一実施形態では、これらのデータテーブルは様々なアプリケーションとプロセスとによってポピュレート（ｐｏｐｕｌａｔｅ）され更新される。データテーブルは、さらに、ベーステーブルと相互テーブル等を含むことができる。一実施形態では、ベーステーブルは、様々なアプリケーションによって定義され使用されるカラムを含んでもよい。一実施形態では、そのベーステーブルは、ビジネスコンポーネントのテーブル属性で指定されるビジネスコンポーネントのカラムを提供するように設計される。一実施形態では、相互テーブルは、２つのビジネスコンポーネントの間の多対多の関係を実現するために使用されるテーブルである。相互テーブルは、相互データカラムを保持してもよく、この相互データカラムは各々の連関に関係する情報を格納する。一実施形態では、相互テーブルが連関アプレット（ａｓｓｏｃｉａｔｉｏｎ  ａｐｐｌｅｔ）のためのデータ構造を提供する。
【００３６】
一実施形態では、インタフェーステーブルは、外部プログラムがインタフェースすることが可能な単一のテーブルの形に、１つのベーステーブルのグループをデノーマライズ（ｄｅｎｏｒｍａｌｉｚｅ）するために使用される。一実施形態では、インタフェーステーブルは、データをエクスポートおよびインポートするためのステージングエリアとして使用される。
【００３７】
一実施形態では、リポジトリテーブルが、次のものに関する１つ以上のアプリケーションを指定するオブジェクト定義を含む。
・クライアントアプリケーション構成、
・データをインポートおよびエクスポートするために使用されるマッピング、
・モバイルクライアントにデータを転送するためのルール。
【００３８】
一実施形態では、ファイルシステム２９５は、アプリケーションサーバ上に位置することができるネットワークアクセス可能ディレクトリである。一実施形態では、ファイルシステム２９５は、サードパーティのテキストエディタによって作成されたファイル、データベース２９０内に格納されていない他のデータのような、様々なアプリケーションによって生成された物理ファイルを格納する。一実施形態では、ファイルシステム２９５内に格納されている物理ファイルは圧縮され、様々な命名規則にしたがって格納される。一実施形態では、専用ウェブクライアントは、ファイルシステム２９５に対してファイルを直接読み書きすることができる。一実施形態では、モバイルウェブクライアントはローカルファイルシステムを有することが可能であり、モバイルウェブクライアントはサーバベースのファイルシステム２９０と定期的に同期する。一実施形態では、ワイヤレスクライアントやウェブクライアントのような他のタイプのクライアントが、システムサーバを経由してファイルシステム２９０にアクセスできる。
【００３９】
一実施形態では、エンタプライズサーバ２５０は、共通テーブルオーナーまたは共通ゲートウェイサーバに向けられたデータベースを共有するシステムサーバ２５５の論理グルーピング（ｌｏｇｉｃａｌ  ｇｒｏｕｐｉｎｇ）であり、サーバマネージャ２６０を使用するグループとして管理される。一実施形態では、ゲートウェイサーバへの接続がＴＣＰ／ＩＰによって確立される。一実施形態では、エンタプライズサーバ２５０は、そのエンタプライズサーバ２５０に複数のシステムサーバ２５５を配置し、それによってアプリケーションの中間層に高度のスケーラビリティを与えることによって、効率的に拡大される。
【００４０】
一実施形態では、サーバ２５５は、１つ以上のサーバプログラムを実行する。サーバ２５５は、着信する処理要求を処理し、サーバ上の全プロセスの状態を監視する。一実施形態では、サーバプログラムは、データのインポート／エクスポート、データベースの構築、ワークフローおよびプロセス自動化の実行、データの同期化と複製のためにモバイルウェブクライアントをサポートする処理、ビジネスルールの強化等を含む、１つ以上の特定の機能またはジョブを実行するように設計され構成されている。一実施形態では、サーバ２５５は、ＮＴサービス（Ｗｉｎｄｏｗｓ  ＮＴオペレーティングシステム配下の）、または、ＵＮＩＸオペレーティングシステム配下のデーモン（例えば、バックグラウンドシェルプロセス）である。一実施形態では、サーバ２５５は、マルチプロセスおよびマルチスレッドのコンポーネントの両方をサポートし、バッチモード、サービスモード、そしてインタラクティブモードのコンポーネントを操作することが可能である。
【００４１】
一実施形態では、サーバマネージャ２６０は、サーバ２５５とエンタプライズサーバ２５０の互いに異なるプログラムを横断して共通の制御、管理、監視を可能にするユーティリティとして構成されている。一実施形態では、サーバマネージャ２６０は、次のタスク、すなわち、サーバ２５５、コンポーネントおよびタスクをスタート、ストップ、ポーズ、リジュームすること、エンタプライズサーバ内の複数のタスク、コンポーネント、およびサーバに関して状態を監視して統計を取ること、エンタプライズサーバ、個別サーバ、個別コンポーネント、およびタスクを構成すること、等を実行するのに使用される。
【００４２】
一実施形態では、ゲートウェイサーバは、サーバにアクセスするための単一のエントリポイントとして機能する論理エンティティとして構成される。一実施形態では、ゲートウェイサーバは、エンタプライズサーバに対する強化されたスケーラビリティ、負荷分散、および高度の可用性を実現するために使用される。一実施形態では、ゲートウェイサーバは、ネームサーバと接続ブローカコンポーネントを含む。一実施形態では、ネームサーバは、そのサーバに関連付けられたパラメータを追跡するように構成される。例えば、そのサーバに関連付けられている可用性と接続可能性の情報をネームサーバ内に格納することができる。そのシステム内の様々なコンポーネントは、そのサーバの可用性と接続可能性に関する様々な情報をネームサーバに問い合わせることができる。Ｗｉｎｄｏｗｓ  ＮＴ環境においては、ネームサーバはＮＴサービスとして実行可能である。ＵＮＩＸ環境では、ネームサーバはデーモンプロセスとして実行可能である。一実施形態では、接続ブローカコンポーネントは、クライアント接続要求を適切なサーバ（例えば、最もビジーでないサーバ（ｔｈｅ  ｌｅａｓｔ  ｂｕｓｙ  ｓｅｒｖｅｒ））に送ることで負荷分散機能を実行する。
【００４３】
一実施形態では、図２に示されているように、そのシステムによってサポートされ得る様々なタイプのクライアントには、次のクライアント、すなわち、専用ウェブクライアント、モバイルウェブクライアント、ウェブクライアント、ワイヤレスクライアント、およびハンドヘルドクライアント、等が含まれる。
【００４４】
一実施形態では、専用ウェブクライアント（接続クライアントとも呼ばれる）は、ＬＡＮまたはＷＡＮ接続を経由してデータアクセスのためにデータベースサーバに直接接続される。一実施形態では、こうした接続クライアントまたは専用ウェブクライアントはローカルにデータを格納しない。これらの専用ウェブクライアントは、さらにファイルシステムに直接アクセスすることが可能である。一実施形態では、マルチレイヤアーキテクチャのユーザインタフェースレイヤ、オブジェクトマネージャレイヤ、およびデータマネージャレイヤが、その専用ウェブクライアント上に存在する。
【００４５】
一実施形態では、モバイルウェブクライアントは、ローカルデータアクセスのために設計および構成されており、したがって、それ自体のローカルデータベースおよび／またはローカルファイルシステムを有することが可能である。一実施形態では、モバイルウェブクライアントは、ゲートウェイサーバを経由してそのシステム内の他のコンポーネントとインタラクションすることが可能である。同期化によって、ローカルデータベースおよびサーバデータベースからの変更が交換される。
【００４６】
一実施形態では、ウェブクライアントは、クライアントのマシンから標準ブラウザフォーマットで実行する。一実施形態では、ウェブクライアントは、ウェブサーバを経由してシステムサーバ２５５に接続できる。一実施形態では、システムサーバ２５５は、ビジネスロジックを実行し、データベース２９０およびファイルシステム２９５からデータにアクセスするように設計され構成されている。一実施形態では、本明細書で説明されているウェブクライアントは、インタラクティブモードで動作するように設計され構成されている。一実施形態では、本明細書で説明されているインタラクティブウェブクライアントフレームワークは、サーバ側のオブジェクトに対応し、ブラウザ側のＪａｖａＳｃｒｉｐｔで実行される動的に生成されたオブジェクトを利用する。一実施形態では、ブラウザ側のこの動的に生成されたオブジェクトは、現在ビュー、それに対応するアプレット、現在ビジネスオブジェクト、およびそれに対応するビジネスコンポーネント等を含んでよい。
【００４７】
一実施形態では、ワイヤレスクライアントは、基本的に、ワイヤレスデバイス上で実行可能になるシンクライアントである。そのワイヤレスクライアントは、システムサーバと通信して情報／データを交換するために、ワイヤレスアプリケーションプロトコル（ＷＡＰ）ベースのユーザインタフェースを使用することが可能である。
【００４８】
図３は、マルチレイヤアーキテクチャの別の論理的表現を示すブロック図を示す。この場合も同様に、図３に示されているマルチレイヤアーキテクチャは、様々なアプリケーションをサポートするように設計された様々な共通サービスのために構成されたプラットフォームを提供する。一実施形態では、この様々なサービスは、アプレットマネージャおよびユーザインタフェースレイヤに対応するプレゼンテーションサービス、オブジェクトマネージャ（ＯＭ）レイヤおよびデータマネージャ（ＤＭ）レイヤとに対応するアプリケーションサービス、そしてデータベースレイヤに対応するデータサービス、を含んでよい。
【００４９】
一実施形態では、プレゼンテーションサービスは、様々なタイプのクライアントをサポートするように設計および構成され、ユーザインタフェースアプレット、ビュー、チャート、レポート等を様々なタイプのクライアントに提供できる。上述したように、ワイヤレスクライアント、ハンドヘルドクライアント、ウェブクライアント、モバイルウェブクライアント、専用（接続）クライアント等を含む様々なクライアントがサポートされる。
【００５０】
一実施形態では、アプリケーションサービスは、ビジネスロジックサービスとデータベースインタラクションサービスを含んでよい。一実施形態では、ビジネスロジックサービスは、ビジネスオブジェクトとビジネスコンポーネントのクラスとビヘビアを提供する。一実施形態では、データベースインタラクションサービスは、データに関するユーザインタフェース（ＵＩ）リクエストをビジネスコンポーネントから受け取り、このリクエストを満たすために必要なデータベースコマンド（例えば、ＳＱＬクエリー）を生成するように、設計され構成される。例えば、データインタラクションサービスは、データコールをＤＢＭＳ固有のＳＱＬステートメントに翻訳するのに使用される。
【００５１】
一実施形態では、データストレージサービスは、様々なアプリケーションの根本サービスとして基礎となるデータモデルのためのデータストレージを提供するように設計され構成される。例えば、そのデータモデルは、コールセンタ、セールス、サービス、マーケティング等の様々なソフトウェア製品とアプリケーション、同様にｅＦｉｎａｎｃｅ、ｅＩｎｓｕｒａｎｃｅ、ｅＣｏｍｍｕｎｉｃａｔｉｏｎｓ、ｅＨｅａｌｔｈｃａｒｅ等の様々な縦断的産業製品（ｉｎｄｕｓｔｒｙ  ｖｅｒｔｉｃａｌ  ｐｒｏｄｕｃｔ）、をサポートするように設計され構成される。
【００５２】
図４は、アプリケーションフレームワークの一実施形態のブロック図を示す。図４に示されているように、アプリケーションフレームワークは、ビジネス上の必要性と環境に応じて特定のアプリケーションを設計および構成するのに使用される様々なタイプのサービスおよび様々なタイプのツールの様々な論理グルーピングを含むことができる。
【００５３】
一実施形態では、コアサービスは、アプリケーションが実行されるフレームワークを提供するように設計され構成される。一実施形態では、そのコアサービスは次のものを含んでよい。
・中間層アプリケーションサーバであるエンタプライズサーバ、
・これらの部分すべてを互いにリンクさせるネットワーク、
・様々なアプリケーションと他の外部アプリケーションとの間と同様に様々なアプリケーションの複数のインスタレーションの間でデータの共有を可能にする、イベントマネージャおよびデータ複製のような機能、
・承認およびアクセスコントロール、セキュリティ機能。
【００５４】
一実施形態では、アプリケーション統合サービスは、このフレームワークにしたがって構築される様々なアプリケーションが外部世界と通信することを可能にするように設計され構成される。一実施形態では、この論理グルーピングの中の様々なタイプのサービスが、リアルタイム、疑似リアルタイム、およびバッチ単位で外部アプリケーションとの統合を実現するように設計され構成される。例えば、これらの統合サービスは、利用可能な方法と技術とソフトウェア製品とを使用して外部アプリケーションと内部アプリケーションとの間の通信を可能にするために使用される。一実施形態では、アプリケーション統合サービスは、システムまたはアプリケーションが他の外部エンタプライズアプリケーションとデータを共有し複製することを可能にする。したがって、このサービスでは、特定のアプリケーションまたはシステムが、情報を要求するクライアントと、そのクライアントから要求された情報を有するサーバとの両方であることを可能にする。
【００５５】
一実施形態では、ビジネスプロセスサービスは、クライアントがアプリケーションによってビジネスプロセスを自動化することを可能にするように設計され構成される。一実施形態では、この様々なビジネスプロセスサービスは次のものを含んでよい。
・割当マネージャによるタスクの割当、
・ワークフローマネージャによるビジネス慣行の実施、
・ビジネスサービスによるカスタムビジネスロジックの再使用、
・製品コンフィギュレータ（ｐｒｏｄｕｃｔ  ｃｏｎｆｉｇｕｒａｔｏｒ）と価格設定コンフィギュレータ（ｐｒｉｃｉｎｇ  ｃｏｎｆｉｇｕｒａｔｏｒ）とによる適正な製品構成と価格設定との確保。
【００５６】
一実施形態では、このビジネスプロセスの生成は、パーソナリゼーションデザイナ（ｐｅｒｓｏｎａｌｉｚａｔｉｏｎ  ｄｅｓｉｇｎｅｒ）、ワークフローデザイナ（ｗｏｒｋｆｌｏｗ  ｄｅｓｉｇｎｅｒ）、ＳｍａｒｔＳｃｒｉｐｔデザイナ（ＳｍａｒｔＳｃｒｉｐｔ  ｄｅｓｉｇｎｅｒ）、割当管理ビュー（Ａｓｓｉｇｎｍｅｎｔ  ａｄｍｉｎｉｓｔｒａｔｉｏｎ  Ｖｉｅｗ）、モデルビルダ（ｍｏｄｅｌ  ｂｕｉｌｄｅｒ）等のようなランタイムツール（Ｒｕｎ−Ｔｉｍｅ  ｔｏｏｌ）によって実行される。
【００５７】
一実施形態では、統合サービスは、クライアントにユーザインタフェースおよびシンクライアントサポートを提供するように設計され構成される。一実施形態では、この統合サービスは、ウェブベースのアプリケーションを構築して維持すること、ユーザプロファイル管理、コラボレーションサービス、電子メールサービス、そしてファックスサービス、同様に先進的なスマートスクリプティング（Ｓｍａｒｔ  Ｓｃｒｉｐｔｉｎｇ）、等のウェブサポート機能を提供することを含んでよい。
【００５８】
一実施形態では、デザインタイムツール（ｄｅｓｉｇｎ  ｔｉｍｅ  ｔｏｏｌ）は、アプリケーションをカスタマイズし、設計し、インテグレーションポイントを提供し、維持するためのサービスを提供するように設計され構成される。これらの様々なツールはアプリケーションを定義するための１つの共通の場を提供する。
【００５９】
一実施形態では、管理サービスは、アプリケーション環境を監視し管理するための１つの場を提供するように設計され構成される。一実施形態では、このサービスは、グラフィックユーザインタフェース（ＧＵＩ）を経由し、またはコマンドラインから、ユーザがアプリケーションを管理することを可能にする。
【００６０】
ＩＩＩ．具体例と追加の詳細な説明
以下では、例示のために、特定のタイプのＧＵＩエレメントを有する特定のタイプのプロトタイプＧＵＩが特定のタイプの方法で生成され、こうしたプロトタイプＧＵＩが特定の方法で特定のタイプの実ＧＵＩに変換される、ソフトウェア機能の幾つかの具体例を説明する。しかし、当業者は、本発明の方法が様々な他の状況において使用可能であるということ、本発明が、示されているタイプのプロトタイプＧＵＩと実ＧＵＩとに関する使用、または示されているタイプの変換プロセスに関する使用には限定されないということとを理解するだろう。
【００６１】
図５は、プロトタイプＧＵＩの生成と、このプロトタイプＧＵＩの実ＧＵＩへの変換とを示す。特に、例示されている実施形態では例えば非専門的なＧＵＩデザイナによって、プロトタイプＧＵＩの外観を視覚的に指定するために使用されるソフトウェアツールのためのユーザインタフェース５００が示されている。このソフトウェアツールユーザインタフェースは、そのソフトウェアツールのための１つ以上の表示されたツールバー上で使用可能な様々なメニューおよび／またはボタンのような、様々な機能性を提供するための様々なコントロール５０２を含む。さらに、そのユーザインタフェースは、作成されるプロトタイプＧＵＩに加えるために利用可能なＧＵＩエレメントタイプの様々な指示５０４を含む。ソフトウェアツールユーザインタフェースは、また作成されるプロトタイプＧＵＩの視覚的表現を表示するためのスクロールバーコントロール５０８と表示セクション５０６を含む。示されている実施形態では、表示セクション５０６は、ソフトウェアツールユーザインタフェースのその他の部分から二重線によってオフセットされている。
【００６２】
図示されている実施形態では、表示セクション５０６は、作成されるプロトタイプＧＵＩに関する様々なタイプのＧＵＩエレメントの視覚的表現を含む。特に、プロトタイプＧＵＩは、（例えば、データベーステーブルの複数のローからの情報を表示するための）テーブル（または「リスト」）ＧＵＩエレメント５２１、テキスト表示ＧＵＩエレメント５２３、ドロップダウンメニューＧＵＩエレメント５２５、入力選択ＧＵＩエレメント５２６、テキスト入力ＧＵＩエレメント５２７、グラフィカルチャートＧＵＩエレメント５２８、そしてスクロールバーコントロールＧＵＩエレメント５２９を含む。これらのＧＵＩエレメントの各々は、様々な関連したレイアウトと、他の外観情報とを有する。これに加えて、スクロールバー５２９を除くすべては、図中の実施形態におけるタイプであって、実ＧＵＩの一部分として使用される時に対応するデータを有する。
【００６３】
表示されるＧＵＩエレメントの各々は、表示されていないか、または、別の形でソフトウェアツールユーザインタフェースのユーザに対して対応する基礎となるプロキシＧＵＩオブジェクト５４０を有する。その対応はＧＵＩエレメントとプロキシＧＵＩオブジェクトとの間の点線によって示されている。例えば、メニューＧＵＩエレメント５２５はプロキシＧＵＩデータオブジェクト５４０ａに対応する。図示されている実施形態ではユーザはプロキシＧＵＩオブジェクトを目視しないかまたはそのオブジェクトにアクセスしないが、他の実施形態では、ユーザは、プロキシＧＵＩオブジェクトを直接的に目視および／または変更することが可能であり得る。図示されているように、プロキシＧＵＩデータオブジェクト５４０ａは、表示名称「ＡＢＣ」５４２ａと他の外観情報５４２ｂ（例えば、ロケーション、サイズ、フォントタイプ等）のような、ＧＵＩデザイナによってＧＵＩエレメントのために指示される様々な外観情報５４２を含む。この示されている実施形態のプロキシＧＵＩデータオブジェクト５４０ａは、メニュー項目の選択時に提供されるべき機能性、様々なタイプのインタラクション（例えば、右クリック）の処理に呼び出されるソフトウェアルーチン、および／または他の様々なＧＵＩエレメントとの相互依存性や他の関係といった、実ＧＵＩの一部分として使用するための非外観情報５４４に関する１つ以上のスタブも含む。その他のプロキシＧＵＩオブジェクト５４０の各々は、同様に様々な指定された外観情報を含み、そして様々な非外観情報を欠く。
【００６４】
図示されている実施形態において、ＧＵＩエレメントとプロキシＧＵＩオブジェクトとの間に１対１の対応が存在するが、他のタイプの相互関係も他の実施形態において存在し得る。例えば、単一のプロキシＧＵＩオブジェクトは単一のタイプの複数のＧＵＩエレメント（例えば、複数のメニュー）に対応してもよく、その代わりに、ＧＵＩエレメントの１つが複数の対応するプロキシＧＵＩオブジェクトを有していてもよい（例えば、テーブル５２１は、各ローおよび／またはカラムのためのオブジェクトや各セルのためのオブジェクトのように、複数のプロキシＧＵＩオブジェクトによって表現されてもよい）。さらに、他の実施形態では、様々な他のタイプのＧＵＩエレメントが使用可能であり、および／または、示されているタイプのＧＵＩエレメントの幾つかが使用されなくてもよく、またその代わりに、示されているタイプのＧＵＩエレメントが別の仕方（例えば、別個のテーブルＧＵＩエレメントではなく、一連の関連したカラムＧＵＩエレメントによってテーブルを指定すること）で指定されてもよい。さらに、コンテナオブジェクトの一部であるその他のＧＵＩエレメントに関するレイアウト情報を含むように、全体としてプロトタイプＧＵＩに対応するか、および／または、プロトタイプＧＵＩ（この図には示されていない）の複数の異なる表示ペイン（または、「ビュー」）の各々に対応する１つ以上のオブジェクトのように、他のタイプのプロキシＧＵＩオブジェクトが使用されてもよい。
【００６５】
この図示されている実施形態では、ＧＵＩエレメントの一部または全部が、例えば表示されたＧＵＩエレメントタイプ表示５４０の１つに関するドラッグアンドドロップ操作によって、視覚的にＧＵＩデザイナによって指定されてもよい。例えば、チャート５２８が、ＧＵＩエレメント表示５０４ａからドラッグされるプロセスにおいて示されている。この図示されている実施形態では、このＧＵＩエレメントの視覚的表現は、そのチャートのＸ軸とＹ軸とに関するタイトルのような後で指定されるデータのためのプレースホルダを含み、そして棒グラフ形式でデフォルトデータを使用するチャートの想定可能な外観を示す。この図示されている実施形態では、ＧＵＩデザイナは、チャートがプロトタイプＧＵＩに加えられた後に様々な仕方でそのチャートの外観を変更することが可能である。例えば、軸に関するタイトルを指定することによって、視覚的表現の一部分として使用されるべきサンプルデータを指定することによって、表示されるデータに関するフォーマッティングのタイプ（例えば、チャートのタイプ）を指定することによって、ＧＵＩエレメントのサブエレメント（例えば、凡例と軸線）を再指定すること等によって変更する。
【００６６】
この図示されている実施形態では、チャートは、ＧＵＩデザイナが望む任意の場所に配置されることが可能であるが、プロトタイプＧＵＩは、その代わりにまたはこれに加えて、テーブル５２１が以前その中に位置していたテンプレートロケーションプレースホルダ（ｔｅｍｐｌａｔｅ  ｌｏｃａｔｉｏｎ  ｐｌａｃｅｈｏｌｄｅｒ）５３１のように、１つ以上のＧＵＩエレメントが中に置かれる１つ以上のロケーションプレースホルダを含んでよい。さらに一般的には、ある実施形態では、一部または全部のプロトタイプＧＵＩが、１つまたは複数のそうしたロケーションプレースホルダを含む１つ以上の関連したＧＵＩテンプレートを有していてもよい。その場合には、ある実施形態において、プロトタイプＧＵＩに加えられるＧＵＩエレメントは、各々がそのロケーションプレースホルダに関連付けられる。さらに、この図には示されていないが、プロトタイプＧＵＩは複数の情報スクリーンまたは情報ページを含んでもよく、そしてスクリーン／ページ毎に複数のペインを含んでいてもよい。
【００６７】
プロトタイプＧＵＩが作成された後に、例えば、非専門的ＧＵＩデザイナから、または実ＧＵＩを完成させる専門的ＧＵＩ開発者から、プロトタイプＧＵＩを実ＧＵＩに変換するための指示が受け取られる。示されているように、この変換プロセスは、例えば、新しいオブジェクトを作成することによって、またはその代わりに、必要に応じてプロキシオブジェクトを変更することによって、プロキシＧＵＩオブジェクトに対応しかつこれらのプロキシＧＵＩオブジェクトに対して指定された外観情報の一部または全部を共有する実ＧＵＩオブジェクト５５０を生成することを含む。さらに、変換プロセスの一部分として、または変換プロセスが完了した後に、専門的ＧＵＩ開発者は実ＧＵＩオブジェクトに欠落した情報を提供することによって、図示されている実施形態における実ＧＵＩを完成させる。例えば、メニューＧＵＩエレメント５２５に関するプロキシＧＵＩオブジェクト５４０ａに対応する実ＧＵＩオブジェクト５５０ａについては、そのＧＵＩ開発者は、様々な静的メニュー選択項目名とこれに対応する機能を指定する。
【００６８】
さらに、ＧＵＩ開発者は、対応するＧＵＩエレメントを表示するデータを識別するために使用される様々なデータソース５６０に対して（スクロールバー５２９に対応する実ＧＵＩオブジェクト５５０ｂを除く）、他の実ＧＵＩオブジェクトの各々に関する様々なデータバインディングを指定する。特に、ＧＵＩエレメント５２６、５２７に関する実ＧＵＩオブジェクトは、示されたデータベースに対するデータバインディングを含み、そしてＧＵＩエレメント５２１、５２３、５２７に関する実ＧＵＩオブジェクトは、様々な指定されたビジネスプロセスオブジェクト（基礎となるコードによってサポートされており、かつ、それ自体として様々な外部データソースに対するデータバインディングを有してよい）に対するデータバインディングを含む。さらに、図示されている実施形態では、テーブルＧＵＩエレメント５２１に対応する実ＧＵＩオブジェクトに関する外観情報も、例えばビジネスプロセスオブジェクトからの情報に対するマッピングに基づいて、ＧＵＩ開発者によって変更される。図に示されているように、図示されている実施形態では、単一の実ＧＵＩオブジェクトは、複数のデータソースに対するデータバインディングを有していてもよく、複数の実ＧＵＩオブジェクトは、同一のデータソースに対するバインディングを有していてもよい。ＧＵＩ開発者は、さらに、他の実ＧＵＩオブジェクトまたはそれに対応するＧＵＩエレメントに対する様々なユーザインタラクションおよび／またはユーザインタラクションに関するソフトウェアハンドリングルーチンのように、実ＧＵＩオブジェクトに関する様々な他のタイプの非外観情報（図示されていない）を指定してよい。さらに、ある実施形態では、ＧＵＩ開発者は、実ＧＵＩを生成するプロセスの一部分として実ＧＵＩオブジェクトとは無関係な様々な情報を指定してもよく、および／または実ＧＵＩ生成の一部分として実ＧＵＩオブジェクトに対する追加のアクションを行ってもよい。
【００６９】
図６Ａから図６Ｇは、実ＧＵＩへの変換のためのプロトタイプＧＵＩの別の生成例を示す。特に、図示されている実施形態では、ソフトウェアウィザードが、ＧＵＩエレメントを作成するプロセスをユーザ（例えば、ＧＵＩデザイナ）が行うことをガイドするために使用される。
【００７０】
図６Ａは、プロトタイプＧＵＩを生成するためのソフトウェアツールのユーザインタフェース６００を示す。ユーザインタフェース６００は、１つ以上の関連したプロトタイプＧＵＩを各々が有するオブジェクト表現プロジェクト６０５ｂ、ＧＵＩエレメントとペインにそれぞれに関するプロキシＧＵＩオブジェクトを含むプロトタイプアプレットオブジェクト６０５ｂおよびプロトタイプビューオブジェクト６０５ｅ、そしてＧＵＩエレメントに関する実ＧＵＩと実ＧＵＩオブジェクトに関するペインをそれぞれに含むアプレットオブジェクト６０５ａおよびビューオブジェクト６０５ｃを含む、様々なタイプのオブジェクト６０５が階層的に視られることが可能なペインを含む。図示されている実施形態では、プロトタイプアプレットオブジェクト６０５ｄの指示が選択されており、これに応じて、主ビューペインが、そのプロジェクトのどれかに（図示されている実施形態では）加えられている様々なプロトタイプアプレット（例えば、プロキシＧＵＩオブジェクト）に関する情報を含む。
【００７１】
さらに、新たなプロトタイプアプレットをプロジェクトに加えるというユーザの指示に応答して、作成可能なプロトタイプアプレットのタイプの様々な表示６１５を含むポップアップウィンドウ６１０が表示されている。この図示されている実施形態では、表示されているタイプのプロトタイプアプレットの各々は、そのタイプのプロトタイプアプレットの作成を補助するために実行される関連ソフトウェアウィザードを有する。したがって、リストアプレット表示６１５ａの選択は、図６Ｂに示されているウィンドウ６２０を表示する対応リストアプレットウィザードの実行を促す。
【００７２】
図６Ｂについては、ウィザードは、生成されるリストアプレットが加えられることになるプロジェクト、そのプロジェクトに関して特有の新規なアプレットの名称、そしてそのアプレットに関する表示名称を、含む様々な情報６２５を、ユーザが指定することを促す。その情報が指定され、続行するために「次へ」ボタン６２１をユーザが選択した後は、図６Ｃに示すウィンドウ６３０が表示される。このウィンドウは、読出し専用の操作や編集操作のための個別のテンプレートとして生成されるアプレットと関連する様々なＧＵＩテンプレート６３７を（例えば、様々なＧＵＩテンプレートのリスト６３５から選択することによって）指定するようにユーザを促す。さらに、図示されている実施形態では、ウィンドウは、（例えば、ＧＵＩエレメントプレースホルダの場所を表示するために）リスト６３５内の選択されたテンプレートの視覚的表現６３９を表示する。そのリストアプレットに関して適切なテンプレートが選択され、表示された「次へ」ボタンをユーザが選択すると、ウィザードは、図６Ｄに示されているウィンドウ６４０を表示する。
【００７３】
ウィンドウ６４０は、（図示されている実施形態では複数のカラムを有するテーブルの視覚的表現を有する）リストアプレット内に表示されるべき１つまたは複数のフィールドの名称６４５と、そのフィールド名称の順序とを指定するようにユーザを促す。図示されている実施形態では、フィールド名称は、そのリストアプレットが実ＧＵＩの一部分として表示される時に、外部データソース（図示されている実施形態では、ビジネスプロセスオブジェクト、又は「ビジネスコンポーネント」）から得られるデータのタイプを表す。
【００７４】
フィールド名称を指定して、表示された「次へ」ボタンを選択すると、ウィザードは図６Ｅに示されているウィンドウ６５０を表示する。このウィンドウは、新たなアプレットの生成の完了前にユーザがそのユーザによって以前に指定された様々な情報を確認可能なように、その情報の要約を提供する。図示されている実施形態では、表示されているタイプの情報は、アプレット名称６５２、関連のプロジェクト６５４、様々なレイアウトテンプレート６５９を含む。さらに、ウィザードは、例えば、アプレットのタイプ、プロジェクト、および／または選択されたテンプレートに基づいて、作成されるべきオブジェクトに関する適切なタイプ６５７を自動的に選択している。このタイプのアプレットは、実ＧＵＩの一部分として表示される時に、外部データソースからのデータを使用するが、表示６５６は外部データソースの仕様がプロトタイプアプレットの作成の一部分としては必要でないことを示す。
【００７５】
プロトタイプアプレットに関する様々な情報が指定された後に、対応するＧＵＩエレメントの視覚的表現６６６が、図６Ｆに示されているように表示され得る。特に、プロトタイプＧＵＩを表すためのペイン６６５を含むウィンドウ６６０が示されている。さらに、図示されているＧＵＩエレメント６６６の図示されているカラム６６７ａの１つが選択されており、そしてそのウィンドウのペイン６６８が、選択されたサブエレメントに関する様々な詳細な情報を提供する。さらに、別のペイン６６２が、プロトタイプアプレットに関して未だ指定されていない様々なタイプの非外観情報に関する情報を提供する。
【００７６】
図示されているソフトウェアツールは、さらに、プロトタイプＧＵＩに関係している様々な他のタイプの機能を提供することが可能である。例えば、図６Ｇは、作成されたプロトタイプアプレットの要約表示６７３が示されているウィンドウ６７０と、新たに作成されたプロトタイプアプレットに関する様々な詳細を提供するペイン６７５とを示す。例えば、プロトタイプアプレットのレイアウトを編集するオプション６７４ａ、（例えば、すべての必要な情報が指定されているかどうか、および／またはその仕様が内部的に矛盾しているかどうかを判定するために）すでに作成されている様々なプロトタイプアプレットを検査するオプション６７４ｃとのように、提供可能な機能性に関する様々なオプションを有する（例えば、ユーザからの指示に応答して）ポップアップメニュー６７４も示されている。ポップアップメニューからのオプション６７４ａがユーザによって選択されると、プロトタイプアプレットの一部または全部（例えば、選択されたプロトタイプアプレット）が、実ＧＵＩのための実ＧＵＩオブジェクトに変換される。
【００７７】
当業者は、様々なタイプのプロキシＧＵＩオブジェクトが、適切なソフトウェアウィザードを使用することによって同様に作成されることが可能であり、複数のプロキシＧＵＩオブジェクトが単一のプロトタイプＧＵＩに加えられることが可能であるということを理解するであろう。他に、ある実施形態では、プロキシＧＵＩオブジェクトは、それが作成される時に、特定のプロトタイプＧＵＩまたはプロジェクトに加えられなくてもよく、その代わりに１つ以上のプロトタイプＧＵＩまたはプロジェクトで使用するために後で選択するようにしてもよい。
【００７８】
図７は、プロトタイプＧＵＩを生成する上述の方法を使用して、プロトタイプＧＵＩを実ＧＵＩに変換するのに適した計算システムの実施形態を示すブロック図である。特に、プロトタイプＧＵＩの生成に関連する様々な機能を提供するＧＵＩプロトタイパ計算システム７００が示されており、開発者が生成されたプロトタイプＧＵＩに基づいてそれから実ＵＩを生成可能な複数ＧＵＩ開発者コンピュータシステム７５０が示されている。
【００７９】
計算システム７００は、ＣＰＵ  ７０５、様々なＩ／Ｏデバイス７１０、記憶装置７２０、そしてメモリ７３０を含む。Ｉ／Ｏデバイスは、ディスプレイ７１１、ネットワーク接続７１２、コンピュータ可読媒体駆動装置７１３、そして様々な他のＩ／Ｏデバイス７１５を含む。計算システムとこの計算システムが提供する機能は、ユーザによって様々な形でアクセスされる。例えば、あるユーザは、計算システム７００に物理的にアクセスすることが可能であり、その場合には、計算システムとインタラクションするためにＩ／Ｏデバイス７１０を使用する。あるいは、他のユーザは、（例えば、ワールドワイドウェブを経由したり、イントラネットおよび／またはインターネットを経由して）計算システム７００にリモートアクセスするためにリモートクライアント計算デバイス（図示されていない）を使用することができる。
【００８０】
ＧＵＩプロトタイピングおよび変換システム７４０の１つの実施形態は、メモリ７３０内で実行され、これには、ＧＵＩプロトタイパコンポーネント７４２と、図示されている実施形態ではＧＵＩコンバータコンポーネント７４４とが含まれる。ＧＵＩプロトタイパコンポーネントは、ユーザがプロトタイプＧＵＩを作成することを補助し、ＧＵＩコンバータコンポーネントは、プロトタイプＧＵＩのプロキシＧＵＩオブジェクトを実ＧＵＩで使用するべく実ＧＵＩオブジェクトに変換する。より詳細に後述されるように、他の実施形態では、ＧＵＩコンバータコンポーネントは他の場所に存在してもよく、例えば、１つまたは複数のＧＵＩ開発者計算システム７５０の上や、その代わり又は、これに加えて、ＧＵＩプロトタイパ計算システム７００上に存在してもよい。プロトタイプＧＵＩを生成することに関係した機能をユーザに提供するために、この計算システムまたは他の計算システム上のメモリ７３０内で、１つ以上のＧＵＩオブジェクトウィザードモジュール７３２やＧＵＩ  ＷＹＳＩＷＹＧレイアウトエディタモジュール７３４のような様々な他のソフトウェアモジュールが実行されてもよい。ＧＵＩオブジェクトウィザードが存在する場合には、このＧＵＩオブジェクトウィザードは、ユーザがプロキシＧＵＩオブジェクトを生成するのを補助し、ＧＵＩ  ＷＹＳＩＷＹＧレイアウトエディタは、ユーザがプロトタイプＧＵＩの視覚的表現を表示してグラフィカルに変更することを補助する。
【００８１】
図示されている実施形態では、各プロトタイプＧＵＩは、関連したＧＵＩプロジェクトの一部分であり、そのプロトタイプＧＵＩに関する様々な外観情報（例えば、レイアウト情報）を指定する１つ以上の関連したＧＵＩテンプレートを有する。したがって、ユーザがプロトタイプＧＵＩ作成プロセスを開始する時には、図示されている実施形態ではＧＵＩプロトタイパコンポーネントが、関連するＧＵＩプロジェクトをユーザが指定することを可能にし、対応するＧＵＩプロジェクト定義７２６が存在していない場合には記憶装置７２０上にそれを生成する。さらに、ユーザは、例えば、図示されている実施形態では記憶装置内に存在する様々なＧＵＩテンプレート定義７２１から選択することによって、プロトタイプＧＵＩと共に使用する１つ以上のＧＵＩテンプレートを指定し、そのテンプレート情報はプロトタイプＧＵＩに関するプロジェクト定義に格納される（図示されていない）。
【００８２】
次に、ユーザは、例えば記憶装置７２０上の様々なＧＵＩエレメントタイプ定義７２５から選択することによって、プロトタイプＧＵＩに加える様々なＧＵＩエレメントを指定するために、ＧＵＩプロトタイパコンポーネントを使用する。加えられる表示ＧＵＩエレメントの各々に関して、ＧＵＩプロトタイパコンポーネントは、（例えば、ＧＵＩエレメントタイプの定義に基づいて）適切な対応するＧＵＩオブジェクトタイプを識別し、記憶装置７２０上の適切なＧＵＩオブジェクトタイプ定義情報７２３を使用して、そのタイプのプロキシＧＵＩオブジェクトを生成する。生成されたプロキシＧＵＩオブジェクト７２７に関する定義は、対応するＧＵＩプロジェクトに関する定義の一部分として記憶装置７２０上に格納される。
【００８３】
プロトタイプＧＵＩに関する情報が指定されると、次に、プロキシＧＵＩオブジェクトは、実ＧＵＩの一部分として使用する実ＧＵＩオブジェクトに変換される。図示されている実施形態では、ＧＵＩコンバータコンポーネントは、ＧＵＩプロトタイパ計算システムの一部分として含まれており、したがってシステム７４０のユーザはその変換を行うことを指示することが可能となる。この変換の一部分として、ＧＵＩコンバータコンポーネントは、プロキシＧＵＩオブジェクトの各々に関して適切な実ＧＵＩオブジェクトタイプ（例えば、プロキシＧＵＩオブジェクトと同一のタイプ）を決定し、プロキシＧＵＩオブジェクトの各々に対応する実ＧＵＩオブジェクトを生成する。次に、図示されている実施形態では、生成された実ＧＵＩオブジェクト定義７２９が、対応するＧＵＩプロジェクトの定義の一部分として記憶装置７２０上に格納される。生成された実ＧＵＩオブジェクトに関するこの情報は、例えばＧＵＩデザイナからの指示および／またはＧＵＩ開発者からのリクエストに基づいて、様々な形で１人以上のＧＵＩ開発者に対して利用可能となる。
【００８４】
プロトタイプＧＵＩが変換されると、その次に、ＧＵＩ開発者は、プロトタイプＧＵＩに基づいた実ＧＵＩの生成を完了するため、ＧＵＩ開発者計算システム７５０の１つを使用することが可能となる。この計算システム７５０の各々は、ＣＰＵ  ７５３、様々なＩ／Ｏデバイス７５４、記憶装置７５５、そしてＧＵＩマッパコンポーネント７５２の実行コピーを含むメモリ７５１を含む。ＧＵＩ開発者は、実ＧＵＩオブジェクトに関する適切な情報の仕様を完成させるためにＧＵＩマッパコンポーネントとインタラクションする。
【００８５】
ある実施形態では、ＧＵＩ開発者は、例えば、計算システム７００上のＧＵＩコンバータコンポーネントと遠隔的にインタラクションすることによって、またはその代わりに、特定の実施形態ではメモリ７５１内で実行し得るＧＵＩコンバータコンポーネントのコピーとインタラクションすることによって、プロトタイプＧＵＩの変換を開始することができる。しかし、図示されている実施形態では、この変換は、ＧＵＩデザイナによってすでに開始されており、したがって、実ＧＵＩオブジェクトの定義はすでに生成されている。この実ＧＵＩオブジェクト定義７５８は、図示されている実施形態では、例えば、ＧＵＩマッパコンポーネントによって、またはＧＵＩコンバータコンポーネントによって、対応するＧＵＩプロジェクトに関する定義７５７の一部分として記憶装置７５５にすでにコピーされている。しかし、他の実施形態では、ＧＵＩマッパコンポーネントは、（例えば、リモートデータベースから）実ＧＵＩオブジェクト定義の単一のコピーにアクセスできる。ここには示されていないが、ローカルＧＵＩプロジェクト定義７５７は、プロキシＧＵＩオブジェクト定義の一部または全部を含んでもよいが、実ＧＵＩオブジェクト定義がプロキシＧＵＩオブジェクトからの関連情報のすべてを含む場合には、その情報は必要ではない。
【００８６】
ＧＵＩ開発者は、例えば、実ＧＵＩの一部分として表示される情報を提供するデータソースに対するデータソースマッピング、および／または様々なタイプのユーザインタラクションおよび／または他のイベントを処理するための適当なソフトウェアルーチンのマッピングのように、実ＧＵＩオブジェクトに関する様々なタイプの追加情報を指定するためにＧＵＩマッパコンポーネントを使用することが可能である。次に、この指定されたＧＵＩオブジェクトマッピング情報７５９は、（例えば、実ＧＵＩオブジェクトの一部分として）生成される実ＧＵＩに関するＧＵＩプロジェクト定義の一部分として格納される。記憶装置上のビジネスプロセスオブジェクト情報７５６またはソフトウェアルーチン情報（図示されていない）のように、データソースに関する様々な情報またはマッピングされるべき他のタイプの情報は、またそのマッピングの一部分としてＧＵＩマッパコンポーネントによる使用のために利用可能であってもよい。ＧＵＩマッパコンポーネントは、ネットワーク上の様々なアクセス可能なデータソース７９０のような他の外部データソースに対して、および／または、１つまたは複数のアクセス可能な計算システム７７０の記憶装置７７５からアクセス可能なデータ７７７に対してデータバインディングを指定してもよく、同様に実ＧＵＩオブジェクトに関する他のタイプのリモート情報（図示されていない）を指定することもできる。
【００８７】
実ＧＵＩの生成の後には、この実ＧＵＩは様々な仕方で使用される。例えば、ユーザは、検査のために実ＧＵＩを表示することができる。さらに、実ＧＵＩは基礎となるコード（図示されていない）に関連付けられて、そのコードの実行の一部分として使用できる。
【００８８】
当業者は、他の実施形態において、上述の機能が他の仕方で、例えば、実ＧＵＩを生成するために、例示されているコンポーネントのすべてを使用する単一のユーザによって、提供され得ることを理解するであろう。より一般的には、計算システム７００、７５０は単に例として示されているにすぎず、本発明の範囲を限定することは意図されておらず、（例えば、インターネットのような１つ以上のネットワークを経由して、またはワールドワイドウェブを介して）図示されていない他のデバイスに接続されてもよい。他に、例えばＧＵＩプロトタイパコンポーネント、ＧＵＩコンバータコンポーネント、そしてＧＵＩマッパコンポーネントのすべてが単一の計算システム上に存在する場合には、上述の機能の一部または全部が単一の計算システム（例えば、スタンドアロンのシステム）によって提供されてもよい。さらに、示されているコンポーネントによって提供される機能は、ある実施形態では、より少ない数のコンポーネントを組み合わせてもよく、または追加のコンポーネント内に分散させてもよい。同様に、ある実施形態では、幾つかの示されているコンポーネントの機能が提供されなくてもよく、および／または他の追加の機能が利用されてもよい。
【００８９】
様々な項目がメモリに記憶され、または使用中に記憶装置に記憶されるが、これらの項目またはこれらの項目の一部が、メモリ管理とデータの完全性のためにメモリと他の記憶装置との間で転送されることが可能であるということを当業者であれば理解されるであろう。あるいは、他の実施形態では、ソフトウェアモジュールおよび／またはコンポーネントの一部または全部が別の装置上のメモリ内で実行され、コンピュータ間通信によって図示されている計算装置と通信できる。システムコンポーネントおよびデータ構造の一部または全部は、ハードディスク、メモリ、ネットワーク、または適切なドライブによって読み出されるポータブルアーティクル（ｐｏｒｔａｂｌｅ  ａｒｔｉｃｌｅ）のようなコンピュータ可読媒体上に（例えば、命令または構造化データとして）格納されてもよい。システムコンポーネントおよびデータ構造は、ワイヤレスベースの媒体および有線／ケーブルベースの媒体を含む様々なコンピュータ可読伝送媒体上で（例えば、搬送波の一部分として）生成されたデータ信号として伝送できる。したがって、本発明は、他のコンピュータシステム構成によって実現されてもよい。
【００９０】
図８は、ＧＵＩプロトタイパルーチン８００の実施形態のフロー図である。このルーチンは、プロトタイプＧＵＩに加えられる様々なＧＵＩエレメントの外観に関する情報をユーザ（例えば、ＧＵＩデザイナ）から受け取って、そのＧＵＩエレメントを表示する適当な対応するプロキシＧＵＩオブジェクトを生成する。
【００９１】
ルーチンはステップ８０５で始まり、このステップ８０５ではプロトタイプＧＵＩがそれに関して作成するＧＵＩプロジェクトの指示を受け取る。このルーチンはステップ８１０に進み、そのＧＵＩプロジェクトが新しいプロジェクトであるかどうかを判定し、そうである場合にはステップ８１５に進み、プロトタイプＧＵＩに関連付けられるＧＵＩテンプレートの指示を受け取り、そのプロジェクトのための定義を生成する。反対に、ステップ８１０でそのプロジェクトが新しくはないと判定した場合には、そのルーチンはステップ８２０に進み、既存のプロキシＧＵＩオブジェクトに関する定義のように指示されたプロジェクトに関するあらゆる既存の定義を検索する。ステップ８１５またはステップ８２０の後に、そのルーチンはステップ８２５に進み、プロジェクトに関するプロトタイプＧＵＩの視覚的表現を表示する。
【００９２】
次に、ルーチンはステップ８３０に進み、そのプロジェクトに関するプロトタイプＧＵＩを変更するためにユーザから視覚的指示を受け取る。ステップ８３５において、その視覚的指示が新たなＧＵＩエレメントを作成することであると判定すると、そのルーチンはステップ８４０に進み、指示されたタイプのＧＵＩエレメントに基づいてプロキシＧＵＩオブジェクトを生成し、プロキシＧＵＩオブジェクトをプロトタイプＧＵＩに追加する。反対に、ステップ８３５において、視覚的指示が新たなＧＵＩエレメントを作成することではないと判定すると、そのルーチンはステップ８４５に進み、指示が既存のＧＵＩエレメントを変更することか否かを判定する。そうである場合には、ルーチンはステップ８５０に進み、その指示されたＧＵＩエレメントに対応する既存のプロキシＧＵＩオブジェクトを変更し、そうでない場合には、そのルーチンはステップ８５５に進んで受け取った指示が１つ以上の既存のＧＵＩエレメントのレイアウトを変更することか否かを判定する。そうである場合には、そのルーチンはステップ８６０に進み、そのプロジェクトに関するＧＵＩテンプレートにしたがって、指示された通りにそのプロジェクトのプロトタイプＧＵＩに関するレイアウトを変更する。そうではない場合には、そのルーチンはステップ８６５に進み、必要に応じて別の指示されたタイプの変更を行う。
【００９３】
ステップ８４０、８５０、８６０、８６５の後に、ルーチンはステップ８７０に進み、現在のＧＵＩプロジェクトに関するプロトタイプＧＵＩに対してより多くの変更があるか否かを判定し、そうである場合には、ステップ８２５に戻る。そうでない場合には、そのルーチンはステップ８７５に進み、プロジェクト情報を保存し、次にステップ８９５に進んで続行すべきかどうかを判定する。そうである場合には、そのルーチンはステップ８０５に戻り、そうでない場合には、ステップ８９９に進んで終了する。
【００９４】
図９はＧＵＩコンバータルーチン９００の実施形態のフロー図である。このルーチンは、実ＧＵＩに変換されるプロトタイプＧＵＩの指示を受け取り、そのプロトタイプＧＵＩに関するプロキシＧＵＩオブジェクトを適宜実ＧＵＩオブジェクトに変換する。
【００９５】
ルーチンはステップ９０５で始まり、このステップ９０５では、１つ以上のＧＵＩエレメントを有するＧＵＩプロジェクトの指示を受け取る。他の実施形態では、その代わりに特定のＧＵＩエレメントおよび／またはそれに対応するプロキシＧＵＩオブジェクトを変換のために選択する。次に、そのルーチンはステップ９１０に進み、ＧＵＩエレメントに対応するプロキシＧＵＩオブジェクトを識別し、ステップ９１５ではそのルーチンを第１のプロキシＧＵＩオブジェクトから始めて、次のプロキシＧＵＩオブジェクトを選択する。次に、ルーチンはステップ９２０に進み、（例えば、既存の実ＧＵＩを変更する時に）その選択されたプロキシＧＵＩオブジェクトがすでに既存の対応する実ＧＵＩオブジェクトを有するか否かを判定する。そうである場合には、ステップ９３０に進み、適宜プロキシＧＵＩオブジェクトを反映するために既存の実ＧＵＩオブジェクトを変更する。そうでない場合には、そのルーチンはステップ９２５に進み、プロキシＧＵＩオブジェクトに関する情報（例えば、外観情報）の一部または全部を新たな実ＧＵＩオブジェクトにコピーすることを含むプロキシＧＵＩオブジェクトを表現するために、新たな実ＧＵＩオブジェクトを生成する。
【００９６】
ステップ９２５またはステップ９３０の後に、そのルーチンはステップ９３５に進み、より多くのプロキシＧＵＩオブジェクトが存在するか否かを判定し、そうである場合には、ステップ９１５に戻る。そうでない場合には、ルーチンはステップ９４０に進み、そのプロジェクトに関する実ＧＵＩオブジェクトを記憶する。次に、ステップ９９５において続行することが決定されると、ルーチンはステップ９０５に戻り、そうでない場合にはステップ９９９に進んで終了する。
【００９７】
図１０は、ＧＵＩマッパルーチン１０００のフロー図を示す。このルーチンは、プロキシＧＵＩオブジェクトを変換することによって生成された実ＧＵＩオブジェクトを変更することによってユーザが実ＧＵＩを指定することを可能にする。
【００９８】
ルーチンはステップ１００５で始まり、このステップ１００５では、変換がすでに行われたＧＵＩオブジェクトの指示を（例えば、ユーザから、またはＧＵＩコンバータルーチンから）受け取るが、他の実施形態では、代わりにユーザが現時点において変換を行うべきであるという指示をする。次に、ルーチンはステップ１０１０に進み、変換プロセス中にプロキシＧＵＩオブジェクトから生成されたプロジェクトに関する実ＧＵＩオブジェクトを検索する。次に、そのルーチンはステップ１０１５に進み、第１の実ＧＵＩオブジェクトから始めて、次の実ＧＵＩオブジェクトを選択する。ステップ１０２０では、次に実ＧＵＩオブジェクトを（例えば、実ＧＵＩオブジェクトのタイプに基づいて）外部データソースに結びつけるべきか否かを判定し、そうである場合には、そのルーチンはステップ１０２５に進み、（例えば、ユーザから）１つ以上のそうしたデータソースの指示を受け取り、このデータソースに関する情報を選択された実ＧＵＩオブジェクトに関連付ける。ステップ１０２５の後に、またはその代わりに、ステップ１０２０において、実ＧＵＩオブジェクトが外部データソースに結びつけられていないと判定した場合には、そのルーチンはステップ１０３０に進み、選択されたＧＵＩオブジェクトに関連付けられるべき静的データ（例えば、ディスプレイ名称）を（例えば、ユーザから）随意に受け取る。
【００９９】
ステップ１０３０の後に、そのルーチンはステップ１０３５に進み、例えばユーザから受け取った命令に基づいて、適宜選択されたＧＵＩオブジェクトに関するソフトウェアハンドラおよび／または他の情報を随意に指定する。次に、そのルーチンはステップ１０４０に進み、より多くの実ＧＵＩオブジェクトが存在するか否かを判定する。そうである場合は、ステップ１０１５に戻る。そうでない場合には、ルーチンはステップ１０４５に進み、この時点で実ＧＵＩを生成すべきか否かを判定する。そうである場合には、ステップ１０５０に進み、実ＧＵＩオブジェクトを使用して実ＧＵＩを生成する。次に、そのルーチンはステップ１０５５に進み、随意に実ＧＵＩを表示する。ステップ１０５５の後に、またはその代わりに、ステップ１０４５において実ＧＵＩを生成しないと判定した場合には、そのルーチンはステップ１０９５に進み、続行すべきかどうかを判定する。続行すると判定した場合には、そのルーチンはステップ１００５に戻り、続行しないと判定した場合には、そのルーチンはステップ１０９９に進んで終了する。
【０１００】
当業者であれば、特定の実施形態において上述のルーチンによって提供される機能が、より多くのルーチンへ分割され、またはより少ないルーチンへ統合される別の仕方で実現されてよいということを理解するだろう。同様に、ある実施形態では、その代わりに他に示されているルーチンがこの機能を欠いているかまたは含んでいる時や提供される機能の量が変更される時のように、示されているルーチンは説明されているものよりも多いか又は少ない機能を提供してもよい。さらに、様々な操作が特定の仕方で（例えば、逐次的に、または、並行して）および／または特定の順序で行われるものとして示されているが、当業者であれば、他の実施形態においてその操作が他の順序または他の仕方で行われてもよいということを理解するだろう。さらに、当業者は、例えば、複数のデータ構造に分割された単一のデータ構造を有することによって、または、単一のデータ構造の形に統合された複数のデータ構造を有することによって、上述のデータ構造が様々な仕方で構造化され得ることを理解するだろう。同様に、ある実施形態では、他の示されているデータ構造がこの情報をそれぞれに欠いているかまたは含んでいる時に、または記憶される情報の量またはタイプが変更される時に、示されているデータ構造が説明されているものよりも多いかまたは少ない情報を格納し得る。
【０１０１】
上述の説明から、特定の実施形態が例示のために本明細書で説明されてきたが、様々な変更が本発明の着想と範囲とからの逸脱なしに行われてよいということが理解されるだろう。したがって、本発明は、本明細書に記述されている添付された特許請求項と要素とによってのみ限定される。これに加えて、本発明の特定の側面が以下において特定の特許請求項形式で示されているが、本発明者は、あらゆる使用可能な特許請求項形式における本発明の様々な側面を想定している。例えば、本発明の幾つかの側面だけがコンピュータ可読媒体の形で具体化されるものとして現時点で言及されているが、他の側面も同様にそのように具体化されてよい。
【図面の簡単な説明】
【０１０２】
【図１】説明されている方法が実施可能なマルチレイヤシステムアーキテクチャを示す。
【図２】説明されている方法が実施可能なシステム構成の一実施形態のブロック図を示す。
【図３】説明されている方法が実施可能なマルチレイヤアーキテクチャの論理的表現を示すブロック図を示す。
【図４】説明されている方法が実施可能なアプリケーションフレームワークの一実施形態のブロック図を示す。
【図５】プロトタイプＧＵＩを実ＧＵＩに変換することの一例を示す。
【図６Ａ】実ＧＵＩへ変換するためのプロトタイプＧＵＩの生成の例を示す。
【図６Ｂ】実ＧＵＩへ変換するためのプロトタイプＧＵＩの生成の例を示す。
【図６Ｃ】実ＧＵＩへ変換するためのプロトタイプＧＵＩの生成の例を示す。
【図６Ｄ】実ＧＵＩへ変換するためのプロトタイプＧＵＩの生成の例を示す。
【図６Ｅ】実ＧＵＩへ変換するためのプロトタイプＧＵＩの生成の例を示す。
【図６Ｆ】実ＧＵＩへ変換するためのプロトタイプＧＵＩの生成の例を示す。
【図６Ｇ】実ＧＵＩへ変換するためのプロトタイプＧＵＩの生成の例を示す。
【図７】説明されている方法を行うのに適した計算システムの実施形態を示すブロック図である。
【図８】ＵＩプロトタイパルーチンの実施形態のフロー図である。
【図９】ＵＩコンバータパルーチンの実施形態のフロー図である。
【図１０】ＵＩマッパルーチンの実施形態のフロー図である。
【図１】
2005531083.tif 000003
【図２】
2005531083.tif 000004
【図３】
2005531083.tif 000005
【図４】
2005531083.tif 000006
【図５】
2005531083.tif 000007
2005531083.tif 000008
2005531083.tif 000009
2005531083.tif 000010
2005531083.tif 000011
2005531083.tif 000012
2005531083.tif 000013
2005531083.tif 000014
【図７】
2005531083.tif 000015
【図８】
2005531083.tif 000016
【図９】
2005531083.tif 000017
【図１０】
2005531083.tif 000018
【手続補正書】
【提出日】平成17年1月17日(2005.1.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
実グラフィカルユーザインタフェース（ＧＵＩ）に変換するためのプロトタイプＧＵＩを生成するためのコンピュータによって実行される方法であって、
プロトタイプＧＵＩのＧＵＩエレメントの指示を受け取ること、
前記ＧＵＩエレメントに関する外観情報を含むプロキシＧＵＩオブジェクトによって前記指示されたＧＵＩエレメントを表現すること、
前記プロトタイプＧＵＩに関する前記プロキシＧＵＩを、実ＧＵＩの表示に使用するための実ＧＵＩオブジェクトに変換し、前記実ＧＵＩオブジェクトは前記プロキシＧＵＩオブジェクトからの前記外観情報を含むこと、
を含む方法。
【請求項２】
自動化された仕方で、プロトタイプグラフィカルユーザインタフェース（ＧＵＩ）を実ＧＵＩに変換することによってグラフィカルユーザインタフェースを生成するための計算システムにおける方法であって、前記プロトタイプＧＵＩは前記実ＧＵＩの視覚的外観をシミュレートし、
ＧＵＩデザイナのコントロールにしたがって、
生成すべき新たなプロトタイプＧＵＩの指示を受け取ること、
前記プロトタイプＧＵＩの視覚的表現を表示すること、
前記プロトタイプＧＵＩに加えられるべきＧＵＩエレメントであって、実ＧＵＩである時に外部データソースからのデータを表示するタイプの前記ＧＵＩエレメントの視覚的外観に関する情報を前記ＧＵＩデザイナから受け取ること、前記ＧＵＩエレメントを表現するためにプロキシＧＵＩオブジェクトであって、前記視覚的外観情報を含むが前記ＧＵＩエレメントに関する外部データソースの仕様を欠いている前記プロキシＧＵＩオブジェクトを作成すること、前記作成されたプロキシＧＵＩオブジェクトからの前記視覚的外観情報に基づいており、外部データソースからのデータのための１つ以上のプレースホルダを含む前記ＧＵＩエレメントの視覚的表現を含むように、前記プロトタイプＧＵＩの前記表示された視覚的表現を更新することとによって、反復的に、前記プロトタイプＧＵＩを生成すること、
前記プロキシＧＵＩオブジェクトの各々に関して、前記プロキシＧＵＩオブジェクトからの前記視覚的外観情報を含む前記実ＧＵＩに関する対応実ＧＵＩオブジェクトを生成することによって、自動化された仕方で前記プロトタイプＧＵＩを実ＧＵＩに変換すること、
ＧＵＩ開発者のコントロールにしたがって、外部データソースの仕様を含むように前記実ＧＵＩオブジェクトの各々を変更すること、
前記実ＧＵＩオブジェクトに対応する表示されたＧＵＩエレメントであって、各々は、前記対応する実ＧＵＩオブジェクトからの前記視覚的外観情報に基づいており、その実ＧＵＩオブジェクトに関して指定された前記外部データソースからのデータを含み、その結果として、前記プロトタイプＧＵＩの更新されて表示された前記視覚的表現と同一の視覚的外観を有し、そして外部データソースからの実データを含む前記表示されたＧＵＩエレメントを含むように前記実ＧＵＩを表示することを含む方法。
【請求項３】
前記プロトタイプＧＵＩの生成は、さらに、前記プロトタイプＧＵＩに加えられる前記ＧＵＩエレメントのレイアウトに関する前記ＧＵＩデザイナからの情報を受け取ること、そして前記レイアウト情報を含むように前記ＧＵＩエレメントを表現する前記プロキシＧＵＩオブジェクトを変更すること、を含み、前記実ＧＵＩへの前記プロトタイプＧＵＩの変換の最中に生成される前記実ＧＵＩオブジェクトは、さらに、前記プロキシＧＵＩオブジェクトからの前記レイアウト情報を含む請求項２に記載の方法。
【請求項４】
前記プロトタイプＧＵＩの生成は、さらに、ＧＵＩエレメントを保持するためのロケーションプレースホルダを含む前記プロトタイプＧＵＩに関するＧＵＩテンプレートに関して前記ＧＵＩデザイナから情報を受け取ることを含み、前記ＧＵＩエレメントの前記レイアウトに関する前記ＧＵＩデザイナからの情報は、ＧＵＩエレメントを前記ロケーションプレースホルダに割り当てることを含む請求項３に記載の方法。
【請求項５】
前記プロトタイプＧＵＩの生成は、さらに、実ＧＵＩである時に外部データソースからのデータを表示しないタイプである前記プロトタイプＧＵＩに加えられるべきＧＵＩエレメントの視覚的外観に関して前記ＧＵＩデザイナから情報を受け取ること、そしてその視覚的外観情報を含むそのＧＵＩエレメントを表現するプロキシＧＵＩオブジェクトを作成すること、を含む請求項２に記載の方法。
【請求項６】
ＧＵＩ開発者のコントロールにしたがって、実ＧＵＩにおける対応する表示ＧＵＩエレメントに機能を提供するためのソフトウェアルーチンの仕様を含むように、前記実ＧＵＩオブジェクトの少なくとも幾つかを変更すること、をさらに含む請求項２に記載の方法。
【請求項７】
前記実ＧＵＩへの前記プロトタイプＧＵＩの変換の最中に生成される前記実ＧＵＩオブジェクトは、前記対応するプロキシＧＵＩオブジェクトとは別個のオブジェクトであり、前記実ＧＵＩオブジェクトの生成は、前記対応するプロキシＧＵＩオブジェクトから情報をコピーすることを含む請求項２に記載の方法。
【請求項８】
前記実ＧＵＩの表示の後に、
前記プロトタイプＧＵＩに関する前記ＧＵＩエレメントの１つ以上を変更するために前記ＧＵＩデザイナから情報を受け取ること、
前記受け取った変更情報を反映させるために、そのＧＵＩエレメントを表現する前記プロキシＧＵＩオブジェクトを変更すること、
そのプロキシＧＵＩオブジェクトに対する変更を反映するために、前記変更されたプロキシＧＵＩオブジェクトに対応する前記実ＧＵＩオブジェクトを変更すること、
前記変更された実ＧＵＩオブジェクトに対応する変更された表示ＧＵＩエレメントであって前記ＧＵＩデザイナからの前記受け取った変更情報を反映する前記変更された表示ＧＵＩエレメントを含む、前記実ＧＵＩの更新されたバージョンを表示すること、
とによって前記実ＧＵＩを変更することを含む請求項２に記載の方法。
【請求項９】
前記ＧＵＩデザイナは非専門的ユーザであり、前記ＧＵＩ開発者は明確な専門的ユーザである請求項２に記載の方法。
【国際調査報告】
2005531083.tif 000019