Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Unified Modeling Language reference manual
The Unified Modeling Language reference manual
Proceedings of the Conference on The Future of Software Engineering
Practical virtual method call resolution for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Lightweight Extraction of Object Models from Bytecode
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Java Virtual Machine Specification
Java Virtual Machine Specification
The Java Language Specification
The Java Language Specification
Towards pattern-based design recovery
Proceedings of the 24th International Conference on Software Engineering
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Object models as heap invariants
Programming methodology
Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
Application of UML Associations and Their Adornments in Design Recovery
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Reverse Engineering of the UML Class Diagram from C++ Code in Presence of Weakly Typed Containers
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
A Study on the Current State of the Art in Tool-Supported UML-Based Static Reverse Engineering
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
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
Hi-index | 0.00 |
1-n associations are design language constructs that represent one-to-many structural invariants for objects. To implement 1-n associations, container classes, such as Vector in Java, are frequently used as programming language constructs. Many of the current CASE tools fail to reverse-engineer 1-n associations that have been implemented via containers because sophisticated analyses are required to infer the type of elements collected in containers. This paper presents a new approach to reverse-engineering 1-n associations from Java bytecode based on alias analysis. In our approach, 1-n associations are inferred by examining the abstract heap structure that is constructed by applying an alias analysis on inter-variable relationships extracted from assignments and method invocations of containers. Our approach handles container alias problem that has been neglected by previous techniques by approximating the relationships between containers and elements at the object level rather than analyzing only the bytecode. Our prototype implementation was used with a suite of well-known Java programs. Most of the 1-n associations were successfully reverse-engineered from hundreds of class files in less than 1 minute.