MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Promises: linguistic support for efficient asynchronous procedure calls in distributed systems
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Active object: an object behavioral pattern for concurrent programming
Pattern languages of program design 2
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
Communications of the ACM
Behavioral Specifications of Businesses and Systems
Behavioral Specifications of Businesses and Systems
The Java Language Specification
The Java Language Specification
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Jose: Aspects for Design by Contract80-89
SEFM '06 Proceedings of the Fourth IEEE International Conference on Software Engineering and Formal Methods
Implementing Java modeling language contracts with AspectJ
Proceedings of the 2008 ACM symposium on Applied computing
Deadlock freedom through object ownership
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
Can aspects implement contracts?
RISE'05 Proceedings of the Second international conference on Rapid Integration of Software Engineering Techniques
Hi-index | 0.00 |
The applicability of aspects as a means of implementing runtime contract checking has been demonstrated in prior work, where contracts are identified as cross-cutting concerns [12, 13]. Checking contracts at runtime encounters a set of challenges within concurrent environments, such as the risk that evaluation will introduce deadlock to code which is otherwise deadlock-free. This paper presents a simple methodology for generating runtime contract checking aspects targeted at concurrent programs. The novel features of this approach allow contracts to depend on active objects without race conditions or deadlock, and addresses issues relating to timing and blame assignment. The CoJava language is discussed whose tool-supported aspect generation methodology allows the correct checking of contracts predicated on active objects.