Skip to main content
QUICK REVIEW

[論文レビュー] Extending Design by Contract for Aspect-Oriented Programming

David H. Lorenz, Therapon Skotiniotis|ArXiv.org|Jan 24, 2005
Advanced Software Engineering Methodologies参考文献 17被引用数 23
ひとこと要約

この論文は、アスペクトの種別(無関係型、従順型、反逆型)を導入することで、設計による保証(DbC)をアスペクト指向プログラミング(AOP)に拡張し、メソッドおよびアスペクトのアサーションを検証する正しい実行順序を決定する。このアプローチにより、AOPシステムにおける正しく責務が明確に割り当てられ、動作的サブタイプ化が保証され、Conaツールに実装され、クラスおよびアスペクトの両方における堅牢で検証可能な契約の実現が可能になる。

ABSTRACT

Design by Contract (DbC) and runtime enforcement of program assertions enables the construction of more robust software. It also enables the assignment of blame in error reporting. Unfortunately, there is no support for runtime contract enforcement and blame assignment for Aspect-Oriented Programming (AOP). Extending DbC to also cover aspects brings forward a plethora of issues related to the correct order of assertion validation. We show that there is no generally correct execution sequence of object assertions and aspect assertions. A further classification of aspects as agnostic, obedient, or rebellious defines the order of assertion validation that needs to be followed. We describe the application of this classification in a prototyped DbC tool for AOP named Cona, where aspects are used for implementing contracts, and contracts are used for enforcing assertions on aspects.

研究の動機と目的

  • 既存のDbC手法が対応できない、アスペクト指向プログラミング(AOP)におけるランタイム契約の強制と責務割り当ての欠如に対処すること。
  • オブジェクトとアスペクトのアサーションの実行順序に生じる曖昧さを解消し、AOPシステムにおける正しさとエラーレポートの質を向上させること。
  • メソッド契約に対する行動的影響に基づく、アスペクトの形式的分類を定義し、一貫したランタイム検証とサブタイプ保証を可能にすること。
  • アドバイス(前処理/後処理/ラップ)に対する契約をサポートするようにDbCの意味論を拡張し、元のメソッドとアスペクト強化済みメソッドの間で動作的サブタイプ化を保証すること。
  • この拡張をConaに実装・評価すること。ConaはAOPに適応したDbCツールであり、アスペクトを介して契約を強制し、型安全かつ責務に配慮した方法でアサーションを検証する。

提案手法

  • アスペクトの行動的影響と契約強制順序に基づき、無関係型、従順型、反逆型という三段階の分類を提案する。
  • 契約検証の厳密な実行順序を定義する:事前条件はアドバイスの前に、事後条件はアドバイスの後に検証され、順序はアスペクトの種別によって決定される。
  • 行動的サブタイプ化ルールを導入する:アドバイス済みメソッドは、元の対応するメソッドの動作的代替物でなければならない。これは、メソッドおよびアドバイスの両方のアサーションによる検証によって保証される。
  • Conaツールを用いてDbC拡張を実装し、AspectJのポイントカットおよびアドバイスメカニズムを用いて、アドバイスの事前・事後条件をランタイムチェックに変換する。
  • アスペクトの種別と検証順序に応じて、契約違反の原因をメソッドかアスペクトのどちらに割り当てるかを追跡することで、責任の割り当てを強制する。
  • アスペクトがベースシステムの契約を認識しないように保ちつつ、モジュール性を維持し、検証を可能にする。

実験結果

リサーチクエスチョン

  • RQ1AOPにおけるオブジェクトおよびアスペクトのアサーションの検証に適切なランタイム順序は何か?なぜ普遍的に正しい順序が存在しないのか?
  • RQ2アスペクトの行動的影響がメソッド契約に与える影響に基づき、正しいかつ一貫したアサーション検証順序を決定するためのアスペクト分類はどのように行えるか?
  • RQ3アドバイスがメソッドの振る舞いを変更する場合、動作的サブタイプ化をどのように保ち、ランタイムでどのように強制できるか?
  • RQ4メソッドとアスペクトの両方がアサーションを含む場合、契約違反の責任を正確に割り当てることは可能か?
  • RQ5ベース言語を変更せず、モジュール性を損なわずに、DbCメカニズムをAOPに拡張することは可能か?

主な発見

  • オブジェクトおよびアスペクトのアサーションの検証に適切な実行順序は普遍的になく、正しい順序はアスペクトの行動的役割に依存する。
  • アスペクトを無関係型、従順型、反逆型に分類することで、正しい検証順序が決定され、動作的サブタイプ化が保証される。
  • 無関係型アスペクトはメソッドの振るまいに影響を与えず、メソッド実行後に検証される。従順型アスペクトは振るまいを変更し、事前条件と事後条件を順番に検証する必要がある。反逆型アスペクトは振るまいを上書きし、サブタイプ化を保つために厳密な順序が必要となる。
  • Conaツールは、メソッドおよびアドバイスの両方の契約を正しく強制し、AOPシステムにおけるランタイムアサーション検証と正確な責任割り当てを実現した。
  • このアプローチにより、アスペクトが契約を実装しつつ、契約がアスペクトのアサーションを強制する仕組みが構築され、自己一貫性のある検証メカニズムが実現された。
  • 分類システムにより、複雑なパス解析を必要とせず、AOPアプリケーションにおけるエラーレポートの簡素化が可能になった。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。