A Design Discipline and Language Features for Formal Modular Reasoning in Aspect-Oriented Programs
نویسندگان
چکیده
Advice in aspect-oriented programming helps programmers modularize crosscutting concerns by allowing additions and changes to a program’s execution. However, formal reasoning about the functional behavior of aspect-oriented programs requires a non-modular, wholeprogram search to find applicable advice. To allow modular reasoning, we describe a discipline that categorizes aspects into two sorts: spectators and assistants. “Spectators” are statically checked to not modify the behavior of the code they advise; this restriction lets them remain unseen. Unlike spectators, “assistants” are not restricted in their behavior. However, for modular reasoning one must be able to identify all applicable assistants, hence assistants must be explicitly accepted by the code they advise. Besides allowing modular reasoning, this discipline permits the use of existing idioms, and appears to be statically verifiable and practical for software development. Indeed, expert aspect-oriented programmers seem to use such a discipline.
منابع مشابه
Spectators and Assistants: Enabling Modular Aspect-Oriented Reasoning
In current aspect-oriented languages, separate compilation and modular reasoning are not possible. This detracts from comprehensibility and impedes maintenance efforts. We describe language features that would allow aspect-oriented languages to provide separate compilation and modular reasoning. We demonstrate that existing programs written in AspectJ can be easily rewritten using these features.
متن کاملOpen Modules: Modular Reasoning About Advice
Advice is a mechanism used by advanced object-oriented and aspect-oriented programming languages to augment the behavior of methods in a program. Advice can help to make programs more modular by separating crosscutting concerns more effectively, but it also challenges existing ideas about modularity and separate development. We study this challenge using a new, simple formal model for advice as...
متن کاملModular Reasoning with Join Point Interfaces Modular Reasoning with Join Point Interfaces
In current aspect-oriented systems, aspects usually carry, through their pointcuts, explicit references to the base code. Those references are fragile and give up important software engineering properties such as modular reasoning and independent evolution of aspects and base code. A well-studied solution to this problem consists in separating base code and aspects using an intermediate interfa...
متن کاملOpen Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming
This paper makes two contributions to a formal understanding of aspect-oriented programming. First, we define TinyAspect, a formal model capturing core AOP concepts. Compared to previous formalizations of AOP constructs, TinyAspectis extremely small, models aspects at the source level, and is defined using structured operational semantics and syntax-directed typing rules. In combination, these ...
متن کاملUnderstanding Exceptional Behavior and Exception Flow in Implicit Invocation Systems by Mehdi Bagherzadeh, Hridesh Rajan and Ali Darvish
Exceptions and their implicit control flow complicate modular understanding (reasoning) of both exceptional behavior and exception flow of a system. Such reasoning tasks about exceptions are more complicated in implicit invocation (II) systems, where a subject module can invoke other observer modules without knowing about them and especially behavior and flow of their exceptions. In this work, ...
متن کامل