Formulations and benefits of the law of demeter
ACM SIGPLAN Notices
A Validation of Object-Oriented Design Metrics as Quality Indicators
IEEE Transactions on Software Engineering
A new approach to compiling adaptive programs
Science of Computer Programming
Obvious or not?: regulating architectural decisions using aspect-oriented programming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Incremental programming with extensible decisions
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Assuring Good Style for Object-Oriented Programs
IEEE Software
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Architectural Reasoning in ArchJava
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
ECOOP '98 Workshop ion on Object-Oriented Technology
Pluggable reflection: decoupling meta-interface and implementation
Proceedings of the 25th International Conference on Software Engineering
XAspects: an extensible system for domain-specific aspect languages
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Josh: an open AspectJ-like language
Proceedings of the 3rd international conference on Aspect-oriented software development
Controlling the Complexity of Software Designs
Proceedings of the 26th International Conference on Software Engineering
Measuring the dynamic behaviour of AspectJ programs
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A framework and tool supports for generating test inputs of AspectJ programs
Proceedings of the 5th international conference on Aspect-oriented software development
Efficient control flow quantification
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
A static aspect language for checking design rules
Proceedings of the 6th international conference on Aspect-oriented software development
A case study in re-engineering to enforce architectural control flow and data sharing
Journal of Systems and Software
Towards a type system for detecting never-matching pointcut compositions
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
Proceedings of the 8th ACM international conference on Aspect-oriented software development
Experiences documenting and preserving software constraints using aspects
Proceedings of the tenth international conference on Aspect-oriented software development companion
Pluggable aspect instantiation models
SC'11 Proceedings of the 10th international conference on Software composition
Shadow programming: reasoning about programs using lexical join point information
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
DiSL: a domain-specific language for bytecode instrumentation
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Hi-index | 0.00 |
We define a generic join point model for checking the Law of Demeter (LoD). Join points are trees, pointcuts are predicates over join points, and advice is checked statically similar to how declare warning is checked in AspectJ. We illustrate how the joint point form is mapped to the object and class forms of LoD, and provide an implementation in AspectJ that approximates LoD's class form by dynamically checking a particular execution using only the join points' static part. The paper proposes two ways to extend AspectJ to provide access to lexical join points directly. The first proposes statically executable advice and pointcut designators over lexical join points. The second proposes statically executable meta-advice over the exposed abstract syntax tree of the program and using Demeter style traversals to mirror AspectJ pointcuts.