Program evolution: processes of software change
Program evolution: processes of software change
An improved algorithm for transitive closure on acyclic digraphs
International Colloquium on Automata, Languages and Programming on Automata, languages and programming
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
The String-to-String Correction Problem
Journal of the ACM (JACM)
Finding refactorings via change metrics
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Does Code Decay? Assessing the Evidence from Change Management Data
IEEE Transactions on Software Engineering
Change impact analysis for object-oriented programs
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
IEEE Transactions on Software Engineering
The evolution matrix: recovering software evolution using software visualization techniques
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
The 4+1 View Model of Architecture
IEEE Software
On the uniformity of software evolution patterns
Proceedings of the 25th International Conference on Software Engineering
Supporting Software Maintenance by Mining Software Update Records
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Detection of Logical Coupling Based on Product Release History
ICSM '98 Proceedings of the International Conference on Software Maintenance
Evolution in Open Source Software: A Case Study
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
An Integrated Approach for Studying Architectural Evolution
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Scalable Consistency Checking Between Diagrams-The ViewIntegra Approach
Proceedings of the 16th IEEE international conference on Automated software engineering
Reconstruction of Successful Software Evolution Using Clone Detection
IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
How History Justifies System Architecture (or Not)
IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
Studying the Chaos of Code Development
WCRE '03 Proceedings of the 10th Working Conference on Reverse Engineering
Understanding Class Evolution in Object-Oriented Software
IWPC '04 Proceedings of the 12th IEEE International Workshop on Program Comprehension
Understanding Phases and Styles of Object-Oriented Systems' Evolution
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
Design mentoring based on design evolution analysis
eclipse '04 Proceedings of the 2004 OOPSLA workshop on eclipse technology eXchange
Towards Experience-Based Mentoring of Evolutionary Development
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Understanding component co-evolution with a study on Linux
Empirical Software Engineering
Differencing logical UML models
Automated Software Engineering
Determining detailed structural correspondence for generalization tasks
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction
IEEE Transactions on Software Engineering
Do software libraries evolve differently than applications?: an empirical investigation
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Patterns of Transition: The Shift from Traditional to Object-Oriented Development
Journal of Management Information Systems
An Architecture for Modeling and Applying Quality Processes on Evolving Software
ICSP '09 Proceedings of the International Conference on Software Process: Trustworthy Software Development Processes
Characterizing software architecture changes: A systematic review
Information and Software Technology
Analyzing the evolution patterns of object-oriented system
SEA '07 Proceedings of the 11th IASTED International Conference on Software Engineering and Applications
An approach to software evolution based on semantic change
FASE'07 Proceedings of the 10th international conference on Fundamental approaches to software engineering
On the analysis of evolution of software artefacts and programs
Proceedings of the 34th International Conference on Software Engineering
Is it dangerous to use version control histories to study source code evolution?
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Information Resources Management Journal
A comparative study of manual and automated refactorings
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.02 |
Today, most object-oriented software systems are developed using an evolutionary process model. Therefore, understanding the phases that the system's logical design has gone through and the style of their evolution can provide valuable insights in support of consistently maintaining and evolving the system, without compromising the integrity and stability of its architecture. In this paper, we present a method for analyzing the evolution of object-oriented software systems from the point of view of their logical design. This method relies on UMLDiff, a UML-structure differencing algorithm, which, given a sequence of UML class models corresponding to the logical design of a sequence of system code releases, produces a sequence of "change records驴 that describe the design-level changes between subsequent system releases. This change-records sequence is subsequently analyzed from the perspective of each individual system class, to produce the class-evolution profile, i.e., a class-specific change-records' sequence. Three types of longitudinal analyses驴phasic, gamma, and optimal matching analysis驴are applied to the class-evolution profiles to recover a high-level abstraction of distinct evolutionary phases and their corresponding styles and to identify class clusters with similar evolution trajectories. The recovered knowledge facilitates the overall understanding of system evolution and the planning of future maintenance activities. We report on one real-world case study evaluating our approach.