Architectural Prototyping in Industrial Practice Henrik Bærbak Christensen and Klaus Marius Hansen Department of Computer Science, University of Aarhus Aabogade 34, 8200 ˚ Arhus N, Denmark {hbc,klaus.m.hansen}@daimi.au.dk Abstract. Architectural prototyping is the process of using executable code to investigate stakeholders’ software architecture concerns with re- spect to a system under development. Previous work has established this as a useful and cost-effective way of exploration and learning of the design space of a system, in addressing issues regarding quality attributes, in ad- dressing architectural risks, and in addressing the problem of knowledge transfer and conformance. Little work has been reported so far on the ac- tual industrial use of architectural prototyping. In this paper, we report from an ethnographical study and focus group involving architects from four companies in which we have focused on architectural prototypes. Our findings conclude that architectural prototypes play an important role in resolving problems experimentally, but less so in exploring alter- native solutions. Furthermore, architectural prototypes include end-user or business related functionality rather than purely architectural func- tionality. Based on these observations we provide recommendations for effective industrial architectural prototyping. 1 Introduction In practice, software architecture [21,3] design is a complex design process in which technical requirements (e.g., in the form of functional and quality require- ments or technology platform constraints) needs to be balanced with organiza- tional reality (e.g., stakeholder needs and concerns or organizational constraints). Often this must take place within an iterative and incremental development process where requirements and constraints may change frequently and funda- mentally. The architect has numerous techniques at his disposal that we may categorize as follows: Theoretical techniques. These techniques support software architecture design, evaluation, or implementation through argumentation that tries to convince stakeholders of a specific theory (which could, e.g., be a specific architectural design that tries to resolve specific quality attribute require- ments). Theoretical techniques abound, examples being quality attribute scenarios [3], architectural patterns [4], view-based documentation tech- niques [16], and scenario-based evaluation methods [14]. Experimental techniques. These techniques involve some form of demonstra- tion to stakeholder of software architecture to inform their decision making. R. Morrison, D. Balasubramaniam, and K. Falkner (Eds.): ECSA 2008, LNCS 5292, pp. 196–209, 2008. c Springer-Verlag Berlin Heidelberg 2008