ScienceDirect® Home Skip Main Navigation Links
You have guest access to ScienceDirect. Find out more.
 
Home
Browse
My Settings
Alerts
Help
 Quick Search
 Search tips (Opens new window)
    Clear all fields    
advertisementadvertisement
Information and Software Technology
Volume 49, Issue 2, February 2007, Pages 81-98
 
Font Size: Decrease Font Size  Increase Font Size
 Abstract - selected
Article
Purchase PDF (970 K)

  E-mail Article   
  Add to my Quick Links   
Bookmark and share in 2collab (opens in new window)
Request permission to reuse this article
  Cited By in Scopus (0)
 
 
 
Related Articles in ScienceDirect
View More Related Articles
 
View Record in Scopus
 
doi:10.1016/j.infsof.2006.02.004    How to Cite or Link Using DOI (Opens New Window)
Copyright © 2006 Elsevier B.V. All rights reserved.

Reverse-engineering 1-n associations from Java bytecode using alias analysis

Yoohoon KangCorresponding Author Contact Information, a, E-mail The Corresponding Author, Chanjin Parka, E-mail The Corresponding Author and Chisu Wua, E-mail The Corresponding Author

aSchool of Computer Science and Engineering, Seoul National University, South Korea

Received 27 April 2005; 
revised 15 February 2006; 
accepted 22 February 2006. 
Available online 5 April 2006.

Purchase the full-text article



References and further reading may be available for this article. To view references and further reading you must purchase this article.

Abstract

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.

Keywords: Reverse-engineering; Class diagram; Program understanding; Alias analysis;Static program analysis; Type inference

Article Outline

1. Introduction
2. Problem and motivation
3. Reverse-engineering mechanism
3.1. Alias relationship
3.2. Collection relationship
3.3. Pseudo-alias relationship
3.4. Abstract heap structure
3.5. Inference
4. Analysis for Java bytecode
4.1. Abstract syntax for Java bytecodes
4.2. Extraction of inter-variable relationships
4.3. Element type determination
4.4. Characteristics of our analysis
4.4.1. Bytecode level analysis
4.4.2. Application to other OO languages
4.4.3. Flow insensitive analysis
4.4.4. Not whole program analysis
5. Experimental results
5.1. Results and comparisons
5.2. Additional results
5.3. Examples of recovered 1-n associations
6. Discussion
6.1. Heuristics
6.1.1. Container methods
6.1.2. User-defined containers
6.1.3. Approximation
6.2. Challenges
6.2.1. Factory methods
6.2.2. Detection of containers
6.2.3. Element type determination
6.2.4. Semantic shift
6.2.5. Soundness
6.2.6. Parametric polymorphism
7. Related work
8. Conclusions and future work
References








 
Home
Browse
My Settings
Alerts
Help
Elsevier.com (Opens new window)
About ScienceDirect  |  Contact Us  |  Information for Advertisers  |  Terms & Conditions  |  Privacy Policy
Copyright © 2008 Elsevier B.V. All rights reserved. ScienceDirect® is a registered trademark of Elsevier B.V.