Static evaluation of software architectures

The software architecture is one of the most crucial artifacts within the lifecycle of a software system. Decisions made at the architectural level directly enable, facilitate, hamper, or interfere with the achievement of business goals, functional and quality requirements. Architecture evaluations play an important role in the development and evolution of software systems since they determine how adequate the architecture is for its intended usage. This paper summarizes our practical experience with using architecture evaluations and gives an overview on when and how static architecture evaluations contribute to architecture development. We identify ten distinct purposes and needs for static architecture evaluations and illustrate them using a set of industrial and academic case studies. In particular, we show how subsequent steps in architecture development are influenced by the results from architecture evaluations

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

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

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

[4]  J. Girard,et al.  Definition of Reference Architectures based on Existing Systems WP 2 . 2 , Platforms and Components , 2004 .

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

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

[7]  Joachim Bayer,et al.  View based software documentation , 2004 .

[8]  Barbara Paech,et al.  Component-based product line engineering with UML , 2001, Addison Wesley object technology series.

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

[10]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[11]  Rainer Koschke,et al.  Atomic architectural component recovery for program understanding and evolution , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[12]  Ioana Rus,et al.  Experimenting with Software Architecture Flexibility Using an Implementation of the Tactical Separation Assisted Flight Environment , 2005, 29th Annual IEEE/NASA Software Engineering Workshop.

[13]  Jean-Francois Girard,et al.  Comparing design alternatives from field-tested systems to support product line architecture design , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[14]  Klaus Schmid,et al.  PuLSE: a methodology to develop software product lines , 1999, SSR '99.

[15]  Klaus Schmid,et al.  GoPhone - A Software Product Line in the Mobile Phone Domain , 2004 .

[16]  Rick Kazman,et al.  Evaluating Software Architectures: Methods and Case Studies , 2001 .

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

[18]  Colin Atkinson,et al.  Model-Driven Product Line Architectures , 2002, SPLC.