(57)【要約】      （修正有）【課題】ドメイン固有の言語を使用する演算オブジェクトのコンフィギュレーションに基づいて、演算タスクを実行するように構成されるコンピュータ・アプリケーションを開発するための方法を提供する。【解決手段】演算オブジェクトのコンフィギュレーションのためのシンタックス（構文）であり、一般化された機能性を割当てられたシンタックス（構文）定義するドメイン固有言語、ドメイン固有言語の一般化された機能性を実現する抽象オブジェクト・モデルを定義する一組のコンフィギュレーション・クラスのセット、ドメイン固有言語をオブジェクト・モデルに翻訳する翻訳エンジンを提供する。コンフィギュレーション・ファイルは、読み出されて、オブジェクト・モデルに翻訳され、コンピュータ・アプリケーションはグラフィカル・ユーザ・インタフェースを表示し、コンフィギュレーション・ファイル中に定義されたとおりにユーザ入力時に演算タスクを実行する。【選択図】図４
2009266231.tif 000002
【特許請求の範囲】
【請求項１】
ドメイン固有言語を使用する資源オブジェクトのコンフィギュレーションに基づいて、演算タスクを実行するためのコンピュータ・アプリケーションを開発する方法であり、
資源オブジェクトのコンフィギュレーション用のシンタックスであり、前記シンタックスの各要素は一般化された機能性を割当てられたシンタックスを定義するドメイン固有言語を提供することと、
前記ドメイン固有言語の一般化された機能性を実現する抽象オブジェクト・モデルを定義する一組のコンフィギュレーション・クラスを提供することと、
前記ドメイン固有言語を前記オブジェクト・モデルに翻訳するように構成された翻訳エンジンを提供することと、
前記ドメイン固有言語を使用して一つ以上のコンフィギュレーション・ファイルを作成することと、
前記コンフィギュレーション・ファイルは、一組の変数、一組の資源及び各資源の構成の宣言を少なくとも含んでなり、
前記コンフィギュレーション・ファイルを前記オブジェクト・モデルに翻訳することと、
グラフィカル・ユーザ・インタフェースを表示し、前記コンフィギュレーション・ファイル中に定義されたとおりにユーザ入力時に演算タスクを実行するコンピュータ・アプリケーションを前記翻訳に対応して作成することと、
を含んでなる方法。
【請求項２】
ある資源の構成の宣言は、
前記資源の属性と前記資源によって使用される演算スキームを決定する資源シグネチャの宣言と、
その他の資源をサブ資源として前記資源に関連付ける資源割当ての宣言と、
を含んでなる、請求項１に記載の方法。
【請求項３】
前記一般化された機能性は、グラフィカル・ユーザ・インタフェースの作成とユーザ入力時の演算タスクの実行を実現し、上記の作成と実行は資源オブジェクトのコンフィギュレーションに依存する、請求項１または請求項２に記載の方法。
【請求項４】
一組の変数の宣言は、少なくとも一つの数量変数の宣言を少なくとも含んでなり、前記数量変数は資源の消費を表わす変数である、請求項１から請求項３のいずれかに記載の方法。
【請求項５】
一組の変数の宣言は、少なくとも一つの演算変数の宣言を少なくとも含んでなり、前記演算変数は演算の結果または演算のパラメータを指示するための変数である、請求項１から請求項４のいずれかに記載の方法。
【請求項６】
一組の資源の宣言は、製品構成の一部をなす一組の要素の宣言をさらに含んでなる、請求項１から請求項５のいずれかに記載の方法。
【請求項７】
ある資源の構成の宣言は、
前記資源の資源シグネチャと、前記資源シグネチャは、前記資源の消費を表わす、前記一組の変数の中で宣言される数量変数を少なくとも含んでなり、子資源としての前記資源を消費する親資源としての要素と、消費の結果として生じる前記数量変数の量を計算するための演算スキームの宣言を含んでなる、請求項６に記載の方法。
【請求項８】
前記資源シグネチャは、前記一組の変数の中で宣言される、前記演算スキームの結果をそれにより生じた変数として指示する演算変数をさらに含んでなる、請求項７に記載の方法。
【請求項９】
前記資源シグネチャは一組のパラメータ変数をさらに含んでなり、前記パラメータ変数は前記演算スキームの一部であり、パラメータ変数の値はユーザ入力に基づいて決定される、請求項６から請求項８のいずれかに記載の方法。
【請求項１０】
前記コンフィギュレーション・ファイルを翻訳することは、
前記コンフィギュレーション・ファイルを読み出すことと、
前記資源シグネチャの中で定義された複数の演算変数の相互依存関係を決定する変数依存関係を作成することと、
各子資源の結果として生じた個々の変数の値に基づいて、いずれかの演算変数を合計するアグリゲータを作成することと、
をさらに含んでなる、請求項８または請求項９に記載の方法。
【請求項１１】
ドメイン固有言語を提供することは、
一つ以上のメタ資源タイプと、各メタ資源タイプは数量変数のタイプによって少なくとも決定され、パラメータのリストと、演算スキームを提供することをさらに含んでなる、請求項４から請求項１０のいずれかに記載の方法。
【請求項１２】
前記メタ資源タイプは、物質、モジュール、機械、及び従業員の少なくとも一つを含んでなる、請求項１１に記載の方法。
【請求項１３】
コンピュータ上で実行されるとき、請求項１から請求項１２に記載の方法のいずれかの各ステップを実行するように構成されるコンピュータにより読取り可能な命令が記憶されたコンピュータにより読取り可能な媒体。
【請求項１４】
コンピュータ・アプリケーションを実行するために備えられたコンピュータ・システムであり、前記コンピュータ・アプリケーションは、ドメイン固有言語を使用する資源オブジェクトのコンフィギュレーションに基づいて、演算タスクを実行するように構成され、
ドメイン固有言語の一般化された機能性を実現する抽象オブジェクト・モデルを定義する一組のコンフィギュレーション・クラスへのアクセスを提供する手段と、
前記ドメイン固有言語は、資源オブジェクトのコンフィギュレーション用のシンタックスであり、前記シンタックスの各要素は一般化された機能性を割当てられたシンタックスを定義し、
前記ドメイン固有言語を前記オブジェクト・モデルに翻訳するように構成された翻訳エンジンと、
前記ドメイン固有言語を使用して一つ以上のコンフィギュレーション・ファイルへのアクセスを提供する手段と、
前記コンフィギュレーション・ファイルは、一組の変数、一組の資源及び各資源の構成の宣言を少なくとも含んでなり、
グラフィカル・ユーザ・インタフェースを表示し、前記コンフィギュレーション・ファイル中に定義されたとおりにユーザ入力時に演算タスクを実行するコンピュータ・アプリケーションを前記コンフィギュレーション・ファイルの翻訳に対応して作成する処理ユニットと、
を具備するコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンフィギュレーションに基づいてコンピュータ・アプリケーションを開発できるようにするドメイン固有言語が提供される、コンピュータ・アプリケーションを開発するための方法とシステムに関係する。
【背景技術】
【０００２】
広範囲に及びコンピュータ・アプリケーションを開発する、すなわち、プログラミングする際に、開発者は、高レベルの複雑性に対処しなければならないが、それでもなお、開発されるソフトウェア・プログラムの信頼性という点で高レベルの品質を保証するという要件を満たさなければならない。これは、個々のアプリケーションが不可欠な目的のために使用されるまたは不可欠な環境で使用される場合に特にそうである。そのために、アプリケーションのプログラミングは、多大な労力、ひいてはコストを含む。複雑性に対処し、不可欠なアプリケーションの品質を保証するために、プログラミング自体にだけでなく試験と品質保証にも、ソフトウェア・プログラミング・エキスパートによって膨大な時間が費やされるからである。
【０００３】
ある特定のコンテクスト、もっと適切に言えば、問題領域（ドメイン）に対するコンピュータ・アプリケーションのプログラミングは、したがって多大な投資をもたらすので、一つのドメインに対してコード化されたプログラムの少なくとも一部を別のドメインまたはコンテクストに移転しようという当然の動機が起こる。この移転は、一般的には、「再利用」と呼ぶことができる。異なるコンテクストに対して新しいアプリケーションをコード化するのに必要な労力を削減するためのこのような方策を実行する一つの方法は、一つのプログラムから別のプログラムへコードを「カット＆ペースト」することである。しかし、この方法の使用は、失敗が起こりやすいことが知られており、したがって、コーディングのための労力を削減するものの、品質保証のために必要な労力を大幅に増加するのに一役買う可能性もある。
【０００４】
したがって、プログラミングの一貫性と品質をサポートし、さらに過去に開発された機能性の構成要素の再利用を可能にするために、ソフトウェア・プログラミングを抽象的なやり方で可能にするソフトウェア開発環境を提供する様々な方法が開発されてきた。
【０００５】
当技術において周知のこれらの方法の一つは、オブジェクト指向プログラミングである。ここでは、共通の機能性が、それぞれに定義されたインタフェースによって補完される各オブジェクトに分解できる。これによって、個々のオブジェクトはこれらのインタフェースに基づいて相互動作可能であるので、相互運用性が促進される。これにより、特定の問題領域、すなわち、開発すべきアプリケーションによって解決されるべき問題の知識ドメインにおいて、理想的には各オブジェクトを経路付けることができるため、抽象化及びプログラミングのレベルを高くすることができる。この場合に、プログラミングに使用される抽象化のレベルは、「コンピュータ・ドメイン」に位置させるのではなく、問題指向ドメイン、もっと適切に言えば、より抽象的な、すなわち非技術的なドメインに位置させる。
【０００６】
当技術において周知であるこれらの方法において、機能性は個々のオブジェクトに分解されて、共通の複数のライブラリとユーティリテイ・クラスに束ねられるが、オブジェクト指向プログラミング原理のより構造的な手法が、フレームワークに基づいた方法を取り入れることによって提供され得る。この場合は、共通の機能性が一つのフレームワークに統合され、共通の機能性を提供するだけでなく、作動するプログラムのためのインフラストラクチャを設定する役目も果たす。
【０００７】
しかしながら、当技術において周知である上記及び類似の方法はすべて、それによって変数を制御し得る継承の原理を利用するという共通点がある。継承原理によって、親オブジェクトに適用された変更はどれも、その各個の子オブジェクトに受け継がれる。この継承原理は、しかし、開発されたアプリケーションを更新することになる場合、特にプログラムの変形物を作成する場合に、または開発されたソフトウェアを新しい問題コンテクストにおいて再利用しようとする場合、大きな負担をもたらす。
【０００８】
このような場合、機能性の構成要素が変わるたびに、プログラミングの少なくとも一部を再実行または少なくとも検査しなければならず、これがプログラムされたアプリケーションの更新または移転を複雑にし、費用を増大する。さらに、上記の先行技術の方法により開発された場合のコードの主要部分は、例えば、フレームワークによって作成されるが、それでも、機能性を追加する、特に、フレームワーク内の異なるモジュールがどのように連動するかを記述する少なくとも一部のコード・フラグメントは、初めから作成されなければならない。したがって、システム全体の品質は、フレームワークの品質チェックだけに基づいて保証することはできず、全体のシステム検査を実行しなければならないことが、また煩雑になり、費用も高くつくことになる。
【０００９】
当技術において周知である方法のこれらの例示的に強調された欠点は、アプリケーションを開発することは、なおも比較的費用が多くかかる複雑な作業であることを表わしている。特に、これは、アプリケーションがかなりの複雑性を示し、ソフトウェアがサポートするドメインの不可欠な重要性のために高レベルの品質が求められる場合にそうである。さらに、当技術において周知である方法は、ある特定の問題領域（ドメイン）において実施されたプロジェクトにおいて予めコード化された知識を同じドメイン内の別のプロジェクトに移転することを可能にはしない。
【００１０】
前述したように、このような「前の」プロジェクトにおいて解決された問題、すなわちそのプロジェクトで開発されプログラミング・コードの一部はフレームワーク内に分解されるときに移転され得る。しかしそれでも、フレームワーク自体は品質を保証できないので、後続のプロジェクトにおいても品質を保証するためには、完全なソフトウェア開発サイクルが実行されなければならない。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
したがって、新しいプログラム開発サイクルと品質保証ルーチンを実行する必要がなく、ドメイン固有の知識を一つのプロジェクトから別のプロジェクトへ移転することを可能にする、ソフトウェア・アプリケーションを開発するための改良された方法とシステムが必要とされている。
【課題を解決するための手段】
【００１２】
この課題は、独立請求項の主題によって解決される。
【００１３】
好適な実施形態が、従属請求項の主題である。
【００１４】
具体的には、この課題は、ドメイン固有の言語を使用する演算オブジェクトのコンフィギュレーションに基づいて、演算タスクを実行するように構成されるコンピュータ・アプリケーションを開発するための方法によって解決される。上記方法は、演算オブジェクトのコンフィギュレーションのためのシンタックス（構文）であり、上記シンタックス（構文）の各要素は一般化された機能性を割当てられたシンタックス（構文）定義するドメイン固有言語を提供する。さらに、上記方法は、ドメイン固有言語の一般化された機能性を実現する抽象オブジェクト・モデルを定義する一組のコンフィギュレーション・クラスのセットを提供する。さらに、上記方法は、ドメイン固有言語をオブジェクト・モデルに翻訳するように構成された翻訳エンジン、例えば、パーサー（構文解析プログラム）を提供する。これによって、アプリケーションを実際に開発するためには、上記ドメイン固有言語を使用する一つ以上のコンフィギュレーション・ファイルを作成すれば十分である。上記コンフィギュレーション・ファイルは、一組の変数、一組の資源及び各資源の構成の宣言を少なくとも含んでなる。これらのコンフィギュレーション・ファイルは、次に、読み出されて、オブジェクト・モデルに翻訳され、この翻訳に対応して、コンピュータ・アプリケーションはグラフィカル・ユーザ・インタフェースを表示し、コンフィギュレーション・ファイル中に定義されたとおりにユーザ入力時に演算タスクを実行する。
【００１５】
ドメイン固有言語によって記述された問題領域（ドメイン）における個別のプロジェクト用のアプリケーションの開発は、定義されたシンタックス（構文）を使用するコンフィギュレーション・ファイルを作成することに帰するので、カスタマー固有のアプリケーションを作成するための労力は劇的に削減される。特に、コンフィギュレーション・ファイルの作成は、例えば、実際のプログラミング・タスクと比べると必要とされる労力は大幅に少なくなる。さらにまた、コンフィギュレーション・ファイルは予め定義されたオブジェクト・モデルに翻訳されるので、アプリケーションの品質をオブジェクト・モデルのレベルで、コンフィギュレーション・ファイルのシンタックス・チェックで制御することができ、開発されるべきアプリケーションの信頼性を保証するための労力を著しく減少させる。
【００１６】
従来では、例えば、資源のタイプなどの問題領域（ドメイン）のオブジェクトは、独立したクラスとしてモデル化される。本発明の基礎をなす上述した発明概念は、対照的に、このようなオブジェクトを純粋に宣言的な方式で作成される一般化されたオブジェクトの設定されたインスタンスとして、例えば、資源として作成できるようにする手法を提供する。
【００１７】
演算を実行するために使用される資源のようなオブジェクトに関して、本発明概念は、演算向けのソフトウェア・アプリケーションを作成するため使用される資源のタイプは、例えば、ユーザ・コンテクスト、演算に関連したパラメータ、及びもちろん使用される演算アルゴリズムの違いに起因する、プロジェクト固有の属性においてだけ互いに異なるという見識によって可能とされる。しかし、製品固有のソフトウェア・アプリケーションを作成するために必要とされる労力を削減するために、本発明の方法は、例えば、演算スキームの宣言によって差異を明確にするが、一般化されたドメイン固有モデルを一般化されたオブジェクト・モデルにマッピングするように、これらの諸相の大部分に対して具体的な開発労力を削減する。
【００１８】
したがって、ある好適な実施形態では、ある資源の構成の宣言は資源シグネチャの宣言を含んでなり、上記資源シグネチャは前記資源の属性と前記資源によって使用される演算スキームを決定する。さらに、ある資源の構成の宣言は、その他の資源をサブ資源として当該資源に割り当てる資源の関連付け、すなわち、資源割当ての宣言を含んでなる。
【００１９】
さらに、ある好適な実施形態では、一般化された機能性は、グラフィカル・ユーザ・インタフェースの作成とユーザ入力時の演算タスクの実行を実現し、上記の作成と実行は演算オブジェクトのコンフィギュレーションに依存する。
【００２０】
さらに別の好適な実施形態では、一組の変数の宣言は数量変数の宣言を含んでなり、上記数量変数は資源の消費を表わす変数である、及びまたは、演算変数の宣言を含んでなり、上記演算変数は演算の結果または演算のパラメータを指示するための変数である。
【００２１】
さらに別の好適な実施形態では、ある資源の構成の宣言は、資源シグネチャの宣言を含み、上記資源シグネチャは、当該資源の消費を表わす、一組の変数の中で宣言される数量変数を少なくとも含んでなり、ある資源の構成の宣言は、子資源としての前記資源を消費する親資源としての要素と、消費の結果として生じる上記変数の値を計算するための演算スキームの宣言を含んでなる。
【００２２】
さらにまた別の好適な実施形態では、コンフィギュレーション・ファイルの翻訳は、コンフィギュレーション・ファイルを読み出すことと、上記資源シグネチャの中で定義された複数の演算変数の相互依存関係を決定する変数依存関係を作成することと、各子資源の結果として生じた個々の変数の値に基づいて、いずれかの演算変数を合計するアグリゲータを作成することをさらに含んでなる。
【００２３】
さらに、前述した目的は、コンピュータ・アプリケーションを実行するために備えられたコンピュータ・システムによって解決され、このコンピュータ・アプリケーションは、ドメイン固有言語を使用するコンフィギュレーション・オブジェクトのコンフィギュレーションに基づいて、演算タスクを実行するように構成され、上記コンピュータ・システムは、ドメイン固有言語の一般化された機能性を実現する抽象オブジェクト・モデルを定義する一組のコンフィギュレーション・クラスへのアクセスを提供するための手段を具備し、上記ドメイン固有言語は、演算オブジェクトのコンフィギュレーション用のシンタックス（構文）であり、前記シンタックス（構文）の各要素は一般化された機能性を割当てられたシンタックス（構文）を定義する。さらに、上記コンピュータ・システムは、ドメイン固有言語をオブジェクト・モデルに翻訳するように構成される翻訳エンジン、好ましくはパーサー・エンジンを具備する。さらに、上記コンピュータ・システムは、上記ドメイン固有言語を使用して一つ以上のコンフィギュレーション・ファイルへのアクセスを提供するための手段を具備し、上記コンフィギュレーション・ファイルは、一組の変数、一組の資源及び各資源の構成の宣言を少なくとも含んでなる。最後に、上記コンピュータ・システムは、グラフィカル・ユーザ・インタフェースを表示し、上記コンフィギュレーション・ファイル中に定義されたとおりにユーザ入力時に演算タスクを実行するコンピュータ・アプリケーションを上記コンフィギュレーション・ファイルの翻訳に対応して作成する処理ユニットを具備する。
【００２４】
さらに、好適な実施形態が従属請求項において定義されており、添付の図面を参照して好適な実施形態を以下に説明することにする。
【図面の簡単な説明】
【００２５】
【図１】本発明によるコンピュータ・アプリケーションを開発し、実行するように構成されたコンピュータ・システムを概略的に示す。
【図２】本発明によるコンフィギュレーション・ファイルの一例と、コンフィギュレーション・ファイルに基づいて作成されたコンピュータ・アプリケーションのグラフィカル・ユーザ・インタフェースの入力及び出力マスク示す。
【図３】本発明によるアプリケーション開発及び実行のフェーズの要素を概略的に示す。
【図４】本発明によるソフトウェア・プリケーション開発及び実行中に実行されるタスクの概念の概要を示す。
【図５】ある特定のコンフィギュレーション・ファイルから資源コンフィギュレーション・オブジェクトを作成する翻訳機構エンジンの個々のクラスの固定的構成を示す。
【図６】コンフィギュレーションされた演算の処理を説明するシーケンス図を示す。
【図７】本発明によるソフトウェア・アプリケーション開発とアプリケーション実行のプロセスを概略的に示す。
【発明を実施するための形態】
【００２６】
図１は、コンピュータ・システム１００を概略的に示す。コンピュータ・システム１００は、３台のコンピュータ１０５、１１０及び１１５からなる。ただし、ここに示すコンピュータの数は例示的にすぎず、本発明の異なる実施形態では変わり得る。特に、このコンピュータ・システムは、一つの単一のコンピュータにおいて実現可能である。コンピュータ１０５、１１０、１１５は、当技術の周知の技術によるコンピュータ・システムであり、特に、モバイル型のコンピュータ・システム、ＰＤＡなどであり得る。図１によって例示されたコンピュータ１０５、１１０、１１５を実現するために、コンピュータ読取り可能なプログラム・コードによって定義されたタスクを実行するように構成されている、いかなるコンピュータ装置でも使用可能である。
【００２７】
さらに、図１は、特定の実施形態ではインターネット・ベースの接続によって実現することも可能であるネットワーク接続を介して相互接続される、コンピュータ・システム１００の各異なるコンピュータ１０５、１１０、１１５を示す。
【００２８】
さらに、ある好適な実施形態におけるコンピュータ１０５は、設計コンピュータ・システムである。この好適な実施形態では、上記コンピュータ・システム１０５は、あるドメイン固有言語（ＤＳＬ）についての複数のコンフィギュレーション・クラスを提供し、各コンフィギュレーション・クラスは、上記言語の意図されたセマンティックス（意味）を実現し、したがって、そのＤＳＬの特定のドメインの抽象化した知識を提供する。さらに、上記コンピュータ・システム１０５は、資源コンフィギュレーション・ファイル及び演算スキーマの定義ファイル用のシンタックス（構文）を文法によって定義するドメイン固有言語そのものを提供する。さらに、上記文法は、上記言語の各要素に対応したプログラム・コード・フラグメントを含む。これらのプログラム・コード・フラグメントは、各ドメイン固有コンフィギュレーション・クラスのインタフェースを利用する。ある好適な実施形態では、上記プログラム・コード・フラグメントは、Ｃ＃コード・スニペット（断片）によって実現され得る。この場合、これらのコード・スニペット（断片）は、各ドメイン固有コンフィギュレーション・クラスをインタフェースとして使用する。最後に、上記コンピュータ・システム１０５は、本発明に従ってコンフィギュレーション・ファイルを処理することができる複数の翻訳クラスを提供する。翻訳クラスの一つの好適な実施形態は、コンフィギュレーション・フィルによって定義された、もっと適切に言えば宣言された、具体的な資源コンフィギュレーションと演算スキーマを処理することができる。したがって、一つの好適な実施形態における翻訳クラスは、ドメイン固有言語のプログラム・コード・フラグメントを含む。ある好適な実施形態では、各翻訳クラスは、ドメイン固有言語の文法に基づいたＣ＃スニペット（断片）を含む各Ｃ＃パーサー（構文解析プログラム）クラスである。
【００２９】
一つの好適な実施形態におけるコンピュータ・システム１１０は、設計コンピュータ・システムである。ある好適な実施形態では、上記コンピュータ・システム１１０は、本発明に従ってコンフィギュレーション・ファイルを作成するユーザによって操作される設計ツールとしての役目を果たす。したがって、ある好適な実施形態におけるコンピュータ・システム１１０は、コンピュータ・システム１０５によって提供されたドメイン固有言語の言語、文法及びシンタックス（構文）に従うコンフィギュレーション・ファイルをユーザが定義し、作成できるようにするグラフィカル・ユーザ・インタフェースをユーザに提供する設計アプリケーションを実行する。
【００３０】
ある好適な実施形態では、上記コンピュータ・システム１０５と１１０は、実際には一つの同一のコンピュータであり得る。しかし、少なくとも、コンピュータ・システム１１０は、上述したとおりコンピュータ・システム１０５によって提供される各要素にアクセスする。特に、コンピュータ・システム１１０は、ドメイン固有言語とその各要素にアクセスできる。ある好適な実施形態では、このアクセスは、ネットワーク接続によって提供され得るが、インターネット・ベースのネットワーク接続を介しても実現可能であり、または上記アクセスは、ドメイン固有言語とその各要素または当該ドメイン固有言語の一部を含む、例えば、データベースなどの、コンピュータ・システム１１０内に含まれたデータ記憶装置によって提供され得る。
【００３１】
ユーザが操作するコンピュータ・システム１１０は、具体的な資源のコンフィギュレーションと演算スキームを定義するコンフィギュレーションファイルを、ドメイン固有言語、すなわち、ＤＳＬの文法とシンタックス（構文）を使用してユーザが書けるようにするソフトウェアにより実現された設計ツールを、好ましくは動作させる。好ましくは、このコンフィギュレーション・ファイルは、コンピュータ・システム１１０のデータ記憶装置に記憶される。しかし、代替的な実施形態では、コンフィギュレーション・ファイルは、コンピュータ・システム１０５及び／またはコンピュータ・システム１１５へ転送されてもよい。
【００３２】
コンフィギュレーション・ファイル内には、ある好適な実施形態では、少なくとも演算変数と数量変数が宣言される。以下の例は、本発明の例示的な実施形態におけるこのようなコンフィギュレーションを例示するものである。
変数宣言
{
数量変数 単体数、全量；
数量変数 時間
演算変数  コスト、人的コスト
演算変数  価格
演算変数  投資コスト、容量、
所要電力、電力コスト率、機械時間率
人的コスト寄与分
シナリオパラメータ  絶対的コスト増加量
パーセント率コスト増加量
｝
【００３３】
この例において、「変数宣言」、「数量変数」などの表現はＤＳＬによって与えられ、「時間」、「コスト」などの表現は設定される変数である。
【００３４】
さらに、本発明の原理によるコンフィギュレーション・ファイルには、資源のタイプと構成が定義される。以下の例は、本発明の例示的な実施形態におけるこのようなコンフィギュレーションを例示するものである。
シグネチャ宣言
｛
要素シグネチャ  部品、モジュール；
資源シグネチャ  物質；
資源シグネチャ  装置；
｝
【００３５】
この例において、「シグネチャ宣言」、「要素シグネチャ」などの表現はＤＳＬによって与えられ、「部品」、「装置」などの表現は設定される資源である。
【００３６】
資源の「動作」を設定するためには、その構成が定義されなければならないが、これは特定の資源のシグネチャ定義を設定することによって、コンフィギュレーション・ファイル内で行なわれる。これは、ある特定の資源の各変数の定義と各変数の値を与える演算スキーマの定義を含んでなる。以下の例は、本発明の例示的な実施形態におけるこのようなコンフィギュレーションを例示するものである。
シグネチャ定義
｛
要素シグネチャ  部品
数量変数  単体数
全量  ＝  総和（全量）を出す；
ＭＥＫ  ＝  総和（ＭＥＫ）＋絶対的ＭＥＫ増加量を出す；
ＦＥＫ  ＝  総和（ＦＥＫ寄与分）＋総和（ＦＥＫ）を出す；
要素シグネチャ  モジュール
数量変数  単体数
全量＝総和（全量）を出す；
ＭＥＫ＝総和（ＭＥＫ）＋絶対的ＭＥＫ増加量を出す；
ＦＥＫ＝総和（ＦＥＫ寄与分＋総和（ＦＥＫ）を出す；
資源シグネチャ  物質
数量変数  全量
パラメータ  価格
ＭＥＫ＝価格（１＋パーセント率ＭＥＫ増加量）＋絶対的ＭＥＫ増加量を出す；
資源シグネチャ  装置
数量変数  時間
パラメータ  投資コスト
パラメータ  容量
パラメータ  所要電力
パラメータ  電力コスト率
機械時間率＝（投資コスト／容量）＋（所要電力 * 電力コスト率）を出す；
ＦＥＫ寄与分＝機械時間率を出す；
｝
【００３７】
この例において、「シグネチャ宣言」、「資源シグネチャ」などの表現はＤＳＬによって与えられ、「部品」、「装置」などの表現は設定入力である。
【００３８】
コンピュータ・システム１１０上で作成されたコンフィギュレーション・ファイルは、次に、翻訳クラスを使用して、ある好適な実施形態ではＣ＃パーサー・クラスを使用して翻訳される。この翻訳によって、翻訳クラスのインスタンスとして、翻訳オブジェクトが、ある好適な実施形態ではＣ＃パーサー・オブジェクトが作成される。したがって、一つの好適な実施形態では、コンフィギュレーション・ファイルは、Ｃ＃パーサー・クラスを使用して構文解析され、同パーサー・クラスのインスタンスがＣ＃パーサー・オブジェクトとして作成される。
【００３９】
コンピュータ・システム１１５は、ドメイン固有言語を使用するコンフィギュレーション・フィルによって設計されたアプリケーションを実行する役目を果たす。ある好適な実施形態では、コンピュータ・システム１１５と１１０または１１５と１０５は実際には同一のコンピュータであってもよい。
【００４０】
コンピュータ・システム１１５は、ネットワーク接続を通じて、またはコンピュータ・システム１１５内に含まれたデータ記憶装置へのアクセスまたは代替のデータ記憶装置へのアクセスによって、翻訳クラスを使用したコンフィギュレーション・ファイルの翻訳よって作成された翻訳オブジェクトへアクセスする。
【００４１】
実行時には、特にサーバ始動時に、翻訳オブジェクト中のプログラム・コード・フラグメントが実行され、それによって、コンピュータ・システム１１０で作成された具体的なコンフィギュレーション・ファイルに従ったコンフィギュレーション・オブジェクトのインスタンスを作成する。ある好適な実施形態では、コンピュータ・システム１１５は、Ｃ＃パーサー・オブジェクトにアクセスすることにより、実行時に―この好適な実施形態ではサーバ始動時に―パーサー・オブジェクト中のＣ＃コード・スニペット（断片）が実行される。翻訳オブジェクトの実行によって作成されたパーサー・オブジェクトのインスタンスは、コンフィギュレーション・ファイル中の情報を厳密に表わす、各コンフィギュレーション・クラスのインスタンスを与えるシングルトン・オブジェクト・グラフを提供する。上記インスタンスは、さらに、コンフィギュレーション・ファイル中で定義された、もっと適切に言えば宣言された演算スキーマに従って、すべての資源タイプに対するすべての演算変数の値を計算できる、例えば、アグリゲータ（aggregator）などの演算器オブジェクトを含む。
【００４２】
さらに、各資源オブジェクトは、特に、それらの設定されたタイプの演算器オブジェクトを使用することによって、設定された各演算変数に対する値を計算するために、コンフィギュレーション・オブジェクトを使用する。さらにまた、コンフィギュレーション・オブジェクトを使用して、例えば、プロジェクト中にまたはアプリケーションの管理中に、例えば、実際の資源を構成したり、パラメータの値を入力するようなタスクにおいてユーザを支援するグラフィカル・ユーザ・インタフェースが作成される。さらに、報告サービスは、コンフィギュレーション・オブジェクト中で宣言された定義に従った演算変数に対する値を要求するために、コンフィギュレーション・オブジェクト及び資源オブジェクトを利用する。したがって、コンフィギュレーション・オブジェクトを使用して、実行時にグラフィカル・ユーザ・インタフェースが作成され、コンピュータ・システム１１５のユーザに表示されるので、ユーザは、このグラフィカル・ユーザ・インタフェースを使用して、例えば、実行されるべき対象の演算タスク、または、目的に応じた例えば報告サービスなどのその他のアプリケーション・サービス、または、その両方を実行することができる。
【００４３】
したがって、コンピュータ・システム１００は、アプリケーション開発の純然たる宣言的方式を可能にする。演算スキーマを含む演算アルゴリズムのすべての定義は、宣言的方式で行なわれ、特定の形式言語、特に、ドメイン固有言語で記述される。したがって、本発明によれば、特定のアプリケーションのプログラム・コードの論理は、宣言的方式で行なわれる資源の明確な記述に依存する。
【００４４】
コンピュータ・アプリケーションを開発する本発明の方法を使用することは、実際の
プログラミングの労力を削減するのに役立つだけでなく、演算タスクの性能も向上させる。特に、アプリケーションが実行時に作成されるとき、宣言された演算論理に従って本当に必要である要素、もっと適切に言えば資源だけが演算される。
【００４５】
図２は、本発明の原理に従って開発されたコンピュータ・アプリケーション２００の典型的な例を示す。コンピュータ・アプリケーション２００は、図１に関する文脈の中で説明したとおり、コンピュータ・システム１０５によって提供されたプログラミング環境に基づいて開発される。
【００４６】
この点で、図２は、特に、コンピュータ・システム１０５によって提供されたドメイン固有言語に基づいて、本発明の原理に従って開発された、もっと適切に言えば構成された例示的なコンフィギュレーション・ファイル２１０を示す。したがって、この好適な実施形態では、コンフィギュレーション２１０はドメイン固有言語、その文法及びシンタックス（構文）の個々の要素を使用する。コンフィギュレーション・ファイルは、演算スキーム（例えば、「コスト＝価格を出す」というような簡単な方程式）を記述する。さらに、資源オブジェクトが、シグネチャ宣言とシグネチャ定義によって記述される、もっと適切に言えば宣言され設定される。このように、コンフィギュレーション・ファイル２１０は、宣言によってソースと変数を設定する。
【００４７】
上記コンフィギュレーション・ファイル２１０は、本発明の原理と手法に基づいて、コンピュータ・アプリケーションを作成するための労力が劇的に削減されることを、またひいては、特定の問題領域（ドメイン）の要件を満たすために、プロジェクト固有のカスタマイズが、広範なプログラミングまたはコーディング・タスクを必要とせずに、また品質保証の大部分は開発環境の品質に基づいて提供できるので、完全なソフトウェア品質を必要とせずに、実現可能であることを例示する。
【００４８】
特に、上記コンフィギュレーション・ファイル２１０は、本発明の原理に従ってコンピュータ・アプリケーションを開発するために、好ましくは、資源タイプごとの、すなわち、演算オブジェクトごとの変数宣言と宣言的記述、並びに演算アルゴリズム、すなわち、演算スキームがあれば十分であることを明らかにする。企業の現場の状況に応用した場合、上記演算オブジェクトは、例えば、部品、アセンブリ、または機械であり得る。
【００４９】
コンフィギュレーション・ファイル２１０のこの例に基づくと、コンピュータ・システム１０５によって提供されたプログラミング環境は、コンフィギュレーション・クラスとドメイン言語を用いることで、特定のドメインで使用され得る資源タイプの書式と特定のコンフィギュレーションに対して具体的な設定値を算出するために使用され得る演算アルゴリズムの書式を提供することが明らかになる。これにより、アプリケーションの開発作業自体は、資源の宣言的記述と資源と演算アルゴリズムの記述に好ましくは減少される。これはさらに、実行時には、コンピュータ・システム１０５によって提供されたプログラム言語翻訳クラスを使用して、インスタンスが作成され、実行される。
【００５０】
このことは、図２では、コンフィギュレーション・ファイル２１０に基づいて作成されたコンピュータ・アプリケーション２００のグラフィカル・ユーザ・インタフェース２２０と２３０によって例示される。グラフィカル・ユーザ・インタフェース２２０と２３０は、コンフィギュレーション・ファイル２１０によって完全に決定される。言い換えれば、コンピュータ・システム１０５によって提供された設計環境を使用して、コンフィギュレーション・ファイル２１０に基づいて、グラフィカル・ユーザ・インタフェース２２０と２３０を提供するコンピュータ・アプリケーション２００が実行時に作成される。したがって、本発明に基づいて、いずれのオブジェクトのどんな演算でも、各ドメイン固有言語の文法とシンタックス（構文）を使用してコンフィギュレーション可能であり、それに基づいて、コンフィギュレーション・ファイル２１０中で決定されたとおりのそのグラフィカル・ユーザ・インタフェースの機能性と表示を変更するコンピュータ・アプリケーションが実行時に作成される。
【００５１】
例えば、コンフィギュレーション・ファイル２１０は、異なる種類の要素、例えば、部品と代替部品を宣言することができる。さらに、シグネチャ定義において、これらの要素は、その属性に関して定義される。この定義のために、その前に、例えば、数量変数や演算変数などの各種の変数タイプが宣言される。数量変数としては、例えば、「単体数」という変数が宣言され得る。演算変数としては、例えば、「価格」と「コスト」を示す各変数が宣言され得る。しかし、これらの変数は、言わば典型的な例であり、本発明の原理によれば、その他の変数または変数タイプ、特に、追加の変数及び変数タイプを宣言することが可能である。上記に基づいて、宣言されたいずれかの要素、例えば、部品という要素に対するシグネチャ定義において、それに関連付けられた数量変数によって、部品がどれだけ消費されるかが設定される。さらに、宣言されたいずれかの要素について、宣言された演算変数、例えば、コストを表わす変数に基づいて演算スキームが定義される。コスト変数は、例えば、個別の要素に割り当てられた資源のコストの総和として計算され得る。これにより、好ましくは、その他の要素は、資源として、その他の資源に割り当て可能であることが示される。
【００５２】
その他の要素、例えば、「代替部品」という要素について、その消費量が同様に数量変数により宣言され得る。しかし、このような要素に対するシグネチャ定義では、作成されたアプリケーションのその後のユーザによって入力されなければならない一つ以上のパラメータ―例えば、当該要素の単体の価格を表わすパラメータ―が、個別の要素に割り当て可能である。さらに、当該要素のコスト消費が入力された価格に基づいて計算されるように定義することが可能である。しかしこれは、アプリケーション２２０／２３０を作成するために使用され得るコンフィギュレーションの言わば典型的な例である。本発明の原理によれば、同じ効果を得るために、代替的なまたは修正されたコンフィギュレーションの方法が使用可能である。
【００５３】
グラフィカル・ユーザ・インタフェース２３０では、ユーザ入力によって、コンフィギュレーション・ファイル２１０によって設定されたとおりに複数の代替部品が入力可能である。具体的には、この例では、ユーザは、特定の設定されたパラメータである、すなわち、価格とともに４個の異なる代替部品を入力した。さらに、グラフィカル・ユーザ・インタフェース２２０において示されるように、部品は４個の定義された代替部品のうちの３個を使用し、ここでもユーザ入力に基づいて、部品によって「消費される」単体数が、コンフィギュレーション・ファイル２１０で設定された数量変数により、それぞれの数量として定義される。各行ではさらに、部品によって「消費される」各代替部品に関して、設定された演算スキームの実行が示される。つまり、価格に基づいてコストが計算され、代替部品数分のコストが部品のコストの総和として合計される（１．８６）。
【００５４】
このコンフィギュレーションは、例えば、代替部品要素のコスト計算の設定を変更することによって容易に変更可能である。例えば、部品に対するコストは、価格の２倍として算出されるように設定可能である。適宜に、グラフィカル・ユーザ・インタフェースは変わり、コストの計算も変わる。
【００５５】
さらに、このアプリケーションの開発方法は、例えば、サービスのコストを計算するためのその他のドメインにも移転可能である。この例として、要素として部品と代替部品の代わりに、タスクとサマリータスク、並びにさらに他の資源としてサービスエンジニアをコンフィギュレーションすることが可能である。この例では、開発時間の消費のコストは、時間当たりコストとして計算され得る。これは、本発明によって提供された手法に基づいて、いからなるオブジェクトに関するいかなる計算でも、個別のアプリケーションを作成するためにコンフィギュレーション可能であることを明らかにするであろう。
【００５６】
図３は、本発明によるコンピュータ・アプリケーション開発の異なるフェーズを概略的に示し、資源の割当てという特徴に関してこれらのフェーズを説明する。資源の割当ては、ある特定の量の資源Ａ（「サブ資源」）を資源Ｂ（「親資源」）に関連付けることに相当する。この意味で、Ａは供給側資源と名付けることもでき、Ｂは消費側資源と名付けられる。ＡとＢの具体的な特徴に応じて、これらは資源の代わりに要素であってもよい。
【００５７】
本発明により提供された手法によれば、資源は、その資源の特定の量が資源割当てによって定義されたとおりに「消費される」場合に、設定された演算変数の値を「生じさせる」、もっと適切に言えば、値を供給する実体である。本発明の原理によれば、図２のコンフィギュレーション・ファイル２１０において示されるように、資源はそのシグネチャによって完全に定義される。コンフィギュレーション・ファイル２１０内の例示された一例のシンタックス（構文）では、資源はシグネチャ定義内で「要素シグネチャ」として定義される。シグネチャに加えて、資源の完全な定義のために、好ましくは、サブ資源をある特定の資源に関連付ける資源の要素割当てが決定される。コンフィギュレーション・ファイル２１０の例においては、これは、ある特定の要素について、その要素を消費する側になり得る他の要素がどれであるかを定義することによって実現される。
【００５８】
したがって、資源は、言い換えれば、演算変数を供給するものであり、これは演算変数は資源ごとにある値をとり得ることを意味する。ある具体的な資源に対する値をとり得る演算変数はどれであるかが、コンフィギュレーション・ファイル２１０中の各資源のシグネチャ―コンフィギュレーション・ファイル２１０の例では「要素シグネチャ」―によってさらに設定される。
【００５９】
ある好適な実施形態では、要素は、「本来の資源」という意味での資源とは区別され得る。この好適な実施形態では、要素は部品表で参照されたり、部品表を作り上げるという理由から、例えば、ＣＡＤアプリケーションの報告システムなど、要素は特殊な資源である。さらに、この好適な実施形態では、要素は、販売されるべき製品及び大量の製品またはそのような製品の種類に相当する。対照的に、例えば、半完成部品は、販売されないからこのような要素とは見なされない。したがって、この好適な実施形態では、要素は製品を介して機能を実現するものとして区別される。代替的に、この好適な実施形態では、属性は、資源レベルで、もっと適切に言えば、資源インスタンス・レベルで定義され得る。
【００６０】
本発明によるコンピュータ・アプリケーション開発は、異なるフェーズ別に処理される。本発明によるアプリケーション開発の設計フェーズにおいては、資源の一般化されたクラスが提供される。設計フェーズは、コンピュータ・システム１０５によって提供されるアプリケーション設計環境としての役目を果たす。つまりこれは、設計３２０フェーズで供給される要素は、図１に関する文脈中で概説したように、コンフィギュレーション・クラスとドメイン固有言語という意味において、アプリケーション開発のための抽象的な基礎として供給されることを意味する。
【００６１】
具体的なコンフィギュレーション３３０では、すなわち、具体的なアプリケーションの開発では、要素としての資源と各資源／要素間の関連付け（すなわち、要素割当て）が定義される。このコンフィギュレーションは、コンフィギュレーション・ファイル２１０として例示的に示されたものであり、図１に示した開発者のコンピュータ・システム１１０上で好ましくは実行され得る。
【００６２】
実行時には、コンフィギュレーションされた要素によって定義されたとおりに資源のインスタンスを作成するアプリケーション３５０が作成される。上記資源は要素割当てからなり、作成されたグラフィカル・ユーザ・インタフェース（２２０、２３０）内で、インスタンス化された各資源オブジェクトが供給され、各資源間の関連付けを決定する設定された要素割当てに従って演算が実行される。
【００６３】
図４は、本発明の原理によるアプリケーション開発の異なるレベルまたはフェーズを示す図３に対応するシステム４００の概略的な概要を示す。具体的には、図４は、アプリケーション開発システム４０２、アプリケーション・コンフィギュレーション４０５及びアプリケーション実行４１０を示す。
【００６４】
図１に概略を示したように、アプリケーション開発システム４０２は、好ましくは、コンピュータ・システム１０５によって提供され、コンフィギュレーション４０５は、好ましくは、コンピュータ・システム１１０上で行なわれ、アプリケーション実行４１０は、好ましくは、コンピュータ・システム１１５上で実行される。アプリケーション開発システム４０２は、オブジェクトが含み得るパラメータ（資源、演算アルゴリズム）についての仕様を規定し、これらのパラメータの一般的記述をメタデータとして与える。上記の仕様は、ドメイン固有言語４１５内で成文化される。
【００６５】
ドメイン固有言語４１５は、この意味で、プロジェクト固有のアプリケーション開発のために必要とされる仕様、もっと適切に言えばコンフィギュレーション及び演算スキーマを定義する形式言語である。したがって、ドメイン固有言語４１５は、個々の演算オブジェクトとそれらの演算アルゴリズムの基本的な構成を記述する。ドメイン固有言語４１５のこのセマンティック（意味）は、抽象オブジェクト・モデル、すなわち、コンフィギュレーション・クラス４２０として実現される。さらに、アプリケーション開発システム４０２は、ドメイン固有言語４１５をオブジェクト・モデルに翻訳するプログラム言語翻訳クラス４２５を提供する。つまりこれは、プログラム翻訳クラス４２５によって、ドメイン固有言語４１５に従って作成されたコンフィギュレーション・ファイル４３０を実行可能なプログラム・コードに翻訳できることを意味する。ある好適な実施形態では、プログラム言語翻訳クラス４２５は、ドメイン固有言語４１５を解釈できるパーサー、もっと適切に言えばコンパイラが、それによって作成されるＣ＃パーサー・クラスである。このように、アプリケーション開発システム４０２によって、抽象的な演算アプリケーションが実現され、この抽象的な演算アプリケーションは、例えば、コンフィギュレーション・ファイル２１０によって定義されたような、ある特定のコンフィギュレーションに従って、動作、演算、グラフィカル・ユーザ・インタフェース等に変化をもたらす。コンフィギュレーション・ファイルに従ったこの変化は、オブジェクト・モデルにおいて反映される。
【００６６】
好ましくは、コンピュータ・システム１１０上で行なわれるアプリケーション・コンフィギュレーション４０５においては、コンフィギュレーション・ファイル４３０を作成するために、ユーザは、設計ツール、もっと適切に言えばコンフィギュレーション・・ツールを利用する。コンフィギュレーション・ファイル４３０内では、コンフィギュレーション・ツールを使用するユーザが、アプリケーション開発システム４０２によって予め定義された、つまり、ドメイン固有言語４１５内で与えられた所定の個々のオブジェクトを設定する。したがって、これらのオブジェクトは、例えば、演算タスクのドメインの実例としてのオブジェクトを例示する図２に、例えば、示したような特定の問題領域（ドメイン）に関係し得る。
【００６７】
この点における本発明の特有の利点は、様々なオブジェクト・タイプの中からアプリケーション開発システム４０２によって与えられた、特定のアプリケーションにとって特に必要とされるオブジェクトだけが設定されること、すなわち、必要とされないオブジェクトは設定されないので、実行時にインスタンスを作成されないことにある。これは、設定された演算論理に従って必須の要素、もっと適切に言えば必須の資源だけが実行時に演算されることになるので、アプリケーションの動作性能の大幅な向上につながる。結果として、好ましくは、全プロジェクトの小部分だけが演算され、その部分だけを所定のデータベースから取り出せばよい。つまりこれは、アプリケーション・コンフィギュレーション４０５では、ユーザは、特定のアプリケーションにとって必要とされるオブジェクトだけを設定することによって、アプリケーション開発システム４０２によって提供された多数のオブジェクト・タイプを利用できることを意味する。
【００６８】
ある好適な実施形態では、コンフィギュレーション・ファイル４３０は、本発明によって示された手法に従って開発されたアプリケーションのためのすべてのカスタマイズ・データ及び／またはコンフィギュレーション・データの一括化を図る。特に、好ましくは、コンフィギュレーション・ファイル４３０は、プロジェクト内に存在するすべての資源とそれらの演算属性及びその他の属性、及び必要とされる演算スキームのコンフィギュレーションを含む。さらに、コンフィギュレーション・ファイル２１０で示されたように、コンフィギュレーション・ファイル４３０は資源シグネチャを提供する。資源シグネチャは、資源コンフィギュレーションの一部であり、ある特定の資源タイプのすべての属性と演算スキームを定義する。資源シグネチャは、様々な要素を有し得る。したがって、本文書に記載された要素は，言わば典型的な例であり、本発明の手法によれば、その他の要素、特に、追加の要素が使用可能である。
【００６９】
ある好適な実施形態では、ドメイン固有言語４１５は、演算変数の設定の可能性を提供する。この意味で演算変数は、例えば、製造コストを計算するためといった演算目的に応じた設定対象の値である。演算変数の一義性は、ドメイン固有言語４１５の文法とシンタックス（構文）によって確保される。演算変数の値は、演算変数値供給元によって与えられる。つまりこれは、一つの同一の演算変数が、異なる演算変数値供給元から与えられた異なる値をとり得ることを意味する。例えば、製造コストは、モジュールＡについては２ユーロとして計算され得るが、モジュールＢについては３ユーロとして計算され得る。演算変数に加えて、ドメイン固有言語４１５は、任意の資源の特定の量の消費の計算を行なわせる数量変数の設定を可能にする。ドメイン固有言語コンフィギュレーションの前述したこれらの要素やさらに他の要素を使用して、個別のプロジェクトにおけるある特定のプログラム実装のための資源コンフィギュレーションを提供するコンテクストが与えられる。しかし、上記の表によって示された資源シグネチャの要素のリストは、本発明のある具体的な実施形態に即した、言わば例示的なものであることに留意すべきである。他の実施形態は、資源コンフィギュレーションにおいて宣言され得る他の要素またはより特殊化した追加の要素を提供することが可能である。
【００７０】
アプリケーション・コンフィギュレーション４０５内で使用される、アプリケーション開発システム４０２によって提供されるこれらの要素に加えて、アプリケーション開発システム４０２はさらに他のオブジェクトを提供する。
【００７１】
具体的には、すでに前述したように、アプリケーション開発システム４０２は、個別の演算変数の値を供給する演算変数供給元を提供する。ある好適な実施形態では、これらの演算変数値供給元は、資源及び資源間の関連付けであり得る。つまりこれは、演算変数は、任意の演算変数値供給元について、もっと適切に言えば、任意の資源についてある値を取得することを意味する。
【００７２】
さらに、アプリケーション開発システム４０２は、辞書中に任意の演算変数の値を格納する辞書値供給元に提供する。
【００７３】
さらに、アプリケーション開発システム４０２は、任意の演算変数値供給元について、他の演算変数の各値に従って、ある演算変数の値を計算する演算器を提供する。この意味において、演算器は、どの演算変数が現在計算されているかについての知識は何も得ていない。しかし、演算器は、所定の計算を行なうために必要な値がそこから得られる個々の演算変数についての知識をもつ。これらの必要とされる演算変数は、所定の演算器の従属物と呼ぶこともできる。したがって、演算器の結果を取得するときには、演算変数供給元が指定されなければならず、この演算変数供給元がすべてのこれらの従属物に対する値を供給する。しかしながら、演算器は、特定の演算アルゴリズムを実行するのではない。演算アルゴリズム自体はアプリケーション・コンフィギュレーション４０５における宣言によって定義されるのである。
【００７４】
上述したとおり、演算を実行するためには、タスク依存関係が重要になる。変数依存関係は、したがって、資源シグネチャの演算変数間の依存関係の明確な定義である。したがって、ただし、これらの依存関係は、アプリケーション・コンフィギュレーション４０５の間に、具体的には、コンフィギュレーション・ファイル４３０内に定義される。つまりこれは、これらの依存関係は、実行時またはアプリケーション実行時に変わることはないことを意味する。変数依存関係は、演算の順序を決定するために使用される。この点で、依存関係の明確な表現は、最適化を行なうために必要とされる。それは、繰返し変数のその各々を単一の繰返し方式で計算すべきではないが、すべてを１回の繰返しで共通に計算すべきであるからである。これに基づいて、演算にあたり、以下の例で示すような、個々の要素の階層記述が一回だけ通読されなければならない。
【００７５】
-  Ｐ１、Ｐ２はパラメータである
-  局所的な演算スキーム：Ｖ１＝Ｐ１、Ｖ２＝Ｖ１＋Ｐ２
-  繰返しの演算スキーム：Ｖ３＝子資源のうちの３個すべての総和＋Ｖ２
-  依存関係
-  Ｐ１：｛｝
-  Ｐ２：｛｝
-  Ｖ１：｛Ｐ１｝
-  Ｖ２：｛Ｐ１、Ｐ２、Ｖ１｝
-  Ｖ３：｛Ｐ１、Ｐ２、Ｖ１、Ｖ２｝＋Ｖ３（すべての子資源で）
【００７６】
実行時に、ある資源またはある資源アプリケーションへの個別の要求が、例えば、値が要求される演算変数のリストとして作成されると、所定のシグネチャの変数依存関係に基づいて、変数依存関係投影が作成される。この変数依存関係投影は、変数のリストに対する変数依存関係の投影を図る。変数依存関係投影は、要求に応えるために必要である正確な依存関係を明確に含む。上に示した例に関して、Ｐ２とＶ１の要求に基づき作成された変数依存関係投影は次のものを含む。
【００７７】
-  Ｐ２：［］
-  Ｖ１：［Ｐ１］
ここでわかるとおり、Ｖ２とＶ３は、これらの値はこの要求には無関係なので、この投影に含まれない。
【００７８】
さらに、好ましくは、アプリケーション開発システム４０２は、例えば、「Ａ＋Ｂ」のような式を解釈する式演算器を提供する。式演算器の場合には、所定の式演算器の従属物は、したがって、その式の中に設定されている演算変数そのものである。
【００７９】
さらに、好ましくは、アプリケーション開発システム４０２は、列挙された値供給元の各々について演算変数がとる個別の値を合計できるアルゴリズムを内包する繰返し演算器を提供する。繰返し演算器は、数個の演算変数の個別の値をすべて一度に合計できる。例えば、２個の値供給元として、装置Ａ、従業員Ｂが与えられ、それぞれコスト・タイプＡとコスト・タイプＢの両方を供給するとしよう。装置Ａについてのコスト・タイプＡの値は２ユーロであり、従業員Ｂについてのコスト・タイプＡの値は３ユーロである。装置Ａについてのコスト・タイプＢの値は５ユーロであり、従業員Ｂについてのコスト・タイプＢの値は７ユーロである。このとき、アグリゲータは一回の繰返しで次のとおり、コスト・タイプＡは５ユーロであり、コスト・タイプＢは１２ユーロであると合計を出す。
【００８０】
さらに、アプリケーション開発システム４０２は、例えば、合計値、最大値、最小値、または平均値などの値のリストを合計することができる値アグリゲータを提供する。
【００８１】
上述したようなアプリケーション開発システム４０２によって提供される様々な要素の相互関係については、後述する図５の中でさらに詳述する。
【００８２】
アプリケーション・コンフィギュレーション４０５において設定される、これらの要素に基づいて、翻訳されたコンピュータ・プログラム・オブジェクト４３５が作成される。これらの翻訳されたコンピュータ・プログラム・オブジェクト４３５は、個々のプログラム言語翻訳クラス４２５のそれぞれのインスタンスであり、コンフィギュレーション・ファイル４３０によって提供されたコンフィギュレーションの翻訳を反映する。これらの翻訳されたプログラム・オブジェクト４３５に基づいて、好ましくは、コンピュータ・システム１１５でアプリケーションが実行可能になる。
【００８３】
アプリケーション実行４１０では、翻訳されたプログラム・オブジェクト４３５の各インスタンスとして、コンフィギュレーション・オブジェクト４４０が作成される。実行時のアプリケーション４５０は、グラフィカル・ユーザ・インタフェース作成、照会値入力、演算タスク実行、報告サービス提供などのために、このコンフィギュレーション・オブジェクトを使用する。さらに、資源オブジェクト４４５が、設定されたタイプの演算オブジェクトを使用して設定された演算変数の値を計算するために、コンフィギュレーション・オブジェクト４４０を使用する。
【００８４】
アプリケーション・システム４０２によって提供された総括的実現とアプリケーション・コンフィギュレーション４０５において設定された具体的な実現との関係をさらに説明するために、以下の例を示す。この例では、コンフィギュレーション・ファイル４３０が与えられ、アプリケーション開発システム４０２によって提供された要素を直立字体で示し、アプリケーション・コンフィギュレーション４０５によって提供された定義をイタリック体で示す。
【００８５】
数量変数を宣言する  個数  全量；
演算変数を宣言する  コスト  価格；
要素を宣言する  部品（個数）  モジュール（個数）；
資源を宣言する  物質（全量）；
要素  部品
全量を出す
アグリゲータ  サブ資源  総和
コストを出す
アグリゲータ  サブ資源  総和
要素  モジュール
全量を出す
アグリゲータ  サブ資源  総和
コストを出す
アグリゲータ  サブ資源  総和
資源  物質
パラメータ  価格
結果  コスト＝価格
【００８６】
この例は、「個数」と「全量」の２つの数量変数を与える数量変数宣言（数量変数を宣言する）を示す。さらに、この例は、「コスト」と「価格」の２つの演算変数の演算変数宣言（演算変数を宣言する）を示す。要素として、「部品（個数）」と「モジュール（個数）」が宣言される（要素を宣言する）。この要素宣言は、部品とモジュールの両方についての消費値は個数であることを定義する。さらに、資源が、「物質（全量）」として宣言される（資源を宣言する）。この物質は「本来の」資源であり、その全量が消費されるため、要素シグネチャをもたない。
【００８７】
オブジェクト定義では、要素定義「要素  部品」が与えられる。ドメイン固有言語の文法とシンタックス（構文）を使用して、さらに、要素の組合せも定義可能である。例えば、この例では、部品がアセンブリにだけ割当て可能であることを定義するような部品とアセンブリとの関連付けが宣言され得る。さらに、部品の全量が要求可能であることが定義される。全量はさらに、部品に割り当てられたサブ資源の全量の総和として計算される（全量を出す、アグリゲータ  サブ資源  総和）。さらに、部品はそれらのコスト値も要求可能であり、コスト値は部品に割り当てられたサブ資源のコスト値の総和に基づき計算されることが定義される（コストを出す、アグリゲータ  サブ資源  総和）。上記の定義に基づいて、すべての要素または資源が、「部品」との可能な関連付けまたは組合せとして定義されたサブ資源になり得る。例えば、物質という資源は、物質を部品に割り当てるこのような関連付けによって定義され得る。さらに、物質はパラメータとしてその価格だけをもつことが定義される。
【００８８】
この例では、ある量の物質資源が割り当てられると、それ結果コストが生じることが定義される。この例では、コストは物質の価格として計算される（結果  コスト＝価格）。
【００８９】
この例は、ドメイン固有言語のある特定の実現のための典型的なコンフィギュレーション・ファイル４３０を示す。しかし、この例で使用されたこの特定のシンタックス（構文）、文法及び要素は、説明のための実例となるものにすぎず、本発明の代替的な実現、特にドメイン固有言語の代替的な実施形態は、これとは異なるシンタックス（構文）、文法及び要素を提供し得る。このことは、上記の例を図２のコンフィギュレーション・ファイル２１０と比較するとさらにはっきりわかるであろう。ここでは、上記のコンフィギュレーションは、多少異なるシンタックス（構文）と追加の要素を使用することが明らかになる。しかしながら、両方の例とも、本発明の原理と手法に従っており、説明のための実例となり得る。
【００９０】
本発明の別の例示的な実現のためのコンフィギュレーション例を示す以下の例によって、このことをさらに説明できる。
【００９１】
変数宣言
｛
数量変数  単体数、全量；
数量変数  時間；
演算変数  ＭＥＫ、ＦＥＫ；
演算変数  価格；
演算変数  投資コスト、容量、
所要電力、電力コスト率、機械時間率、
ＦＥＫ寄与分；
シナリオパラメータ  絶対的コスト増加量、
パーセント率ＭＦＫコスト増加量；
｝
シグネチャ宣言
｛
要素シグネチャ  部品、モジュール；
資源シグネチャ  物質；
資源シグネチャ  装置；
｝
シグナリング定義
｛
要素シグネチャ  部品
数量変数  単体数
全量＝総和（全量）を出す；
ＭＥＫ＝総和（ＭＥＫ）＋絶対的ＭＥＫ増加量を出す；
ＦＥＫ  ＝  総和（ＦＥＫ寄与分）＋総和（ＦＥＫ）を出す；
要素シグネチャ  モジュール
数量変数  単体数
全量＝総和（全量）を出す；
ＭＥＫ＝総和（ＭＥＫ）＋絶対的ＭＥＫ増加量を出す；
ＦＥＫ＝総和（ＦＥＫ寄与分＋総和（ＦＥＫ）を出す；
資源シグネチャ  物質
数量変数  全量
パラメータ  価格
ＭＥＫ＝価格*（１＋パーセント率ＭＥＫ増加量）＋絶対的ＭＥＫ増加量を出す；
資源シグネチャ  装置
数量変数  時間
パラメータ  投資コスト
パラメータ  容量
パラメータ  所要電力
パラメータ  電力コスト率
機械時間率＝（投資コスト／容量）＋（所要電力 * 電力コスト率）を出す；
ＦＥＫ寄与分＝機械時間率を出す；
【００９２】
図５は、あるコンフィギュレーション・ファイル４３０から資源コンフィギュレーション・オブジェクトを作成する、好ましくは、コンパイラ／パーサーであるプログラム言語翻訳機構５００の固定的クラス構成と、さらに「資源コンフィギュレーション」クラスのクラス構成を示す。
【００９３】
「資源コンフィギュレーション」クラスの作成されたオブジェクト４４０は、各種の資源シグネチャの「供給元」の演算変数の値の計算を可能にする。これはつまり、例えば、アプリケーションのグラフィカル・ユーザ・インタフェースを介して、ある資源がある変数の値を出すように要求される場合、その資源は、その値を計算するために、そのシグネチャに関連付けられている式と変数を使用する。
【００９４】
さらに、作成されたオブジェクトは、各種の演算変数間の依存関係についての情報の管理を行なう。グラフィカル・ユーザ・インタフェースに関しては、作成されたオブジェクトは、設定された資源タイプ、すなわち、資源シグネチャを提供し、グラフィカル・ユーザ・インタフェースの画面に表示され、管理されるようにする。
【００９５】
以下では、図５に示した固定的クラス構成５００の個々の要素について説明する。「コンフィギュレーション・コンテクスト」が、コンフィギュレーション・オブジェクトのグラフの始点である。実行時に、特に、アプリケーションの起動時に、文字列（ドメイン固有言語に従って構成されている文字列）またはファイル、ドメイン固有言語に従ったコンフィギュレーションを含むファイルによって初期化される、新しいコンフィギュレーション・コンテクストが作成される。言い換えれば、コンフィギュレーション・ファイル４３０を読み込むことによってアプリケーションが始動するとき、新しいコンフィギュレーション・コンテクストが初期化される。コンフィギュレーション・コンテクストは、構成された文字列またはコンフィギュレーションファイル４３０によって、翻訳クラスのインスタンスを作成する。
【００９６】
インスタンス化された翻訳機構オブジェクトは、文字列／コンフィギュレーション・ファイルを翻訳することによってコンフィギュレーション・オブジェクトのグラフを作成する。この手順は、コンフィギュレーション文字列またはコンフィギュレーション・ファイルをオブジェクト・グラフにコンパイルすることと解釈することもできる。好ましくは、翻訳機構は、パーサーとして実現される。
【００９７】
演算ファクトリー・クラスは、新しい演算変数、資源シグネチャ、式などを作成するための方法を提供する。この演算ファクトリー・クラスは、翻訳機構クラスによって使用される。
【００９８】
翻訳機構クラスは、好ましくは、パーサーとして実現される。翻訳機構クラスのプログラム・コードは、ある好適な実施形態では、ドメイン固有言語４１５の形式的文法、シンタックス（構文）及び要素に基づいて、翻訳機構ジェネレータによって作成される。ある好適な実施形態では、翻訳機構のコードはＣ＃コードであり、翻訳機構クラス、好ましくは、パーサー・クラスのＣ＃コードは、例えば、ＡＮＴＬＲ３．０．１といったパーサー・ジェネレータによって作成される。その目的のためにドメイン固有言語４１５の文法は、翻訳機構ジェネレータによって翻訳機構クラスのコードに組み込むことができる、少なくともいくつかの定義された規則のプログラム・コード・フラグメントを含む。好ましくは、ドメイン固有言語の文法は、パーサー・ジェネレータ、好適な実施形態ではＡＮＴＬＲパーサー・ジェネレータによって翻訳機構、もっと適切に言えばパーサー・クラスのコードに組み込むことができる、Ｃ＃コード・フラグメント、もっと適切に言えばＣ＃スニペットを含む。ただし、翻訳機構の作成は、図３に示した設計レベル３２０で行なわれる。つまりこれは、パーサー、もっと適切に言えば翻訳機構は、好ましくは、個別のドメイン固有言語４１５に関連して提供され、したがって、アプリケーション・コンフィギュレーション４０５またはアプリケーション実行４１０の段階では変わらないことを意味する。したがって、実際の翻訳は、コンフィギュレーション・ファイル４３０に基づいてさらに作成されるコンフィギュレーション・コンテクストから作成される、翻訳クラスのインスタンスによって行なわれる。
【００９９】
以下の例は、翻訳機構がどのように動作するかをさらに説明できる。この例は、式の中の数値についての翻訳規則に関するものである。
【０１００】
式：価格 *（１＋パーセント率コスト増加量）＋絶対的コスト増加量：
この式の翻訳では、製品オブジェクト（価格 *（１＋パーセント率コスト増加量）と変数式オブジェクト（絶対的コスト増加量）からさらになる和オブジェクトが作成される。製品オブジェクトは、第１の加数として数字「１」をもつ和オブジェクトを第２の因子としてさらにもつ。
【０１０１】
以下の文法規則が、上記の数値の翻訳中に実行されるべきものを決定する。
数値文字式 [IParserContext context]は[IExpression expr]を返す
：
DECIMAL
{
$expr =
context.CalculationFactory.CreateConstantExpression ($DECIMAL.Text);
};
}
;
【０１０２】
この文法規則は、翻訳された数値の文字―この例では「１」―で初期化される新しい定数式オブジェクトを演算ファクトリーによって作成する。作成されたオブジェクトが返されて、より上位の和オブジェクトの加数として働く。これより後の段階で定数式オブジェクトが要求される場合に、その照会の結果として、その初期化値―この例では「１」―を常に返す。同様に、和オブジェクトは、同様の要求に応えて加数の値の和を常に返す。
【０１０３】
翻訳機構ジェネレータは、次に、コード―この例では演算ファクトリー呼出し―を翻訳機構クラス中に組み込む。
【０１０４】
翻訳機構クラスは、ドメイン固有言語４１５に従って定義されたコンフィギュレーションの翻訳時に、開始オブジェクトとして資源コンフィギュレーションをもつオブジェクト・グラフをさらに作成する。図５に示されるように、資源コンフィギュレーション・オブジェクトは、次に、翻訳機構クラスによって同じく作成される数個のさらに他のオブジェクトを提供する。具体的には、資源コンフィギュレーション・オブジェクトは、宣言された演算変数のリスト、シナリオ・パラメータのリスト、各資源の消費値である宣言された数量変数のリスト、及び宣言された資源シグネチャ、すなわち、資源タイプのリストを提供する。
【０１０５】
演算変数は、図５に示されるように、演算変数というタイプのオブジェクトであり、したがって、演算に使用され得るのは演算変数の識別子だけであり、またこの識別子が表示されて編集されたり、報告内で使用されることが可能である。数量変数は、図５に示されるように、例えば、個数、機械時間(マシンタイム)などの消費値を定義するために用いる特別な演算変数である。
【０１０６】
繰返し変数オブジェクトは、割り当てられた各下位要素または各サブ資源についての演算変数の合計の値を含む、さらに別の特殊な演算変数である。この一例としては、この例では繰返し変数を構成する「全量＝総和（全量）」という式が挙げられる。この繰返し変数の値は、割り当てられた各下位要素または各サブ資源の全量の総和である。例えば、モジュール、「総和（全量）」は、すべての組み込まれた部品の全量の総和を表わすことができる。ドメイン固有言語４１５の文法とシンタックス（構文）は、したがって、繰返し変数のこのようなコンフィギュレーションの翻訳時に、もっと適切に言えばコンパイリング時に使用される、少なくとも一つの規則を含む。
【０１０７】
資源シグネチャ・クラスは、ある個別の資源タイプに関係するすべてのコンフィギュレーション情報を一括する。具体的には、「構造要素である」ブール属性が、その個別の資源タイプが、例えば、代替部品またはアセンブリなどの要素タイプであるか、または、例えば、機械、従業員などの「本来の」または「通常の」資源のタイプであるかを示す。この情報は、例えば、作成されたコンピュータ・アプリケーションのグラフィカル・ユーザ・インタフェースを使用して、部品表をエクスポートするために後で利用され得る。資源シグネチャは、演算変数のリスト、すなわち、その個別のシグネチャの資源から供給される供給された変数のリストをさらに含んでなる。加えて、資源シグネチャは、図５に示されるように、パラメータのリストを含む。さらに、そのシグネチャの資源の消費の値を与える変数を意味する関連付け変数が、すべての繰返し変数のリストと共に、資源シグネチャに含まれる。すべての供給された変数について、その資源の値の計算に使用される式が資源シグネチャと共に提供される。この式は、変数の値を計算するために、個別の資源の演算時に後で使用される。
【０１０８】
図５に示された式オブジェクトは、要求に応じて結果を提供する。その要求と共に、値供給元が指定されなければならない。さらに、少なくとも２つのタイプの式、すなわち、単純な式と組み立てられた式がある。単純な式の例としては、値供給元（その値の計算に関与する値供給元）について関連付けられた繰返し変数の値を結果として与える繰返し式が挙げられる。単純な式のさらに別の例としては、値供給元についての変数の値を結果として与える変数式が挙げられる。単純な式のさらに他の例としては、その式における定数の値を結果として与える定数式が挙げられる。
【０１０９】
組み立てられた式についての例としては、下位の各式の結果の総和を結果として与える総和式が挙げられる。さらに別の例としては、下位の各式の結果の積を結果として与える積式が挙げられる。
【０１１０】
ただし、これらの式は性質的には例示的なものに過ぎず、本発明の様々な実施形態は追加のまたはその他の式を提供することができよう。しかしながら、これらの例は、どんな式があり得るかをよりよく理解するために役立つであろう。
【０１１１】
図５に示された演算依存関係クラスは、ある式の異なる変数間の依存関係についての情報を含む。この情報は、構成された式に基づいて自動的に作成される。演算依存関係は、より後で実行される演算では、ある特定の要求に応えるために必要である変数だけが計算されることを確実にする。このことは、どちらかと言えば複雑なコンフィギュレーションの場合に演算性能とアプリケーション全体の性能を向上させるために役立つ。
【０１１２】
図５に示されるように、演算値供給元は、例えば、特定のプロジェクトにおける個別のモジュールといった具体的な資源によってインタフェースとして実現される。実行時に、供給された変数の一つの値、例えば「全量」という変数の値を演算値供給元が要求される場合、演算値供給元は全量変数のシグネチャについての式の値を決定する。
【０１１３】
最後に、図５に示された各クラスに関して、図５に示された全クラスのうちで、資源クラスと演算値供給元クラスだけは、サーバ始動時にインスタンスが作成されていないクラスであることに留意すべきである。
【０１１４】
アプリケーション・オブジェクトのコンフィギュレーションのためにドメイン固有言語４１５を使用することによって、個々のパラメータと演算アルゴリズムを、当技術において周知の方法ではこれらを符号化する必要があったが、符号化するのではなく設定することができる。先行技術の方法によれば、特定のドメインの個々のオブジェクトは、メソッドとプロパティを使用して一般に記述される。例えば、当技術において周知の方法によれば、［部品」といクラスの個々のオブジェクトは、「全量」の値を要求するためのメソッドをもち、要求または指定可能である、数量や価格などの属性をさらにもち得る。しかし、当技術において周知の方法によるこのようなオブジェクトは、例えば、価格という属性に対して値の入力と要求のために特別に符号化されたダイアログを必要とする。さらに、例えば、「全量」の値を計算するために特別に符号化された演算方法が必要とされる。最後に、データベース中に存続させるために特別に符号化された方法が必要とされる。
【０１１５】
これに対して、本発明はオブジェクトのコンフィギュレーションのための手法を提供するので、パラメータ及び演算アルゴリズム、アプリケーションのグラフィカル・ユーザ・インタフェース、データベース及び演算アルゴリズムは、ここでは特別に符号化される必要はなく、ずっと高い抽象化レベルでこれらを設定する、言い換えれば「プログラムする」ことができる。より高い抽象化レベルのこのコンフィギュレーションは、グラフィカル・ユーザ・インタフェース、データベース及び演算のためのプログラム・コードを利用し、資源シグネチャ及び資源と連動してプログラム・コードが働くことが可能にされる。上記コードは、図３に概略を示した設計フェーズ３２０において、図４に概略を示したアプリケーション開発システム４０２によって提供される。
【０１１６】
したがって、このコードは個別のプロジェクト中に開発される必要はなく、代わりに、個別のプロジェクトにおいてアプリケーション設計者が、ドメイン固有言語４１５を使用することによって、アプリケーション開発システム４０２によって提供されたコード・フラグメントを参照するコンフィギュレーション・ファイル４３０を定義するだけでよい。アプリケーション開発システム４０２によって提供されたコードは、当技術において周知の方法によれば必要であった、特定のハード符号化されたプロパティと共に働くのではなく、ここでは値及び式の変数及び辞書のリストと共に働く。さらに、図５にわかりやすく示された、コンパイラによって翻訳されたコンフィギュレーション・ファイルは、最初にプログラム・コードに翻訳され、次にコンパイルされるのではないことに留意すべきである。対照的に、翻訳機構ジェネレータによって作成された翻訳機構は、予め定義された個々のコンフィギュレーション・クラス４２０の各インスタンスのオブジェクト・グラフを作成する。このことは、図５に示された翻訳機構オブジェクトの文脈の中で、上記にさらに述べられた例によって説明される。
【０１１７】
図６は、設定された演算のシーケンスを示すシーケンス図を例示する。このシーケンス図６００は、翻訳機構によって作成された各コンフィギュレーション・オブジェクトが、アプリケーション・コンフィギュレーション４０５によって作成されたコンピュータ・アプリケーションの動作と表示を定義することを例示する。
【０１１８】
具体的には、例えば、モジュールなどの資源の表示と管理は、ある特定の資源の資源タイプ、もっと適切に言えばシグネチャについて設定された属性によって決定される。つまりこれは、設定されたパラメータがユーザ入力に対して表示されること、そして供給された設定された変数の値が演算結果として表示されることを意味する。コンピュータ・アプリケーションのグラフィカル・ユーザ・インタフェースは、したがって、総括的レベルで完全に開発可能であり、つまり、設計フェーズ３２０においてアプリケーション開発システム４０２によって提供される。言い換えれば、コンフィギュレーション・ファイル４３０中の資源タイプの設定に基づいて、コンピュータ・アプリケーションとのグラフィカル・ユーザ・インタフェースは、いかなる個別のプログラム・コードの追加の符号化もせずに作成可能である。さらに、資源についての変数の値を求めるために、資源パラメータのユーザにより定義された値に基づいて、演算は設定された式を使用する。
【０１１９】
具体的には、シーケンス図６００は、ある特定の資源についてのGetValues()が要求されることを示す。この要求は、照会された変数のリストを付けて行なわれる。資源は、次に、変数依存関係投影を作成する。この変数依存関係投影は、次に、変数の依存関係に従って、要求に応えるために演算されなければならない変数の値を求める。つまりこれは、個々の変数の値を求める順序に従って、演算対象のすべての繰返し変数の値を求め、もっと適切に言えば計算し、演算対象のすべての局所変数の値を求めることを意味する。局所変数は、例えば、パラメータまたは供給された変数である。
【０１２０】
資源は、次に、中間結果のための格納オブジェクト（中間結果格納）を作成する。資源は、次に、GetRecursiveVariables()によって演算されなければならない繰返し変数を要求し、これらの値を計算するために繰返し演算器を使用する。この目的のために、資源はこれらの変数のサブ資源のリストを渡す。
【０１２１】
繰返し演算器は、すべてのサブ資源に対して必要な値を要求する。さらに、繰返し演算器は、各サブ資源についての値の総和としてこれらの値を合計する。
【０１２２】
資源は、これらの値を再び中間結果格納に保存する。
【０１２３】
資源は、次に、getLocalVariableOrder()によって局所変数―この例では、演算対象のパラメータと供給された変数―を要求する。getLocalValue()によって、資源は正しい順序で局所変数の値を計算する。つまりこれは、あるパラメータについての値は、単純に、まさにその瞬間のそのパラメータの値であることを意味する。供給された変数については、その値は式の計算の結果である。ここで、コンフィギュレーションに基づいて翻訳機構によって作成された式オブジェクトが要求される。繰返し変数については、値はすでに中間結果格納の中にある。
【０１２４】
資源は、次に、中間結果格納から要求された変数の値を読出して、値を返す。
【０１２５】
要求された変数の値が計算されたことは、コンフィギュレーション・ファイル４３０中に定義されたコンフィギュレーションによって保証される。それは、このコンフィギュレーションに基づいて、変数依存関係投影と局所変数の演算順序が決定されたからである。
【０１２６】
このように、シーケンス図６００は、本発明の手法により作成されたアプリケーション中の演算は、翻訳機構によって作成されたオブジェクト・グラフに沿って実行されることを示す。
【０１２７】
図７は、設計フェーズ３２０でのアプリケーション開発システム４０２の提供、コンフィギュレーション・ファイル４３０の作成、コンフィギュレーション・フェーズ４３０及び、好ましくは、コンピュータ・システム１１５で実行されるアプリケーション実行４１０までの処理を説明する。
【０１２８】
具体的には、ステップＳ７００において、抽象モデルとして複数のコンフィギュレーション・クラスを含むドメイン固有言語が提供される。次に、ドメイン固有言語のセマンティックス（意味）によって、ステップＳ７１０で、コンフィギュレーション・ファイル４３０の定義を可能にするシンタックス（構文）が定義される。さらに、ステップＳ７２０で、同様に、コンフィギュレーション・ファイル４３０の定義内で使用可能な演算スキーマ用のシンタックス（構文）が定義される。ステップＳ７３０では、コンフィギュレーション・ファイル４３０をオブジェクト・モデルに翻訳することを可能にするプログラム・コード・フラグメントを含む複数の演算クラスが提供される。ステップＳ７００〜Ｓ７３０は、設計フェーズ４２０でアプリケーション開発システム４０２を提供する役目を果たす主要ステップを表わす。
【０１２９】
コンフィギュレーション・フェーズ３３０でのアプリケーション・コンフィギュレーション４０５へ移行するために、次のステップＳ７４０ではコンフィギュレーション・ツールが提供される。したがって、コンフィギュレーション・ツールの提供は、アプリケーション開発システム４０２の一部に入れることもでき、または、コンフィギュレーション・ファイル４３０は多種多様なツールを使用して作成可能であるテキスト・ファイルであるから、独立に行なうこともできる。しかし、ドメイン固有言語のシンタックス（構文）と文法に従ったコンフィギュレーション・ファイルの正しい定義をグラフィカル・ユーザ・インタフェースによってサポートするコンフィギュレーション・ツールをユーザに提供するためには、ある好適な実施形態では、そのグラフィカル・ユーザ・インタフェースと機能性によって、定義されたドメイン固有言語の規則、文法及びシンタックス（構文）に適合するコンフィギュレーション・ファイルをユーザが確実に作成できることを保証する特定のコンフィギュレーション・ツールが提供される。
【０１３０】
ステップＳ７４０で提供されたコンフィギュレーション・ツールを使用して、ステップＳ７５０では、ステップＳ７００で提供されたドメイン固有言語の文法とシンタックス（構文）に従って表現された資源コンフィギュレーションと演算スキーマを含む文字列、一つのコンフィギュレーション・ファイルまたは複数のコンフィギュレーション・ファイルが作成される。ステップＳ７５０は、したがって、コンフィギュレーション・フェーズ３３０でのアプリケーション・コンフィギュレーション４０５の主要ステップを表わす。しかし、少なくとも、特定のコンフィギュレーション・ツールがアプリケーション開発システム４０２内で提供されない場合には、コンフィギュレーション・ツールの提供Ｓ７４０が、アプリケーション・コンフィギュレーション４０５の一部に入ることもあり得る。
【０１３１】
次のステップＳ７６０では、コンフィギュレーション・ファイルがロードされる。図１に関する文脈で例示し説明したように、好ましくは、アプリケーション・ファイルがコンピュータ・システム１１５上にロードされ、アプリケーション開発システム４０２によって提供された個々の要素にアクセスする。次のステップとして、ステップＳ７７０で、アプリケーション開発４０２によって提供された翻訳エンジンが実行され、ロードされたコンフィギュレーション・ファイル４３０をオブジェクト・グラフに翻訳する。この翻訳に基づいて、ステップＳ７７５で、コンフィギュレーション・オブジェクトが、コンフィギュレーション・ファイル４３０に含まれた情報並びに上記コンフィギュレーション・オブジェクト４４０において提供された演算オブジェクトに含まれた情報を表現する、各コンフィギュレーション・クラス４２０のインスタンスとして作成される。ステップＳ７８０では、コンフィギュレーション・ファイルに従って演算を実行するための資源オブジェクトが作成される。これらの資源オブジェクトは、前のステップＳ７７５で作成された演算オブジェクトを使用する。
【０１３２】
前のステップで作成された各オブジェクトを使用して、ステップＳ７８５では、意図されたコンピュータ・アプリケーションのグラフィカル・ユーザ・インタフェースが作成されて、ステップＳ７９０では、このアプリケーションが、好ましくはコンピュータ・システム１１５上でユーザの視点から実行される。グラフィカル・ユーザ・インタフェースを表示し、アプリケーションを実行することによって、ステップＳ７９５において、例えば、パラメータ値の入力、照会の実行、資源オブジェクトの要求、報告サービスなどの提供されたアプリケーションのサービスをユーザは利用できるようになる。
【図１】
2009266231.tif 000003
【図２】
2009266231.tif 000004
【図３】
2009266231.tif 000005
【図４】
2009266231.tif 000006
【図５】
2009266231.tif 000007
【図６】
2009266231.tif 000008
【図７】
2009266231.tif 000009
【外国語明細書】
2009266231000001.pdf