Foundations for the study of software architecture
ACM SIGSOFT Software Engineering Notes
ICSE '94 Proceedings of the 16th international conference on Software engineering
Communications of the ACM
Obvious or not?: regulating architectural decisions using aspect-oriented programming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
ArchJava: connecting software architecture to implementation
Proceedings of the 24th International Conference on Software Engineering
A case for statically executable advice: checking the law of demeter with AspectJ
Proceedings of the 2nd international conference on Aspect-oriented software development
The Fragile Base Class Problem and Its Impact on Component Systems
ECOOP '97 Proceedings of the Workshops on Object-Oriented Technology
Programming with abstract data types
Proceedings of the ACM SIGPLAN symposium on Very high level languages
Metrics and Laws of Software Evolution - The Nineties View
METRICS '97 Proceedings of the 4th International Symposium on Software Metrics
Design and code inspections to reduce errors in program development
Software pioneers
On Plug-ins and Extensible Architectures
Queue - Patching and Deployment
Architecture Reviews: Practice and Experience
IEEE Software
Automation of GUI testing using a model-driven approach
Proceedings of the 2006 international workshop on Automation of software test
A static aspect language for checking design rules
Proceedings of the 6th international conference on Aspect-oriented software development
Effective Java (2nd Edition) (The Java Series)
Effective Java (2nd Edition) (The Java Series)
Model Based Testing of System Requirements using UML Use Case Models
ICST '08 Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation
Using Aspects for Enforcing Formal Architectural Invariants
Electronic Notes in Theoretical Computer Science (ENTCS)
Using Static Analysis to Find Bugs
IEEE Software
Document based rational software development
Knowledge-Based Systems
Software Architecture: Foundations, Theory, and Practice
Software Architecture: Foundations, Theory, and Practice
Practical framework constraints
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
XE (eXtreme Editor) - Bridging the Aspect-Oriented Programming Usability Gap
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Combating architectural degeneration: a survey
Information and Software Technology
Combining formal methods and aspects for specifying and enforcing architectural invariants
COORDINATION'07 Proceedings of the 9th international conference on Coordination models and languages
Hi-index | 0.00 |
Software systems are increasingly being built as compositions of reusable artifacts (components, frameworks, toolkits, plug-ins, APIs, etc) that have non-trivial usage constraints in the form of interface contracts, underlying assumptions and design composition rules. Satisfying these constraints is challenging: they are often not well documented; or they are difficult to integrate into the software development process in ways that allow their identification by developers; or they may not be enforced by existing tools and development environments. Aspect-Oriented Programming has been advocated as an approach to represent and enforce software constraints in code artifacts. Aspects can be used to detect constraint violations, or more pro-actively, to ensure that the constraints are satisfied without requiring the developer's attention. This paper discusses our experience using aspects to document and enforce software constraints in an industrial application, specifically TDE/UML, a model-driven software testing tool developed at SIEMENS. We present an analysis of common constraints found in our case study, a set of primitive aspects developed to help the enforcement of software constraints, and show how AOP has been incorporated into existing software development and governance approaches in the TDE/UML project. We conclude with a discussion of strengths and limitations of AspectJ in supporting these constraints.