JP5002454B2 - ユーザ構成可能なソフトウェアライブラリを提供するシステムと方法 - Google Patents

ユーザ構成可能なソフトウェアライブラリを提供するシステムと方法 Download PDF

Info

Publication number
JP5002454B2
JP5002454B2 JP2007525089A JP2007525089A JP5002454B2 JP 5002454 B2 JP5002454 B2 JP 5002454B2 JP 2007525089 A JP2007525089 A JP 2007525089A JP 2007525089 A JP2007525089 A JP 2007525089A JP 5002454 B2 JP5002454 B2 JP 5002454B2
Authority
JP
Japan
Prior art keywords
software library
library
base
code
modified
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007525089A
Other languages
English (en)
Other versions
JP2008522249A (ja
Inventor
ダブリュー. ブライアント イーストハム,
ジェームス エル. シミスター,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JP2008522249A publication Critical patent/JP2008522249A/ja
Application granted granted Critical
Publication of JP5002454B2 publication Critical patent/JP5002454B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Description

本発明は、一般的にはコンピュータとコンピュータ関連技術とに関連する。より詳しくは、本発明は、ユーザ構成可能なソフトウェアライブラリに関する。
コンピュータと通信の技術は急速に進歩し続けている。実際、コンピュータと通信の技術は個人の日常の多くの側面で関わっている。例えば、今日消費者が用いているデバイスの多くが、その中に小型のコンピュータを有している。このような小型コンピュータは、サイズがさまざまであり、精巧さの程度もまちまちである。このような小型コンピュータとしては、1つのマイクロコンピュータから全機能式の完全なコンピュータシステムまであらゆるものが含まれている。例えば、このような小型コンピュータは、マイクロコントローラなどの1チップコンピュータ、コントローラなどの1ボードタイプのコンピュータ、IBM−PC互換機などの一般的なデスクトップコンピュータなどがある。
コンピュータは、一般的に、その心臓部に1つ以上のプロセッサを有している。この(これらの)プロセッサは、さまざまな外部の入出力部に相互接続されて、特定のコンピュータやデバイスを管理するように機能している。例えば、サーモスタット中のプロセッサは、温度設定値を選択するためのボタンに接続されたり、暖炉や空調装置に接続されて温度を変更したり、温度センサーに接続されて、現時点での温度を読み取ってディスプレイ上に表示したりする。
多くの電化製品やデバイスなどに、1つ以上の小型コンピュータが含まれている。例えば、サーモスタット、暖炉、空調システム、冷蔵庫、電話、タイプライタ、自動車、自動販売機および多くのさまざまなタイプの産業装置では、今日その内部に小型コンピュータ、すなわちプロセッサを含んでいるのが一般的である。コンピュータソフトウェアが、このようなコンピュータのプロセッサを実行して、あるタスクをどのように実行するかをプロセッサに指示している。例えば、コンピュータソフトウェアがサーモスタット上で実行されることによって、空調装置が、ある特定の温度に達したときに動作を停止させ、必要なときにヒータをオンしたりさせる。
非常に重要なコンピュータ技術の1つの態様は、ソフトウェアライブラリである。ソフトウェアライブラリは、本質的には、実行時間にコンピュータプログラムにプログラマが組み込むことが可能な事前パッケージングされた(ライブラリのダイナミックリンク)またはこのプログラムを機械読み取り可能なコードにコンパイルする際の(ライブラリのスタティックリンク)プログラミングコードである。ソフトウェアライブラリに価値があるのは、これによって、ユーザは迅速にソフトウェアプログラムを作成することが可能となるからである。プログラマは、特定のプログラムで用いられるアルゴリズムのすべてを1つずつ作成する必要はない。
不運なことに、現在のソフトウェアライブラリには多くの問題がある。例えば、ソフトウェアライブラリは、プログラマが、ライブラリ中のアルゴリズムが当面のタスクをどのように実施しているか理解できないように、しばしば「ブラックボックス」形式で配布されている。この結果、プログラマは、ライブラリ中のアルゴリズムの限界や能力を完全には理解し得ない。
さらにその上、一般的にライブラリは修正不可能である。この結果、プログラマは、関数を、これらがライブラリ中にあるがままに利用せざるを得ない。プログラマは、ライブラリを特定の状況に適合するようにカスタマイズすることは不可能である。このため、ある状況下では深刻な問題と制限が生じかねない。例えば、しばしばメモリーと処理の能力にかなり大きい制限がある埋め込み式デバイス用にプログラミングをする際に、プログラマが、あるプログラムによって利用される特定の関数のサイズに気を使うのは無理もないことである。ライブラリから得られるかなりのサイズを持つ関数は、埋め込み式デバイスでは利用することはまったく不可能であるが、当面しなければならないプログラミングタスクにとってはまったく不必要なコードセグメントを多く含んでいる。しかしながら、プログラマはライブラリ中のプログラミングコードを変更、採用、さらに見ることさえ不可能であるため、これらのアルゴリズムは多くのプログラミングタスク用には使用不可能である。
加えて、ソフトウェアライブラリが配布されており、また、エディット可能である場合、新しいバージョンのライブラリを配布する際に深刻な問題が生じかねない。例えば、バージョン1のソフトウェアライブラリがユーザのよってエディットされると、バージョン1に対する変更や適応をこのソフトウェアライブラリのバージョン2に組み込むことはほとんど不可能または少なくとも非常に時間がかかる。
したがって、ユーザによる構成を持つソフトウェアライブラリのための改良されたシステムと方法によって恩典が実現される。構成可能なソフトウェアライブラリ用のシステムと方法の例をいくつか個々に説明する。
構成可能なソフトウェアライブラリを提供する方法を開示する。コメント用の所望の目標言語と共にベースソフトウェアライブラリの少なくとも1つの構成可能なセッティングに対して目標セッティングを指定するユーザ入力が受信される。このベースソフトウェアライブラリは、構成可能なように設計されており、また、人間が読み取ることが可能なプログラミングコードを含んでいる。目標セッティングとコメント用の所望の目標言語とに基づいてベースソフトウェアライブラリに追加したりこれから除去されたりする少なくとも1つのコードセグメントが特定される。コンピュータプログラムを利用して自動的に目標セッティングにしたがってベースソフトウェアライブラリを変更することによって、修正されたソフトウェアライブラリが作成される。この修正されたソフトウェアライブラリ中のコメントは、この所望の目標言語で作成されている。修正されたソフトウェアライブラリは、人間が読み取り可能なプログラミングコードを含んでいる。
本方法は、ベースソフトウェアライブラリの構成可能なセッティングを決定することをさらに含んでいる。また、ベースソフトウェアライブラリは、第1のソフトウェアライブラリから導出される。1つの実施形態では、ベースソフトウェアライブラリと修正されたソフトウェアライブラリは、埋め込み式デバイス用のプログラミングコードを含んでいる。目標セッティングは、ベースソフトウェアライブラリから少なくとも1つのコードセグメントを除去して、修正されたソフトウェアライブラリを作成するように構成してもよい。
目標セッティングは、ベースソフトウェアライブラリに対して少なくとも1つのコードセグメントを追加して、修正されたソフトウェアライブラリを作成するように構成してもよい。この追加されたコードセグメントは、例えば、修正されたソフトウェアライブラリ中で用いられる定数を定義する外部のソフトウェアライブラリまたはコードセグメントに対するコールを含むことがある。
前述の方法を実行するコンピュータシステムもまた、開示される。本システムは、プロセッサと、このプロセッサと電子的通信状態にあるメモリーと、前述の方法を実行するためのメモリーに記憶されている命令と、を含んでいる。前述の方法を実行する命令を含んでいるコンピュータ読み取り可能な媒体も開示する。
本発明の典型的な実施形態は、添付図面と一緒にして以下の説明と添付の特許請求の範囲を読めばより完全に明らかになるであろう。これらの図面は単に典型的な実施形態を示しているだけであり、したがって、本発明の範囲を制限するものと考えるべきではないことを理解したうえで、以下の添付図面を用いてさらに具体的にそして詳細に本発明の典型的な実施形態が説明される。
本発明のさまざまな実施形態を、図面を参照して以下に説明するが、図中類似の参照番号は同一のまたは機能的に類似の部品を示している。本書の図面に概説し図示される本発明の実施形態は、互いに異なったさまざまな構成に配置したり設計したりすることが可能である。したがって、図に提示されている本発明のいくつかの典型的な実施形態に関する以下のより詳細な説明は、申し立てとおり本発明の範囲を制限することを意図するものではなく、本発明の実施形態を単に代表して示しているだけである。
「典型的な」という用語は、本書で用いる限り専一に、「例や、事例や、例証として機能する」ことを意味するものとする。本書で「典型的な」と説明するいかなる実施形態も、他の実施形態より好ましいとか利点があると必ずしも解釈すべきではない。実施形態のさまざまな態様を図中に提示するが、図は、特に記載がない限り必ずしも同じ尺度で作図されているわけではない。
本書に開示する実施形態の多くの特徴は、コンピュータソフトウェア、電子的ハードウエアまたは双方の組み合わせとして実現される。ハードウエアとソフトウェアのこの交換可能性を明瞭に解説するため、さまざまな構成要素を一般的にその機能性という観点から説明する。このような機能性がハードウエアとして実現されるかソフトウェアとして実現されるかは、全体的なシステムに課せられる特定の応用と設計上の制約によって決まる。当業者は、記載されている機能性を特定の応用分野ごとにさまざまな仕方で実現するが、このような実現例は、本発明の範囲からの逸脱をもたらすものと解釈すべきではない。
ここに記載する機能性をコンピュータソフトウェアとして実施すると、このようなソフトウェアは、メモリーデバイス内に置かれるおよび/またはシステムバスやネットワーク上で電子信号として送信される何らかのタイプのコンピュータ命令またはコンピュータ実行可能コードを含んでいる。本書に記載するコンポーネントと関連する機能性を実施するソフトウェアは、1つの命令または多くの命令を含み、また、互いに異なったいくつかのコードセグメント上や、さまざまなプログラム中や、いくつかのメモリーデバイス上に分散されてもよい。
本書で用いられる際、「コンピュータデバイス」という用語は、一般的に算術演算や論理演算を実行するプロセッサを有する何らかのタイプの電子デバイスのことである。このコンピュータデバイスには、メモリー(例えばRAM(ランダムアクセスメモリー)、フラッシュメモリーおよび/またはハードディスク記憶デバイス)が含まれる。コンピュータデバイスは、メモリーに記憶されている命令を処理する。コンピュータデバイスは、オプションとして、他のデバイスとの通信のための通信インタフェース(例えばネットワークカードやモデム)、ユーザ入力を受信する入力部(例えばキーボード、タッチパッドもしくはマウス)や情報をユーザに提供する出力部(例えばオーディオ出力部もしくは表示画面)などの他のコンポーネントを含むことがある。加えて、コンピュータデバイスは、デスクトップ型コンピュータ、サーバ、タブレット型PC、ノート型コンピュータ、携帯情報端末(PDA)、セルラー電話もしくは埋め込み式デバイスなどのさまざまなタイプのデバイスとして実現されることに注意すべきである。
図1は、ユーザ構成可能ソフトウェアライブラリを提供するシステム100の実施形態を示すブロック図である。この図示する実施形態では、このユーザ構成可能なソフトウェアライブラリは、「ベースソフトウェアライブラリ」104として示されている。このベースソフトウェアライブラリ104はさまざまな仕方で実現される。例えば、ベースソフトウェアライブラリ104は、ソースコードすなわち人間が読み取り可能なコードを含んでいる。また、ベースソフトウェアライブラリ104は、バイナリコード、すなわち機械読み取り可能なコードを含むこともある。
ベースソフトウェアライブラリ104は、構成可能に設計されており、また、ベースソフトウェアライブラリ104の態様をエディットするためのセッティングやプログラミング制御装置を含むかまたはこれらにリンクされている。ベースソフトウェアライブラリ104は、ユーザによって変更されて、新たなまたは修正されたソフトウェアライブラリ108となる。一実施形態では、ベースソフトウェアライブラリ104は読み取り専用形式で配布され、これにより、その内容が閲覧されるがエディットはされないようになっている。このような実施形態では、ライブラリのユーザは、ベースソフトウェアライブラリ104を、新しい修正されたソフトウェアライブラリ108を作成するだけで修正する。
ここに開示するシステム100は、ユーザ入力を受信し、また、ベースソフトウェアライブラリ104の構成用の目標セッティング114を生成するユーザ入力コンポーネント112をさらに含んでいる。目標セッティング114は、ベースソフトウェアライブラリ104を利用して、修正済みソフトウェアライブラリ108の作成を制御する。ユーザ入力は、ユーザ入力コンポーネント112によって多くの仕方で受信される。例えば、ユーザ入力は、ベースソフトウェアライブラリ104の構成可能なセッティングを制御するように定式化されたファイルを含むことがある。また、目標セッティング114は、ユーザが表示画面や他のユーザインタフェースデバイスと対話するとそれに応答して生成されるようにしてもよい。ユーザ入力コンポーネント112によって生成された目標セッティング114は、構成可能セッティングコンポーネント116で受信される。
システム100はまた、構成可能セッティングコンポーネント116を含んでいる。この構成可能セッティングコンポーネント116は、ベースソフトウェアライブラリ104のどのような態様が構成可能であるかを決定する(すなわち識別する)。ベースソフトウェアライブラリ104のこの構成可能な態様の決定は、多くのさまざまな仕方で実行される。例えば、このような構成の情報を含むデータのファイル、すなわち、コンパイル物をアクセスしたりする。このデータコンパイル物は、ベースソフトウェアライブラリ104の外部にあっても内部にあってもよい。別の例として、ベースソフトウェアライブラリ104を分析して、適切なメタデータ、キーワードまたはスイッチを特定して、ベースソフトウェアライブラリ104のどの態様が構成可能であるか識別する。上記の構成可能セッティングコンポーネント116はまた、変更されるべきベースソフトウェアライブラリ104のプログラミングコードの特定のコードセグメントやコードエリアのロケーションを、例えば、ライン番号やバイトオフセットによって判定する。
構成可能セッティングコンポーネント116は、一実施形態では、ユーザ入力コンポーネント112と通信して、どのセッティングが構成可能であるかを、例えば、表示画面を介してユーザに対して示す。ユーザ入力112と構成可能セッティングコンポーネント116は、ベースソフトウェアライブラリ104と統合されるか、または、互いに他者112、116に対して、また、ベースソフトウェアライブラリ104に対して個別のプログラムであってよい。
ベースソフトウェアライブラリ104の多くのさまざまな態様が、ユーザによって構成可能であってよい。例として、ベースソフトウェアライブラリ104は、2つの電子デバイス同士間での通信を可能とする機能のライブラリを含むことがある。この場合、構成可能セッティングが、作成されるソフトウェアに対する許容可能通信ソケットの数を制御したりする。
目標セッティング114が受信されるとこれに応答して、構成可能セッティングコンポーネント116は修正データ118を生成する。修正データ118は、ベースソフトウェアライブラリ104に追加されるかまたはこれから除去されるコードセグメント(例えばプログラミングコードまたはこのコード中のコメント)を特定する。修正データ118はさまざまな仕方で実現される。修正データ118は、除去されるコードセグメントを、例えば、削除されるライン番号の範囲を識別することによって特定するようにしてもよい。また、修正データ118を、ベースソフトウェアライブラリ104内の特定のバイトオフセットで挿入される特定のコードセグメントを特定するようにしてもよい。加えて、修正データ118は、ベースソフトウェアライブラリ104内の除去される特定のメタデータ、タグまたはスイッチと関連するコードセグメントを特定するようにしてもよい。修正データ118はまた、修正済みソフトウェアライブラリ108に含まれるコードセグメントを(テキスト形態またはバイナリ形態で)含むことがある。追加されるコードセグメントは、構成可能セッティングコンポーネント116によって生成されたり、ユーザ入力コンポーネント112によって直接にユーザから受信されたりする。
生成コンポーネント120は、ベースソフトウェアライブラリ104を利用して、修正データ118にしたがって修正済みソフトウェアライブラリ108を生成する。修正済みソフトウェアライブラリ108は、この修正済みソフトウェアライブラリ108が作成された対象であるプロジェクトに合うように特定的に調整されたベースソフトウェアライブラリ104の修正バージョンである。修正済みソフトウェアライブラリ108は、人間または機械が読み取り可能なプログラミングコードである。
修正済みソフトウェアライブラリ108が作成されたら、この修正済みソフトウェアライブラリ108を参照するプログラミングコード126を、コンパイルコンポーネント130を用いてコンパイルして、機械読み取り可能コード134を生成する。修正済みソフトウェアライブラリ108は、機械読み取り可能コードに対してダイナミックにまたはスタティックにリンクされる。
ここに開示するシステム100は、従来のシステムに勝るかなりの長所を提供するものである。第一に、ユーザは、ベースソフトウェアライブラリ104をコンパイルコードで利用することを強制されることはない。ユーザは、当面のプログラミングタスクの特定の必要性に適合するようにライブラリ104を調整することが可能である。例えば、プログラマは、ベースソフトウェアライブラリ104から不必要なコードを除去して、作成される機械読み取り可能コード134を簡素化することが可能である。ユーザは、機械読み取り可能コード134ではまったく使用されない多くのアルゴリズムや関数を含む必要はない。このことは、機械読み取り可能コード134を、一般的にメモリー容量と処理能力が限られている埋め込み式デバイスで利用されるような場合には特に重要である。
第二に、ベースソフトウェアライブラリ104のインテグリティが保たれることである。一実施形態では、ベースソフトウェアライブラリは読み取り専用形式で配布され、これにより、プログラマがこれを閲覧は可能であるが修正は不可能であるようになっている。さらにその上、ベースソフトウェアライブラリ104の作成者は、一実施形態では、ベースソフトウェアライブラリ104のどのような態様がエンドユーザによって修正されて、修正済みソフトウェアライブラリ108を作成するかを制御することが可能である。また、一実施形態では、ユーザは、ベースソフトウェアライブラリ104のコードを閲覧して、その中で利用されている手順を正確に理解することが許容される。ベースソフトウェアライブラリ104内のプログラミングコードを閲覧するこの機能によって、ライブラリのユーザは、実行されているアルゴリズムと、このアルゴリズムが当面のプログラミングタスクにとってよく適しているかどうかとをよりよく理解することが可能となる。
第三に、ベースソフトウェアライブラリ104の修正を、単にユーザ構成可能セッティングを選択するだけで促進することが可能である。簡単なユーザ構成可能セッティングを少し変更するだけで、ベースソフトウェアライブラリに対して大幅でかなりの変更を、迅速に加えることが可能である。したがって、ベースソフトウェアライブラリ104のコードを改良したり別様に修正したりした際に、ベースソフトウェアライブラリ104に対する微調整や変更を容易に複製することが可能である。
図2は、ユーザ構成可能なソフトウェアライブラリ204を提供するシステム200の代替実施形態を示すブロック図である。このシステム200は、図1に示すシステム100と同じように機能する。特に、目標セッティング214はユーザ入力コンポーネント212から構成可能セッティングコンポーネント216に送信される。これに応答して、修正データ218が構成可能セッティングコンポーネント216から作成コンポーネント220に送信されて、修正済みソフトウェアライブラリ208の作成を制御する。
しかしながら、図2に示す実施形態では、第1のソフトウェアライブラリ222はベースソフトウェアラブラリ204に変換される224。この場合、ベースソフトウェアライブラリ204は、例えば、予備変換プロセス224中に第1のソフトウェアライブラリ222から作成された1つ以上のダイナミックリンクライブラリ(DLL)である。上記したように、ベースソフトウェアライブラリ204は、人間または機械が読み取り可能なコードを含んでいる。一実施形態では、ベースソフトウェアライブラリ204は、変換プロセス224で作成されると、ベースソフトウェアライブラリ204のプログラミングコードがライブラリのユーザに対して暴露されたり、すぐに目に触れたりすることがないように、ライブラリのユーザに配布される。また、変換プロセス224で作成されたベースソフトウェアライブラリ204を、ユーザに対してより優しく、また、ライブラリのユーザにとってより容易にアクセス可能なソフトウェアライブラリとなるように定式化するようにしてもよい。
先行の実施形態の場合と同じように、ベースソフトウェアライブラリ204を作成コンポーネント220と修正データ218とで利用して、修正済みソフトウェアライブラリ208を作成する。さらに、コンパイルコンポーネント230を同じように利用して、修正済みソフトウェアライブラリ208とこのライブラリを参照しているソースコード226とを利用して機械読み取り可能コード234をコンパイルしてもよい。ベースソフトウェアライブラリ204はバイナリ形式で配布されるとはいえ、コードの可視性は、依然として、修正済みソフトウェアライブラリ208中に存在する。これによって、修正済みソフトウェアライブラリ208中に存在するようなライブラリのソースをインスペクトすることが可能であるという恩典を失うことなく、アクセスが容易であることとユーザに優しいという恩典が与えられる。
図3〜6に、構成可能ソフトウェアライブラリ304、404、504および604を提供するシステム300、400、500および600の代替実施形態を開示する。これらの代替実施形態は、構成可能ソフトウェアライブラリ304、404、504および604に対して実行され得る修正または変換のタイプの例を示している。本書に開示する例は、制限的なものではなく、本書に開示するシステムと方法を利用して実行され得る修正のタイプを単に示すものである。
これらの各システム300、400、500および600の中では、図1と図2に示すように、ユーザ入力コンポーネント312、412、512および612は、目標セッティング314、414、514および614を発生するが、これらのセッティングは、構成可能セッティングコンポーネント316、416、516および616によって受信される。すると、構成可能セッティングコンポーネント316、416、516および616は、修正データ318、418、518および618を発生するが、これら修正データは生成コンポーネント320、420、520および620によって受信される。そして、生成コンポーネント320、420、520および620は、修正データ318、418、518および618とベースソフトウェアライブラリ304、404、504および604とに基づいて修正済みソフトウェアライブラリ308、408、508および608を生成する。図2に示すように、ベースソフトウェアライブラリ304、404、504および604は、第1のソフトウェアライブラリ222から導出してもよい。簡略化のため、修正済みソフトウェアライブラリ208を参照しているプログラミングコード226、コンパイルコンポーネント230および結果として得られる機械読み取り可能コード234は、図3〜6では省略されている。
特に図3を参照すると、特定のコードセグメント340b〜340dが除去された修正済みのソフトウェアライブラリ308をベースソフトウェアライブラリ304から生成するシステム300が開示されている。図3に示す実施形態では、ベースソフトウェアライブラリは、4つの典型的なコードセグメント340a〜340d、すなわち、送信アルゴリズムA340a、送信アルゴリズムB340b、送信アルゴリズムC340cおよびセキュリティアルゴリズム340dを含んでいる。ここに図示する実施形態の構成可能セッティングには、これらの各コードセグメントを含んだり除去したりする能力が含まれている。
図示するシステム300では、目標セッティング314は、送信アルゴリズムA340aを修正済みソフトウェアライブラリ308に含むべきであるが、送信アルゴリズムB340b、送信アルゴリズムC340cおよびセキュリティアルゴリズム340dは修正済みライブラリ308から除去すべきであると指定している。
結果としての修正データ318は、ベースソフトウェアライブラリ304に含まれるかまたはこれから除去されるコードの具体的なラインを特定する。代替実施形態では、除去されるコードのラインだけを修正データ318の中から特定する。
ベースソフトウェアライブラリ304から特定のコードセグメントを除去するシステム300は、ここに開示する実施形態以外にもさまざまな仕方で実現される。図3に示す実施形態は、ここに開示するシステムと方法のこの利用法を達成する方法の単に一例である。例えば、修正データ318は、特定のコードセグメントを識別するさまざまな仕方で実現される。コードセグメント340は、単なる例として、バイトオフセットによって、または、コードセグメントを特定するメタデータ、スイッチ、タグまたはキーワードによって特定される。さらに、送信アルゴリズムA340aは、他のコードセグメント340b〜340dに対するリファレンスを含み得ることを理解すべきである。他のコードセグメントを除去するプロセスでも、このようなリファレンスを送信アルゴリズムA340aから除去したり他の修正をこれに対して施したりする。
図4に示すシステム400は、具体的には、ベースソフトウェアライブラリ404のローカライズ動作を示している。ベースソフトウェアライブラリ404は、さまざまな言語によるプログラミングコメント440a〜440cを含んでいる。特に、英語のコメント440a、日本語のコメント440bおよび中国語のコメント440cを含んでいる。ベースソフトウェアライブラリ404は、コメント440a〜440cと関連するプログラミングコード440dをさらに含んでいる。
図示するように、目標セッティング414は、英語のコメント440aとプログラミングコード440dを修正済みソフトウェアライブラリ408に含むべきであると指定している。目標セッティング414は、日本語コメント440bと中国語コメント440cを修正済みソフトウェアライブラリから除外すべきであるとさらに指定している。
修正データ418は、ベースソフトウェアライブラリ404内にある、特定のコードセグメント440を特定しているメタタグを参照する。記述したように、(含まれるまたは除外される)コードセグメント440は、例えば、メタタグ、ライン番号またはバイトオフセットを利用して特定される。
ここに開示するシステム400は、ユーザにとって、修正済みソフトウェアライブラリ408によって定義されている関数を理解することを単に邪魔したり困難にしたりする特定言語によるコメントを除去する効率的な方法を提供する。もちろん、ソフトウェアコメント440a〜440cは、機械読み取り可能コードには組み込まれていないため、ベースソフトウェアライブラリ404と修正済みソフトウェアライブラリ408は、図示する実施形態では人間読み取り可能形式で与えられる。
図4に開示するシステムは、ここに開示するシステムと方法を利用してベースソフトウェアライブラリ404をローカライズする方法の内の1つを単に解説するものである。1例として、ベースソフトウェアライブラリ404は、多くのさまざまなタイプの言語を含んでおり、また、これらの言語の内の1つ以上の言語によるコメントが、修正済みソフトウェアライブラリ408に含まれている。加えて、提供された言語によるコメント、例えば、英語のコメント440aは、カリフォルニア州マウンテインビューのGoogleが提供している翻訳サービスなどのアクセス可能な翻訳サービスを用いて新しい言語に翻訳して、修正済みソフトウェアライブラリに組み込むことが可能である。さらに、プログラミングコード440dは、翻訳して、ベースソフトウェアライブラリ404内に含まれる新たな言語を追加したり、複数の言語オプションをその内部に有したりすることが潜在的には可能である。もちろん、この翻訳は、コメントだけに限られるものではなく、潜在的には、ライブラリの一部であるプログラミング言語の識別子や文字列を翻訳して、ソフトウェアライブラリの完全で自動的なローカル化を効果的に可能とすることができる。
図5に示すシステム500では、構成可能セッティングコンポーネント516は、定数502(低数値の「変数」)を定義している目標セッティング514を受信して、修正データ518を発生する。この場合、定義されている定数は「パイ」と「e」である。
定数502は、ベースソフトウェアライブラリ504内にある指定されたファイルの認識された開始箇所からの特定のバイトオフセット506a〜506bの箇所に挿入されることになる。したがって、ベースソフトウェアライブラリ504は、バイナリ形態であったりする。ベースソフトウェアライブラリがバイナリ形態である場合、挿入された定数502は、修正済みソフトウェアライブラリ508に挿入される以前に、構成可能セッティングコンポーネント516によってバイナリ形態に変換される。バイトオフセット506は、ユーザ入力または構成可能セッティングコンポーネント516によって決定することが可能である。
したがって、修正済みソフトウェアライブラリは、ベースソフトウェアライブラリ504中で発見されたプログラミングコード540aを含んでおり、また、ユーザ入力512に基づいて生成された定数定義540bを含んでいる。
繰り返しになるが、図5に示す実施形態は、ここに開示するシステムと方法を利用して修正済みソフトウェアライブラリ508に挿入されるコマンドを単に示すものである。例えば、互いに異なった多くのタイプの定数が定義可能であり、ローカル変数もしくはグローバル変数または他のプログラミング用のコマンドもしくは関数を生成するための構成用コードを、修正済みソフトウェアライブラリ508に挿入することが可能である。
図6に、ベースソフトウェアライブラリ604中のプログラミングコード640aの一部ではなかった新しいコードを修正済みソフトウェアライブラリ608に追加して、もともとはそこに存在しなかったライブラリに対して新しいコードを効果的に追加する場合を示す。例えば、プロデューサは、自分がベースソフトウェアライブラリ604を書いた時点では、他のライブラリがエンドユーザのデベロッパにとって利用可能であることを知らなかったことになる。しかしながらエンドユーザのデベロッパは、ベースソフトウェアライブラリ604を得ると、エンドユーザのシステムまたは目標のところで利用可能な特定のライブラリ650a〜650bに気が付くことになる。すると、本システムと方法によれば、エンドユーザのデベロッパは、特定のライブラリ650a〜650bと対話するベースソフトウェアライブラリ604に対して新たなコードを追加することが可能となる。例えば、このデベロッパは、この特定のライブラリ650a〜650bを初期化する新しいコードを追加する。また、作成プロセスを作成コンポーネント620によって始動すると、他の関連するモジュールがシステム600によって検出され得る。このような場合、システム600は、新たなコードを作成して、このようなモジュールを初期化したり、この新たに作成されたコードを修正済みのソフトウェアライブラリ608に含んだりすることが可能である。
より具体的に言えば、図6に示すシステム600では、構成可能セッティングコンポーネント616において目標セッティング614が受信されると、これが契機となって、外部のソフトウェアライブラリ、すなわち、ライブラリA650aを修正済みソフトウェアライブラリ608から初期化するプログラミングコードが作成される。一般的には、ライブラリには、このライブラリを使用できるように初期化する特定のルーチンが含まれている。このようなルーチンは、ライブラリA650aを発生するベースソフトウェアライブラリ604の一部として識別することが可能である。構成可能セッティングモジュール616は、ライブラリA650aの初期化を含む要求を受信すると、ライブラリA650aを作成するベースソフトウェアライブラリ604に問い合わせて、初期化用のルーチンの名称を要求することが可能である。次に、このルーチン名が修正データ618に含まれる。また、ライブラリA650aに対するベースソフトウェアライブラリ604が、適用すべき他の修正データ618のリストを含むようにしてもよい。
この新たなコードの作成は、システム600によって始動してもよいし、ユーザ入力に応答して始動してもよい。例えば、ユーザ入力は、特定のタイプのライブラリを初期化したり、特定のライブラリを初期化したり、指定された記憶デバイス上でもしくは特定のサブディレクトリ中で発見されたライブラリを初期化したりすべきことを指定することが可能である。
図示するシナリオでは、2つの外部ライブラリ、すなわち、ライブラリA650aとライブラリB650bがアクセス可能である。したがって、これらの外部ライブラリ650はシステム600と同じ記憶デバイス上にあったり、ネットワークや他の電子通信チャネルでアクセス可能であったりする。
その後、構成可能セッティングコンポーネント616は、外部ライブラリA650aを初期化するプログラミングコードを作成する。このプログラミングコードは修正データ618中に組み込まれる。この修正データ618は、さらに、挿入ポイントをライン番号の形態で含んでいる。この挿入ポイントは、ユーザによって指定されていたり、構成可能セッティングコンポーネント616によって決定もしくは特定されていたりする。
ここに開示する実施形態では、構成可能セッティングコンポーネント616は、ベースソフトウェアライブラリ604中に存在していなかった、ユーザによって明確に提供されたまったく新しいコード640bをこのようにして作成する。
図6に示す実施形態は、新たに作成されたプログラミングコードを修正済みソフトウェアライブラリ608に対して提供する方法の内の1つを単に示すものである。この構成可能セッティングコンポーネント616は互いに異なった多くの方法で実現し、これによって、ベースソフトウェアライブラリ604の構成や、アクセス可能ライブラリのタイプや、他の要因に基づいてさまざまなタイプのプログラミングコードが作成される。例えば、コードセグメント640や他のライブラリを修正済みソフトウェアライブラリ608に追加すると、これが契機となって、他のコードセグメント340やライブラリが修正される。例えば、デバッグサポート用のライブラリが含まれると、これが契機となって、他のライブラリやコードセグメント640が、デバッグサポートを含むように自分自身を修正する。同じように、デバッグサポート用モジュールが取り除かれると、このデバッグサポートは、他のライブラリやコードセグメント640から自動的に取り除かれる。
上記したように、図3〜6に示すさまざまなシステムの解説は、本発明を制限するものではない。それどころか、これらの解説は、ここに開示するシステムと方法の柔軟性と能力を解説することを意図するものである。互いに異なった多くのタイプの修正や変換方法をベースプログラミングライブラリに対して施して新たなまたは修正されたプログラミングライブラリとすることは、ここに開示するシステムと方法の範囲に含まれる。互いに異なった多くのタイプの変換方法を利用し、これで、修正されたプログラミングライブラリを特定のプログラミングシナリオに合うようにカスタマイズすることが可能なようにすることは、本発明の最も重要な特徴の内の1つである。
図7は、構成可能ソフトウェアライブラリ604を提供する方法700の一実施形態を図示するフローチャートである。ベースソフトウェアライブラリ604に対する構成可能セッティングを最初に決定する702。このセッティングは、さまざまな仕方で決定される702。例えば、データベースまたは他のデータコンパイル物は、ベースソフトウェアライブラリの外部にあろうと内部にあろうと、このようなセッティングを含んでおり、また、これを検索してこのような決定をする702。また、構成可能セッティングを、例えば、ベースソフトウェアライブラリ内のメタデータ、タグ、スイッチまたはキーワードを分析することによって決定してもよい702。
上に説明したように、ベースソフトウェアライブラリ604は、人間または機械が読み取り可能なプログラミングコードを含んでいる。このベースソフトウェアライブラリは、第1のソフトウェアライブラリ222(図2に示す)から導出されたり、例えば、ダイナミックリンクライブラリとして実現されたりする。
次に、ユーザ入力が受信されて704、ベースソフトウェアライブラリの構成可能セッティングに対する目標セッティング614を指定する。このユーザ入力は、多数のユーザ入力システムの内の1つ以上のシステムを利用して受信される。例えば、構成可能セッティングが画面上に表示されて、ユーザ入力がキーボード、トラックボール、タッチ感知画面またはマウスを介して受信される。更なる例として、音声認識コマンドを利用して、ユーザ入力を発生してもよい。
ベースソフトウェアライブラリに追加またはこれから除去されたりする少なくとも1つのコードセグメントが特定される706。追加されるコードセグメントは、図5と図6に関連して示したように、構成可能セッティングコンポーネントを利用して生成されたり、ユーザによって提供したりすることが可能である。コードセグメントは、図3と図4に関連して示したように削除することが可能である。もちろん、ユーザ入力は、あるコードセグメントの追加と他のコードセグメントの削除の双方を指定できる。本書で用いられる限り、「コードセグメント」という用語は、プログラミングコードに限られることはなく、ベースソフトウェアライブラリ内のコメントや他のテキスト形式素材も含むものである。
その後、ベースソフトウェアライブラリを目標セッティングにしたがって変更することによって修正済みのソフトウェアライブラリを作成する708。この修正済みソフトウェアライブラリ608は、コンピュータプログラムによって自動的に作成される、すなわち、ユーザ入力が受信された後は、これ以上のユーザによる介入を必要とすることなく、修正済みのソフトウェアライブラリ608が作成される。
図1と図2と関連して説明したように、機械読み取り可能コード234を、修正済みソフトウェアライブラリを参照するプログラミングコード(すなわちソースコード)を利用してコンパイルしてもよい710。
図8は、一般的にコンピュータシステム801で利用される主要なハードウエアコンポーネントを図示するブロック図である。これら図示されるコンポーネントは、同じ物理的構造体または別個のハウジングや構造体の内部に置かれる。
コンピュータシステム801はプロセッサ803とメモリー805を含んでいる。プロセッサ803は、コンピュータシステム801の動作を制御し、また、マイクロプロセッサ、マイクロコントローラ、DSP(ディジタル信号プロセッサ)または当該技術で周知の他のデバイスとして実現される。プロセッサ803は一般的には、メモリー805内に記憶されているプログラム命令に基づいて論理演算と算術演算を実行する。
本書で用いる限り、メモリー805という用語は、電子情報を記憶可能ないずれかの電子コンポーネントとして広く定義され、また、ROM(読み出し専用メモリー)、RAM(ランダムアクセスメモリー)、磁気ディスク記憶媒体、光記憶媒体、RAM中のフラッシュメモリーデバイス、プロセッサ803に含まれるオンボードメモリー、EPROMメモリー、EEPROMメモリー、レジスタなどとして実現される。メモリー805は一般的に、プログラム命令と他のタイプのデータを記憶している。このプログラム命令はプロセッサ803によって実行されて、ここに開示する方法の内の一部または全部を実施する。
コンピュータシステム801はまた、一般的には、他の電子デバイスとの通信のための通信インタフェース807を1つ以上含んでいる。通信インタフェース807は、有線通信技術、無線通信技術またはその双方に基づいている。さまざまなタイプの通信インタフェース807の例としては、シリアルポート、パラレルポート、USB(ユニバーサルシリアルバス)、イーサネット(登録商標)アダプタ、IEEE1394バスインタフェース、SCSI(小型コンピュータシステムインタフェース)バスインタフェース、IR(赤外線)通信ポート、ブルートゥース無線通信アダプタなどがある。
コンピュータシステム801は、一般的には、1つ以上の入力デバイス809と1つ以上の出力デバイス811も含んでいる。さまざまな種類の入力デバイス809の例には、キーボード、マウス、マイクロフォン、遠隔制御デバイス、ボタン、ジョイスティック、トラックボール、タッチパッド、ライトペンなどが含まれる。さまざまな種類の出力デバイス811の例には、スピーカ、プリンタなどが含まれる。一般的にコンピュータシステムに含まれる出力デバイスの1つの具体的なタイプとして、表示デバイス813がある。本書に開示する実施形態で用いられる表示デバイス813は、CRT(陰極線管)、LCD(液晶表示装置)、LED(発光ダイオード)、気体プラズマ、エレクトロルミネセンスまたは類似物などのいずれかの適切な画像投影技術を利用している。ディスプレイコントローラ815もまた装備されており、これによってメモリー805に記憶されているデータを、表示デバイス813に表示されるテキスト、グラフィックおよび/または動画に(必要に応じて)変換する。
もちろん、図8は、コンピュータシステム801の単に1つの可能な構成を図示しているだけである。他のさまざまなアーキテクチャやコンポーネントも利用可能である。
コンピュータシステム801は、パソコン、ラップトップ型コンピュータ、サーバ、タブレットPCまたは埋め込み式デバイスなどさまざまな仕方で実現される。ソフトウェアまたは埋め込み式プログラミングと協働して動作するコンピュータシステム801は、本書に開示するシステムと方法を実行するために利用される。
情報と信号は、互いに異なったさまざまな技術や技法のいずれかを用いて表される。例えば、上の説明全体にわたって引用されたデータ、命令、コマンド、情報、信号、ビット、記号およびチップは、電圧、電流、電磁波、磁場や磁性粒子、光場や光粒子またはこれらの何らかの組み合わせによって表されてよい。
本書に開示する実施形態と関連して説明したさまざまな解説的な論理ブロック、モジュール、回路及びアルゴリズムステップは、電子式ハードウエア、コンピュータソフトウェアまたはこれら双方の組み合わせとして実現されてよい。ハードウエアとソフトウェアのこの交換可能性を明瞭に示すために、さまざまなコンポーネント、ブロック、モジュール、回路およびステップを図示して、一般にその機能性という観点から上で解説した。このような機能性がハードウエアとして実現されるかソフトウェアとして実現されるかは、特定の応用分野と全体的なシステムに課せられる設計上の制約によって決まる。当業者は、特定の応用分野毎に上記の機能性をさまざまな仕方で実現するが、このような実現に関する判断は、本発明の範囲から逸脱するものと解釈すべきではない。
本書に開示する実施形態を参照して説明したさまざまな解説的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラミングゲートアレイ信号(FPGA)もしくは他のプログラマブル論理デバイス、離散ゲートもしくはトランジスタロジック、離散ハードウエアコンポーネント、または本書に記載する機能を実行するように設計されたこれらの何らかの組み合わせによって実現または実施される。汎用プロセッサは、マイクロプロセッサであるが、代替例では、何らかの従来型プロセッサや、コントローラや、マイクロコントローラや、状態機械である。プロセッサはまた、コンピュータデバイスの組み合わせ、例えば、DSPとマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアと一緒になった1つ以上のマイクロプロセッサまたはこのような他の何らかの構造体の組み合わせとして実現される。
本書に開示する実施形態に関連して説明した方法やアルゴリズムのステップは、直接にハードウエアとして、プロセッサによって実行されるソフトウェアモジュールとして、または双方の組み合わせとして実現される。ソフトウェアモジュールは、RAMメモリー、フラッシュメモリー、ROMメモリー、EPROMメモリー、EEPROMメモリー、レジスタ、ハードディスク、取り外し式ディスク、CD−ROMまたは技術上周知の他の何らかの形態の記憶媒体に常駐している。例示の記憶媒体はプロセッサに連結され、これで、プロセッサが記憶媒体から情報を読み取ったりこれに書き込んだりすることが可能となるようにしている。代替例では、記憶媒体はプロセッサと一体になっている。プロセッサと記憶媒体はASIC中に常駐している。ASICはユーザ端末に常駐している。代替例では、プロセッサと記憶媒体は、ユーザ端末中で別個のコンポーネントとして常駐している。
本書に開示する方法は、説明した方法を達成するステップや動作を1つ以上含んでいる。これらの方法のステップおよび/または動作は、本発明の範囲から逸脱することなく互いと交換可能である。言い換えれば、本実施形態を正しく動作させるためにステップや動作の特定の順序が必要でない限り、特定のステップおよび/動作の順序および/または使用は、本発明の範囲から逸脱することなく修正可能である。
本発明の具体的な実施形態と応用分野を図示して説明したが、本発明は、本書に開示する構成とコンポーネントにだけ限られるものではないことを理解すべきである。当業者には明らかなさまざまな修正、変化、変更を、本発明の精神と範囲から逸脱することなく本書に開示する本発明の方法とシステムの配置、動作および詳細に施すことが可能である。
本発明は、埋め込みシステムに適用することができる。
本発明の範例的実施例が、以下の説明とそれに付された請求項を添付図面に絡め参酌することで、より十全に明らかとなろう。それらの図面は、範例的実施例のみを図化しており、従って、発明の範囲の限定と捉えるべきではないとの理解の下、本発明の範例的実施例を更に特定し詳述する説明を、次に、添付図面を用いて行うが、その図面中:
構成可能ソフトウェアライブラリを提供するシステムの一実施形態を示すブロック図である。 ユーザ構成可能なソフトウェアライブラリを提供するシステムの代替実施形態を示すブロック図である。 コードセグメントをベースソフトウェアライブラリから除去して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。 特定の言語で書かれたプログラミング上のコメントをベースソフトウェアライブラリから除去して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。 定数の定義をベースソフトウェアライブラリ中に挿入して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。 外部ライブラリを初期化するコールをベースソフトウェアライブラリ中に挿入して修正されたソフトウェアライブラリを生成する、ユーザ構成可能ソフトウェアライブラリを提供するシステムのブロック図である。 構成可能ソフトウェアライブラリを提供する方法の一実施形態を図示するフローチャートである。 一般的にコンピュータシステムで利用される主要なハードウエアコンポーネントを図示するブロック図である。

Claims (15)

  1. ユーザにより構成可能なソフトウェアライブラリをコンピュータシステムにより提供する方法であって、
    ベースソフトウェアライブラリは、ソースコードにより記述される複数のコードセグメントからなり、それぞれのコードセグメントは、プログラミングコード又はコメントであり、コメントは、1又は複数の言語によって記載されたコメントを含み、
    前記ベースソフトウェアライブラリの少なくとも1つの構成可能なセッティングの目標セッティングをユーザ入力として受信目標セッティングには、所望の目標言語のコメントの指定が含まれ、
    前記目標セッティングに基づいて、前記ベースソフトウェアライブラリに含まれるコメントのうち、前記ベースソフトウェアライブラリに追加されるかまたはこれから除去されるコードセグメントを特
    コンピュータプログラムを利用して自動的に前記目標セッティングにしたがって前記ベースソフトウェアライブラリを変更することによって修正済みソフトウェアライブラリを作成することであって
    前記目標セッティングにしたがって、前記ベースソフトウェアライブラリから前記特定されたコードセグメントを除去して、前記修正済みソフトウェアライブラリを作成するように構成されること、及び、前記目標セッティングにしたがって、前記ベースソフトウェアライブラリに対して前記特定されたコードセグメントを追加して、前記修正済みソフトウェアライブラリを作成するように構成されること、のうちの少なくとも1つ
    を含む方法。
  2. 前記ベースソフトウェアライブラリの構成可能なセッティングを決定することをさらに含む、請求項1に記載の方法。
  3. 前記ベースソフトウェアライブラリがソフトウェアライブラリから導出される、請求項1に記載の方法。
  4. 前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、埋め込み式デバイス用のプログラミングコードを含む、請求項1に記載の方法。
  5. 前記追加されたコードセグメントが、外部ソフトウェアライブラリに対するコールを含む、請求項1に記載の方法。
  6. 前記追加されたコードセグメントが、前記修正済みソフトウェアライブラリ中で用いられる定数を定義する、請求項1に記載の方法。
  7. ユーザにより構成可能ソフトウェアライブラリを提供する方法を実施するように構成されたコンピュータシステムであって、
    プロセッサと、
    前記プロセッサと電子的通信状態にあるメモリーと、
    前記メモリーに記憶される命令と、
    を備え、
    前記命令を実行すると、
    ベースソフトウェアライブラリは、ソースコードにより記述される複数のコードセグメントからなり、それぞれのコードセグメントは、プログラミングコード又はコメントであり、コメントは、1又は複数の言語によって記載されたコメントを含み、
    前記ベースソフトウェアライブラリの少なくとも1つの構成可能なセッティングの目標セッティングをユーザ入力として受信目標セッティングには、所望の目標言語のコメントの指定が含まれ、
    前記目標セッティングに基づいて、前記ベースソフトウェアライブラリに含まれるコメントのうち、前記ベースソフトウェアライブラリに追加されるかまたはこれから除去されるコードセグメントを特
    コンピュータプログラムを利用して自動的に前記目標セッティングにしたがって前記ベースソフトウェアライブラリを変更することによって修正済みソフトウェアライブラリを作成することであって
    前記目標セッティングにしたがって、前記ベースソフトウェアライブラリから前記特定されたコードセグメントを除去して、前記修正済みソフトウェアライブラリを作成するように構成されること、及び、前記目標セッティングにしたがって、前記ベースソフトウェアライブラリに対して前記特定されたコードセグメントを追加して、前記修正済みソフトウェアライブラリを作成するように構成されること、のうちの少なくとも1つ
    を含む方法を実施することが可能である、コンピュータシステム。
  8. 前記ベースソフトウェアライブラリがソフトウェアライブラリから導出される、請求項7に記載のシステム。
  9. 前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、埋め込み式デバイス用のプログラミングコードを含む、請求項7に記載のシステム。
  10. 前記追加されたコードセグメントが、外部ソフトウェアライブラリに対するコールを含む、請求項7に記載のシステム。
  11. 前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、ソースコードを含む、請求項7に記載のシステム。
  12. ユーザにより構成可能なソフトウェアライブラリを提供する方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記方法が、
    ベースソフトウェアライブラリは、ソースコードにより記述される複数のコードセグメントからなり、それぞれのコードセグメントは、プログラミングコード又はコメントであり、コメントは、1又は複数の言語によって記載されたコメントを含み、
    前記ベースソフトウェアライブラリの少なくとも1つの構成可能なセッティングの目標セッティングをユーザ入力として受信目標セッティングには、所望の目標言語のコメントの指定が含まれ、
    前記目標セッティングに基づいて、前記ベースソフトウェアライブラリに含まれるコメントのうち、前記ベースソフトウェアライブラリに追加されるかまたはこれから除去されるコードセグメントを特
    コンピュータプログラムを利用して自動的に前記目標セッティングにしたがって前記ベースソフトウェアライブラリを変更することによって修正済みソフトウェアライブラリを作成することであって
    前記目標セッティングにしたがって、前記ベースソフトウェアライブラリから前記特定されたコードセグメントを除去して、前記修正済みソフトウェアライブラリを作成するように構成されること、及び、前記目標セッティングにしたがって、前記ベースソフトウェアライブラリに対して前記特定されたコードセグメントを追加して、前記修正済みソフトウェアライブラリを作成するように構成されること、のうちの少なくとも1つ
    を含む、コンピュータ読み取り可能な記録媒体。
  13. 前記ベースソフトウェアライブラリがソフトウェアライブラリから導出される、請求項12に記載のコンピュータ読み取り可能な記録媒体。
  14. 前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、埋め込み式デバイス用のプログラミングコードを含む、請求項12に記載のコンピュータ読み取り可能な記録媒体。
  15. 前記ベースソフトウェアライブラリと修正済みソフトウェアライブラリが、ソースコードを含む、請求項12に記載のコンピュータ読み取り可能な記録媒体。
JP2007525089A 2005-12-29 2006-02-03 ユーザ構成可能なソフトウェアライブラリを提供するシステムと方法 Expired - Fee Related JP5002454B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/321,712 US8789016B2 (en) 2005-12-29 2005-12-29 Systems and methods for providing user configurable software libraries
US11/321,712 2005-12-29
PCT/JP2006/302287 WO2007074536A1 (en) 2005-12-29 2006-02-03 User configurable software libraries

Publications (2)

Publication Number Publication Date
JP2008522249A JP2008522249A (ja) 2008-06-26
JP5002454B2 true JP5002454B2 (ja) 2012-08-15

Family

ID=36944678

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007525089A Expired - Fee Related JP5002454B2 (ja) 2005-12-29 2006-02-03 ユーザ構成可能なソフトウェアライブラリを提供するシステムと方法

Country Status (7)

Country Link
US (1) US8789016B2 (ja)
EP (1) EP1966685A1 (ja)
JP (1) JP5002454B2 (ja)
KR (1) KR100953239B1 (ja)
CN (1) CN101120312A (ja)
RU (1) RU2395836C2 (ja)
WO (1) WO2007074536A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006015255A1 (de) * 2006-04-01 2007-10-04 National Rejectors, Inc. Gmbh Bezahlsystem für einen Verkaufsautomaten
US20090249492A1 (en) * 2006-09-21 2009-10-01 Hans Martin Boesgaard Sorensen Fabrication of computer executable program files from source code
KR101470319B1 (ko) * 2008-02-15 2014-12-08 삼성전자주식회사 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치
JP5011221B2 (ja) * 2008-06-30 2012-08-29 株式会社日立製作所 コントローラ開発ツールとそれを利用して開発したモータドライブシステムを有する機器
JP5500968B2 (ja) * 2009-12-16 2014-05-21 シャープ株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
EP2556451A4 (en) * 2010-04-06 2016-09-07 Webtrends Inc METHOD AND SYSTEM FOR DEFINING AND LOADING SEGMENTS
CN101853165A (zh) * 2010-06-01 2010-10-06 杭州和利时自动化有限公司 一种用于组态软件中库的管理方法及系统
US8863082B2 (en) * 2011-09-07 2014-10-14 Microsoft Corporation Transformational context-aware data source management
US9613112B2 (en) 2013-03-15 2017-04-04 Miosoft Corporation Structuring data
US9665403B2 (en) * 2013-03-15 2017-05-30 Miosoft Corporation Executing algorithms in parallel
JP6176020B2 (ja) 2013-09-17 2017-08-09 株式会社リコー 機器、情報処理システム、情報処理方法、情報処理プログラム、および情報処理プログラムが記憶された記憶媒体
US9304766B2 (en) * 2014-02-21 2016-04-05 Red Hat Israel, Ltd. Determining character sequence digest
US9703551B2 (en) * 2014-04-28 2017-07-11 Ca, Inc. Modifying mobile application binaries to call external libraries
CN107526742B (zh) * 2016-06-21 2021-10-08 伊姆西Ip控股有限责任公司 用于处理多语言文本的方法和设备
CN106412080A (zh) * 2016-10-21 2017-02-15 李丽亚 一种基于网络服务实现软件本地化和国际化的方法
US20180275957A1 (en) * 2017-03-27 2018-09-27 Ca, Inc. Assistive technology for code generation using voice and virtual reality
CN109710230B (zh) * 2018-12-12 2024-09-06 平安科技(深圳)有限公司 一种利用静态库实现目标程序生成方法及装置
US20210318865A1 (en) 2020-04-09 2021-10-14 Capital One Services, Llc Methods and arrangements to process comments
US11163559B1 (en) * 2020-12-28 2021-11-02 Temper Systems, Inc. Cross-publishing software libraries to module repositories

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854932A (en) * 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
US6401114B1 (en) * 1997-05-01 2002-06-04 Stratum Technologies Corporation Method and apparatus for dynamic programming across a computer network
JP2000020525A (ja) * 1998-07-07 2000-01-21 Toshiba Corp プログラム注釈機械翻訳装置とこの装置を動作させるプログラムを記録した記録媒体
US6202205B1 (en) * 1998-07-21 2001-03-13 Hewlett-Packard Company System and method for profile-based, on-the-fly optimization of library code
US7143067B1 (en) * 1999-02-09 2006-11-28 Lenovo (Singapore) Pte. Ltd. System and method for installing personal computer software
JP2001142600A (ja) * 1999-11-15 2001-05-25 Canon Inc 多国語表示切替装置およびその切替方法
US6385722B1 (en) * 2000-01-27 2002-05-07 Sun Microsystems, Inc. Method, system, and article of manufacture for limiting access to program files in a shared library file
US20020184615A1 (en) * 2001-04-25 2002-12-05 Sumner William Earl System and method for selectively and automatically modifying the source code of a computer program
US20030009750A1 (en) * 2001-07-09 2003-01-09 Robert Hundt Optimizing an executable computer program having linkage functions
US20030101432A1 (en) * 2001-10-12 2003-05-29 Allison David S. Method and apparatus for unifying the semantics of functions and classes in a programming language
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions
US7484205B2 (en) * 2002-12-12 2009-01-27 Microsoft Corporation Preprocessor-based source code instrumentation
US7516442B2 (en) * 2003-10-23 2009-04-07 Microsoft Corporation Resource manifest
US20050120340A1 (en) * 2003-12-01 2005-06-02 Skazinski Joseph G. Apparatus, system, and method for automated generation of embedded systems software
JP2005284742A (ja) * 2004-03-30 2005-10-13 Advanced Telecommunication Research Institute International メッセージ出力装置及びコンピュータプログラム
US20060020928A1 (en) * 2004-07-22 2006-01-26 International Business Machines Corporation Translation of comments in code

Also Published As

Publication number Publication date
JP2008522249A (ja) 2008-06-26
US8789016B2 (en) 2014-07-22
US20070157171A1 (en) 2007-07-05
RU2395836C2 (ru) 2010-07-27
EP1966685A1 (en) 2008-09-10
WO2007074536A1 (en) 2007-07-05
KR20080078018A (ko) 2008-08-26
KR100953239B1 (ko) 2010-04-16
CN101120312A (zh) 2008-02-06
RU2008126233A (ru) 2010-01-10

Similar Documents

Publication Publication Date Title
JP5002454B2 (ja) ユーザ構成可能なソフトウェアライブラリを提供するシステムと方法
EP3338179B1 (en) Graphical representation of data in a program code editor
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
US8700998B2 (en) Foreign language translation tool
US7631124B2 (en) Application-specific mapping of input device elements
KR100513093B1 (ko) 씨.엠.엘.투를 기반으로한 리눅스 커널, 응용 소프트웨어패키지의 통합 설정과 파일목록 생성방법
US8762967B2 (en) Program compiler, program installer, and program install method
Yadavalli et al. Raising binaries to llvm ir with mctoll (wip paper)
Smithson et al. Binary rewriting without relocation information
US6785872B2 (en) Algorithm-to-hardware system and method for creating a digital circuit
US20040088690A1 (en) Method for accelerating a computer application by recompilation and hardware customization
US9417871B2 (en) Automatic generation of certificate of origin (COO) for software systems
JP2006294041A (ja) 移動通信機器におけるアプリケーションをアップデートするためのシステム、およびその方法
JP2010231477A (ja) プログラム及びプログラム実行装置
US8661425B1 (en) Method, apparatus, and computer-readable medium for storing data associated with a firmware program
JP5256247B2 (ja) ソフトウェア有効期限変更方法及び装置
JP2006286003A (ja) 機能を追加するように、移動通信機器にてアプリケーションを拡張するシステム、およびその方法
US20040088719A1 (en) Intercepting calls to document production functions
US8429638B2 (en) Instruction exploitation through loader late fix-up
US20230195666A1 (en) Providing Platform Management Profiles to Platform Management Drivers on Electronic Devices
JP2007114934A (ja) コンパイラシステム
US9298426B2 (en) Compiler generation of thunking code
CN112860279A (zh) 生成应用安装包的方法、装置、设备和介质
JP2019121293A (ja) ソースコード生成装置、ソースコード生成プログラム、ドキュメント生成システムおよびドキュメント生成方法
JP2005242879A (ja) 性能情報取得装置および方法ならびに制御プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101022

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110214

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110217

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20120111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120327

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120521

R150 Certificate of patent or registration of utility model

Ref document number: 5002454

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150525

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees