160 likes | 345 Views
Object-oriented Software Change Dynamic Impact Analysis. Lulu Huang and Yeong-Tae Song Dept. of Computer and Information Sciences Towson University Towson, MD 21014, USA {lhuang2|ysong}@towson.edu. Software evolves and changes.
E N D
Object-oriented Software Change Dynamic Impact Analysis Lulu Huang and Yeong-Tae Song Dept. of Computer and Information Sciences Towson University Towson, MD 21014, USA {lhuang2|ysong}@towson.edu
Software evolves and changes Software evolutionis theon-going enhancement of existing software systems, involving both development and maintenance. Software maintenance has been recognized as the most costly and difficult phase in software life cycle. Software change management is one of the most essential tasks in software maintenance.
Software Change Management Reasons for Change Determine feasibility and impacts of changes Change, validation and release
Impact Analysis Impact analysis is a process that predicts and determines the parts of a software system that can be affected by changes to the system. Change Set: The parts of the software system that are to be changed Impact Set: Parts of the software system that are affected by the changes
Impact Analysis is Essential • Impact analysis is a systematic approach to understanding impacts of software changes and is essential to: • Identify the parts that require retesting • Improve estimation of time, labor and money required for maintenance • Reduce potential errors due to unknown change impacts • Improve overall efficiency in software maintenance
Static Impact Analysis • Depends on analysis of source code • Based on assumptions of all possible software runtime behaviors Results can include most of the software system in the impact set Inspect source code Analyze program entity dependency relationships Changes requested Impact Set Document possible system behaviors
Dynamic Impact Analysis • Based on software runtime data and dynamic interactive behaviors of the software system • Depends on a set of executions of the system Tend to produce more precise results than static approaches Execute software system Analyze runtime relationships of program entities Impact Set Changes requested Collect system runtime data
Impact Analysis for Object Oriented (OO) Software • Increasing popularity of OO program languages demands efficient dynamic impact analysis technique for OO programs • OO features such as encapsulation, inheritance and polymorphism create new relationships of program entities • Technology today requires impact analysis that take into account these unique OO program features
Existing techniques: CoverageImpact PathImpact CollectEA Pros: tend to produce more precise results than static techniques Cons: Do not consider the difference of OO programs from procedural ones Existing Dynamic Impact Analysis Techniques We require dynamic impact analysis techniques that are designed for object oriented programs!
Our Approach • A dynamic impact analysis approach for OO software systems • Consider OO program features and identify types of changes of program entities • Perform runtime dependency analysis to improve precision Tend to produce more precise impact sets, compared to existing dynamic impact analysis techniques.
Impact analysis can be performed for changes of the following program entities: How is ours different? Program Entities Existing techniques Method • Our approach • Class (enumeration) • Field • Method (constructor) • Interface • Constant Field • Method
How is ours different? Types of changes Our Approach Atomic method changes • Add • Delete • Modify • Modify implementation • Modify interface Atomic field changes • Add • Delete • Modify Types of changes of program entities: Existing Techniques Do not identify types of changes
Dependency relationships on a changed program entity create change ripple impacts. Module dependency relationships identified: How is ours different? Dependency Analysis • Existing Techniques • Method coverage • Execute after relationship • Our Approach • Method coverage • Execute after relationship • Data dependency in: • Method call • Method return • Field modification • Field access • Transitive dependency
public class MethodCall { public static void m1 () { System.out.println ("Inside m1 "); } public static int m2 (int p) m1 { return p * 2; } main public static void main (String[] args) { m2 m1 (); System.out.println ( m2 (8)); } } How is ours different? Example Change Set: { main } Impact set by CollectEA: {main, m1, m2} Impact set by our approach: {main, m2}
Conclusion • Impact analysis is essential in the software maintenance phase • Dynamic impact analysis for OO programs is demanded by increasing popularity of OO languages. • We proposed a new dynamic impact analysis approach to produce more precise impact set by considering OO unique program features and perform runtime dependency analysis Questions?