The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
Semantics with applications: a formal introduction
Semantics with applications: a formal introduction
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
On characterization of safety and liveness properties in temporal logic
Proceedings of the fourth annual ACM symposium on Principles of distributed computing
Enforcing trace properties by program transformation
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A study on exception detection and handling using aspect-oriented programming
Proceedings of the 22nd international conference on Software engineering
Communications of the ACM
Using aspectC to improve the modularity of path-specific customization in operating system code
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
A semantical approach to method-call interception
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Framework for the Detection and Resolution of Aspect Interactions
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Composition, reuse and interaction analysis of stateful aspects
Proceedings of the 3rd international conference on Aspect-oriented software development
A semantics for advice and dynamic join points in aspect-oriented programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Verifying aspect advice modularly
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
A classification system and analysis for aspect-oriented programs
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
PolyAML: a polymorphic aspect-oriented functional programming language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Aspectual Caml: an aspect-oriented functional language
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proof Methods for Corecursive Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Typed parametric polymorphism for aspects
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
MiniMAO1: an imperative core language for studying aspect-oriented reasonings
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Certificate translation for specification-preserving advices
Proceedings of the 7th workshop on Foundations of aspect-oriented languages
Specialized Aspect Languages Preserving Classes of Properties
SEFM '08 Proceedings of the 2008 Sixth IEEE International Conference on Software Engineering and Formal Methods
Proceedings of the 8th ACM international conference on Aspect-oriented software development
Modular verification of strongly invasive aspects: summary
Proceedings of the 2009 workshop on Foundations of aspect-oriented languages
EffectiveAdvice: disciplined advice with explicit effects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
ESOP'07 Proceedings of the 16th European conference on Programming
MAVEN: modular aspect verification
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Aspect categories and classes of temporal properties
Transactions on Aspect-Oriented Software Development I
Hi-index | 0.00 |
Aspect Oriented Programming can arbitrarily distort the semantics of programs. In particular, weaving can invalidate crucial safety and liveness properties of the base program. In this article, we identify categories of aspects that preserve some classes of properties. Specialized aspect languages are then designed to ensure that aspects belong to a specific category and, therefore, that woven programs will preserve the corresponding properties. Our categories of aspects, inspired by Katz's, comprise observers, aborters, confiners and weak intruders. Observers introduce new instructions and a new local state but they do not modify the base program's state and control-flow. Aborters are observers which may also abort executions. Confiners only ensure that executions remain in the reachable states of the base program. Weak intruders are confiners between two advice executions. These categories (along with two others) are defined formally based on a language independent abstract semantics framework. The classes of preserved properties are defined as subsets of LTL for deterministic programs and CTL* for non-deterministic ones. We can formally prove that, for any program, the weaving of any aspect in a category preserves any property in the related class. We present, for most aspect categories, a specialized aspect language which ensures that any aspect written in that language belongs to the corresponding category. It can be proved that these languages preserve the corresponding classes of properties by construction. The aspect languages share the same expressive pointcut language and are designed w.r.t. a common imperative base language. Each category and language is illustrated by simple examples. The appendix provides semantics and two instances of proofs: the proof of preservation of properties by a category and the proof that all aspects written in a language belong to the corresponding category.