(57)【特許請求の範囲】
【請求項１】
ソースコードを受信するステップと、
前記ソースコードを目標モデルに変換するための変換規則を受信するステップと、
前記ソースコードと連関されたパーサを介して前記ソースコードをパースして特定データ構造を有するパースデータをメモリに格納するステップと、
前記格納されたパースデータをメタモデルに変換するステップと、
前記メタモデルを前記受信した変換規則によって目標モデルに変換するステップと、
前記目標モデルを受信し、所望のソースコード生成のための環境設定を行うステップと、
前記目標モデルのモデル要素を読み込んで、当該モデル要素がソースコード生成対象要素であるかを確認するステップと、
前記ソースコード生成対象であるモデル要素を当該モデル要素が有している前記環境設定に基づいた妥当性検証規則によって検証を行うステップと、
前記検証規則に適合したときに、ソースコードを生成するステップと、
を含むコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項２】
前記変換された目標モデルをＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）標準に合う形態に再度変換してファイルに記録するステップをさらに含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項３】
前記変換規則を受信するステップは、
ソース変換規則、モデル変換規則、命名規則、及び関係設定規則で構成される変換規則を受信するステップを含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項４】
前記メタモデルを前記受信した変換規則によって目標モデルに変換するステップは、
前記変換規則によってソースコードの特定要素または目標モデルの特定要素を指定して変換するステップを含むことを特徴とする請求項３に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項５】
前記パースデータをメモリに格納するステップは、
前記ソースコードのプログラミング言語種類に応じて他のデータ構造を有するデータにパースするステップを含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項６】
前記格納されたパースデータをメタモデルに変換するステップは、前記ソースコードの種類及びプログラム言語に関係なく、ソースコードの全ての要素を特定データ構造で表すメタモデルに変換するステップを含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項７】
前記変換規則によって関心対象でないソースコードを変換対象から除くステップを含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項８】
ＵＭＬで表現され得ないソースコード情報に対する別の変換規則を受信するステップを含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項９】
前記ＵＭＬが表現できないソースコード情報に対してメッセージ（ｍｅｓｓａｇｅ）ライフライン、例外処理（ｅｘｃｅｐｔｉｏｎ）ライフライン、妥当性検証（ｖａｌｉｄａｔｉｏｎ）ライフライン、またはコード（ｃｏｄｅ）ライフラインのうち、少なくとも１つにメッセージを生成するステップをさらに含むことを特徴とする請求項８に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項１０】
前記ソースコードの全ての情報が前記目標モデルに含まれているか検証するステップをさらに含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項１１】
前記メタモデルを前記受信した変換規則によって目標モデルに変換するステップは、
前記メタモデルを前記受信した変換規則によってソースモデルに変換するステップと、
前記ソースモデルを前記目標モデルに変換するためのモデル−ｔｏ−モデル変換規則を受信するステップと、
前記モデル−ｔｏ−モデル変換規則によって前記ソースモデルを前記目標モデルに変換するステップと、
を含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項１２】
前記ソースコード生成のための環境設定を行うステップは、
前記目標モデルの要素及び各要素別の変換規則を登録し、
変換規則の実行条件を指定して環境設定を行うステップを含むことを特徴とする請求項１に記載のコンピュータ実行可能なモデルリバースエンジニアリング方法。
【請求項１３】
モデルリバースエンジニアリング可能なプログラムが格納されたメモリ部と、
前記プログラムを実行するプロセッサと、
を備え、
前記プロセッサは、
入力されたソースコードをパーサを介して特定データ構造を有するパースデータにパースし、
パースされたデータをメタモデルに変換し、
前記メタモデルを入力された変換規則によって目標モデルに変換し、
前記変換された目標モデルを用いてソースコードを生成し、
前記目標モデルを受信し、所望のソースコード生成のための環境設定を行い、
前記目標モデルのモデル要素を読み込んで、当該モデル要素がソースコード生成対象要素であるかを確認し、
前記ソースコード生成対象であるモデル要素を当該モデル要素が有している前記環境設定に基づいた妥当性検証規則によって検証を行い、
前記検証規則に適合したときに、ソースコードを生成する、
モデルリバースエンジニアリング装置。
【請求項１４】
前記プロセッサは、
ソースコードを受信し、前記ソースコードを目標モデルに変換するための変換規則を受信し、
パースされた特定データ構造を有するパースデータをメモリに格納する請求項１３に記載のモデルリバースエンジニアリング装置。
【請求項１５】
前記プロセッサは、
前記ソースコードのプログラミング言語種類に応じて他の形態のデータ構造を有するデータにパースすることを特徴とする請求項１４に記載のモデルリバースエンジニアリング装置。
【請求項１６】
前記プロセッサは、
前記ソースコードの種類及びプログラム言語に関係なく、ソースコードの全ての要素を特定データ構造で表すメタモデルに変換することを特徴とする請求項１４に記載のモデルリバースエンジニアリング装置。
【請求項１７】
前記プロセッサは、
ＵＭＬが表現できないソースコード情報に対する別の変換規則を受信することを特徴とする請求項１４に記載のモデルリバースエンジニアリング装置。
【請求項１８】
前記プロセッサは、
ソースモデルを受信し、目標モデルに変換するためのモデル−ｔｏ−モデル変換規則によって前記ソースモデルを目標モデルに変換することを特徴とする請求項１３に記載のモデルリバースエンジニアリング装置。
【請求項１９】
前記プロセッサは、
ソースモデルの正規化された名前及び目標モデルの正規化された名前で構成されるモデル−ｔｏ−モデル変換規則を受信することを特徴とする請求項１８に記載のモデルリバースエンジニアリング装置。
【請求項２０】
前記プロセッサは、
前記目標モデルの要素及び各要素別の変換規則を登録し、
変換規則の実行条件を指定して環境設定を行うことを特徴とする請求項１３に記載のモデルリバースエンジニアリング装置。
【請求項２１】
ソースコードを受信する機能と、
前記ソースコードを目標モデルに変換するための変換規則を受信する機能と、
前記ソースコードと連関されたパーサを介して前記ソースコードをパースして特定データ構造を有するパースデータをメモリに格納する機能と、
前記格納されたパースデータをメタモデルに変換する機能と、
前記メタモデルを前記受信した変換規則によって目標モデルに変換する機能と、
前記目標モデルを受信し、所望のソースコード生成のための環境設定を行う機能と、
前記目標モデルのモデル要素を読み込んで、当該モデル要素がソースコード生成対象要素であるかを確認する機能と、
前記ソースコード生成対象であるモデル要素を当該モデル要素が有している前記環境設定に基づいた妥当性検証規則によって検証を行う機能と、
前記検証規則に適合したときに、ソースコードを生成する機能と、
を含むことを特徴とするモデルリバースエンジニアリング方法をコンピュータで実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置に関し、より詳細には、プログラムのソースコードをモデルに変換する構造及び規則を定義し、所望の形態のモデルを自動に生成して、プログラムの構造を容易に分析し、再設計するコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置に関する。
【背景技術】
【０００２】
既存に使用されるプログラムを分析する方法は、人が直接ソースコードを読み込んで分析する方法と、影響度分析ツールを介してソースコードを視角化する方法とがある。前者は、分析する人の技術的な力量に左右される傾向が大きく、後者は、単純に機械的にプログラムの形状をそのまま視角化して所望の形態のデータに加工するために費用が発生する。上記の２つの方法は共に、生成された成果物が参考資料となるだけであり、再利用が不可能である。
【０００３】
モデルリバースエンジニアリングを介して表現する成果物は、大きく２つの種類に区分される。１つは、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）に該当する汎用的に使用できるように考案されたモデリング言語であり、他の１つは、Ｃｈａｎｇｅ  Ｍｉｎｅｒに該当する影響分析ツールらが使用する専用表現方式である。図７ａは、汎用的なモデリング言語ＵＭＬのコンポーネントを示し、図７ｂは、影響分析ツールであるＣｈａｎｇｅ  Ｍｉｎｅｒを示す。
【０００４】
前者の場合、様々なＳＷ環境とプログラミング言語のためのモデルを生成できるように包括的な表記法を提供するが、その量が膨大であり、概略的なＳＷモデルを作ることはできるが、ＵＭＬで表記法を提示しないソースコード情報はなくなる。これにより、リバースエンジニアリングとして生成したモデルで再度実行可能なソースコードを生成することが不可能である。後者の場合、影響分析ツールらが提供するリバースエンジニアリング成果物は、ソースコードの様々な情報を表現できるという点では活用度が高い。しかし、リバースエンジニアリング成果物をモデルとして再使用して、これに基づいて設計したりする２次活用が不可能な単純Ｒｅｐｏｒｔを提供するだけであるから、活用度が低下し、ソースコードの形状をそのまま見せるので、不要な情報を多く含んでいる。
【０００５】
したがって、リバースエンジニアリングを介して所望の形状のモデルを作り、これを設計に再使用することができ、ソースコードの全ての情報を活用でき、これを介して様々なプログラミング言語で実行可能なソースコードを生成できる装置を作る必要がある。これを介してＳＷ開発の便宜性と品質を向上させることができる。
【０００６】
韓国登録特許第１０−０４６３８３３号は、コンポーネント自動変換システム及び方法に関するものであって、オブジェクト指向型のコンピュータシステムでシステムのソースコードを自動的に分析し、分析した情報を利用してソースコードをコンポーネントに変換させるコンポーネント自動変換システム及び方法に関するものである。
【０００７】
韓国登録特許第１０−０９６５７０６号は、コード再書き込みが可能なコンピュータ装置及びコード再書き込み方法に関するものであって、コードユニットの開発、配置、及び実行の間、様々な段階で実施され得るコード再書き込み器の拡張可能、構成可能セットを介してコードユニットの再書き込み及び変換を提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の一実施形態は、既存のソースコードを所望の形態のモデルに変換して、プログラムの分析、構造把握、及び再設計を容易にすることができるコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置を提供しようとする。
【０００９】
本発明の一実施形態は、ソースコードにある全ての情報を、遺失される情報無しで、モデルに表現することにより、モデルのみでソースコードの全ての内容を確認できるコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置を提供しようとする。
【００１０】
本発明の一実施形態は、ソースコードを抽象化された形態の表現式に変換することにより、ソースコードを作成したプログラム言語に拘らず、全ての情報を抽象化して表現できるコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置を提供しようとする。
【００１１】
本発明の一実施形態は、１つのモデルを介して様々なプログラミング言語で同じ機能を果たすプログラムを生成できるコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置を提供しようとする。
【課題を解決するための手段】
【００１２】
実施形態の中で、コンピュータ実行可能なモデルリバースエンジニアリング方法は、ソースコードを受信するステップと、前記ソースコードを目標モデルに変換するための変換規則を受信するステップと、前記ソースコードと連関されたパーサを介して前記ソースコードをパースして特定データ構造を有するパースデータをメモリに格納するステップと、前記格納されたパースデータをメタモデルに変換するステップと、前記メタモデルを前記受信した変換規則によって目標モデルに変換するステップとを含む。
【００１３】
一実施形態において、コンピュータ実行可能なモデルリバースエンジニアリング方法は、前記変換された目標モデルをＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）標準に合う形態に再度変換してファイルに記録するステップをさらに含むことができる。
【００１４】
一実施形態において、前記変換規則を受信するステップは、ソース変換規則、モデル変換規則、命名規則、及び関係設定規則で構成される変換規則を受信するステップを含むことができる。ここで、前記メタモデルを前記受信した変換規則によって目標モデルに変換するステップは、前記変換規則によってソースコードの特定要素または目標モデルの特定要素を指定して変換するステップを含むことができる。
【００１５】
一実施形態において、前記パースデータをメモリに格納するステップは、前記ソースコードのプログラミング言語の種類に応じて他のデータ構造を有するデータにパースするステップを含むことができる。
【００１６】
一実施形態において、前記格納されたパースデータをメタモデルに変換するステップは、前記ソースコードの種類及びプログラム言語に関係なく、ソースコードの全ての要素を特定データ構造で表すメタモデルに変換するステップを含むことができる。
【００１７】
一実施形態において、コンピュータ実行可能なモデルリバースエンジニアリング方法は、前記変換規則によって関心対象でないソースコードを変換対象から除くステップを含むことができる。
【００１８】
一実施形態において、コンピュータ実行可能なモデルリバースエンジニアリング方法は、ＵＭＬで表現され得ないソースコード情報に対する別の変換規則を受信するステップを含むことができる。他の一実施形態において、コンピュータ実行可能なモデルリバースエンジニアリング方法は、前記ＵＭＬが表現できないソースコード情報に対して、メッセージ（ｍｅｓｓａｇｅ）ライフライン、例外処理（ｅｘｃｅｐｔｉｏｎ）ライフライン、妥当性検証（ｖａｌｉｄａｔｉｏｎ）ライフライン、またはコード（ｃｏｄｅ）ライフラインのうち、少なくとも１つにメッセージを生成するステップをさらに含むことができる。
【００１９】
一実施形態において、コンピュータ実行可能なモデルリバースエンジニアリング方法は、前記ソースコードの全ての情報が前記目標モデルに含まれているか検証するステップをさらに含むことができる。
【００２０】
一実施形態において、前記メタモデルを前記受信した変換規則によって目標モデルに変換するステップは、前記メタモデルを前記受信した変換規則によってソースモデルに変換するステップと、前記ソースモデルを前記目標モデルに変換するためのモデル−ｔｏ−モデル変換規則を受信するステップと、前記モデル−ｔｏ−モデル変換規則によって前記ソースモデルを前記目標モデルに変換するステップとを含むことができる。
【００２１】
一実施形態において、コンピュータ実行可能なモデルリバースエンジニアリング方法は、前記目標モデルを受信し、ソースコード生成のための環境設定を行うステップと、前記目標モデルの要素を読み込んで、当該要素がソースコード生成対象要素であるか確認するステップと、前記生成対象であるモデル要素を当該要素が有している妥当性検証規則によって検証を行うステップと、前記検証結果に応じてソースコードを生成するステップとをさらに含むことができる。
【００２２】
一実施形態において、前記ソースコード生成のための環境設定を行うステップは、
【００２３】
前記目標モデルの要素及び各要素別の変換規則を登録し、変換規則の実行条件を指定して環境設定を行うステップを含むことができる。
【００２４】
実施形態の中で、モデルリバースエンジニアリング装置は、モデルリバースエンジニアリング可能なプログラムが格納されたメモリ部及び前記プログラムを実行するプロセッサを備え、前記プロセッサは、入力されたソースコードを、パーサを介して特定データ構造を有するパースデータにパースし、パースされたデータをメタモデルに変換し、前記メタモデルを入力された変換規則によって目標モデルに変換し、前記変換された目標モデルを用いてソースコードを生成する。
【００２５】
一実施形態において、前記プロセッサは、ソースコードを受信し、前記ソースコードを目標モデルに変換するための変換規則を受信し、パースされた特定データを有するパースデータをメモリに格納することができる。他の一実施形態において、前記プロセッサは、前記ソースコードのプログラミング言語種類に応じて他の形態の資料構造を有するデータにパースすることができる。
【００２６】
一実施形態において、前記プロセッサは、前記ソースコードの種類及びプログラム言語に関係なく、ソースコードの全ての要素を特定データ構造で表すメタモデルに変換することができる。他の一実施形態において、前記プロセッサは、ＵＭＬが表現できないソースコード情報に対する別の変換規則を受信することができる。
【００２７】
一実施形態において、前記プロセッサは、ソースモデルを受信し、目標モデルに変換するためのモデル−ｔｏ−モデル変換規則によって前記ソースモデルを目標モデルに変換することができる。他の一実施形態において、前記プロセッサは、ソースモデルの正規化された名前及び目標モデルの正規化された名前で構成されるモデル−ｔｏ−モデル変換規則を受信することができる。
【００２８】
一実施形態において、前記プロセッサは、前記目標モデルを受信し、ソースコード生成のための環境設定を行い、前記目標モデルの要素を読み込んで、当該要素がソースコード生成対象要素であるか確認し、前記生成対象であるモデル要素を、当該要素が有している妥当性検証規則によって検証を行い、前記検証結果に応じてソースコードを生成できる。他の一実施形態において、前記プロセッサは、前記目標モデルの要素及び各要素別の変換規則を登録し、変換規則の実行条件を指定して環境設定を行うことができる。
【００２９】
実施形態の中で、モデルリバースエンジニアリング方法をコンピュータで実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体は、ソースコードを受信する機能、前記ソースコードを目標モデルに変換するための変換規則を受信する機能、前記ソースコードと連関されたパーサを介して前記ソースコードをパースして特定データ構造を有するパースデータをメモリに格納する機能、前記格納されたパースデータをメタモデルに変換する機能、及び前記メタモデルを前記受信した変換規則によって目標モデルに変換する機能を含む。
【発明の効果】
【００３０】
開示された技術は、次の効果を有することができる。ただし、特定実施形態が次の効果を全て含むべきであるか、次の効果のみを含むべきであるという意味ではないので、開示された技術の権利範囲は、これによって制限されることと理解されてはならないであろう。
【００３１】
本発明の一実施形態に係るコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置は、既存のソースコードを所望の形態のモデルに変換して、プログラムの分析、構造把握、及び再設計を容易にすることができる。
【００３２】
本発明の一実施形態に係るコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置は、ソースコードにある全ての情報をモデルに表現することにより、モデルのみでソースコードの全ての内容を確認することができる。
【００３３】
本発明の一実施形態に係るコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置は、ソースコードを抽象化された形態の表現式に変換することにより、ソースコードを作成したプログラム言語に拘らず、全ての情報を抽象化して表現できる。
【００３４】
本発明の一実施形態に係るコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置は、１つのモデルを介して様々なプログラミング言語で同じ機能を果たすプログラムを生成できる。
【図面の簡単な説明】
【００３５】
【図１】モデルリバースエンジニアリング装置の構成を説明するブロック図である。
【図２】図１にあるモデルリバースエンジニアリングプログラム実行器の構成を説明するブロック図である。
【図３】図２にあるソースコードモデル変換器の構成及び作動を説明する図である。
【図４】図３にある変換規則受信部により受信される変換規則を説明する図である。
【図５ａ】図２にあるモデル−ｔｏ−モデル変換器の構成及び作動を説明する図である。
【図５ｂ】図２にあるモデル−ｔｏ−モデル変換器の構成及び作動を説明する図である。
【図６ａ】図２にあるソースコードモデル変換器によるコード系列表現式リバースエンジニアリング方法を説明する図である。
【図６ｂ】図２にあるソースコードモデル変換器によるコード系列表現式リバースエンジニアリング方法を説明する図である。
【図７ａ】図２にあるコード生成器の構造とコード生成方法を示す図である。
【図７ｂ】図２にあるコード生成器の構造とコード生成方法を示す図である。
【図８ａ】汎用的なモデリング言語ＵＭＬの構成要素と影響分析ツールであるＣｈａｎｇｅ  Ｍｉｎｅｒを示す図である。
【図８ｂ】汎用的なモデリング言語ＵＭＬの構成要素と影響分析ツールであるＣｈａｎｇｅ  Ｍｉｎｅｒを示す図である。
【発明を実施するための形態】
【００３６】
本発明に関する説明は、構造的ないし機能的説明のための実施形態に過ぎないので、本発明の権利範囲は、本文に説明された実施形態によって制限されることと解釈されてはならない。すなわち、実施形態は、様々な変更が可能であり、種々の形態を有することができるので、本発明の権利範囲は、技術的思想を実現できる均等物を含むことと理解されなければならない。また、本発明において提示された目的または効果は、特定実施形態がこれを全て含むべきであるか、そのような効果のみを含むべきであるという意味ではないので、本発明の権利範囲は、これによって制限されることと理解されてはならないであろう。
【００３７】
一方、本出願において叙述される用語の意味は、次のように理解されるべきであろう。
【００３８】
「第１」、「第２」などの用語は、１つの構成要素を他の構成要素から区別するためのものであって、これらの用語により権利範囲が限定されてはならない。例えば、第１構成要素は第２構成要素として命名されることができ、同様に、第２構成要素も第１構成要素として命名されることができる。
【００３９】
ある構成要素が他の構成要素に「連結されて」いると言及されたときには、その他の構成要素に直接的に連結されることもできるが、中間に他の構成要素が存在することができるとも理解されるべきであろう。それに対し、ある構成要素が他の構成要素に「直接連結されて」いると言及されたときには、中間に他の構成要素が存在しないことと理解されるべきであろう。一方、構成要素間の関係を説明する他の表現、すなわち、「〜間に」と「直ぐ〜間に」、または「〜に隣接する」と「〜に直接隣接する」なども同様に解釈されなければならない。
【００４０】
単数の表現は、文脈上、明白に異なるように意味しない限り、複数の表現を含むことと理解されなければならず、「含む」または「有する」などの用語は、実施された特徴、数字、ステップ、動作、構成要素、部分品、またはこれらを組み合わせたものが存在することを指定しようとするものであり、１つまたはそれ以上の他の特徴や数字、ステップ、動作、構成要素、部分品、またはこれらを組み合わせたものなどの存在または付加可能性を予め排除しないことと理解されなければならない。
【００４１】
各ステップにおいて、識別符号（例えば、ａ、ｂ、ｃなど）は、説明の便のために使用されるものであって、識別符号は、各ステップの順序を説明するものでなく、各ステップは、文脈上、明白に特定順序を記載しない以上、明記された順序と異なるように起こることができる。すなわち、各ステップは、明記された順序と同様に起こることができ、実質的に同時に実行されることができ、逆の順序どおりに実行されることもできる。
【００４２】
本発明は、コンピュータ読み取り可能な記録媒体にコンピュータ読み取り可能なコードとして実現されることができ、コンピュータ読み取り可能な記録媒体は、コンピュータシステムによって読み込まれ得るデータが格納されるあらゆる種類の記録装置を含む。コンピュータ読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピーディスク、光データ格納装置などがあり、また、キャリアウェーブ（例えば、インターネットを介しての伝送）の形態で実現されることも含む。また、コンピュータ読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータ読み取り可能なコードが格納され、実行されることができる。
【００４３】
ここで使用される全ての用語は、異なるように定義されない限り、本発明の属する分野における通常の知識を有した者により一般的に理解されることと同じ意味を有する。一般的に使用される辞書に定義されている用語は、関連技術の文脈上有する意味と一致することと解釈されなければならず、本出願において明らかに定義しない限り、理想的であるか、過度に形式的な意味を有することと解釈されることができない。
【００４４】
図１は、モデルリバースエンジニアリング装置の構成を説明するブロック図である。
【００４５】
図１に示すように、本発明の一実施形態に係るモデルリバースエンジニアリング装置１０は、プロセッサ１１０、不揮発性メモリ１２０、揮発性メモリ１３０、ネットワークインターフェース１４０、入力装置１５０、及び出力装置１６０を備える。
【００４６】
プロセッサ１１０は、プロセッサ２１０は、モデルリバースエンジニアリングプログラム実行器１１２及びメモリマネージャ１１４を備えることができる。モデルリバースエンジニアリングプログラム実行器１１２は、モデルリバースエンジニアリングプログラムを実行させて、ソースコードリバースエンジニアリングを介してのモデル生成及び変換プロシージャを実行する。メモリマネージャ２１４は、モデルリバースエンジニアリングプログラム実行器１１２によって読み込まれるか、または記録される不揮発性メモリ１２０及び揮発性メモリ１３０にあるメモリ領域を管理する。
【００４７】
不揮発性メモリ１２０は、ＳＳＤ（Ｓｏｌｉｄｅ  Ｓｔａｔｅ  Ｄｉｓｋ）またはＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で実現されることができ、モデルリバースエンジニアリングプログラム及びモデルリバースエンジニアリングプログラム実行に必要なデータを格納するのに使用される。揮発性メモリ１３０は、不揮発性メモリ１２０に格納されたモデルリバースエンジニアリングプログラムを一時格納するのに使用される。
【００４８】
ネットワークインターフェース１４０は、ネットワークを介してモデルリバースエンジニアリング装置１０を外部サーバと連結するための環境を含み、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）通信のためのアダプタを含むことができる。
【００４９】
入力装置１５０は、ユーザ入力を受信するための環境を含み、例えば、マウス、トラックボール、タッチパッド、グラフィックタブレット、スキャナー、タッチスクリーン、キーボード、またはポインティング装置などを含むことができる。出力装置１６０は、ユーザに特定情報（例えば、メタモデル、目標モデル、またはソースコードなど）を出力するための環境を含み、例えば、モニターまたはタッチスクリーンなどを含むことができる。一例において、入力装置１５０と出力装置１６０は遠隔接続を介して接続されることができる。
【００５０】
図２は、図１にあるモデルリバースエンジニアリングプログラム実行器の構成を説明するブロック図である。
【００５１】
図２に示すように、本発明の一実施形態に係るモデルリバースエンジニアリングプログラム実行器１１２は、ソースコードモデル変換器２１０、モデル−ｔｏ−モデル変換器２２０及びコード生成器２３０を備える。モデルリバースエンジニアリングプログラム実行器１１２は、ソースコードリバースエンジニアリングを介してのモデル生成及び変換が可能な装置であって、ソースコードまたはソースモデルを受信し、ユーザの所望の形態のモデルを生成及び変換することができ、変換規則を作成して適用するにおいて柔軟で、かつ様々な検証規則を指定できる。また、モデルリバースエンジニアリングプログラム実行器１１２は、モデルにソースコードの全ての情報を格納し、これを介して新しいプログラミング言語への変換を可能とする。ソースコードモデル変換器２１０、モデル−ｔｏ−モデル変換器２２０、及びコード生成器２３０は、以下、図３ないし図７において詳しく説明する。
【００５２】
図３は、図２にあるソースコードモデル変換器の構成及び作動を説明する図である。
【００５３】
図３に示すように、本発明の一実施形態に係るソースコードモデル変換器２１０は、変換規則受信部２１２、パーサ２１４、メタモデル変換部２１６、及びモデル変換部２１８を備える。ソースコードが入力されれば、変換規則受信部２１２は変換規則を受信し、パーサ２１４は、ソースコードをパースしてデータをメモリに格納し、メタモデル変換部２１６は、メモリに格納されたデータを呼び出してプログラム言語から独立的なメタモデルにソースコードの情報を格納することができる。モデル変換部２１８は、変換規則を受信し、メタモデルを目標モデルに変換してＵＭＬ標準に合うモデルを算出することができる。ソースコードは、ＵＭＬモデルに変換する対象となるソースコードであり、Ｊａｖａ（登録商標）、Ｃ、ＣＯＢＯＬなど、種々のプログラミング言語で作られたソースのうちの１つになることができる。
【００５４】
変換規則受信部２１２は、受信したソースコードを目標モデルに変換するための変換規則を受信できる。変換規則受信部２１２は、ソースコードに命名規則が存在する場合、当該規則を把握し、変換目標モデルの構造に関する情報を含む変換規則を受信できる。変換規則受信部２１２は、入力されたソースコードに対する情報、変換される目標モデルに対する情報、命名規則に対する情報、及び関係設定に対する情報を含む変換規則を受信できる。変換規則については、以下、図４において詳しく説明する。
【００５５】
パーサ２１４は、ソースコードをパースして特定データ構造を有するパースデータをメモリに格納することができる。すなわち、ソースコードをパース（ｐａｒｓｉｎｇ）してツリー形態のデータ構造を有したデータをメモリに載せる作業をすることができる。パーサ２１４は、ソースコードがどんなプログラミング言語であるかによってその形態が変わり得る。パースは、コンピュータでコンパイラまたは翻訳機が原始符号を機械語に翻訳する過程の１つの段階であり、各文章の文法的な構成または構文を分析する過程である。すなわち、原始プログラムで現れたトークン（ｔｏｋｅｎ）の列を受け入れて、これをその言語の文法に合うように構文分析ツリー（ｐａｒｓｅ  ｔｒｅｅ）に構成し出すことである。したがって、パーサ２１４は、ソースコードの種類に応じて形態が変わり得るし、ソースコードのプログラミング言語種類に応じて他のデータ構造を有するデータにパースすることができる。
【００５６】
メタモデル変換部２１６は、前記格納されたパースデータをメタモデルに変換できる。メタモデル変換部２１６は、種々の種類のソースコードが作ったデータを１つのメタモデルデータ構造に変換する作業をすることができる。メタモデル変換部２１６は、ソースコードがいかなるプログラミング言語となっていても、パーサ２１４のみ交替すれば、モデルリバースエンジニアリング装置１０が同じ品質と形態のＵＭＬモデルを生成できるようにすることができる。したがって、メタモデル変換部２１６は、ソースコードの種類及びプログラム言語に関係なく、ソースコードの全ての要素を特定データ構造として表すメタモデルに変換できる。
【００５７】
モデル変換部２１８は、メタモデル変換部２１６により変換されたメタモデルを変換規則受信部２１２により受信された変換規則によって目標モデルに変換できる。モデル変換部２１８は、変換された目標モデルをＵＭＬ標準に合う形態に再度変換してファイルに記録することができる。モデル変換部２１８は、ＵＭＬモデルで表現されない単純表現式系列の構文に対しては、別の変換規則を受信してＵＭＬモデルに変換することができる。モデル変換部２１８を介して変換されたモデルは、ＵＭＬモデル形式に格納され、これは、ＩＢＭ  Ｒａｔｉｏｎａｌ  Ｓｏｆｔｗａｒｅ  ＡｒｃｈｉｔｅｃｔのようなＵＭＬ編集ソフトウェアを介して確認されることができる。モデル変換部２１８は、変換規則によって関心対象でないソースコードを変換対象から除くことができ、変換規則によってソースコードの特定要素または目標モデルの特定要素を指定して変換することができる。ソースコードの特定要素は、ソースコード構成要素のうち、目標モデルに変換される変換対象項目であり、ソースコードのパッケージ（Ｐａｃｋａｇｅ）、クラス（Ｃｌａｓｓ）、アトリビュート（Ａｔｔｒｉｂｕｔｅ）、オペレーション（Ｏｐｅｒａｔｉｏｎ）などに該当でき、目標モデルの特定要素は、変換された目標モデルの変換結果項目であり、パッケージ（Ｐａｃｋａｇｅ）、インターフェース（Ｉｎｔｅｒｆａｃｅ）、クラス（Ｃｌａｓｓ）、属性（Ａｔｔｒｉｂｕｔｅ）、オペレーション（Ｏｐｅｒａｔｉｏｎ）、コラボレーション（Ｃｏｌｌａｂｏｒａｔｉｏｎ）、シーケンスダイヤグラム（Ｓｅｑｕｅｎｃｅ  Ｄｉａｇｒａｍ）、クラスダイヤグラム（Ｃｌａｓｓ  Ｄｉａｇｒａｍ）、コードライフライン（Ｃｏｄｅ  Ｌｉｆｅｌｉｎｅ）、メッセージライフライン（Ｍｅｓｓａｇｅ  Ｌｉｆｅｌｉｎｅ）、妥当性検証ライフライン（Ｖａｌｉｄａｔｉｏｎ  Ｌｉｆｅｌｉｎｅ）、例外処理ライフライン（Ｅｘｃｅｐｔｉｏｎ  Ｌｉｆｅｌｉｎｅ）などに該当できる。ここで、関心対象でないソースコードは、ソースコードの特定要素として指定されていない要素であり、ユーザから選択されることができる。例えば、ユーザが関心対象でないソースコードとして注釈や呼び出されない情報を選択すれば、これと関連した情報は捨てられることができる。また、モデル変換部２１８は、ソースコードの全ての情報が前記目標モデルに含まれているか検証できる。
【００５８】
図４は、図３にある変換規則受信部により受信される変換規則を説明する図である。
【００５９】
図４において変換規則は、入力されるソースコードに対する情報（ソース変換規則）１１１、変換される目標モデルに対する情報（モデル変換規則）１１２、変換されるモデル要素の命名規則に対する情報（命名規則）１１３、変換されるモデル要素間の関係設定情報（関係設定規則）１１４でなされることができる。
【００６０】
ソース変換規則４１０は、モデルに変換する対象となるソースを、正規式を利用して指定することができる。ソースは、正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）、属性、関数、及びソース種類を表す正規式を含むことができる。正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）は、リバースエンジニアリング対象ソースを指定する正規式である。パッケージまたはフォルダを含んだクラス名のうち、この項目に定義された正規式にマッチングされるソースコードのみモデルに変換される。モデル変換部２１８は、パッケージまたはクラス名に命名規則が存在する場合、この項目を利用してソースを分類し、モデルに変換することができ、関心対象でないソースコードは、リバースエンジニアリング対象から除かれることができる。属性は、クラスまたはファイル内に属した属性を表す正規式である。モデル変換部２１８は、この項目を利用して正規化された名前（ＱｕａｌｆｉｅｄＮａｍｅ）にマッチングされるクラスまたはファイルに属した属性のうち、全体または特定属性のみモデルに変換することができる。関数は、クラスまたはファイル内に属した関数を表す正規式である。モデル変換部２１８は、この項目を利用して正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）にマッチングされるクラスまたはファイルに属した関数のうち、全体または特定関数のみモデルに変換することができる。ソース種類がｊａｖａ（登録商標）でないｃや他の言語である場合、ファイル名がファイルの拡張子として唯一に区分される場合、モデル変換部２１８は、この項目に拡張子に該当する値を入れて、特定種類のソースのみモデルに変換することができる。
【００６１】
モデル変換規則４２０は、目標モデルに対する構成情報を表すことができる。ＩＤは、モデルに変換される要素を唯一に区分できる値であり、ユーザが任意に付与することができる。モデル要素は、モデルのある要素に変換するか指定する項目であり、パッケージ（Ｐａｃｋａｇｅ）、インターフェース（Ｉｎｔｅｒｆａｃｅ）、クラス（Ｃｌａｓｓ）、属性（Ａｔｔｒｉｂｕｔｅ）、オペレーション（Ｏｐｅｒａｔｉｏｎ）、コラボレーション（Ｃｏｌｌａｂｏｒａｔｉｏｎ）、シーケンスダイヤグラム（Ｓｅｑｕｅｎｃｅ  Ｄｉａｇｒａｍ）、クラスダイヤグラム（Ｃｌａｓｓ  Ｄｉａｇｒａｍ）、コードライフライン（Ｃｏｄｅ  Ｌｉｆｅｌｉｎｅ）、メッセージライフライン（Ｍｅｓｓａｇｅ  Ｌｉｆｅｌｉｎｅ）、妥当性検証ライフライン（Ｖａｌｉｄａｔｉｏｎ  Ｌｉｆｅｌｉｎｅ）、例外処理ライフライン（Ｅｘｃｅｐｔｉｏｎ  Ｌｉｆｅｌｉｎｅ）などが指定され得る。ソース要素は、ソースのある要素をモデルに変換するか指定する項目であり、パッケージ（Ｐａｃｋａｇｅ）、クラス（Ｃｌａｓｓ）、属性（Ａｔｔｒｉｂｕｔｅ）、オペレーション（Ｏｐｅｒａｔｉｏｎ）などが指定され得る。ソース要素を指定しなければ、ソースには存在しないが、目標モデルには存在しなければならない要素が挿入され得る。ステレオタイプには、変換されたモデル要素に指定するステレオタイプが記入される。上位要素ＩＤは、当該要素が属する上位要素ＩＤを指定する。
【００６２】
命名規則４３０は、変換されるモデル要素を命名する命名規則に対する情報を表すことができる。ソース接頭辞は、モデルへの変換の際、除去しようとするソースの接頭辞である。モデル接頭辞は、モデルへの変換の際、モデル要素名に入れようとする接頭辞である。ソース接尾辞は、モデルへの変換の際、除去しようとするソースの接尾辞である。モデル接尾辞は、モデルへの変換の際、モデル要素名に入れようとする接尾辞である。命名規則は、モデル要素に該当するソース名をモデル名に変換するとき、適用しようとする命名規則である。無し（ｎｏｎｅ）、韓国語（Ｋｏｒｅａｎ）、カスタム（Ｃｕｓｔｏｍ）などの項目を指定でき、無し（Ｎｏｎｅ）は、ソース名をそのままモデル名として用い、韓国語（Ｋｏｒｅａｎ）は、予め入力されたハングル名−英文名辞書を利用し、ソースの英文名をハングル名に変換してモデル名として使用し、カスタム（Ｃｕｓｔｏｍ）は、単純英文−ハングル変換でない場合、それに合うソースプログラムを製作して指定できるようにする。命名クラスは、命名規則でカスタム（Ｃｕｓｔｏｍ）に項目が指定された場合、モデル名を決めるときに使用するＪａｖａ（登録商標）のクラス情報を表す。
【００６３】
関係設定変換規則４４０は、ソースコードには存在しないが、変換されたモデル要素間の関係の設定が必要な場合、その関係を設定できる。類型は、関連、一般化、実現、依存関係などの関係類型を表す。関係要素ＩＤは、関係を設定するモデル要素ＩＤを表す。
【００６４】
図５は、図２にあるモデル−ｔｏ−モデル変換器の構成及び作動を説明する図である。
【００６５】
図５ａにおいて、モデル−ｔｏ−モデル変換器２２０は、モデル−ｔｏ−モデル変換規則受信部２２２及びモデル−ｔｏ−モデル変換部２２４を備える。
【００６６】
一実施形態において、ソースコードモデル変換器２１０は、受信したソースコードを受信された変換規則によってＵＭＬ形式のソースモデルに変換できる。モデル−ｔｏ−モデル変換器２２０は、モデル−ｔｏ−モデル変換規則を受信し、受信したモデル−ｔｏ−モデル変換規則によってソースモデルを最終目標モデルに変換できる。モデル−ｔｏ−モデル変換規則は、図５ｂにおいて詳しく説明する。
【００６７】
より詳しくは、モデル−ｔｏ−モデル変換器２２０は、モデル−ｔｏ−モデル変換規則によってソースモデルのパッケージ及びクラスの位置を移動し、再構成できる。すなわち、モデル−ｔｏ−モデル変換器２２０は、ソースモデルパッケージのクラスが多い場合、パッケージを分離することができ、クラスのオペレーションが多い場合、クラスを分離することができる。同様に、モデル−ｔｏ−モデル変換器２２０は、ソースモデルパッケージのクラスが少ない場合、パッケージを統合でき、クラスのオペレーションが少ない場合、クラスを統合できる。言い換えれば、変換規則によってメタモデルから変換されたソースモデルのパッケージまたはクラスに対する統廃合が必要な場合、モデル−ｔｏ−モデル変換器２２０は、モデル−ｔｏ−モデル変換規則を利用してソースモデルを目標モデルに変換することができる。
【００６８】
変換規則受信部
【００６９】
図５ｂは、モデル−ｔｏ−モデル変換規則を説明する図である。
【００７０】
図５ｂにおいて、モデル−ｔｏ−モデル変換規則は、ソースモデル正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５１０及び目標モデル正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５２０で構成される。ソースモデル正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５１０は、目標モデルに変換するためのソースモデル要素の正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）であり、この項目が指すソースモデル要素の全ての下位モデル要素は、目標モデル正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５２０が指すモデル要素に複写される。ソースモデル正規化された名前（ＱｕａｌｆｉｅｄＮａｍｅ）５１０は異なるが、目標モデル正規化された名前（ＱｕａｌｆｉｅｄＮａｍｅ）５２０が同じソースモデル要素は、目標モデルへの複写の際、１つの目標モデル要素に統合され、逆に、ソースモデル正規化された名前（ＱｕａｌｆｉｅｄＮａｍｅ）５１０の上位要素名は同じであるが、モデル要素正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５２０の上位要素名が異なる場合、ソースモデル要素は分離されて複写される。目標モデル正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５２０は、ソースモデル正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５１０が指す要素が複写される目標モデル要素の正規化された名前（ＱｕａｌｉｆｉｅｄＮａｍｅ）５２０を表す。
【００７１】
図６は、図２にあるソースコードモデル変換器によるコード系列表現式リバースエンジニアリング方法を説明する図である。
【００７２】
図６ａにおいて、ソースコードモデル変換器２１０は、まず、表現式の変換のために正規表現式形態の変換規則を受信することができ、変換対象となるソースコードを選択し、パースして、パースされたデータをメモリに格納することができる。その後、ソースコードモデル変換器２１０は、メモリに格納されたデータを呼び出して、メタモデル変換部２１６を介してプログラム言語から独立的なモデルにソースコードの情報を格納することができる。モデル変換部２１８は、受信された変換規則を受信し、メタモデル変換部２１６により変換されたデータを変換規則によって変換できる。変換されたデータは、ＵＭＬ標準に合う形態に再度変換されてファイルに記録され得る。
【００７３】
メタモデルを変換規則によってＵＭＬモデルに変換するとき、ＵＭＬモデルで表現されない単純表現式系列の構文は、別の変換規則を受信して変換されることができる。変換規則に対する詳細内容は、次のとおりである。
【００７４】
１）共通事項：関数の内部ロジックのうち、関数呼出または結合フラグメントに変換されない論理表現式は、コード（ｃｏｄｅ）、妥当性検証（ｖａｌｉｄａｔｉｏｎ）、例外処理（ｅｘｃｅｐｔｉｏｎ）、メッセージ（ｍｅｓｓａｇｅ）など、使用目的に適したコード（ｃｏｄｅ）系列ライフラインに同期メッセージを生成し、文書欄に論理コードで表現されることができる。
【００７５】
２）ｍｅｓｓａｇｅメッセージ：メッセージを発生させる構文は、メッセージ（ｍｅｓｓａｇｅ）ライフラインにメッセージを生成できる。メッセージ（ｍｅｓｓａｇｅ）ライフラインにメッセージを生成するか否かは、メッセージを発生させる特定関数を正規表現式で整理し、この正規表現式に符合する関数があるか否かで判断する。
【００７６】
３）ｅｘｃｅｐｔｉｏｎメッセージ：エラーを発生させる構文は、例外処理（ｅｘｃｅｐｔｉｏｎ）ライフラインにメッセージを生成できる。例外処理（ｅｘｃｅｐｔｉｏｎ）ライフラインにメッセージを生成するか否かは、エラーを発生させる特定関数を正規表現式で整理し、この正規表現式に符合する関数があるか否かで判断する。
【００７７】
４）ｖａｌｉｄａｔｉｏｎメッセージ：必須入力値チェックなど、入力媒介変数を検証しつつ、同時にエラーを発生させる構文は、妥当性検証（ｖａｌｉｄａｔｉｏｎ）ライフラインにメッセージを生成できる。妥当性検証（ｖａｌｉｄａｔｉｏｎ）ライフラインにメッセージを生成するか否かは、入力値検証に該当する関数及び構文パターンを正規表現式で整理し、この正規表現式に符合する関数があるか否かで判断する。
【００７８】
５）ｃｏｄｅメッセージ：オペレーション呼出、結合フラグメント、ｍｅｓｓａｇｅ／ｅｘｃｅｐｔｉｏｎ／ｖａｌｉｄａｔｉｏｎに変換されないその他のロジック及び注釈は、コード（ｃｏｄｅ）ライフラインにメッセージを生成できる。オペレーションが呼び出しを同期メッセージで表現するか、結合フラグメントを生成する前までの内部ロジックは、全てコード（ｃｏｄｅ）ライフラインに表示される。ソースコードのオペレーション呼出構文、結合フラグメントに該当する元の構文も当該モデリング要素が登場する直前のコード（ｃｏｄｅ）ライフラインに表示される（モデル変換整合性を検証するために元のソースコードを全て表示）。
【００７９】
６）変数宣言及び初期化：変数名は、英文単語名−ハングル単語名の形態で入力された辞書情報を利用してハングル化され、論理表現式に合うように形態が変更される。タイプ（Ｔｙｐｅ）名に対して基本タイプは、ソースタイプとモデルタイプとをマッピングしたマッピング表によりタイプ名を変換し、基本タイプでないタイプは、タイプ名をモデルに変換されたタイプ名に変換し、配列可否によって論理表現式で定義した配列表記法により変換する。変数初期化は、構文のままで変換することを意味する。
【００８０】
７）関数の変換：既に定義された正規表現式規則によって当該正規表現式で構文を変換する。例）ｓｔｒｃｐｙ/（（変数名）、（変数名）/）→＄｛１｝＝＄｛２｝の左側規則に符合する場合、右側の表現式で構文を変換する。したがって、ｓｔｒｃｐｙ（ａ、ｂ）のような構文は、ａ＝ｂ構文に変換される。
【００８１】
図６ｂでは、シーケンスダイヤグラムにＵＭＬ表現式で表せない単純コード系列の表現式を表現する方法を示す。ソースコードモデル変換器２１０は、シーケンスダイヤグラムでコード系列表現式を表すために、コード（ｃｏｄｅ）、妥当性検証（ｖａｌｉｄａｔｉｏｎ）、例外処理（ｅｘｃｅｐｔｉｏｎ）、メッセージ（ｍｅｓｓａｇｅ）など、コード系列表現式のための任意のライフライン（ｌｉｆｅｌｉｎｅ）を生成し、当該ライフライン（ｌｉｆｅｌｉｎｅ）でメッセージを、そして、当該メッセージの文書内容に表現式を保存することができる。
【００８２】
図７は、図２にあるコード生成器の構造とコード生成方法を示す図である。
【００８３】
図７ａにおいて、コード生成器（Ｃｏｄｅ  Ｇｅｎｅｒａｔｏｒ）２３０は、コード生成器環境設定部（Ｃｏｄｅ  Ｇｅｎｅｒａｔｏｒ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ）２３２、モデルスキャナー（Ｍｏｄｅｌ  Ｓｃａｎｎｅｒ）２３４、モデル妥当性検証部（Ｍｏｄｅｌ  Ｖａｌｉｄａｔｉｏｎ）２３６、及びコード作成部（Ｃｏｄｅ  Ｍａｋｅｒ）２３８を備えることができる。コード生成器２３０は、モデルに基づいて様々なプログラミング言語のソースコードを生成するモジュールである。コード生成器２３０は、モデル要素（Ｅｌｅｍｅｎｔ）と論理表現式の各々に対してマッピングされた変換規則に基づいてプログラムソースコードを生成できる。コード生成器２３０は、１つのモデルで様々な言語のソースコードを生成できる。
【００８４】
図７ｂにおいて、コード生成器環境設定部（Ｃｏｄｅ  Ｇｅｎｅｒａｔｏｒ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ）２３２は、所望のソースコードを描写するための変換規則を作成するために環境設定を行うことができる（Ｓ７１０）。まず、変換規則プロジェクトを１つ生成してプロジェクトに対象となるモデル要素（Ｅｌｅｍｅｎｔ）を登録し、各要素（Ｅｌｅｍｅｎｔ）別に変換規則を生成して登録できる。変換規則を登録するときは、変換規則の変換行為を記述し、変換規則の実行条件を指定する。全ての要素（Ｅｌｅｍｅｎｔ）を対象として変換規則の登録が完了すれば、作成しようとするソースコードの構造が定義されたものである。
【００８５】
ソフトウェアモデルを作成、完了した後や作成中に、作成したモデルに対するコードを生成したいならば、所望のモデルに対して変換規則プロジェクトを選択した後、ソースコード生成機能を行えばよい。全体モデルまたは一部モデルに関係なく、ソースコード生成が可能である。
【００８６】
ソースコード生成機能を行えば、コード生成器（Ｃｏｄｅ  Ｇｅｎｅｒａｔｏｒ）２３０でモデルスキャナー（Ｍｏｄｅｌ  Ｓｃａｎｎｅｒ）２３４が実行される。モデルスキャナー（Ｍｏｄｅｌ  Ｓｃａｎｎｅｒ）２３４は、最上位要素（Ｅｌｅｍｅｎｔ）からトップ−ダウン（Ｔｏｐ−Ｄｏｗｎ）方式で要素（Ｅｌｅｍｅｎｔ）を読みながら、当該要素（Ｅｌｅｍｅｎｔ）がソースコード生成対象要素（Ｅｌｅｍｅｎｔ）であるか確認することができる。ソースコード生成対象要素（Ｅｌｅｍｅｎｔ）である場合、モデルスキャナー（Ｍｏｄｅｌ  Ｓｃａｎｎｅｒ）２３４は、モデル妥当性検証部（Ｍｏｄｅｌ  Ｖａｌｉｄａｔｉｏｎ）２３６に当該要素（Ｅｌｅｍｅｎｔ）を伝送する（Ｓ７２０）。
【００８７】
モデル妥当性検証部（Ｍｏｄｅｌ  Ｖａｌｉｄａｔｉｏｎ）２３６は、ソースコード生成対象である要素（Ｅｌｅｍｅｎｔ）を伝送されて当該要素（Ｅｌｅｍｅｎｔ）が有している妥当性検証規則（Ｖａｌｉｄａｔｉｏｎ  Ｒｕｌｅ）によって検証を行うことができる（Ｓ７３０）。モデル妥当性検証部（Ｍｏｄｅｌ  Ｖａｌｉｄａｔｉｏｎ）２３６は、検証完了後、エラーがある場合、モデルスキャナー（Ｍｏｄｅｌ  Ｓｃａｎｎｅｒ）２３４に伝達し、モデルスキャナー（Ｍｏｄｅｌ  Ｓｃａｎｎｅｒ）２３４は、検証結果を保存することができる。
【００８８】
全てのモデル要素（Ｅｌｅｍｅｎｔ）などの検証が終わり、エラーがあれば、モデルスキャナー（Ｍｏｄｅｌ  Ｓｃａｎｎｅｒ）２３４は、画面に全体検証結果を出力できる（Ｓ７４０）。検証結果、エラーがなければ、コード作成器（Ｃｏｄｅ  Ｍａｋｅｒ）２３８が変換規則によってソースコードを生成できる。（Ｓ７５０）。
【００８９】
上記では、本出願の望ましい実施形態を参照して説明したが、当該技術分野の熟練された当業者は、下記の特許請求の範囲に記載された本発明の思想及び領域から逸脱しない範囲内で本出願を様々に修正及び変更させ得ることが理解できるであろう。
【産業上の利用可能性】
【００９０】
本発明は、コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置に関し、より詳細には、プログラムのソースコードをモデルに変換する構造及び規則を定義し、所望の形態のモデルを自動に生成してプログラムの構造を容易に分析し、再設計するコンピュータ実行可能なモデルリバースエンジニアリング方法及び装置に関するものである。
【図１】
0006479184.tif 000002
【図２】
0006479184.tif 000003
【図３】
0006479184.tif 000004
【図４】
0006479184.tif 000005
【図５ａ】
0006479184.tif 000006
【図５ｂ】
0006479184.tif 000007
【図６ａ】
0006479184.tif 000008
【図６ｂ】
0006479184.tif 000009
【図７ａ】
0006479184.tif 000010
【図７ｂ】
0006479184.tif 000011
【図８ａ】
0006479184.tif 000012
【図８ｂ】
0006479184.tif 000013