Towards evolvable software architectures based on systems theoretic stability

In today's increasingly volatile environments, evolvability is quickly becoming the most desirable characteristic of information systems. Current information systems still struggle to provide these high levels of evolvability. Based on the concept of stability from systems theory, we require that information systems should be stable with respect to a set of anticipated changes in order to exhibit high evolvability. This requires that information systems should be free from so‐called combinatorial effects. Combinatorial effects occur when the impact of a change is dependent on the size of the information system. To eliminate these combinatorial effects, we propose four theorems that are constraints on the modular structure of software architectures. The theorems are prescriptive and ensure that stable information systems are built, thereby guaranteeing high evolvability. We further present five higher level modular structures called elements. These elements provide the core functionality of information systems and comply fully with the stringent constraints implied by the four theorems. The internal structure of these elements is described by design patterns which are eligible for automatic code generation. These design patterns offer a constructive proof that it is possible to build information systems in practice by applying this set of theorems. Copyright © 2011 John Wiley & Sons, Ltd.

[1]  Diane Kelly,et al.  A study of design characteristics in evolving software using stability as a criterion , 2006, IEEE Transactions on Software Engineering.

[2]  Meir M. Lehman,et al.  Rules and Tools for Software Evolution Planning and Management , 2001, Ann. Softw. Eng..

[3]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[4]  Kung-Kiu Lau,et al.  Software Component Models , 2006, IEEE Transactions on Software Engineering.

[5]  Dan Harkey,et al.  Client/Server programming with Java and CORBA (2. ed.) , 1998 .

[6]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[7]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[8]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

[9]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[10]  Meir M. Lehman,et al.  A Model of Large Program Development , 1976, IBM Syst. J..

[11]  Letha H. Etzkorn,et al.  An Empirical Study of the Relationship of Stability Metrics and the QMOOD Quality Models Over Software Developed Using Highly Iterative or Agile Software Processes , 2007, Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007).

[12]  Kris Ven,et al.  Exploring the Concept of Systems Theoretic Stability as a Starting Point for a Unified Theory on Software Engineering , 2008, 2008 The Third International Conference on Software Engineering Advances.

[13]  Mohammad Alshayeb,et al.  An empirical study of system design instability metric and design evolution in an agile software process , 2005, J. Syst. Softw..

[14]  Lars Lundberg,et al.  Conflicts and Trade-Offs between Software Performance and Maintainability , 2001, Performance Engineering.

[15]  Christopher Alexander Notes on the Synthesis of Form , 1964 .

[16]  Stephen S. Yau,et al.  Some Stability Measures for Software Maintenance , 1979, IEEE Transactions on Software Engineering.

[17]  Yongtao Sun,et al.  XSLT‐based evolutions and analyses of design patterns , 2009, Softw. Pract. Exp..

[18]  Fred D. Davis,et al.  Explaining Software Developer Acceptance of Methodologies: A Comparison of Five Theoretical Models , 2002, IEEE Trans. Software Eng..

[19]  David Garlan,et al.  Introduction to the Special Issue on Software Architecture , 1995, IEEE Trans. Software Eng..

[20]  Andreas Speck,et al.  An architectural pattern for designing component‐based application frameworks , 2006, Softw. Pract. Exp..

[21]  Kris Ven,et al.  Exploring Concepts for Deterministic Software Engineering: Service Interfaces, Pattern Expansion, and Stability , 2007, International Conference on Software Engineering Advances (ICSEA 2007).

[22]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[23]  Philip Huysmans,et al.  Connecting Industrial Controllers to the Internet through Software Composition in Web Application Servers , 2007, Second International Conference on Internet and Web Applications and Services (ICIW'07).

[24]  Ricardo Terra,et al.  A dependency constraint language to manage object‐oriented software architectures , 2009, Softw. Pract. Exp..

[25]  Tommaso Cucinotta,et al.  AQuoSA—adaptive quality of service architecture , 2009, Softw. Pract. Exp..

[26]  Cláudio Sant'Anna,et al.  Evolving software product lines with aspects , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[27]  Ahmed Elfatatry,et al.  Dealing with change: components versus services , 2007, CACM.

[28]  Brian Fitzgerald,et al.  An empirical investigation into the adoption of systems development methodologies , 1998, Inf. Manag..

[29]  Stephen S. Yau,et al.  Design Stability Measures for Software Maintenance , 1985, IEEE Transactions on Software Engineering.

[30]  Hsung-Pin Chang,et al.  System supports for protocol and application adaptation in vertical handoffs , 2009 .

[31]  Douglas C. Schmidt,et al.  On patterns and pattern languages , 2007 .

[32]  David Lorge Parnas,et al.  The Modular Structure of Complex Systems , 1984, IEEE Transactions on Software Engineering.

[33]  Kris Ven,et al.  Towards Rules and Laws for Software Factories and Evolvability: A Case-Driven Approach , 2006, 2006 International Conference on Software Engineering Advances (ICSEA'06).

[34]  Bashar Nuseibeh,et al.  Specifying features of an evolving software system , 2009, Softw. Pract. Exp..

[35]  Mark Harman,et al.  Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects , 2006, IEEE Transactions on Software Engineering.

[36]  Cecília M. F. Rubira,et al.  On the modularization and reuse of exception handling with aspects , 2009, Softw. Pract. Exp..

[37]  Herwig Mannaert,et al.  Web portal for multicast delivery management , 2003, Internet Res..

[38]  Dan Harkey,et al.  Client/Server programming with Java and Corba , 1997 .

[39]  Lars Lundberg,et al.  Quality attribute conflicts - experiences from a large telecommunication application , 2001, Proceedings Seventh IEEE International Conference on Engineering of Complex Computer Systems.