Object-oriented metrics that predict maintainability
Journal of Systems and Software - Special issue on object-oriented software
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Pattern-oriented software architecture: a system of patterns
Pattern-oriented software architecture: a system of patterns
Software Metrics: A Rigorous and Practical Approach
Software Metrics: A Rigorous and Practical Approach
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Eclipse Modeling Framework
Design Patterns and Change Proneness: An Examination of Five Evolving Systems
METRICS '03 Proceedings of the 9th International Symposium on Software Metrics
Refactoring to Patterns
Product Metrics for Automatic Identification of "Bad Smell" Design Problems in Java Source-Code
METRICS '05 Proceedings of the 11th IEEE International Software Metrics Symposium
Search-Based Software Maintenance
CSMR '06 Proceedings of the Conference on Software Maintenance and Reengineering
Search-based refactoring: an empirical study
Journal of Software Maintenance and Evolution: Research and Practice - Search Based Software Engineering [SBSE]
Software Engineering: A Practitioner's Approach
Software Engineering: A Practitioner's Approach
Genetic Algorithms and Genetic Programming: Modern Concepts and Practical Applications
Genetic Algorithms and Genetic Programming: Modern Concepts and Practical Applications
Artificial Intelligence: A Modern Approach
Artificial Intelligence: A Modern Approach
An Approach to GA-Driven Automatic Refactoring Based on Design Patterns
ICSEA '10 Proceedings of the 2010 Fifth International Conference on Software Engineering Advances
SCAM '11 Proceedings of the 2011 IEEE 11th International Working Conference on Source Code Analysis and Manipulation
Hi-index | 0.00 |
Software engineering is a continually evolving discipline, wherein researchers and members of industry are working towards defining and refining what are known as "best practices." Best practices are the set of known correct engineering techniques that lead to quality software. When a software artifact is produced, it becomes temporally locked into a single instantiation of these best practices at a given point in time. If such software is not maintained in such a way as to keep it current with the evolution of practice, then there is a good chance that subsequent engineers may not understand the design choices made. There are known techniques, called refactorings, which allow for structural changes to software without altering the outward appearance and behavior, thus maintaining the intent of the original design. Unfortunately, refactoring requires an engineer to both understand the techniques to be applied and the code to which they are applied to. This is not always feasible. We have developed an automated system utilizing Evolutionary Algorithms to manipulate refactorings correctly without requiring an underlying understanding of the software. This then allows for sustained levels of quality of evolving software systems. The understandability, maintainability, and reusability of the software regenerate as best practices evolve.