(57)【要約】モジュールベースのソフトウエアアーキテクチャにおいて、間接呼出技術を使用することによってモジュール置換又は除去の影響が最小限化される。クライアント／サーバ関係の観点からモジュール（Ｍ０−Ｍ４）間の双方向通信が考慮される場合、サーバモジュール（例えばＭ３）は前記サーバモジュールのレファレンス（＆Ｍ３）を使用してクライアントモジュール（例えばＭ１）によって呼び出される。前記呼び出されるべきモジュールの前記レファレンス（＆Ｍ３）は前記クライアントモジュール（Ｍ１）に入力として供給される。各々のモジュールは、所定の値をとる入力パラメータをヌルレファレンスとして認識する。前記呼び出されるべきモジュールがヌルレファレンスによって特定されると、当該モジュールに対して呼出はなされない。
2004523845.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを有するソフトウエアアーキテクチャであって、前記複数のモジュールのうちの少なくとも一つのモジュールが、呼び出されたモジュールに対するレファレンスを使用して前記複数のモジュールのうちの他のモジュールを呼び出すためのモジュールであり、
前記呼び出されるべきモジュールの前記レファレンスが、前記呼び出すモジュールに入力として供給されるソフトウエアアーキテクチャ。
【請求項２】
前記複数のモジュールの各々は、所定の値を有する入力パラメータをヌルレファレンスとして認識すると共に、前記呼び出されるべきモジュールが前記ヌルレファレンスによって示されているとき呼出を行わない請求項１に記載のソフトウエアアーキテクチャ。
【請求項３】
各々のモジュールが、ファンクション、プロシージャ、オペレーティングシステムタスク、及びレイヤから構成されるグループにおいて選択されるソフトウエアエンティティに対応する請求項１に記載のソフトウエアアーキテクチャ。
【請求項４】
複数のモジュールを有する既存のモジュールベースのアーキテクチャに基づいて新たなモジュールベースのソフトウエアアーキテクチャを製造する方法であって、前記複数のモジュールのうちの少なくとも一つのモジュールが、呼び出されたモジュールに対するレファレンスを使用して前記複数のモジュールのうちの他のモジュールを呼び出すためのモジュールであり、前記呼び出されるべきモジュールの前記レファレンスが前記呼び出すモジュールに入力として供給される方法において、
前記複数のモジュールのうちの少なくとも一つを除去するステップと、
前記除去されたモジュールの前記レファレンスに対応する入力値を変更するステップと
を有する方法。
【請求項５】
前記複数のモジュールの各々は、所定の値を有する入力パラメータをヌルレファレンスとして認識すると共に、前記呼び出されるべきモジュールが前記ヌルレファレンスによって示されているとき呼出を行わず、前記変更するステップが、前記除去されたモジュールの前記レファレンスに対応する入力を前記ヌルレファレンスに置換するステップを有する請求項４に記載のアーキテクチャ製造方法。
【請求項６】
異なるレファレンスを有する置換モジュールによって前記除去されたモジュールを置換するステップを有し、前記変更するステップが、前記除去されたモジュールの前記レファレンスに対応する入力を前記置換モジュールの前記レファレンスに対応する入力に置換するステップを有する請求項４に記載のアーキテクチャ製造方法。
【請求項７】
各々のモジュールが、ファンクション、プロシージャ、オペレーティングシステムタスク、及びレイヤから構成されるグループにおいて選択されるソフトウエアエンティティに対応する請求項４に記載のアーキテクチャ製造方法。
【請求項８】
請求項１に記載のアーキテクチャを有する無線ドライバソフトウエアによって制御される位相同期ループを含む無線電話。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウエアコンポーネントの再利用及び設計、更には特に再利用可能なコンポーネントを含むソフトウエアアーキテクチャに関する。本発明は更に、既存のアーキテクチャに基づいて新たなモジュールベースのソフトウエアアーキテクチャを製造する方法にも関する。
【０００２】
【従来の技術】
一からプログラムを作成するのではなく、既存のプログラムを変更することによって、又は既存のプログラムのコンポーネントを再利用することによって、新たなソフトウエアを生成することが普通になってきた。しかしながら、ソフトウエアアーキテクチャにおけるモジュールが互いに双方向通信する場合、既存のプログラムにおけるモジュールの除去又は置換は残りのアーキテクチャに非常に重大な影響を及ぼし得る。更には特に、他のモジュールを呼び出すモジュール（例えばプロシ−ジャ（ｐｒｏｃｅｄｕｒｅ））は、前記呼び出されるべきモジュールの前記レファレンスを記憶するため、前記プログラムにおける変更により、前記記憶されたレファレンスは古くなり得る。
【０００３】
新たなプログラムにおける既存のソフトウエアモジュールの再利用を簡単にするために様々な提案がなされてきた。当該提案の中でも米国特許第５７７１３８６号において、コンポーネントモジュールの再利用を容易にするモジュールベースのソフトウエアアーキテクチャを採用する提案がなされた。
【０００４】
特に、米国特許第５７７１３８６号には、プログラムユニットのライブラリから選択される、コンパイルされていると共にそれぞれリンクされているプログラムユニットに対応するモジュールから構成されるソフトウエアアーキテクチャが記載されている。各々のプログラムユニットは、所定の位置において、前記プログラムユニットのプロシージャ及びデータに関するアドレスデータを含む、予め規定された構造を備えるヘッダを有している。所与のプログラムユニットにおけるプロシージャ又はデータを呼び出そうとするプロシージャは問題のプロシージャ又はデータのアドレスを認識する必要がない。当該プロシージャは前記プログラムユニットの前記ヘッダ内で前記位置を認識するようにプログラミングされているからである。当該プロシージャは当該ヘッダ内で所望のデータ又はプロシージャのアドレスを検索するであろう。記載のソフトウエアアーキテクチャは、様々なプログラムユニットのヘッダのメモリ位置を記憶するカタログも含んでいる。
【０００５】
米国特許第５７７１３８６号のソフトウエアアーキテクチャにより、最小限の変更でソフトウエアモジュールを再利用することが可能となると共に、当該モジュールからプログラムを組み立てることが可能となる。ここで当該組み立てられたプログラムをコンパイルする必要はない。しかしながら、当該ソフトウエアアーキテクチャの前記コンポーネントモジュールは、コンパイルされていると共にそれぞれリンクされているプログラムユニットであり、ソフトウエアに対する変更はプログラムの、更に多くの基本的なコンポーネントをしばしば含み得る。更に当該知られているソフトウエアアーキテクチャは、前記ソフトウエアモジュールのための所定のヘッダ構造を必要としている。このことにより、ある程度の設計自由度が制限される。
【０００６】
【発明が解決しようとする課題】
本発明の目的は、前記アーキテクチャの他のコンポーネントに対して小さな影響で自身の下位レベルのコンポーネントさえ修正（例えば除去又は置換）されることを可能にするソフトウエアアーキテクチャを提供することにある。
【０００７】
本発明の更なる目的は、前記変更をもたらすための期間及びコストにおいて比較的低い投資で、既存のアーキテクチャに基づいて新たなモジュールベースのソフトウエアアーキテクチャを製造する方法を提供することにある。
【０００８】
【課題を解決するための手段】
本文献において、ソフトウエアの“コンポーネント”又はソフトウエア“モジュール”に対するレファレンスは、入力パラメータを直接的又は間接的に受信し得ると共に出力パラメータを直接的又は間接的に供給し得る何れかのソフトウエアエンティティを示しており、例えばファンクション／プロシージャ、オペレーティングシステムタスク、又はレイヤのようなより汎用的な概念を含んでいる。
【０００９】
本発明は以下の態様を考慮している。ソフトウエアアーキテクチャにおけるモジュール間の双方向通信が、クライアント／サーバの関係の観点から考慮され得る。“サーバ”モジュールは“クライアント”モジュールによって呼び出される。所与のモジュールは、他のモジュールを呼び出してもよいし、他のモジュールによってそれ自身呼び出されてもよい。このように所与のモジュールはクライアントにもなり得るし、サーバにもなり得る。自身が呼び出してもよいモジュールのレファレンスで予めプログラミングされる代わりに、各々のクライアントモジュールは当該クライアントモジュールの各々のサーバモジュールのレファレンスを入力として受信する。すなわち間接呼出（ｉｎｄｉｒｅｃｔ  ｃａｌｌｉｎｇ）の形態が使用されている。更に通常自身のサーバモジュールのレファレンスを必要とする何れかのモジュールは自身のクライアントモジュールから当該一つ（複数）のレファレンスを得るであろう。
【００１０】
本発明のソフトウエアアーキテクチャによりモジュールは、当該モジュールの完全性が維持される一方、対応するコードにおける比較的小さな修正で交換又はキャンセルされることが可能となる。従ってソフトウエア開発の間の期間及びコストが節減される。当該アーキテクチャはいかなるモジュール構造のソフトウエアに対しても採用され得る。
【００１１】
本発明の好ましい実施例によるソフトウエアアーキテクチャにおいて、当該アーキテクチャにおけるモジュールの置換は直接行われる。すなわち古い（置換された）モジュールのレファレンスの代わりに、新たなモジュールのレファレンスが、関連するクライアントモジュールに入力としてそのまま渡される。従って置換されたサーバモジュールを呼び出すクライアントモジュールの各々においてではなく、システムに対する入力のレベルにおいてしか変更が必要とならない。
【００１２】
本発明の好ましい実施例によるソフトウエアアーキテクチャにおいて、モジュールの除去は、古い（除去された）モジュールへのレファレンスをヌルレファレンス、すなわち全てのモジュールが、前記アーキテクチャにおいて何れのモジュールにも対応していないと認識するように予めプログラミングされている値をとる一定のレファレンスによって置換することにより実現される。ヌルレファレンスを受信するクライアントモジュールは、当該ヌルレファレンスが、既存のモジュールに対応していないことを認識するので、当該モジュールに対して呼出を行わない。
【００１３】
本発明によるソフトウエアアーキテクチャのモジュールはもはや可能なサーバモジュール（ｐｏｔｅｎｔｉａｌ  ｓｅｒｖｅｒ  ｍｏｄｕｌｅ）に対するレファレンスを記憶しないので、当該サーバモジュールの置換又は除去は可能な呼出モジュール（ｐｏｔｅｎｔｉａｌ  ｃａｌｌｅｒ  ｍｏｄｕｌｅ）にほとんど影響を及ぼさない。
【００１４】
本発明により、既存のモジュールベースのアーキテクチャに基づいて新たなソフトウエアアーキテクチャを製造する方法が提供される。
【００１５】
本発明を有利に実現するために選択的に使用されてもよい本発明及び他の特徴は、以下に記載の図から明らかでありこれらの図を参照して説明される。
【００１６】
【発明の実施の形態】
参照符号の使用において最初のいくつかの注意がなされるであろう。類似のエンティティは図面を通じて同じ文字コードによって示されている。様々な類似のエンティティは一つの図に示されてもよい。その場合、類似のエンティティを互いから識別するように番号が前記文字コードに付加される。注意すべきことに、モジュールは“Ｍｘ”（ここでｘは各々のモジュールを特定する番号である。）で示され、モジュールのレファレンスは“＆”シンボルの使用によって示されている。このように、モジュールＭｘのレファレンスは“＆Ｍｘ”と記載される。本記載及び請求項において、参照符号における何れの番号も適宜省略されてもよい。
【００１７】
本発明において使用されている図の表記法は、二つの双方向通信型モジュール（ｉｎｔｅｒａｃｔｉｎｇ  ｍｏｄｕｌｅ）Ｍ１及びＭ２を示す図１を考慮すると更によく理解されるであろう。この図（及び他の全て図）において、モジュールを差し示している矢印は当該モジュールに対する呼出（コール（ｃａｌｌ））を表している。ここで一つのモジュールからもたらされる矢印は、当該モジュールによって他のモジュールに対してなされる呼出を表している。各々の矢印にラベリングされた語（ワード）は、問題となる呼出に関連する入力／出力である。当該語は、モジュールが呼び出されたとき当該モジュールに渡される入力／出力の値を表す。このように図１に記載の例において、モジュールＭ１に対して呼出がなされ、当該モジュールは“Ｍ１の入力”とラベリングされたパラメータを入力として受信する。モジュールＭ１は、モジュールＭ２に対して呼出を行い、 “Ｍ１の出力”及び“Ｍ２の入力”とラベリングされたパラメータをＭ２に渡す。モジュールＭ２は今度は後続するモジュール（図示略）に対して呼出を行い、“Ｍ２の出力”とラベリングされたパラメータを当該後続するモジュールに渡す。
【００１８】
本発明の理解を容易にするために以下の記載において、五つの双方向通信型モジュールから構成される従来のソフトウエアアーキテクチャの例が、本発明の実施例によって実現される、対応するアーキテクチャと比較されている。本発明は更にもっと複雑なシステムに拡張されてもよいと共に、概していかなる数のモジュールも含んでいるアーキテクチャに対しても適用可能であることが理解されるべきである。
【００１９】
図２は、四つの他のモジュール、Ｍ１、Ｍ２、Ｍ３、及びＭ４のうちの何れか一つを呼び出してもよいモジュールＭ０から構成される従来のソフトウエアアーキテクチャの例を表している。モジュールＭ１自体はモジュールＭ３を呼び出してもよい。モジュールＭ０は、該Ｍ０が呼び出してもよい四つのモジュールのレファレンス＆Ｍ１、＆Ｍ２、＆Ｍ３、及び＆Ｍ４を記憶している。同様に、モジュールＭ１は、該Ｍ１が呼び出してもよいモジュールのレファレンス＆Ｍ３を記憶している。呼出中、モジュールレファレンスパラメータは当該モジュール間で渡されない。
【００２０】
図３は、同じモジュールＭ０乃至Ｍ４から構成される本発明によるソフトウエアアーキテクチャを表している。ここでＭ０は四つの他のモジュール、Ｍ１乃至Ｍ４のうちの何れか一つを呼び出してもよく、モジュールＭ１自体がモジュールＭ３を呼び出してもよい。しかしながら、この場合レファレンスは一つも記憶されない。逆にモジュールＭ０は、該Ｍ０が呼び出してもよい前記四つのモジュールのレファレンス＆Ｍ１、＆Ｍ２、＆Ｍ３、及び＆Ｍ４を入力パラメータとして受信する。同様にモジュールＭ１は、該Ｍ１が呼び出してもよい前記モジュールのレファレンス＆Ｍ３をＭ０から受信する。更に当該アーキテクチャにおける全てのモジュールは、ある一定の値をとるレファレンス（ヌルレファレンス（ＮＵＬＬ  ｒｅｆｅｒｅｎｃｅ））が既存のモジュールに対応しないので、当該モジュールに対して呼出を行う必要はないことを認識するように設計されている。
【００２１】
更に特に各々のモジュールは受信モジュールレファレンスを前記ヌルレファレンスと比較し、当該比較の結果が否定の場合に限って、前記受信レファレンスに対応する前記モジュールに対して呼出を行ってもよい。“呼出”がとる形態は実行態様に依存するであろう。例えば当該形態は、前記受信モジュールレファレンスに対応するアドレスへのジャンプでもたらされ得る。
【００２２】
前記モジュールは、モジュールレファレンス以外にパラメータに対応している入力（図３において図示略）を受信してもよいことが理解される。モジュールレファレンスに対応する前記入力は、前記アーキテクチャを実現するために使用されるプログラミング言語に依存して異なるよく知られている手段によって他の入力から区別される。例えばモジュールレファレンスに対応するメッセージのフォーマット又はヘッダが他の入力のフォーマット又はヘッダと異なっていてもよい。
【００２３】
図２のソフトウエアアーキテクチャと図３のソフトウエアアーキテクチャとの間の差の重要性は、元のアーキテクチャからモジュールを置換及び除去する効果に関する以下の記載から評価されるであろう。
【００２４】
図４及び５は、本発明による図３のアーキテクチャ及び図２の従来のアーキテクチャの各々においてモジュールＭ３が新たなモジュールＭ５によって置換されている例を示している。
【００２５】
従来のソフトウエアアーキテクチャの場合、新たなモジュールＭ５によるモジュールＭ３の置換は、古いレファレンス（ｏｂｓｏｌｅｔｅ  ｒｅｆｅｒｅｎｃｅ）＆Ｍ３を新たなレファレンス＆Ｍ５に置換するようにモジュールＭ０及びＭ１の変形を必要としていることが図４から分かるであろう。従ってこの場合モジュールの置換は二つの他のモジュールになされるべき変更を必要としている。
【００２６】
対比によって、本発明を実現するアーキテクチャの場合、新たなモジュールＭ５によるモジュールＭ３の置換は、モジュールＭ０及びＭ１に対していかなる変更も必要としていないことが図５から分かるであろう。モジュールＭ０に入力として渡されるレファレンスのみが（＆Ｍ３から＆Ｍ５に）変更される。モジュールＭ０は既に、該Ｍ０が入力としてレファレンスを受信する前記四つのモジュールを呼び出すように構成されているため、モジュールＭ０は新たなモジュールＭ５を正しく呼び出すであろう。モジュールＭ０は既に、該Ｍ０の第三の入力パラメータをモジュールＭ１に渡すように構成されていると共に、モジュールＭ１は既に、該Ｍ１がＭ０から入力としてレファレンスを受信するモジュールを呼び出すように構成されているため、モジュールＭ１によるＭ５に対する呼出も自動的に正しくなされるであろう。本発明の間接呼出技術（ｉｎｄｉｒｅｃｔ  ｃａｌｌｉｎｇ  ｔｅｃｈｎｉｑｕｅ）を使用することにより、モジュールＭ３がモジュールＭ５によって置換されるときＭ０のたった一つの入力パラメータしか修正される必要がない。モジュールＭ０及びＭ１は変更されない。
【００２７】
図６及び７は、本発明による図５のアーキテクチャ及び図４の従来のアーキテクチャからモジュールＭ５が除去される例を各々示している。
【００２８】
従来のソフトウエアアーキテクチャの場合、モジュールＭ５の除去は、モジュールＭ０及びＭ１の修正をここでも必要としていることが図６から分かるであろう。この場合モジュールＭ０及びＭ１は、除去されたモジュールＭ５に対して呼出を行わないように変更されなければならない。従ってこの場合、モジュールの除去には二つの他のモジュールに対して変更が行われることが必要とされる。
【００２９】
対比によって、本発明を実現するアーキテクチャの場合、モジュールＭ５の除去は、モジュールＭ０及びＭ１に対するいかなる変更も必要としていないことが図７から分かるであろう。ここでもモジュールＭ０に入力として渡されるレファレンスのみが（＆Ｍ５からヌルレファレンスに）変更される。モジュールＭ０は既に当該ヌルレファレンスを入力としてモジュールＭ１に渡すように構成されており、モジュールＭ０及びＭ１は既に前記ヌルレファレンスによって指定されるモジュールに対して呼出がなされる必要はないことを認識するように構成されている。このように、除去されたモジュールＭ５に対する呼出は自動的にキャンセルされる。
【００３０】
上記比較例は、本発明により、モジュールベースのソフトウエアアーキテクチャにおけるモジュールに対する変更が、残りのアーキテクチャに小さな影響しかもたらされないことが可能になるという事実を明らかにしている。
【００３１】
本発明によるソフトウエアアーキテクチャにおいて、クライアント／サーバ（例えば図３、５、及び７の例におけるＭ０）のチェーン内の第一のモジュールは、当該モジュールが自身のため若しくは他のモジュールに渡すために必要とするモジュールレファレンスをメモリ又は内部パラメータから引き出す。当該モジュールレファレンスがメモリからもたらされる場合、前記チェーンにおけるモジュール“ダウンストリーム”が置換／除去されるときにわずかな書き換え（ｒｅｐｒｏｇｒａｍｍｉｎｇ）が必要となる。前記モジュールレファレンスが内部パラメータから引き出される場合、“ダウンストリーム”モジュールが置換／除去されるときに当該第一のモジュールのわずかな書き換えが必要となるであろう。しかしながら、必要とされる前記書き換えは、従来例において必要とされ得る、置換／除去されたモジュールの全ての可能なクライアントモジュールの書き換えではなく、前記置換／除去されたモジュールの前記モジュールレファレンスの初期のソース（ｉｎｉｔｉａｌ  ｓｏｕｒｃｅ）に関するもののみである。
【００３２】
図８は、モバイル電話の分野における本発明の具体的な適用例を示している。注目されるべきことに、モバイル電話内部の無線ドライバ（ｒａｄｉｏ  ｄｒｉｖｅｒ）に関連している。本例において前記モジュールはファンクション（ｆｕｎｃｔｉｏｎ）に対応している。
【００３３】
図８に示されているように、モバイル電話内部の無線ドライバは、無線器を初期化する（この場合“Ｒａｄｉｏ＿ｉｎｉｔ”と表示）ファンクションを含んでいる。Ｒａｄｉｏ＿ｉｎｉｔファンクションは、二つの他のファンクションを呼び出す。一方（この場合“ＰＬＬ＿ｉｎｉｔ”と表示）は無線器内の位相同期ループ（ＰＬＬ）を初期化し、他方（この場合“ＰＬＬ＿ｌｏａｄ”と表示）は前記ＰＬＬをプログラミングする。ファンクションＰＬＬ＿ｉｎｉｔ及びＰＬＬ＿ｌｏａｄは、前記モバイル電話内に使用される無線器の特定の種類に依存して変更される。ファンクションＰＬＬ＿ｉｎｉｔはより汎用的であり、具体的には使用される無線器の種類に依存して変更されない。Ｒａｄｉｏ＿ｉｎｉｔファンクションはＰＬＬ＿ｉｎｉｔ及びＰＬＬ＿ｌｏａｄファンクションのレファレンスを記憶しないが当該レファレンスを入力として受信する本発明によるアーキテクチャを採用することによって、Ｒａｄｉｏ＿ｉｎｉｔモジュールを書き換える必要なしにＰＬＬ＿ｉｎｉｔ及びＰＬＬ＿ｌｏａｄの異なるセットが所与のＲａｄｉｏ＿ｉｎｉｔファンクションに関連し得る。これにより、異なる種類の無線器を使用するモバイル電話のための無線ドライバソフトウエアの開発の間の期間とコストが節減される。
【００３４】
以上の図及び記載は本発明を限定するものではない。多数の代案が従属請求項の発明の範囲内にあることは明らかであろう。
【００３５】
請求項における何れの参照記号も請求の範囲を限定するものではない。
【図面の簡単な説明】
【図１】ソフトウエアアーキテクチャにおける二つの双方向通信型モジュールの概略図を示している。
【図２】五つの双方向通信型モジュールを含む従来のソフトウエアアーキテクチャの概略図を示している。
【図３】五つの双方向通信型モジュールを含む、本発明によるソフトウエアアーキテクチャの概略図を示している。
【図４】図２の従来のソフトウエアアーキテクチャにおけるモジュール置換を示している。
【図５】本発明による図３のソフトウエアアーキテクチャにおけるモジュール置換を示している。
【図６】図２の従来のソフトウエアアーキテクチャにおけるモジュール除去を示している。
【図７】本発明による図３のソフトウエアアーキテクチャにおけるモジュール除去を示している。
【図８】本発明によるソフトウエアアーキテクチャを実現するモバイル電話における無線ドライバを表している。
【国際公開パンフレット】
2004523845.tif 000003
2004523845.tif 000004
2004523845.tif 000005
2004523845.tif 000006
2004523845.tif 000007
2004523845.tif 000008
2004523845.tif 000009
2004523845.tif 000010
2004523845.tif 000011
2004523845.tif 000012
2004523845.tif 000013
2004523845.tif 000014
2004523845.tif 000015
2004523845.tif 000016
【国際調査報告】
2004523845.tif 000017
2004523845.tif 000018