Automated design flaw correction in object-oriented systems

Software inevitably changes. As a consequence, we observe the phenomenon referred to as "software entropy" or "software decay": the software design continually degrades making maintenance and functional extensions overly costly if not impossible. There exist a number of approaches to identify design flaws (problem detection) and to remedy them (refactoring). There is, however, a conceptual gap between these two stages: There is no appropriate support for the automated mapping of design flaws to possible solutions. Here we propose an integrated, quality-driven and tool-supported methodology to support object-oriented software evolution. Our approach is based on the novel concept of "correction strategies". Correction strategies serve as reference descriptions that enable a human-assisted tool to plan and perform all necessary steps for the safe removal of detected design flaws, with special concern towards the targeted quality goals of the restructuring process. We briefly sketch our tool chain and illustrate our approach with the help of a medium-sized real-world case-study.

[1]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[2]  Karl J. Lieberherr,et al.  Object-oriented design , 1996, CSUR.

[3]  Arthur J. Riel,et al.  Object-Oriented Design Heuristics , 1996 .

[4]  Albert Zündorf,et al.  Rewriting poor Design Patterns by good Design Patterns , 1997 .

[5]  Walter Zimmer,et al.  On the computer aided introduction of design patterns into object-oriented systems , 1998, Proceedings Technology of Object-Oriented Languages. TOOLS 27 (Cat. No.98EX224).

[6]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[7]  Houari A. Sahraoui,et al.  A metric based technique for design flaws detection and correction , 1999, 14th IEEE International Conference on Automated Software Engineering.

[8]  Mel Ó Cinnéide,et al.  A methodology for the automated introduction of design patterns , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[9]  Oliver Ciupke,et al.  Automatic detection of design problems in object-oriented reengineering , 1999, Proceedings of Technology of Object-Oriented Languages and Systems - TOOLS 30 (Cat. No.PR00278).

[10]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[11]  Martin Fowler. Refactoring Improving the Design of Existing Code , 1999 .

[12]  Serge Demeyer,et al.  The FAMOOS Object-Oriented Reengineering Handbook , 1999 .

[13]  Daniela Florescu,et al.  Quilt: an xml query language , 2000 .

[14]  Houari A. Sahraoui,et al.  Can metrics help to bridge the gap between the improvement of OO design quality and its automation? , 2000, Proceedings 2000 International Conference on Software Maintenance.

[15]  Pedro Manuel Moreira Vaz Antunes de Sousa,et al.  Proceedings of the Fifth European Conference on Software Maintenance and Reengineering , 2000 .

[16]  Fernando Castor,et al.  A Language for Specifying Java Transformations , 2001 .

[17]  Yann-Gaël Guéhéneuc,et al.  Using design patterns and constraints to automate the detection and correction of inter-class design defects , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[18]  Ying Zou,et al.  Quality driven transformation compositions for object oriented migration , 2002, Ninth Asia-Pacific Software Engineering Conference, 2002..

[19]  Doo-Hwan Bae,et al.  An automated refactoring approach to design pattern-based program transformations in Java programs , 2002, Ninth Asia-Pacific Software Engineering Conference, 2002..

[20]  Tom Mens,et al.  Identifying refactoring opportunities using logic meta programming , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[21]  A. Trifu,et al.  Strategy Based Elimination of Design Flaws in Object – Oriented Systems , 2003 .

[22]  Volker Kuttruff,et al.  Source-to-Source Transformation in the Large , 2003, JMLC.

[23]  Zoltán László,et al.  Metaprogramming Library for the C# Programming Language , 2003, JMLC.

[24]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[25]  Radu Marinescu,et al.  Measurement and Quality in Object-Oriented Design , 2005, ICSM.