– First published in the Proceedings of the 6th IBIMA Conference on Managing Information in the Digital Economy, June 19-21, 2006, Bonn, Germany – Success and Failure Factors for Software Architecture Niina Hämäläinen, University of Jyväskylä, Jyväskylä, Finland, niina.hamalainen@titu.jyu.fi Jouni Markkula, University of Jyväskylä, Jyväskylä, Finland, jouni.markkula@titu.jyu.fi Tanja Ylimäki, University of Jyväskylä, Jyväskylä, Finland, tanja.ylimaki@titu.jyu.fi Markku Sakkinen, University of Jyväskylä, Jyväskylä, Finland, sakkinen@cs.jyu.fi Abstract This paper provides a view of the software architecture development and management process. It reviews the literature and practitioners’ experiences relating to the factors that cause success and failure for software architecture and classifies these factors into subgroups. This study demonstrates that the success of software architecture depends on multiple factors. Project management, organisational culture and communication, the skills of architects and architectural know-how, architecture methods and practices, the quality of system requirements and, finally, architecture solutions seem to affect the achievement of successful architecture. 1. Introduction Currently, a concern of many ICT-service providers and user organisations in their system development work is software architecture. Another central issue in this development work is the quality of the system. Software architecture is a critical factor in the design and construction of any complex software-intensive systems. Software architecture has an impact on the quality of the system. On one hand, a good architecture can help ensure that a system will satisfy key requirements in such areas as performance, reliability, portability, scalability, and interoperability [10]. On the other hand, a bad architecture can be disastrous. It may prevent the achievement of goals that are set for the system. Architecture evaluation is a way to increase the understanding of the quality of architecture. A variety of methods is being developed for the evaluation of software architectures. Evaluation methods developed during the last decade are, for example, SAAM [15], ATAM [16], ARID [8] and ALMA [4]. Evaluation objectives, criteria, as well as evaluation targets, examined by the software architecture evaluation methods, differ markedly. Evaluation objectives and use cases are discussed in some method comparisons (e.g. [2, 9]) and other studies (e.g. [13]). In spite of this discussion in various papers, evaluation criteria and metrics are presently neither established nor detailed yet. Nevertheless several evaluation criteria and metrics descriptions exist. Software architecture evaluation criteria are discussed for example by Hilliard et al. [11, 12] and Losavio et al. [18, 19]. One reason for the non-establishment of architecture evaluation criteria and metrics may be that common views on what is successful software architecture and what factors have an effect on achieving it do not exist. It is not clear what targets and factors should be evaluated and measured. However, successful architecture is a widely used concept. Academia and practitioners have come to realize that a critical success factor for system design and development is finding a successful architecture. Although the idea of a successful architecture is not clearly defined, practitioners and academia have become increasingly interested in what makes software architectures succeed or fail. The identified success and failure factors help system development managers and architects make a number of critical decisions. These decisions relate, for example, to the selection of evaluation criteria and metrics for the quality assessment of architectures and architecture management processes. It is generally known that the success of software architecture is typically influenced by factors at various levels. However, these factors are mainly discussed only in a few studies and reports organised and produced by some research institutes and the ICT industry (e.g. [21], [1], [5]). Thus, these factors are, as yet, far from having been fully investigated in detail. Our study contributes to this field with an identification and analysis of success and failure factors of software architecture. Our research involved reviewing the relevant literature and practitioners’ experiences on factors that cause the success or failure of software architecture efforts. The factors listed in the following section were distilled from various articles and empirical research on software architecture implementation. Moreover, in order to collect empirical data for the present study, we organised an interview for a focus group of practitioners from three ICT service provider and user organisations. Success and failure factors were then categorised into a number of subgroups representing various dimensions of change related to the development and management of software architecture. As a result, this study presents a number of factors related to software architecture success and failure. This study consists of the following sections. Firstly, section 2 presents the research method used in this study. Secondly, sections 3 and 4 present the results of this study: success and failure factors for software architecture. Finally, section 5 summarizes the findings and presents areas for further examination.