(57)【要約】【課題】アプリケーションプログラムを構成するモジュールのうちリファクタリングを優先的に要するモジュールを示すリファクタリング支援装置を提供する。【解決手段】リファクタリング支援装置１０は、アプリケーションプログラムを構成している複数のモジュールのうち、アスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、アスペクト追加要求から抽出する変更モジュール抽出部１１０と、変更モジュール情報を蓄積する変更モジュール記憶部１２０と、蓄積された変更モジュール情報に基づいて、アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出部１３０と、優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力部１４０と、を備える。【選択図】図１
2010176564.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを構成している複数のモジュールのうち、前記アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、前記アスペクト追加要求から抽出する変更モジュール抽出手段と、
前記変更モジュール情報を蓄積する変更モジュール記憶手段と、
蓄積された前記変更モジュール情報に基づいて、前記アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出手段と、
前記優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力手段と、
を備えることを特徴とするリファクタリング支援装置。
【請求項２】
請求項１に記載のリファクタリング支援装置において、
前記優先度算出手段は、前記モジュールごとの前記優先度を、当該モジュールを示す前記変更モジュール情報の個数に基づいて算出することを特徴とするリファクタリング支援装置。
【請求項３】
請求項２に記載のリファクタリング支援装置において、
前記優先度算出手段は、前記モジュールごとの前記優先度を、当該モジュールを示す前記変更モジュール情報の個数に重み係数を乗算して算出することを特徴とするリファクタリング支援装置。
【請求項４】
請求項３に記載のリファクタリング支援装置において、
前記変更モジュール記憶手段は、複数通りに分類可能なパラメータ情報と前記変更モジュール情報とを互いに対応づけて蓄積し、
前記優先度算出手段は、前記変更モジュール情報の個数を、対応づけられた前記パラメータ情報に従って複数の群に分類し、分類された群のいずれかに対して前記優先度を算出することを特徴とするリファクタリング支援装置。
【請求項５】
請求項４に記載のリファクタリング支援装置において、
前記変更モジュール抽出手段は、受け付けた前記アスペクト追加要求から前記変更モジュール情報と前記パラメータ情報とを抽出して、
前記変更モジュール記憶手段は、前記変更モジュール抽出手段により抽出された前記変更モジュール情報と前記パラメータ情報とを互いに対応づけて蓄積することを特徴とするリファクタリング支援装置。
【請求項６】
請求項４または５に記載のリファクタリング支援装置において、
前記変更モジュール抽出手段は、前記アスペクト追加要求から前記パラメータ情報として時刻情報を抽出することを特徴とするリファクタリング装置。
【請求項７】
アプリケーションプログラムを構成している複数のモジュールのうち、前記アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、前記アスペクト追加要求から抽出する変更モジュール抽出ステップと、
前記変更モジュール情報を記憶手段に蓄積する変更モジュール蓄積ステップと、
蓄積された前記変更モジュール情報に基づいて、前記アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出ステップと、
前記優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力ステップと、
を備えることを特徴とするリファクタリング支援方法。
【請求項８】
請求項７に記載のリファクタリング支援方法において、
前記優先度算出ステップは、前記モジュールごとの前記優先度を、当該モジュールを示す前記変更モジュール情報の個数に基づいて算出することを特徴とするリファクタリング支援方法。
【請求項９】
請求項８に記載のリファクタリング支援方法において、
前記優先度算出ステップは、前記モジュールごとの前記優先度を、当該モジュールを示す前記変更モジュール情報の個数に重み係数を乗算して算出することを特徴とするリファクタリング支援方法。
【請求項１０】
請求項９に記載のリファクタリング支援方法において、
前記変更モジュール蓄積ステップは、複数通りに分類可能なパラメータ情報と前記変更モジュール情報とを互いに対応づけて蓄積し、
前記優先度算出ステップは、前記変更モジュール情報の個数を、対応づけられた前記パラメータ情報に従って複数の群に分類し、分類された群のいずれかに対して前記優先度を算出することを特徴とするリファクタリング支援方法。
【請求項１１】
請求項１０に記載のリファクタリング支援方法において、
前記変更モジュール抽出ステップは、受け付けた前記アスペクト追加要求から前記変更モジュール情報と前記パラメータ情報とを抽出して、
前記変更モジュール蓄積ステップは、前記変更モジュール抽出ステップにより抽出された前記変更モジュール情報と前記パラメータ情報とを互いに対応づけて蓄積することを特徴とするリファクタリング支援方法。
【請求項１２】
請求項１０または１１に記載のリファクタリング支援方法において、
前記変更モジュール抽出ステップは、前記アスペクト追加要求から前記パラメータ情報として時刻情報を抽出することを特徴とするリファクタリング方法。
【請求項１３】
コンピュータが読み出し可能な記憶媒体に格納されるプログラムであって、
アプリケーションプログラムを構成している複数のモジュールのうち、前記アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、前記アスペクト追加要求から抽出する変更モジュール抽出処理と、
前記変更モジュール情報を記憶手段に蓄積する変更モジュール蓄積処理と、
蓄積された前記変更モジュール情報に基づいて、前記アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出処理と、
前記優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力処理と、
を前記コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リファクタリング支援装置、リファクタリング支援方法およびプログラムに関する。
【背景技術】
【０００２】
アプリケーションプログラム開発において、作業の進捗とともにアプリケーションプログラムが冗長化することがしばしばある。これによりアプリケーションプログラムの処理負荷が増大するといったデメリットがあるため、アプリケーションプログラムの論理を変更せずに、当該アプリケーションプログラムの冗長的な構成を解消する作業を行う。これをリファクタリングという。
【０００３】
この種の技術として、特許文献１（特開２００８−１１７０６７号公報）には、アプリケーションプログラムの変更作業を支援する技術が記載されている。この技術は、アプリケーションプログラムを利用状況等に応じて個別に変更する作業を行うとき、個別にアプリケーションプログラムを意味づける情報（アノテーション）を検出する。そして、検出したアノテーションに基づいて当該アプリケーションプログラムの入力インターフェイスおよび出力インターフェイスを変更する。さらに、変更した入力インターフェイスおよび出力インターフェイスを呼び出す設計モデルを生成する。これによって、個別の状況に応じて当該アプリケーションプログラムを変更する作業が簡易なものになる。
【０００４】
また、特許文献２（特開２００７−２１３４８７号公報）にも、アプリケーションプログラムの変更作業を支援する技術が記載されている。この技術は、変更されるアプリケーションプログラムのクラス構造を解析し、各クラスで使用されているクラス名、メソッド名、シグネチャを取得し、生成するアスペクトのクラス名、メソッド名、シグネチャの候補を生成する。そして、共通処理として切り出すアスペクトが行うアドバイスの候補のデータ構造を解析する。さらに、開発対象のアプリケーションプログラム内で使用されているクラスについてクラス名、メソッド名、シグネチャを明示したクラス図と、解析されたアドバイスの候補と、をユーザに画面表示する。さらに、表示されたアドバイスの候補とクラス名、メソッド名、シグネチャの候補とをユーザに選択させ、アスペクトを生成する。これによって、変更されるアプリケーションプログラム中の想定箇所に織り込むアスペクトを容易に生成することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１１７０６７号公報
【特許文献２】特開２００７−２１３４８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら上記技術は、以下の点で改善の余地を有していた。すなわち、アプリケーションプログラムを運用しながら、当該プログラムを使用している複数のユーザから個別にアスペクトの追加要求を受け付けて当該アプリケーションプログラムを変更するシステムに対して、上記技術を適用しても、追加要求が多様かつ予測困難であるため、最適なリファクタリングを行うタイミングを図ることが難しかった。
【０００７】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、ユーザから個別に受け付けた変更要求に応じてアプリケーションプログラムを変更するシステムにおいて、当該アプリケーションプログラムに対してリファクタリングを行う最適なタイミングを示すリファクタリング支援装置、リファクタリング支援方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明によれば、アプリケーションプログラムを構成している複数のモジュールのうち、前記アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、前記アスペクト追加要求から抽出する変更モジュール抽出手段と、前記変更モジュール情報を蓄積する変更モジュール記憶手段と、蓄積された前記変更モジュール情報に基づいて、前記アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出手段と、前記優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力手段と、を備えることを特徴とするリファクタリング支援装置が提供される。
【０００９】
また、本発明によれば、アプリケーションプログラムを構成している複数のモジュールのうち、前記アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、前記アスペクト追加要求から抽出する変更モジュール抽出ステップと、前記変更モジュール情報を記憶手段に蓄積する変更モジュール蓄積ステップと、蓄積された前記変更モジュール情報に基づいて、前記アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出ステップと、前記優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力ステップと、を備えることを特徴とするリファクタリング支援方法が提供される。
【００１０】
さらに、本発明によれば、コンピュータが読み出し可能な記憶媒体に格納されるプログラムであって、アプリケーションプログラムを構成している複数のモジュールのうち、前記アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、前記アスペクト追加要求から抽出する変更モジュール抽出処理と、前記変更モジュール情報を記憶手段に蓄積する変更モジュール蓄積処理と、蓄積された前記変更モジュール情報に基づいて、前記アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出処理と、前記優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力処理と、を前記コンピュータに実行させることを特徴とするプログラムが提供される。
【発明の効果】
【００１１】
上記発明によれば、アスペクト追加要求に応じて変更されたモジュールを示す変更モジュール情報に基づいてリファクタリングを優先的に要するモジュールを示す情報を出力することができる。
【００１２】
本発明によれば、アプリケーションプログラムを構成するモジュールのうちリファクタリングを優先的に要するモジュールを示すリファクタリング支援装置、リファクタリング支援方法およびプログラムが提供される。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係るリファクタリング支援装置を用いたプログラム変更システムのブロック図である。
【図２】アスペクト追加要求に含まれるパラメータ情報の一例を表した図である。
【図３】アプリケーションプログラムのモジュールの構成情報を表した図である。
【図４】モジュールごとに変更モジュール情報に示された回数を表した図である。
【図５】本発明の実施の形態に係るリファクタリング支援方法を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１５】
図１は、本実施形態のリファクタリング支援装置を用いたプログラム変更システムのブロック図である。プログラム変更システム１は、リファクタリング支援装置１０の他に、ユーザの操作入力を受けつけてアスペクト追加要求を生成するユーザ個別要求受付装置２０を備える。また、プログラム変更システム１は、ユーザ個別要求受付装置２０が生成したアスペクト追加要求に基づいてアスペクトをアプリケーションプログラムに織り込む処理を実行するプログラム実行装置３０を備える。さらに、プログラム変更システム１は、プログラム実行装置３０にアプリケーションプログラムのリファクタリングを含む様々な処理を実行させるプログラム制御装置４０を備える。
【００１６】
ここで、アスペクト追加要求とは、オブジェクト指向においてモジュール間に跨る処理をアスペクトと定義し、追加対象のアプリケーションプログラム内の要求した箇所にアスペクトを織り込む（追加する）要求のことである。近年、アスペクトを分離して記述することでアプリケーションプログラムに柔軟性をもたせるアスペクト指向というプログラミング概念が注目されている。アスペクトをソフトウェアの中心的な本体から分離することで、アプリケーションプログラムの保守性や再利用性を高めることができる。
【００１７】
ユーザ個別要求受付装置２０は、リファクタリング支援装置１０に対してアスペクト追加要求を送出する。図１において、ユーザ個別要求受付装置２０は単数であり、リファクタリング支援装置１０に直接接続している。これに限らず、ユーザ個別要求受付装置２０は複数存在し、リファクタリング支援装置１０に対してインターネットやＬＡＮ等のネットワークを介して接続する構成としてもよい。
【００１８】
図１において、プログラム実行装置３０は、リファクタリング支援装置１０を介してアスペクト追加要求を受け付ける。これに限らず、プログラム実行装置３０は、ユーザ個別要求受付装置２０からアスペクト追加要求を受け付ける構成としてもよい。ただし、後者の場合、ユーザ個別要求受付装置２０は、リファクタリング支援装置１０とプログラム実行装置３０とに対して、同内容のアスペクト要求を送出する手段を備えることが望ましい。例えば、リファクタリング支援装置１０およびプログラム実行装置３０には、アスペクト追加要求を受け付けると応答信号をユーザ個別要求受付装置２０に返す手段を備えてもよい。そして、ユーザ個別要求受付装置２０には、応答信号を受け付けるまで、同じアスペクト追加要求の送出を繰り返す手段を備えてもよい。なお、プログラム実行装置３０によりアスペクトを織り込まれたアプリケーションプログラムは、プログラム実行装置３０内の記憶部（図示せず）に格納してもよく、外部の記憶装置（図示せず）に格納してもよい。
【００１９】
プログラム制御装置４０は、アプリケーションプログラム開発の作業者等の操作入力を受け付けて、受け付けた操作入力に応じてリファクタリング等の処理をプログラム実行装置３０に実行させてもよい。また、プログラム制御装置４０は、自装置内で自動的に生成された要求信号、または他装置から受け付けた要求信号に応じてリファクタリング等の処理をプログラム実行装置３０に実行させてもよい。
【００２０】
リファクタリング支援装置１０は、アプリケーションプログラムを構成している複数のモジュールのうち、アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、アスペクト追加要求から抽出する変更モジュール抽出部１１０を備える。また、リファクタリング支援装置１０は、変更モジュール情報を蓄積する変更モジュール記憶部１２０を備える。さらに、リファクタリング支援装置１０は、蓄積された変更モジュール情報に基づいて、アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出部１３０を備える。さらに、リファクタリング支援装置１０は、優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力部１４０を備える。
【００２１】
また、リファクタリング支援装置１０は、自装置内で処理されるデータまたはプログラム等を適宜記憶することができる記憶部１００を備えている。なお、変更モジュール記憶部１２０は、記憶部１００の記憶領域の一部または全部であってもよい。
【００２２】
リファクタリング支援装置１０に内包される構成の全部または一部は、ハードウェアで実現されてもよいし、あるいは、プロセッサに処理を実行させるプログラム（またはプログラムコード）で実現されてもよい。プロセッサは、不揮発性メモリなどの記録媒体からそのプログラムを読み出し実行する。本実施形態において、記憶媒体は記憶部１００であってもよい。
【００２３】
リファクタリング支援装置１０に内包される構成がプログラムによって実施される場合、当該プログラムは、プロセッサ（コンピュータ）が読み出し可能な記憶媒体に格納される。そして、当該プログラムは、アプリケーションプログラムを構成している複数のモジュールのうち、アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、アスペクト追加要求から抽出する変更モジュール抽出処理をコンピュータに実行させる。また、当該プログラムは、変更モジュール情報を記憶部１００に蓄積する変更モジュール蓄積処理をコンピュータに実行させる。さらに、当該プログラムは、蓄積された変更モジュール情報に基づいて、アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出処理をコンピュータに実行させる。さらに、当該プログラムは、優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力処理と、をコンピュータに実行させる。
【００２４】
優先モジュール出力部１４０は、画像により優先モジュール情報を出力をしてもよく、音声により優先モジュール情報を出力してもよい。このとき、出力される優先モジュール情報は、アプリケーションプログラムを構成するモジュールのうち最も優先度の大きいモジュールのみを示してもよい。また、出力される優先モジュール情報は、アプリケーションプログラムを構成するモジュールのうち複数のモジュールの優先度順位を示してもよい。
【００２５】
また、優先モジュール出力部１４０は、優先モジュール情報をプログラム制御装置４０に対するリファクタリングの要求信号として送出してもよい。このとき、プログラム制御装置４０は、優先モジュール出力部１４０から受け付けた優先モジュール情報が示す最も優先度の大きいモジュールに関してリファクタリングを行わせてもよい。
【００２６】
変更モジュール抽出部１１０は、受け付けたアスペクト追加要求から変更モジュール情報を抽出して、変更モジュール記憶部１２０に記憶させてもよい。また、変更モジュール抽出部１１０はプログラム実行装置３０にアスペクト追加要求を送出してもよい。このとき、変更モジュール抽出部１１０は、アスペクト追加要求の内容が変更されない範囲で、プログラム実行装置３０が解釈可能なコードにアスペクト追加要求を変換してもよい。
【００２７】
図２は、アスペクト追加要求に含まれるパラメータ情報の一例を整理した図である。アスペクト追加要求は、ユーザ名、要求種別、要求名、ポイントカット定義、アドバイス処理位置またはアドバイス定義がそれぞれ関連付けられている。
【００２８】
ユーザ名は、アスペクト追加要求を生成したユーザ個別要求受付装置２０にデフォルトで登録されているユーザ名であってもよく、ユーザの操作入力によって任意に定めされたユーザ名であってもよい。
【００２９】
要求種別は、アスペクト追加要求の種別を示すパラメータ情報である。図２において、要求種別はデータ分離または論理分離（カスタマイズ）の二種類に分類されている。ここで、データ分離とは、アスペクトの織り込み先のプログラム論理は変更せず、扱うデータをユーザごとに異なるデータとすることを意味している。また、論理分離とは、アスペクトの織り込み先のプログラム論理をユーザ個別の処理に変更し、扱うデータはユーザ間で共通のデータとすることを意味している。なお、要求種別はここで説明した二種類に限らず、入力データ分離、出力データ分離、内部保持データ分離またはデータ処理論理分離等のより詳細な要求種別としてもよい。
【００３０】
アドバイス定義は、そのアスペクトが行う処理の内容を示している。また、アドバイス処理位置は、アドバイス定義で示される処理を、織り込み先の処理を実行する前に実行するｂｅｆｏｒｅと、その処理を実行した後に実行するａｆｔｅｒと、その処理の前後を包み込むように実行されるａｒｏｕｎｄのいずれかを示すことができる。
【００３１】
ポイントカット定義は、アドバイス定義が示す処理をどこに織り込むかを指定している。図２において、ポイントカット定義はクラス群により織り込み先を指定しているが、これに限らず、ポイントカット定義は、アプリケーションプログラムの一部をファイル名や行番号で指定してもよく、アプリケーションプログラムを構成するモジュールの一部を指定してもよい。
【００３２】
ここで、図１に示す変更モジュール抽出部１１０が、アスペクト追加要求から変更モジュール情報を抽出する処理を詳細に説明する。
【００３３】
まず、変更モジュール抽出部１１０は、受け付けたアスペクト追加要求に内包されるポイントカット定義が指定しているアスペクトの織り込み先に関する情報を抽出する。例えば、図２に示すユーザ名がＢｏｂであるアスペクト追加要求を受け付けた場合、そのポイントカット定義からクラス群がＨｅｌｌｏであるモジュールがアスペクトの織り込み先として指定されていることを示す情報を抽出してもよい。
【００３４】
そして、変更モジュール抽出部１１０は、アスペクトが織り込まれるアプリケーションプログラムを構成するモジュールの構成情報を取得してもよい。ここでは、図３に示すようなモジュールの構成情報が、予め記憶部１００に記憶されているものとして説明する。変更モジュール抽出部１１０は、記憶部１００から取得したモジュールの構成情報と抽出した情報とを照らし合わせて、モジュール１が変更されるモジュールであると判定し、モジュール１を示す変更モジュール情報を生成してもよい。なお、図３に示すモジュールの構成情報は、各クラス群に１つのモジュールずつしか対応していないが、当然各クラス群に複数のモジュールが対応してもよい。
【００３５】
変更モジュール抽出部１１０は、モジュールの構成情報をプログラム実行装置３０またはプログラム制御装置４０から取得して、記憶部１００に記憶させてもよい。または、変更モジュール抽出部１１０は、ユーザ個別要求受付装置２０により生成されたモジュールの構成情報を取得して、記憶部１００に記憶させてもよい。
【００３６】
また、ポイントカット定義がアプリケーションプログラムの一部をファイル名や行番号で指定している場合、モジュールの構成情報は各モジュールのファイル名や行番号の一覧であってもよい。
【００３７】
また、ポイントカット定義がアプリケーションプログラムを構成するモジュールの一部を指定している場合、変更モジュール抽出部１１０はモジュールの構成情報を記憶部１００から取得しなくてもよい。
【００３８】
続いて、図１に示す優先度算出部１３０について詳細に説明する。優先度算出部１３０は、モジュールごとの優先度を、当該モジュールを示す変更モジュール情報の個数に基づいて算出してもよい。
【００３９】
また、優先度算出部１３０は、モジュールごとの優先度を、当該モジュールを示す変更モジュール情報の個数に重み係数を乗算して算出してもよい。
【００４０】
なお、重み係数は、ユーザや開発作業者等の操作入力によって任意に設定されてもよく、デフォルトで設定されてもよい。また、設定された重み係数は、記憶部１００に記憶されてもよい。
【００４１】
第１の例として、優先度算出部１３０は、蓄積された変更モジュール情報のうち、所定のモジュールを示す変更モジュール情報の個数を、そのまま当該モジュールの優先度としてもよい。
【００４２】
すなわち、モジュール１を示す変更モジュール情報の個数が３の場合、モジュール１の優先度も３となる。また、モジュール２を示す変更モジュール情報の個数が１の場合、モジュール２の優先度も１となる。
【００４３】
第２の例として、優先度算出部１３０は、蓄積された変更モジュール情報のうち、所定のモジュールを示す変更モジュール情報の個数に、モジュールごとに一律に設定された重み係数を乗算して求めた値を当該モジュールの優先度としてもよい。
【００４４】
すなわち、モジュール１を示す変更モジュール情報の個数が３で、モジュール１の重み係数Ｗ１＝０．７のとき、モジュール１の優先度は２．１となる。また、モジュール２を示す変更モジュール情報の個数が１で、モジュール２の重み係数Ｗ２＝０．２のとき、モジュール２の優先度は０．２となる。
【００４５】
第３の例として、変更モジュール記憶部１２０は、複数通りに分類可能なパラメータ情報と変更モジュール情報とを互いに対応づけて蓄積してもよい。このとき、優先度算出部１３０は、変更モジュール情報の個数を、対応づけられたパラメータ情報に従って複数の群に分類し、分類された群のいずれかに対して優先度を算出してもよい。このとき、重み係数はパラメータ情報ごとに一律に設定されてもよい。
【００４６】
すなわち、変更モジュール記憶部１２０に変更モジュール情報と要求種別とを対応づけて蓄積している場合、優先度算出部１３０は、所定のモジュールを示す変更モジュール情報の個数を要求種別に従って分類して、図４に示すように整理することができる。ここで、データ分離の重み係数Ｗｄ＝０．８、論理分離（カスタマイズ）の重み係数Ｗｃ＝０．２とすると、モジュール１の優先度は、０．８×２＋０．２×１０＝３．６となる。また、モジュール２の優先度は、０．８×１＋０．２×１＝１となる。
【００４７】
上述した第３の例において、変更モジュール抽出部１１０は、受け付けたアスペクト追加要求から変更モジュール情報とパラメータ情報とを抽出する。そして、変更モジュール記憶部１２０は、変更モジュール抽出部１１０により抽出された変更モジュール情報とパラメータ情報とを互いに対応づけて蓄積する。
【００４８】
また、リファクタリング支援装置１０は、その設定に応じて上述の第１の例から第３の例のいずれかの処理で所定のモジュールの優先度を求めてもよい。
【００４９】
図５は、本実施形態のリファクタリング支援方法を示すフローチャートである。リファクタリング支援方法は、アプリケーションプログラムを構成している複数のモジュールのうち、アプリケーションプログラムを使用するユーザの操作入力で生成されるアスペクト追加要求に応じて変更される一つまたは複数のモジュールを示す変更モジュール情報を、アスペクト追加要求から抽出する変更モジュール抽出ステップ（ステップＳ１０１）を備える。また、リファクタリング支援方法は、変更モジュール情報を記憶部に蓄積する変更モジュール蓄積ステップ（ステップＳ１０２）を備える。さらに、リファクタリング支援方法は、蓄積された変更モジュール情報に基づいて、アプリケーションプログラムに対して行われるリファクタリングの優先度をモジュールごとに算出する優先度算出ステップ（ステップＳ１０３）を備える。さらに、リファクタリング支援方法は、優先度の大きいモジュールを示す優先モジュール情報を出力する優先モジュール出力ステップ（ステップＳ１０４）を備える。
【００５０】
ここまで説明してきた本実施形態の効果について説明する。本実施形態は、アスペクト追加要求に応じて変更されたモジュールを示す変更モジュール情報を、変更されるごとに蓄積し、蓄積された変更モジュール情報に基づいてリファクタリングを優先的に要するモジュールを求めるので、このモジュールを示す情報を出力することができる。これにより、リファクタリングを行う作業者または装置は、効率よくリファクタリングを行うことができる。
【００５１】
また、本実施形態は、所定のモジュールを示す変更モジュール情報の個数を用いて当該モジュールの優先度を求めることができる。アプリケーションプログラムは、当該アプリケーションプログラムの変更回数（アスペクト追加回数）に比例して冗長的な構成が増大する。所定のモジュールを示す変更モジュール情報の個数を用いて当該モジュールの優先度を求めることにより、的確に優先度を求めることができる。
【００５２】
さらに、本実施形態は、所定のモジュールを示す変更モジュール情報の個数に重み係数を乗算した値を用いてモジュールの優先度を求めることができる。これにより、モジュールごとに、またはパラメータ情報の分類ごとに重視する項目を定めて優先度を算出するので、より的確に優先度を求めることができる。
【００５３】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００５４】
例えば、図２には記載されていないが、アスペクト追加要求には、当該アスペクト追加要求が生成された時刻や当該アスペクト要求に基づいてアスペクトを織り込む処理を実行する予定時刻等を示す時刻情報が含まれてもよい。このとき、変更モジュール抽出部１１０は、アスペクト追加要求からパラメータ情報として時刻情報を抽出してもよい。これにより、生成されてからの経過時間が大きい（または小さい）アスペクト追加要求に変更されるモジュールほど優先度を大きくする等の処理が可能となる。
【００５５】
また、上述の実施の形態において、優先度算出部１３０は、蓄積された変更モジュール情報を一括的に処理して、所定のモジュールを示す変更モジュール情報の個数を求めるように説明した。しかし、優先度算出部１３０は、変更モジュール記憶部１２０に変更モジュール情報が蓄積されるたびに、所定のモジュールを示す変更モジュール情報の個数を求めてもよい。このとき、優先度算出部１３０は所定のモジュールを示す変更モジュール情報の個数を求めるごとに、その結果を記憶部１００に記憶してもよい。また、優先度算出部１３０は、その結果を記憶部１００に記憶するごとに更新してもよいし、蓄積してもよい。この場合、記憶部１００に記憶されている所定のモジュールを示す変更モジュール情報の個数の初期値は０としてもよい。
【００５６】
さらに、本実施の形態ではリファクタリング支援装置の各部がプログラムにより各種機能として論理的に実現されることを例示した。しかし、このような各部の各々を固有のハードウェアとして形成することもでき、ソフトウェアとハードウェアとの組み合わせとして実現することもできる。
【００５７】
なお、当然ながら、上述した実施の形態および複数の変形例は、その内容が相反しない範囲で組み合わせることができる。また、上述した実施の形態および変形例では、各構成要素の機能などを具体的に説明したが、その機能などは本願発明を満足する範囲で各種に変更することができる。
【符号の説明】
【００５８】
１      プログラム変更システム
１０    リファクタリング支援装置
２０    ユーザ個別要求受付装置
３０    プログラム実行装置
４０    プログラム制御装置
１００  記憶部
１１０  変更モジュール抽出部
１２０  変更モジュール記憶部
１３０  優先度算出部
１４０  優先モジュール出力部
【図１】
2010176564.tif 000003
【図２】
2010176564.tif 000004
【図３】
2010176564.tif 000005
【図４】
2010176564.tif 000006
【図５】
2010176564.tif 000007