(57)【要約】【課題】ＶｘＷｏｒｋｓの動作環境で動作するようにオープンソースアプリケーションを移植する改良された方法を提供し、その書き換えの必要なコード量を大幅に削減する。【解決手段】  本発明にかかるソフトウェア移植方法は、第１の動作環境で動作できる一組のコードを受け取ることを含む。この方法は、その一組のコードをクラスに変換することをさらに含む。この方法は、第２の動作環境で動作できる変換された一組のコードを提供することをさらに含む。【選択図】  図４
2004280794.tif 000002
【特許請求の範囲】
【請求項１】
第１の動作環境で動作できる一組のコードを受け取ること（４１０）、
前記一組のコードをクラスに変換すること（４２０）、
第２の動作環境で動作できる前記変換された一組のコードを提供すること（４３０）と
を含むソフトウェア移植方法。
【請求項２】
前記一組のコードは、アプリケーション、プロセスおよびタスクの１つからなる
請求項１に記載のソフトウェア移植方法。
【請求項３】
前記第１の動作環境は、
Ｕｎｉｘの動作環境
を含む
請求項１に記載のソフトウェア移植方法。
【請求項４】
前記第２の動作環境は、
ＶｘＷｏｒｋｓの動作環境
を含む
請求項１に記載のソフトウェア移植方法。
【請求項５】
前記一組のコードは、
共有されない名前空間の環境用に記述された一組のオープンソースソフトウェアコード
を含む
請求項１に記載のソフトウェア移植方法。
【請求項６】
前記クラスは、
オブジェクト指向構成体
を含む
請求項１に記載のソフトウェア移植方法。
【請求項７】
前記オブジェクト指向構成体は、
Ｃ＋＋プログラミング言語構成体
を含む
請求項６に記載のソフトウェア移植方法。
【請求項８】
命令を有するコンピュータ可読媒体であって、
該命令は、コンピュータシステムによって実行されると、第１の動作環境（４１０）で動作できるアプリケーションを第２の動作環境（４３０）で動作できるアプリケーションに変換するプロセスを実施するものであり、
該プロセスは、
前記アプリケーションをクラスにカプセル化すること（４２０）
を含む
コンピュータ可読媒体。
【請求項９】
アプリケーションをクラスにカプセル化すること（４２０）は、
変数をクラス変数に変換すること
を含む
請求項８に記載のコンピュータ可読媒体。
【請求項１０】
アプリケーションをクラスにカプセル化すること（４２０）は、
関数をクラス関数に変換すること
を含む
請求項８に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、第１の動作環境と第２の動作環境との間でのアプリケーションの移植に関し、詳細には、ＶｘＷｏｒｋｓの動作環境におけるオペレーションへのオープンソースコードの移植に関する。
【背景技術】
【０００２】
さまざまなオペレーティングシステムは、それらのマルチタスクの実施の点で相違する。
このような相違により、あるオペレーティングシステムから別のオペレーティングシステムにアプリケーションを移す場合に、アプリケーションの書き換えが必要となることがある。
このような相違の１つとして、変数としてのタスク名前空間が、タスクにプライベートであるか、あるいはオペレーティングシステムのすべてのアクティブなタスク間で共有されるかということがある。
【０００３】
図１を参照して、従来技術によるマルチタスクを提供するＵｎｉｘ（登録商標）オペレーティングシステム１１０のブロック図を示す。
図１に示すように、オープンソースアプリケーションの複数のインスタンス１２０、１３０、タスク、プロセスなどが、互いに同時に実行中であることがある。
アプリケーションの各インスタンス１２０、１３０は、プライベート名前空間１４０、１５０を有する。
したがって、変数および／または関数の最も高い適用範囲は、アプリケーション、タスク、またはプロセスのレベルに限定される。
【０００４】
Ｕｎｉｘでは、各アプリケーションに対して、名前空間が作成される。
名前空間は、他のアプリケーションの名前空間とは別になっている。
その結果、アプリケーションの各インスタンスは、グローバル変数の各自の複製を有する。
特定のグローバル変数は、そのグローバル変数を宣言したプロセスのみが見ることができる。
アプリケーションは、別のアプリケーションの名前空間の読み出しも書き込みも許可されない。
【０００５】
したがって、複数のユーザは、各自、アプリケーションのインスタンスを同時に実行することができる。
アプリケーションの各インスタンスは、アプリケーションの特定のインスタンスと関連付けられた名前空間を有する。
したがって、例えば、各ユーザは、それらの各入力に対応した結果を受け取る。
【０００６】
次に、図２を参照して、従来技術によるマルチタスクを提供するＶｘＷｏｒｋｓオペレーティングシステム２１０のブロック図を示す。
図２に示すように、オープンソースアプリケーションの複数のインスタンス２２０、２３０、タスク、プロセスなどが、互いに同時に実行中であることがある。
アプリケーションの各インスタンス２２０、２３０は、共通の名前空間２４０を共有する。
したがって、変数の最も高い適用範囲は、オペレーティングシステム全体に及ぶことができる。
その結果、Ｕｎｉｘ用にオープンソースで記述されたアプリケーションは、単にコンパイルしてＶｘＷｏｒｋｓで動作させただけでは、適切に実行されないことになる。
【０００７】
ＶｘＷｏｒｋｓでは、システムがたとえ同じタスクの複製（例えば、テルネット（telnet）プロトコル、セキュアシェルプロトコル（secure shell protocol）などの２つの複製）であっても、システム上で実行中のすべてのアプリケーション、タスク、プロセスなどが、グローバル変数、グローバル関数などを見ることができる。
変数および／または関数の複数の複製は、作成されない。
したがって、アプリケーションの複数のインスタンスは、すべて、同じ変数および／または関数を使用し、したがって、同じ名前空間を使用する。
名前空間を提供するメモリ空間は、各ユーザの上書きにより書き換えられる。
【０００８】
したがって、変更されていないオープンソースコードの複数のインスタンスは、ＶｘＷｏｒｋｓで適切に実行されない。
例えば、各ユーザは、各ユーザの入力に対する結果と異なる結果であっても、最も近時に入力された入力に対応する結果を受け取ることになる。
【０００９】
図３を参照して、従来技術による、オープンソースアプリケーションをＶｘＷｏｒｋｓの動作環境に移植する方法の流れ図を示す。
図３に示すように、この方法は、ステップ３１０でオープンソースアプリケーションを受け取ることを含む。
このオープンソースアプリケーションは、ステップ３２０で、部分的または全面的に書き換えられる。
その後、アプリケーションは、ステップ３３０で、ＶｘＷｏｒｋｓオペレーティングシステム環境で動作可能となる。
【００１０】
ＵｎｉｘオペレーティングシステムからＶｘＷｏｒｋｓオペレーティングシステムへのコードの移植には、問題がある。
例えばＵｎｉｘからＶｘＷｏｒｋｓへといった異なる動作環境でプログラムを実行するために、プログラムを変更する従来技術の方法は、アプリケーションのソフトウェアコードを全面的または部分的に書き換える必要がある点で不利である。
その結果、アプリケーションのほとんどは、ＶｘＷｏｒｋｓに適合するように書き換えられなければならない。
ＵｎｉｘからＶｘＷｏｒｋｓに移植されるすべてのコードを書き換えなければならない結果、大規模な変更が行われる。
したがって、再コード化に多数の延べ労働時間が費やされる。
また、再コード化の不備によって、ある一定の機能の障害も発生し得る。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、ＶｘＷｏｒｋｓの動作環境で動作するようにオープンソースアプリケーションを移植する改良された方法に対する要求がある。
この方法は、書き換えの必要なコード量を大幅に削減すべきである。
【課題を解決するための手段】
【００１２】
本発明の実施形態は、ソフトウェア移植方法を提供する。
一実施形態では、このソフトウェア移植方法は、第１の動作環境で動作できる一組のコードを受け取ることを含む。
この方法は、その一組のコードをクラスに変換することをさらに含む。
この方法は、第２の動作環境で動作できる変換された一組のコードを提供することをさらに含む。
【００１３】
本発明を添付図面の図の例によって示すが、この例は、本発明を限定するものではない。
図面において、同じ参照符号は、同じ要素を示す。
【発明を実施するための最良の形態】
【００１４】
次に、本発明の実施形態を詳細に参照する。
この実施形態の例は、添付図面に示されている。
本発明は、これらの実施形態と共に説明されるが、これらの実施形態は、本発明を当該実施形態に限定することを意図したものではないことが理解される。
それとは反対に、本発明は、添付の特許請求の範囲によって定義される本発明の精神および範囲に含まれ得る代替的なもの、変更されたもの、および均等のものをカバーするように意図される。
さらに、本発明の以下の詳細な説明では、本発明の十分な理解を提供するために、多数の具体的な詳細が述べられる。
しかしながら、本発明は、これらの具体的な詳細がなくても実施可能であることが理解される。
それ以外の例では、本発明の態様を不必要に分かりにくくしないように、周知の方法、手順、コンポーネント、および回路は、詳細に説明されていない。
【００１５】
次に、図４を参照して、本発明の一実施形態によるアプリケーション、タスク、プロセスなどの移植方法の流れ図を示す。
図４に示すように、この方法は、ステップ４１０で、第１のオペレーティングシステムで動作可能なアプリケーション、タスク、プロセスなどを受け取ることを含む。
一実施形態では、このアプリケーション、タスク、プロセスなどは、オープンソースコードで記述されている。
【００１６】
次に、アプリケーション、タスク、プロセスなどの変数および関数が、ステップ４２０で、クラスに変換される。
クラスとは、例えばＣ＋＋プログラミング言語構成体といったオブジェクト指向構成体である。
アプリケーション、プロセス、タスクなどが、クラスに含まれると、グローバル変数およびグローバル関数の可視性は、そのクラス内に制限される。
したがって、名前空間を共有することになったであろう（例えばパブリックであった）変数および関数は、そのクラスの名前空間を使用して、対応するアプリケーションにプライベート化されてしまう。
【００１７】
その後、アプリケーション、タスク、プロセスなどは、ステップ４３０で、第２のオペレーティングシステム環境で動作可能となる。
一実施形態では、第２の動作環境には、ＶｘＷｏｒｋｓが含まれる。
この段階で、アプリケーション、タスク、プロセスなどの各インスタンスは、クラス変数またはクラス関数のインスタンスのそれ自身の複製を有する。
したがって、特定のクラス変数または特定のクラス関数は、それを宣言したアプリケーションのみに見える。
アプリケーションは、別のアプリケーションのクラスの名前空間を読み出すことも、その名前空間に書き込むことも許可されない。
例えば、複数のユーザは、それぞれ、ＶｘＷｏｒｋｓの動作環境において、アプリケーションのインスタンスを同時に実行することができる。
各ユーザは、自身のそれぞれの入力に対応する結果を受け取ることになる。
【００１８】
本発明の実施形態は、Ｕｎｉｘのオープンソースで記述されたアプリケーションを含めるように、ＶｘＷｏｒｋｓで動作するアプリケーションの数を有利に増加させる。
また、本発明の実施形態は、アプリケーションコードに対する変更の程度も削減する。
本発明の実施形態は、ソフトウェア改訂時間も削減する。
したがって、例えば参照の変更といった変更が、対応するオープンソースに行われる場合、このような改訂は、より簡単に組み込まれる。
【００１９】
次に、図５Ａおよび図５Ｂを参照して、本発明の一実施形態により、ＶｘＷｏｒｋｓの動作環境で動作するように移植された代表的なオープンソースコードを示す。
図５Ａに示すように、第１の数（例えば変数）および第２の数がユーザによって入力される代表的なオープンソースコードを示す。
これらの第１の数および第２の数は、加算され、結果（例えば関数）として返される。
フォーク（）（fork()）システムコールは、プロセスの各インスタンスを生成するために利用される。
変数および関数は、共有されない名前空間によって提供される。
【００２０】
図５Ｂに示すように、代表的なＵｎｉｘコードが、本発明の一実施形態により、ＶｘＷｏｒｋｓの動作環境で動作できるように移植されている。
第１の数および第２の数は、ユーザによって入力される。
これらの第１の数および第２の数は、加算され、結果として返される。
タスク生成（）（taskspawn()）システムコールは、プロセスの各インスタンスを生成するために利用される。
通常、変数および関数は、共有された名前空間によって提供される。
【００２１】
共有されない名前空間のオペレーティングシステムからＶｘＷｏｒｋｓの共有された名前空間へ本実施形態によってコードを移植することは、共有されない名前空間のオペレーティングシステムのコードをクラスにカプセル化することを含む。
プロセスの各インスタンスは、クラスインスタンスを作成する。
このクラスインスタンスは、オブジェクトと呼ばれる。
アプリケーションの各インスタンスの各オブジェクトは、変数および関数のそれ自身の複製を有する。
クラスの名前空間は、複数のアプリケーション、タスク、プロセスなどの間では見ることができない。
したがって、複数のアプリケーションは、変数間の混同を起こすことなく、並列に実行することができる。
アプリケーションの複数のインスタンスが起動されると、各インスタンスの個別の結果が返される。
【００２２】
次に、図６を参照して、本発明の一実施形態による代表的な通信ネットワークのブロック図を示す。
図６に示すように、この通信ネットワークは、複数のユーザデバイス、通信チャネル、およびＶｘＷｏｒｋｓサーバを備える。
複数のユーザデバイスは、通信チャネルを介してＶｘＷｏｒｋｓサーバに通信接続される。
【００２３】
一実施形態では、ユーザは、テルネットプロトコルを利用してＶｘＷｏｒｋｓサーバに接続することができる。
テルネットは、パスワードによるログインを提供する。
しかしながら、テルネット接続は安全ではない。
ネットワークをのぞく者が、回線を行き交う情報を見ることができる。
【００２４】
１つの解決法は、仮想プライベートネットワーク接続（ＶＰＮ）を利用して、安全なトランザクションを提供することである。
ＶＰＮクライアントアプリケーションは、ユーザデバイス（例えば、パーソナルコンピュータ）で実行され、ＶＰＮサーバアプリケーションは、サーバで実行される。
ＶＰＮクライアントアプリケーションおよびＶＰＮサーバアプリケーションは、ＶＰＮプロトコルに従って互いに通信する。
ＶＰＮプロトコルは、インターネットプロトコルである。
しかしながら、ＶＰＮは、多くのセットアップなどを必要とする点で、比較的重いアプリケーションである。
【００２５】
あるいは、セキュアシェル（ＳＳＨ）を使用することができる。
セキュアシェルは、比較的軽量のアプリケーションである。
ＳＳＨクライアントアプリケーションは、ユーザデバイス（例えば、パーソナルコンピュータ）で実行され、ＳＳＨサーバアプリケーションは、サーバで実行される。
ＳＳＨクライアントアプリケーションおよびＳＳＨサーバアプリケーションは、セキュアシェルプロトコルに従って互いに通信する。
セキュアシェルプロトコルは、セッションプロトコルである。
したがって、ＳＳＨは、セッション単位のセキュリティ機能である。
この場合、テルネットプロトコルは、セキュアシェルプロトコル上で実行される。
【００２６】
ＯｐｅｎＳＳＨは、Ｕｎｉｘの動作環境によって提供されるがＶｘＷｏｒｋｓの動作環境によってはサポートされない機能を利用するオープンソースコードで記述されたＳＳＨプロトコルの一実施態様である。
ＶｘＷｏｒｋｓは、Ｕｎｉｘと比較すると、原始的なオペレーティングシステムである。
ＶｘＷｏｒｋｓは、できるだけ軽量になるように設計された。
したがって、ＶｘＷｏｒｋｓは、Ｕｎｉｘのような完全なオペレーティングシステムのすべての機能を実施していない。
【００２７】
ＶｘＷｏｒｋｓは、多くの点でＵｎｉｘオペレーティングシステムと異なる。
第１に、ＶｘＷｏｒｋｓには、さまざまなプログラム間でのメモリ保護が存在しない。
第２に、すべてのグローバル変数は、システムで実行中のすべてのタスクが見ることができる。
Ｕｎｉｘでは、グローバル変数は、所与のグローバル変数を宣言するプロセスのみが見ることができる。
【００２８】
しかしながら、ＯｐｅｎＳＳＨは、ＯｐｅｎＳＳＨのソフトウェアコードを大幅に書き換える必要なく、ＶｘＷｏｒｋｓオペレーティングシステムで動作できるように移植することができる。
本発明の一実施形態では、ＯｐｅｎＳＳＨコードは、クラスに変換される。
その結果、移植されたＯｐｅｎＳＳＨプロトコルの複数のインスタンスをＶｘＷｏｒｋｓによって提供することができる。
【００２９】
次に、図７を参照して、本発明の実施形態を実行する代表的なコンピュータシステムを示す。
図７に示すように、この代表的なコンピュータシステムは、情報および命令を通信するアドレス／データバス７２０を含む。
情報および命令を処理する１つまたは複数のプロセッサ７３０が、バス７２０に接続される。
また、プロセッサ（または複数のプロセッサ）７３０の情報および命令を記憶するメモリユニット７４０も、バス７２０に接続される。
メモリユニット７４０としては、揮発性メモリ（例えば、ランダムアクセスメモリ、スタティックＲＡＭ、ダイナミックＲＡＭなど）、不揮発性メモリ（例えば、読み出し専用メモリ、プログラマブルＲＯＭ、フラッシュメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭなど）、大容量データ記憶装置（例えば、ハードディスク、光ディスク、フロッピィディスクなど）などがある。
オプションとして、コンピュータシステム７１０は、バス７２０に接続された周辺デバイス７５０（例えば、ディスプレイ、キーボード、ポインティングデバイス、スピーカなど）を含むことができる。
【００３０】
本発明のある一定のプロセスおよびステップは、例えばメモリユニット７４０といったコンピュータ可読媒体に存在する一連の命令（例えばコード）として実現され、プロセッサ７２０によって実行される。
実行されると、それらの命令により、プロセッサ７２０は、第１の動作環境で動作できるアプリケーション、プロセスなどを、第２の動作環境で動作できるコードに移植する。
【００３１】
一実施形態では、第１の動作環境で動作できるアプリケーション、プロセスなどは、例えばメモリユニット７４０といったコンピュータ可読媒体からバス７２０を通ってプロセッサ７３０に通信される。
一実施形態では、アプリケーション、プロセスなどは、Ｕｎｉｘの動作環境で動作できるオープンソースコードで記述されている。
オープンソースのアプリケーション、プロセスなどは、ＶｘＷｏｒｋｓの動作環境で動作するように、本発明によって移植される。
【００３２】
プロセッサは、一連の命令に応答して、アプリケーション、プロセスなどのコードをクラスにカプセル化する。
クラスは、オブジェクト指向プログラミング構成体である。
一実施形態では、オブジェクト指向プログラミング構成体は、Ｃ＋＋構成体である。
その結果、アプリケーション、プロセスなどの共有されない名前空間は、クラスの名前空間に変換される。
クラスの名前空間は、そのクラスのインスタンスに限定され、異なるタスク、クラス、インスタンスなどの間で共有されない。
移植コードは、その後、プロセッサ７３０からバス７２０により、例えばメモリユニット７４０といったコンピュータ可読媒体に伝送することができる。
コンピュータ可読媒体は、その後のＶｘＷｏｒｋｓの動作環境へのロードおよび／またはその動作環境での使用に備えて、クラスにカプセル化された移植コードを記憶する。
【００３３】
本発明の特定の実施形態の上記説明は、例示および説明の目的で示されたものである。
上記説明は、包括的であることを意図するものではなく、また、開示した正確な形に本発明を限定することを意図するものではない。
多くの変更および変形が、上記教示内容に照らして可能であることは明らかである。
実施形態は、本発明の原理およびその実際の適用を最もよく説明するものであって、それによって、他の当業者が、本発明と、意図した特定の使用に適するようにさまざまな変更を有するさまざまな実施形態とを、最大に利用できるようにするために選択され、説明されたものである。
本発明の範囲は、添付した特許請求の範囲およびその均等物によって定義されることが意図されている。
【図面の簡単な説明】
【００３４】
【図１】従来技術によるマルチタスクを提供するＵｎｉｘオペレーティングシステム１１０のブロック図である。
【図２】従来技術によるマルチタスクを提供するＶｘＷｏｒｋｓオペレーティングシステム２１０のブロック図である。
【図３】従来技術によるＶｘＷｏｒｋｓの動作環境にオープンソースアプリケーションを移植する方法の流れ図である。
【図４】本発明の一実施形態による、アプリケーション、タスク、プロセスなどの移植方法の流れ図である。
【図５Ａ】本発明の一実施形態により、ＶｘＷｏｒｋｓの動作環境で動作するように移植された代表的なオープンソースコードを示す図である。
【図５Ｂ】本発明の一実施形態により、ＶｘＷｏｒｋｓの動作環境で動作するように移植された代表的なオープンソースコードを示す図である。
【図６】本発明の一実施形態による代表的な通信ネットワークのブロック図である。
【図７】本発明の実施形態を実行する代表的なコンピュータシステムを示す図である。
【符号の説明】
【００３５】
７１０・・・コンピュータシステム、
７２０・・・バス、
７３０・・・プロセッサ、
７４０・・・メモリユニット、
７５０・・・周辺デバイス、
【図１】
2004280794.tif 000003
【図２】
2004280794.tif 000004
【図３】
2004280794.tif 000005
【図４】
2004280794.tif 000006
【図５Ａ】
2004280794.tif 000007
【図５Ｂ】
2004280794.tif 000008
【図６】
2004280794.tif 000009
【図７】
2004280794.tif 000010