Software architecture is concerned with improving the fundamental design decisions for large-scale software systems. A software architecture model represents a software system on a high level of abstraction without details of the source code. Multiple views of such a model capture different concerns of a software system. Software components and connectors provide a view on the static structure of a system. Control and data flow diagrams help to understand the dynamic structure of a system during runtime. Based on the experience with many software systems, many architectural styles and patterns for well-structured software systems and architectural tactics for improving extra-functional properties, such performance, reliability, maintainability, security or usability, have been documented.
Introductory papers:
- D. Perry and A. Wolf: Foundations for the study of software architecture (1992)
- N. Medvidovic et al.: A classification and comparison framework for software architecture description languages (2000)
- L. Dobrica et al.: A survey on software architecture analysis methods (2002)
- P. Kruchten et al.: The past, present, and future for software architecture (2006)
Selected contributions with my participation:
- Evolving Industrial Software Architectures into a Software Product Line: A Case Study
(QoSA-Paper, 2009, LNCS) - Towards an architectural style for multi-tenant software applications
(SE-Paper, 2010, LNI) - Sustainability evaluation of software architectures: A systematic review
(QoSA-Paper, 2011, ACM)

