T46: Software Architecture: Principles, Strategies, Qualities
Thursday, Oct 26, from 08:30 to 12:00
Software Architecture denotes the core asset of a software development project. Every software system is expected to implement some domain-specific functionality and meet different quality properties. For architects the fundamental challenge consists of understanding and clarifying those functional and quality properties as well as injecting them systematically into the software architecture. Unfortunately, we know from various sources that many software development projects fail to meet their goals. First of all, requirements are often unprioritized, not clearly specified, or continuously change during development time. Hence, in practice it is no trivial task to ensure that a software system under development reveals the expected functional and non-functional properties while at the same time keeping the deadlines and the customers satisfied. Surprisingly, there are not many methods or techniques available to address quality properties. Developers and engineers are facing this dilemma in their daily project work and address them often in an ad-hoc manner. That is certainly not the right strategy. What are appropriate means to improve that situation? How should we structure a development project with respect to organization and process aspects? What are the important guiding principles when designing, documenting, understanding and evolving an architecture? What kind of structural and behavioral properties should a software architecture reveal? Are there any methods and tools we should leverage? This tutorial focuses on principles and techniques that are helpful to address functional as well as non-functional aspects. Of course, no tutorial can provide a complete set of principles and strategies that will lead to high-quality architectures in the optimal amount of time. However, it is possible to at least extract some guidance from previous project experiences. In the tutorial principles, practices and strategies extracted from several projects are introduced. Real-world examples will help to introduce some key areas and identify essential solution strategies and principles.
Advanced: Experience in software development projects (analysing a domain, designing an architecture, implementing the system). Knowledge of what patterns are is a prerequisite.
Goals: It is the goal to give attendees guidance how to systematically ensure quality aspects in software architectures. Attendees will learn what the role of a software architect implies to achieve that purpose with respect to process issues, architectural concepts, techniques and principles being used. The tutorial will teach some general guidelines but also give more concrete advice such as the systematic usage of software patterns to define or refine a base line architecture according to functional and quality issues. After attending the tutorial, a software architect should be able to approach software engineering projects in a more systematic way.
Format: Powerpoint Presentation with many Project Examples
Michael Stal, Siemens Corporate Technology: Michael Stal is a Senior Principal Engineer and Team Lead from Siemens Corporate Technology. His research and work areas include Software Architecture and Middleware. He has been involved in big customer projects and is coordinating the Siemens Research program on Software Architecture for Distributed Systems. Michael is co-author of the POSA book series (Pattern-Oriented Software Architecture) as well as of other books and articles on Software Architecture and Software Engineering. He has been appointed Microsoft MVP (Solution Architect). In addition, he is editor-in-chief of the German JavaSPEKTRUM magazine.