Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
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
Information delivery in support of learning reusable software components on demand
Proceedings of the 7th international conference on Intelligent user interfaces
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
Hipikat: recommending pertinent software development artifacts
Proceedings of the 25th International Conference on Software Engineering
Detection of Logical Coupling Based on Product Release History
ICSM '98 Proceedings of the International Conference on Software Maintenance
Scalable Consistency Checking Between Diagrams-The ViewIntegra Approach
Proceedings of the 16th IEEE international conference on Automated software engineering
Java Quality Assurance by Detecting Code Smells
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
GUI Ripping: Reverse Engineering of Graphical User Interfaces for Testing
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
Analyzing the Evolutionary History of the Logical Design of Object-Oriented Software
IEEE Transactions on Software Engineering
UMLDiff: an algorithm for object-oriented design differencing
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Differencing logical UML models
Automated Software Engineering
Hi-index | 0.00 |
Developing and consistently evolving quality software designs requires both theoretical knowledge and practical skills. The former can be communicated in a classroom; the latter has to be acquired with hands-on experience in software development. Our recent work on design evolution has resulted in a framework for analyzing the structural differences of subsequent versions of design artifacts, such as the logical design of OO software and the user-interface design of interactive applications. In this paper, we discuss how design-evolution analysis can be used to assist developers in their tasks of understanding the design rationale of the system at hand and to advise them on how to consistently maintain and evolve it.