JP4937387B2 - 自動書き換えプログラムおよび自動書き換え装置 - Google Patents

自動書き換えプログラムおよび自動書き換え装置 Download PDF

Info

Publication number
JP4937387B2
JP4937387B2 JP2010176501A JP2010176501A JP4937387B2 JP 4937387 B2 JP4937387 B2 JP 4937387B2 JP 2010176501 A JP2010176501 A JP 2010176501A JP 2010176501 A JP2010176501 A JP 2010176501A JP 4937387 B2 JP4937387 B2 JP 4937387B2
Authority
JP
Japan
Prior art keywords
character string
definition information
change
resource
extracted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010176501A
Other languages
English (en)
Other versions
JP2012038029A (ja
Inventor
実 西澤
弘樹 向山
裕一郎 江崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2010176501A priority Critical patent/JP4937387B2/ja
Publication of JP2012038029A publication Critical patent/JP2012038029A/ja
Application granted granted Critical
Publication of JP4937387B2 publication Critical patent/JP4937387B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明の実施形態は、アスペクトが定義されたAOP定義情報およびアクセス可否条件が定義された認可ポリシを自動的に修正する自動書き換えプログラムおよび自動書き換え装置に関する。
一般的に、例えば銀行のオンラインバンキング、ネットショッピングまたは企業の業務システム等で用いられるWebサーバ上のシステムにおいては、利用者からの不正アクセスを排除するためにアクセス制御が実装されている。これは、セキュリティ対策として有効な手段の1つである。
ここで、アクセス制御の枠組みについて説明する。アクセス制御においては、システムを利用するユーザを識別するための識別情報(以下、ユーザIDと表記)が予め当該システムに登録される。システム内において、ユーザは、ユーザIDによって識別される。
また、ユーザがユーザIDを指定することによってシステムに対してアクセス要求をした場合、当該システムではユーザ認証が行われる。このユーザ認証により、アクセスを要求する者がシステムに登録されたユーザであることが確認される。
ユーザ認証後、システム内のアクセス検知メカニズムが作動し、当該システム内のレファレンスモニタに対してアクセス要求が報告される。なお、レファレンスモニタは、アクセス制御の実行モジュールである。
レファレンスモニタは、例えばユーザの属性情報およびアクセス対象(アクセス要求の対象)の属性情報等を元に、認可ポリシに従って、要求されたアクセスの可否(許可または拒否)を判定する。このアクセスの可否の判定結果が許可の場合、システム内のアクセスメカニズムがアクセス対象に対するアクセスを実行する。
なお、アクセス制御の核心部は、上記したレファレンスモニタによるアクセス可否の判定である。このアクセス可否の判定においては、上記したように認可ポリシを考慮する必要がある。この認可ポリシとは、誰(サブジェクト)が、どのシステム資源(リソース)に対して、どのような操作(アクション)を行うことができるか否か(つまり、許可または拒否)が定義されたアクセス可否条件の集合体である。つまり、認可ポリシには、アクセス可否条件が定義されている。
ところで、上記したようなWebサーバ上のシステム(以下、単にアプリケーションと表記)等のソフトウェア開発では、当該ソフトウェアの機能に基づいてモジュール分割が行われる場合が多い。
しかしながら、例えばログ出力、トランザクション処理およびアクセス制御等の付加的な処理は、往々にして複数のモジュール間に散らばって実装される場合が多い。このような付加的な処理は、モジュールとしてまとめられない関心事であり、横断的関心事と呼ばれる。
そこで、アスペクト(Aspect)と呼ばれる新たなモジュール単位を導入し、横断的関心事を分離するメカニズムを提供するアスペクト指向プログラミング(Aspect Oriented Programming)が知られている。このアスペクト指向プログラミング(以下、AOPと表記)においては、アスペクトに横断的関心事(の処理)を定義することによって当該横断的関心事を分離することができる。
ところで、AOPでは、アスペクト指向言語が用いられる。アスペクト指向言語の代表例としては、AspectJがある。AspectJは、オブジェクト指向言語のJava(登録商標)に対してAOPを実現するための言語仕様が追加された言語であり、例えばオープンソースのJavaEEフレームワークであるSpringにもAOP実行環境として統合利用されている。このため、AspectJは、アスペクト指向言語の中で最も幅広く利用されている言語である。
AspectJでは、アプリケーション(プログラム)の実行において横断的関心事の処理が定義されたアスペクトを織り込むことが可能な位置(特定の実行時点)は、ジョインポイントと呼ばれる。このジョインポイントの例としては、メソッドの呼び出しや実行、メンバ変数への代入や参照がある。
また、プログラム内の全てのジョインポイントの集合からある条件によって切り出された部分集合は、ポイントカットと呼ばれる。
更に、ポイントカットに関連づけられる処理(つまり、ポイントカットに織り込まれる処理)はアドバイスと呼ばれ、当該アドバイスには例えばログ出力およびアクセス制御等の横断的関心事の処理が実装される。
AspectJでは、アドバイスがポイントカットに挿入されることによって、アプリケーションとアドバイスとが一体化される。なお、アドバイスをポイントカットに挿入する処理は、ウィービングと呼ばれる。
上記したアスペクトの中では、ポイントカットの条件とそこで呼び出されるアドバイスが記述される。ポイントカットの表現は、呼び出し先となるアプリケーションのクラスまたはメソッドの名称が基本となる。更に、ANDやOR等の論理演算子またはワイルドカードの利用を可能とすることで、柔軟に実行条件を表現することができる。
なお、上記したSpringでは、アスペクトに直接記述するのではなく、当該Springによって用意されるAOP定義ファイルに対してその内容が記述される。
以上説明したように、AOPによれば本来の機能的な処理(システム本来の関心事)と付加的な処理(横断的関心事)とを分類することができる。これによって、プログラムがシンプルになり、管理が容易となる。
また、AOPによれば、既に作成されているモジュールには手を加えることなく、ウィービング(処理)によって後から処理を追加することができる。このため、機能追加を容易に行うことができる。
特表2007−529799号公報
ここで、上述したアクセス制御におけるレファレンスモニタの処理(つまり、アクセス可否の判定処理)をアドバイスとして実現する場合を想定する。以下、このアドバイスを認可アドバイスと称する。
上述したSpringのようなAOP実行環境を利用したアプリケーションにおいて認可アドバイスが実行される場合、当該認可アドバイスの実行条件としてポイントカットの定義が必要である。なお、上述したように例えばAOP定義ファイルに定義(記述)されるポイントカットの表現は、呼び出し先のクラスまたはメソッドの名称が基本となる。
また、認可アドバイスではアクセス可否が判定されるため、上記したようにアプリケーションが持つシステム資源へのアクセス可否条件が定義された認可ポリシが必要となる。
なお、AOP実行環境のアプリケーションでの認可ポリシは、例えばXML(eXtensible Markup Language)またはリレーショナルデータベースのようなアプリケーション外部のストレージに保存(記憶)されている。この認可ポリシにおいては、サブジェクトにはユーザの属性情報を用い、リソースにはクラスおよびメソッドの名称を用いることによってアクセス可否条件が定義される。
このように、上記したポイントカットの定義内容および認可ポリシのリソース(アクセス可否条件)には、それぞれ目的は異なるものの、同一または同等のクラスおよびメソッド(の名称)を組み合わせた文字列が用いられる。つまり、ポイントカットおよび認可ポリシにおいては、重複した記述が存在する。
このような場合において、既存の認可ポリシに対してアクセス可否条件の変更(例えば、追加または更新等)が発生した場合を想定する。この場合、例えばアプリケーション開発者は、認可ポリシの変更内容に合わせて、手作業によるポイントカットの修正を行う必要があるため、手間が掛かり、効率が悪い。したがって、このような手間を省き、効率よくポイントカットの定義内容(記述)を変更する仕組みが望まれる。
また、例えばクラスまたはメソッドの役割に対して、名称が不正確である、または曖昧である等の場合にはプログラマによって当該名称の変更が行われる場合が多々ある。このような場合には、アプリケーションのソースコードに対して変更(修正)が行われる。
しかしながら、このような場合には、ソースコードに対する変更に伴い、ポイントカットの定義内容を適切に修正する必要があり、更には、人手によって認可ポリシのアクセス可否条件を修正する必要がある。このようにポイントカットの定義内容および認可ポリシのアクセス可否条件を修正する場合には、複数のソースコード間に散在する変更箇所を追跡および把握する必要があり、当該修正には、多大な労力を要する。また、このようにポイントカットの定義内容および認可ポリシのアクセス可否条件を修正した場合であっても、当該修正は人手によって行われたものであることから、修正ミス等がある場合も多く、効率が悪い。
そこで、本明細書で開示された実施形態では、効率よくポイントカットの定義内容および認可ポリシのアクセス可否条件を自動修正することが可能な自動書き換えプログラムおよび自動書き換え装置を提供することを目的とする。
実施形態に係る自動書き換えプログラムは、アプリケーションの実行におけるアスペクトの実行時点を表現する文字列からなるポイントカット定義情報を含むAOP定義情報を格納するAOP定義格納手段と、前記アプリケーションを利用するユーザからのアクセスの可否を判定するために用いられる認可ポリシであって当該アクセスの対象であるリソースに関するアクセス可否条件を表現する文字列からなるリソース定義情報を含む認可ポリシを格納する認可ポリシ格納手段と、前記アプリケーションのソースコードの変更毎の履歴を示す変更履歴情報であって当該ソースコードにおける変更前の文字列、変更後の文字列および当該変更における操作種別を示す操作種別情報を含む変更履歴情報を格納する変更履歴格納手段とを有する外部記憶装置と、当該外部記憶装置を利用するコンピュータとから構成される自動書き換え装置において、前記コンピュータによって実行される。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記AOP定義格納手段に格納されているAOP定義情報を当該AOP定義格納手段から取得するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記取得されたAOP定義情報に含まれるポイントカット定義情報から、前記アプリケーションの実行におけるアスペクトの実行時点を表現する文字列を抽出するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記認可ポリシ格納手段に格納されている認可ポリシを当該認可ポリシ格納手段から取得するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記取得された認可ポリシに含まれるリソース定義情報から、前記リソースに関するアクセス可否条件を表現する文字列を抽出するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記ポイントカット定義情報から抽出された文字列および前記リソース定義情報から抽出された文字列を比較することによって、当該ポイントカット定義情報および当該リソース定義情報間において差分となる差分文字列を抽出するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記変更履歴格納手段に格納されている変更履歴情報を当該変更履歴格納手段から取得するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記取得された変更履歴情報に含まれる変更前の文字列および変更後の文字列に基づいて、前記抽出された差分文字列を当該変更前の文字列または当該変更後の文字列として含む変更履歴情報を特定するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記抽出された差分文字列および前記特定された変更履歴情報に含まれる変更前の文字列、変更後の文字列および操作種別情報に基づいて、前記抽出された差分文字列が前記AOP定義情報または前記認可ポリシに対する書き換えの対象となる文字列であるかを判定するステップを実行させる。
本実施形態に係る自動書き換えプログラムは、前記コンピュータに、前記抽出された差分文字列が前記AOP定義情報または前記認可ポリシに対する書き換えの対象となる文字列であると判定された場合、前記抽出された差分文字列に基づいて、前記AOP定義格納手段に格納されているAOP定義情報に含まれるポイントカット定義情報または前記認可ポリシ格納手段に格納されている認可ポリシに含まれるリソース定義情報を更新するステップを実行させる。
実施形態に係る自動書き換え装置のハードウェア構成を示すブロック図。 図1に示す自動書き換え装置30の主として機能構成を示すブロック図。 図2に示す自動書き換え部31に含まれる書き換え対象データ読み込み部32の主として機能構成を示すブロック図。 図2に示す自動書き換え部31に含まれる書き換え要否判定部34の主として機能構成を示すブロック図。 図2に示す自動書き換え部31に含まれる書き換え対象データ更新部35の主として機能構成を示すブロック図。 図2に示す書き換え対象データ格納部22に含まれるAOP定義格納部221に格納されているAOP定義情報のデータ構造の一例を示す図。 図2に示す書き換え対象データ格納部22に含まれる認可ポリシ格納部222に格納されている認可ポリシのデータ構造の一例を示す図。 図2に示す変更履歴格納部23のデータ構造の一例を示す図。 図3に示す書き換え対象データの読み込み処理の処理手順を示すシーケンスチャート。 図4に示す書き換え要否の判定処理の処理手順を示すシーケンスチャート。 図4に示す差分抽出部341によって抽出される差分文字列について具体的に説明するための図。 図4に示す判定部343による書き換え要否判定処理の処理手順を示すフローチャート。 図12に示す第1の判定処理の処理手順を示すフローチャート。 第2の判定処理の処理手順を示すフローチャート。 第3の判定処理の処理手順を示すフローチャート。 書き換え要否判定処理の判定結果の一例を示す図。 書き換え対象データの更新処理の処理手順を示すフローチャート。 書き換え後のAOP定義情報のデータ構造の一例を示す図。 書き換え後の認可ポリシのデータ構造の一例を示す図。
以下、図面を参照して、実施形態について説明する。
図1は、本実施形態に係る自動書き換え装置のハードウェア構成を示すブロック図である。図1に示すように、コンピュータ10は、例えばハードディスクドライブ(HDD:Hard Disk Drive)のような外部記憶装置20と接続されている。この外部記憶装置20は、コンピュータ10によって実行されるプログラム21を格納する。コンピュータ10および外部記憶装置20は、自動書き換え装置30を構成する。
この自動書き換え装置30は、例えばアスペクト指向プログラミング(AOP:Aspect Oriented Programming)実行環境を利用したアプリケーションにおいてアクセス制御処理(アクセス可否の判定処理)がアスペクト(アドバイス)として実現される場合に用いられるAOP定義ファイル(AOP定義情報)および認可ポリシに対して整合性の取れた書き換えを行う機能を有する。
図2は、図1に示す自動書き換え装置30の主として機能構成を示すブロック図である。
図2に示すように、自動書き換え装置30は、自動書き換え部31を含む。本実施形態において、自動書き換え部31は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム(自動書き換えプログラム)21を実行することにより実現されるものとする。このプログラム21は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム21が、例えばネットワークを介してコンピュータ10にダウンロードされても構わない。
また、自動書き換え装置30は、書き換え対象データ格納部22および変更履歴格納部23を含む。本実施形態において、書き換え対象データ格納部22および変更履歴格納部23は、例えば外部記憶装置20に格納される。
書き換え対象データ格納部22には、本実施形態に係る自動書き換え装置30による書き換えの対象となる情報が格納される。書き換え対象データ格納部22は、AOP定義格納部221および認可ポリシ格納部222を含む。
AOP定義格納部221は、アプリケーションにおける複数のモジュール間に散らばって実装される例えばアクセス制御等の付加的な処理(横断的関心事)を分離するためのアスペクトが定義されるAOP定義情報が格納される。
AOP定義格納部221に格納されているAOP定義情報には、アプリケーションの実行におけるアスペクトの実行時点を表現する文字列からなるポイントカット定義情報が含まれる。なお、アプリケーションの実行におけるアスペクトの実行時点を表現する文字列は、例えばオブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列(以下、クラス/メソッド名からなる文字列と表記)を含む。つまり、ポイントカット定義情報には、クラス/メソッド名からなる文字列が記述されている。
認可ポリシ格納部222には、例えばアプリケーションを利用するユーザからのアクセスの可否を判定するために用いられる認可ポリシが格納される。この認可ポリシにおいては、アプリケーションを利用するユーザからの要求に対して認可を実行する単位で、誰(サブジェクト)が、アプリケーションが備えるどの資源(リソース)に対して、どの操作(アクション)を行うことができるか否か(つまり、許可または拒否)を表すアクセス可否条件が規定される。なお、本願において、認可とは、リソースへのアクセス権を指定する機能(認可機能)の意味であり、許可とは、認可機能の実行結果、つまりシステムが与えたアクセス権として、「許可する」という意味である。
具体的には、認可ポリシには、例えばサブジェクト(アクセスの主体)について定義されたサブジェクト定義情報、リソース(アクセスの対象)について定義されたリソース定義情報およびアクション(アクセスの行為内容)について定義されたアクション定義情報が含まれる。
認可ポリシに含まれるサブジェクト定義情報は、サブジェクトに関するアクセス可否条件を表現する文字列(例えばユーザの名前、所属、役職および役割等の属性情報)からなる。
認可ポリシに含まれるリソース定義情報は、リソースに関するアクセス可否条件を表現する文字列からなる。なお、リソースに関するアクセス可否条件を表現する文字列は、例えばクラス/メソッド名からなる文字列を含む。つまり、リソース定義情報には、クラス/メソッド名からなる文字列が記述されている。
認可ポリシに含まれるアクション定義情報は、アクションに関するアクセス可否条件を表現する文字列(例えばオブジェクト指向言語におけるメソッドの名称からなる文字列)からなる。
変更履歴格納部23には、アプリケーションのソースコードの変更毎の履歴を示す変更履歴情報が格納される。この変更履歴情報には、例えばアプリケーションのソースコードにおける変更前の文字列、変更後の文字列および当該変更における操作の種別(操作種別)を示す操作種別情報が含まれる。変更履歴情報に含まれる変更前の文字列および変更後の文字列は、クラス/メソッド名からなる文字列を含む。
なお、本実施形態において、アプリケーションを構成するクラスおよびメソッドと、それに関連するAOP定義情報(に含まれるポイントカット定義情報)に記述されたクラスおよびメソッドとの整合性は、例えばAOP定義情報とJavaクラスへの変更を相互に反映するリファクタリング機能によって保たれていることを前提とする。
自動書き換え部31は、AOP定義格納部221に格納されているAOP定義情報、認可ポリシ格納部222に格納されている認可ポリシおよび変更履歴格納部23に格納されている変更履歴情報に基づいて、当該AOP定義情報(に含まれるポイントカット定義情報)および当該認可ポリシ(に含まれるリソース定義情報)の書き換えを行う機能を有する。
自動書き換え部31は、書き換え対象データ読み込み部32、変更履歴読み込み部33、書き換え要否判定部34および書き換え対象データ更新部35を含む。
書き換え対象データ読み込み部32は、AOP定義格納部221からAOP定義情報を取得する機能を有する。また、書き換え対象データ読み込み部32は、認可ポリシ格納部222から認可ポリシを取得する機能を有する。
変更履歴読み込み部33は、変更履歴格納部23に格納されている変更履歴情報を、当該変更履歴格納部23から取得する機能を有する。
書き換え要否判定部34は、書き換え対象データ読み込み部32によって取得されたAOP定義情報に含まれるポイントカット定義情報、認可ポリシに含まれるリソース定義情報および変更履歴読み込み部33によって取得された変更履歴情報を用いて、当該AOP定義情報および当該認可ポリシに対する書き換えが必要であるか否かを判定する機能を有する。
書き換え対象データ更新部35は、書き換え要否判定部34による判定結果(判定内容)に応じて、AOP定義格納部221に格納されているAOP定義情報および認可ポリシ格納部22に格納されている認可ポリシに対する書き換え処理(更新処理)を実行する機能を有する。
図3は、図2に示す自動書き換え部31に含まれる書き換え対象データ読み込み部32の主として機能構成を示すブロック図である。
図3に示すように、書き換え対象データ読み込み部32は、AOP定義読み込み部321、ポイントカット抽出部322、認可ポリシ読み込み部323およびリソース抽出部324を含む。
AOP定義読み込み部321は、AOP定義格納部221に格納されているAOP定義情報を、当該AOP定義格納部221から取得する。
ポイントカット抽出部322は、AOP定義読み込み部321によって取得されたAOP定義情報に含まれるポイントカット定義情報から、アプリケーションの実行におけるアスペクトの実行時点を表現する文字列(つまり、ポイントカット定義情報に記述されている文字列)を抽出する。なお、ポイントカット抽出部322によって抽出された文字列は、クラス/メソッド名からなる文字列(オブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列)を含む。
認可ポリシ読み込み部323は、認可ポリシ格納部222に格納されている認可ポリシを、当該認可ポリシ格納部222から取得する。
リソース抽出部324は、認可ポリシ読み込み部323によって取得された認可ポリシに含まれるリソース定義情報から、リソースに関するアクセス可否条件を表現する文字列(つまり、リソース定義情報に記述されている文字列)を抽出する。なお、リソース抽出部324によって抽出された文字列は、クラス/メソッド名からなる文字列(オブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列)を含む。
なお、書き換え対象データ読み込み部32は、ポイントカット抽出部322によってポイントカット定義情報から抽出された文字列およびリソース抽出部324によってリソース定義情報から抽出された文字列を書き換え要否判定部34に渡す。
図4は、図2に示す自動書き換え部31に含まれる書き換え要否判定部34の主として機能構成を示すブロック図である。
図4に示すように、書き換え要否判定部34は、差分抽出部341、変更履歴取得部342および判定部343を含む。
差分抽出部341は、書き換え対象データ読み込み部32から渡されたポイントカット定義情報から抽出された文字列およびリソース定義情報から抽出された文字列を取得する。差分抽出部341は、取得されたポイントカット定義情報から抽出された文字列およびリソース定義情報から抽出された文字列を比較することによって、当該ポイントカット定義情報および当該リソース定義情報間において差分となる文字列(以下、差分文字列と表記)を抽出する。
変更履歴取得部342は、変更履歴読み込み部33によって取得された変更履歴情報を、当該変更履歴読み込み部33から取得する。
判定部343は、差分抽出部341によって抽出された差分文字列および変更履歴取得部342によって取得された変更履歴情報に基づいて、当該差分文字列がAOP定義情報または認可ポリシに対する書き換えの対象となる文字列であるか否かを判定する。
なお、書き換え要否判定部34は、判定部343による判定結果を書き換え対象データ更新部35に渡す。
図5は、図2に示す自動書き換え部31に含まれる書き換え対象データ更新部35の主として機能構成を示すブロック図である。
図5に示すように、書き換え対象データ更新部35は、書き換え処理ハンドリング部351、AOP定義更新部352、認可ポリシ更新部353および警告メッセージ出力部354を含む。
書き換え処理ハンドリング部351は、書き換え要否判定部34から渡された判定部343による判定結果を取得する。書き換え処理ハンドリング部351は、取得された判定結果に応じて、AOP定義情報または認可ポリシに対する更新処理等をハンドリングする機能を有する。
書き換え処理ハンドリング部351は、差分文字列がAOP定義情報または認可ポリシに対する書き換えの対象となる文字列であると判定部343によって判定された場合、当該AOP定義情報または認可ポリシの更新処理をAOP定義更新部352または認可ポリシ更新部353に要求する。
また、書き換え処理ハンドリング部351は、差分文字列がAOP定義情報または認可ポリシに対する書き換えの対象となる文字列でないと判定部343によって判定された場合、例えばアプリケーションを利用するユーザに対する警告出力処理を警告メッセージ出力部354に要求する。
AOP定義更新部352は、書き換え処理ハンドリング部351からの要求を受け付けると、上記した差分文字列を用いてAOP定義格納部221に格納されているAOP定義情報に含まれるポイントカット定義情報を更新する。
認可ポリシ更新部353は、書き換え処理ハンドリング部351からの要求を受け付けると、上記した差分文字列を用いて認可ポリシ格納部222に格納されている認可ポリシに含まれるリソース定義情報を更新する。
警告メッセージ出力部354は、書き換え処理ハンドリング部351からの要求を受け付けると、上記した差分文字列を用いて警告メッセージを出力する。警告メッセージ出力部354によって出力される警告メッセージは、例えば差分文字列が書き換えの対象となる文字列でない旨等を示す。
図6は、図2に示す書き換え対象データ格納部22に含まれるAOP定義格納部221に格納されているAOP定義情報のデータ構造の一例を示す。
AOP定義情報には、当該AOP定義情報に定義されているアスペクト(クラス)を識別するためのIDが含まれている。図6に示すAOP定義情報においては、当該AOP定義情報に定義されているアスペクトを識別するためのIDとして、3行目のid属性の属性値である「authz_aop」が含まれている。
また、AOP定義情報には、アプリケーションの実行におけるアスペクトの実行時点を表現する文字列からなるポイントカット定義情報が含まれている。このポイントカット定義情報には、複数のポイントカットが定義されている。なお、ポイントカットとは、どのクラスの、どのようなメソッドが呼ばれたときにアスペクトを実行するかが定義された実行条件である。図6に示すAOP定義情報においては、11行目〜15行目が当該AOP定義情報に含まれるポイントカット定義情報であり、12行目〜15行目の各々にポイントカットが定義(記述)されている。
なお、図6の12行目〜15行目の各々に記述されている文字列(つまり、ポイントカット定義情報に定義されているポイントカット)には、クラス/メソッド名からなる文字列が含まれている。具体的には、図6の12行目の文字列に含まれる「com.hoge.Service01.doAction()」は、クラス/メソッド名からなる文字列である。この文字列のうち、「com.hoge.Service01」がオブジェクト指向言語におけるクラスの名称であり、「doAction()」がオブジェクト指向言語におけるメソッドの名称である。
また、AOP定義情報には、ポイントカット定義情報に定義されている各ポイントカットに関連づけられるアスペクトが持つメソッド(つまり、当該ポイントカットに関連づけられるアドバイス)が定義されている。図6に示す例では、18行目〜21行目の各々に各ポイントカットに関連づけられるアスペクトが持つメソッドが定義されている。
図7は、図2に示す書き換え対象データ格納部22に含まれる認可ポリシ格納部222に格納されている認可ポリシのデータ構造の一例を示す。上述したように認可ポリシは、アプリケーションを利用するユーザからのアクセスの可否を判定するために用いられる。
認可ポリシには、上述したようにサブジェクト定義情報、リソース定義情報およびアクション定義情報が含まれる。サブジェクト定義情報は、認可ポリシにおけるサブジェクト(アクセスの主体)に関するアクセス可否条件を表現する文字列からなる。リソース定義情報は、認可ポリシにおけるリソース(アクセスの対象)に関するアクセス可否条件を表現する文字列からなる。アクション定義情報は、認可ポリシにおけるアクション(アクセスの行為内容)に関するアクセス可否条件を表現する文字列からなる。
図7に示す認可ポリシにおいて、サブジェクト定義情報は、4行目〜7行目に示される文字列からなる。このサブジェクト定義情報によれば、図7の3行目に記されたPermit(許可)により、アクセスの主体(サブジェクト)が「ADMIN」である場合に当該アクセスを許可することが示されている。なお、「ADMIN」は、例えばアクセスするユーザの属性情報である。
図7に示す認可ポリシにおいて、リソース定義情報は、9行目〜16行目に示される文字列からなる。このリソース定義情報によれば、図7の3行目に記されたPermit(許可)により、アクセスの対象(リソース)が「com.hoge.Servic01.doAction()」、「com.hoge.Servic02.doAction()」、「com.hoge.Servic03.doAction()」、「com.hoge.Servic04.doAction()」および「com.hoge.Servic07.doAction()」である場合に当該アクセスを許可することが示されている。
なお、図7に示す認可ポリシにおける11行目〜15行目の各々に示される文字列は、クラス/メソッド名からなる文字列を含む。つまり、上記した図6に示すAOP定義情報に含まれるポイントカット定義情報および図7に示す認可ポリシに含まれるリソース定義情報には、同一または同等の文字列(クラス/メソッド名からなる文字列)が記述される。
また、図7に示す認可ポリシにおいて、アクション定義情報には、18行目および19行目に示される文字列が含まれている。図7に示す認可ポリシに含まれるアクション定義情報においては、アクションに関するアクセス可否条件は指定されていない。
図8は、図2に示す変更履歴格納部23のデータ構造の一例を示す。上述したように変更履歴格納部23には、アプリケーションのソースコードの変更毎の履歴を示す変更履歴情報が格納されている。図8に示す例では、変更履歴格納部23には、変更履歴情報231〜234が格納されている。
図8に示すように、変更履歴格納部23に格納されている変更履歴情報には、当該変更履歴情報を識別する番号(No)に対応づけてアプリケーションのソースコードにおける変更後の文字列、変更前の文字列および当該変更における操作種別(を示す操作種別情報)が含まれている。
変更履歴情報に含まれる変更後の文字列および変更前の文字列(のフィールド)には、クラス/メソッド名からなる文字列(オブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列)が記述される。
操作種別には、例えば「Add」、「Change」および「Delete」が含まれる。「Add」は、クラス/メソッド名からなる文字列の追加を示す。「Change」は、クラス/メソッド名からなる文字列の変更を示す。「Delete」は、クラス/メソッド名からなる文字列の削除を示す。
図8に示す例では、変更履歴情報231には、番号「1」に対応づけて変更後の文字列「com.hoge.Service06.doAction()」、変更前の文字列「−」および操作種別「Add」が含まれている。この変更履歴情報231によれば、アプリケーションのソースコードにおいて変更後の文字列「com.hoge.Service06.doAction()」で表現されるメソッドが追加されたことが示されている。
また、変更履歴情報232には、番号「2」に対応づけて変更後の文字列「com.hoge.Service05.doAction()」、変更前の文字列「com.hoge.Service02.doAction()」および操作種別「Change」が含まれている。この変更履歴情報232によれば、アプリケーションのソースコードにおいて変更前の文字列「com.hoge.Service02.doAction()」で表現されるメソッドの名前が変更後の文字列「com.hoge.Service05.doAction()」で表現されるメソッドの名前に変更されたことが示されている。
また、変更履歴情報233には、番号「3」に対応づけて変更後の文字列「−」、変更前の文字列「com.hoge.Service04.doAction()」および操作種別「Delete」が含まれている。この変更履歴情報233によれば、アプリケーションのソースコードにおいて変更前の文字列「com.hoge.Service04.doAction()」で表現されるメソッドが削除されたことが示されている。
また、変更履歴情報234には、番号「4」に対応づけて変更後の文字列「com.hoge.Service07.doAction()」、変更前の文字列「−」および操作種別「Add」が含まれている。この変更履歴情報234によれば、アプリケーションのソースコードにおいて変更後の文字列「com.hoge.Service07.doAction()」で表現されるメソッドが追加されたことが示されている。
以下、本実施形態に係る自動書き換え装置30の動作について説明する。本実施形態に係る自動書き換え装置30は、書き換え対象データの読み込み処理、書き換え要否の判定処理および書き換え対象データの更新処理の3つの一連の処理を実行する。この一連の処理は、例えばユーザからの指示に応じて実行される。以降、これらの各処理について説明する。
まず、図9のシーケンスチャートを参照して、書き換え対象データの読み込み処理の処理手順について説明する。この書き換え対象データの読み込み処理は、書き換え対象データ格納部22に含まれるAOP定義格納部221および認可ポリシ格納部222から書き換え前のAOP定義情報および認可ポリシを読み込む処理である。
書き換え対象データ読み込み部32に含まれるAOP定義読み込み部321は、書き換え対象データ格納部22に含まれるAOP定義格納部221に対してAOP定義情報の取得を要求する(ステップS1)。
AOP定義読み込み部321によってAOP定義情報の取得が要求されると、AOP定義格納部221からAOP定義情報が返される(ステップS2)。これによって、AOP定義読み込み部321は、AOP定義情報を取得する。AOP定義読み込み部321は、取得されたAOP定義情報を書き換え対象データ読み込み部32に含まれるポイントカット抽出部322に渡す。
ポイントカット抽出部322は、AOP定義読み込み部321から渡されたAOP定義情報に含まれるポイントカット定義情報から、アプリケーションの実行におけるアスペクトの実行時点を表現する文字列(クラス/メソッド名からなる文字列)を抽出する(ステップS3)。
ここで、ポイントカット抽出部322による抽出処理を上述した図6を用いて具体的に説明する。
まず、ポイントカット抽出部322は、図6に示すAOP定義情報に含まれるアスペクト(クラス)を識別するためのID(以下、アスペクトIDと表記)を参照する。ここでは、ポイントカット抽出部322は、アスペクトIDとして図6に示すAOP定義情報の3行目のid属性の属性値「authz_aop」を参照する。
次に、ポイントカット抽出部322は、参照されたアスペクトID「authz_aop」の実行設定が定義された要素を特定する。ここでは、ポイントカット抽出部322は、アスペクトID「authz_aop」が属性値として定義されている図6に示すAOP定義情報の9行目の要素を特定する。
ここで、ポイントカット抽出部322によって特定された要素の中には、アプリケーションの実行におけるアスペクトの実行時点を表現する文字列からなるポイントカット定義情報が定義されている。図6に示すAOP定義情報においては、11行目〜15行目がポイントカット定義情報である。なお、このポイントカット定義情報においては、12行目〜15行目の各々にポイントカットが定義されている。
ポイントカット抽出部322は、ポイントカット定義の単位(つまり、図6の12行目〜15行目の各々)で、オブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列を抽出する。ポイントカット抽出部322は、例えば図6に示すAOP定義情報の12行目に定義されている文字列の中から「com.hoge.Service01.doAction()」の文字列を抽出する。また、ポイントカット抽出部322は、図6に示すAOP定義情報の13行目〜15行目の各々についても同様に、「com.hoge.Service03.doAction()」、「com.hoge.Service05.doAction()」および「com.hoge.Service06.doAction()」の文字列を抽出する。以下、ポイントカット抽出部322によってAOP定義情報に含まれるポイントカット定義情報から抽出された文字列をポイントカットと称する。
再び図9に戻ると、書き換え対象データ読み込み部32に含まれる認可ポリシ読み込み部323は、書き換え対象データ格納部22に含まれる認可ポリシ格納部222に対して認可ポリシ情報の取得を要求する(ステップS4)。
認可ポリシ読み込み部323によって認可ポリシの取得が要求されると、認可ポリシ格納部222から認可ポリシが返される(ステップS5)。これによって、認可ポリシ読み込み部323は、認可ポリシを取得する。認可ポリシ読み込み部323は、取得された認可ポリシを書き換え対象データ読み込み部32に含まれるリソース抽出部324に渡す。
リソース抽出部324は、認可ポリシ読み込み部323から渡された認可ポリシに含まれるリソース定義情報から、リソースに関するアクセス可否条件を表現する文字列(クラス/メソッド名からなる文字列)を抽出する(ステップS6)。
ここで、リソース抽出部324による抽出処理を上述した図7を用いて具体的に説明する。
上述した図7に示す認可ポリシにおいては、9行目〜16行目がリソースに関するアクセス可否条件を表現する文字列からなるリソース定義情報である。
したがって、認可ポリシ読み込み部323から渡された認可ポリシが例えば上述した図7に示す認可ポリシである場合、リソース抽出部324は、当該図7に示す認可ポリシの11行目〜15行目の各々に記述される文字列を抽出する。具体的には、リソース抽出部324は、「com.hoge.Service01.doAction()」、「com.hoge.Service02.doAction()」、「com.hoge.Service03.doAction()」、「com.hoge.Service04.doAction()」および「com.hoge.Service07.doAction()」の文字列を抽出する。以下、リソース抽出部324によって認可ポリシに含まれるリソース定義情報から抽出された文字列をリソースと称する。
上記したようにステップS6の処理が実行されると、書き換え対象データの読み込み処理は終了される。書き換え対象データの読み込み処理が終了されると、書き換え対象データ読み込み部32は、書き換え要否判定部34を呼び出す。このとき、書き換え対象データ読み込み部32は、ポイントカット抽出部322によって抽出された文字列(ポイントカット)およびリソース抽出部324によって抽出された文字列(リソース)を書き換え要否判定部34に渡す。これにより、書き換え要否判定部34によって上述した書き換え要否の判定処理が実行される。
次に、図10のシーケンスチャートを参照して、書き換え要否の判定処理の処理手順について説明する。この書き換え要否の判定処理は、書き換え対象データ読み込み部32から渡されたポイントカットおよびリソース(ポイントカット定義情報およびリソース定義情報)間において差分となる文字列を抽出し、当該差分文字列がAOP定義情報または認可ポリシに対する書き換えの対象となる文字列であるか否かを判定する処理である。
まず、書き換え要否判定部34に含まれる差分抽出部341は、書き換え対象データ読み込み部32から渡されたポイントカットおよびリソース間において差分となる文字列(差分文字列)を抽出する(ステップS11)。この場合、差分抽出部341は、ポイントカットおよびリソース間で同一の文字列が存在することを検証し、当該ポイントカットおよびリソース間で同一の文字列が存在しない文字列を差分文字列として抽出する。
ここで、図11を参照して、差分抽出部341によって抽出される差分文字列について具体的に説明する。
ここでは、上記したようにポイントカット(ポイントカット抽出部322によって抽出された文字列)が「com.hoge.Service01.doAction()」、「com.hoge.Service03.doAction()」、「com.hoge.Service05.doAction()」および「com.hoge.Service06.doAction()」であり、リソース(リソース抽出部324によって抽出された文字列)が「com.hoge.Service01.doAction()」、「com.hoge.Service02.doAction()」、「com.hoge.Service03.doAction()」、「com.hoge.Service04.doAction()」および「com.hoge.Service07.doAction()」であるものとする。
この場合、図11に示すように、「com.hoge.Service01.doAction()」は、ポイントカットおよびリソースの両方に存在する。このため、「com.hoge.Service01.doAction()」は、差分文字列として抽出されない。
また、「com.hoge.Service02.doAction()」は、リソースにのみ存在し、ポイントカットおよびリソース間で同一の文字列は存在しない。このため、「com.hoge.Service02.doAction()」は、差分文字列として抽出される。
また、「com.hoge.Service03.doAction()」は、ポイントカットおよびリソースの両方に存在する。このため、「com.hoge.Service03.doAction()」は、差分文字列として抽出されない。
また、「com.hoge.Service04.doAction()」は、リソースにのみ存在し、ポイントカットおよびリソース間で同一の文字列は存在しない。このため、「com.hoge.Service04.doAction()」は、差分文字列として抽出される。
また、「com.hoge.Service05.doAction()」は、ポイントカットにのみ存在し、ポイントカットおよびリソース間で同一の文字列は存在しない。このため、「com.hoge.Service05.doAction()」は、差分文字列として抽出される。
また、「com.hoge.Service06.doAction()」は、ポイントカットにのみ存在し、ポイントカットおよびリソース間で同一の文字列は存在しない。このため、「com.hoge.Service06.doAction()」は、差分文字列として抽出される。
また、「com.hoge.Service07.doAction()」は、リソースにのみ存在し、ポイントカットおよびリソース間で同一の文字列は存在しない。このため、「com.hoge.Service07.doAction()」は、差分文字列として抽出される。
したがって、差分抽出部341は、図11に示すようにポイントカットである「com.hoge.Service05.doAction()」および「com.hoge.Service06.doAction()」と、リソースである「com.hoge.Service02.doAction()」、「com.hoge.Service04.doAction()」および「com.hoge.Service07.doAction()」とを差分文字列として抽出する。なお、差分抽出部341によって抽出された差分文字列は、書き換え要否判定部34に含まれる判定部343に渡される。この判定部343に渡される差分文字列には、例えば当該差分文字列がポイントカットであることを示す情報またはリソースであることを示す情報が付与される。
再び図10に戻ると、書き換え要否判定部34に含まれる変更履歴取得部342は、変更履歴読み込み部33に対して、変更履歴情報の取得を要求する(ステップS12)。
変更履歴取得部342によって変更履歴情報の取得が要求されると、変更履歴読み込み部33は、変更履歴格納部23から変更履歴情報を取得し、当該取得された変更履歴情報を変更履歴取得部342に返す(ステップS13)。これによって、変更履歴取得部342は、変更履歴情報を取得する。変更履歴取得部34は、取得された変更履歴情報を判定部343に渡す。
判定部343は、変更履歴取得部34から渡された変更履歴情報に基づいて、差分抽出部341から渡された差分文字列がAOP定義情報または認可ポリシに対する書き換えの対象となる文字列であるか否か(つまり、書き換えの要否)を判定する処理(以下、書き換え要否判定処理と表記)を実行する(ステップ14)。
ここで、図12のフローチャートを参照して、判定部343による書き換え要否判定処理(図10に示すステップS14の処理)の処理手順について説明する。
判定部343は、差分抽出部341から渡された差分文字列(つまり、差分抽出部341によって抽出された差分文字列)の各々について、以下のステップS21〜S26の処理を実行する。以下、この処理の対象となる差分文字列を対象差分文字列と称する。
まず、判定部343は、変更履歴取得部34から渡された変更履歴情報(変更履歴格納部23に格納されている変更履歴情報)に含まれるアプリケーションのソースコードにおける変更前の文字列および変更毎の文字列に基づいて、対象差分文字列を当該変更前の文字列または変更後の文字列として含む変更履歴情報を特定する(ステップS21)。
対象差分文字列が例えば「com.hoge.Service02.doAction()」の文字列である場合には、上述した図8に示す変更履歴格納部23に格納されている変更履歴情報231〜234の中の変更履歴情報232が特定される。
なお、判定部343によって特定された変更履歴情報には、操作種別(情報)が含まれる。この操作種別は、例えば「Add(追加)」、「Change(変更)」および「Delete(削除)」を含む。
次に、判定部343は、ステップS21において特定された変更履歴情報に含まれる操作種別が「Add」である(つまり、追加を示す)か否かを判定する(ステップS22)。
ステップS21において特定された変更履歴情報に含まれる操作種別が「Add」であると判定された場合(ステップS22のYES)、判定部343は、後述する第1の判定処理を実行する(ステップS23)。
一方、ステップS21において特定された変更履歴情報に含まれる操作種別が「Add」でないと判定された場合(ステップS22のNO)、判定部343は、当該特定された変更履歴情報に含まれる操作種別が「Change」である(つまり、変更を示す)か否かを判定する(ステップS24)。
ステップS21において特定された変更履歴情報に含まれる操作種別が「Change」であると判定された場合(ステップS24のYES)、判定部343は、後述する第2の判定処理を実行する(ステップS25)。
一方、ステップS21において特定された変更履歴情報に含まれる操作種別が「Change」でない、つまり、「Delete」である(つまり、削除を示す)と判定された場合(ステップS24のNO)、判定部343は、後述する第3の判定処理を実行する。
上記した第1〜第3の判定処理は、ステップS21において特定された変更履歴情報に含まれる操作種別に応じた判定処理である。
上記したように第1〜第3の判定処理が実行されると、判定部343は、全ての差分文字列について上記したステップS21〜S26の処理が実行されたか否かを判定する(ステップS27)。
全ての差分文字列について処理が実行されていないと判定された場合(ステップS27のNO)、上記したステップS21に戻って処理が繰り返される。この場合、ステップS21〜S26の処理が実行されていない差分文字列を対象差分文字列として処理が実行される。
一方、全ての差分文字列について処理が実行されたと判定された場合(ステップS27のYES)、書き換え要否判定処理は終了される。
次に、図13のフローチャートを参照して、上述した第1の判定処理の処理手順について説明する。この第1の判定処理は、図12に示すステップS21において特定された変更履歴情報に含まれる操作種別が「Add」である場合に実行される処理である。
まず、判定部343は、対象差分文字列(第1の判定処理が実行される際の対象差分文字列)がリソースであるか否かを判定する(ステップS31)。換言すれば、判定部343は、対象差分文字列が認可ポリシに含まれるリソース定義情報から抽出された文字列であるか否かを判定する。なお、この判定処理は、上記したように対象差分文字列に付加されている情報(当該対象差分文字列がポイントカットであることを示す情報またはリソースであることを示す情報)に基づいて実行される。
対象差分文字列がリソースであると判定された場合(ステップS31のYES)、判定部343は、対象差分文字列がAOP定義情報に含まれるポイントカット定義情報に対する追加の対象となる文字列(ポイントカット追加対象)であると判定する。この場合、判定部343は、対象差分文字列をポイントカット追加対象として例えば判定部343が有するポイントカット追加対象一時格納部(図示せず)に登録する(ステップS32)。
一方、対象差分文字列がリソースでない、つまり、ポイントカットであると判定された場合(ステップS31のNO)、判定部343は、対象差分文字列が書き換え不要の対象となる文字列(書き換え不要対象)であると判定する。つまり、判定部343は、対象差分文字列を書き換えの対象となる文字列ではないと判定する。この場合、判定部343は、対象差分文字列を書き換え不要対象として例えば判定部343が有する書き換え不要対象一時格納部(図示せず)に登録する(ステップS33)。
上記したステップS32およびS33の処理が実行されると、第1の判定処理が終了される。
次に、図14のフローチャートを参照して、上述した第2の判定処理の処理手順について説明する。この第2の判定処理は、図12に示すステップS21において特定された変更履歴情報に含まれる操作種別が「Change」である場合に実行される処理である。
まず、判定部343は、対象差分文字列(第2の判定処理が実行される際の対象差分文字列)が第1の条件を満たすか否かを判定する(ステップS41)。
ここで、第1の条件とは、対象差分文字列がステップS21において特定された変更履歴情報に変更前の文字列として含まれ、かつ、リソースである(つまり、認可ポリシに含まれるリソース定義情報から抽出された文字列である)ことを示す。なお、このステップS41における判定処理は、図12に示すステップS21において特定された変更履歴情報および上記したように対象差分文字列に付加されている情報(当該対象差分文字列がポイントカットであることを示す情報またはリソースであることを示す情報)に基づいて実行される。
第1の条件を満たさないと判定された場合(ステップS41のNO)、判定部343は、対象差分文字列が第2の条件を満たすか否かを判定する(ステップS42)。
ここで、第2の条件とは、対象差分文字列がステップS21において特定された変更履歴情報に変更後の文字列として含まれ、かつ、ポイントカットである(つまり、AOP定義情報に含まれるポイントカット定義情報から抽出された文字列である)ことを示す。なお、このステップS42における判定処理は、図12に示すステップS21において特定された変更履歴情報および上記したように対象差分文字列に付加されている情報(当該対象差分文字列がポイントカットであることを示す情報またはリソースであることを示す情報)に基づいて実行される。
第2の条件を満たすと判定された場合(ステップS42のYES)、判定部343は、対象差分文字列を認可ポリシに含まれるリソース定義情報に対する修正後の文字列(リソース修正内容)であると判定する。この場合、判定部343は、対象差分文字列をリソース修正内容として例えば判定部343が有するリソース修正対象一時格納部(図示せず)に登録する(ステップS43)。
一方、第2の条件を満たさないと判定された場合(ステップS42のNO)、判定部343は、対象差分文字列が書き換え不要の対象となる文字列(書き換え不要対象)であると判定する。この場合、判定部343は、対象差分文字列を書き換え不要対象として書き換え不要対象一時格納部に登録する(ステップS44)。
なお、第1の条件を満たすと判定された場合(ステップS41)、判定部343は、対象差分文字列が認可ポリシに含まれるリソース定義情報に対する修正前の文字列(リソース修正対象)であると判定する。この場合、判定部343は、対象差分文字列をリソース修正対象としてリソース修正対象一時格納部に登録する(ステップS43)。
上記したステップS43およびS44の処理が実行されると、第2の判定処理が終了される。
次に、図15のフローチャートを参照して、上述した第3の判定処理の処理手順について説明する。この第3の判定処理は、図12に示すステップS21において特定された変更履歴情報に含まれる操作種別が「Delete」である場合に実行される処理である。
まず、判定部343は、対象差分文字列(第3の判定処理が実行される際の対象差分文字列)がリソースであるか否かを判定する(ステップS51)。換言すれば、判定部343は、対象差分文字列が認可ポリシに含まれるリソース定義情報から抽出された文字列であるか否かを判定する。なお、この判定処理は、上記したように対象差分文字列に付加されている情報(当該対象差分文字列がポイントカットであることを示す情報またはリソースであることを示す情報)に基づいて実行される。
対象差分文字列がリソースであると判定された場合(ステップS51のYES)、判定部343は、対象差分文字列が認可ポリシに含まれるリソース定義情報に対する削除の対象となる文字列(リソース削除対象)であると判定する。この場合、判定部343は、対象差分文字列をリソース削除対象として例えば判定部343が有するリソース削除対象一時格納部(図示せず)に登録する(ステップS52)。
一方、対象差分文字列がリソースでない、つまり、ポイントカットであると判定された場合(ステップS51のNO)、判定部343は、対象差分文字列が書き換え不要の対象となる文字列(書き換え不要対象)であると判定する。この場合、判定部343は、対象差分文字列を書き換え不要対象として書き換え不要対象一時格納部に登録する(ステップS53)。
上記したステップS52およびS53の処理が実行されると、第3の判定処理が終了される。
ここで、上記した図11において説明したように、ポイントカットである「com.hoge.Service05.doAction()」および「com.hoge.Service06.doAction()」と、リソースである「com.hoge.Service02.doAction()」、「com.hoge.Service04.doAction()」および「com.hoge.Service07.doAction()」とが差分文字列として抽出された場合における書き換え要否判定処理について具体的に説明する。なお、変更履歴取得部342から渡された変更履歴情報(変更履歴格納部23に格納されている変更履歴情報)は、上述した図8に示す変更履歴情報231〜234であるものとして説明する。
まず、「com.hoge.Service05.doAction()」の文字列が書き換え要否判定処理における対象差分文字列である場合について説明する。
判定部343は、対象差分文字列である「com.hoge.Service05.doAction()」(以下、対象差分文字列「com.hoge.Service05.doAction()」と表記)を変更後の文字列または変更前の文字列として含む変更履歴情報を変更履歴情報231〜234の中から特定する。この場合、対象差分文字列「com.hoge.Service05.doAction()」は、変更履歴情報232に変更後の文字列として含まれている。したがって、判定部343は、変更履歴情報232を特定する。
ここで、変更履歴情報232に含まれる操作種別は、「Change」である。よって、判定部343は、第2の判定処理を実行する。
対象差分文字列「com.hoge.Service05.doAction()」は、変更履歴情報232に変更後の文字列として含まれている。また、対象差分文字列「com.hoge.Service05.doAction()」は、上記したようにポイントカット(つまり、AOP定義情報に含まれるポイントカット定義情報から抽出された文字列)である。したがって、判定部343は、対象差分文字列「com.hoge.Service05.doAction()」が上記した第1の条件を満たさないと判定する。一方、判定部343は、対象差分文字列「com.hoge.Service05.doAction()」が上記した第2の条件を満たすと判定する。
この場合、判定部343は、対象差分文字列「com.hoge.Service05.doAction()」が認可ポリシに含まれるリソース定義情報に対する修正後の文字列(リソース修正内容)であると判定し、当該対象差分文字列「com.hoge.Service05.doAction()」をリソース修正内容としてリソース修正対象一時格納部に登録する。
次に、「com.hoge.Service06.doAction()」の文字列が書き換え要否判定処理における対象差分文字列である場合について説明する。
判定部343は、対象差分文字列である「com.hoge.Service06.doAction()」(以下、対象差分文字列「com.hoge.Service06.doAction()」と表記)を変更後の文字列または変更前の文字列として含む変更履歴情報を変更履歴情報231〜234の中から特定する。この場合、対象差分文字列「com.hoge.Service06.doAction()」は、変更履歴情報231に変更後の文字列として含まれている。したがって、判定部343は、変更履歴情報231を特定する。
ここで、変更履歴情報231に含まれる操作種別は、「Add」である。よって、判定部343は、第1の判定処理を実行する。
対象差分文字列「com.hoge.Service06.doAction()」は、上記したようにポイントカット(つまり、AOP定義情報に含まれるポイントカット定義情報から抽出された文字列)である。したがって、判定部343は、対象差分文字列「com.hoge.Service06.doAction()」がリソースでないと判定する。
この場合、判定部343は、対象差分文字列「com.hoge.Service06.doAction()」が書き換え不要の対象となる文字列(書き換え不要対象)であると判定し、当該対象差分文字列「com.hoge.Service06.doAction()」を書き換え不要対象として書き換え不要対象一時格納部に登録する。
次に、「com.hoge.Service02.doAction()」の文字列が書き換え要否判定処理における対象差分文字列である場合について説明する。
判定部343は、対象差分文字列である「com.hoge.Service02.doAction()」(以下、対象差分文字列「com.hoge.Service02.doAction()」と表記)を変更後の文字列または変更前の文字列として含む変更履歴情報を変更履歴情報231〜234の中から特定する。この場合、対象差分文字列「com.hoge.Service02.doAction()」は、変更履歴情報232に変更前の文字列として含まれている。したがって、判定部343は、変更履歴情報232を特定する。
ここで、変更履歴情報232に含まれる操作種別は、「Change」である。よって、判定部343は、第2の判定処理を実行する。
対象差分文字列「com.hoge.Service02.doAction()」は、変更履歴情報232に変更前の文字列として含まれている。また、対象差分文字列「com.hoge.Service02.doAction()」は、上記したようにリソース(つまり、認可ポリシに含まれるリソース定義情報から抽出された文字列)である。したがって、判定部343は、対象差分文字列「com.hoge.Service02.doAction()」が上記した第1の条件を満たすと判定する。
この場合、判定部343は、対象差分文字列「com.hoge.Service02.doAction()」が認可ポリシに含まれるリソース定義情報に対する修正前の文字列(リソース修正対象)であると判定し、当該対象差分文字列「com.hoge.Service02.doAction()」をリソース修正対象としてリソース修正対象一時格納部に登録する。
次に、「com.hoge.Service04.doAction()」の文字列が書き換え要否判定処理における対象差分文字列である場合について説明する。
判定部343は、対象差分文字列である「com.hoge.Service04.doAction()」(以下、対象差分文字列「com.hoge.Service04.doAction()」と表記)を変更後の文字列または変更前の文字列として含む変更履歴情報を変更履歴情報231〜234の中から特定する。この場合、対象差分文字列「com.hoge.Service04.doAction()」は、変更履歴情報233に変更前の文字列として含まれている。したがって、判定部343は、変更履歴情報233を特定する。
ここで、変更履歴情報233に含まれる操作種別は、「Delete」である。よって、判定部343は、第3の判定処理を実行する。
対象差分文字列「com.hoge.Service04.doAction()」は、上記したようにリソース(つまり、認可ポリシに含まれるリソース定義情報から抽出された文字列)である。したがって、判定部343は、対象差分文字列「com.hoge.Service04.doAction()」がリソースであると判定する。
この場合、判定部343は、対象差分文字列「com.hoge.Service04.doAction()」が認可ポリシに含まれるリソース定義情報に対する削除の対象となる文字列(リソース削除対象)であると判定し、当該対象差分文字列「com.hoge.Service04.doAction()」をリソース削除対象としてリソース削除対象一時格納部に登録する。
次に、「com.hoge.Service07.doAction()」の文字列が書き換え要否判定処理における対象差分文字列である場合について説明する。
判定部343は、対象差分文字列である「com.hoge.Service07.doAction()」(以下、対象差分文字列「com.hoge.Service07.doAction()」と表記)を変更後の文字列または変更前の文字列として含む変更履歴情報を変更履歴情報231〜234の中から特定する。この場合、対象差分文字列「com.hoge.Service07.doAction()」は、変更履歴情報234に変更後の文字列として含まれている。したがって、判定部343は、変更履歴情報234を特定する。
ここで、変更履歴情報232に含まれる操作種別は、「Add」である。よって、判定部343は、第1の判定処理を実行する。
対象差分文字列「com.hoge.Service07.doAction()」は、上記したようにリソース(つまり、認可ポリシに含まれるリソース定義情報から抽出された文字列)である。したがって、判定部343は、対象差分文字列「com.hoge.Service07.doAction()」がリソースであると判定する。
この場合、判定部343は、対象差分文字列「com.hoge.Service07.doAction()」がAOP定義情報に含まれるポイントカット定義情報に対する追加の対象となる文字列(ポイントカット追加対象)であると判定し、当該対象差分文字列「com.hoge.Service07.doAction()」をポイントカット追加対象としてポイントカット追加対象一時格納部に登録する。
上記したようにポイントカットである「com.hoge.Service05.doAction()」および「com.hoge.Service06.doAction()」と、リソースである「com.hoge.Service02.doAction()」、「com.hoge.Service04.doAction()」および「com.hoge.Service07.doAction()」とが差分文字列として抽出された場合には、図16に示すような書き換え要否判定処理の結果(判定結果)を得ることができる。
具体的には、図16に示すように、書き換え要否判定処理の判定結果として「com.hoge.Service05.doAction()」がリソース修正内容としてリソース修正対象一時格納部に登録され、「com.hoge.Service06.doAction()」が書き換え不要対象として書き換え不要対象一時格納部に登録され、「com.hoge.Service02.doAction()」がリソース修正対象としてリソース修正対象一時格納部に登録され、「com.hoge.Service04.doAction()」がリソース削除対象としてリソース削除対象一時格納部に登録され、「com.hoge.Service07.doAction()」がポイントカット追加対象としてポイントカット追加対象一時格納部に登録される。
上記したように図10に示すステップS14の処理が実行されると、書き換え要否の判定処理は終了される。書き換え要否の判定処理が終了されると、書き換え要否判定部34は、書き換え対象データ更新部35を呼び出す。このとき、書き換え要否判定部34は、書き換え要否判定処理(図10に示すステップS14の処理)の判定結果(つまり、図16に示す各一時格納部に格納された文字列)を書き換え対象データ更新部35に渡す。つまり、各書き換え内容に関する更新情報が書き換え対象データ更新部35に引き渡される。これにより、書き換え対象データ更新部35によって上述した書き換え対象データの更新処理が実行される。
次に、図17のフローチャートを参照して、書き換え対象データの更新処理の処理手順について説明する。この書き換え対象データの更新処理は、上記した書き換え要否判定処理の判定結果に応じてAOP定義格納部221に格納されているAOP定義情報(に含まれるポイントカット定義情報)および認可ポリシ格納部222に格納されている認可ポリシ(に含まれるリソース定義情報)を更新する処理である。
書き換え対象データ更新部35に含まれる書き換え処理ハンドリング部351は、判定部343が有する各一時格納部(リソース修正対象一時格納部、書き換え不要対象一時格納部、リソース削除対象一時格納部およびポイントカット追加対象一時格納部)に格納された文字列に応じて更新処理をハンドリングする。
なお、上記したように判定部343が有する各一時格納部に格納された文字列は、書き換え要否判定部34から渡される。以下、リソース修正対象一時格納部にリソース修正対象として格納された文字列をリソース修正対象文字列と称する。また、リソース修正対象一時格納部にリソース修正内容として格納された文字列をリソース修正内容文字列と称する。また、書き換え不要対象一時格納部に書き換え不要対象として格納された文字列を書き換え不要対象文字列と称する。また、リソース削除対象一時格納部にリソース削除対象として格納された文字列を、リソース削除対象文字列と称する。また、ポイントカット追加対象一時格納部にポイントカット追加対象として格納された文字列をポイントカット追加対象文字列と称する。
まず、書き換え処理ハンドリング部351は、書き換え要否判定部34から渡されたポイントカット追加対象文字列に応じて、AOP定義更新部352に更新処理をハンドリングする(ステップS61)。このとき、書き換え処理ハンドリング部351は、ポイントカット追加対象文字列をAOP定義更新部352に渡す。
AOP定義更新部352は、書き換え処理ハンドリング部351から渡されたポイントカット追加対象文字列を、AOP定義格納部221に格納されているAOP定義情報に含まれるポイントカット定義情報に追加することによって当該ポイントカット定義情報を更新する(ステップS62)。
次に、書き換え処理ハンドリング部351は、書き換え要否判定部34から渡されたリソース修正内容文字列、リソース修正対象文字列およびリソース削除対象文字列に応じて、認可ポリシ更新部353に更新処理をハンドリングする(ステップS63)。このとき、書き換え処理ハンドリング部351は、リソース修正内容文字列、リソース修正対象文字列およびリソース削除対象文字列を認可ポリシ更新部353に渡す。
認可ポリシ更新部353は、書き換え処理ハンドリング部351から渡されたリソース修正内容文字列、リソース修正対象文字列およびリソース削除対象文字列を用いて認可ポリシ格納部222に格納されている認可ポリシに含まれるリソース定義情報を更新する(ステップS64)。
この場合、認可ポリシ更新部353は、認可ポリシに含まれているリソース定義情報において、リソース修正対象文字列をリソース修正内容文字列に変更することによって、当該リソース定義情報を更新する。
また、認可ポリシ更新部353は、リソース削除対象文字列を、認可ポリシに含まれているリソース定義情報から削除することによって当該リソース定義情報を更新する。
次に、書き換え処理ハンドリング部351は、書き換え要否判定部34から渡された書き換え不要対象文字列に応じて、警告メッセージ出力部354に警告出力処理をハンドリングする(ステップS65)。このとき、書き換え処理ハンドリング部351は、書き換え不要対象文字列を警告メッセージ出力部354に渡す。
警告メッセージ出力部354は、書き換え処理ハンドリング部351から渡された書き換え不要対象文字列が書き換えの対象とならない(つまり、書き換え処理が適用されない)旨を示す警告メッセージを出力(表示)する(ステップS66)。ステップS66の処理が実行されると、書き換え対象データの更新処理は終了される。
ここで、上述した図6、図7、図16を参照して、書き換え対象データの更新処理について具体的に説明する。
ここでは、図6に示すAOP定義情報を書き換え前(書き換え対象データの更新処理前)のAOP定義情報とし、図7に示す認可ポリシを書き換え前(書き換え対象データの更新処理前)の認可ポリシとする。
また、図16に示すように、リソース修正対象文字列は、「com.hoge.Service02.doAction()」であるものとする。また、リソース修正内容文字列は、「com.hoge.Service05.doAction()」であるものとする。また、書き換え不要対象文字列は、「com.hoge.Service06.doAction()」であるものとする。また、リソース削除対象文字列は、「com.hoge.Service04.doAction()」であるものとする。また、ポイントカット追加対象文字列は、「com.hoge.Service07.doAction()」であるものとする。
この場合、図6に示すAOP定義情報(書き換え前のAOP定義情報)に含まれるポイントカット定義情報には存在しないポイントカット追加対象文字列である「com.hoge.Service07.doAction()」が当該ポイントカット定義情報(ここでは、図6の16行目)に追加される。この場合、AOP定義情報に含まれるポイントカット定義情報においては、ポイントカット追加対象文字列である「com.hoge.Service07.doAction()」を用いてポイントカットが記述(定義)される。また、ポイントカット定義情報に新たに定義されたポイントカットに関連づけられるアスペクトが持つメソッド(を表現する文字列)がAOP定義情報に追加される。
このように図6に示すAOP定義情報に対して更新処理が実行されることによって、当該図6に示すAOP定義情報は、図18に示すAOP定義情報(つまり、書き換え後のAOP定義情報)に更新される。
次に、図7に示す認可ポリシ(書き換え前の認可ポリシ)に含まれるリソース定義情報において、リソース修正対象文字列である「com.hoge.Service02.doAction()」(図7の12行目)がリソース修正内容文字列である「com.hoge.Service05.doAction()」に変更される。
また、図7に示す認可ポリシに含まれるリソース定義情報に存在するリソース削除対象文字列である「com.hoge.Service04.doAction()」(図7の14行目)が当該リソース定義情報から削除される。
このように図7に示す認可ポリシに対して更新処理が実行されることによって、当該図7に示す認可ポリシは、図19に示す認可ポリシ(つまり、書き換え後の認可ポリシ)に更新される。
なお、書き換え不要対象文字列である「com.hoge.Service06.doAction()」に関しては、上記したように当該書き換え不要対象文字列が書き換え対象とならない旨を示す警告メッセージが出力される。この場合には、例えば「com.hoge.Service06.doAction()については書き換え処理を適用しませんでした。御確認下さい。」等のメッセージが出力される。これにより、ユーザは、「com.hoge.Service06.doAction()」についてはユーザの判断で書き換え要否の必要性があることを確認することができる。
上記したように本実施形態においては、AOP定義格納部221から取得されたAOP定義情報に含まれるポイントカット定義情報からアプリケーションの実行におけるアスペクトの実行時点を表現する文字列(クラス/メソッド名からなる文字列)が抽出され、認可ポリシ格納部222から取得された認可ポリシに含まれるリソース定義情報からリソースに関するアクセス可否条件を表現する文字列(クラス/メソッド名からなる文字列)が抽出され、当該AOP定義情報から抽出された文字列および当該認可ポリシから抽出された文字列が比較されることによって、ポイントカット定義情報およびリソース定義情報間において差分となる差分文字列が抽出される。本実施形態においては、変更履歴格納部23から取得された変更履歴情報の中から差分文字列をアプリケーションのソースコードにおける変更前の文字列または変更後の文字列として含む変更履歴情報が特定され、当該特定された変更履歴情報に基づいて当該差分文字列がAOP定義情報または認可ポリシに対する書き換えの対象となる文字列であるか否かが判定される。本実施形態においては、差分文字列が書き換えの対象となる文字列であると判定された場合、当該差分文字列に基づいてAOP定義格納部221に格納されているAOP定義情報に含まれるポイントカット定義情報または認可ポリシ格納部222に格納されている認可ポリシに含まれるリソース定義情報が更新される。
また、本実施形態においては、特定された変更履歴情報に含まれる変更前の文字列、変更後の文字列および操作種別に応じて差分文字列がリソース修正対象、リソース修正内容、書き換え不要対象、リソース削除対象またはポイント追加対象であると判定され、当該判定結果に応じて更新処理が実行される。
これにより、本実施形態においては、例えばアプリケーションのソースコードの変更に応じて既存の認可ポリシに対してリソースに関するアクセス可否条件の更新等が発生した場合であっても、当該認可ポリシと同等の内容をAOP定義情報に含まれるポイントカット定義情報に定義することが可能となるため、手作業によるポイントカット定義情報に対する修正の手間を省くことができ、効率よくポイントカット定義情報を更新することができる。
更に、本実施形態においては、例えばアプリケーションのソースコードの変更に応じて既存のAOP定義情報に含まれるポイントカット定義情報の更新が発生した場合であっても、人手によって認可ポリシの修正箇所を追跡することなく確実に認可ポリシを更新することができるため、効率よく認可ポリシを保守することができる。
したがって、本実施形態においては、効率よくポイントカットの定義内容(ポイントカット定義情報)および認可ポリシのアクセス可否条件(リソース定義情報)を自動修正することが可能となる。
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
10…コンピュータ、20…外部記憶装置、22…書き換え対象データ格納部、23…変更履歴格納部、30…自動書き換え装置、31…自動書き換え部、32…書き換え対象データ読み込み部、33…変更履歴読み込み部、34…書き換え要否判定部、35…書き換え対象データ更新部、221…AOP定義格納部、222…認可ポリシ格納部、321…AOP定義読み込み部(AOP定義取得手段)、322…ポイントカット抽出部、323…認可ポリシ読み込み部(認可ポリシ取得手段)、324…リソース抽出部、341…差分抽出部、342…変更履歴取得部、343…判定部、351…書き換え処理ハンドリング部、352…AOP定義更新部、353…認可ポリシ更新部、354…警告メッセージ出力部。

Claims (6)

  1. アプリケーションの実行におけるアスペクトの実行時点を表現する文字列からなるポイントカット定義情報を含むAOP定義情報を格納するAOP定義格納手段と、前記アプリケーションを利用するユーザからのアクセスの可否を判定するために用いられる認可ポリシであって当該アクセスの対象であるリソースに関するアクセス可否条件を表現する文字列からなるリソース定義情報を含む認可ポリシを格納する認可ポリシ格納手段と、前記アプリケーションのソースコードの変更毎の履歴を示す変更履歴情報であって当該ソースコードにおける変更前の文字列、変更後の文字列および当該変更における操作種別を示す操作種別情報を含む変更履歴情報を格納する変更履歴格納手段とを有する外部記憶装置と、当該外部記憶装置を利用するコンピュータとから構成される自動書き換え装置において、前記コンピュータによって実行される自動書き換えプログラムであって、
    前記コンピュータに、
    前記AOP定義格納手段に格納されているAOP定義情報を当該AOP定義格納手段から取得するステップと、
    前記取得されたAOP定義情報に含まれるポイントカット定義情報から、前記アプリケーションの実行におけるアスペクトの実行時点を表現する文字列を抽出するステップと、
    前記認可ポリシ格納手段に格納されている認可ポリシを当該認可ポリシ格納手段から取得するステップと、
    前記取得された認可ポリシに含まれるリソース定義情報から、前記リソースに関するアクセス可否条件を表現する文字列を抽出するステップと、
    前記ポイントカット定義情報から抽出された文字列および前記リソース定義情報から抽出された文字列を比較することによって、当該ポイントカット定義情報および当該リソース定義情報間において差分となる差分文字列を抽出するステップと、
    前記変更履歴格納手段に格納されている変更履歴情報を当該変更履歴格納手段から取得するステップと、
    前記取得された変更履歴情報に含まれる変更前の文字列および変更後の文字列に基づいて、前記抽出された差分文字列を当該変更前の文字列または当該変更後の文字列として含む変更履歴情報を特定するステップと、
    前記抽出された差分文字列および前記特定された変更履歴情報に含まれる変更前の文字列、変更後の文字列および操作種別情報に基づいて、前記抽出された差分文字列が前記AOP定義情報または前記認可ポリシに対する書き換えの対象となる文字列であるかを判定するステップと、
    前記抽出された差分文字列が前記AOP定義情報または前記認可ポリシに対する書き換えの対象となる文字列であると判定された場合、前記抽出された差分文字列に基づいて、前記AOP定義格納手段に格納されているAOP定義情報に含まれるポイントカット定義情報または前記認可ポリシ格納手段に格納されている認可ポリシに含まれるリソース定義情報を更新するステップと
    を実行させるための自動書き換えプログラム。
  2. 前記変更履歴格納手段に格納されている変更履歴情報に含まれる変更前の文字列および変更後の文字列は、オブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列を含み、
    前記ポイントカット定義情報から抽出された文字列は、オブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列を含み、
    前記リソース定義情報から抽出された文字列は、オブジェクト指向言語におけるクラスおよびメソッドの名称からなる文字列を含む
    ことを特徴とする請求項1記載の自動書き換えプログラム。
  3. 前記変更履歴格納手段に格納されている変更履歴情報に含まれる操作種別情報は、変更における操作種別として追加、変更および削除を示し、
    前記判定するステップは、
    前記特定された変更履歴情報に含まれる操作種別情報が追加を示す場合、前記抽出された差分文字列が前記リソース定義情報から抽出された文字列であるかを判定するステップと、
    前記抽出された差分文字列が前記リソース定義情報から抽出された文字列であると判定された場合、前記抽出された差分文字列を前記AOP定義情報に含まれるポイントカット定義情報に対する追加の対象となる文字列であると判定するステップと
    を含み、
    前記更新するステップにおいて、前記AOP定義情報に含まれるポイントカット定義情報に対する追加の対象となる文字列であると判定された前記抽出された差分文字列を前記AOP定義格納手段に格納されているAOP定義情報に含まれるポイントカット定義情報に追加する
    ことを特徴とする請求項1記載の自動書き換えプログラム。
  4. 前記判定するステップは、
    前記特定された変更履歴情報に含まれる操作種別情報が変更を示す場合、前記抽出された差分文字列が当該変更履歴情報に前記変更前の文字列として含まれ、かつ、前記抽出された差分文字列が前記リソース定義情報から抽出された文字列であるかを判定するステップと、
    前記抽出された差分文字列が当該変更履歴情報に前記変更前の文字列として含まれ、かつ、前記抽出された差分文字列が前記リソース定義情報から抽出された文字列であると判定された場合、前記抽出された差分文字列を前記認可ポリシに含まれるリソース定義情報に対する修正前の文字列であると判定するステップと、
    前記抽出された差分文字列が当該変更履歴情報に前記変更前の文字列として含まれ、かつ、前記抽出された差分文字列が前記リソース定義情報から抽出された文字列でないと判定された場合、前記抽出された差分文字列が当該変更履歴情報に前記変更後の文字列として含まれ、かつ、前記抽出された差分文字列が前記ポイントカット定義情報から抽出された文字列であるかを判定するステップと、
    前記抽出された差分文字列が当該変更履歴情報に前記変更後の文字列として含まれ、かつ、前記抽出された差分文字列が前記ポイントカット定義情報から抽出された文字列であると判定された場合、前記抽出された差分文字列を前記認可ポリシに含まれるリソース定義情報に対する修正後の文字列であると判定するステップと
    を更に含み、
    前記更新するステップにおいて、前記認可ポリシ格納手段に格納されている認可ポリシに含まれるリソース定義情報において、前記認可ポリシに含まれるリソース定義情報に対する修正前の文字列であると判定された前記抽出された差分文字列を、前記認可ポリシに含まれるリソース定義情報に対する修正後の文字列であると判定された前記抽出された差分文字列に変更する
    ことを特徴とする請求項3記載の自動書き換えプログラム。
  5. 前記判定するステップは、
    前記特定された変更履歴情報に含まれる操作種別情報が削除を示す場合、前記抽出された差分文字列が前記リソース定義情報から抽出された文字列であるかを判定するステップと、
    前記抽出された差分文字列が前記リソース定義情報から抽出された文字列であると判定された場合、前記抽出された差分文字列を前記認可ポリシに含まれるリソース定義情報に対する削除の対象となる文字列であると判定するステップと
    を更に含み、
    前記更新するステップにおいて、前記認可ポリシに含まれるリソース定義情報に対する削除の対象となる文字列であると判定された前記抽出された差分文字列を前記認可ポリシ格納手段に格納されている認可ポリシに含まれるリソース定義情報から削除する
    ことを特徴とする請求項4記載の自動書き換えプログラム。
  6. アプリケーションの実行におけるアスペクトの実行時点を表現する文字列からなるポイントカット定義情報を含むAOP定義情報を格納するAOP定義格納手段と、
    前記アプリケーションを利用するユーザからのアクセスの可否を判定するために用いられる認可ポリシであって、当該アクセスの対象であるリソースに関するアクセス可否条件を表現する文字列からなるリソース定義情報を含む認可ポリシを格納する認可ポリシ格納手段と、
    前記アプリケーションのソースコードの変更毎の履歴を示す変更履歴情報であって、当該ソースコードにおける変更前の文字列、変更後の文字列および当該変更における操作種別を示す操作種別情報を含む変更履歴情報を格納する変更履歴格納手段と、
    前記AOP定義格納手段に格納されているAOP定義情報を当該AOP定義格納手段から取得するAOP定義取得手段と、
    前記AOP定義取得手段によって取得されたAOP定義情報に含まれるポイントカット定義情報から、前記アプリケーションの実行におけるアスペクトの実行時点を表現する文字列を抽出するポイントカット抽出手段と、
    前記認可ポリシ格納手段に格納されている認可ポリシを当該認可ポリシ格納手段から取得する認可ポリシ取得手段と、
    前記認可ポリシ取得手段によって取得された認可ポリシに含まれるリソース定義情報から、前記リソースに関するアクセス可否条件を表現する文字列を抽出するリソース抽出手段と、
    前記ポイントカット抽出手段によって前記ポイントカット定義情報から抽出された文字列および前記リソース抽出手段によって前記リソース定義情報から抽出された文字列を比較することによって、当該ポイントカット定義情報および当該リソース定義情報間において差分となる差分文字列を抽出する差分抽出手段と、
    前記変更履歴格納手段に格納されている変更履歴情報を当該変更履歴格納手段から取得する変更履歴取得手段と、
    前記変更履歴取得手段によって取得された変更履歴情報に含まれる変更前の文字列および変更後の文字列に基づいて、前記差分抽出手段によって抽出された差分文字列を当該変更前の文字列または当該変更後の文字列として含む変更履歴情報を特定する特定手段と、
    前記差分抽出手段によって抽出された差分文字列および前記特定手段によって特定された変更履歴情報に含まれる変更前の文字列、変更後の文字列および操作種別情報に基づいて、前記差分抽出手段によって抽出された差分文字列が前記AOP定義情報または前記認可ポリシに対する書き換えの対象となる文字列であるかを判定する判定手段と、
    前記差分抽出手段によって抽出された差分文字列が前記AOP定義情報または前記認可ポリシに対する書き換えの対象となる文字列であると判定された場合、前記差分抽出手段によって抽出された差分文字列に基づいて、前記AOP定義格納手段に格納されているAOP定義情報に含まれるポイントカット定義情報または前記認可ポリシ格納手段に格納されている認可ポリシに含まれるリソース定義情報を更新する更新手段と
    を具備することを特徴とする自動書き換え装置。
JP2010176501A 2010-08-05 2010-08-05 自動書き換えプログラムおよび自動書き換え装置 Active JP4937387B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010176501A JP4937387B2 (ja) 2010-08-05 2010-08-05 自動書き換えプログラムおよび自動書き換え装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010176501A JP4937387B2 (ja) 2010-08-05 2010-08-05 自動書き換えプログラムおよび自動書き換え装置

Publications (2)

Publication Number Publication Date
JP2012038029A JP2012038029A (ja) 2012-02-23
JP4937387B2 true JP4937387B2 (ja) 2012-05-23

Family

ID=45849985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010176501A Active JP4937387B2 (ja) 2010-08-05 2010-08-05 自動書き換えプログラムおよび自動書き換え装置

Country Status (1)

Country Link
JP (1) JP4937387B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604188B (zh) 2016-02-04 2022-03-04 瑞典爱立信有限公司 操作者迁移

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002222082A (ja) * 2000-11-24 2002-08-09 Fujitsu Ltd 記録媒体およびプログラム
JP4590229B2 (ja) * 2004-08-17 2010-12-01 株式会社日立製作所 ポリシルール管理支援方法およびポリシルール管理支援装置
JP2008071007A (ja) * 2006-09-13 2008-03-27 Hitachi Software Eng Co Ltd アスペクト解析方法及び装置並びにコンピュータプログラム
JP2008090557A (ja) * 2006-09-29 2008-04-17 Toshiba Corp デバッガ制御装置及びデバッガ制御方法

Also Published As

Publication number Publication date
JP2012038029A (ja) 2012-02-23

Similar Documents

Publication Publication Date Title
Wöhrer et al. Design patterns for smart contracts in the ethereum ecosystem
US10235142B1 (en) Code generator tool for building software applications with reusable components
US10621211B2 (en) Language tag management on international data storage
US11062022B1 (en) Container packaging device
US9015496B2 (en) MIME handling security enforcement
US10318402B2 (en) Automated software compliance analysis
US8869111B2 (en) Method and system for generating test cases for a software application
AU2021206497B2 (en) Method and apparatus for authority control, computer device and storage medium
US20100306638A1 (en) Object templates for data-driven applications
US20070169065A1 (en) Computer program with metadata management function
US9256827B2 (en) Portable data management using rule definitions
CN110489310B (zh) 一种记录用户操作的方法、装置、存储介质及计算机设备
US9442718B1 (en) System for assisting in locating changes in source code version control system
CA2883029C (en) Method and system for securely updating a website
US20200104107A1 (en) Systems and methods for deploying software products to environments
US10467003B1 (en) Divided execution and storage of scripts
Maciel et al. MOAManager: a tool to support data stream experiments
US20220244938A1 (en) Method and system for code maintenance
CN111966630B (zh) 文件类型的检测方法、装置、设备和介质
US9020979B2 (en) Rich database metadata model that captures application relationships, mappings, constraints, and complex data structures
JP4937387B2 (ja) 自動書き換えプログラムおよび自動書き換え装置
EP4030280A1 (en) Seamless lifecycle stability for extensible software features
US20190138377A1 (en) System and method for sending restful commands to uefi firmware using uefi variable services
KR101762861B1 (ko) 하나 이상의 기능 모듈을 이용한 확장형 연산 처리 시스템, 하나 이상의 기능 모듈을 이용한 정보 처리 방법 및 이를 위한 컴퓨터 프로그램
US8635331B2 (en) Distributed workflow framework

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120124

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120221

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4937387

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350