Constructive architecture compliance checking — an experiment on support by live feedback

This paper describes our lessons learned and experiences gained from turning an analytical reverse engineering technology - architecture compliance checking - into a constructive quality engineering technique. Constructive compliance checking constantly monitors the modifications made by developers. When a structural violation is detected, the particular developer receives live feedback allowing prompt removal of the violations and hence, training the developers on the architecture. An experiment with six component development teams gives evidence that this training pro-actively prevents architecture decay. The three teams supported by the live compliance checking inserted about 60% less structural violations into the architecture than did the three other development teams. Based on the results, we claim that constructive compliance checking is a promising application of reverse engineering technology to the software implementation phase.

[1]  Robert L. Nord,et al.  Applied Software Architecture , 1999, Addison Wesley object technology series.

[2]  Eoin Woods,et al.  Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives , 2005 .

[3]  Alan R. Hevner,et al.  Perceived Control of Software Developers and Its Impact on the Successful Diffusion of Information Technology , 1999 .

[4]  Rainer Koschke,et al.  Equipping the reflexion method with automated clustering , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[5]  André Postma A method for module architecture verification and its application on a large component-based system , 2003, Inf. Softw. Technol..

[6]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[7]  Rudolf K. Keller,et al.  High-impact Refactoring Based on Architecture Violations , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[8]  Richard C. Holt Structural manipulations of software architecture using Tarski relational algebra , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[9]  Daniel Yankelevich,et al.  Modal logic as a design notation , 1998, Proceedings Ninth International Workshop on Software Specification and Design.

[10]  René L. Krikhaar,et al.  Languages for formalizing, visualizing and verifying software architectures , 2001, Comput. Lang..

[11]  Rainer Koschke,et al.  Extending the reflexion method for consolidating software variants into product lines , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[12]  Jens Knodel,et al.  A Comparison of Static Architecture Compliance Checking Approaches , 2007, 2007 Working IEEE/IFIP Conference on Software Architecture (WICSA'07).

[13]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[14]  Jens Knodel,et al.  Static evaluation of software architectures , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[15]  Recommended Practice for Architectural Description of Software-Intensive Systems , 1999 .

[16]  David Notkin,et al.  Software Reflexion Models: Bridging the Gap between Design and Implementation , 2001, IEEE Trans. Software Eng..

[17]  W. Edwards Deming,et al.  Out of the Crisis , 1982 .

[18]  Rainer Koschke,et al.  Hierarchical reflexion models , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[19]  Richard C. Holt,et al.  Design maintenance: unexpected architectural interactions (experience report) , 1995, Proceedings of International Conference on Software Maintenance.

[20]  Alan R. Hevner,et al.  The Successful Diffusion of Innovations: Guidance for Software Development Organizations , 2000, IEEE Softw..

[21]  Mikael Lindvall,et al.  Evaluating software architectures , 2004, Adv. Comput..

[22]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..