Islands: aliasing protection in object-oriented languages
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Elements of Style: Analyzing a Software Design Feature with a Counterexample Detector
IEEE Transactions on Software Engineering - Special issue: best papers of the 1996 international symposium on software testing and analysis ISSTA'96
Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Ownership types for object encapsulation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular verification of software components in C
Proceedings of the 25th International Conference on Software Engineering
Eclipse Modeling Framework
Recovering binary class relationships: putting icing on the UML cake
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Precise identification of composition relationships for UML class diagrams
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Effective java™, second edition
Effective java™, second edition
Workshop on modeling in software engineering at ICSE 2009
ACM SIGSOFT Software Engineering Notes
Hi-index | 0.00 |
In this paper, we study how to enforce the composition based on the Unified Modeling Language (UML 2.0) at the program level. We develop a novel technique for automatically detecting the inconsistency for composition between a class diagram and its implementation program using a software model checker. Specifically, given the attributes that are intended to implement composition in a UML class diagram, our approach checks the composition property in two steps. First, our approach systematically generates all valid object diagrams, i.e. valid input program states. Second, after a method to destroy the owner object is called on each object diagram, our approach checks whether all external links to the owned objects have been removed. Central to this approach is how to prune away the large search space that includes all valid input program states.