Software architecture awareness in long-term software product evolution

Software architecture has been established in software engineering for almost 40 years. When developing and evolving software products, architecture is expected to be even more relevant compared to contract development. However, the research results seem not to have influenced the development practice around software products very much. The architecture often only exists implicitly in discussions that accompany the development. Nonetheless many of the software products have been used for over 10, or even 20 years. How do development teams manage to accommodate changing needs and at the same time maintain the quality of the product? In order to answer this question, grounded theory study based on 15 semi-structured interviews was conducted in order to find out about the wide spectrum of architecture practices in software product developing organisations. Our results indicate that a chief architect or central developer acts as a 'walking architecture' devising changes and discussing local designs while at the same time updating his own knowledge about problematic aspects that need to be addressed. Architecture documentation and representations might not be used, especially if they replace the feedback from on-going developments into the 'architecturing' practices. Referring to results from Computer Supported Cooperative Work, we discuss how explicating the existing architecture needs to be complemented by social protocols to support the communication and knowledge sharing processes of the 'walking architecture'.

[1]  Li-Te Cheng,et al.  Sometimes you need to see through walls: a field study of application programming interfaces , 2004, CSCW.

[2]  Christian Heath,et al.  Collaboration and controlCrisis management and multimedia technology in London Underground Line Control Rooms , 1992, Computer Supported Cooperative Work (CSCW).

[3]  Raymond McCall,et al.  Rationale Management in Software Engineering , 2006 .

[4]  James C. McKim,et al.  Design by Contract, By Example , 2001, TOOLS.

[5]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[6]  Philippe Kruchten,et al.  Building Up and Reasoning About Architectural Knowledge , 2006, QoSA.

[7]  Philippe Kruchten,et al.  What do software architects really do? , 2008, J. Syst. Softw..

[8]  Jack Greenfield,et al.  Software factories: assembling applications with patterns, models, frameworks and tools , 2004, OOPSLA '03.

[9]  I. Nonaka A Dynamic Theory of Organizational Knowledge Creation , 1994 .

[10]  Meir M. Lehman,et al.  On understanding laws, evolution, and conservation in the large-program life cycle , 1984, J. Syst. Softw..

[11]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[12]  Jeff Tyree,et al.  Architecture decisions: demystifying architecture , 2005, IEEE Software.

[13]  Jacki O'Neill,et al.  Timing in the art of integration: 'that's how the bastille got stormed' , 2005, GROUP.

[14]  David Lorge Parnas,et al.  Information Distribution Aspects of Design Methodology , 1971, IFIP Congress.

[15]  Carla Simone,et al.  Coordination mechanisms: Towards a conceptual foundation of CSCW systems design , 1996, Computer Supported Cooperative Work (CSCW).

[16]  Walter R. Bischofberger,et al.  Sotograph - A Pragmatic Approach to Source Code Architecture Conformance Checking , 2004, EWSA.

[17]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[18]  Maria-Eugenia Iacob,et al.  ArchiMate 1.0 Specification , 2009 .

[19]  David Garlan,et al.  A Formal Approach to Software Architectures , 1992, IFIP Congress.

[20]  Richard Mateosian,et al.  Software Architects [review of 97 Things Every Software Architect Should Know: Collective Wisdom from the Experts (Monson-Haefel, R., Ed.; 2009)] , 2009, IEEE Micro.

[21]  David Lorge Parnas,et al.  A rational design process: How and why to fake it , 1986, IEEE Transactions on Software Engineering.

[22]  Philippe Kruchten,et al.  Wishes and Boundaries for a Software Architecture Knowledge Community , 2008, Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008).

[23]  Paul Dourish,et al.  Awareness and coordination in shared workspaces , 1992, CSCW '92.

[24]  Kjeld Schmidt,et al.  The Problem with `Awareness': Introductory Remarks on `Awareness in CSCW' , 2002, Computer Supported Cooperative Work (CSCW).

[25]  Christian Heath,et al.  Documents and professional practice: “bad” organisational reasons for “good” clinical records , 1996, CSCW '96.

[26]  Carlo Montangero Proceedings of the 5th European Workshop on Software Process Technology , 1996 .

[27]  Sagar Naik,et al.  Software Testing and Quality Assurance , 2007 .

[28]  Paul Clements,et al.  Models for Evaluating and Improving Architecture Competence , 2008 .

[29]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[30]  Rob Procter,et al.  Supporting informality: team working and integrated care records , 2004, CSCW.

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

[32]  E. Burton Swanson,et al.  Problems in application software maintenance , 1981, CACM.

[33]  Daniel M. German,et al.  On the use of visualization to support awareness of human activities in software development: a survey and a framework , 2005, SoftVis '05.

[34]  M. Fowler Improving the Design of Existing Code , 2000 .

[35]  David Garlan,et al.  Acme: an architecture description interchange language , 2010, CASCON.

[36]  Patrick Donohoe Software Architecture, TC2 First Working IFIP Conference on Software Architecture (WICSA1), 22-24 February 1999, San Antonio, Texas, USA , 1999, WICSA.

[37]  Jos Nijhuis,et al.  Design Decisions: The Bridge between Rationale and Architecture , 2006 .

[38]  Jeanette Eriksson,et al.  Supporting the Cooperative Design Process of End-User Tailoring , 2008 .

[39]  Hataichanok Unphon Making use of architecture throughout the software life cycle - How the build hierarchy can facilitate product line development , 2009, 2009 ICSE Workshop on Sharing and Reusing Architectural Knowledge.

[40]  Uwe Zdun,et al.  Using Patterns to Capture Architectural Decisions , 2007, IEEE Software.

[41]  Deborah K. Padgett,et al.  Qualitative Methods in Social Work Research , 2008 .

[42]  Jonathan P. Bowen,et al.  High-Integrity System Specification and Design , 1999 .

[43]  I. Nonaka,et al.  The Knowledge Creating Company , 2008 .

[44]  Yvonne Dittrich,et al.  Taking care of cooperation when evolving socially embedded systems: The PloneMeeting case , 2009, 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering.

[45]  Reidar Conradi,et al.  A Survey of Case Studies of the Use of Knowledge Management in Software Engineering , 2002, Int. J. Softw. Eng. Knowl. Eng..

[46]  Tim Weilkiens,et al.  Systems engineering with SysML / UML - modeling, analysis, design , 2007 .

[47]  John Leaney,et al.  The ABACUS architectural approach to computer-based system and enterprise evolution , 2005, 12th IEEE International Conference and Workshops on the Engineering of Computer-Based Systems (ECBS'05).

[48]  Carl Gutwin,et al.  A Descriptive Framework of Workspace Awareness for Real-Time Groupware , 2002, Computer Supported Cooperative Work (CSCW).

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

[50]  A. Strauss,et al.  The discovery of grounded theory: strategies for qualitative research aldine de gruyter , 1968 .

[51]  Jan Bosch,et al.  Software Architecture as a Set of Architectural Design Decisions , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[52]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[53]  Nour Ali,et al.  ShyWiki-A spatial hypertext wiki , 2008, Int. Sym. Wikis.

[54]  Rik Farenhorst,et al.  Architectural Knowledge Management: Supporting Architects and Auditors , 2009 .

[55]  Richard N. Taylor,et al.  A language and environment for architecture-based software development and evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[56]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[57]  Rebecca E. Grinter Recomposition: Coordinating a Web of Software Dependencies , 2003, Computer Supported Cooperative Work (CSCW).

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

[59]  Martin Fowler Design - Who needs an architect? , 2003, IEEE Software.

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

[61]  Dewayne E. Perry,et al.  Software Evolution and Feedback: Theory and Practice , 2006 .

[62]  Paul Dourish,et al.  Seeking the source: software source code as a social and technical artifact , 2005, GROUP.

[63]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

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

[65]  Rebecca E. Grinter Systems architecture: product designing and social engineering , 1999 .

[66]  David C. Luckham,et al.  An Event-Based Architecture Definition Language , 1995, IEEE Trans. Software Eng..

[67]  David C. Luckham,et al.  Rapide: A language and toolset for simulation of distributed systems by partial orderings of events , 1997, Partial Order Methods in Verification.

[68]  Elihu M. Gerson,et al.  Analyzing due process in the workplace , 1986, COCS '86.

[69]  David Lorge Parnas,et al.  On a 'Buzzword': Hierarchical Structure , 2001, IFIP Congress.

[70]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[71]  Frederick P. Brooks,et al.  Automatic data processing : system/360 edition , 1969 .

[72]  Morten T. Hansen,et al.  What's your strategy for managing knowledge? , 1999, Harvard business review.

[73]  Yvonne Dittrich,et al.  Organisation matters: how the organisation of software development influences the development of product line architecture , 2008, ICSE 2008.

[74]  Stephen R. Schach,et al.  Determining the Distribution of Maintenance Categories: Survey versus Measurement , 2003, Empirical Software Engineering.

[75]  E. B. Swanson,et al.  Software maintenance management , 1980 .

[76]  Amnon H. Eden,et al.  LePUS3: An Object-Oriented Design Description Language , 2008, Diagrams.

[77]  Mike Bauer,et al.  Proceedings of the 2001 conference of the Centre for Advanced Studies on Collaborative Research, November 5-7, 2001, Toronto, Ontario, Canada , 2001, CASCON.

[78]  Yvonne Dittrich,et al.  How agile are industrial software development practices? , 2006, J. Syst. Softw..

[79]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..

[80]  Peter Naur,et al.  Programming as theory building , 1985 .

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

[82]  Michael W. Godfrey,et al.  Architectural repair of open source software , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[83]  Steve Vestal,et al.  The SAE Architecture Analysis & Design Language (AADL) a standard for engineering performance critical systems , 2006, 2006 IEEE Conference on Computer Aided Control System Design, 2006 IEEE International Conference on Control Applications, 2006 IEEE International Symposium on Intelligent Control.

[84]  Daniela E. Damian,et al.  Awareness in the Wild: Why Communication Breakdowns Occur , 2007, International Conference on Global Software Engineering (ICGSE 2007).

[85]  Colin Robson,et al.  Real World Research: A Resource for Social Scientists and Practitioner-Researchers , 1993 .