Artificial intelligence (2nd ed.)
Artificial intelligence (2nd ed.)
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Design erosion: problems and causes
Journal of Systems and Software
Software Reflexion Models: Bridging the Gap between Design and Implementation
IEEE Transactions on Software Engineering
Search-Based Software Maintenance
CSMR '06 Proceedings of the Conference on Software Maintenance and Reengineering
Pareto optimal search based refactoring at the design level
Proceedings of the 9th annual conference on Genetic and evolutionary computation
A dependency constraint language to manage object-oriented software architectures
Software—Practice & Experience
On the use of genetic programming for automated refactoring and the introduction of design patterns
Proceedings of the 12th annual conference on Genetic and evolutionary computation
Controlling software architecture erosion: A survey
Journal of Systems and Software
Automated Refactoring Using Design Differencing
CSMR '12 Proceedings of the 2012 16th European Conference on Software Maintenance and Reengineering
Recommending Refactorings to Reverse Software Architecture Erosion
CSMR '12 Proceedings of the 2012 16th European Conference on Software Maintenance and Reengineering
Distributed systems design supported by reflective writing and CATs
FIE '11 Proceedings of the 2011 Frontiers in Education Conference
Maintainability defects detection and correction: a multi-objective approach
Automated Software Engineering
On the existence of high-impact refactoring opportunities in programs
ACSC '12 Proceedings of the Thirty-fifth Australasian Computer Science Conference - Volume 122
Towards extensive software architecture erosion repairs
ECSA'13 Proceedings of the 7th European conference on Software Architecture
Hi-index | 0.00 |
Uncontrolled software architecture erosion can lead to a degradation of the quality of a software system. It is hence of great importance to repair erosion efficiently. Refactorings can help to systematically reverse software architecture erosion through applying them in the system where architectural violations have been detected. However, existing refactoring approaches do not address architecture erosion holistically. In this paper, we describe and formalize the theoretical problem of repairing eroded software systems by finding optimal repair sequences. Furthermore, we investigate the applicability and limitations of existing refactoring approaches. We argue, true to the motto "more knowledge means less search" that using formalized and explicit knowledge of software engineers---modeled as fault patterns and repair strategies---combined with heuristic search techniques could overcome those limitations. This paper outlines a new approach---analog to a patient history in medicine---we have been starting to investigate in our recent research and also aims at stimulating a discussion about further research challenges in repairing eroded software systems.