(57)【要約】  構成可能なソフトウェアライブラリを提供する方法を開示する。ベースソフトウェアライブラリの少なくとも１つの構成可能セッティングの目標セッティングを指定するユーザ入力が受信される。このベースソフトウェアライブラリは、構成可能なように設計されている。ベースソフトウェアライブラリに追加されるかまたはこれから除去される少なくとも１つのコードセグメントを、目標セッティングに基づいて特定する。コンピュータプログラムを利用して自動的に、ベースソフトウェアライブラリを目標セッティングにしたがって変更することによって、修正されたソフトウェアライブラリを作成する。前述の方法を実行するシステムもまた開示する。ベースソフトウェアライブラリと修正済みソフトウェアライブラリは、人間読み取り可能またはコンピュータ読み取り可能な（バイナリ）形式で与えられている。これら開示されるシステムと方法を利用して、例えば、プログラミングコードの中に組み込まれるかまたはこれによって参照されるソフトウェアライブラリを簡潔化する。【選択図】図１
2008522249.tif 000002
【特許請求の範囲】
【請求項１】
構成可能なソフトウェアライブラリを提供する方法であって、
コメントのための所望の目標言語と共にベースソフトウェアライブラリの少なくとも１つの構成可能なセッティングの目標セッティングを指定するユーザ入力を受信することであって、前記ベースソフトウェアライブラリが、構成可能であるように設計されており、また、人間読み取り可能プログラミングコードを含むことと、
前記ベースソフトウェアライブラリに追加されるかまたはこれから除去される少なくとも１つのコードセグメントを、前記目標セッティングと前記コメント用の所望の目標言語とに基づいて特定することと、
コンピュータプログラムを利用して自動的に前記目標セッティングにしたがって前記ベースソフトウェアライブラリを変更することによって修正済みソフトウェアライブラリを作成することであって、前記修正済みソフトウェアライブラリが、人間読み取り可能プログラミングコードおよびコメントを有する、および／または前記修正済みソフトウェアライブラリ中のプログラミングコードが所望の目標言語により表されていることと、
を含む方法。
【請求項２】
前記ベースソフトウェアライブラリの構成可能なセッティングを決定することをさらに含む、請求項１に記載の方法。
【請求項３】
前記ベースソフトウェアライブラリが第１のソフトウェアライブラリから導出される、請求項１に記載の方法。
【請求項４】
前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、埋め込み式デバイス用のプログラミングコードを含む、請求項１に記載の方法。
【請求項５】
前記目標セッティングが、前記ベースソフトウェアライブラリから少なくとも１つのコードセグメントを除去して、前記修正済みソフトウェアライブラリを作成するように構成される、請求項１に記載の方法。
【請求項６】
前記目標セッティングが、前記ベースソフトウェアライブラリに対して少なくとも１つのコードセグメントを追加して、前記修正済みソフトウェアライブラリを作成するように構成される、請求項１に記載の方法。
【請求項７】
前記追加されたコードセグメントが、外部ソフトウェアライブラリに対するコールを含む、請求項６に記載の方法。
【請求項８】
前記追加されたコードセグメントが、前記修正済みソフトウェアライブラリ中で用いられる定数を定義する、請求項６に記載の方法。
【請求項９】
構成可能ソフトウェアライブラリを提供する方法を実施するように構成されたコンピュータシステムであって、
プロセッサと、
前記プロセッサと電子的通信状態にあるメモリーと、
前記メモリーに記憶される命令と、
を備え、前記命令を実行すると、
コメントのための所望の目標言語と共にベースソフトウェアライブラリの少なくとも１つの構成可能なセッティングの目標セッティングを指定するユーザ入力を受信することであって、前記ベースソフトウェアライブラリが、構成可能であるように設計されていることと、
前記ベースソフトウェアライブラリに追加されるかまたはこれから除去される少なくとも１つのコードセグメントを、前記目標セッティングと前記コメント用の所望の目標言語とに基づいて特定することと、
コンピュータプログラムを利用して自動的に前記目標セッティングにしたがって前記ベースソフトウェアライブラリを変更することによって修正済みソフトウェアライブラリを作成することであって、前記修正済みソフトウェアライブラリ中のコメントおよび／またはプログラミングコードが前記所望の目標言語で与えられていることと、
を含む方法を実施することが可能である、コンピュータシステム。
【請求項１０】
前記ベースソフトウェアライブラリが第１のソフトウェアライブラリから導出される、請求項９に記載のシステム。
【請求項１１】
前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、埋め込み式デバイス用のプログラミングコードを含む、請求項９に記載のシステム。
【請求項１２】
前記目標セッティングが、前記ベースソフトウェアライブラリから少なくとも１つのコードセグメントを除去して、前記修正済みソフトウェアライブラリを作成するように構成される、請求項９に記載のシステム。
【請求項１３】
前記目標セッティングが、前記ベースソフトウェアライブラリに対して少なくとも１つのコードセグメントを追加して、前記修正済みソフトウェアライブラリを作成するように構成される、請求項９に記載のシステム。
【請求項１４】
前記追加されたコードセグメントが、外部ソフトウェアライブラリに対するコールを含む、請求項１３に記載のシステム。
【請求項１５】
前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、人間読み取り可能なプログラミングコードを含む、請求項９に記載のシステム。
【請求項１６】
構成可能なソフトウェアライブラリを提供する方法を実施する実行可能命令を含むコンピュータ読み取り可能な媒体であって、前記方法が、
コメントのための所望の目標言語と共にベースソフトウェアライブラリの少なくとも１つの構成可能なセッティングの目標セッティングを指定するユーザ入力を受信することであって、前記ベースソフトウェアライブラリが、構成可能であるように設計されていることと、
前記ベースソフトウェアライブラリに追加されるかまたはこれから除去される少なくとも１つのコードセグメントを、前記目標セッティングと前記コメント用の所望の目標言語とに基づいて特定することと、
コンピュータプログラムを利用して自動的に前記目標セッティングにしたがって前記ベースソフトウェアライブラリを変更することによって修正済みソフトウェアライブラリを作成することであって、前記修正済みソフトウェアライブラリ中のコメントおよび／またはプログラミングコードが前記所望の目標言語で与えられていることと、
を含む、コンピュータ読み取り可能な媒体。
【請求項１７】
前記ベースソフトウェアライブラリが第１のソフトウェアライブラリから導出される、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１８】
前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、埋め込み式デバイス用のプログラミングコードを含む、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１９】
前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、人間読み取り可能なプログラミングコードを含む、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記目標セッティングが、前記ベースソフトウェアライブラリに対して少なくとも１つのコードセグメントを追加して、前記修正済みソフトウェアライブラリを作成するように構成される、請求項１６に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはコンピュータとコンピュータ関連技術とに関連する。より詳しくは、本発明は、ユーザ構成可能なソフトウェアライブラリに関する。
【背景技術】
【０００２】
コンピュータと通信の技術は急速に進歩し続けている。実際、コンピュータと通信の技術は個人の日常の多くの側面で関わっている。例えば、今日消費者が用いているデバイスの多くが、その中に小型のコンピュータを有している。このような小型コンピュータは、サイズがさまざまであり、精巧さの程度もまちまちである。このような小型コンピュータとしては、１つのマイクロコンピュータから全機能式の完全なコンピュータシステムまであらゆるものが含まれている。例えば、このような小型コンピュータは、マイクロコントローラなどの１チップコンピュータ、コントローラなどの１ボードタイプのコンピュータ、ＩＢＭ−ＰＣ互換機などの一般的なデスクトップコンピュータなどがある。
【０００３】
コンピュータは、一般的に、その心臓部に１つ以上のプロセッサを有している。この（これらの）プロセッサは、さまざまな外部の入出力部に相互接続されて、特定のコンピュータやデバイスを管理するように機能している。例えば、サーモスタット中のプロセッサは、温度設定値を選択するためのボタンに接続されたり、暖炉や空調装置に接続されて温度を変更したり、温度センサーに接続されて、現時点での温度を読み取ってディスプレイ上に表示したりする。
【０００４】
多くの電化製品やデバイスなどに、１つ以上の小型コンピュータが含まれている。例えば、サーモスタット、暖炉、空調システム、冷蔵庫、電話、タイプライタ、自動車、自動販売機および多くのさまざまなタイプの産業装置では、今日その内部に小型コンピュータ、すなわちプロセッサを含んでいるのが一般的である。コンピュータソフトウェアが、このようなコンピュータのプロセッサを実行して、あるタスクをどのように実行するかをプロセッサに指示している。例えば、コンピュータソフトウェアがサーモスタット上で実行されることによって、空調装置が、ある特定の温度に達したときに動作を停止させ、必要なときにヒータをオンしたりさせる。
【０００５】
非常に重要なコンピュータ技術の１つの態様は、ソフトウェアライブラリである。ソフトウェアライブラリは、本質的には、実行時間にコンピュータプログラムにプログラマが組み込むことが可能な事前パッケージングされた（ライブラリのダイナミックリンク）またはこのプログラムを機械読み取り可能なコードにコンパイルする際の（ライブラリのスタティックリンク）プログラミングコードである。ソフトウェアライブラリに価値があるのは、これによって、ユーザは迅速にソフトウェアプログラムを作成することが可能となるからである。プログラマは、特定のプログラムで用いられるアルゴリズムのすべてを１つずつ作成する必要はない。
【０００６】
不運なことに、現在のソフトウェアライブラリには多くの問題がある。例えば、ソフトウェアライブラリは、プログラマが、ライブラリ中のアルゴリズムが当面のタスクをどのように実施しているか理解できないように、しばしば「ブラックボックス」形式で配布されている。この結果、プログラマは、ライブラリ中のアルゴリズムの限界や能力を完全には理解し得ない。
【０００７】
さらにその上、一般的にライブラリは修正不可能である。この結果、プログラマは、関数を、これらがライブラリ中にあるがままに利用せざるを得ない。プログラマは、ライブラリを特定の状況に適合するようにカスタマイズすることは不可能である。このため、ある状況下では深刻な問題と制限が生じかねない。例えば、しばしばメモリーと処理の能力にかなり大きい制限がある埋め込み式デバイス用にプログラミングをする際に、プログラマが、あるプログラムによって利用される特定の関数のサイズに気を使うのは無理もないことである。ライブラリから得られるかなりのサイズを持つ関数は、埋め込み式デバイスでは利用することはまったく不可能であるが、当面しなければならないプログラミングタスクにとってはまったく不必要なコードセグメントを多く含んでいる。しかしながら、プログラマはライブラリ中のプログラミングコードを変更、採用、さらに見ることさえ不可能であるため、これらのアルゴリズムは多くのプログラミングタスク用には使用不可能である。
【０００８】
加えて、ソフトウェアライブラリが配布されており、また、エディット可能である場合、新しいバージョンのライブラリを配布する際に深刻な問題が生じかねない。例えば、バージョン１のソフトウェアライブラリがユーザのよってエディットされると、バージョン１に対する変更や適応をこのソフトウェアライブラリのバージョン２に組み込むことはほとんど不可能または少なくとも非常に時間がかかる。
【０００９】
したがって、ユーザによる構成を持つソフトウェアライブラリのための改良されたシステムと方法によって恩典が実現される。構成可能なソフトウェアライブラリ用のシステムと方法の例をいくつか個々に説明する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
構成可能なソフトウェアライブラリを提供する方法を開示する。コメント用の所望の目標言語と共にベースソフトウェアライブラリの少なくとも１つの構成可能なセッティングに対して目標セッティングを指定するユーザ入力が受信される。このベースソフトウェアライブラリは、構成可能なように設計されており、また、人間が読み取ることが可能なプログラミングコードを含んでいる。目標セッティングとコメント用の所望の目標言語とに基づいてベースソフトウェアライブラリに追加したりこれから除去されたりする少なくとも１つのコードセグメントが特定される。コンピュータプログラムを利用して自動的に目標セッティングにしたがってベースソフトウェアライブラリを変更することによって、修正されたソフトウェアライブラリが作成される。この修正されたソフトウェアライブラリ中のコメントは、この所望の目標言語で作成されている。修正されたソフトウェアライブラリは、人間が読み取り可能なプログラミングコードを含んでいる。
【課題を解決するための手段】
【００１１】
本方法は、ベースソフトウェアライブラリの構成可能なセッティングを決定することをさらに含んでいる。また、ベースソフトウェアライブラリは、第１のソフトウェアライブラリから導出される。１つの実施形態では、ベースソフトウェアライブラリと修正されたソフトウェアライブラリは、埋め込み式デバイス用のプログラミングコードを含んでいる。目標セッティングは、ベースソフトウェアライブラリから少なくとも１つのコードセグメントを除去して、修正されたソフトウェアライブラリを作成するように構成してもよい。
【００１２】
目標セッティングは、ベースソフトウェアライブラリに対して少なくとも１つのコードセグメントを追加して、修正されたソフトウェアライブラリを作成するように構成してもよい。この追加されたコードセグメントは、例えば、修正されたソフトウェアライブラリ中で用いられる定数を定義する外部のソフトウェアライブラリまたはコードセグメントに対するコールを含むことがある。
【００１３】
前述の方法を実行するコンピュータシステムもまた、開示される。本システムは、プロセッサと、このプロセッサと電子的通信状態にあるメモリーと、前述の方法を実行するためのメモリーに記憶されている命令と、を含んでいる。前述の方法を実行する命令を含んでいるコンピュータ読み取り可能な媒体も開示する。
【００１４】
本発明の典型的な実施形態は、添付図面と一緒にして以下の説明と添付の特許請求の範囲を読めばより完全に明らかになるであろう。これらの図面は単に典型的な実施形態を示しているだけであり、したがって、本発明の範囲を制限するものと考えるべきではないことを理解したうえで、以下の添付図面を用いてさらに具体的にそして詳細に本発明の典型的な実施形態が説明される。
【発明を実施するための最良の形態】
【００１５】
本発明のさまざまな実施形態を、図面を参照して以下に説明するが、図中類似の参照番号は同一のまたは機能的に類似の部品を示している。本書の図面に概説し図示される本発明の実施形態は、互いに異なったさまざまな構成に配置したり設計したりすることが可能である。したがって、図に提示されている本発明のいくつかの典型的な実施形態に関する以下のより詳細な説明は、申し立てとおり本発明の範囲を制限することを意図するものではなく、本発明の実施形態を単に代表して示しているだけである。
【００１６】
「典型的な」という用語は、本書で用いる限り専一に、「例や、事例や、例証として機能する」ことを意味するものとする。本書で「典型的な」と説明するいかなる実施形態も、他の実施形態より好ましいとか利点があると必ずしも解釈すべきではない。実施形態のさまざまな態様を図中に提示するが、図は、特に記載がない限り必ずしも同じ尺度で作図されているわけではない。
【００１７】
本書に開示する実施形態の多くの特徴は、コンピュータソフトウェア、電子的ハードウエアまたは双方の組み合わせとして実現される。ハードウエアとソフトウェアのこの交換可能性を明瞭に解説するため、さまざまな構成要素を一般的にその機能性という観点から説明する。このような機能性がハードウエアとして実現されるかソフトウェアとして実現されるかは、全体的なシステムに課せられる特定の応用と設計上の制約によって決まる。当業者は、記載されている機能性を特定の応用分野ごとにさまざまな仕方で実現するが、このような実現例は、本発明の範囲からの逸脱をもたらすものと解釈すべきではない。
【００１８】
ここに記載する機能性をコンピュータソフトウェアとして実施すると、このようなソフトウェアは、メモリーデバイス内に置かれるおよび／またはシステムバスやネットワーク上で電子信号として送信される何らかのタイプのコンピュータ命令またはコンピュータ実行可能コードを含んでいる。本書に記載するコンポーネントと関連する機能性を実施するソフトウェアは、１つの命令または多くの命令を含み、また、互いに異なったいくつかのコードセグメント上や、さまざまなプログラム中や、いくつかのメモリーデバイス上に分散されてもよい。
【００１９】
本書で用いられる際、「コンピュータデバイス」という用語は、一般的に算術演算や論理演算を実行するプロセッサを有する何らかのタイプの電子デバイスのことである。このコンピュータデバイスには、メモリー（例えばＲＡＭ（ランダムアクセスメモリー）、フラッシュメモリーおよび／またはハードディスク記憶デバイス）が含まれる。コンピュータデバイスは、メモリーに記憶されている命令を処理する。コンピュータデバイスは、オプションとして、他のデバイスとの通信のための通信インタフェース（例えばネットワークカードやモデム）、ユーザ入力を受信する入力部（例えばキーボード、タッチパッドもしくはマウス）や情報をユーザに提供する出力部（例えばオーディオ出力部もしくは表示画面）などの他のコンポーネントを含むことがある。加えて、コンピュータデバイスは、デスクトップ型コンピュータ、サーバ、タブレット型ＰＣ、ノート型コンピュータ、携帯情報端末（ＰＤＡ）、セルラー電話もしくは埋め込み式デバイスなどのさまざまなタイプのデバイスとして実現されることに注意すべきである。
【００２０】
図１は、ユーザ構成可能ソフトウェアライブラリを提供するシステム１００の実施形態を示すブロック図である。この図示する実施形態では、このユーザ構成可能なソフトウェアライブラリは、「ベースソフトウェアライブラリ」１０４として示されている。このベースソフトウェアライブラリ１０４はさまざまな仕方で実現される。例えば、ベースソフトウェアライブラリ１０４は、ソースコードすなわち人間が読み取り可能なコードを含んでいる。また、ベースソフトウェアライブラリ１０４は、バイナリコード、すなわち機械読み取り可能なコードを含むこともある。
【００２１】
ベースソフトウェアライブラリ１０４は、構成可能に設計されており、また、ベースソフトウェアライブラリ１０４の態様をエディットするためのセッティングやプログラミング制御装置を含むかまたはこれらにリンクされている。ベースソフトウェアライブラリ１０４は、ユーザによって変更されて、新たなまたは修正されたソフトウェアライブラリ１０８となる。一実施形態では、ベースソフトウェアライブラリ１０４は読み取り専用形式で配布され、これにより、その内容が閲覧されるがエディットはされないようになっている。このような実施形態では、ライブラリのユーザは、ベースソフトウェアライブラリ１０４を、新しい修正されたソフトウェアライブラリ１０８を作成するだけで修正する。
【００２２】
ここに開示するシステム１００は、ユーザ入力を受信し、また、ベースソフトウェアライブラリ１０４の構成用の目標セッティング１１４を生成するユーザ入力コンポーネント１１２をさらに含んでいる。目標セッティング１１４は、ベースソフトウェアライブラリ１０４を利用して、修正済みソフトウェアライブラリ１０８の作成を制御する。ユーザ入力は、ユーザ入力コンポーネント１１２によって多くの仕方で受信される。例えば、ユーザ入力は、ベースソフトウェアライブラリ１０４の構成可能なセッティングを制御するように定式化されたファイルを含むことがある。また、目標セッティング１１４は、ユーザが表示画面や他のユーザインタフェースデバイスと対話するとそれに応答して生成されるようにしてもよい。ユーザ入力コンポーネント１１２によって生成された目標セッティング１１４は、構成可能セッティングコンポーネント１１６で受信される。
【００２３】
システム１００はまた、構成可能セッティングコンポーネント１１６を含んでいる。この構成可能セッティングコンポーネント１１６は、ベースソフトウェアライブラリ１０４のどのような態様が構成可能であるかを決定する（すなわち識別する）。ベースソフトウェアライブラリ１０４のこの構成可能な態様の決定は、多くのさまざまな仕方で実行される。例えば、このような構成の情報を含むデータのファイル、すなわち、コンパイル物をアクセスしたりする。このデータコンパイル物は、ベースソフトウェアライブラリ１０４の外部にあっても内部にあってもよい。別の例として、ベースソフトウェアライブラリ１０４を分析して、適切なメタデータ、キーワードまたはスイッチを特定して、ベースソフトウェアライブラリ１０４のどの態様が構成可能であるか識別する。上記の構成可能セッティングコンポーネント１１６はまた、変更されるべきベースソフトウェアライブラリ１０４のプログラミングコードの特定のコードセグメントやコードエリアのロケーションを、例えば、ライン番号やバイトオフセットによって判定する。
【００２４】
構成可能セッティングコンポーネント１１６は、一実施形態では、ユーザ入力コンポーネント１１２と通信して、どのセッティングが構成可能であるかを、例えば、表示画面を介してユーザに対して示す。ユーザ入力１１２と構成可能セッティングコンポーネント１１６は、ベースソフトウェアライブラリ１０４と統合されるか、または、互いに他者１１２、１１６に対して、また、ベースソフトウェアライブラリ１０４に対して個別のプログラムであってよい。
【００２５】
ベースソフトウェアライブラリ１０４の多くのさまざまな態様が、ユーザによって構成可能であってよい。例として、ベースソフトウェアライブラリ１０４は、２つの電子デバイス同士間での通信を可能とする機能のライブラリを含むことがある。この場合、構成可能セッティングが、作成されるソフトウェアに対する許容可能通信ソケットの数を制御したりする。
【００２６】
目標セッティング１１４が受信されるとこれに応答して、構成可能セッティングコンポーネント１１６は修正データ１１８を生成する。修正データ１１８は、ベースソフトウェアライブラリ１０４に追加されるかまたはこれから除去されるコードセグメント（例えばプログラミングコードまたはこのコード中のコメント）を特定する。修正データ１１８はさまざまな仕方で実現される。修正データ１１８は、除去されるコードセグメントを、例えば、削除されるライン番号の範囲を識別することによって特定するようにしてもよい。また、修正データ１１８を、ベースソフトウェアライブラリ１０４内の特定のバイトオフセットで挿入される特定のコードセグメントを特定するようにしてもよい。加えて、修正データ１１８は、ベースソフトウェアライブラリ１０４内の除去される特定のメタデータ、タグまたはスイッチと関連するコードセグメントを特定するようにしてもよい。修正データ１１８はまた、修正済みソフトウェアライブラリ１０８に含まれるコードセグメントを（テキスト形態またはバイナリ形態で）含むことがある。追加されるコードセグメントは、構成可能セッティングコンポーネント１１６によって生成されたり、ユーザ入力コンポーネント１１２によって直接にユーザから受信されたりする。
【００２７】
生成コンポーネント１２０は、ベースソフトウェアライブラリ１０４を利用して、修正データ１１８にしたがって修正済みソフトウェアライブラリ１０８を生成する。修正済みソフトウェアライブラリ１０８は、この修正済みソフトウェアライブラリ１０８が作成された対象であるプロジェクトに合うように特定的に調整されたベースソフトウェアライブラリ１０４の修正バージョンである。修正済みソフトウェアライブラリ１０８は、人間または機械が読み取り可能なプログラミングコードである。
【００２８】
修正済みソフトウェアライブラリ１０８が作成されたら、この修正済みソフトウェアライブラリ１０８を参照するプログラミングコード１２６を、コンパイルコンポーネント１３０を用いてコンパイルして、機械読み取り可能コード１３４を生成する。修正済みソフトウェアライブラリ１０８は、機械読み取り可能コードに対してダイナミックにまたはスタティックにリンクされる。
【００２９】
ここに開示するシステム１００は、従来のシステムに勝るかなりの長所を提供するものである。第一に、ユーザは、ベースソフトウェアライブラリ１０４をコンパイルコードで利用することを強制されることはない。ユーザは、当面のプログラミングタスクの特定の必要性に適合するようにライブラリ１０４を調整することが可能である。例えば、プログラマは、ベースソフトウェアライブラリ１０４から不必要なコードを除去して、作成される機械読み取り可能コード１３４を簡素化することが可能である。ユーザは、機械読み取り可能コード１３４ではまったく使用されない多くのアルゴリズムや関数を含む必要はない。このことは、機械読み取り可能コード１３４を、一般的にメモリー容量と処理能力が限られている埋め込み式デバイスで利用されるような場合には特に重要である。
【００３０】
第二に、ベースソフトウェアライブラリ１０４のインテグリティが保たれることである。一実施形態では、ベースソフトウェアライブラリは読み取り専用形式で配布され、これにより、プログラマがこれを閲覧は可能であるが修正は不可能であるようになっている。さらにその上、ベースソフトウェアライブラリ１０４の作成者は、一実施形態では、ベースソフトウェアライブラリ１０４のどのような態様がエンドユーザによって修正されて、修正済みソフトウェアライブラリ１０８を作成するかを制御することが可能である。また、一実施形態では、ユーザは、ベースソフトウェアライブラリ１０４のコードを閲覧して、その中で利用されている手順を正確に理解することが許容される。ベースソフトウェアライブラリ１０４内のプログラミングコードを閲覧するこの機能によって、ライブラリのユーザは、実行されているアルゴリズムと、このアルゴリズムが当面のプログラミングタスクにとってよく適しているかどうかとをよりよく理解することが可能となる。
【００３１】
第三に、ベースソフトウェアライブラリ１０４の修正を、単にユーザ構成可能セッティングを選択するだけで促進することが可能である。簡単なユーザ構成可能セッティングを少し変更するだけで、ベースソフトウェアライブラリに対して大幅でかなりの変更を、迅速に加えることが可能である。したがって、ベースソフトウェアライブラリ１０４のコードを改良したり別様に修正したりした際に、ベースソフトウェアライブラリ１０４に対する微調整や変更を容易に複製することが可能である。
【００３２】
図２は、ユーザ構成可能なソフトウェアライブラリ２０４を提供するシステム２００の代替実施形態を示すブロック図である。このシステム２００は、図１に示すシステム１００と同じように機能する。特に、目標セッティング２１４はユーザ入力コンポーネント２１２から構成可能セッティングコンポーネント２１６に送信される。これに応答して、修正データ２１８が構成可能セッティングコンポーネント２１６から作成コンポーネント２２０に送信されて、修正済みソフトウェアライブラリ２０８の作成を制御する。
【００３３】
しかしながら、図２に示す実施形態では、第１のソフトウェアライブラリ２２２はベースソフトウェアラブラリ２０４に変換される２２４。この場合、ベースソフトウェアライブラリ２０４は、例えば、予備変換プロセス２２４中に第１のソフトウェアライブラリ２２２から作成された１つ以上のダイナミックリンクライブラリ（ＤＬＬ）である。上記したように、ベースソフトウェアライブラリ２０４は、人間または機械が読み取り可能なコードを含んでいる。一実施形態では、ベースソフトウェアライブラリ２０４は、変換プロセス２２４で作成されると、ベースソフトウェアライブラリ２０４のプログラミングコードがライブラリのユーザに対して暴露されたり、すぐに目に触れたりすることがないように、ライブラリのユーザに配布される。また、変換プロセス２２４で作成されたベースソフトウェアライブラリ２０４を、ユーザに対してより優しく、また、ライブラリのユーザにとってより容易にアクセス可能なソフトウェアライブラリとなるように定式化するようにしてもよい。
【００３４】
先行の実施形態の場合と同じように、ベースソフトウェアライブラリ２０４を作成コンポーネント２２０と修正データ２１８とで利用して、修正済みソフトウェアライブラリ２０８を作成する。さらに、コンパイルコンポーネント２３０を同じように利用して、修正済みソフトウェアライブラリ２０８とこのライブラリを参照しているソースコード２２６とを利用して機械読み取り可能コード２３４をコンパイルしてもよい。ベースソフトウェアライブラリ２０４はバイナリ形式で配布されるとはいえ、コードの可視性は、依然として、修正済みソフトウェアライブラリ２０８中に存在する。これによって、修正済みソフトウェアライブラリ２０８中に存在するようなライブラリのソースをインスペクトすることが可能であるという恩典を失うことなく、アクセスが容易であることとユーザに優しいという恩典が与えられる。
【００３５】
図３〜６に、構成可能ソフトウェアライブラリ３０４、４０４、５０４および６０４を提供するシステム３００、４００、５００および６００の代替実施形態を開示する。これらの代替実施形態は、構成可能ソフトウェアライブラリ３０４、４０４、５０４および６０４に対して実行され得る修正または変換のタイプの例を示している。本書に開示する例は、制限的なものではなく、本書に開示するシステムと方法を利用して実行され得る修正のタイプを単に示すものである。
【００３６】
これらの各システム３００、４００、５００および６００の中では、図１と図２に示すように、ユーザ入力コンポーネント３１２、４１２、５１２および６１２は、目標セッティング３１４、４１４、５１４および６１４を発生するが、これらのセッティングは、構成可能セッティングコンポーネント３１６、４１６、５１６および６１６によって受信される。すると、構成可能セッティングコンポーネント３１６、４１６、５１６および６１６は、修正データ３１８、４１８、５１８および６１８を発生するが、これら修正データは生成コンポーネント３２０、４２０、５２０および６２０によって受信される。そして、生成コンポーネント３２０、４２０、５２０および６２０は、修正データ３１８、４１８、５１８および６１８とベースソフトウェアライブラリ３０４、４０４、５０４および６０４とに基づいて修正済みソフトウェアライブラリ３０８、４０８、５０８および６０８を生成する。図２に示すように、ベースソフトウェアライブラリ３０４、４０４、５０４および６０４は、第１のソフトウェアライブラリ２２２から導出してもよい。簡略化のため、修正済みソフトウェアライブラリ２０８を参照しているプログラミングコード２２６、コンパイルコンポーネント２３０および結果として得られる機械読み取り可能コード２３４は、図３〜６では省略されている。
【００３７】
特に図３を参照すると、特定のコードセグメント３４０ｂ〜３４０ｄが除去された修正済みのソフトウェアライブラリ３０８をベースソフトウェアライブラリ３０４から生成するシステム３００が開示されている。図３に示す実施形態では、ベースソフトウェアライブラリは、４つの典型的なコードセグメント３４０ａ〜３４０ｄ、すなわち、送信アルゴリズムＡ３４０ａ、送信アルゴリズムＢ３４０ｂ、送信アルゴリズムＣ３４０ｃおよびセキュリティアルゴリズム３４０ｄを含んでいる。ここに図示する実施形態の構成可能セッティングには、これらの各コードセグメントを含んだり除去したりする能力が含まれている。
【００３８】
図示するシステム３００では、目標セッティング３１４は、送信アルゴリズムＡ３４０ａを修正済みソフトウェアライブラリ３０８に含むべきであるが、送信アルゴリズムＢ３４０ｂ、送信アルゴリズムＣ３４０ｃおよびセキュリティアルゴリズム３４０ｄは修正済みライブラリ３０８から除去すべきであると指定している。
【００３９】
結果としての修正データ３１８は、ベースソフトウェアライブラリ３０４に含まれるかまたはこれから除去されるコードの具体的なラインを特定する。代替実施形態では、除去されるコードのラインだけを修正データ３１８の中から特定する。
【００４０】
ベースソフトウェアライブラリ３０４から特定のコードセグメントを除去するシステム３００は、ここに開示する実施形態以外にもさまざまな仕方で実現される。図３に示す実施形態は、ここに開示するシステムと方法のこの利用法を達成する方法の単に一例である。例えば、修正データ３１８は、特定のコードセグメントを識別するさまざまな仕方で実現される。コードセグメント３４０は、単なる例として、バイトオフセットによって、または、コードセグメントを特定するメタデータ、スイッチ、タグまたはキーワードによって特定される。さらに、送信アルゴリズムＡ３４０ａは、他のコードセグメント３４０ｂ〜３４０ｄに対するリファレンスを含み得ることを理解すべきである。他のコードセグメントを除去するプロセスでも、このようなリファレンスを送信アルゴリズムＡ３４０ａから除去したり他の修正をこれに対して施したりする。
【００４１】
図４に示すシステム４００は、具体的には、ベースソフトウェアライブラリ４０４のローカライズ動作を示している。ベースソフトウェアライブラリ４０４は、さまざまな言語によるプログラミングコメント４４０ａ〜４４０ｃを含んでいる。特に、英語のコメント４４０ａ、日本語のコメント４４０ｂおよび中国語のコメント４４０ｃを含んでいる。ベースソフトウェアライブラリ４０４は、コメント４４０ａ〜４４０ｃと関連するプログラミングコード４４０ｄをさらに含んでいる。
【００４２】
図示するように、目標セッティング４１４は、英語のコメント４４０ａとプログラミングコード４４０ｄを修正済みソフトウェアライブラリ４０８に含むべきであると指定している。目標セッティング４１４は、日本語コメント４４０ｂと中国語コメント４４０ｃを修正済みソフトウェアライブラリから除外すべきであるとさらに指定している。
【００４３】
修正データ４１８は、ベースソフトウェアライブラリ４０４内にある、特定のコードセグメント４４０を特定しているメタタグを参照する。記述したように、（含まれるまたは除外される）コードセグメント４４０は、例えば、メタタグ、ライン番号またはバイトオフセットを利用して特定される。
【００４４】
ここに開示するシステム４００は、ユーザにとって、修正済みソフトウェアライブラリ４０８によって定義されている関数を理解することを単に邪魔したり困難にしたりする特定言語によるコメントを除去する効率的な方法を提供する。もちろん、ソフトウェアコメント４４０ａ〜４４０ｃは、機械読み取り可能コードには組み込まれていないため、ベースソフトウェアライブラリ４０４と修正済みソフトウェアライブラリ４０８は、図示する実施形態では人間読み取り可能形式で与えられる。
【００４５】
図４に開示するシステムは、ここに開示するシステムと方法を利用してベースソフトウェアライブラリ４０４をローカライズする方法の内の１つを単に解説するものである。１例として、ベースソフトウェアライブラリ４０４は、多くのさまざまなタイプの言語を含んでおり、また、これらの言語の内の１つ以上の言語によるコメントが、修正済みソフトウェアライブラリ４０８に含まれている。加えて、提供された言語によるコメント、例えば、英語のコメント４４０ａは、カリフォルニア州マウンテインビューのＧｏｏｇｌｅが提供している翻訳サービスなどのアクセス可能な翻訳サービスを用いて新しい言語に翻訳して、修正済みソフトウェアライブラリに組み込むことが可能である。さらに、プログラミングコード４４０ｄは、翻訳して、ベースソフトウェアライブラリ４０４内に含まれる新たな言語を追加したり、複数の言語オプションをその内部に有したりすることが潜在的には可能である。もちろん、この翻訳は、コメントだけに限られるものではなく、潜在的には、ライブラリの一部であるプログラミング言語の識別子や文字列を翻訳して、ソフトウェアライブラリの完全で自動的なローカル化を効果的に可能とすることができる。
【００４６】
図５に示すシステム５００では、構成可能セッティングコンポーネント５１６は、定数５０２（低数値の「変数」）を定義している目標セッティング５１４を受信して、修正データ５１８を発生する。この場合、定義されている定数は「パイ」と「ｅ」である。
【００４７】
定数５０２は、ベースソフトウェアライブラリ５０４内にある指定されたファイルの認識された開始箇所からの特定のバイトオフセット５０６ａ〜５０６ｂの箇所に挿入されることになる。したがって、ベースソフトウェアライブラリ５０４は、バイナリ形態であったりする。ベースソフトウェアライブラリがバイナリ形態である場合、挿入された定数５０２は、修正済みソフトウェアライブラリ５０８に挿入される以前に、構成可能セッティングコンポーネント５１６によってバイナリ形態に変換される。バイトオフセット５０６は、ユーザ入力または構成可能セッティングコンポーネント５１６によって決定することが可能である。
【００４８】
したがって、修正済みソフトウェアライブラリは、ベースソフトウェアライブラリ５０４中で発見されたプログラミングコード５４０ａを含んでおり、また、ユーザ入力５１２に基づいて生成された定数定義５４０ｂを含んでいる。
【００４９】
繰り返しになるが、図５に示す実施形態は、ここに開示するシステムと方法を利用して修正済みソフトウェアライブラリ５０８に挿入されるコマンドを単に示すものである。例えば、互いに異なった多くのタイプの定数が定義可能であり、ローカル変数もしくはグローバル変数または他のプログラミング用のコマンドもしくは関数を生成するための構成用コードを、修正済みソフトウェアライブラリ５０８に挿入することが可能である。
【００５０】
図６に、ベースソフトウェアライブラリ６０４中のプログラミングコード６４０ａの一部ではなかった新しいコードを修正済みソフトウェアライブラリ６０８に追加して、もともとはそこに存在しなかったライブラリに対して新しいコードを効果的に追加する場合を示す。例えば、プロデューサは、自分がベースソフトウェアライブラリ６０４を書いた時点では、他のライブラリがエンドユーザのデベロッパにとって利用可能であることを知らなかったことになる。しかしながらエンドユーザのデベロッパは、ベースソフトウェアライブラリ６０４を得ると、エンドユーザのシステムまたは目標のところで利用可能な特定のライブラリ６５０ａ〜６５０ｂに気が付くことになる。すると、本システムと方法によれば、エンドユーザのデベロッパは、特定のライブラリ６５０ａ〜６５０ｂと対話するベースソフトウェアライブラリ６０４に対して新たなコードを追加することが可能となる。例えば、このデベロッパは、この特定のライブラリ６５０ａ〜６５０ｂを初期化する新しいコードを追加する。また、作成プロセスを作成コンポーネント６２０によって始動すると、他の関連するモジュールがシステム６００によって検出され得る。このような場合、システム６００は、新たなコードを作成して、このようなモジュールを初期化したり、この新たに作成されたコードを修正済みのソフトウェアライブラリ６０８に含んだりすることが可能である。
【００５１】
より具体的に言えば、図６に示すシステム６００では、構成可能セッティングコンポーネント６１６において目標セッティング６１４が受信されると、これが契機となって、外部のソフトウェアライブラリ、すなわち、ライブラリＡ６５０ａを修正済みソフトウェアライブラリ６０８から初期化するプログラミングコードが作成される。一般的には、ライブラリには、このライブラリを使用できるように初期化する特定のルーチンが含まれている。このようなルーチンは、ライブラリＡ６５０ａを発生するベースソフトウェアライブラリ６０４の一部として識別することが可能である。構成可能セッティングモジュール６１６は、ライブラリＡ６５０ａの初期化を含む要求を受信すると、ライブラリＡ６５０ａを作成するベースソフトウェアライブラリ６０４に問い合わせて、初期化用のルーチンの名称を要求することが可能である。次に、このルーチン名が修正データ６１８に含まれる。また、ライブラリＡ６５０ａに対するベースソフトウェアライブラリ６０４が、適用すべき他の修正データ６１８のリストを含むようにしてもよい。
【００５２】
この新たなコードの作成は、システム６００によって始動してもよいし、ユーザ入力に応答して始動してもよい。例えば、ユーザ入力は、特定のタイプのライブラリを初期化したり、特定のライブラリを初期化したり、指定された記憶デバイス上でもしくは特定のサブディレクトリ中で発見されたライブラリを初期化したりすべきことを指定することが可能である。
【００５３】
図示するシナリオでは、２つの外部ライブラリ、すなわち、ライブラリＡ６５０ａとライブラリＢ６５０ｂがアクセス可能である。したがって、これらの外部ライブラリ６５０はシステム６００と同じ記憶デバイス上にあったり、ネットワークや他の電子通信チャネルでアクセス可能であったりする。
【００５４】
その後、構成可能セッティングコンポーネント６１６は、外部ライブラリＡ６５０ａを初期化するプログラミングコードを作成する。このプログラミングコードは修正データ６１８中に組み込まれる。この修正データ６１８は、さらに、挿入ポイントをライン番号の形態で含んでいる。この挿入ポイントは、ユーザによって指定されていたり、構成可能セッティングコンポーネント６１６によって決定もしくは特定されていたりする。
【００５５】
ここに開示する実施形態では、構成可能セッティングコンポーネント６１６は、ベースソフトウェアライブラリ６０４中に存在していなかった、ユーザによって明確に提供されたまったく新しいコード６４０ｂをこのようにして作成する。
【００５６】
図６に示す実施形態は、新たに作成されたプログラミングコードを修正済みソフトウェアライブラリ６０８に対して提供する方法の内の１つを単に示すものである。この構成可能セッティングコンポーネント６１６は互いに異なった多くの方法で実現し、これによって、ベースソフトウェアライブラリ６０４の構成や、アクセス可能ライブラリのタイプや、他の要因に基づいてさまざまなタイプのプログラミングコードが作成される。例えば、コードセグメント６４０や他のライブラリを修正済みソフトウェアライブラリ６０８に追加すると、これが契機となって、他のコードセグメント３４０やライブラリが修正される。例えば、デバッグサポート用のライブラリが含まれると、これが契機となって、他のライブラリやコードセグメント６４０が、デバッグサポートを含むように自分自身を修正する。同じように、デバッグサポート用モジュールが取り除かれると、このデバッグサポートは、他のライブラリやコードセグメント６４０から自動的に取り除かれる。
【００５７】
上記したように、図３〜６に示すさまざまなシステムの解説は、本発明を制限するものではない。それどころか、これらの解説は、ここに開示するシステムと方法の柔軟性と能力を解説することを意図するものである。互いに異なった多くのタイプの修正や変換方法をベースプログラミングライブラリに対して施して新たなまたは修正されたプログラミングライブラリとすることは、ここに開示するシステムと方法の範囲に含まれる。互いに異なった多くのタイプの変換方法を利用し、これで、修正されたプログラミングライブラリを特定のプログラミングシナリオに合うようにカスタマイズすることが可能なようにすることは、本発明の最も重要な特徴の内の１つである。
【００５８】
図７は、構成可能ソフトウェアライブラリ６０４を提供する方法７００の一実施形態を図示するフローチャートである。ベースソフトウェアライブラリ６０４に対する構成可能セッティングを最初に決定する７０２。このセッティングは、さまざまな仕方で決定される７０２。例えば、データベースまたは他のデータコンパイル物は、ベースソフトウェアライブラリの外部にあろうと内部にあろうと、このようなセッティングを含んでおり、また、これを検索してこのような決定をする７０２。また、構成可能セッティングを、例えば、ベースソフトウェアライブラリ内のメタデータ、タグ、スイッチまたはキーワードを分析することによって決定してもよい７０２。
【００５９】
上に説明したように、ベースソフトウェアライブラリ６０４は、人間または機械が読み取り可能なプログラミングコードを含んでいる。このベースソフトウェアライブラリは、第１のソフトウェアライブラリ２２２（図２に示す）から導出されたり、例えば、ダイナミックリンクライブラリとして実現されたりする。
【００６０】
次に、ユーザ入力が受信されて７０４、ベースソフトウェアライブラリの構成可能セッティングに対する目標セッティング６１４を指定する。このユーザ入力は、多数のユーザ入力システムの内の１つ以上のシステムを利用して受信される。例えば、構成可能セッティングが画面上に表示されて、ユーザ入力がキーボード、トラックボール、タッチ感知画面またはマウスを介して受信される。更なる例として、音声認識コマンドを利用して、ユーザ入力を発生してもよい。
【００６１】
ベースソフトウェアライブラリに追加またはこれから除去されたりする少なくとも１つのコードセグメントが特定される７０６。追加されるコードセグメントは、図５と図６に関連して示したように、構成可能セッティングコンポーネントを利用して生成されたり、ユーザによって提供したりすることが可能である。コードセグメントは、図３と図４に関連して示したように削除することが可能である。もちろん、ユーザ入力は、あるコードセグメントの追加と他のコードセグメントの削除の双方を指定できる。本書で用いられる限り、「コードセグメント」という用語は、プログラミングコードに限られることはなく、ベースソフトウェアライブラリ内のコメントや他のテキスト形式素材も含むものである。
【００６２】
その後、ベースソフトウェアライブラリを目標セッティングにしたがって変更することによって修正済みのソフトウェアライブラリを作成する７０８。この修正済みソフトウェアライブラリ６０８は、コンピュータプログラムによって自動的に作成される、すなわち、ユーザ入力が受信された後は、これ以上のユーザによる介入を必要とすることなく、修正済みのソフトウェアライブラリ６０８が作成される。
【００６３】
図１と図２と関連して説明したように、機械読み取り可能コード２３４を、修正済みソフトウェアライブラリを参照するプログラミングコード（すなわちソースコード）を利用してコンパイルしてもよい７１０。
【００６４】
図８は、一般的にコンピュータシステム８０１で利用される主要なハードウエアコンポーネントを図示するブロック図である。これら図示されるコンポーネントは、同じ物理的構造体または別個のハウジングや構造体の内部に置かれる。
【００６５】
コンピュータシステム８０１はプロセッサ８０３とメモリー８０５を含んでいる。プロセッサ８０３は、コンピュータシステム８０１の動作を制御し、また、マイクロプロセッサ、マイクロコントローラ、ＤＳＰ（ディジタル信号プロセッサ）または当該技術で周知の他のデバイスとして実現される。プロセッサ８０３は一般的には、メモリー８０５内に記憶されているプログラム命令に基づいて論理演算と算術演算を実行する。
【００６６】
本書で用いる限り、メモリー８０５という用語は、電子情報を記憶可能ないずれかの電子コンポーネントとして広く定義され、また、ＲＯＭ（読み出し専用メモリー）、ＲＡＭ（ランダムアクセスメモリー）、磁気ディスク記憶媒体、光記憶媒体、ＲＡＭ中のフラッシュメモリーデバイス、プロセッサ８０３に含まれるオンボードメモリー、ＥＰＲＯＭメモリー、ＥＥＰＲＯＭメモリー、レジスタなどとして実現される。メモリー８０５は一般的に、プログラム命令と他のタイプのデータを記憶している。このプログラム命令はプロセッサ８０３によって実行されて、ここに開示する方法の内の一部または全部を実施する。
【００６７】
コンピュータシステム８０１はまた、一般的には、他の電子デバイスとの通信のための通信インタフェース８０７を１つ以上含んでいる。通信インタフェース８０７は、有線通信技術、無線通信技術またはその双方に基づいている。さまざまなタイプの通信インタフェース８０７の例としては、シリアルポート、パラレルポート、ＵＳＢ（ユニバーサルシリアルバス）、イーサネット(登録商標)アダプタ、ＩＥＥＥ１３９４バスインタフェース、ＳＣＳＩ（小型コンピュータシステムインタフェース）バスインタフェース、ＩＲ（赤外線）通信ポート、ブルートゥース無線通信アダプタなどがある。
【００６８】
コンピュータシステム８０１は、一般的には、１つ以上の入力デバイス８０９と１つ以上の出力デバイス８１１も含んでいる。さまざまな種類の入力デバイス８０９の例には、キーボード、マウス、マイクロフォン、遠隔制御デバイス、ボタン、ジョイスティック、トラックボール、タッチパッド、ライトペンなどが含まれる。さまざまな種類の出力デバイス８１１の例には、スピーカ、プリンタなどが含まれる。一般的にコンピュータシステムに含まれる出力デバイスの１つの具体的なタイプとして、表示デバイス８１３がある。本書に開示する実施形態で用いられる表示デバイス８１３は、ＣＲＴ（陰極線管）、ＬＣＤ（液晶表示装置）、ＬＥＤ（発光ダイオード）、気体プラズマ、エレクトロルミネセンスまたは類似物などのいずれかの適切な画像投影技術を利用している。ディスプレイコントローラ８１５もまた装備されており、これによってメモリー８０５に記憶されているデータを、表示デバイス８１３に表示されるテキスト、グラフィックおよび／または動画に（必要に応じて）変換する。
【００６９】
もちろん、図８は、コンピュータシステム８０１の単に１つの可能な構成を図示しているだけである。他のさまざまなアーキテクチャやコンポーネントも利用可能である。
【００７０】
コンピュータシステム８０１は、パソコン、ラップトップ型コンピュータ、サーバ、タブレットＰＣまたは埋め込み式デバイスなどさまざまな仕方で実現される。ソフトウェアまたは埋め込み式プログラミングと協働して動作するコンピュータシステム８０１は、本書に開示するシステムと方法を実行するために利用される。
【００７１】
情報と信号は、互いに異なったさまざまな技術や技法のいずれかを用いて表される。例えば、上の説明全体にわたって引用されたデータ、命令、コマンド、情報、信号、ビット、記号およびチップは、電圧、電流、電磁波、磁場や磁性粒子、光場や光粒子またはこれらの何らかの組み合わせによって表されてよい。
【００７２】
本書に開示する実施形態と関連して説明したさまざまな解説的な論理ブロック、モジュール、回路及びアルゴリズムステップは、電子式ハードウエア、コンピュータソフトウェアまたはこれら双方の組み合わせとして実現されてよい。ハードウエアとソフトウェアのこの交換可能性を明瞭に示すために、さまざまなコンポーネント、ブロック、モジュール、回路およびステップを図示して、一般にその機能性という観点から上で解説した。このような機能性がハードウエアとして実現されるかソフトウェアとして実現されるかは、特定の応用分野と全体的なシステムに課せられる設計上の制約によって決まる。当業者は、特定の応用分野毎に上記の機能性をさまざまな仕方で実現するが、このような実現に関する判断は、本発明の範囲から逸脱するものと解釈すべきではない。
【００７３】
本書に開示する実施形態を参照して説明したさまざまな解説的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、ディジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラミングゲートアレイ信号（ＦＰＧＡ）もしくは他のプログラマブル論理デバイス、離散ゲートもしくはトランジスタロジック、離散ハードウエアコンポーネント、または本書に記載する機能を実行するように設計されたこれらの何らかの組み合わせによって実現または実施される。汎用プロセッサは、マイクロプロセッサであるが、代替例では、何らかの従来型プロセッサや、コントローラや、マイクロコントローラや、状態機械である。プロセッサはまた、コンピュータデバイスの組み合わせ、例えば、ＤＳＰとマイクロプロセッサ、複数のマイクロプロセッサ、ＤＳＰコアと一緒になった１つ以上のマイクロプロセッサまたはこのような他の何らかの構造体の組み合わせとして実現される。
【００７４】
本書に開示する実施形態に関連して説明した方法やアルゴリズムのステップは、直接にハードウエアとして、プロセッサによって実行されるソフトウェアモジュールとして、または双方の組み合わせとして実現される。ソフトウェアモジュールは、ＲＡＭメモリー、フラッシュメモリー、ＲＯＭメモリー、ＥＰＲＯＭメモリー、ＥＥＰＲＯＭメモリー、レジスタ、ハードディスク、取り外し式ディスク、ＣＤ−ＲＯＭまたは技術上周知の他の何らかの形態の記憶媒体に常駐している。例示の記憶媒体はプロセッサに連結され、これで、プロセッサが記憶媒体から情報を読み取ったりこれに書き込んだりすることが可能となるようにしている。代替例では、記憶媒体はプロセッサと一体になっている。プロセッサと記憶媒体はＡＳＩＣ中に常駐している。ＡＳＩＣはユーザ端末に常駐している。代替例では、プロセッサと記憶媒体は、ユーザ端末中で別個のコンポーネントとして常駐している。
【００７５】
本書に開示する方法は、説明した方法を達成するステップや動作を１つ以上含んでいる。これらの方法のステップおよび／または動作は、本発明の範囲から逸脱することなく互いと交換可能である。言い換えれば、本実施形態を正しく動作させるためにステップや動作の特定の順序が必要でない限り、特定のステップおよび／動作の順序および／または使用は、本発明の範囲から逸脱することなく修正可能である。
【００７６】
本発明の具体的な実施形態と応用分野を図示して説明したが、本発明は、本書に開示する構成とコンポーネントにだけ限られるものではないことを理解すべきである。当業者には明らかなさまざまな修正、変化、変更を、本発明の精神と範囲から逸脱することなく本書に開示する本発明の方法とシステムの配置、動作および詳細に施すことが可能である。
【産業上の利用可能性】
【００７７】
本発明は、埋め込みシステムに適用することができる。
【図面の簡単な説明】
【００７８】
本発明の範例的実施例が、以下の説明とそれに付された請求項を添付図面に絡め参酌することで、より十全に明らかとなろう。それらの図面は、範例的実施例のみを図化しており、従って、発明の範囲の限定と捉えるべきではないとの理解の下、本発明の範例的実施例を更に特定し詳述する説明を、次に、添付図面を用いて行うが、その図面中：
【図１】構成可能ソフトウェアライブラリを提供するシステムの一実施形態を示すブロック図である。
【図２】ユーザ構成可能なソフトウェアライブラリを提供するシステムの代替実施形態を示すブロック図である。
【図３】コードセグメントをベースソフトウェアライブラリから除去して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。
【図４】特定の言語で書かれたプログラミング上のコメントをベースソフトウェアライブラリから除去して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。
【図５】定数の定義をベースソフトウェアライブラリ中に挿入して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。
【図６】外部ライブラリを初期化するコールをベースソフトウェアライブラリ中に挿入して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。
【図７】構成可能ソフトウェアライブラリを提供する方法の一実施形態を図示するフローチャートである。
【図８】一般的にコンピュータシステムで利用される主要なハードウエアコンポーネントを図示するブロック図である。
【図１】
2008522249.tif 000003
【図２】
2008522249.tif 000004
【図３】
2008522249.tif 000005
【図４】
2008522249.tif 000006
【図５】
2008522249.tif 000007
【図６】
2008522249.tif 000008
【図７】
2008522249.tif 000009
【図８】
2008522249.tif 000010
【国際調査報告】
2008522249.tif 000011
2008522249.tif 000012
2008522249.tif 000013