(57)【要約】少なくとも１つの機能ユニットを有するコンピュータプログラムを、特に簡単かつフレキシブルに構成するために、次のステップを有する方法が提案される：  −少なくとも１つの実装に依存しないコンフィグレーションデータファイルを形成し、かつ／または少なくとも１つの実装に依存しないコンフィグレーションデータファイル内に格納されている情報を変更し；  −少なくとも１つの実装に依存しないコンフィグレーションデータファイル内に格納されている情報に従って、コンフィグレーションデータコンテナに格納されているコンフィグレーションデータを自動的に構築および／または自動的に更新し；  −コンフィグレーションデータコンテナに格納されているコンフィグレーションデータに従って、少なくとも１つの実装に依存するコンフィグレーションデータを自動的に形成し；  −少なくとも１つの実装に依存するコンフィグレーションデータファイル内に格納されている情報に従って、少なくとも１つの機能ユニットを自動的に構成する。【選択図】図１
2007523407.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの機能ユニットを有するコンピュータプログラムを構成する方法であって：
少なくとも１つの実装に依存しないコンフィグレーションデータファイル（１）を形成し、かつ／または少なくとも１つの実装に依存しないコンフィグレーションデータファイル（１）内に格納されている情報を変更するステップと；
コンフィグレーションデータコンテナ（３）内に格納されているコンフィグレーションデータを、少なくとも１つの前記実装に依存しないコンフィグレーションデータファイル（１）内に格納されている情報に従って、自動的に構築し、かつ／または自動的に更新するステップと；
前記コンフィグレーションデータコンテナ（３）内に記憶されている前記コンフィグレーションデータに従って、少なくとも１つの実装に依存するコンフィグレーションデータファイル（５）を自動的に形成するステップと；
少なくとも１つの前記実装に依存するコンフィグレーションデータファイル内に格納されている情報に従って、少なくとも１つの機能ユニットを自動的に構成するステップと；
を含むことを特徴とする、コンピュータプログラムを構成する方法。
【請求項２】
前記コンフィグレーションデータコンテナ内に存在している少なくとも２つの前記コンフィグレーションデータの関係を記述する、少なくとも１つの依存性情報が自動的に形成され、かつ、
少なくとも１つの前記依存性情報に従って、少なくとも１つの前記実装に依存するコンフィグレーションデータファイルが形成されることを特徴とする請求項１に記載の方法。
【請求項３】
請求項１または２に記載の方法であって、その場合にコンピュータプログラムが複数の機能ユニットを有しているものにおいて、
複数の実装に依存しないコンフィグレーションデータファイルが形成され、かつ前記実装に依存しないコンフィグレーションデータファイルの各々が、少なくとも１つの前記機能ユニットに対応づけられることを特徴とする方法。
【請求項４】
請求項１〜３のいずれかに記載の方法であって、その場合にコンピュータプログラムが複数の機能ユニットを有しているものにおいて、
複数の前記実装に依存するコンフィグレーションデータファイルが形成され、前記実装に依存するコンフィグレーションデータファイルの各々が、少なくとも１つの機能ユニットに対応付けられることを特徴とする、請求項１〜３のいずれかに記載の方法。
【請求項５】
構成されたコンピュータプログラムの少なくとも一部のインストールがその上で可能となる、ハードウェアの特性に従って、少なくとも１つの前記実装に依存するコンフィグレーションデータファイルが形成されることを特徴とする請求項１〜４のいずれかに記載の方法。
【請求項６】
少なくとも１つの前記実装に依存するコンフィグレーションデータファイルが、蓋然性チェックの結果に従って形成されることを特徴とする請求項１〜５のいずれかに記載の方法。
【請求項７】
前記蓋然性チェックを実施するために、少なくとも１つの前記ハードウェア特性が使用されることを特徴とする請求項５または６に記載の方法。
【請求項８】
文書化が自動的に形成され、かつ前記文書化が、少なくとも１つの前記実装に依存しないコンフィグレーションデータファイルおよび／または少なくとも１つの前記実装に依存するコンフィグレーションデータファイルの内部に格納されている情報を記述することを特徴とする請求項１〜７のいずれかに記載の方法。
【請求項９】
少なくとも１つの前記実装に依存しないコンフィグレーションデータファイルが、ＸＭＬベースのフォーマットで形成されることを特徴とする請求項１〜８のいずれかに記載の方法。
【請求項１０】
前記コンフィグレーションデータに従って自動的に、コンピュータプログラムに含まれる前記機能ユニットが前記コンピュータプログラムによって必要とされるか、が求められ、前記機能ユニットが前記コンピュータプログラムによって必要とされる場合にのみ、この前記機能ユニットのコンフィグレーションが行われることを特徴とする請求項１〜９のいずれかに記載の方法。
【請求項１１】
少なくとも１つの機能ユニットを有するコンピュータプログラムを構成するソフトウェアシステムにおいて、
ソフトウェアシステムが：
少なくとも１つの実装に依存しないコンフィグレーションデータファイルと；
コンフィグレーションデータを有するコンフィグレーションデータコンテナおよび／または少なくとも１つの前記実装に依存しないコンフィグレーションデータファイル内に格納されている情報に従って、コンフィグレーションデータコンテナを形成する手段と；
前記コンフィグレーションデータコンテナからの前記コンフィグレーションデータを変更および／または読み出す手段と；
前記コンフィグレーションデータコンテナに格納されている前記コンフィグレーションデータに従って、少なくとも１つの実装に依存するコンフィグレーションデータファイルを自動的に形成する手段と；
前記実装に依存するコンフィグレーションデータファイル内に格納されている情報に従って、少なくとも１つの機能ユニットを自動的に構成する手段と；
を含むことを特徴とする、ソフトウェアシステム。
【請求項１２】
前記ソフトウェアシステムが、請求項２から１１のいずれか１項に記載の方法を実施するための手段を有していることを特徴とする請求項１１に記載のソフトウェアシステム。
【請求項１３】
前記ソフトウェアシステムが、メモリ媒体上に格納されることを特徴とする請求項１１または１２に記載のソフトウェアシステム。
【請求項１４】
前記ソフトウェアシステムが、ランダムアクセスメモリ上、リードオンリーメモリ上あるいはフラッシュメモリ上に格納されていることを特徴とする請求項１３に記載のソフトウェアシステム。
【請求項１５】
前記ソフトウェアシステムが、デジタルバーサタイルディスク（ＤＶＤ）、コンパクトディスク（ＣＤ）上あるいはハードディスク（Ｈａｒｄ  Ｄｉｓｃ）上に格納されていることを特徴とする請求項１３に記載のソフトウェアシステム。
【請求項１６】
マイクロプロセッサを有する計算装置、特に制御装置において、
計算装置が、請求項１〜１０のいずれかに記載の方法を実施するようにプログラミングされていることを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも１つの機能ユニットを有するコンピュータプログラムを構成する方法に関する。
【０００２】
本発明は、また、少なくとも１つの機能ユニットを有するコンピュータプログラムを構成するためのソフトウェアシステムに関する。
【背景技術】
【０００３】
最近のコンピュータプログラムは、主として、できる限り広いアプリケーション領域内で使用できるように、プログラムされる。アプリケーション領域は、一方では、提供される、できる限り多くのユーザーの希望をカバーする機能性によって、そして他方ではコンピュータプログラムがその上で遂行されるべき、基礎となるハードウェアによって定められる。その場合に基礎となるハードウェアは、様々な領域で使用され、様々なコンポーネント（たとえばプロセッサまたはバスシステム）から構築され、かつ／または様々な周辺機器を使用する、様々なコンピュータシステムである。
【０００４】
様々な機能性は、基礎となるハードウェアの様々な条件から、あるいは様々なユーザーの希望から生じる。基礎となるハードウェアおよび所定のユーザーの希望へのコンピュータプログラムの適合とそれに伴って特殊化は、コンピュータプログラムの、いわゆるコンフィグレーションを含んでいる。
【０００５】
コンフィグレーションは、たとえばコンピュータプログラムの個々の機能をアクティブまたは非アクティブにすること、所定の変数のためのスタート値のセットあるいは所定の変数タイプの設定と特殊化を含んでいる。
【０００６】
コンピュータプログラム内で使用される変数と機能を、いわゆるヘッダデータファイル内で宣言すること、およびヘッダデータファイル内で個々の変数または機能識別子が変更されることによって、コンピュータプログラムのコンフィグレーションを実施することが、知られている。たとえば、コンピュータプログラム内で使用され、かつヘッダデータファイル内で宣言されている機能識別子に、所定のコンフィグレーションに従って特殊な機能を割り当てることが可能である。
【０００７】
通常、コンピュータプログラムは、いわゆる高級プログラミング言語、たとえば、Ｃ、Ｃ＋＋、Ｓｃｈｅｍｅ、ＪＡＶＡ、で形成される。通常、高級プログラミング言語で形成されたコンピュータプログラムは、ソースコードと称される。この種のコンピュータプログラムをコンピュータ上で実施することができるようにするために、ソースコードからマシンコードが形成されなければならず、そのマシンコードはコンピュータのプロセッサによって実施可能な命令を有している。マシンコードは、ソースコードのいわゆる解釈実行またはコンパイルによって形成することができる。
【０００８】
通常、コンピュータプログラムは、多数の機能ユニットを有している。その場合に１つまたは複数の機能ユニットのソースコードは、データファイル内に格納されている。この種の１つまたは複数のデータファイルには、ヘッダデータファイルが対応づけられている。従ってコンピュータプログラムは、、通常、多数のデータファイルからなる。従って、個々のヘッダデータファイル内部の変更によって実施される、この種のコンピュータプログラムのコンフィグレーションは、極めて見通しにくく、しばしばソースコードの形成者によってしか実施できないことがある。さらに、すべてのヘッダデータファイルのドキュメンテーションが形成されなければならず、それは極めて複雑であり、その場合にドキュメンテーション自体が、大体において極めて見通しにくい。
【０００９】
また、コンピュータプログラムをコンフィギュレーションするために、コンピュータプログラムに特殊な機能ユニットを対応づけることが知られており、その機能ユニットによってコンピュータプログラム全体のコンフィグレーションが、たとえば予め定められたパラメータの値の変更によって可能である。機能ユニットは、たとえば遂行されるコンピュータプログラムから呼び出して、コンピュータプログラムのコンフィギュレーションのために実行することができる。しかし、コンピュータプログラムのコンフィグレーションのために設けられている、この種の機能ユニットは、予め定められた領域限界内部のコンフィグレーションしか許さない。たとえばコンピュータプログラムを新しいハードウェアに適合させるため、あるいはコンピュータプログラムを新しいユーザーの希望に適合させるためのコンピュータプログラムのコンフィグレーションは、この種の機能ユニットによっては不可能である。さらに、コンフィグレーションのために使用される機能ユニットは、該当するコンピュータプログラムのために特別に開発されなければならず、他のコンピュータプログラムのためには使用できない。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従って、本発明の課題は、コンピュータプログラムの、可能な限り分かりやすい、柔軟性のあるコンフィグレーションを許可する可能性を提供することである。
【課題を解決するための手段】
【００１１】
この課題は、次のステップを有する、冒頭で挙げた種類の方法によって解決される：
少なくとも１つの実装に依存しないコンフィグレーションデータファイルを形成し、かつ／または少なくとも１つの実装に依存しないコンフィグレーションデータファイル内に格納されている情報を変更し；
少なくとも１つの実装に依存しないコンフィグレーションデータファイル内に格納されている情報に従って、コンフィグレーションデータコンテナに格納されているコンフィグレーションデータを自動的に構築および／または自動的に更新し；
コンフィグレーションデータコンテナに格納されているコンフィグレーションデータに従って、少なくとも１つの実装に依存するコンフィグレーションデータを自動的に形成し；
少なくとも１つの実装に依存するコンフィグレーションデータファイル内に格納されている情報に従って、少なくとも１つの機能ユニットを自動的に構成する。
【発明の効果】
【００１２】
従ってコンフィグレーションを定めるデータは、意図される具体的な実装とは関係なく１つまたは複数の実装に依存しないコンフィグレーションデータファイル内に格納される。このコンフィグレーションデータファイルが実装に依存しないことが、特に、格納されている情報の抽象的な記述を可能にする。このことが、コンピュータプログラムのコンフィグレーションのために重要な情報を特に良好に分かりやすく格納し、従ってコンフィグレーションを著しく簡略化することを、可能にする。このコンフィグレーションデータファイルが実装に依存しないことによって、特に、簡単な方法でコンピュータプログラムのコンフィグレーションを実現することを可能にするので、コンピュータプログラムは、たとえば、そのコンピュータプログラムを形成する際にその正確なパラメータがまだ全く分かっていなかった、新しいコンピュータシステム上で遂行可能である。
【００１３】
コンフィグレーションデータコンテナは、コンフィグレーションにとって重要なすべてのデータを中心部で予め保持することを可能にする。コンフィグレーションデータコンテナに格納されているコンフィグレーションデータを用いて、自動的に少なくとも１つの実装に依存するコンフィグレーションデータファイルが形成される。実装に依存するコンフィグレーションデータファイル内で、実装に依存しないコンフィグレーションデータファイルに関して個々の、あるいは複数のパラメータ値の具体化が行われる。この種の具体化において、たとえば相対的な値が絶対的な値によって置き換えられる。同様に個々の値またはデータ領域に、所定のデータタイプまたはデータ構造を対応づけることができる。従って、実装に依存するコンフィグレーションデータファイルは、たとえばソースコードのプログラミングの際に使用される１つまたは複数のプログラミング言語あるいは、コンピュータプログラムがその上で遂行される、ハードウェア特性のような、実装に依存する特性を考慮する。
【００１４】
実装に依存しないコンフィグレーションデータファイル内に格納されている情報によるコンフィグレーションデータコンテナの構築または更新は、例えば、いわゆるスクリプトによって実施することができる。その場合にスクリプトは、特殊なコンピュータプログラムによって実施することのできる、命令のシーケンスを表している。この種の特殊なコンピュータプログラムは、例えばＡＷＫまたはＰｅｒｌである。この特殊なコンピュータプログラムは、コンフィグレーションデータコンテナ内に格納されているコンフィグレーションデータから実装に依存するコンフィグレーションデータファイルを形成するためにも、使用することができる。
【００１５】
従って本発明の主要な構成部分は、ユーザー（コンフィグレータ）とコンピュータプログラムとの間において、コンフィグレーションの基礎となる、実装に依存しないコンフィグレーションデータファイル内に、実施すべきコンフィグレーションの抽象的な記述が設けられていることによって、コンピュータプログラムのコンフィグレーションを著しく改良することができる、という認識である。実装に依存しないコンフィグレーションデータファイルを用いて、自動的に実装に依存するコンフィグレーションデータファイルが形成され、それがその後コンピュータプログラムのコンフィグレーションのために利用される。従って本発明に基づく方法は、コンフィグレーションを記述する情報を抽象的に、従って特に良好に分かりやすくするように示すことを可能にする。各実装の詳細の独立性によって、さらに、特に高い柔軟性が達成される。
【００１６】
本方法の好ましい展開においては、コンフィグレーションデータコンテナ内に存在している少なくとも２つのコンフィグレーションデータの依存性を記述する、少なくとも１つの依存性情報が、自動的に形成される。少なくとも１つの実装に依存するコンフィグレーションデータファイルは、少なくとも１つの依存性情報に従って形成される。
【００１７】
依存性情報は、たとえば、あるコンフィグレーションパラメータの変更が他のコンフィグレーションパラメータに作用するか、を記述することができる。たとえば、ある機能ユニットのために１つのリソースが排他的に予約されている場合に、そのリソースはその機能ユニットを実施している間、他の機能ユニットには提供されない。依存性情報によって、どの機能ユニットが所定のリソースを必要としており、従って同時には遂行できないか、を求めることができる。従って依存性情報は、リソース管理にも使用することができる。
【００１８】
本方法の好ましい実施形態においては、複数の実装に依存しないコンフィグレーションデータファイルが形成され、実装に依存しないコンフィグレーションデータファイルの各々が、少なくとも１つの機能ユニットに対応づけられる。これが、実装に依存しないコンフィグレーションデータファイル内に情報として格納されているコンフィグレーションデータを特に簡単に呼び出して、変更することができることによって、特に簡単なコンフィグレーションを可能にする。たとえば、コンフィグレーションを定める情報、すなわちコンフィグレーションパラメータを、それによって調節される機能性またはハードウェアに従って整理することが可能である。さらに、それによって、実装に依存しないコンフィグレーションデータファイルを、新しく付け加える機能ユニットに特に簡単に適合させることができる。最も簡単な場合においては、新しく付け加える機能ユニットに、特殊な実装に依存しないコンフィグレーションデータファイルが対応づけられる。
【００１９】
好ましくは、複数の実装に依存するコンフィグレーションデータファイルが形成され、実装に依存するコンフィグレーションデータファイルの各々が、少なくとも１つの機能ユニットに対応づけられる。実装に依存するコンフィグレーションデータファイルのこの種の構造化は、形成される実装に依存するコンフィグレーションデータファイルのわかりやすさを向上させる。、１つまたは複数の機能ユニットが様々なデータファイル内に存在するように、ソースコードが構造化されている場合には、ソースコードのデータファイルの各々に、実装に依存するコンフィグレーションデータファイルが対応づけられるようにすることができる。この種のわかりやすい構造化は、各実装に依存しないコンフィグレーションデータファイルにそれぞれ実装に依存するコンフィグレーションデータファイルが対応づけられていることによっても、達成することができる。
【００２０】
好ましくは、少なくとも１つの実装に依存するコンフィグレーションデータファイルは、設定されたコンピュータプログラムの少なくとも一部のインストールがその上で可能になる、ハードウェアの少なくとも１つの特性に従って、形成される。この種のハードウェア特性は、たとえば、提供されるプロセッサの数または種類およびハードウェアに接続されるセンサの数とすることができる。このようなハードウェア特性が、実装に依存するコンフィグレーションデータファイルを形成する際に考慮される場合には、コンピュータプログラムの特に正確なコンフィグレーションを行うことができる。従って、たとえば、特に依存性情報によって、実施速度に関して最適化されたコンフィグレーションを自動的に形成することが可能である。
【００２１】
好ましい実施形態においては、少なくとも１つの実装に依存するコンフィグレーションデータファイルが、蓋然性チェックの結果に従って形成される。蓋然性チェックは、たとえば、機能ユニットによって必要とされるリソースが、そもそも提供されるか、のチェックを含んでもよい。
【００２２】
好ましくは、蓋然性チェックを実施するために、少なくとも１つのハードウェア特性が使用される。それによって、自動化度を特に良好に向上させ、コンピュータプログラムの信頼できるコンフィグレーションを達成することができる。機能ユニットが、たとえば測定値の検出を行う場合には、適切なセンサが設けられているか、そしてそれが必要とされる測定精度を提供するか、を調べることができる。この場合において、たとえば、センサのコンフィグレーションが自動的に実施されることが、考えられる。
【００２３】
他の好ましい実施形態においては、自動的にドキュメンテーションの形成が行われる。ドキュメンテーションは、少なくとも１つの実装に依存しないコンフィグレーションデータファイル内および／または少なくとも１つの実装に依存するコンフィグレーションデータファイル内に格納されている情報を記述する。このような自動的に形成されたドキュメンテーションは、一方では、コンピュータプログラムの保全性を向上させ、他方では、特に簡単に、実施されるコンフィグレーションを理解することを可能にする。ドキュメンテーションの自動的な形成によって、それが実際のコンフィグレーションと一致することが、保証される。コンピュータプログラムの新しいコンフィグレーションを実施しようとする場合に、この種のドキュメンテーションを用いて、特に簡単に、どのパラメータ値を変更しなければならないか、を定めることができる。
【００２４】
好ましくは少なくとも１つの実装に依存しないコンフィグレーションデータファイルが、ＸＭＬベースのフォーマットで形成される。ＸＭＬ（Extensible Markup Language）は、構造化された言語の形成を可能にする、標準化されたメタ言語である。少なくとも１つの実装に依存しないコンフィグレーションデータファイルが、ＸＭＬコンフォームの、構造化された言語で形成されている場合には、コンフィグレーションは、この種の実装に依存しないコンフィグレーションデータファイルが特に良好に読めることによって、容易になる。さらに、この種のコンフィグレーションデータファイルは、特に良好に機械でも読むことができる。特に多数の、部分的に同様に標準化されたソフトウェアツールが存在しており、それを用いてＸＭＬベースのフォーマットで形成されたデータファイルの処理と加工が可能である。
【００２５】
本方法の好ましい実施形態において、コンフィグレーションデータに従って自動的に、コンピュータプログラムに含まれている機能ユニットがコンピュータプログラムによって必要とされるか、が求められ、機能ユニットがコンピュータプログラムによって必要とされる場合にのみ、この機能ユニットのコンフィグレーションが実施される。このことは、構成されたコンピュータプログラムを実施する場合に実際に必要とされる機能ユニットのみが、実際に構成されることによって、コンフィグレーションを特に迅速に実施することを、可能にする。さらにそれによって、構成されたコンピュータプログラムができるかぎりわずかなメモリスペースしか要求しないことが達成される。というのは、たとえばソースコードの、マシンコードへの変換は、実際に適用されるべき機能ユニットについてだけ促されるからである。
【００２６】
課題は、冒頭で挙げた種類のソフトウェアシステムによっても、解決される。その場合にソフトウェアシステムは、次のものを有している：
少なくとも１つの実装に依存しないコンフィグレーションデータファイルと；
コンフィグレーションデータを有するコンフィグレーションデータコンテナおよび／または、少なくとも１つの実装に依存しないコンフィグレーションデータファイル内に格納されている少なくとも１つの情報に従って、コンフィグレーションデータコンテナを形成するための手段と；
コンフィグレーションデータコンテナからのコンフィグレーションデータを変更および／または読み出すための手段と；
コンフィグレーションデータコンテナ内に格納されているコンフィグレーションデータに従って、少なくとも１つの実装に依存するコンフィグレーションデータファイルを自動的に形成する手段と；
実装に依存するコンフィグレーションデータファイル内に格納されている情報に従って、少なくとも１つの機能ユニットを自動的に構成する手段。
【００２７】
好ましくは、ソフトウェアシステムは、本発明に基づく方法を実施するための手段を有している。
【００２８】
その場合に本発明をソフトウェアシステムの形式で実現することが、特に重要である。その場合にソフトウェアシステムは、計算装置上、特にマイクロプロセッサ上で遂行可能であって、本発明に基づく方法を実施するのに適している。従ってこの場合において、本発明は、ソフトウェアシステムによって実現されるので、ソフトウェアシステムは、ソフトウェアがそれを実施するのに適している、方法と同様に、本発明を表す。ソフトウェアシステムは、好ましくはメモリ素子上に格納されている。メモリ素子は、ランダムアクセスメモリ、リードオンリーメモリまたはフラッシュメモリとして形成することができる。メモリ素子は、また、デジタルバーサタイルディスク（ＤＶＤ）、コンパクトディスク（ＣＤ）あるいは固定ディスク（ハードディスク）として形成することもできる。
【発明を実施するための最良の形態】
【００２９】
本発明の他の特徴、適用可能性および利点は、図面に示されている、本発明の実施例についての以下の説明から明らかにされる。その場合に記載され、あるいは図示されているすべての特徴は、それ自体で、あるいは任意の組み合わせにおいて、特許請求項におけるその要約あるいはその帰属とは関係なく、かつ明細書ないし図面におけるその表現ないし表示に関係なく、本発明の対象を形成する。
【００３０】
図１は、本発明に基づく方法を実施するためのソフトウェアシステムを示している。ソフトウェアシステムは、実装に依存しない複数のコンフィグレーションデータファイル１を有している。各コンフィグレーションデータファイル１には、データファイル名が対応づけられている。図１に示す、実装に依存しないコンフィグレーションデータファイルは、たとえばデータファイル名ｃｏｎｆ＿１．ｘｍｌ、ｃｏｎｆ＿２．ｘｍｌ、ｃｏｎｆ＿３．ｘｍｌからｃｏｎｆ＿ｎ．ｘｍｌを有している。データファイルの語尾．ｘｍｌは、実装に依存しないコンフィグレーションデータファイル１が、ＸＭＬベースのフォーマットで存在していることを、示している。ＸＭＬベースのフォーマットで存在しているテキストデータファイルは、テキストデータファイルを予め定めることのできる規則に従って構造化することを可能にする。この種の構造化されたテキストデータファイルは、特に良好に手動および機械的に読み込んで処理することができる。
【００３１】
実装に依存しないコンフィグレーションデータファイル１は、スクリプト２へ供給される。スクリプト２は、たとえば、いわゆるＰｅｒｌスクリプトとして形成されている。Ｐｅｒｌは、インタープリタ言語であって、その文法はプログラム言語Ｃに基づいており、かつそれぞれの駆動システムへ提供されるサービスプログラムを使用する。
【００３２】
スクリプト２を用いて、実装に依存しないコンフィグレーションデータファイル１が読まれ、その中に格納されている情報が引き出されて、コンフィグレーションデータコンテナ３内に格納される。同時に、場合によっては存在している、他のコンフィグレーションスクリプト４に対する関係が定められて、格納される。
【００３３】
参照符号４は、他のコンフィグレーションスクリプトを示している。これも、同様にＰｅｒｌスクリプトとして形成されている。同様に、他のコンフィグレーションスクリプト４の１つまたは複数が実施可能なコンピュータプログラム（マシンコード）であり、あるいは他のスクリプト言語、たとえばＡＷＫで存在していることが考えられる。
【００３４】
参照符号５は、実装に依存するコンフィグレーションデータファイルを示している。実装に依存するコンフィグレーションデータファイル５は、たとえば、構成すべきソースコードがプログラミングされている、そのプログラム言語でコード化されている。この種の実装に依存するコンフィグレーションデータファイルは、コンパイラ６によって処理することができる。
【００３５】
参照符号７は、複数の機能ユニット８を有するコンピュータプログラムを示している。
【００３６】
本発明に基づくソフトウェアシステムの機能方法を、図２に示すフローチャートを用いて説明する。
【００３７】
図２に示す、コンピュータプログラムを構成するための本発明に基づく方法のフローチャートは、ステップ１００で開始される。ステップ１０１において、実装に依存しないコンフィグレーションデータファイル１が形成され、または変更される。実装に依存しないコンフィグレーションデータファイル１は、特に、そこに格納されている情報を用いて具体的なコンフィグレーション値またはコンフィグレーションパラメータを抽象的に記述することが可能であることを、特徴としている。具体的なコンフィグレーション値は、たとえば、電圧を測定するためのセンサモジュールの測定領域を定めることができる。たとえば、測定領域を抽象的に値３−５ボルトで示すことが可能である。しかし、それに基づいて、構成すべき機能ユニット８が予測するように形成すべき、測定領域の実装に関係する値は、たとえば１０、０００と２０、０００の間にある可能性がある。この場合において、コンピュータプログラムの、センサモジュールを制御する機能ユニット８は、３−５ボルトの測定領域内での測定を可能にするためには、たとえば具体的なコンフィグレーション値１０、０００と２０、０００で構成されなければならない。
【００３８】
ステップ１０１で形成され、または変更された実装に依存しないコンフィグレーションデータファイル１は、たとえばＸＭＬベースのフォーマットで形成されている。この種のフォーマットは、実装に依存しないコンフィグレーションデータファイル１のわかりやすい構造化を特に良好に達成することを可能にする。これが、実装に依存しないコンフィグレーションデータファイル１の読み取り可能性を高め、実装に依存しないコンフィグレーションデータファイル１の変更を、たとえば変更すべきコンフィグレーションデータを迅速に呼び出すことができることによって、簡略化する。そのコンフィグレーションのために多数のコンフィグレーションデータを必要とする、特に大きいコンピュータプログラムのためにも、唯一の実装に依存しないコンフィグレーションデータファイルを設けることが、可能である。その場合に実装に依存しないコンフィグレーションデータファイル１内に格納されている情報の構造化は、適切なＸＭＬ構造によって達成することができる。しかし、複数の実装に依存しないコンフィグレーションデータファイルを設けると、特に効果的である。これら実装に依存しないコンフィグレーションデータファイル１の各々を、たとえば１つまたは複数の機能ユニット８に対応づけることができる。それによって、実装に依存しないコンフィグレーションデータファイルの形成または変更を特にわかりやすく実施することが可能である。さらに、それによって、個々の実装に依存しないコンフィグレーションデータファイルの再利用可能性が高まる。これは特に、ソースコードの個々の機能ユニット８を繰り返し使用しようとするプロジェクトにとって効果的である。
【００３９】
ステップ１０２において、コンフィグレーションデータコンテナが構築され、または更新される。これは、スクリプト２内にリストアップされている指示を処理することによって行われる。スクリプト２は、まず、依存しないコンフィグレーションデータファイル１が読み込まれることを促す。実装に依存しないコンフィグレーションデータファイル１の基礎になっているのが構造化されたフォーマット、たとえばＸＭＬフォーマットである場合には、スクリプト２によって特に良好に、実装に依存しないコンフィグレーションデータファイルの内容の構文的および／または意味的解析を実施することができる。従って、たとえばコンフィグレーションデータの記載におけるエラーを認識することができる。好ましくは実装に依存しないコンフィグレーションデータファイル１のＸＭＬフォーマットは、階層的構造を有しており、その構造は好ましくは機能ユニット８自体の構造、その依存性および／またはそのテーマの近くの情報を得る。スクリプト２によって、この階層的構造を構築する際の、そしてそれに伴ってソースコード自体を構築する際のエラーを認識することができる。
【００４０】
好ましくは、スクリプト２は、発見されたエラーの処理を有している。これは、たとえば、エラー情報の出力によって行われる。同様に、エラーを除去するために確率的方法を使用することも考えられる。
【００４１】
スクリプト２は、ステップ１０２において、実装に依存しないコンフィグレーションデータファイル１内に存在しているコンフィグレーションデータを抽出して、それをコンフィグレーションデータコンテナ３内に格納する。その場合にコンフィグレーションデータコンテナ３は、たとえばデータベースとして形成することができる。同様に、コンフィグレーションデータコンテナ３が、本発明に基づくソフトウェアシステムの内部のメモリ領域内に前もって保持されているデータ構造として実現されており、その場合にスクリプト２がコンフィグレーションデータコンテナ３内に格納されているコンフィグレーションデータへの読み書きアクセスを有することが保証されていることが考えられる。
【００４２】
ステップ１０３において、依存性が求められる。この種の依存性は、たとえば本コンフィグレーションにおいてコンピュータプログラムのどの機能ユニット８が実際に処理されなければならないか、を記述することができる。この依存性を用いて、後続のステップの１つにおいて所定の機能ユニット８のために、そもそも実装に依存するコンフィグレーションデータファイルが形成されなければならないか、を決定することができる。さらに、依存性は、、どの具体的なコンフィグレーションデータがどの抽象的なコンフィグレーションデータに依存するか、を記述することができる。すなわち、実装に依存しないコンフィグレーションデータファイル内の抽象的なコンフィグレーションデータの変更が、多数の具体的なコンフィグレーションデータの変更をもたらすことが考えられる。
【００４３】
依存性は、他のスクリプト４自体がコンフィグレーションコンテナ３を変更した場合にも、生じることが可能である。従ってスクリプト４の正しい呼出し順序（能動化シーケンス）が求められて、格納されなければならない。依存性は、１つまたは複数のハードウェアコンポーネントと個々のコンフィグレーションデータとの間の関係も記述することができる。これが、たとえば、設けられているコンフィグレーションが所定のハードウェア上で実際に遂行できるか、を認識することを可能にする。
【００４４】
ステップ１０４において、蓋然性チェックが行われる。その場合に特に、ステップ１０３で求められた依存性を用いて、実装に依存しないコンフィグレーションデータファイル１を用いて予め定められたコンフィグレーションがエラーを有するか、が調べられる。エラーがある場合には、ステップ１０１へ戻って、そこでエラー除去の目的で実装に依存しないコンフィグレーションデータファイル１の変更が実施される。ステップ１０４において、エラーが認識されない場合には、ステップ１０５へ分岐する。
【００４５】
ステップ１０５においては、実装に依存するコンフィグレーションデータファイル５が形成される。そのために１つまたは複数のスクリプト４を用いて、まずコンフィグレーションデータコンテナ３内に格納されているコンフィグレーションデータが呼び出される。本実施例においては、スクリプト４は、Ｐｅｒｌスクリプトとして形成されている。スクリプト４によって、特にコンフィグレーションデータコンテナ３内に格納されている抽象的なコンフィグレーションデータが具体的なコンフィグレーションデータに変換され、それがその後実装に依存するコンフィグレーションデータファイル５に格納される。その場合に好ましくは、ステップ１０３で求められた依存性も使用される。
【００４６】
ステップ１０５で形成された実装に依存するコンフィグレーションデータファイル５は、たとえばヘッダデータファイル（図１のfile_1.h、file_2.h、file_3.h）とすることができる。同様に、形成された実装に依存するコンフィグレーションデータファイル５は、ソースコードを含むことができる（図１のfile_2.c、file_k.c）。典型的に、スクリプト４によって抽象的なコンフィグレーションデータから形成された具体的なコンフィグレーションデータは、変数および／または機能パラメータのための値の割当てによって、かつプログラミング言語内の命令として実現されている。その場合にプログラミング言語は、コンピュータプログラム７の機能ユニット８がその中でコード化されている、そのプログラム言語に相当する。コンピュータプログラム７の機能ユニット８が、たとえばプログラム言語Ｃ＋＋でコード化されている場合には、具体的なコンフィグレーションデータは、たとえばいわゆる＃Ｄｅｆｉｎｅ命令によって、あるいは一定の変数の定義によって実現することができる。スクリプト４によって、コンフィグレーションデータコンテナ３内に格納されているコンフィグレーションデータに従って、たとえばハードウェアコンポーネントの初期化または個々のソフトウェアコンポーネントあるいはハードウェアコンポーネントの存在チェックのような複雑な課題を引き受け、かつそれ自体より高次のプログラミング言語内でソースコードとして実現されている機能を発生させることも可能である。その場合にこのソースコードは、１つまたは複数の実装に依存するコンフィグレーションデータファイル（図１のfile_2.c、file_k.c）に格納することができる。そのためにスクリプト４は、たとえばいわゆるテンプレートを有することができ、そのテンプレートはたとえばＣ＋＋における命令からなり、その命令はコンフィグレーションデータコンテナ３内に格納されているコンフィグレーションデータに従って更新され、かつ実装に依存するコンフィグレーションデータファイル５内に格納される。
【００４７】
ステップ１０６において、コンピュータプログラム７の機能ユニット８が更新される。これは、たとえばコンパイラ６の自動的な呼出しによって行うことができ、そのコンパイラはソースコード内に存在する機能ユニットをマシンコードに変換する。そのためにコンパイラ６は、実装に依存するコンフィグレーションデータファイル５を読み込んで、実装に依存するコンフィグレーションデータファイル５内に格納されている具体的なコンフィグレーションデータに従って、マシンコードの生成を制御する。また、１つまたは複数の機能ユニット８がすでに、マシンコードで存在していることが、想像し得る。この場合にはコンパイラは、たとえばスクリプト４によって形成されたソースコード（図１のfile_2.c、file_k.c）をヘッダデータファイル（file_1.h、file_2.h、file_3.h）を考慮しながら、マシンコードに変換し、このようにして変換されたマシンコードをコンパイラ６に対応づけられた、いわゆるリンカーを用いて、機能ユニット８を表すマシンコードと結合する。
【００４８】
ステップ１０７において、方法が終了される。このステップにおいて、コンピュータプログラム７は、実装に依存しないコンフィグレーションデータファイル内に格納されている具体的なコンフィグレーションデータが、形成されたマシンコード内で考慮されるように、構成される。
【００４９】
もちろん、スクリプト２および／またはスクリプト４が他のスクリプト言語で記述されており、あるいは実施可能なプログラムとして形成されることも、可能である。
【００５０】
図２に示す実施ステップは、もちろん変更することができ、かつ処理の順序を部分的に変更することができる。すなわち、蓋然性チェック１０４が１つまたは複数のスクリプト４によって実施されることも考えられる。
【００５１】
本方法は、特にまた、１つまたは複数の実装に依存しないコンフィグレーションデータファイルから出発し、１つのスクリプトまたは、たとえば相前後して実施される複数のスクリプト２を有し、それぞれ１つまたは複数の実装に依存するコンフィグレーションデータファイル５を発生させる、１つまたは複数のスクリプト４を有することこともでき、そしてもちろんコンピュータプログラム７は１つまたは複数の機能ユニット８を有することができる。本発明に基づく方法によって、特に、実装に依存しないコンフィグレーションデータファイルによってコンフィグレーションが予め定められる場合に、実際に機能ユニット８の１つまたは複数が使用されるのか、を認識することが可能である。そうでない場合には、これは、コンフィグレーションデータコンテナ３に対応づけられた、図示されていないソフトウェアツールによって認識することができる。このことが可能にするのは、この種の機能ユニット８が構成されず、かつ実装に依存するコンフィグレーションデータファイル５によってコンパイラは、形成すべきマシンコード内に一緒に機能ユニット８を引き受けないように、促されることである。それによって、本発明に基づく方法は、特に迅速に実施することができる。その場合に本発明に基づく方法によって構成された、コンピュータプログラムによって形成されたマシンコードは、特にコンパクトであって、従ってメモリスペースを節約することができる。
【００５２】
スクリプト２自体がすでに、１つまたは多数の実装に依存するコンフィグレーションデータファイル５の形成を促すことが、可能である。それによって本発明に基づく方法は、特に迅速に実施することができる。これは、たとえば、依存性を持たず、かつ具体的なコンフィグレーションデータから区別される、抽象的なコンフィグレーションデータにとって、効果的であろう。
【図面の簡単な説明】
【００５３】
【図１】本発明に基づく方法を実施するためのソフトウェアシステムの実施形態を示している。
【図２】本発明に基づく方法を実施するための、概略化されたフローチャートである。
【図１】
2007523407.tif 000003
【図２】
2007523407.tif 000004
【国際調査報告】
2007523407.tif 000005
2007523407.tif 000006
2007523407.tif 000007
2007523407.tif 000008
2007523407.tif 000009
2007523407.tif 000010