(57)【要約】【目的】異なるプラットフォーム間でプログラムの移植を行おうとする際に、プログラムの移植が可能かどうか、又もし不可能な場合にはどのＡＰＩ関数がネックになっているのかを自動的に判定することができるプログラム移植支援システムを提供すること。【構成】コンピュータを用いたソフトウェア開発において、特に異なるプラットフォーム間でのプログラムの移植を支援するためのシステムであって、ポーティング情報データベースと、当該データベースにアクセスしてＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）毎に移植の可能性を判定するＡＰＩ移植情報検索手段とを備え、それとは別に移植対象となるプログラムのソース・  コードを入力とし、当該ソースコードから使用されているＡＰＩを抽出する使用ＡＰＩ検出手段とを備え、本手段により抽出される各ＡＰＩに対して上記ＡＰＩ移植情報検索手段とを組み合わせ、その結果を表示する修正情報表示手段とを有する。【選択図】      図１
2004246690.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いたソフトウェア開発において、特に異なるプラットフォーム間でのプログラムの移植を支援するためのシステムであって、ポーティング情報データベースと、当該データベースにアクセスしてＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）毎に移植の可能性を判定するＡＰＩ移植情報検索手段とを備え、それとは別に移植対象となるプログラムのソース・  コードを入力とし、当該ソースコードから使用されているＡＰＩを抽出する使用ＡＰＩ検出手段とを備え、本手段により抽出される各ＡＰＩに対して上記ＡＰＩ移植情報検索手段とを組み合わせ、その結果を表示する修正情報表示手段とを有することを特徴とするプログラム移植支援システム。
【請求項２】
更にライセンス情報データベースと、当該データベースにアクセスするライセンス条件検索手段とを備え、移植の可否情報の他に、移植後のプログラムのライセンス情報も検索・表示するように構成したことを特徴とする請求項１記載プログラム移植支援システム。
【請求項３】
ポーティング情報データベースを更新するためのポーティング情報データベース更新手段を設けたことを特徴とする請求項１記載プログラム移植支援システム。
【請求項４】
ライセンス情報データベースを更新するためのライセンス情報データベース更新手段を設けたことを特徴とする請求項２記載のプログラム移植支援システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェアの開発、特に異なるプラットフォーム（オペレーティング・  システムやシステムコール等）間でのソフトウェアの移植をサポートするシステムに関するものである。
【０００２】
【従来の技術】
世の中においては、種々の異なるコンピュータ・  プラットフォーム（ハードウェア、オペレーティング・システム、アプリケーション・プログラミング・インタフェース（以下“ＡＰＩ”と略す）等が存在する。
【０００３】
このため、或る特定のプラットフォーム用に開発されたアプリケーション・プログラムは、そのままでは他のプラットフォーム上では動作させることができないないという問題がある。例えば、図２において、プラットフォームＡ用に開発されたプログラムをプラットフォームＢに持っていった場合、プログラムはプラットフォームＡのＡＰＩ（ＡＰＩ−Ａ）に合わせて作られているため、そのままではプラットフォームＢのＡＰＩ（ＡＰＩ−Ｂ）には合わず、実行することはできない。
【０００４】
このような場合に、異なるプラットフォーム間でのプログラムの移植を容易にするために、『ＡＰＩラッパー（＝移植用ライブラリ）』の利用が考えられる。
図３において、プラットフォームＢにおいてＡＰＩ−ＡとＡＰＩ−Ｂの違いを急襲するためのライブラリ（ＡＰＩラッパー）を設け、プログラムを当該ライブラリとリンクすることにより、ソースプログラムを修正することなしに、プラットフォームＢ上で動作させることができるようになる。
【０００５】
【発明が解決しようとする課題】
上記のように『ＡＰＩラッパー』は２つの異なるプラットフォーム間のＡＰＩの違いを吸収する役割を果たす訳である。図４において、プラットフォームＡのＡＰＩ（ＡＰＩ−Ａ関数１〜ＡＰＩ−Ａ関数ｍ）は、ＡＰＩラッパーにより、プラットフォームＢのＡＰＩ（ＡＰＩ−Ｂ関数１〜ＡＰＩ−Ｂ関数ｎ）を使って、内部的に置き換えられる訳である。但し、システムの違いのために、プラットフォームＡの全てのＡＰＩをプラットフォームＢに移植できるとは限らない。
【０００６】
この場合、従来のこの種の装置においては、人間がプログラム中で使用されているＡＰＩをリストアップし、それらとＡＰＩラッパーでサポートされているＡＰＩとを比較して、当該プログラムが移植可能であるか、又、そのままでは移植可能でなければ、どこを修正すれば良いのかを判定しなければならなかった。
【０００７】
又、近年のＧＮＵプロジェクトやオープンソース運動により、Ｌｉｎｕｘ等のようにオープンなプラットフォームが現れるようになってきた。このようなプラットフォーム上にプログラムを移植する場合、ライセンス条件によっては移植されたプログラムのソース・コードの開示を義務付けられるケースもあり得るが、移植の際に使われるプログラムやライブラリのそれぞれのライセンス条件を調べ、総合的に判断しないと最終的に移植されたプログラムのライセンス条件が決定できない。
【０００８】
従来はこのような作業は人手で行わなければならなかったので、時間が掛かる上に、抜けが発生する可能性も否定できなかった。
【０００９】
本発明は上記問題に鑑みてなされたもので、その目的とする処は、異なるプラットフォーム間でプログラムの移植を行おうとする際に、プログラムの移植が可能かどうか、又もし不可能な場合にはどのＡＰＩ関数がネックになっているのかを自動的に判定することができるプログラム移植支援システムを提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明は、コンピュータを用いたソフトウェア開発において、特に異なるプラットフォーム間でのプログラムの移植を支援するためのシステムであって、ポーティング情報データベースと、当該データベースにアクセスしてＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）毎に移植の可能性を判定するＡＰＩ移植情報検索手段とを備え、それとは別に移植対象となるプログラムのソース・  コードを入力とし、当該ソースコードから使用されているＡＰＩを抽出する使用ＡＰＩ検出手段とを備え、本手段により抽出される各ＡＰＩに対して上記ＡＰＩ移植情報検索手段とを組み合わせ、その結果を表示する修正情報表示手段とを有することを特徴とする。
【００１１】
請求項２記載の発明は、請求項１記載発明において、更にライセンス情報データベースと、当該データベースにアクセスするライセンス条件検索手段とを備え、移植の可否情報の他に、移植後のプログラムのライセンス情報も検索・表示するように構成したことを特徴とする。
【００１２】
請求項３記載発明は、請求項１記載の発明において、ポーティング情報データベースを更新するためのポーティング情報データベース更新手段を設けたことを特徴とする。
【００１３】
請求項４記載の発明は、請求項２記載の発明において、ライセンス情報データベースを更新するためのライセンス情報データベース更新手段を設けたことを特徴とする。
【００１４】
【発明の実施の形態】
以下に本発明の実施の形態を添付図面に基づいて説明する。
【００１５】
図１は本発明の実施の形態を示すシステム構成図である。同図において、１０１はポーティング情報データベースであり、移植元のプラットフォームでの各ＡＰＩに対する移植に関する情報を格納する。１０２はライセンス情報データベースであり、ＡＰＩラッパーで使用される各ライブラリ毎のライセンス情報を格納する。１０３は使用ＡＰＩ検出手段であり、検索を行おうとするプログラムのソース・コードから使用されている個々のＡＰＩを抽出する処理を行う。
【００１６】
１０４はＡＰＩ移植情報検索手段であり、ポーティング情報データベース１０１を検索して、当該ＡＰＩに関する移植情報を取得する。１０５はライセンス条件検索手段であり、ＡＰＩ移植情報検索手段１０４から呼び出され、ポーティング情報データベース及びライセンス情報データベースにアクセスして、当該ＡＰＩを移植する際のライセンス条件を検索を行う。１０６は修正情報表示手段であり、１０４〜１０５の手段により検索された、移植情報及びライセンス情報の表示処理を司る。
【００１７】
図５はポーティング情報データベース及びライセンス情報データベースの構成を示す図である。同図において、５０１はポーティング情報データベースである。同データベースは、移植元プラットフォームでのＡＰＩ関数のそれぞれに１つずつ用意されるテーブルの集合体である。５０１のそれぞれのテーブルは、５０２当該ＡＰＩの関数名、５０３当該ＡＰＩのＡＰＩラッパー関数の有無、５０４当該ＡＰＩラッパーが参照するライブラリの個数及び５０４〜５０７各ライブラリの名前及びリンク方式データから構成される。尚、リンク方式は▲１▼スタティック・リンク、▲２▼ダイナミック・リンク、▲３▼ソースを直接インクルードする、の３通りの方法が指定可能である。
【００１８】
５１０はライセンス情報データベースである。当該データベースは、ＡＰＩラッパーで使用される全ライブラリの名前及びそれに対応するライセンス条件データを格納する。
【００１９】
次に、本実施の形態での処理の流れについて説明する。
【００２０】
図６は本実施の形態での処理の流れを示すフローチャートである。当該処理では、先ず、６０１で本処理が参照するデータベース（ポーティング情報データベース及びライセンス情報データベース）をオープンする。
【００２１】
次に、６０２で移植の可否の調査対象となるプログラムのソース・コード（＝テキスト・データ）を開く。６０３においてプログラムのソース・コードの終端に到達したかどうかを判定し、終端に到達していなければ６０４においてソース・コードをスキャンして、その中で使用されているＡＰＩ関数を抽出する。然る後、６０５において移植可否判定処理（詳細は後述）を行った後、再び６０３の処理に戻る。
【００２２】
一方、６０３においてプログラムのソース・コードの終端に到達していた場合には、６０６の処理に移り、  移植対象のソース・コード・ファイルを閉じた後、６０５でデータベース（ポーティング情報データベース及びライセンス情報データベース）をクローズする。最後に、６０８で最終検査結果の表示（詳細は後述）を行った後、本処理を終了する。
【００２３】
次に、図７を用いて６０５の移植可否判定処理の詳細を説明する。
【００２４】
当該処理では、先ず７０１の処理において、指定されたＡＰＩ関数名に対応するテーブルがポーティング情報データベース中に存在するかどうかをチェックする。もし対応するテーブルが存在しなかった場合には、当該ＡＰＩ関数は移植不可能であるため、７０３においてポーティング不可の表示を行った後、本処理を終了する。
【００２５】
一方、ＡＰＩ関数名に対応するテーブルが見つかった場合には、当該ＡＰＩが移植可能であることを表しているので、次に７０４において当該テーブル中のライブラリ情報（＝当該ラッパー関数が使用しているライブラリ群の情報）を取得する。次に、７０５でライセンス情報データベースをアクセスし、各ライブラリ名に対応するライセンス情報を取得・保存した後、本処理を終了する。
【００２６】
最後に図８を用いて最終検査結果表示処理の流れを説明する。
【００２７】
当該処理では、先ず８０１において、図６及び図７の処理によって蓄積されているポーティング不可能なＡＰＩ関数の一覧を表示する。これは当該移植対象のプログラムが対象となるプラットフォームに移植可能であるかどうかを示し、又、もし移植不可能であった場合には、どのＡＰＩ関数が問題なのかを通知するためである。次に、８０２において当該プログラムを移植する際のライセンス条件の一覧を表示した後、処理を終了する。
【００２８】
以上の処理の流れを分かり易く図示したのが図９である。
【００２９】
図９において、９０１は移植対象となるプログラムのソース・コードである。当該ソース・コードを検索していくと、ＧｌｏｂａｌＡｌｌｏｃ（  ）というＡＰＩ関数が見つかる。当該ＡＰＩ関数名を用いてポーティング情報データベースを検索すると、当該関数名に対応するテーブルが登録されていることが分かるので、当該テーブルの内容をチェックする。すると、当該ＡＰＩのラッパー関数が存在する（ＴＲＵＥ）ので、当該ＡＰＩは移植可能であることが分かる。更に、当該ラッパー関数はｇｌｉｂｃとｘｘｘｌｉｂという２つのライブラリを参照していることが分かるので、次に９０３ライセンス情報データベースを参照すると、結局、ＬＧＰＬ（Ｌｅｓｓｅｒ  ＧＮＵ  Ｐｕｂｌｉｃ  Ｌｉｃｅｎｓｅ  ）及びＧＰＬ（ＧＮＵ  Ｐｕｂｌｉｃ  Ｌｉｃｅｎｓｅ）の２つに該当することが分かる。
【００３０】
尚、以上の説明では、ポーティング情報データベース及びライセンス情報データベースは固定のテーブルであると仮定して説明してきたが、ＡＰＩラッパーや移植先ＯＳでのサポートＡＰＩの変更等により、移植可能なＡＰＩの種類が増えて、ポーティング情報データベースの更新が必要になる場合が考えられる。又、それに伴って参照されるライブラリに変更があったり、又はライブラリのライセンス条件が変更になったりする場合も考えられる。
【００３１】
これらの変更に対処するために、ポーティング情報データベース更新手段又はライセンス情報データベース更新手段を別途設けておき、オペレータが必要に応じてこれらのデータベースを更新できるようにしても良い。
【００３２】
このように構成することにより、状況の変化に即応したシステムを構成することが可能になる。
【００３３】
【発明の効果】
以上の説明で明らかなように、本発明によれば、異なるプラットフォーム間でプログラムの移植を行おうとする際に、プログラムの移植が可能かどうか、又、もし不可能な場合にはどのＡＰＩ関数がネックになっているのかを自動的に判定することができるようになる。
【００３４】
又、フリーソフトウェアやオープンソース・ソフトウェアのように、ライセンス条件が問題になるようなケースでも、移植後のプログラムのライセンス条件を自動的に判別することができるようになる。
【００３５】
更に、特定の２つのプラットフォーム間の移植の判定に限らず、ポーティング情報データベース及びライセンス情報データベースを各プラットフォーム用意すれば、判定処理はそのまま手を加えることなく、異なるプラットフォームへの移植の可能性の判定も行えるという利点がある。
【図面の簡単な説明】
【図１】本発明の特徴を最も良く表しているシステム構成図である。
【図２】異なるプラットフォーム間でプログラムを移植する際の問題を示す図である。
【図３】異なるプラットフォーム間でプログラムを移植する際にＡＰＩラッパーを使う場合の構成を示す図である。
【図４】ＡＰＩラッパーのプラットフォーム間での役割を示す図である。
【図５】ポーティング情報データベース及びライセンス情報データベースの構成を示す図である。
【図６】本発明における処理の流れを示すフローチャートである。
【図７】移植可否判定処理の流れを示すフローチャートである。
【図８】最終検査結果表示処理の流れを示すフローチャートである。
【図９】サンプルのソース・  コードに対して各データベースがどのような流れで参照されるのかを示す図である。
【符号の説明】
１０１  ポーティング情報データベース
１０２  ライセンス情報データベース
１０３  使用ＡＰＩ検出手段
１０４  ＡＰＩ移植情報検索手段
１０５  ライセンス条件検索手段
１０６  修正情報表示手段
【図１】
2004246690.tif 000003
【図２】
2004246690.tif 000004
【図３】
2004246690.tif 000005
【図４】
2004246690.tif 000006
【図５】
2004246690.tif 000007
【図６】
2004246690.tif 000008
【図７】
2004246690.tif 000009
【図８】
2004246690.tif 000010
【図９】
2004246690.tif 000011