(57)【要約】【課題】  どのメソッドに設定するかを正しく指定することが難しいアスペクトを直感的に設定できるインターフェースを持つアスペクト設定方法及び装置を提供すること。【解決手段】  メソッド及びアスペクトの呼び出し関係のシーケンス図から構成されるユーザインターフェースを表示し、その表示画面上でアスペクトをプログラム実行の流れにあわせてドラグアンドドロップ操作でアスペクトを設定する。【選択図】      図１２
2008234271.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを構成する複数のクラスに織り込むアスペクトを設定する方法であって、
クラス情報解析手段により前記複数のクラスのそれぞれに含まれるメソッドの呼び出し関係を解析する第１のステップと、アスペクト解析手段により前記メソッドに織り込まれたアスペクトの呼び出し関係を解析する第２のステップと、シーケンス図作成手段によりクラス相互間におけるメソッドとアスペクトの呼び出し関係を示すシーケンス図を作成し、当該シーケンス図をアスペクト設定用のユーザインターフェースとして画面表示する第３のステップと、画面表示されたシーケンス図上において所望のメソッド相互間またはアスペクト相互間に織り込む新規アスペクトのアドバイスをユーザによるドラッグ＆ドロップ操作によって受付け、受付けたアドバイスのデータから新規アスペクトをアスペクト生成手段により生成し、生成した新規アスペクトを前記クラス情報解析手段、アスペクト解析手段が解析した既存のクラスに織り込む第４のステップを備えることを特徴とするアスペクト設定方法。
【請求項２】
前記第３のステップにおいて、前記シーケンス図上に、ドラッグ＆ドロップ操作対象となるアドバイスを列挙したツールボックスを表示することを特徴とする請求項１に記載のアスペクト設定方法。
【請求項３】
前記第３のステップにおいて、前記シーケンス図上に、ドロップ操作可能な位置をガイドラインで表示することを特徴とする請求項１または２に記載のアスペクト設定方法。
【請求項４】
アドバイスをドロップした位置の情報を元に、設定可能なポイントカット表記の候補をダイアログ上に表示することを特徴とする請求項３に記載のアスペクト設定方法。
【請求項５】
プログラムを構成する複数のクラスに織り込むアスペクトを設定する装置であって、
前記複数のクラスのそれぞれに含まれるメソッドの呼び出し関係を解析するクラス情報解析手段と、前記メソッドに織り込まれたアスペクトの呼び出し関係を解析するアスペクト解析手段と、クラス相互間におけるメソッドとアスペクトの呼び出し関係を示すシーケンス図を作成し、当該シーケンス図をアスペクト設定用のユーザインターフェースとして画面表示するシーケンス図作成手段と、画面表示されたシーケンス図上において所望のメソッド相互間またはアスペクト相互間に織り込む新規アスペクトのアドバイスをユーザによるドラッグ＆ドロップ操作によって受付け、受け付けたアドバイスのデータから新規アスペクトを生成し、生成した新規アスペクトを前記クラス情報解析手段、アスペクト解析手段が解析した既存のクラスに織り込むアスペクト生成手段とを備えることを特徴とするアスペクト設定装置。
【請求項６】
前記シーケンス図作成手段が、前記シーケンス図上に、ドラッグ＆ドロップ操作対象となるアドバイスを列挙したツールボックスを表示することを特徴とする請求項５に記載のアスペクト設定装置。
【請求項７】
前記シーケンス図作成手段が、前記シーケンス図上に、ドロップ操作可能な位置をガイドラインで表示することを特徴とする請求項５または６に記載のアスペクト設定装置。
【請求項８】
前記シーケンス図作成手段が、アドバイスをドロップした位置の情報を元に、設定可能なポイントカット表記の候補をダイアログ上に表示することを特徴とする請求項７に記載のアスペクト設定装置。
【請求項９】
プログラムを構成する複数のクラスに織り込むアスペクトを設定するコンピュータプログラムであって、
前記複数のクラスのそれぞれに含まれるメソッドの呼び出し関係を解析する第１のステップと、前記メソッドに織り込まれたアスペクトの呼び出し関係を解析する第２のステップと、クラス相互間におけるメソッドとアスペクトの呼び出し関係を示すシーケンス図を作成し、当該シーケンス図をアスペクト設定用のユーザインターフェースとして画面表示する第３のステップと、画面表示されたシーケンス図上において所望のメソッド相互間またはアスペクト相互間に織り込む新規アスペクトのアドバイスをユーザによるドラッグ＆ドロップ操作によって受付け、受け付けたアドバイスのデータから新規アスペクトをアスペクト生成手段により生成し、生成した新規アスペクトを既存のクラスに織り込む第４のステップとをコンピュータに実行させることを特徴とするアスペクト設定用のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アスペクト指向によるプログラムを構成するクラスに織り込むアスペクトを設定するアスペクト設定方法および装置並びにコンピュータプログラムに関する。
【背景技術】
【０００２】
現在、アプリケーション開発において新しい概念である、アスペクト指向プログラミングが注目されている。
アスペクト指向とは、プログラムの構成要素となる各モジュール間で共通に使われる機能を切り出し、それを後から自動的にプログラムに織り込んでいくものである。アスペクトの例として、ログやトランザクション管理などが挙げられる。また、アスペクト指向は、オブジェクト指向と相反する概念ではないため、この２つを組み合わせて利用することが可能である。
ここで、ログを例に用いてアスペクト指向プログラミングについて説明する。
ログを出力する際、従来においては、ログコンポーネントを呼び出すコードをプログラム中から呼び出すことによって、ログを出力してきた。このような場合、開発者が自分が担当しているモジュールにログコンポーネントを呼び出すコードを記述することが一般的であるが、個々の開発者のスキルによってログ出力の度合いが異なるため、システム全体で均質な情報量のログを出力することは難しかった。
アスペクト指向プログラミングを用いることにより、ログを出力する機能をアスペクトとして切り出し、これをシステム全体のプログラムに対して自動的に織り込むことができるため、システム全体を通して均質な情報量のログを出力するようにすることが可能となる。
このようにアスペクト指向プログラミングを用いることにより、モジュール間で横断的に使用する機能を切り出して、設定によってあとから埋め込むことが可能となる。
【０００３】
アスペクトは、そのアスペクトが行う処理を記述したアドバイスと、そのアドバイスをどこに埋め込むかを指定するポイントカットから構成されている。
アドバイスには、埋め込む先の処理の前に実行されるbeforeアドバイス、後に実行されるafterアドバイス、その処理の前後を包み込むように実行されるaroundアドバイスの3種類がある。
また、メソッドに対するアドバイスとフィールドアクセスに対するアドバイスがある。ポイントカットでは、あるクラスのどのメソッドを呼び出したか、どのフィールドにアクセスしたか、あるクラスをインスタンス化したかなどをポイントとして切り出して指定することができる。
ポイントカットは、クラス名やメソッド名などを直接指定する以外にも、ワイルドカード(*)を用いることによって一度に複数のポイントを指定することもできる。
アスペクト指向プログラミングを実現するために、アスペクトをどのように定義するかを規定し、アドバイスをプログラムに織り込むことが必要となる。このような機能を実現する環境をアスペクト指向環境と呼ぶ。
【０００４】
現在、オブジェクト指向言語であるJava（登録商標）と組み合わせて使えるアスペクト指向環境がいくつか利用可能である。ここでは、そのひとつであるAspectJのアスペクト表記方法を用いるものとする。
AspectJでは、アスペクトの定義を以下のような形式で表記する。
package sample;
public aspect Debug {
pointcut callHello(): execution(* sample.Hello.sayHello(..));
Object around() : callHello() {
Object t = thisJoinPoint.getTarget();
System.out.println("target is " + t.getClass().getName());
Object result = proceed();
System.out.println("returning " + result);
return result;
}
}
【０００５】
アスペクトの定義は、pointcut句によるポイントカットの指定とアドバイスの実装から構成される。pointcut句では、メソッドに対しては、execution宣言により実行のポイントを指定したり、within宣言によってあるパッケージに含まれるクラスのすべてのメソッドというような指定をしたりすることができる。それぞれの宣言の引数には、メソッドのシグネチャを指定する。
メソッドのシグネチャは、「<戻り値> <クラス名>.<メソッド名>(引数)」で構成される。ここには、*(ワイルドカード)を用いることもでき、say*のように指定することにより、sayHello、sayGoodbyのようにsayで始まる文字列にマッチさせることもできる。
メソッドの引数は、受け付ける引数の型を記述する以外にも「..」を指定することにより任意の引数を指定することもできる。
また、pointcut句では、フィールドに対しては、get宣言により読み込みアクセス、set宣言により書き込みアクセスのポイントを指定できる。それぞれの宣言の引数には、フィールド名を指定する。
フィールド名は、「<クラス名>.<フィールド名>」で構成される。ここにもメソッドと同様にワイルドカードを指定することができる。
【０００６】
複数のアスペクトが存在する場合は、以下のようなdeclare precedence文を用いてその実行順を定義することができる。以下の例では、同じメソッドに２つのアスペクトが付与されたときは、Profie、Debugの順番で実行されることとなる。
package sample;
public aspect Precedence {
declare precedence : Profile, Debug ;
}
【０００７】
AspectJの開発環境として、AJDTというツールがある。これを用いることにより、あるアスペクトがどのJavaクラスに適用されるかといった情報を表示することができる。また、アスペクトがどのようにクラスに適用されたかをシステム全体を通して見ることができるビューアも用意されている。
なお、本発明に関連する公知技術文献としては下記の特許文献がある。
【０００８】
【特許文献１】特開２００５-２５８９４４号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
アスペクト指向プログラミングでは、プログラム中に散在する共通の処理を抜き出して、アスペクトとしてまとめる。そのため、アスペクトは、プログラム本体と切り離されて定義されることが普通である。そのため、プログラム本体とアスペクトの関連を把握するのはあまり簡単ではない。
また、アスペクトをプログラムのどの箇所に設定するかは、特別な設定式を用いる。この設定式には、ワイルドカードなどを用いてプログラム中の複数のポイントにアスペクトを設定することが可能であり、これを用いることによって効率良くアスペクトの設定を行うことができる。しかし、これを用いた場合、そのアスペクトが、自分の想定している箇所に正しく設定されているかを確認することはなかなか難しい。
つまり、アスペクトは、その影響範囲を認識することは、あまり簡単ではないといえる。
【００１０】
本発明の目的は、アスペクト指向プログラミングを用いたアプリケーション開発において、プログラム内の自分が想定した場所にアスペクトをより簡単に設定できるアスペクト設定方法および装置並びにプログラムを提供することである。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明に係るアスペクト設定方法は、プログラムを構成する複数のクラスに織り込むアスペクトを設定する方法であって、
クラス情報解析手段により前記複数のクラスのそれぞれに含まれるメソッドの呼び出し関係を解析する第１のステップと、アスペクト解析手段により前記メソッドに織り込まれたアスペクトの呼び出し関係を解析する第２のステップと、シーケンス図作成手段によりクラス相互間におけるメソッドとアスペクトの呼び出し関係を示すシーケンス図を作成し、当該シーケンス図をアスペクト設定用のユーザインターフェースとして画面表示する第３のステップと、画面表示されたシーケンス図上において所望のメソッド相互間またはアスペクト相互間に織り込む新規アスペクトのアドバイスをユーザによるドラッグ＆ドロップ操作によって受付け、受け付けたアドバイスのデータから新規アスペクトをアスペクト生成手段により生成し、生成した新規アスペクトを前記クラス情報解析手段、アスペクト解析手段が解析した既存のクラスに織り込む第４のステップを備えることを特徴とする。
また、前記第３のステップにおいて、前記シーケンス図上に、ドラッグ＆ドロップ操作対象となるアドバイスを列挙したツールボックスを表示することを特徴とする。
また、前記第３のステップにおいて、前記シーケンス図上に、ドロップ操作可能な位置をガイドラインで表示することを特徴とする。
また、アドバイスをドロップした位置の情報を元に、設定可能なポイントカット表記の候補をダイアログ上に表示することを特徴とする。
【００１２】
本発明に係るアスペクト設定装置は、プログラムを構成する複数のクラスに織り込むアスペクトを設定する装置であって、
前記複数のクラスのそれぞれに含まれるメソッドの呼び出し関係を解析するクラス情報解析手段と、前記メソッドに織り込まれたアスペクトの呼び出し関係を解析するアスペクト解析手段と、クラス相互間におけるメソッドとアスペクトの呼び出し関係を示すシーケンス図を作成し、当該シーケンス図をアスペクト設定用のユーザインターフェースとして画面表示するシーケンス図作成手段と、画面表示されたシーケンス図上において所望のメソッド相互間またはアスペクト相互間に織り込む新規アスペクトのアドバイスをユーザによるドラッグ＆ドロップ操作によって受付け、受け付けたアドバイスのデータから新規アスペクトを生成し、生成した新規アスペクトを前記クラス情報解析手段、アスペクト解析手段が解析した既存のクラスに織り込むアスペクト生成手段とを備えることを特徴とする。
また、前記シーケンス図作成手段が、前記シーケンス図上に、ドラッグ＆ドロップ操作対象となるアドバイスを列挙したツールボックスを表示することを特徴とする。
また、前記シーケンス図作成手段が、前記シーケンス図上に、ドロップ操作可能な位置をガイドラインで表示することを特徴とする。
また、前記シーケンス図作成手段が、アドバイスをドロップした位置の情報を元に、設定可能なポイントカット表記の候補をダイアログ上に表示することを特徴とする。
【００１３】
本発明に係るアスペクト設定用のコンピュータプログラムは、プログラムを構成する複数のクラスに織り込むアスペクトを設定するコンピュータプログラムであって、
前記複数のクラスのそれぞれに含まれるメソッドの呼び出し関係を解析する第１のステップと、前記メソッドに織り込まれたアスペクトの呼び出し関係を解析する第２のステップと、クラス相互間におけるメソッドとアスペクトの呼び出し関係を示すシーケンス図を作成し、当該シーケンス図をアスペクト設定用のユーザインターフェースとして画面表示する第３のステップと、画面表示されたシーケンス図上において所望のメソッド相互間またはアスペクト相互間に織り込む新規アスペクトのアドバイスをユーザによるドラッグ＆ドロップ操作によって受付け、受け付けたアドバイスのデータから新規アスペクトをアスペクト生成手段により生成し、生成した新規アスペクトを既存のクラスに織り込む第４のステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１４】
本発明のアスペクト設定装置によれば、次のような効果がある。
（１）グラフィカルなユーザインターフェースを用いてアスペクトを設定することにより、どのアスペクトをどのメソッドに設定するかを視覚的に確認しながら作業することができる。
（２）メソッドの呼び出しの流れとアスペクトの実行の流れが同時に表示されたシーケンス図上でアスペクトを設定することによって、どのような順序でアスペクトおよびメソッドが呼び出されるかを正しく把握しながら設定することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を適用したアスペクト設定装置の一実施の形態について図面を用いて詳細に説明する。
図１は、本発明のアスペクト設定装置を実現するコンピュータ装置のハードウェア構成例を示したブロック図である。
図１に示すコンピュータ（１０１）は、中央演算装置（CPU）（１０２）とメインメモリ（１０３）を備え、マザーボード（１０４）により接続されている。また、マザーボード（１０４）に接続された磁気ディスク装置（１０５）とグラフィックカード（１０６）を備え、グラフィックカード（１０６）は外部のディスプレイ装置（１０７）と接続されている。入力装置として、マウス（１０８）とキーボード（１０９）を備え、これらはマザーボード（１０４）に接続されている。
【００１６】
図２は、図１のハードウェア構成において、アスペクトの設定機能を機能的に示したシステム構成図であり、本発明のアスペクト設定装置（２０１）は、クラス情報解析部（２０２）、クラス蓄積部（２０３）、アスペクト解析部（２０４）、アスペクト生成部（２０５）、アスペクト蓄積部（２０６）、ユーザインターフェース管理部（２０７）で構成される。
ユーザインターフェース管理部（２０７）は、ディスプレイ装置（２０８）と入力装置（２０９）と接続されている。
クラス情報解析部（２０２）は、クラス蓄積部（２０３）およびユーザインターフェース管理部（２０７）と接続されている。
アスペクト解析部（２０４）は、アスペクト蓄積部（２０６）とユーザインターフェース管理部（２０７）と接続されている。
アスペクト生成部（２０５）は、アスペクト蓄積部（２０６）とユーザインターフェース管理部（２０７）と接続されている。
クラス蓄積部（２０３）、アスペクト蓄積部（２０６）は、磁気ディスク装置（１０５）上で実現される。入力装置（２０９）は、図１のマウス（１０８）およびキーボード（１０９）に相当する。
本実施形態においては、クラス情報解析部（２０２）によりプログラムを構成する複数のクラスのそれぞれに含まれるメソッドの呼び出し関係を解析し、またアスペクト解析部（２０４）により前記メソッドに織り込まれたアスペクトの呼び出し関係を解析し、ユーザインターフェース管理部（２０７）によりクラス相互間におけるメソッドとアスペクトの呼び出し関係を示すシーケンス図を作成し、当該シーケンス図をアスペクト設定用のユーザインターフェースとして画面表示する。そして、画面表示されたシーケンス図上において所望のメソッド相互間またはアスペクト相互間に織り込む新規アスペクトのアドバイスをユーザによるドラッグ＆ドロップ操作によって受付け、受け付けたアドバイスのデータから新規アスペクトをアスペクト生成部（２０５）により生成し、生成した新規アスペクトをクラス情報解析部（２０２）、アスペクト解析部（２０４）が解析した既存のクラスに織り込む。
【００１７】
図３は、クラスのメソッド情報のデータフォーマットを示す図である。
１つのメソッド情報は、ID（３０１）、クラス名（３０２）、メソッド名（３０３）、引数（３０４）、戻り値（３０５）で構成されている。
クラスにあるメソッドの１つに対して１つのエントリが対応する。同じ名前のメソッドでも引数の型が異なれば別のエントリとなる。
【００１８】
図４は、メソッドの呼び出し関係情報のデータフォーマットを示す図である。
１つのフィールド情報は、呼び出し元ID（４０１）、シーケンス番号（４０２）、呼び出し先ID（４０３）で構成されている。
呼び出し元ID、呼び出し先IDは、図３におけるクラスのメソッド情報のデータフォーマットのIDフィールドの値が入る。
シーケンス番号は、メソッドが呼び出された順番につけられる番号で、小さな番号ほど先に呼び出されたことを示す。
【００１９】
図５は、アスペクト情報のデータフォーマットを示す図である。
１つのアスペクト情報はID（５０１）、名前（５０２）で構成されている。名前（５０２）はそのアスペクトを特定できる任意の文字列となる。
【００２０】
図６は、アドバイス情報のデータフォーマットを示す図である。
１つのアドバイス情報は、ID（６０１）、アスペクト（６０２）、名前（６０３）、ターゲット（６０４）、タイプ（６０５）、実装（６０６）で構成されている。
アスペクトは、このアドバイスが関連するアスペクトのIDが入る。名前はそのアドバイスを認識できる任意の文字列となる。ターゲットはメソッドもしくはフィールドであるが今回はメソッドのみを扱うものとする。タイプはaround、before、afterのいずれかである。実装は、そのアドバイスのプログラムコードとなる。
【００２１】
図７は、ポイントカット情報のデータフォーマットを示す図である。
１つのポイントカット情報はID（７０１）、アスペクト（７０２）、名前（７０３）、ポイントカット表記（７０４）で構成されている。
アスペクトには、このポイントカットが関連するアスペクトのIDが入る。名前はそのポイントカットを特定できる任意の文字列となる。
ポイントカット表記はどのメソッドに対応するアスペクトを織り込むかを指定するもので、アスペクト実行環境であるAspectJの文法に従う。
【００２２】
図８は、メソッドの呼び出し関係と、メソッドに関連付けられたアスペクトを表現するデータ構造を示す図である。
あるメソッドを始点としてそのメソッドが呼び出すメソッドを木構造で表していく（８０１）。メソッドの呼び出し木の各ノードで保持されるデータ（８０２）は、どのメソッドに対応するかを表すメソッド情報（８０３）、そのメソッドに関連付けられたアスペクト（８０４）、そのメソッドが呼び出すメソッド（８０５）で構成される。アスペクト（８０）および呼び出すメソッド（８０５）は、順番に保持されるリストとなる。
【００２３】
図９は、クラス情報解析部（２０２）で扱うクラスのデータ構造を示す図である。
クラス名領域（９０１）は、クラスの解析中に現在解析中のクラスの名前を保持する。現在のメソッド領域（９０２）には現在解析中のメソッド情報が保持される。メソッド配列（９０３）およびメソッド呼び出し配列（９０４）には、クラスを読み込んで解析した結果を保持する。
【００２４】
図１０は、アスペクト解析部（２０４）が扱うアスペクトのデータ構造を示す図である。
アスペクト情報領域（１００１）には現在解析中のアスペクト情報が保持される。
アスペクト配列（１００２）、アドバイス配列（１００３）、ポイントカット配列（１００４）には、アスペクトを読み込んで解析した結果を保持する。
【００２５】
図１１は、本発明に係るアスペクト設定装置（２０１）の表示画面の一例を示す図である。
本装置の画面は、UMLのシーケンス図を中心とする。
UMLのシーケンス図は、クラスに対応するクラス名を表示した箱（１１０１），（１１０２）、（１１０３）とそこから伸びる線（ライフライン）（１１０４）、（１１０５）、（１１０６）と、そのクラスからのメソッド呼び出しを表す矢印（１１０７）〜（１１１０）で構成される。
本装置では標準的なシーケンス図にアスペクトの表示を加えたものである。アスペクト（１１１１）は、メソッドの矢印と呼び出し先のクラスのライフラインの間に表示される。
複数のアスペクトがメソッドに適用される場合は、重ねて表示される。
アスペクトは、図の左から右に向かう順で実行されるものとする。また、アスペクトが織り込むアドバイスがbeforeアドバイスの場合は、メソッドの上部（１１１２）に、afterアドバイスの場合はメソッドの下部（１１１３）に、aroundアドバイスの場合は、メソッドの横（１１１４）に描画される。この際、アスペクトは見易さを考慮して簡略化された状態で表示される。
また、画面右上部には、利用可能なアドバイスを列挙したアドバイスツールボックス（１１１５）が表示される。ここに列挙されるアドバイスは、アスペクト蓄積部（２０６）に蓄積されたアスペクトを解析して抽出した図６のアドバイス情報を一覧形式で表示したものである。ここから、利用するアドバイスを選択し、シーケンス図上にドラッグ（１１１６）する。
【００２６】
図１２は、本実施形態のアスペクト設定装置において、アドバイスをドラッグしたときの表示例である。
シーケンス図上に表示されているアスペクトのライフライン上にアドバイスをドラッグすると、そのアスペクトは展開されて表示される。そして、そのアスペクトの両側にガイドライン（１２０１）、（１２０２）が表示され、ここにアドバイスをドロップすることによって新規のアスペクトを設定することができる。
【００２７】
図１３は、アドバイスをガイドライン上にドロップした際に表示されるダイアログ（１３００）である。このダイアログでは、新たに設定するアスペクトの名前（１３０１）、ポイントカットの名前（１３０２）と、ポイントカットのクラス（１３０３）、メソッド（１３０４）、引数（１３０５）を指定する。ポイントカットには、＊（ワイルドカード）が指定可能で、これを用いると、複数のクラスやメソッドに対してアスペクトを設定することが可能となる。このダイアログ（１３００）上には、指定できるポイントカット表記が列挙される。この中から指定したい表記を選択する。指定できるポイントカット表記の候補は、ここではクラス名などの文字列を大文字ごとに区切り、＊と組み合わせるものとする。例えば、LoginServiceという文字列であれば、LoginとServiceに区切り、それぞれと＊を組み合わせ、もともとの表記であるLoginServiceに加えLogin*と*Serviceが候補となる。
【００２８】
以下、以上のように構成されたアスペクト設定装置の動作を説明する。
最初に本実施形態のアスペクト設定装置を利用してアスペクトを設定する手順を説明する。
図１４は、アスペクトを設定する際のユーザの動作を示すフローチャートである。
最初に、アドバイスツールボックス（１１１５）からアドバイスを選択する（ステップ１４０１）。そのアドバイスをシーケンス図のアスペクトもしくはクラスのライフライン上にドラッグする（ステップ１４０２）。すると、そのアスペクト/クラスのライフラインの両側にガイドライン（１２０１）、（１２０２）が表示されるので、その上にアドバイスをドロップする（ステップ１４０３）。すると、図１３に示したダイアログ（１３００）が表示されるので、そこでアスペクトの設定（クラス、メソッド、引数の設定）を行い（ステップ１４０４）、OKボタン（１３０６）を押す（１４０５）。
なお、ガイドライン（１２０１）、（１２０２）は、ユーザインターフェース管理部（２０７）が表示する。
【００２９】
図１５は、図１４のフローチャートの実行後、アスペクト生成部（２０５）がアスペクトを生成する処理のフローチャートである。
アスペクト生成部（２０５）はダイアログ（１３００）に入力された情報をユーザインターフェース管理部（２０７）から受取り、図７に示すポイントカットデータを生成する（ステップ１５０１）。
次に、ドロップされたアドバイスを元に、図６に示すアドバイスデータと図５に示すアスペクト情報を生成する（ステップ１５０２）。
次に、図８に示すメソッド呼び出し木の中からアドバイスをドロップしたメソッドに対応するノードを取り出し、そのアスペクトリストの中に今回のアドバイスをドロップした位置にステップ１５０２で作成したアスペクトを追加する（ステップ１５０３）。
例えば、今まで、Profile→Debugの順番のときに、この２つのアスペクトの間にCheckをドロップした場合は、Profile→Check→Debugという順番になるようにもともとの２つのアスペクトの間に新しいアスペクトを追加する。
作成したアスペクト情報を元にアスペクトのプログラムコードを出力し、アスペクト蓄積部（２０６）に蓄積する（ステップ１５０４）。またメソッド呼び出し木のアスペクトリストを元にアスペクトの順番を記述するdeclare precedence文が記述されたアスペクトのプログラムを出力し、アスペクト蓄積部（２０６）に蓄積する（ステップ１５０５）。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施に用いるコンピュータ装置のハードウェア構成図である。
【図２】本発明の実施の形態の一例を示すシステム構成図である。
【図３】クラスのメソッド情報のデータフォーマットを表す図である。
【図４】メソッド呼び出し情報のデータフォーマットを表す図である。
【図５】アスペクト情報のデータフォーマットを表す図である。
【図６】アドバイス情報のデータフォーマットを表す図である。
【図７】ポイントカット情報のデータフォーマットを表す図である。
【図８】メソッド呼び出し関連木のデータ構造を表す図である。
【図９】クラス解析部が扱うデータの構成を表す図である。
【図１０】アスペクト解析部が扱うデータの構成を表す図である。
【図１１】アスペクト設定装置のアスペクト設定画面例を表す図である。
【図１２】アドバイスドロップ後のアスペクト設定画面を表す図である。
【図１３】アスペクト設定ダイアログを表す図である。
【図１４】アスペクト設定時のユーザの動作を示すフローチャートである。
【図１５】アスペクト生成時の処理のフローチャートである。
【符号の説明】
【００３１】
２０１    アスペクト設定装置
２０２    クラス情報解析部
２０３    クラス蓄積部
２０４    アスペクト解析部
２０５    アスペクト生成部
２０６    アスペクト蓄積部
２０７    ユーザインターフェース管理部
２０８    ディスプレイ装置
２０９    入力装置
１１１５    ツールボックス
１２０１    ガイドライン
１２０２    ガイドライン
【図１】
2008234271.tif 000003
【図２】
2008234271.tif 000004
【図３】
2008234271.tif 000005
【図４】
2008234271.tif 000006
【図５】
2008234271.tif 000007
【図６】
2008234271.tif 000008
【図７】
2008234271.tif 000009
【図８】
2008234271.tif 000010
【図９】
2008234271.tif 000011
【図１０】
2008234271.tif 000012
【図１１】
2008234271.tif 000013
【図１２】
2008234271.tif 000014
【図１３】
2008234271.tif 000015
【図１４】
2008234271.tif 000016
【図１５】
2008234271.tif 000017