(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムのソースコードを解析して、画面を定義する画面定義と、遷移元画面、遷移先画面、遷移条件を少なくとも定義する画面遷移定義と、画面遷移を起動するイベントを定義するイベント定義とを含む解析情報を生成する解析手段と、
前記解析手段により生成された前記解析情報に含まれる前記画面定義を予め定められた変換規則に従って変換することで、所定のフレームワークにおける第１のアプリケーションリソーステンプレートを生成し、当該解析情報に含まれる前記画面遷移定義を当該変換規則に従って変換することで、当該フレームワークにおける第２のアプリケーションリソーステンプレートを生成し、当該解析情報に含まれる前記イベント定義および前記画面遷移定義で定義された前記遷移先画面を当該変換規則に従って変換することで、当該フレームワークにおける第３のアプリケーションリソーステンプレートを生成する変換手段と
を備えたことを特徴とするソースコード変換装置。
【請求項２】
前記解析手段は、前記ソースコードから前記画面定義と前記画面遷移定義と前記イベント定義とを抽出し、当該画面定義と当該画面遷移定義と当該イベント定義とを分離して前記解析情報に含めることを特徴とする請求項１記載のソースコード変換装置。
【請求項３】
前記変換規則は、前記画面定義に含まれる第１の変換前の要素または要素集合と、前記第１のアプリケーションリソーステンプレートに含まれる第１の変換後の要素との対応、前記画面遷移定義に含まれる第２の変換前の要素または要素集合と、前記第２のアプリケーションリソーステンプレートに含まれる第２の変換後の要素との対応、および、前記イベント定義に含まれる第３の変換前の要素または要素集合と、前記第３のアプリケーションリソーステンプレートに含まれる第３の変換後の要素との対応を規定し、
前記変換手段は、前記変換規則を参照して、前記第１の変換前の要素または要素集合を前記第１の変換後の要素に変換し、前記第２の変換前の要素または要素集合を前記第２の変換後の要素に変換し、前記第３の変換前の要素または要素集合を前記第３の変換後の要素に変換することを特徴とする請求項２記載のソースコード変換装置。
【請求項４】
前記変換規則は、複数のフレームワークの各々に対応して設けられ、
前記変換手段は、前記画面定義と前記画面遷移定義と前記イベント定義とを、要求されたフレームワークに対応する前記変換規則に従って変換することを特徴とする請求項１記載のソースコード変換装置。
【請求項５】
前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを予め定められた配置規則に従って前記フレームワークに配置することで、アプリケーションテンプレートを生成する配置手段を更に備えたことを特徴とする請求項１記載のソースコード変換装置。
【請求項６】
前記配置規則は、前記第１のアプリケーションリソーステンプレートと、前記第１のアプリケーションリソーステンプレートを前記フレームワークに配置するための第１の配置処理情報との対応、前記第２のアプリケーションリソーステンプレートと、前記第２のアプリケーションリソーステンプレートを前記フレームワークに配置するための第２の配置処理情報との対応、および、前記第３のアプリケーションリソーステンプレートと、前記第３のアプリケーションリソーステンプレートを前記フレームワークに配置するための第３の配置処理情報との対応を規定し、
前記配置手段は、前記配置規則を参照して、前記第１のアプリケーションリソーステンプレートを前記第１の配置処理情報に基づいて前記フレームワークに配置し、前記第２のアプリケーションリソーステンプレートを前記第２の配置処理情報に基づいて当該フレームワークに配置し、前記第３のアプリケーションリソーステンプレートを前記第３の配置処理情報に基づいて当該フレームワークに配置することを特徴とする請求項５記載のソースコード変換装置。
【請求項７】
前記配置手段は、前記第１の配置処理情報、前記第２の配置処理情報、および、前記第３の配置処理情報の何れかが、前記フレームワークにおける前記第１のアプリケーションリソーステンプレート、前記第２のアプリケーションリソーステンプレート、および、前記第３のアプリケーションリソーステンプレートのうちの対応するアプリケーションリソーステンプレートの配置位置をユーザが指定可能なことを示す場合に、前記配置位置をユーザに指定させることを特徴とする請求項６記載のソースコード変換装置。
【請求項８】
前記配置規則は、複数のフレームワークの各々に対応して設けられ、
前記配置手段は、前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを、要求されたフレームワークに対応する前記配置規則に従って配置することを特徴とする請求項５記載のソースコード変換装置。
【請求項９】
コンピュータが、アプリケーションプログラムのソースコードを解析して、画面を定義する画面定義と、遷移元画面、遷移先画面、遷移条件を少なくとも定義する画面遷移定義と、画面遷移を起動するイベントを定義するイベント定義とを含む解析情報を生成するステップと、
コンピュータが、生成された前記解析情報に含まれる前記画面定義を予め記憶装置に記憶された変換規則に従って変換することで、所定のフレームワークにおける第１のアプリケーションリソーステンプレートを生成し、当該解析情報に含まれる前記画面遷移定義を当該変換規則に従って変換することで、当該フレームワークにおける第２のアプリケーションリソーステンプレートを生成し、当該解析情報に含まれる前記イベント定義および前記画面遷移定義で定義された前記遷移先画面を当該変換規則に従って変換することで、当該フレームワークにおける第３のアプリケーションリソーステンプレートを生成するステップと、
コンピュータが、生成された前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを予め記憶装置に記憶された配置規則に従って前記フレームワークに配置することで、アプリケーションテンプレートを生成するステップと
を含むことを特徴とするソースコード変換方法。
【請求項１０】
前記解析情報を生成するステップでは、前記ソースコードから前記画面定義と前記画面遷移定義と前記イベント定義とを抽出し、当該画面定義と当該画面遷移定義と当該イベント定義とを分離して木構造で表現した中間ソースコードを、前記解析情報として記憶することを特徴とする請求項９記載のソースコード変換方法。
【請求項１１】
前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを生成するステップでは、
前記画面定義に含まれる第１の変換前の要素または要素集合と前記第１のアプリケーションリソーステンプレートに含まれる第１の変換後の要素とを対応付け、前記画面遷移定義に含まれる第２の変換前の要素または要素集合と前記第２のアプリケーションリソーステンプレートに含まれる第２の変換後の要素とを対応付け、かつ、前記イベント定義に含まれる第３の変換前の要素または要素集合と前記第３のアプリケーションリソーステンプレートに含まれる第３の変換後の要素とを対応付けた前記変換規則を前記記憶装置から読み出し、
前記変換規則において前記第１の変換前の要素または要素集合として規定される前記画面定義内の要素を前記第１の変換後の要素に変換することで、前記画面定義を変換し、前記変換規則において前記第２の変換前の要素または要素集合として規定される前記画面遷移定義内の要素を前記第２の変換後の要素に変換することで、前記画面遷移定義を変換し、前記変換規則において前記第３の変換前の要素または要素集合として規定される前記イベント定義内の要素を前記第３の変換後の要素に変換することで、前記イベント定義を変換することを特徴とする請求項１０記載のソースコード変換方法。
【請求項１２】
前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを生成するステップでは、前記記憶装置に記憶された複数の変換規則のうち、要求されたフレームワークに対応する変換規則を読み出し、前記画面定義と前記画面遷移定義と前記イベント定義とを当該変換規則に従って変換することを特徴とする請求項９記載のソースコード変換方法。
【請求項１３】
前記アプリケーションテンプレートを生成するステップでは、
前記第１のアプリケーションリソーステンプレートと前記第１のアプリケーションリソーステンプレートを前記フレームワークに配置するための第１の配置処理情報とを対応付け、前記第２のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートを前記フレームワークに配置するための第２の配置処理情報とを対応付け、かつ、前記第３のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートを前記フレームワークに配置するための第３の配置処理情報とを対応付けた前記配置規則を前記記憶装置から読み出し、
前記第１のアプリケーションリソーステンプレートを前記第１の配置処理情報に基づいて前記フレームワークに配置し、前記第２のアプリケーションリソーステンプレートを前記第２の配置処理情報に基づいて前記フレームワークに配置し、前記第３のアプリケーションリソーステンプレートを前記第３の配置処理情報に基づいて前記フレームワークに配置することを特徴とする請求項９記載のソースコード変換方法。
【請求項１４】
前記アプリケーションテンプレートを生成するステップでは、前記記憶装置に記憶された複数の配置規則のうち、要求されたフレームワークに対応する配置規則を読み出し、前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを当該配置規則に従って配置することを特徴とする請求項９記載のソースコード変換方法。
【請求項１５】
コンピュータに、
アプリケーションプログラムのソースコードを解析して、画面を定義する画面定義と、遷移元画面、遷移先画面、遷移条件を少なくとも定義する画面遷移定義と、画面遷移を起動するイベントを定義するイベント定義とを含む解析情報を生成する機能と、
生成された前記解析情報に含まれる前記画面定義を予め記憶装置に記憶された変換規則に従って変換することで、所定のフレームワークにおける第１のアプリケーションリソーステンプレートを生成し、当該解析情報に含まれる前記画面遷移定義を当該変換規則に従って変換することで、当該フレームワークにおける第２のアプリケーションリソーステンプレートを生成し、当該解析情報に含まれる前記イベント定義および前記画面遷移定義で定義された前記遷移先画面を当該変換規則に従って変換することで、当該フレームワークにおける第３のアプリケーションリソーステンプレートを生成する機能と、
生成された前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを予め記憶装置に記憶された配置規則に従って前記フレームワークに配置することで、アプリケーションテンプレートを生成する機能と
を実現させるためのプログラム。
【請求項１６】
前記解析情報を生成する機能では、前記ソースコードから前記画面定義と前記画面遷移定義と前記イベント定義とを抽出し、当該画面定義と当該画面遷移定義と当該イベント定義とを分離して木構造で表現した中間ソースコードを、前記解析情報として記憶する機能を更に実現させることを特徴とする請求項１５記載のプログラム。
【請求項１７】
前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを生成する機能では、前記記憶装置に記憶された複数の変換規則のうち、要求されたフレームワークに対応する変換規則を読み出し、前記画面定義と前記画面遷移定義と前記イベント定義とを当該変換規則に従って変換する機能を更に実現させることを特徴とする請求項１５記載のプログラム。
【請求項１８】
前記アプリケーションテンプレートを生成する機能では、前記記憶装置に記憶された複数の配置規則のうち、要求されたフレームワークに対応する配置規則を読み出し、前記第１のアプリケーションリソーステンプレートと前記第２のアプリケーションリソーステンプレートと前記第３のアプリケーションリソーステンプレートとを当該配置規則に従って配置する機能を更に実現させることを特徴とする請求項１５記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、過去に開発されたアプリケーションプログラム（以下、単に「アプリケーション」という）のソースコードを、移行したい環境（以下、「ターゲット環境」という）で動作するように変換する技術に関し、特に、ターゲット環境における標準化されたフレームワークに適合するようにソースコードの変換を行うソースコード変換装置等に関する。
【０００２】
【従来の技術】
今日、WebSphere Application ServerをはじめとするＪ２ＥＥ(Java 2 Enterprise Edition)環境の普及により、過去に開発された既存アプリケーションをＪ２ＥＥ環境に移行させ稼動させたいという要求が増えてきている（WebSphereは、IBM Corporationの米国およびその他の国における商標。）。しかし、そのような既存アプリケーションは、Ｊ２ＥＥ環境で動作するアプリケーションの開発言語であるＪＡＶＡとは異なる言語、例えば、Visual Basic等で開発されている場合が多い（ＪＡＶＡおよびすべてのＪＡＶＡ関連の商標およびロゴは、Sun Microsystems, Inc.の米国およびその他の国における商標または登録商標。Visual Basicは、米国およびその他の国における米国Microsoft Corp.の登録商標。）。また、クラスライブラリ（例えば、ＤＢアクセス）、フレームワークのみならず、アプリケーションの稼動形態においてもＪ２ＥＥ環境とは異なる場合が多い。例えば、既存アプリケーションの環境が、アプリケーションのロジックが配置されるクライアントと、アプリケーションが使用するデータが配置されるサーバという２階層の構造をしているのに対し、Ｊ２ＥＥ環境が、画面表示を主に行うクライアントと、アプリケーションのロジックが配置されるアプリケーションサーバと、アプリケーションが使用するデータが配置されるデータベースサーバという３階層の構造をしている等の違いである。従って、既存アプリケーションをＪ２ＥＥ環境に移行するのは容易ではなく、その作業には多大な工数が必要となる。
【０００３】
そこで、過去に開発されたアプリケーションの新しい環境への移行を支援するため、従来は、既存システムを解析し、新システム構築の際に必要となる画面情報を出力したり（例えば、特許文献１参照。）、既存システムを解析し、新システムのインターフェース情報（画面定義情報・画面動作情報・画面遷移情報）を再生成したりしていた（例えば、特許文献２参照。）。
【０００４】
【特許文献１】
特開２００１−０２７９４６号公報(第３−５頁、図２)
【特許文献２】
特開２００１−１３４４２３号公報(第２−４頁、図２)
【０００５】
【発明が解決しようとする課題】
ところで、近年、アプリケーション移行時における、品質、生産性、保守性向上の観点から、フレームワークを採用するケースが増えている。フレームワークとは、Ｗｅｂアプリケーションを開発するための枠組みであり、規定されていない細部を規定することによって１つの完成したＷｅｂアプリケーションを効率的に開発できるようにするためのものである。フレームワークには、例えば、アパッチ・ソフトウェア・ファウンデーションの「Ｊａｋａｒｔａプロジェクト」が開発する「Ｓｔｒｕｔｓ」のように急速に人気を集め、標準的に用いられているものも存在する。
【０００６】
しかしながら、特許文献１、２には、既存システムにおけるインターフェース情報を表示することで新システムにおけるインターフェース情報の構築作業を軽減することしか述べられておらず、新システムで採用するＷｅｂアプリケーションフレームワークに適合するようにインターフェース情報を変換することは行っていなかった。即ち、ターゲット環境における標準化されたフレームワークを利用することによる利点を減ずることなく既存アプリケーションのソースコードをターゲット環境で動作するように変換することはできないという問題点があった。
【０００７】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、既存アプリケーションのソースコードを、ターゲット環境における標準化されたフレームワークを利用することによる利点を減ずることなく、ターゲット環境で動作するように変換することにある。
また他の目的は、既存アプリケーションのソースコードをターゲット環境における標準化されたフレームワークに適合させるための変換を柔軟に行えるようにすることにある。
更に他の目的は、既存アプリケーションのソースコードを複数のフレームワークのうちの所望のものに適合するよう変換できるようにすることにある。
【０００８】
【課題を解決するための手段】
かかる目的のもと、本発明は、既存アプリケーションのソースコードを、ターゲット環境におけるアプリケーションリソーステンプレートに変換している。即ち、本発明のソースコード変換装置は、アプリケーションプログラムのソースコードを解析して解析情報（図１の画面解析情報に対応）を生成する解析手段（図１の画面解析処理部１１に対応）と、この解析手段により生成された解析情報を予め定められた変換規則（変換ルール）に従って変換することで、所定のターゲット環境におけるアプリケーションリソーステンプレートを生成する変換手段（図１の要素変換処理部１３に対応）とを備えている。
【０００９】
また、本発明において、既存アプリケーションのソースコードを解析して得られる画面解析情報は、ソースコードから抽出した各要素を細分化し、分離して保持するようにしている。即ち、本発明のソースコード変換装置において、解析手段は、ソースコードから複数の要素を抽出し、各要素を分離して解析情報に含めることを特徴とする。尚、この場合、変換規則が、解析情報に含まれる変換前の要素または要素集合と、アプリケーションリソーステンプレートに含まれる変換後の要素との対応を規定し、変換手段が、変換規則を参照し、変換前の要素または要素集合を、対応する変換後の要素に変換するようにすることができる。また、変換規則が、複数のターゲット環境の各々に対応して設けられ、変換手段が、解析情報を、要求されたターゲット環境に対応する変換規則に従って変換するようにすることもできる。
【００１０】
一方、本発明のソースコード変換装置は、アプリケーションリソーステンプレートを予め定められた配置規則（配置ルール）に従ってターゲット環境に配置することで、アプリケーションテンプレートを生成する配置手段（図１の要素配置処理部１５に対応）を更に備える。
【００１１】
また、配置規則が、アプリケーションリソーステンプレートと、アプリケーションリソーステンプレートをターゲット環境に配置するための配置処理情報との対応を規定し、配置手段が、配置規則を参照し、アプリケーションリソーステンプレートを配置処理情報に基づいてターゲット環境に配置するようにすることができる。更に、配置手段は、配置処理情報がターゲット環境におけるアプリケーションリソーステンプレートの配置位置をユーザが指定可能なことを示す場合に、配置位置をユーザに指定させることもできる。更にまた、配置規則が、複数のターゲット環境の各々に対応して設けられ、配置手段が、アプリケーションリソーステンプレートを、要求されたターゲット環境に対応する配置規則に従って配置するようにすることもできる。
【００１２】
他の観点から捉えると、本発明のソースコード変換方法は、アプリケーションプログラムのソースコードを解析して解析情報を生成するステップ（図４のステップ１０１に対応）と、生成された解析情報（図４の画面解析情報に対応）を予め記憶装置に記憶された変換規則（変換ルール）に従って変換することで、所定のターゲット環境におけるアプリケーションリソーステンプレートを生成するステップ（図４のステップ１０４〜１０６に対応）と、生成されたアプリケーションリソーステンプレートを予め記憶装置に記憶された配置規則（配置ルール）に従ってターゲット環境に配置することで、アプリケーションテンプレートを生成するステップ（図４のステップ１０７、１０８に対応）とを含んでいる。
【００１３】
また、解析情報を生成するステップでは、ソースコードから複数の要素を抽出し、各要素を分離して木構造で表現した中間ソースコードを、解析情報として記憶することを特徴とする。尚、この場合、アプリケーションリソーステンプレートを生成するステップでは、記憶装置から、変換前の要素または要素集合と変換後の要素とを対応付けた変換規則を読み出し、その変換規則において変換前の要素または要素集合として規定される解析情報内の要素を、対応する変換後の要素に変換することで、解析情報を変換するようにすることができる。また、アプリケーションリソーステンプレートを生成するステップでは、記憶装置に記憶された複数の変換規則のうち、要求されたターゲット環境に対応する変換規則を読み出し、解析情報をその変換規則に従って変換するようにすることもできる。
【００１４】
更に、アプリケーションテンプレートを生成するステップでは、記憶装置から、各アプリケーションリソーステンプレートと各アプリケーションリソーステンプレートをターゲット環境に配置するための配置処理情報とを対応付けた配置規則を読み出し、アプリケーションリソーステンプレートを対応する配置処理情報に基づいてターゲット環境に配置するようにすることができる。更にまた、アプリケーションテンプレートを生成するステップでは、記憶装置に記憶された複数の配置規則のうち、要求されたターゲット環境に対応する配置規則を読み出し、アプリケーションリソーステンプレートをその配置規則に従って配置するようにすることもできる。
【００１５】
ここで、本発明は、コンピュータに所定の機能を実現させるプログラムとして把握することができる。即ち、本発明のプログラムは、コンピュータに、アプリケーションプログラムのソースコードを解析して解析情報（図１の画面解析情報に対応）を生成する機能（図１の画面解析処理部１１に対応）と、生成された解析情報を予め記憶装置に記憶された変換規則（変換ルール）に従って変換することで、所定のターゲット環境におけるアプリケーションリソーステンプレートを生成する機能（図１の要素変換処理部１３に対応）と、生成されたアプリケーションリソーステンプレートを予め記憶装置に記憶された配置規則（配置ルール）に従ってターゲット環境に配置することで、アプリケーションテンプレートを生成する機能（図１の要素配置処理部１５に対応）とを実現させる。
【００１６】
また、解析情報を生成する機能では、ソースコードから複数の要素を抽出し、各要素を分離して木構造で表現した中間ソースコードを、解析情報として記憶する機能を更に実現させることを特徴とする。尚、この場合、アプリケーションリソーステンプレートを生成する機能では、記憶装置に記憶された複数の変換規則のうち、要求されたターゲット環境に対応する変換規則を読み出し、解析情報をその変換規則に従って変換する機能を更に実現させることができる。また、アプリケーションテンプレートを生成する機能では、記憶装置に記憶された複数の配置規則のうち、要求されたターゲット環境に対応する配置規則を読み出し、アプリケーションリソーステンプレートをその配置規則に従って配置する機能を更に実現させることもできる。
【００１７】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて本発明を詳細に説明する。
図１は、本実施の形態の全体構成を示すブロック図である。図１に示すように、本実施の形態は、既存アプリケーションソースコード記憶部１０と、画面解析処理部１１と、画面解析情報記憶部１２と、要素変換処理部１３と、新規アプリケーションリソーステンプレート記憶部１４と、要素配置処理部１５と、新規アプリケーションテンプレート記憶部１６とを含む。
【００１８】
既存アプリケーションソースコード記憶部１０は、過去に開発された既存アプリケーションのソースコードを記憶する部分である。アプリケーションは、通常、画面定義部、操作仕様実装部、業務仕様実装部から構成されるが、本実施の形態では、画面解析処理部１１がこれらのうち画面定義部と操作仕様実装部のみを解析するので、この２つの部分を四角囲みで示している。
【００１９】
画面解析処理部１１は、既存アプリケーションソースコード記憶部１０に記憶された既存アプリケーションソースコードの画面定義部と操作仕様実装部とから、画面定義、画面遷移定義、イベント定義のみを抽出し、画面解析情報を生成して画面解析情報記憶部１２に記憶する部分である。
【００２０】
画面解析情報記憶部１２は、画面解析処理部１１により抽出された画面解析情報を記憶する部分である。画面解析情報内の要素としては、画面定義、画面遷移定義、イベント定義がある。また、画面定義内の要素としては、画面要素定義、各画面要素属性があり、画面遷移定義内の要素としては、遷移元画面、遷移先画面・状態、遷移条件、遷移起動イベントがあり、イベント定義内の要素としては、イベントソース、イベント種別がある。尚、画面解析情報は、再利用可能な中間形式のフォーマットで保持される。例えば、各要素をＸＭＬ形式等の木構造で記述したソースコード（以下、「中間ソースコード」という）として保持される。この中間ソースコードにおいて、要素間の関係は、親子関係または接続要素で保持され、要素集合変換時に必要とする要素を収集し易くしている。
【００２１】
要素変換処理部１３は、画面解析情報記憶部１２から画面解析情報を入力し、要求されたターゲット環境の種別に応じた変換ルールに従い各要素を変換して新規アプリケーションリソーステンプレートを生成し、新規アプリケーションリソーステンプレート記憶部１４に出力する部分である。例えば、要求され得るターゲット環境として、ＳｔｒｕｔｓとＸＦｏｒｍｓとがあれば、Ｓｔｒｕｔｓ用変換ルールとＸＦｏｒｍｓ用変換ルールとが用意され、要求されたターゲット環境に応じてこのいずれかが選択され用いられる。
【００２２】
新規アプリケーションリソーステンプレート記憶部１４は、要素変換処理部１３により生成された新規アプリケーションリソーステンプレートを記憶する部分である。ここで、「アプリケーションリソーステンプレート」とは、フレームワークにおいて必要となるファイルのことで、以下、単に「リソース」ともいう。これには、例えば、画面リソース、構成ファイル、ソースコード等がある。
【００２３】
要素配置処理部１５は、新規アプリケーションリソーステンプレート記憶部１４に記憶されたアプリケーションリソーステンプレートを要求されたターゲット環境の種別に応じた配置ルールに従い配置して新規アプリケーションテンプレートを生成し、新規アプリケーションテンプレート記憶部１６に出力する部分である。例えば、要求され得るターゲット環境として、ＳｔｒｕｔｓとＸＦｏｒｍｓとがあれば、Ｓｔｒｕｔｓ用配置ルールとＸＦｏｒｍｓ用配置ルールとが用意され、要求されたターゲット環境に応じてこのいずれかが選択され用いられる。尚、これらの配置ルールに定義される配置情報については、対象Ｗｅｂアプリケーションフレームワークに応じてそのデフォルト値が与えられている。また、対象Ｗｅｂアプリケーションフレームワークにおける配置情報をユーザが必要に応じて入力し画面解析情報に付加することもできるようになっている。
【００２４】
新規アプリケーションテンプレート記憶部１６は、要素配置処理部１５により生成された新規アプリケーションテンプレートを記憶する部分である。ここで、「アプリケーションテンプレート」とは、フレームワークにリソースが配置されたものである。例えば、要求され得るターゲット環境として、ＳｔｒｕｔｓとＸＦｏｒｍｓとがあれば、Ｓｔｒｕｔｓ用新規アプリケーションテンプレートと、ＸＦｏｒｍｓ用新規アプリケーションテンプレートとが生成可能である。
【００２５】
尚、本実施の形態は、コンピュータシステムにより実現される。本実施の形態を実現するコンピュータシステムのハードウェア構成は、中央処理装置（ＣＰＵ）、主記憶装置、ハードディスク装置等の補助記憶装置、入力装置、出力装置を備えた一般的なものでよい。
補助記憶装置には、画面解析処理部１１、要素変換処理部１３、要素配置処理部１５を実現するためのプログラムが記憶され、ＣＰＵがこのプログラムを主記憶装置に読み込んで実行することにより、画面解析処理部１１、要素変換処理部１３、要素配置処理部１５が実現される。また、補助記憶装置は、既存アプリケーションソースコード記憶部１０、新規アプリケーションリソーステンプレート記憶部１４、新規アプリケーションテンプレート記憶部１６としても機能する。更に、要素変換処理部１３で用いられる変換ルール、要素配置処理部１５で用いられる配置ルールを補助記憶装置に記憶するようにしてもよい。
【００２６】
次に、画面解析処理部１１および要素変換処理部１３における処理を、概念図を参照しながら説明する。ここでは、既存アプリケーションの開発言語としてよく用いられるVisual Basicで開発されたアプリケーションを、Ｊ２ＥＥ環境でよく用いられるＳｔｒｕｔｓフレームワークのリソースへ変換する場合を例にとって説明する。但し、既存アプリケーションの開発言語はVisual Basicに限られるものではなく、ターゲット環境における開発言語と異なるものであれば、如何なる言語であってもよい。また、ターゲット環境もＳｔｒｕｔｓフレームワークに限らず、ＸＦｏｒｍｓ等、他の環境であってよい。
【００２７】
まず、画面解析処理部１１がVisual Basicで記述されたアプリケーションの各要素を画面解析情報の各要素に変換する時の処理について説明する。
Visual Basicで記述されたアプリケーションは、イベントドリブンであるので、画面要素とイベントハンドラ、イベントハンドラ内の各要素が密に結合している。従って、そのまま、アプリケーション構造を変換することは容易でない。そこで、本実施の形態では、Visual Basicの各要素を細分化し、それら要素間の結合を緩めて保持するようにしている。これにより、Ｗｅｂアプリケーションフレームワークへの柔軟な変換機構を実現している。
【００２８】
図２に、具体的な変換の様子を示す。図２では、左側に、Visual Basicで記述されたアプリケーションにおける各要素が示され、右側に、画面解析情報における各要素が示される。この変換処理において、Visual Basicにおける画面定義は、画面解析情報における画面定義（画面要素定義、各画面要素属性）に変換され、Visual Basicにおけるイベントハンドラは、画面解析情報における画面遷移定義（遷移元画面、遷移先画面・状態、遷移起動イベント）に変換され、Visual Basicにおける起動イベントは、画面解析情報におけるイベント定義（イベントソース、イベント種別）に変換されている。
【００２９】
次に、要素変換処理部１３が画面解析情報の各要素をＷｅｂアプリケーションフレームワークのリソースに変換する時の処理について説明する。
図３に、具体的な変換の様子を示す。図３では、左側に、画面解析情報における各要素が示され、右側に、Ｓｔｒｕｔｓフレームワークにおけるリソースが示される。この変換処理において、画面解析情報における画面定義は、ＳｔｒｕｔｓフレームワークにおけるＪＳＰに変換され、画面解析情報における画面遷移定義は、ＳｔｒｕｔｓフレームワークにおけるAction Classに変換され、画面解析情報におけるイベント定義および遷移先画面は、Ｓｔｒｕｔｓフレームワークにおけるstruts-config.xmlに変換されている。
【００３０】
次に、本実施の形態の動作について具体的に説明する。
図４は、本実施の形態の動作を示すフローチャートである。
【００３１】
まず、画面解析処理部１１は、画面解析情報記憶部１２に記憶される画面解析情報の木構造を生成する（ステップ１０１）。
ここで、このステップにおける処理について、図５〜７を参照しながら具体例に説明する。例えば、ユーザより、図５の右側に示されたソースコード（図６、７の右側に示されたソースコードも同じ）が入力されたとする。
画面解析処理部１１は、ソースコード内の画面定義部、操作仕様実装部を解析することで、画面定義、画面遷移定義、イベント定義を出力する。
【００３２】
まず、画面解析処理部１１は、図５に（１）として示すように、Visual Basicソースコードのフォーム、コントロールの定義部分から画面定義を抽出する。具体的には、中間ソースコードに、"frmRingi"を定義する<page>要素と、"frmLogin"を定義する<page>要素とを生成し、"frmLogin"を定義する<page>要素内に更に"cmdOK"を定義する<part>要素を生成する。
【００３３】
次に、画面解析処理部１１は、図５に（２）として示すように、Visual Basicソースコードからイベントハンドラを抽出する。具体的には、中間ソースコードに、"frmLogin.cmdOK_Click"を定義する<action>要素を生成する。
【００３４】
また、画面解析処理部１１は、図５に（３）として示すように、イベントソースとイベントハンドラとの接続を行う。具体的には、"frmLogin"を定義する<page>要素内に"toFrmLogin_cmdOK_Click"を<exit-port>要素として設ける共に、"frmLogin.cmdOK_Click"を定義する<action>要素内に"default"を<entry-port>要素として設け、これらの<exit-port>要素と<entry-port>要素とを<connection>要素にて接続する（右側の矢印）。また、"frmLogin"を定義する<page>要素内に<exit-port>要素として設けられた"toFrmLogin_cmdOK_Click"を、"cmdOK"を定義する<part>要素内にも<exit-port>要素として設ける（左側の矢印）。
【００３５】
更に、画面解析処理部１１は、図６に（４）として示すように、画面遷移定義の抽出を行う。具体的には、"frmRingi"を定義する<page>要素内に"fromFrmLogin"を<entry-port>要素として設けると共に、"frmLogin.cmdOK_Click"を定義する<action>要素内に"toFrmRingi"を<exit-port>要素として設け、これらの<entry-port>要素と<exit-port>要素とを<connection>要素にて接続する（矢印）。また、"frmLogin"を定義する<page>要素内に"default"を<entry-port>要素として設けると共に、"frmLogin.cmdOK_Click"を定義する<action>要素内に"toDefault"を<exit-port>要素として設け、これらの<entry-port>要素と<exit-port>要素とを<connection>要素にて接続する。
【００３６】
また、画面解析処理部１１は、図７に（５）として示すように、条件分岐と画面遷移の抽出を行う。具体的には、Visual Basicソースコードから抽出した条件分岐を、"frmLogin.cmdOK_Click"を定義する<action>要素内に<logic>要素として展開し、<action>要素内に<exit-port>要素として設けられた"toFrmRingi"および"toDefault"を<logic>要素内に<exit-port>要素として設ける（矢印）。
【００３７】
図５〜７の右側に示されたソースコードは、以上のような処理により、中間ソースコードに変換される。
【００３８】
再び図４に戻り、説明を続ける。
要素変換処理部１３は、画面解析情報記憶部１２に記憶された画面解析情報、即ち、木構造の中間ソースコードの中から次の要素を選択する（ステップ１０２）。選択すべき要素（選択要素）が存在しない場合（ステップ１０３でＮＯ）、処理は終了するが、選択要素が存在する場合（ステップ１０３でＹＥＳ）、選択要素に対する変換ルールが存在するかどうか判定する（ステップ１０４）。ここで変換ルールが存在すると判定された場合、要素変換処理部１３は、変換ルールに規定された関連要素を収集し（ステップ１０５）、選択要素および関連要素を含む要素集合に対して変換ルールを適用し、新規アプリケーションリソーステンプレートとして出力する（ステップ１０６）。
【００３９】
次に、要素配置処理部１５が、選択要素に対する配置ルールが存在するかどうか判定する（ステップ１０７）。そして、配置ルールが存在すると判定された場合、選択要素に対して配置ルールを適用し、選択要素の配置位置を決定する（ステップ１０８）。尚、配置ルールは、１つのアプリケーションリソーステンプレートにつき１つの選択要素に対して定義されており、選択要素に対する配置ルールの決定は、即ち、アプリケーションリソーステンプレートのフレームワークにおける配置位置の決定を意味する。従って、ステップ１０６で出力された新規アプリケーションリソーステンプレートのフレームワークにおける配置位置がステップ１０８で決定され、結果として、新規アプリケーションリソーステンプレートがフレームワークに配置された新規プリケーションテンプレートが生成されることになる。
【００４０】
ここで、ステップ１０３〜１０８における処理について、図８〜１２を参照しながら具体例に説明する。
まず、要素変換処理部１３で用いられる変換ルールおよび要素配置処理部１５で用いられる配置ルールについて説明する。
図８は、変換・配置ルールの例である。変換ルールおよび配置ルールは、対象フレームワーク種別、各フレームワーク内でのリソース種別毎に定義される。図８は、Ｓｔｒｕｔｓフレームワークについての例である。従って、ＸＦｏｒｍｓについては、その特性に応じた別の変換・配置ルールが存在する。また、Ｓｔｒｕｔｓフレームワークのリソース種別としては、ＪＳＰ、ＣＳＳ、Action Class、ActionForm Class、struts-config.xmlがあるが、ここでは、ＪＳＰ、Action Class、struts-config.xmlについての変換・配置ルールのみを示している。尚、図８では、変換ルールと配置ルールとを同じテーブルで管理しているが、別々のテーブルで管理するようにしてもよい。その場合、配置ルールについては、変換要素ごとではなく、リソースごとに定義してもよい。そして、ステップ１０４〜１０６を選択要素ごとの処理とし、ステップ１０７、１０８はリソースごとの処理としてもよい。
【００４１】
次に、図８に示された変換・配置ルールのうち、変換ルールを用いて具体的な中間ソースコードを変換する処理について説明する。尚、図４のフローチャートでは、全ての変換ルールを同時に適用することを前提としていたが、以下では、説明を分かり易くするため、リソースごとに変換ルールを適用することとする。
また、入力としては、図９の左側に示す中間ソースコード（図１０、１１の左側に示された中間ソースコードも同じ）が与えられるとする。尚、この中間ソースコードは、図５〜７の処理により生成された中間ソースコードである。図５〜７では、中間ソースコードを定義抽出のフェーズに分けて記述したが、抽出された各定義を統合すると図９〜１１に示すような中間ソースコードとなる。中間ソースコードは、大きく分けて、<page>で始まり</page>で終わる<page>要素と、<action>で始まり</action>で終わる<action>要素とから構成される。図３の概念図で言えば、<page>要素は、画面定義に相当する部分であり、<action>要素は、画面遷移定義に相当する部分である。また、図３の概念図におけるイベント定義は、図９〜１１の中間ソースコードでは、<page>要素と<action>要素とを接続する部分（<connection>要素）に相当する。
【００４２】
まず、図９を参照して、中間ソースコードをＪＳＰに変換する場合について説明する。
図８のＪＳＰ変換・配置ルールに<page>要素が変換要素として定義されているので、要素変換処理部１３は、中間ソースコードの"frmRingi"を定義する<page>要素に着目する。また、図８のＪＳＰ変換・配置ルールに<page>要素に対する関連要素として<property>子要素、<entry-port>子要素、<exit-port>子要素、接続されている<action>要素が定義されているので、要素変換処理部１３は、中間ソースコードからこれらに対応する要素を収集する。この場合、<entry-port>子要素、<property>子要素が収集される。そして、図８のＪＳＰ変換・配置ルールに変換後の要素として<html:form/>が定義されているので、要素変換処理部１３は、"frmRingi"を定義する<page>要素、収集された<entry-port>子要素、<property>子要素を、<html:form/>要素に変換する。尚、図８においては、<entry-port>子要素、<property>子要素の変換結果の記述については省略してある。
【００４３】
また、要素変換処理部１３は、同様にして、中間ソースコードの"frmLogin"を定義する<page>要素に着目し、その関連要素として、<entry-port>子要素、<exit-port>子要素、<action>要素を収集する。そして、要素変換処理部１３は、"frmLogin"を定義する<page>要素、収集された<entry-port>子要素、<exit-port>子要素、<action>要素を、<html:form/>要素に変換する。尚、図８においては、<entry-port>子要素、<exit-port>子要素の変換結果の記述については省略してある。
【００４４】
更に、図８のＪＳＰ変換・配置ルールにclass属性がbuttonの<part>要素が変換要素として定義されているので、要素変換処理部１３は、中間ソースコードの"cmdOK"を定義する<part>要素に着目する。また、図８のＪＳＰ変換・配置ルールにclass属性がbuttonの<part>要素に対する関連要素として<property>子要素、<exit-port>子要素が定義されているので、要素変換処理部１３は、中間ソースコードからこれらに対応する要素を収集する。この場合、<exit-port>子要素が収集される。そして、図８のＪＳＰ変換・配置ルールに変換後の要素として<html:submit/>が定義されているので、要素変換処理部１３は、"cmdOK"を定義する<part>要素、収集された<exit-port>子要素を、<html:submit/>要素に変換する。尚、図８においては、<exit-port>子要素の変換結果の記述については省略してある。
【００４５】
次に、図１０を参照して、中間ソースコードをAction Classに変換する場合について説明する。
図８のAction Class変換・配置ルールに<action>要素が変換要素として定義されているので、要素変換処理部１３は、中間ソースコードの"frmLogin.cmdOK_Click"を定義する<action>要素に着目する。そして、図８のAction Class変換・配置ルールに<action>要素に対する関連要素が定義されておらず、変換後の要素としてＪＡＶＡクラスが定義されているので、要素変換処理部１３は、"frmLogin.cmdOK_Click"を定義する<action>要素をＪＡＶＡクラスの記述に変換する。
【００４６】
また、図８のAction Class変換・配置ルールに<choice>要素が変換要素として定義されているので、要素変換処理部１３は、<choice>要素に着目する。また、図８のAction Class変換・配置ルールに<choice>要素に対する関連要素として<when-if>要素、<when-else>要素が定義されているので、要素変換処理部１３は、中間ソースコードから<when-if>要素、<when-else>要素を収集する。そして、図８のAction Class変換・配置ルールに変換後の要素としてＩｆステートメントが定義されているので、要素変換処理部１３は、<choice>要素をＩｆステートメントに変換する。
【００４７】
更に、図８のAction Class変換・配置ルールに<exit-port>要素が変換要素として定義されているので、要素変換処理部１３は、中間ソースコードの<exit-port>要素に着目する。そして、図８のAction Class変換・配置ルールに<exit-port>要素に対する関連要素が定義されておらず、変換後の要素として画面遷移先を決定するステートメントが定義されているので、要素変換処理部１３は、<exit-port>要素を画面遷移先を決定するステートメントに変換する。
【００４８】
続いて、図１１を参照して、中間ソースコードをstruts-config.xmlに変換する場合について説明する。
まず、図８のstruts-config.xml変換・配置ルールにrootが変換要素として定義されており、それに対する変換後の要素として<struts-config/>が定義されているので、struts-config.xmlに<struts-config/>要素が記述される。
【００４９】
次に、図８のstruts-config.xml変換・配置ルールに<page>要素が変換要素として定義されているので、要素変換処理部１３は、中間ソースコードの"frmRingi"を定義する<page>要素に着目する。そして、図８のstruts-config.xml変換・配置ルールに<page>要素に対する関連要素が定義されておらず、変換後の要素として<form-bean/>が定義されているので、要素変換処理部１３は、"frmRingi"を定義する<page>要素を<form-bean/>要素に変換する。
【００５０】
また、要素変換処理部１３は、同様にして、中間ソースコードの"frmLogin"を定義する<page>要素に着目し、この要素を<form-bean/>要素に変換する。
【００５１】
更に、図８のstruts-config.xml変換・配置ルールに<action>要素が変換要素として定義されているので、要素変換処理部１３は、"frmLogin.cmdOK_Click"を定義する<action>要素に着目する。また、図８のstruts-config.xml変換・配置ルールに、<action>要素に対する関連要素として、接続されている<page>要素が定義されているので、要素変換処理部１３は、"frmLogin.cmdOK_Click"を定義する<action>要素に接続される<page>要素を収集する。この場合、"frmRingi"を定義する<page>要素、"frmLogin"を定義する<page>要素が収集される。そして、図８のstruts-config.xml変換・配置ルールに変換後の要素として<action/>が定義されているので、要素変換処理部１３は、"frmLogin.cmdOK_Click"を定義する<action>要素、収集された"frmRingi"を定義する<page>要素、"frmLogin"を定義する<page>要素を、<action/>要素に変換する。
【００５２】
また、図８のstruts-config.xml変換・配置ルールに<action>要素内の<exit-port>要素が変換要素として定義されているので、要素変換処理部１３は、"frmLogin.cmdOK_Click"を定義する<action>要素内の"toFrmRingi"を定義する<exit-port>要素に着目する。そして、図８のstruts-config.xml変換・配置ルールに<action>要素内の<exit-port>要素に対する関連要素は定義されておらず、変換後の要素として<forward/>が定義されているので、要素変換処理部１３は、"toFrmRingi"を定義する<exit-port>要素を<forward/>に変換する。
【００５３】
更にまた、要素変換処理部１３は、同様にして、"frmLogin.cmdOK_Click"を定義する<action>要素内の"toDefault"を定義する<exit-port>要素に着目し、この要素を<forward/>に変換する。
図９〜１１の左側に示された中間ソースコードは、以上のような処理により、３つのリソース（ＪＳＰ、Action Class、struts-config.xml）に変換される。
【００５４】
次に、図８に示された変換・配置ルールのうち、配置ルールを用いてこれらの３つのリソースを配置する処理について説明する。尚、ここでは、便宜上、図８の要素ごとに定義された配置ルールを参照するが、実際の処理としては、リソースごとに定義された配置ルールを参照しても同様である。
【００５５】
まず、Ｓｔｒｕｔｓフレームワークにおいて、ＪＳＰを配置する処理を説明する。
図８のＪＳＰ変換・配置ルールでは、配置ルールとして、location属性の位置という指定がなされている。従って、要素配置処理部１５は、図１２の中間ソースコードに示す"location"の指定に応じて配置位置を決定し、ＪＳＰをその決定された位置に配置する。尚、中間ソースコードにおける"location"の指定は、ユーザが付加することもできるが、ユーザから情報入力がない場合は、システムが保持するデフォルト値が設定される。
【００５６】
次に、Ｓｔｒｕｔｓフレームワークにおいて、Action Classを配置する処理を説明する。
図８のAction Class変換・配置ルールでは、配置ルールとして、location属性の位置という指定がなされている。従って、要素配置処理部１５は、ＪＳＰの場合と同様、中間ソースコードに示す"location"の指定に応じて配置位置を決定し、Action Classをその決定された位置に配置する。尚、中間ソースコードにおける"location"の指定は、ユーザが付加することもできるが、ユーザから情報入力がない場合は、システムが保持するデフォルト値が設定される。
【００５７】
最後に、Ｓｔｒｕｔｓフレームワークにおいて、struts-config.xmlを配置する処理を説明する。
図８のstruts-config.xml変換・配置ルールでは、配置ルールとして、固定位置という指定がなされている。従って、要素配置処理部１５は、struts-config.xmlを固定の位置に配置することを決定し、struts-config.xmlをその決定された位置に配置する。
【００５８】
このように、本実施の形態では、既存アプリケーションのソースコードを、例えば、Ｓｔｒｕｔｓフレームワークにおける各リソースに変換している。仮に、既存アプリケーションのソースコードを独自のアプリケーション構造に変換することでターゲット環境での動作を保証したとすると、開発者はその独自のアプリケーション構造を習得する必要があり、開発者のスキルが追いつかなくなる事態が考えられる。これに対し、本実施の形態では、標準化されたフレームワークの利用を前提とした変換を行うため、開発者に新たなスキルの習得を要求しない。即ち、既存アプリケーションのソースコードを、フレームワークを利用することによる利点を減ずることなく、ターゲット環境で動作するように変換することを可能にしている。
また、既存アプリケーションのソースコードを解析して得られる画面解析情報は、ソースコードから抽出した各要素を細分化し、分離して保持するようにしている。これにより、既存アプリケーションのソースコードをターゲット環境における標準化されたフレームワークに適合させるための変換が柔軟に行えるようになる。
更に、変換・配置ルールは、複数のフレームワークに対して設け、その中から移行したいターゲット環境を選択できるようにしている。これにより、既存アプリケーションのソースコードを複数のフレームワークのうちの所望のものに適合するよう変換することを可能としている。
【００５９】
【発明の効果】
このように、本発明によれば、既存アプリケーションのソースコードを、ターゲット環境における標準化されたフレームワークを利用することによる利点を減ずることなく、ターゲット環境で動作するように変換することが可能となる。
【図面の簡単な説明】
【図１】  本実施の形態の全体構成を示す図である。
【図２】  本実施の形態の画面解析処理部による処理内容を概念的に示す図である。
【図３】  本実施の形態の要素変換処理部による処理内容を概念的に示す図である。
【図４】  本実施の形態の処理動作を示すフローチャートである。
【図５】  本実施の形態によるVisual Basicソースコードから中間ソースコードへの変換についての説明をするための図である。
【図６】  本実施の形態によるVisual Basicソースコードから中間ソースコードへの変換についての説明をするための図である。
【図７】  本実施の形態によるVisual Basicソースコードから中間ソースコードへの変換についての説明をするための図である。
【図８】  本実施の形態で用いる変換・配置ルールの一例を示す図である。
【図９】  本実施の形態による中間ソースコードからＳｔｒｕｔｓフレームワークのリソースへの変換を説明するための図である。
【図１０】  本実施の形態による中間ソースコードからＳｔｒｕｔｓフレームワークのリソースへの変換を説明するための図である。
【図１１】  本実施の形態による中間ソースコードからＳｔｒｕｔｓフレームワークのリソースへの変換を説明するための図である。
【図１２】  本実施の形態でリソースの配置位置を指定するlocation属性を説明するための図である。
【符号の説明】
１０…既存アプリケーションソースコード記憶部、１１…画面解析処理部、１２…画面解析情報記憶部、１３…要素変換処理部、１４…新規アプリケーションリソーステンプレート記憶部、１５…要素配置処理部、１６…新規アプリケーションテンプレート記憶部
【図１】
0004686117.tif 000002
【図２】
0004686117.tif 000003
【図３】
0004686117.tif 000004
【図４】
0004686117.tif 000005
【図５】
0004686117.tif 000006
【図６】
0004686117.tif 000007
【図７】
0004686117.tif 000008
【図８】
0004686117.tif 000009
【図９】
0004686117.tif 000010
【図１０】
0004686117.tif 000011
【図１１】
0004686117.tif 000012
【図１２】
0004686117.tif 000013