(57)【要約】【課題】ソースコードからステレオタイプの情報が付与された設計情報を生成でき、異なるプラットフォーム間での機能改良を伴うソースコードの移植工期の短縮を図る。【解決手段】ソースコード解析部はソースコードを解析し、クラスに関する情報、クラス間の関係に関する情報、変数に関する情報を抽出して、クラス記憶処理部、関係記憶処理部、変数記憶処理部に記憶する。ステレオタイプ情報付与部はクラス記憶処理部および関係記憶処理部に記憶された情報をもとに変換ルールに従ってステレオタイプの情報を生成し、クラス記憶処理部のクラスに関する情報に対応付けて記憶する。クラス図作成部はステレオタイプの情報が付与されたクラスに関する情報、クラス間の関係に関する情報、および変数に関する情報をプログラムの設計情報として、この設計情報に対応するクラス図を作成する。【選択図】図２
2007156761.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードを解析してクラスに関する情報、クラス間の関係に関する情報、変数に関する情報をそれぞれ抽出するソースコード解析部と、
前記ソースコード解析部によって抽出された前記クラスに関する情報をクラス記憶領域に記憶するクラス記憶処理部と、
前記ソースコード解析部によって抽出された前記クラス間の関係に関する情報を関係記憶領域に記憶する関係記憶処理部と、
前記ソースコード解析部によって抽出された前記変数に関する情報を変数記憶領域に記憶する変数記憶処理部と、
前記クラス記憶領域および前記関係記憶領域にそれぞれ記憶された情報をもとにクラスに付与するステレオタイプの情報を生成するための変換ルールが記憶された変換ルール記憶部と、
前記変換ルール記憶部に記憶された変換ルールに従ってステレオタイプの情報を生成し、前記クラス記憶領域前記クラスに関する情報に対応付けて記憶するステレオタイプ情報付与部と、
前記クラス記憶領域に記憶され前記ステレオタイプの情報が付与された前記クラスに関する情報、前記関係記憶領域に記憶された前記クラス間の関係に関する情報、および前記変数記憶領域に記憶された前記変数に関する情報をプログラムの設計情報として、この設計情報に対応するクラス図を作成するクラス図作成部と
を具備することを特徴とする設計情報生成装置。
【請求項２】
前記クラス図作成部により作成された前記クラス図を参照した設計者からの入力をもとに、前記クラス記憶領域に記憶されたステレオタイプの情報を補正するモデル補正部をさらに具備することを特徴とする請求項１に記載の設計情報生成装置。
【請求項３】
請求項１の設計情報生成装置と、
この設計情報生成装置にて生成された前記プログラムの設計情報を、プラットフォームに依存しない設計情報に変換する第１のモデルコンパイラと、
この第１のモデルコンパイラによって得られた設計情報に対して設計者によってカスタマイズされた結果を特定プラットフォームに依存する設計情報に変換する第２のモデルコンパイラと、
この第２のモデルコンパイラによって得られた特定プラットフォームに依存する設計情報からソースコードを生成するソースコード生成部と
を具備することを特徴とするプログラム開発システム。
【請求項４】
ソースコード解析部により、ソースコードを解析してクラスに関する情報、クラス間の関係に関する情報、変数に関する情報をそれぞれ抽出するステップと、
前記ソースコード解析部によって抽出された前記クラスに関する情報をクラス記憶領域に記憶するステップと、
前記ソースコード解析部によって抽出された前記クラス間の関係に関する情報を関係記憶領域に記憶するステップと、
前記ソースコード解析部によって抽出された前記変数に関する情報を変数記憶領域に記憶するステップと、
ステレオタイプ情報付与部にて、前記クラス記憶領域および前記関係記憶領域にそれぞれ記憶された情報をもとに予め決められた変換ルールに従ってステレオタイプの情報を生成し、前記クラス記憶領域の前記クラスに関する情報に対応付けて記憶するステップと、
前記クラス図作成部にて、前記クラス記憶領域に記憶され前記ステレオタイプの情報が付与された前記クラスに関する情報、前記関係記憶領域に記憶された前記クラス間の関係に関する情報、および前記変数記憶領域に記憶された前記変数に関する情報をプログラムの設計情報として、この設計情報に対応するクラス図を作成するステップと
を具備することを特徴とする設計情報生成方法。
【請求項５】
モデル補正部にて、前記クラス図作成部により作成された前記クラス図を参照した設計者からの入力をもとに、前記クラス記憶領域に記憶されたステレオタイプの情報を補正するステップをさらに具備することを特徴とする請求項４に記載の設計情報生成方法。
【請求項６】
請求項４の設計情報生成方法にて生成された前記プログラムの設計情報を、第１のモデルコンパイラにてプラットフォームに依存しない設計情報に変換するステップと、
前記第１のモデルコンパイラによって得られた設計情報に対して設計者によってカスタマイズされた結果を、第２のモデルコンパイラにて特定プラットフォームに依存する設計情報に変換するステップと、
ソースコード生成部にて、前記第２のモデルコンパイラによって得られた特定プラットフォームに依存する設計情報からソースコードを生成するステップと
を具備することを特徴とするプログラム開発方法。
【請求項７】
コンピュータを、
ソースコードを解析してクラスに関する情報、クラス間の関係に関する情報、変数に関する情報をそれぞれ抽出するソースコード解析部と、
前記ソースコード解析部によって抽出された前記クラスに関する情報をクラス記憶領域に記憶するクラス記憶処理部と、
前記ソースコード解析部によって抽出された前記クラス間の関係に関する情報を関係記憶領域に記憶する関係記憶処理部と、
前記ソースコード解析部によって抽出された前記変数に関する情報を変数記憶領域に記憶する変数記憶処理部と、
前記クラス記憶領域および前記関係記憶領域にそれぞれ記憶された情報をもとにクラスに付与するステレオタイプの情報を生成するための変換ルールが記憶された変換ルール記憶部と、
前記クラス記憶領域および前記関係記憶領域にそれぞれ記憶された情報をもとに前記変換ルール記憶部に記憶された変換ルールに従ってステレオタイプの情報を生成し、前記クラス記憶領域の前記クラスに関する情報に対応付けて記憶するステレオタイプ情報付与部と、
前記クラス記憶領域に記憶され前記ステレオタイプの情報が付与された前記クラスに関する情報、前記関係記憶領域に記憶された前記クラス間の関係に関する情報、および前記変数記憶領域に記憶された前記変数に関する情報をプログラムの設計情報として、この設計情報に対応するクラス図を作成するクラス図作成部と
して機能させることを特徴とするプログラム。
【請求項８】
前記コンピュータを、前記クラス図作成部により作成された前記クラス図を参照した設計者からの入力をもとに、前記クラス記憶領域に記憶されたステレオタイプの情報を補正するモデル補正部としても機能させることを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを用いて、ソースコードからプログラムの設計情報を生成する設計情報生成装置、この設計情報生成装置を用いたプログラム開発システム、設計情報生成方法、プログラムに関するものである。
【背景技術】
【０００２】
あるプラットフォーム上のシステム（レガシーシステム）のソースコードを他のプラットフォーム上のシステムのソースコードに移植する方法に関して、従来、特許文献１に示されるようなクロスコンパイラを用いた手法が存在する。しかし、このような手法を用いた場合、移植時に生じやすい機能拡張、機能追加などのカスタマイズの要求に柔軟に応じることができない。したがって、現状では、人手でレガシーシステムのソースコードを解析して設計情報の抽出を行った上で移植作業を行うことが主流であり、そのために長い開発工期を要していた。
【０００３】
ところで、プログラムの開発手法としてＭＤＡ（Model Driven Architecture）が注目されている。ＭＤＡは、プラットフォーム（特定のプログラミング環境）に依存せず、ＵＭＬなどの標準モデリング技法を使ってアプリケーションの機能をモデル化し、さらにそのモデル情報を基にソースコードを自動生成する開発手法である。ＭＤＡでは、まず実装技術から独立する形でビジネスプロセスを分析し、プラットフォームに依存しないモデルであるＰＩＭ（Platform Independent Model）を作成する。続いてＰＩＭをベースにモデルコンパイラと呼ばれるツールを用いて個別プラットフォームに特化したモデルであるＰＳＭ(Platform Specific Model）を生成する。さらにＰＩＭもしくはＰＳＭの情報から、ソースコード生成ツールを使って実際のソースコードに変換して実装作業を進めていく。
【特許文献１】特開平５−８８９０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＭＤＡの開発手法においても、異なるプラットフォーム間でのソースコードの移植はやはり人手に依存している。すなわち、ＭＤＡでは、ＰＳＭからソースコードへの一方向の生成（変換）を可能とするものの、その逆のソースコードからＰＳＭを生成する仕組みは実現されていないからである。
【０００５】
そこで本発明はこのような事情を鑑み、ソースコードからステレオタイプの情報が付与された設計情報を生成することができ、異なるプラットフォーム間でのソースコードの移植工期の短縮を図ることのできる設計情報生成装置、プログラム開発システム、設計情報生成方法、プログラム開発方法およびプログラムを提供しようとするものである。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明の設計情報生成装置は、ソースコードを解析してクラスに関する情報、クラス間の関係に関する情報、変数に関する情報をそれぞれ抽出するソースコード解析部と、前記ソースコード解析部によって抽出された前記クラスに関する情報をクラス記憶領域に記憶するクラス記憶処理部と、前記ソースコード解析部によって抽出された前記クラス間の関係に関する情報を関係記憶領域に記憶する関係記憶処理部と、前記ソースコード解析部によって抽出された前記変数に関する情報を変数記憶領域に記憶する変数記憶処理部と、前記クラス記憶領域および前記関係記憶領域にそれぞれ記憶された情報をもとにクラスに付与するステレオタイプの情報を生成するための変換ルールが記憶された変換ルール記憶部と、前記クラス記憶領域および前記関係記憶領域にそれぞれ記憶された情報をもとに前記変換ルール記憶部に記憶された変換ルールに従ってステレオタイプの情報を生成し、前記クラス記憶領域の前記クラスに関する情報に対応付けて記憶するステレオタイプ情報付与部と、前記クラス記憶領域に記憶され前記ステレオタイプの情報が付与された前記クラスに関する情報、前記関係記憶領域に記憶された前記クラス間の関係に関する情報、および前記変数記憶領域に記憶された前記変数に関する情報をプログラムの設計情報として、この設計情報に対応するクラス図を作成するクラス図作成部とを具備するものである。
【０００７】
この発明によれば、ソースコードから、クラスにステレオタイプの情報が付与された設計情報を生成することができる。また、生成された設計情報からクラス図を作成して、たとえば設計者に掲示することができる。
【０００８】
また、本発明の設計情報生成装置は、前記クラス図作成部により作成された前記クラス図を参照した設計者からの入力をもとに、前記クラス記憶領域に記憶されたステレオタイプの情報を補正するモデル補正部をさらに具備するものであってもよい。
【０００９】
また、本発明の別の観点に基づくプログラム開発システムは、上記の設計情報生成装置と、この設計情報生成装置にて生成された前記プログラムの設計情報を、プラットフォームに依存しない設計情報に変換する第１のモデルコンパイラと、この第１のモデルコンパイラによって得られた設計情報に対して設計者によってカスタマイズされた結果を特定プラットフォームに依存する設計情報に変換する第２のモデルコンパイラと、この第２のモデルコンパイラによって得られた特定プラットフォームに依存する設計情報からソースコードを生成するソースコード生成部とを具備するものである。
【００１０】
この発明によれば、異なるプラットフォーム間でのソースコードの移植を行う際に、プラットフォームに依存しない設計情報のレベルで必要なカスタマイズを行うことができるので、異なるプラットフォーム間でのソースコードの移植工期の短縮を図ることができる。
【発明の効果】
【００１１】
本発明によれば、ソースコードからステレオタイプの情報が付与された設計情報を生成することができ、異なるプラットフォーム間でのソースコードの移植工期の短縮を図ることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面を用いて説明する。
【００１３】
図１は本発明の一実施形態にかかる設計情報生成装置を採用したプログラム開発システムの構成を示す図である。
【００１４】
本実施形態の設計情報生成装置およびプログラム開発システムは、たとえば、プログラムを実行するＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、実行中のプログラムやデータなどを記憶するメインメモリであるＲＡＭ（Random Access Memory）、プログラムやデータを蓄積するメモリ記憶装置やハードディスクドライブなどの記憶装置、キーボードやマウスなどの入力装置、および表示装置などで構成される複数のコンピュータ、あるいは、このようなコンピュータを、通信回線を通じて有機的に複数接続して構成されるサーバ／クライアント方式のネットワークシステムによって実現される。以下、生成部などの「部」の用語は、プログラムの特定の部分をＣＰＵが実行することによって実現される機能を意味する。また、「クラス記憶領域」などの「記憶領域」の用語は、メモリ記憶装置やハードディスクドライブなどの記憶装置に確保された記憶領域を意味する。また、「変換ルール定義ファイル」などの「ファイル」はハードディスクドライブなどの記憶装置に記憶され、必要に応じてメモリ記憶装置にロードされることによってＣＰＵによってアクセスされる。
【００１５】
図１に示すように、この実施形態のプログラム開発システム１００は、プラットフォーム（特定のプログラミング環境）に依存せず、ＵＭＬなどの標準モデリング技法を使ってアプリケーションの機能をモデル化し、さらにそのモデル情報を基にソースコードを自動生成する開発手法であるＭＤＡ２００（ＭＤＡ：Model Driven Architecture）と、設計情報生成装置３００とで構成される。
【００１６】
ＭＤＡ２００では、まず実装技術から独立する形でビジネスプロセスを分析してプラットフォームに依存しないモデルである設計情報（以下「ＰＩＭ」と記述）（ＰＩＭ：Platform Independent Model）１１を作成し、続いてＰＩＭ１１をベースに、モデルコンパイラ１２によって個別プラットフォームに特化した設計情報（以下「ＰＳＭ」と記述）（ＰＳＭ：Platform Specific Model）１３に変換し、このＰＳＭ１３をベースにソースコード生成部１９にてソースコード１５を生成する。
【００１７】
モデルコンパイラ１２は、本発明の構成の第２のモデルコンパイラに相当するＰＩＭ／ＰＳＭ変換部１２ａと本発明の構成の第１のモデルコンパイラに相当するＰＳＭ／ＰＩＭ変換部１２ｂを有する。第２のモデルコンパイラであるＰＩＭ／ＰＳＭ変換部１２ａは、ＰＩＭ１１をＰＳＭ１３に変換する機能である。第１のモデルコンパイラであるＰＳＭ／ＰＩＭ変換部１２ｂは、ＰＳＭ１３，１４をＰＩＭ１１に変換する機能である。すなわち、ＭＤＡ２００でのＰＩＭ１１からＰＳＭ１３への変換はモデルコンパイラ１２のＰＩＭ／ＰＳＭ変換部１２ａを用いて行われる。
【００１８】
設計情報生成装置３００は、その主要部であるモデル抽出装置１６と、モデル抽出装置１６への入力である特定プラットフォームに特化したソースコード１７と、変換ルール定義ファイル１８と、モデル抽出装置１６の成果物であるＰＳＭ１４とで構成される。
【００１９】
モデル抽出装置１６は、特定プラットフォームに特化したソースコード１７から変換ルール定義ファイル１８を用いて、プログラムの設計情報であるＰＳＭ１４を生成する装置である。生成されたＰＳＭ１４はモデルコンパイラ１２のＰＳＭ／ＰＩＭ変換部１２ｂによってＰＩＭ１１へと変換される。
【００２０】
図２はモデル抽出装置１６の構成を説明するためのデータフローおよび機能ブロックである。
【００２１】
モデル抽出装置１６は、ソースコード解析部２１、クラス記憶処理部２２、関係記憶処理部２３、変数記憶処理部２４、ステレオタイプ情報付与部２５、クラス図作成部２６を情報処理部として備えている。また、モデル抽出装置１６は、モデル抽出の処理に用いられる記憶領域として、クラス記憶領域２７、関係記憶領域２８、および変数記憶領域２９をもつ。
【００２２】
ソースコード解析部２１は、ソースコード１７を読み込んで解析し、クラス、クラス間の関係に関する情報、変数に関する情報を抽出して、クラス記憶処理部２２、関係記憶処理部２３、変数記憶処理部２４にこれらの情報を出力する。クラス記憶処理部２２は、クラス記憶領域２７に対する書き込み、読み込み、検索を行う。関係記憶処理部２３は、関係記憶領域２８に対する書き込み、読み込み、検索を行う。変数記憶処理部２４は、変数記憶領域２９に対する書き込み、読み込み、検索を行う。
【００２３】
ステレオタイプ情報付与部２５は、クラス記憶領域２７および関係記憶領域２８に記憶された情報と変換ルール定義ファイル１８の変換ルールとをもとに、クラス記憶領域２７に記憶されたクラスの情報に付加するステレオタイプの情報を生成する。
【００２４】
クラス図作成部２６は、クラス記憶領域２７、関係記憶領域２８、および変数記憶領域２９にそれぞれ記憶された情報をもとにＰＳＭのクラス図を作成して、ユーザ３１のためのディスプレイ３０に表示する。
【００２５】
次に、モデル抽出の処理に用いられる記憶領域である、クラス記憶領域２７、関係記憶領域２８、および変数記憶領域２９に記憶される情報の構成を説明する。
【００２６】
図３にクラス記憶領域２７に記憶されるクラスに関する情報の構成を示す図である。同図に示すように、クラス記憶領域２７に記憶されるクラスに関する情報は、クラスＩＤ、クラス名、ステレオタイプの項目からなる。ここで、クラスＩＤはソースコードに現れる全てのクラスを識別するための情報である。クラス名はクラスＩＤで識別される各々のクラスの名前（名称）である。ステレオタイプとは、ＵＭＬの機能の一つで、クラスの役割や用法上の違いなどをモデル要素に修飾するために用いられる情報である。クラスの役割や用法上の違いは同一のモデル要素でも発生し得ることから、ステレオタイプによってこのような違いを表記することができる。
【００２７】
図４は関係記憶領域２８に記憶されるクラス間の関係に関する情報の構成を示す図である。同図に示すように、関係記憶領域２８に記憶されるクラス間の関係に関する情報は、クライアントクラスＩＤ、サプライヤクラスＩＤ、関係の項目で構成されている。ここで関係とは、クライアントクラスＩＤおよびサプライヤクラスＩＤで示される２つのクラス間の関係である。関係の種類には、‘関連’、‘集約’、‘依存’、‘継承’、‘実現’がある。クライアントクラスとは、メッセージを送る側のクラスであり、サプライヤクラスはメッセージを受け取るクラスである。
【００２８】
図５は変数記憶領域２９に記憶される変数に関する情報の構成を示す図である。同図に示すように、変数記憶領域２９に記憶される変数に関する情報は、フィールド変数が所属するクラスのクラスＩＤ、フィールド変数名、フィールド変数のクラスのクラスＩＤからなる。ここで変数とは、クラスのフィールド変数である。
【００２９】
次に、変換ルール定義ファイル１８の変換ルールについて説明する。
【００３０】
図６に変換ルールをまとめた表を示す。このように変換ルールには、
・ルール１：処理対象のクラスが‘ActionListener’であって関係記憶領域２８のサプライヤクラスＩＤに記憶されており、関係が‘実現’である場合、クライアントＩＤのクラスに<<Controller>>のステレオタイプを付与する。ステレオタイプはクラス記憶領域２７に記臆される。
【００３１】
・ルール２：処理対象のクラスが‘JFrame’であって関係記憶領域２８のサプライヤクラスＩＤに記憶されており、関係が‘継承’である場合、クライアントＩＤのクラスに<<View>>のステレオタイプを付与する。ステレオタイプはクラス記憶領域２７に記憶される。
【００３２】
・ルール３：処理対象のクラスが関係記憶領域のサプライヤクラスＩＤに記憶されており、関係が‘実現’である場合、処理対象クラスに<<interface>>のステレオタイプを付与する。ステレオタイプはクラス記憶領域２７に記憶される。
【００３３】
・ルール４：処理対象のクラスがjavaとjavaxで始まるパッケージに含まれる場合、処理対象のクラスにステレオタイプは付けない。
【００３４】
・ルール５：処理対象のクラスがルール１から４のどれにも当てはまらず、ステレオタイプがついていない場合、処理対象のクラスに<<Model>>のステレオタイプを付与する。ステレオタイプはクラス記憶領域に記憶する。
【００３５】
次に、本実施形態の設計情報生成装置３００の動作を説明する。
【００３６】
図７は本実施形態の設計情報生成装置３００の全体的な動作を示すシーケンス図である。
【００３７】
1:ユーザ３１は、図示しない入力装置を用いて、ソースコード解析部２１に対してソースコード１７のモデル化を指示する。
【００３８】
2:ソースコード解析部２１は、この指示に従ってソースコード１７を解析し、クラス、関係、変数に関する情報をそれぞれ抽出して、クラス記憶処理部２２、関係記憶処理部２３、変数記憶処理部２４にわたす。クラス記憶処理部２２、関係記憶処理部２３、変数記憶処理部２４はソースコード解析部２１から受け取った情報を、クラス記憶領域２７、関係記憶領域２８、および変数記憶領域２９に記憶する。なお、このときの動作については、図８を用いて後で詳細に説明する。
【００３９】
3:ソースコード解析部２１は、ステレオタイプ情報付与部２５に対してステレオタイプの情報の付与を指示する。
【００４０】
4:ステレオタイプ情報付与部２５は、この指示を受けると、クラス記憶領域２７および関係記憶領域２８に記憶された情報と変換ルール定義ファイル１８の変換ルールとをもとに、クラス記憶領域２７に記憶されたクラスに関する情報にそれぞれ付加するステレオタイプの情報を生成してこれらの付与を行う。なお、このときの動作については、図１５を用いて後で詳細に説明する。
【００４１】
5:ステレオタイプ情報付与部２５は、クラス図作成部２６に対してクラス図の作成を指示する。
【００４２】
6:クラス図作成部２６は、クラス記憶領域２７、関係記憶領域２８、および変数記憶領域２９にそれぞれ記憶された情報をもとに、ステレオタイプの情報の付与されたＰＳＭのクラス図を作成する。このクラス図作成部２６の処理の詳細は後で説明する。
【００４３】
7:クラス図作成部２６は、作成したクラス図の表示をディスプレイ３０に指示する。
【００４４】
8:ディスプレイ３０は、クラス図作成部２６より与えられたクラス図を表示する。
【００４５】
次に、上記のソースコード解析の動作の詳細を説明する。
【００４６】
図８はこのソースコード解析の動作に関するシーケンス図である。なお、動作の理解を助けるために、具体的なソースコードを前提にして説明を行う。図９、図１０、図１１はその具体的なソースコードの例であるＪａｖａ（登録商標）のソースコードの抜粋を示している。また、これらのソースコードとシーケンス図との関係が分かるように、シーケンス図における個々の処理が対象とするソースコードの行に、シーケンス図における処理の番号を符号として付してある。
【００４７】
1:ユーザ３１は、図示しない入力装置を用いて、ソースコード解析部２１に対してソースコード１７のモデル化を指示する。
【００４８】
2:ソースコード解析部２１は、このモデル化の指示に従ってソースコード１７を読み込む。
【００４９】
3:ソースコード解析部２１は、読み込んだソースコード１７のクラス宣言を読み込む。
【００５０】
3.1:ソースコード解析部２１は、ソースコード１７からクラスＸの名前（クラス名）を抽出するとともに、このクラスＸに対してＩＤ（クラスＩＤ）を付与する。そしてソースコード解析部２１は、そのクラスＸのクラス名とクラスＩＤをクラス記憶処理部２２を通じてクラス記憶領域２７に記憶する。図９ないし図１１のソースコードの例では、Counter、CounterListener、CounterViewなどのクラス名が抽出されてそれぞれにクラスＩＤが付与される。
【００５１】
3.2:ソースコード解析部２１は、スーパークラスの解析を行う。
【００５２】
3.2.1:ソースコード解析部２１は、クラスＸのスーパークラスＹの名前（クラス名）を抽出するとともに、このスーパークラスＹにＩＤ（クラスＩＤ）を付与する。そしてソースコード解析部２１は、そのスーパークラスのクラス名とクラスＩＤをクラス記憶処理部２２を通じてクラス記憶領域２７に記憶する。たとえば、CounterViewのクラスのスーパークラスの名前としてJFrameが抽出され、これにクラスＩＤが付与される。
【００５３】
3.2.2:ソースコード解析部２１は、クラスＸとスーパークラスＹの各クラスＩＤおよびそのクラス間の関係を関係記憶処理部２３を通じて関係記憶領域２８に記憶する。この場合のクラス間の関係は一意に継承となる。ここで、クラスＸのクラスＩＤはクライアントクラスＩＤとして、スーパークラスＹのクラスＩＤはサプライヤクラスＩＤとして関係記憶領域２８に記憶される。
【００５４】
3.3:ソースコード解析部２１は、インターフェースの解析を行う。
【００５５】
3.3.1:ソースコード解析部２１は、クラスＸのインターフェースＺの名前（クラス名）を抽出するとともに、このインターフェースＺにＩＤ（クラスＩＤ）を付与する。そしてソースコード解析部２１は、そのインターフェースＺのクラス名とクラスＩＤをクラス記憶処理部２２を通じてクラス記憶領域２７に記憶する。
【００５６】
3.3.2:ソースコード解析部２１は、クラスＸとインターフェースＺの各クラスＩＤおよびそのクラス間の関係を関係記憶処理部２３を通じて関係記憶領域２８に記憶する。この場合の関係は一意に実現となる。ここで、クラスＸのクラスＩＤはクライアントクラスＩＤとして、インターフェースＺのクラスＩＤはサプライヤクラスＩＤとして関係記憶領域２８に記憶される。
【００５７】
3.4:ソースコード解析部２１は、クラス宣言のクラス本体の解析を行う。
【００５８】
3.4.1:ソースコード解析部２１は、クラス宣言のクラス本体の解析結果からフィールド（図９ないし図１１の符号3.4.1の各行）の解析を行う。
【００５９】
3.4.1.1:ソースコード解析部２１は、フィールドの解析結果からフィールド変数のクラスＷの名前（クラス名）を抽出するとともに、そのクラスＷにＩＤ（クラスＩＤ）を付与する。そして、ソースコード解析部２１は、そのフィールド変数のクラスＷのクラス名とクラスＩＤをクラス記憶処理部２２を通じてクラス記憶領域２７に記憶する。
【００６０】
3.4.1.2:ソースコード解析部２１は、フィールド変数の変数名ａとそのフィールド変数のクラスＷのクラスＩＤ、所属クラスＸのＩＤを、変数に関する情報として変数記憶処理部２４を通じて変数記憶領域２９に記憶する。
【００６１】
3.4.1.3:ソースコード解析部２１は、所属クラスＸとフィールド変数のクラスＷの各クラスＩＤおよびそのクラス間の関係を関係記憶処理部２３を通じて関係記憶領域２８に記憶する。この場合の関係は一意に集約となる。
【００６２】
3.4.2:ソースコード解析部２１は、メソッド宣言の解析を行う。
【００６３】
3.4.2.1:ソースコード解析部２１は、結果型のクラスＵの名前（クラス名）を抽出し
、このクラスＵにＩＤ（クラスＩＤ）を付与する。そして、ソースコード解析部２１は、その結果型のクラスＵのクラス名とクラスＩＤを、クラス記憶処理部２２を通じてクラス記憶領域２７に記憶する。
【００６４】
3.4.2.2:ソースコード解析部２１は、その結果型のクラスＵと所属クラスＸの各クラスＩＤおよびその関係を関係記憶処理部２３を通じて関係記憶領域２８に記憶する。この場合の関係は一意に依存となる。ここで、結果型のクラスＵのクラスＩＤはクライアントクラスＩＤとして、所属クラスＸのクラスＩＤはサプライヤクラスＩＤとして関係記憶領域２８に記憶される。
【００６５】
3.4.3:ソースコード解析部２１は、メソッド本体の解析を行う。
【００６６】
3.4.3.1:ソースコード解析部２１は、メソッド本体の解析結果からブロックで利用されているローカル変数のクラスＶの名前（クラス名）を抽出するとともに、このローカル変数のクラスＶにＩＤ（クラスＩＤ）を付与する。そしてソースコード解析部２１は、そのローカル変数のクラスＶのクラス名とクラスＩＤをクラス記憶処理部２２を通じてクラス記憶領域２７に記憶する。
【００６７】
3.4.3.2:ソースコード解析部２１は、所属クラスＸとローカル変数のクラスＶの各ＩＤおよびそのクラス間の関係を関係記憶処理部２３を通じて関係記憶領域２８に記憶する。この場合の関係は一意に依存となる。ここで、ローカル変数のクラスＶのクラスＩＤはクライアントクラスＩＤとして、所属クラスＸのクラスＩＤはサプライヤクラスＩＤとして関係記憶領域２８に記憶される。
【００６８】
以上により、クラス記憶領域２７、関係記憶領域２８、および変数記憶領域２９に、ソースコード１７の解析によって得られた情報がそれぞれ記憶される。
【００６９】
図１２は図９ないし図１１のソースコードを含むソースコード１７から上記の解析によってクラス記憶領域２７に記憶されたクラスに関する情報の例である。このように、ソースコード１７に記述されている全てのクラスのクラスＩＤおよびクラス名がクラス記憶領域２７に記憶される。ステレオタイプ情報の項目は全て空欄である。
【００７０】
図１３は同じくそのソースコード１７から上記の解析によって関係記憶領域２８に記憶されたクラス間の関係に関する情報の例を示す。このように、ソースコード１７に記述されている全てのクラス間の関係（関連、集約、依存、継承、実現など）が関係記憶領域２８に記憶される。
【００７１】
図１４は同じくそのソースコード１７から上記の解析によって変数記憶領域２９に記憶されたフィールド変数に関する情報の例を示す。このように、ソースコード１７に記述されている全てのフィールド変数などが関係記憶領域２８に記憶される。
【００７２】
次に、ステレオタイプ情報の付与に関する動作の詳細を説明する。
【００７３】
図１５はこのステレオタイプ情報の付与の動作に関するシーケンス図である。
【００７４】
1:ステレオタイプ情報付与部２５は、ソースコード解析部２１からステレオタイプの情報の付与の指示を受け取る。
【００７５】
1.1:ステレオタイプ情報付与部２５は、このステレオタイプの情報の付与の指示を受け取ると、変換ルール定義ファイル１８を読み込む。
【００７６】
1.2:ステレオタイプ情報付与部２５は、読み込んだ変換ルール定義ファイル１８に記述された変換ルール（図６）に従って、クラス記憶領域２７（図１２）に記憶された全てのクラスに対して付与するステレオタイプ情報を判定するための処理を開始する。
【００７７】
1.2.1:まず、ステレオタイプ情報付与部２５は、クラス記憶領域２７に記憶されている全てのクラスのクラスＩＤとクラス名との対応関係を読み込む。
【００７８】
1.2.2:ステレオタイプ情報付与部２５は、関係記憶領域２８（図１３）に記憶されている全ての、関係するクラスの組み合わせであるクライアントクラスＩＤとサプライヤクラスＩＤとの組み合わせ、およびこれらのクラス間の関係を読み込む。
【００７９】
1.2.3:ステレオタイプ情報付与部２５は、以上読み込んだ変換ルール、クラスＩＤとクラス名との対応関係、関係するクラスの組み合わせおよびその関係をもとに、ステレオタイプ情報を付与する対象のクラスとその付与すべきステレオタイプ情報を決定する。
【００８０】
1.2.3.1:ステレオタイプ情報付与部２５は、決定したステレオタイプ情報を該当するクラスと対応付けてクラス記憶領域２７に記憶する。
【００８１】
1.3:ステレオタイプ情報付与部２５は、必要なクラスに対するステレオタイプ情報の付与が全て完了したところで、クラス図作成部２６に対してクラス図の作成を指示する。
【００８２】
図１６はクラス記憶領域２７にステレオタイプ情報が付与された結果を示す図である。ここで、同図に示すステレオタイプ情報が具体的にどのように決定されたのかを説明する。
【００８３】
クラス記憶領域２７の１行目のクラスに付与されたステレオタイプ<<View>>は、図６に示した変換ルールの中のルール２に基づくものである。関係記憶領域２８に記憶されている情報においてルール２の条件に合致するものは１行目の情報であり、ルール２の作用をもとに、クラスＩＤが０のCounterViewのクラスに対して<<View>>のステレオタイプが付与される。
【００８４】
クラス記憶領域２７の３行目のクラスに付与されたステレオタイプ<<Model>>は、図６に示した変換ルールの中のルール５に基づくものである。
【００８５】
クラス記憶領域２７の９行目のクラスに付与されたステレオタイプ<<Controller>>は、図６に示した変換ルールの中のルール１に基づくものである。
【００８６】
クラス記憶領域２７の１０行目のクラスに付与されたステレオタイプ<<interface>>は、図６に示した変換ルールの中のルール３に基づくものである。関係記憶領域２８に記憶されている情報においてルール３の条件に合致するものは９行目の情報であり、ルール３の作用をもとに、クラスＩＤが９のActionListenerのクラスに<<interface>>のステレオタイプ情報が付与される。
【００８７】
また、クラス記憶領域２７の２行目、４−８行目、１１行目のクラスにはステレオタイプ情報が付与されていない。これは図６に示した変換ルールの中のルール４に基づく結果である。
【００８８】
次に、クラス図作成部２６によるクラス図の作成・表示処理について説明する。
【００８９】
図１７はこのクラス図の作成・表示処理に関するシーケンス図である。
【００９０】
1:ステレオタイプ情報付与部２５よりクラス図の作成の指示がクラス図作成部２６に与えられる。
【００９１】
1.1:クラス図作成部２６は、ステレオタイプ情報付与部２５よりクラス図の作成の指示を受けると、クラス記憶領域２７から各クラスＩＤごとのクラス名とステレオタイプ情報を読み込む。
【００９２】
1.2:クラス図作成部２６は、変数記憶領域２９からクラスＩＤごとのフィールド変数名を読み込む。
【００９３】
1.3:クラス図作成部２６は、ここまで読み込んだクラス名、ステレオタイプ情報、フィールド変数名から、クラス間の関係線を除くクラス図を作成する。
【００９４】
1.3.1:クラス図作成部２６は、作成されたクラス間の関係線を除くクラス図の表示をディスプレイ３０に指示する。
【００９５】
2:続いてクラス図作成部２６は、関係記憶領域２８から関係するクラスＩＤの組み合わせ（クライアントクラスＩＤとサプライヤクラスＩＤ）とその関係を読み込む。
【００９６】
3:クラス図作成部２６は、関係記憶領域２８から読み込んだクラスＩＤ（クライアントクラスＩＤとサプライヤクラスＩＤ）に対応するクラス名をクラス記憶領域２７から読み込む。
【００９７】
4:クラス図作成部２６は、2:と3:で読み込んだ情報をもとにクラス間の関係線を作成する。
【００９８】
4.1:クラス図作成部２６は、作成したクラス間の関係線の表示をディスプレイ３０に指示する。
【００９９】
図１８は作成されたクラス図の例である。
【０１００】
ここで、（７−１）から（７−１１）はクラス、（７−１２）から（７−２１）は関係線である。クラスの表記は上段、中段、下段からなる。たとえば、ActionListenerのクラス（７−１０）を例にとると符号３３は上段、３４は中段、３５は下段である。上段にはクラス名とステレオタイプが記述され、ステレオタイプはクラス名の上に記述される。中段にはフィールド変数（属性）が記述される（図では省略）。下段にはメソッド（操作）が記述される（図では省略）。クラス間の関係線は線種と末端の形状によって関係の種類が表現されている。
【０１０１】
図１９に図１８のクラス図におけるクラスとクラス記憶領域２７の情報との対応関係を、また、図２０に図１８のクラス図における関係線と関係記憶領域２８の情報との対応関係をそれぞれ示す。
【０１０２】
以上説明したように、本実施形態の設計情報生成装置３００によれば、特定プラットフォームに特化したソースコード１７から、クラスにステレオタイプの情報が付与された設計情報を生成することができる。また、生成された設計情報からクラス図を作成して、設計者に掲示することができる。さらに、本実施形態のプログラム開発システム１００によれば、異なるプラットフォーム間でのソースコードの移植を行う際に、プラットフォームに依存しない設計情報のレベルで必要なカスタマイズを行うことができるので、異なるプラットフォーム間でのソースコードの移植工期の短縮を図ることができる。
【０１０３】
次に、本発明の第２の実施形態である設計情報生成装置におけるモデル抽出装置１１６の構成を説明するためのデータフローおよび機能ブロックである。
【０１０４】
図２１は第２の実施形態である設計情報生成装置におけるモデル抽出装置１１６の構成を説明するためのデータフローおよび機能ブロックである。
【０１０５】
本実施形態におけるモデル抽出装置１１６は、図２に示した第１の実施形態のモデル抽出装置１６にモデル補正部４１を付加したものである。
【０１０６】
このモデル補正部４１は、クラス図作成部２６によってディスプレイ３０に表示されたクラス図を参照したユーザ３１から入力部を通じて入力された修正命令を受けて、その修正内容をクラス記憶処理部２２、関係記憶処理部２３、変数記憶処理部２４を通じてクラス記憶領域２７、関係記憶領域２８、変数記憶領域２９の情報に反映させるための手段である。クラス記憶領域２７、関係記憶領域２８、変数記憶領域２９のそれぞれ修正内容は、クラス図作成部２６によって、ディスプレイ３０に表示されたクラス図に反映される。
【０１０７】
図２２は図１８のクラス図の補正例を示す図である。この補正例では、（７−３）のCounterのクラスにステレオタイプとして<<Model>>のみが付与されていたが、ユーザ３１の判断で、これに加えて、<<Service>>のステレオタイプ情報を付与した結果を示している。
【０１０８】
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々更新を加え得ることは勿論である。
【図面の簡単な説明】
【０１０９】
【図１】本発明の一実施形態にかかる設計情報生成装置を採用したプログラム開発システムの構成を示す図。
【図２】図１の設計情報生成装置の主要部であるモデル抽出装置の構成を説明するためのデータフローおよび機能ブロック図。
【図３】クラス記憶領域に記憶されるクラスに関する情報の構成を示す図。
【図４】関係記憶領域に記憶されるクラス間の関係に関する情報の構成を示す図。
【図５】変数記憶領域に記憶される変数に関する情報の構成を示す図。
【図６】変換ルール定義ファイルの内容を示す図表。
【図７】図２の設計情報生成装置の全体的な動作を示すシーケンス図。
【図８】図７中のソースコード解析の動作に関するシーケンス図。
【図９】ソースコードの例を示す図。
【図１０】ソースコードの例を示す図。
【図１１】ソースコードの例を示す図。
【図１２】クラス記憶領域に記憶されたクラスに関する情報の具体例を示す図。
【図１３】関係記憶領域に記憶されたクラス間の関係に関する情報の具体例を示す図。
【図１４】変数記憶領域に記憶されたフィールド変数に関する情報の具体例を示す図。
【図１５】ステレオタイプ情報の付与の動作に関するシーケンス図。
【図１６】クラス記憶領域にステレオタイプ情報が付与された結果を示す図。
【図１７】クラス図の作成・表示処理に関するシーケンス図。
【図１８】作成されたクラス図の例を示す図。
【図１９】図１８のクラスとクラス記憶領域の情報との対応関係を示す図。
【図２０】図１８のクラス図における関係線と関係記憶領域の情報との対応関係を示す図。
【図２１】第２の実施形態である設計情報生成装置におけるモデル抽出装置の構成を説明するためのデータフローおよび機能ブロック図。
【図２２】図１８のクラス図の補正例を示す図。
【符号の説明】
【０１１０】
１２…モデルコンパイラ、１２ａ…ＰＩＭ／ＰＳＭ変換部、１２ｂ…ＰＳＭ／ＰＩＭ変換部、１６…モデル抽出装置、１８…変換ルール定義ファイル、１９…ソースコード生成部、２１…ソースコード解析部、２２…クラス記憶処理部、２３…関係記憶処理部、２４…変数記憶処理部、２５…ステレオタイプ情報付与部、２６…クラス図作成部、２７…クラス記憶領域、２８…関係記憶領域、２９…変数記憶領域、４１…モデル補正部、１００…プログラム開発システム、１１６…モデル抽出装置、３００…設計情報生成装置。
【図１】
2007156761.tif 000003
【図２】
2007156761.tif 000004
【図３】
2007156761.tif 000005
【図４】
2007156761.tif 000006
【図５】
2007156761.tif 000007
【図６】
2007156761.tif 000008
【図７】
2007156761.tif 000009
【図８】
2007156761.tif 000010
【図９】
2007156761.tif 000011
【図１０】
2007156761.tif 000012
【図１１】
2007156761.tif 000013
【図１２】
2007156761.tif 000014
【図１３】
2007156761.tif 000015
【図１４】
2007156761.tif 000016
【図１５】
2007156761.tif 000017
【図１６】
2007156761.tif 000018
【図１７】
2007156761.tif 000019
【図１８】
2007156761.tif 000020
【図１９】
2007156761.tif 000021
【図２０】
2007156761.tif 000022
【図２１】
2007156761.tif 000023
【図２２】
2007156761.tif 000024