Documenting frameworks using patterns
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
A study on exception detection and handling using aspect-oriented programming
Proceedings of the 22nd international conference on Software engineering
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Analyzing the role of aspects in software design
Communications of the ACM
Managing crosscutting concerns during software evolution tasks: an inquisitive study
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Design Rules: The Power of Modularity Volume 1
Design Rules: The Power of Modularity Volume 1
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
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
Variability management with feature-oriented programming and aspects
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of 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
An analysis of modularity in aspect oriented design
Proceedings of the 4th international conference on Aspect-oriented software development
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
Using Pointcut Delta Analysis to Support Evolution of Aspect-Oriented Software
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Using dependency models to manage complex software architecture
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Refactoring the Aspectizable Interfaces: An Empirical Assessment
IEEE Transactions on Software Engineering
Simon: modeling and analysis of design space structures
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Modular Software Design with Crosscutting Interfaces
IEEE Software
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composing design patterns: a scalability study of aspect-oriented programming
Proceedings of the 5th international conference on Aspect-oriented software development
Adding Self-Healing Capabilities into Legacy Object Oriented Application
ICAS '06 Proceedings of the International Conference on Autonomic and Autonomous Systems
Exceptions and aspects: the devil is in the details
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Bridging Java and AspectJ through explicit join points
Proceedings of the 5th international symposium on Principles and practice of programming in Java
A framework and tool supports for testing modularity of software design
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
EJFlow: taming exceptional control flows in aspect-oriented programming
Proceedings of the 7th international conference on Aspect-oriented software development
Towards reusable components with aspects: an empirical study on modularity and obliviousness
Proceedings of the 30th international conference on Software engineering
IEEE Transactions on Software Engineering
Cooperative aspect-oriented programming
Science of Computer Programming
An integrated crosscutting concern migration strategy and its semi-automated application to JHotDraw
Automated Software Engineering
Improving the Efficiency of Dependency Analysis in Logical Decision Models
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Modular aspect-oriented design with XPIs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Transactions on Aspect-Oriented Software Development I
On the impact of aspectual decompositions on design stability: an empirical study
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Join point interfaces for safe and flexible decoupling of aspects
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.00 |
The potential of aspect-oriented programming to adequately capture crosscutting concerns has yet to be fully realized. For example, authors have detailed significant challenges in creating reusable aspect component libraries. One proposed solution is to introduce Explicit Join Points (EJPs) to increase modularity by reducing obliviousness, enabling a Cooperative Aspect-Oriented Programming (Co-AOP) methodology where base code and aspects synergistically collaborate. This article explores the trade-offs between obliviousness and modularity. We briefly introduce EJPs and Co-AOP, and hypothesize how to balance obliviousness and modularity using Co-AOP. We build upon a prior empirical study to refactor three real-life Java applications to implement the exception handling concern using three distinct strategies: (1) using fully oblivious aspects in AspectJ, (2) using EJPs in a fully explicit fashion, and (3) using EJPs while following the Co-AOP methodology. We study other crosscutting concerns by refactoring a fourth application, JHotDraw. The differences in terms of common code metrics are analyzed, and the impact on modularity is assessed using design structure matrices. Results indicate that the Co-AOP methodology can in many cases significantly improve code quality attributes versus fully oblivious or fully explicit approaches. We conclude with guiding principles on the proper use of EJPs within the Co-AOP methodology.