Designing Software Architectures as a Composition of Specializations of Knowledge Domains Mehmet Aksit 1 , Francesco Marcelloni 2 , Bedir Tekinerdogan 1 , Charles Vuijst 1 and Lodewijk Bergmans 1, 3 1 TRESE Project, Department of Computer Science, University of Twente, P.O. Box 217, 7500 AE Enschede, The Netherlands. email: {aksit | bergmans | bedir }@cs.utwente.nl www server: http://wwwtrese.cs.utwente.nl 2 Department of Information Engineering, University of Pisa, Via Diotisalvi, 2-56126, Pisa, Italy. email: france@iet.unipi.it 3 STEX bv, D.Dijkhuisstraat 248, 7558 GG, Hengelo, The Netherlands Abstract This paper summarizes our experimental research and software development activities in designing robust, adaptable and reusable software architectures. Several years ago, based on our previous experiences in object-oriented software development, we made the following assumption: ‘A software architecture should be a composition of specializations of knowledge domains’. To verify this assumption we carried out three pilot projects. In addition to the application of some popular domain analysis techniques such as use cases, we identified the invariant compositional structures of the software architectures and the related knowledge domains. Knowledge domains define the boundaries of the adaptability and reusability capabilities of software systems. Next, knowledge domains were mapped to object-oriented concepts. We experienced that some aspects of knowledge could not be directly modeled in terms of object-oriented concepts. In this paper we describe our approach, the pilot projects, the experienced problems and the adopted solutions for realizing the software architectures. We conclude the paper with the lessons that we learned from this experience. Paper category: Experience paper Keywords: Software architecture, software engineering practices Correspondence address: Mehmet Aksit, TRESE Project, Department of Computer Science, University of Twente, P.O. Box 217, 7500 AE Enschede, The Netherlands.