Programming heterogeneous transactions for software development environments
ICSE '93 Proceedings of the 15th international conference on Software Engineering
On the criteria to be used in decomposing systems into modules
Communications of the ACM
The Java Language Specification
The Java Language Specification
Quantifying aspects in middleware platforms
Proceedings of the 2nd international conference on Aspect-oriented software development
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
AOP: Does It Make Sense? The Case of Concurrency and Failures
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
AspectJ in Action: Practical Aspect-Oriented Programming
AspectJ in Action: Practical Aspect-Oriented Programming
Automatic Detection and Masking of Nonatomic Exception Handling
IEEE Transactions on Software Engineering
Summarization of dynamic content in web collections
PKDD '04 Proceedings of the 8th European Conference on Principles and Practice of Knowledge Discovery in Databases
Aspect-oriented programming and modular reasoning
Proceedings of the 27th international conference on Software engineering
Classpects: unifying aspect- and object-oriented language design
Proceedings of the 27th international conference on Software engineering
Information hiding interfaces for aspect-oriented design
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
A middleware-transparent approach to developing distributed applications: Research Articles
Software—Practice & Experience
Using Pointcut Delta Analysis to Support Evolution of Aspect-Oriented Software
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Refactoring the Aspectizable Interfaces: An Empirical Assessment
IEEE Transactions on Software Engineering
Modular Software Design with Crosscutting Interfaces
IEEE Software
Composing design patterns: a scalability study of aspect-oriented programming
Proceedings of the 5th international conference on Aspect-oriented software development
Exceptions and side-effects in atomic blocks
Science of Computer Programming - Special issue: Concurrency and synchronization in Java programs
Exceptions and aspects: the devil is in the details
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
abc: an extensible AspectJ compiler
Transactions on Aspect-Oriented Software Development I
A trace semantics for long-running transactions
CSP'04 Proceedings of the 2004 international conference on Communicating Sequential Processes: the First 25 Years
Towards reusable components with aspects: an empirical study on modularity and obliviousness
Proceedings of the 30th international conference on Software engineering
AOCI: ontology-based pointcuts
Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software
Cooperative aspect-oriented programming
Science of Computer Programming
Cooperative Aspect Oriented Programming for executable business processes
PESOS '09 Proceedings of the 2009 ICSE Workshop on Principles of Engineering Service Oriented Systems
Types and modularity for implicit invocation with implicit announcement
ACM Transactions on Software Engineering and Methodology (TOSEM)
An exploratory study of fault-proneness in evolving aspect-oriented programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Modular aspect-oriented design with XPIs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Enabling expressive aspect oriented modular reasoning by translucid contracts
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Tackling pointcut fragility with dynamic annotations
Proceedings of the 7th Workshop on Reflection, AOP and Meta-Data for Software Evolution
Closure joinpoints: block joinpoints without surprises
Proceedings of the tenth international conference on Aspect-oriented software development
Proceedings of the tenth international conference on Aspect-oriented software development
Applying translucid contracts for modular reasoning about aspect and object oriented events
Proceedings of the 10th international workshop on Foundations of aspect-oriented languages
Where the truth lies: AOP and its impact on software modularity
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
A system of patterns for reusable aspect libraries
Transactions on aspect-oriented software development VIII
Proceedings of the eleventh workshop on Foundations of Aspect-Oriented Languages
Trading obliviousness for modularity with cooperative aspect-oriented programming
ACM Transactions on Software Engineering and Methodology (TOSEM) - In memoriam, fault detection and localization, formal methods, modeling and design
A design rule language for aspect-oriented programming
Journal of Systems and Software
Join point interfaces for safe and flexible decoupling of aspects
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.00 |
Through AspectJ, aspect-oriented programming (AOP) is becoming of increasing interest and availability to Java programmers as it matures as a methodology for improved software modularity via the separation of cross-cutting concerns. AOP proponents often advocate a development strategy where Java programmers write the main application, ignoring cross-cutting concerns, and then AspectJ programmers, domain experts in their specific concerns, weave in the logic for these more specialized cross-cutting concerns. However, several authors have recently debated the merits of this strategy by empirically showing certain drawbacks. The proposed solutions paint a different development strategy where base code and aspect programmers are aware of each other (to varying degrees) and interactions between cross-cutting concerns are planned for early on. Herein we explore new possibilities in the language design space that open up when the base code is aware of cross-cutting aspects. Using our insights from this exploration we concretize these new possibilities by extending AspectJ with concise yet powerful constructs, while maintaining full backwards compatibility. These new constructs allow base code and aspects to cooperate in ways that were previously not possible: arbitrary blocks of code can be advised, advice can be explicitly parameterized, base code can guide aspects in where to apply advice, and aspects can statically enforce new constraints upon the base code that they advise. These new techniques allow aspect modularity and program safety to increase. We illustrate the value of our extensions through an example based on transactions.