(57)【要約】【課題】プログラム開発に必要な情報を任意の局面で容易かつ迅速に利用者に提供する。【解決手段】エントリーエージェントＥＡ１は、ツールＴ１の成果物を登録単位の情報に分解してオペレーションエージェントＯＡを介して共通リポジトリＣＲに登録する。ツールＴ２に組み込まれたエントリーエージェントＥＡ２は、このツールＴ２の内部情報を同様にして共通リポジトリＣＲに登録する。独立した生成エージェントＰＡ１及びブラウザＢＲは、共通リポジトリＣＲに登録された情報をオペレーションエージェントＯＡを介して読み出し、一覧表にして出力する。ツールＴ３に組み込まれた生成エージェントＰＡ２は、共通リポジトリＣＲに登録された情報を同様にして読み出し、このツールＴ３に供給する。【選択図】図１
2009251927.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの開発を支援するためのソフトウエアである複数のツールと、
前記ツールの処理過程で生成される内部情報または処理結果の成果物を一定の登録単位に分解した状態で検索できるように保存する共通リポジトリと、
前記ツールで生成される内部情報または成果物を前記登録単位に分解して、前記共通リポジトリへの登録要求を行うエントリーエージェントと、
前記共通リポジトリから必要なデータを取り出して目的とするデータ形式に変換する生成エージェントと、
前記エントリーエージェントからの登録要求に従って前記共通リポジトリへの登録処理を行うと共に、前記生成エージェントからの要求に従って前記共通リポジトリから前記必要なデータを取り出して該生成エージェントに転送するオペレーションエージェントとを、
備えたことを特徴とするプログラム開発支援システム。
【請求項２】
前記エントリーエージェントは、前記ツール内に組み込まれ、該ツールの処理過程で生成される前記内部情報を前記登録単位に分解して、前記共通リポジトリへの登録要求を行うことを特徴とする請求項１記載のプログラム開発支援システム。
【請求項３】
前記生成エージェントは、前記ツール内に組み込まれ、前記共通リポジトリから取り出したデータを目的とするデータ形式に変換して該ツールに与えることを特徴とする請求項１記載のプログラム開発支援システム。
【請求項４】
前記共通リポジトリに登録される情報は、前記ツールによって冗長なデータとして削除された情報を含むことを特徴とする請求項１記載のプログラム開発支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発支援システム、特にプログラムの開発過程で生成される定義情報、設計結果、プログラム等の情報を収めたデータベースであるリポジトリ(Repository)を有効活用するプログラム開発支援システムに関するものである。
【背景技術】
【０００２】
プログラム開発は、エディタ、コンパイラ、リンカー、デバッガ等の複数のプログラム開発ツール(以下、単に「ツール」という)を利用して行われる。各ツールは、最終的なアウトプットを生成する過程で、デバッグ情報や、クロスリファレンス（相互参照情報）、コールツリー情報（関数の呼び出し経路を階層的に示した情報）等を生成する。従来、これらの情報を、開発資産として統合的に確認するための保管庫としてリポジトリを備えたＣＡＳＥ(Computer-aided  Software  Engineering:コンピュータ支援ソフトウエアエンジニアリング)環境が提案されてきた。
【０００３】
下記特許文献１には、複数種類のツールが各々管理する同一属性のデータの連携を双方向に可能とし、また各ツールにおける各属性の変更履歴中の任意の属性データを採用できるようにすることを目的とした発明が記載されている。この特許文献１による発明では、ツールＡにおいて、属性データがツールＡの情報ファイルに保存される時点で、変更された属性データをツールＡの変更情報ファイルに登録すると共に、この変更情報ファイルの変更履歴を共通リポジトリに格納する。また、ツールＢおいて、属性データがツールＢの情報ファイルに保存される時点で、変更された属性データをツールＢの変更情報ファイルに登録すると共に、この変更情報ファイルの変更履歴を共通リポジトリに格納する。共通リポジトリは、同一属性についてツールＡ，Ｂの変更履歴を対応付けて格納するようになっており、各属性について各ツールの特定の変更履歴の属性データが指定されたときに、指定された属性データによって、各ツールの情報ファイルを更新するようにしている。
【０００４】
下記特許文献２には、異なる言語環境で作成されたソフトウエアにおけるオブジェクトの管理情報を一元的に管理し、オブジェクト間の依存関係を言語環境を越えて追跡可能とすることを目的としたソフトウエアリポジトリシステムが記載されている。この特許文献２による発明では、言語解析手段によってソフトウエアを言語解析し、各オブジェクトにいて言語環境タイプ及び属性を含むレコードを格納するオブジェクトセクションと、参照元言語環境タイプ、参照元名前、参照先言語環境タイプ及び参照先名前を含むレコードを格納する関係セクションからなる言語解析結果ファイルを出力する。また、リポジトリエンジンは、言語解析結果ファイルに基づいて、オブジェクトＩＤ及び言語環境タイプを含むレコードからなるオブジェクト表と、参照元オブジェクトＩＤ及び参照先オブジェクトＩＤを含むレコードからなる関係表と、オブジェクトＩＤ及び一意キーとなる属性を含むレコードからなる属性表を、リレーショナルデータベース形式のリポジトリデータベースに出力する。
【０００５】
【特許文献１】特開平１１−１７５３２５号公報
【特許文献２】特開２００２−１２３３９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記特許文献１，２を含め、現在実現されているプログラム開発支援システムでのリポジトリは、ツール間またはプログラム開発支援システム間の相互運用を実現するためのものである。従って、１つのシステムを開発するときに、その開発過程で生成された情報の再利用という観点では、次のような問題点があった。
（１）  リポジトリには、ツールまたはシステムに対するインタフェースしか設けられていない。このため、リポジトリに蓄積されている情報の活用は固定化し、様々な特性を持つアプリケーションプログラムの開発に柔軟に対応できない。即ち、情報を再利用しようとした場合、人的な作業とコンピュータを使用した処理によるコストが発生する。
（２）  例えば、プログラム言語において特定の条件を満たしていない変数はコンパイラによって削除されるが、このようにツール内部で消失する情報に対する保存手段が提供されていないので、必要な情報が必要な局面で得られない場合がある。
【０００７】
本発明は、各ツールが入力データを加工する過程で生じる情報をリポジトリに蓄積することにより、開発に必要な情報を任意の局面で容易かつ迅速に利用者に提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明のプログラム開発支援システムは、プログラムの開発を支援するためのソフトウエアである複数のツールと、前記ツールの処理過程で生成される内部情報または処理結果の成果物を一定の登録単位に分解した状態で検索できるように保存する共通リポジトリと、前記ツールで生成される内部情報または成果物を前記登録単位に分解して、前記共通リポジトリへの登録要求を行うエントリーエージェントと、前記共通リポジトリから必要なデータを取り出して目的とするデータ形式に変換する生成エージェントと、前記エントリーエージェントからの登録要求に従って前記共通リポジトリへの登録処理を行うと共に、前記生成エージェントからの要求に従って前記共通リポジトリから前記必要なデータを取り出して該生成エージェントに転送するオペレーションエージェントとを備えたことを特徴としている。
【発明の効果】
【０００９】
本発明では、あるツールで生成された内部情報や成果物を、そのツールに対応するエントリーエージェントが一定の登録単位に分解して共通リポジトリに登録しておき、他のツールがその情報を参照しようとしたときに、このツールに対応する生成エージェントが共通リポジトリから該当する情報を取り出すようにしている。これにより、あるツールで生成された情報を、他のツールで参照することができるという効果がある。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明を示すプログラム開発支援システムの基本構成図である。
このプログラム開発支援システムは、複数のツールＴ、エントリーエージェントＥＡ、生成エージェントＰＡ、オペレーションエージェントＯＡ、ブラウザＢＲ、及び共通リポジトリＣＲの構成要素で実現されている。なお、エージェント（正確には、ソフトウエアエージェント：Software  Agent）とは、ユーザや他のソフトウエアとの仲介的関係において動作するソフトウエアを説明する計算機科学上の抽象概念であり、論理的モデルである。そのような代行的行動は行動の適切さの判断や時期の判断の権限を暗示している。即ち、エージェントの動作は、タスクとして厳密に管理されないが、自分自身が勝手に起動することはない。
【００１１】
ツールＴは、エディタ、コンパイラ、アセンブラ、リンカー、デバッガ、統合開発環境（ＩＤＥ：Integrated  Development  Environment）等のプログラムの開発を支援するためのソフトウエアであり、開発対象のソースプログラム等の入力データに基づいてそれぞれ所定の処理を行い、その処理結果の成果物を生成すると共に、その成果物を生成する過程で生成されるデバッグ情報、クロスリファレンス、コールツリー情報等の内部情報を出力するものである。
【００１２】
エントリーエージェントＥＡは、ツールＴで生成される成果物または内部情報をユニットと呼ぶ再利用に最適な単位に分解し、オペレーションエージェントＯＡに登録要求を行うものである。エントリーエージェントＥＡは、２つの適用形態に分類される。
【００１３】
第１の適用形態のエントリーエージェントＥＡ１は、図１のケース１に示すように、ツールＴ１から分離して独立した形で設けられ、このツールＴ１が生成する成果物ＲＥＳをユニットに分解してオペレーションエージェントＯＡに登録要求を行うものである。また、第２の適用形態のエントリーエージェントＥＡ２は、図１のケース２に示すように、ツールＴ２に組み込まれ、このツールＴ２が生成する内部情報をユニットに分解してオペレーションエージェントＯＡに登録要求を行うものである。
【００１４】
生成エージェントＰＡは、オペレーションエージェントＯＡを介して共通リポジトリＣＲから必要なデータを取り出して、目的とするデータ形式に変換するものである。生成エージェントＰＡも、２つの適用形態に分類される。
【００１５】
第１の適用形態の生成エージェントＰＡ１は、図１のケース３に示すように、独立した形で設けられ、一覧表ＬＳＴを生成して出力するものである。第２の適用形態の生成エージェントＰＡ２は、図１のケース４に示すように、ツールＴ３に組み込まれ、この生成エージェントＰＡ２が出力したデータをツールＴ３に与えるものである。ツールＴ３は、生成エージェントＰＡ２が出力したデータを活用して成果物を生成するようになっている。
【００１６】
オペレーションエージェントＯＡは、共通リポジトリＣＲに対する読み書きの操作を行う唯一の構成要素である。即ち、オペレーションエージェントＯＡは、エントリーエージェントＥＡ、生成エージェントＰＡ、及びブラウザＢＲからの要求に従って、要求されたデータを共通リポジトリＣＲに格納し、また要求されたデータをこの共通リポジトリＣＲから取り出すものである。このとき、オペレーションエージェントＯＡは、適用されるオペレーション・システムに応じて、エントリーエージェントＥＡ、生成エージェントＰＡ、及びブラウザＢＲ側のデータ形式と、共通リポジトリＣＲに格納されるデータ形式との間の変換を行うようになっている。
【００１７】
ブラウザＢＲは、共通リポジトリＣＲに登録されているデータの検索及び表示を行うものである。ブラウザＢＲは、生成エージェントを作成する際に、共通リポジトリＣＲに登録されているデータ構造を把握するために利用することができる。
【００１８】
共通リポジトリＣＲは、各ツールＴ１，Ｔ２から出力されてエントリーエージェントＥＡ１，ＥＡ２でユニットに分解されて一定の登録単位の形式に組み立てられた成果物や内部情報を、オペレーションエントリＯＡによって検索できるような状態で保管・管理するデータベースである。
【００１９】
図２は、共通リポジトリＣＲの登録単位の基本構造を示す図である。
共通リポジトリＣＲに登録される情報の登録単位は、ヘッダー部と単数または複数のユニットを有するユニット部で構成されている。
【００２０】
ヘッダー部は、登録される情報の共通項目を示すもので、次のような項目を有している。
“登録単位識別子”：登録単位を識別するためのユニークな名称である。
【００２１】
“生成元ツール名称、または入力データ名称”：図１のケース１の場合は入力データ名称を示す。また、図１のケース２の場合は生成元ツール名称を示す。
“生成元ツールバージョン”：生成元ツール名称が示されている場合に、そのバージョン番号を示す。
【００２２】
“タイムスタンプ”：入力データの作成日時を示す。エントリーエージェントＥＡは、必要に応じてこのタイムスタンプを参照し、共通リポジトリＣＲ内のデータの更新の要否を判断することができる。
【００２３】
“ドキュメント位置”：ユニット部に登録される情報が記載されたドキュメントの存在場所を示す。ドキュメント位置は、ＵＲＬ(Uniform  Resource  Locator)、ファイルパス、媒体名称等のドキュメントのありかを一意に決定できる情報であれば良い。
【００２４】
ユニットは、ツールＴで生成されてエントリーエージェントＥＡによって分解された成果物または内部情報の基本単位であり、以下に示すように、検索に使用するキー関連の情報と、情報本体で構成されている。
【００２５】
“キー属性”：シンボル、アドレス、ライン番号等の検索キーの種別を示す。
“検索キー個数”：登録されている検索キーの個数を示す。
“検索キー名称１，２，…，ｎ”：検索キーの名称を示す。
【００２６】
“コンテナ”：検索キーによって示される情報の内容を示す。コンテナの形式は、その情報の内容によって任意に決定される。
【実施例１】
【００２７】
図３は、本発明の実施例１を示すプログラム開発支援システムの構成図である。
この実施例１は、コンパイラＣＰＬ（ツールＴ１）の最適化実施状況を組み込み型のエントリーエージェントＥＡ１で収集し、その収集した最適化情報をオペレーションエージェントＯＡを介して共通リポジトリＣＲに登録しておき、デバッガＤＢＧ（ツールＴ３）に組み込まれた生成エージェントＰＡ２が、この共通リポジトリＣＲに登録されている最適化情報を読み出してデバッガＤＢＧに与えることにより、コンパイラによるプログラムの変化をデバッグ情報として提供するものである。
【００２８】
図４は、図３の動作例を示す説明図である。以下、この図４を参照しつつ、図３の動作を説明する。
【００２９】
ツールの１つであるコンパイラＣＰＬは、ソースファイルＳＦに格納されているソースプログラムを読み出してコンパイルを行う。ソースプログラムが、例えば図４（ａ）に示すようなＣ言語で記述されたプログラムであるとする。このプログラムの５行目のローカル変数ｙは、関数ｆｕｎｃ内で参照されていないため、コンパイラＣＰＬは最適化のために、このローカル変数ｙを冗長な変数（dead  variable）として削除する。
【００３０】
コンパイラＣＰＬに組み込まれたエントリーエージェントＥＡ１は、コンパイラＣＰＬの処理途中で出力される内部情報（この場合は、ローカル変数ｙを削除したという最適化情報）を、図４（ｂ）に示すユニットに変換する。
【００３１】
図４（ｂ）には、「キー属性」項目として「シンボル」が登録され、ユニットがシンボルに関する情報であることが示されている。また、そのシンボルの検索範囲を決定するための「検索キー個数」項目として「３」が登録され、３個の検索キーが指定されることが示されている。そして、「検索キー名１」，「検索キー名２」，「検索キー名３」として、それぞれ「モジュール名」、「関数名（ｆｕｎｃ）」、「変数名（ｙ）」が登録されている。更に、「コンテナ」項目として「dead  variable」が登録され、変数ｙが冗長な変数として削除されたことが示されている。
【００３２】
エントリーエージェントＥＡ１は、内部情報をユニットに変換した後、共通リポジトリＣＲ内の登録単位識別子を確認し、登録済みである場合にはタイムスタンプにより更新の要否を判断する。即ち、タイムスタンプに現在よりも古い日時が登録されている場合には、更新が必要であると判断する。未登録や更新が必要と判断された場合には、エントリーエージェントＥＡ１は、ユニット部にヘッダー部を付加して、オペレーションエージェントＯＡに対して共通リポジトリＣＲへの登録要求を行う。
【００３３】
なお、エントリーエージェントＥＡ１は、コンパイラＣＰＬから内部情報が出力される度にユニットを生成しても良いし、コンパイラＣＬＰから出力される内部情報を収集しておいて、コンパイラの処理終了時にまとめてユニットを生成しても良い。
【００３４】
登録要求を受理したオペレーションエージェントＯＡは、共通リポジトリＣＲに対して登録操作を行う。これにより、共通リポジトリＣＲには、図２に示すような基本構造を有する最適化実施情報が登録される。
【００３５】
コンパイラＣＰＬは更に処理を進め、ソースファイルＳＦ中のソースプログラムをすべてコンパイルし、最終的な成果物として最適化されたオブジェクトプログラムをオブジェクトファイルＯＦに出力する。
【００３６】
オブジェクトファイルＯＦは、ツールの１つであるリンカーＬＮＫによって読み取られ、各オブジェクトプラグラムの結合が行われ、実行可能なプログラムが生成されてデバッグ情報と共に実行可能ファイルＥＦに格納される。
【００３７】
実行可能ファイルＥＦに格納された実行可能なプログラムとデバッグ情報は、ツールの１つであるデバッガＤＢＧによって読み出され、プログラム開発者によるデバッグが行われる。図４（ｃ）は、デバッガによる最適化効果の取得の仕組み、即ち、最適化処理で削除された変数ｙの状態を表示する仕組みを示している。
【００３８】
デバッガＤＢＧが起動されると、デバッガＤＢＧは、リンカーＬＮＫで生成されたデバッグ情報付きの実行可能ファイルＥＦを読み出し、変数テーブル１を作成する。この変数テーブル１には、コンパイラＣＰＬの最適化効果によって変数ｙの情報は存在しない。
【００３９】
一方、デバッガＤＢＧに組み込まれた生成エージェントＰＡ２は、オペレーションエージェントＯＡに対し、キー属性が「シンボル」である情報の取得を要求する。オペレーションエージェントＯＡは、生成エージェントＰＡ２からの取得要求に基づいて、共通リポジトリＣＲからキー属性が「シンボル」である情報を取り出し、生成エージェントＰＡ２に転送する。生成エージェントＰＡ２は、オペレーションエージェントＯＡから転送された情報に基づいて変数テーブル２を作成する。従って、変数テーブル２には、コンパイラＣＰＬによって冗長な変数として削除された変数ｙが登録される。
【００４０】
デバッガＤＢＧが変数ｙを参照する場合、変数検索機能によって、先ず変数テーブル１を検索し、この変数テーブル１に検索対象が存在しない場合、次に変数テーブル２を検索する。この場合、変数ｙは変数テーブル１内に存在せず、変数テーブル２に登録されている。更に、変数テーブル２には、変数ｙが冗長な変数であるために削除されたものであることが「コンテナ」情報として登録されている。
【００４１】
デバッガＤＢＧは、ソースプログラムの表示中に、例えばマウスポインタで変数ｙが指示されると、変数テーブル２のコンテナ情報に基づいて図４（ｄ）に示すようなポップアップ表示を行う。
【００４２】
以上のように、この実施例１のプログラム開発支援システムは、コンパイラＣＰＬに組み込んだエントリーエージェントＥＡ１が、このコンパイラＣＰＬで削除された情報を共通リポジトリＣＲに登録しておき、デバッガＤＢＧでその削除された情報を参照しようとしたときに、このデバッガＤＢＧに組み込まれた生成エージェントＰＡ２が共通リポジトリＣＲに登録された削除された情報を取り出すようにしている。これにより、コンパイラＣＰＬで削除された情報を、デバッガＤＢＧで表示することができるという利点がある。
【実施例２】
【００４３】
図５は、本発明の実施例２を示すプログラム開発支援システムの構成図であり、図３中の要素と共通の要素には共通の符号が付されている。
【００４４】
このプログラム開発支援システムは、図３のプログラム開発支援システムに生成エージェントＰＡ３とブラウザＢＲを追加したものである。生成エージェントＰＡ３は、オペレーションエージェントＯＡを介して共通リポジトリＣＲからキー属性が「シンボル」である情報を収集し、その中からコンテナが「冗長な変数（dead  variable）」であるものを抽出して冗長変数リストＬＳＴを生成するものである。ブラウザＢＲも同様に、オペレーションエージェントＯＡを介して共通リポジトリＣＲからキー属性が「シンボル」である情報を収集し、その中からコンテナが「冗長な変数」であるものを抽出して表示するものである。これにより、利用者はソースファイル中の冗長な変数の一覧表を入手することができる。
【００４５】
以上のように、この実施例２のプログラム開発支援システムは、共通リポジトリＣＲに登録されているデータを検索して再構成する生成エージェントＰＡ３とブラウザＢＲを有している。これにより、ソースファイルを解析して必要なデータを取得する場合に比べて、開発に必要な情報を任意の局面で容易かつ迅速に利用者に提供することができるという利点がある。
【００４６】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（ａ）  実施例１，２では、コンパイラＣＰＬの最適化情報を共通リポジトリＣＲに蓄積して、デバッガＤＢＧにおける変数の状態表示または冗長変数の一覧表を作成する処理を説明したが、これらの処理に限定されず、プログラム作成の全工程においてプログラム開発支援システムの各ツールが動作する処理系のメモリ上に存在するデータ及び各ツールの成果物のデータを対象として、情報の再編成及び再利用が可能である。
（ｂ）  実施例２では、マクロファンクションをデバッガで参照することにも利用できる。通常、マクロファンクションはコンパイラのプリプロセス工程で展開されるので、マクロファンクションとしての情報は消失してしまい、デバッガではマクロシンボルの内容を参照することができない。しかし、エントリーエージェントをコンパイラのプリプロセス工程に組み込んでおき、共通リポジトリにマクロシンボルを保存すれば、デバッガ上でマクロシンボルを参照することが可能になる。
（ｃ）  ツール内部の情報だけでなく、ツールが出力するマップファイル等の成果物としての情報も対象とすることができる。従来の方法でマップファイル等の情報から必要な項目のみを抽出する場合、マップファイルに対して解析、分解、抽出、再編成の各処理を行わなければならないが、本方法によれば、共通リポジトリに登録しておくことにより、抽出、再編成の処理のみで目的とする情報を得ることができる。
【図面の簡単な説明】
【００４７】
【図１】本発明を示すプログラム開発支援システムの基本構成図である。
【図２】共通リポジトリＣＲの登録単位の基本構造を示す図である。
【図３】本発明の実施例１を示すプログラム開発支援システムの構成図である。
【図４】図３の動作例を示す説明図である。
【図５】本発明の実施例２を示すプログラム開発支援システムの構成図である。
【符号の説明】
【００４８】
ＢＲ    ブラウザ
ＣＰＬ    コンパイラ
ＣＲ    共通リポジトリ
ＤＢＧ    デバッガ
ＥＡ    エントリーエージェント
ＥＦ    実行可能ファイル
ＬＮＫ    リンカー
ＬＳＴ    リスト
ＯＡ    オペレーションエージェント
ＯＦ    オブジェクトファイル
ＰＡ    生成エージェント
ＳＦ    ソースファイル
Ｔ    ツール
【図１】
2009251927.tif 000003
【図２】
2009251927.tif 000004
【図３】
2009251927.tif 000005
【図４】
2009251927.tif 000006
【図５】
2009251927.tif 000007