The presence of a solid architectural vision is a key discriminator in the success or failure of a software project. This tutorial examines what software architecture is and what it is not. It discusses and illustrates how to describe architecture through a set of design viewpoints and views and how to express these views in the UML, in the spirit of the new IEEE Standard 1471:2000: recommended practice for architectural description. The tutorial shows how architectures drive the development process and how to capture architectural design patterns using the UML. It is illustrated by several widely applicable architectural patterns in different domains.
Bran Selic; Rational Software, Canada and Wojtek Kozaczynski, Rational Software, USA
1. Introduction (15 minutes)
Here we set the expectations for this tutorial, calibrate the audience, and in general get them in a jolly, receptive mood :-)
2. Architecture defined (20 minutes)
In this section we examine what architecture is and what it is not (which is equally important). We examine parallels with civil architecture and provide a working definition for the term "architecture". We also discuss architecture qualities.
3. Architecture and process (25 minutes)
In this section we examine the relationship of architecture and process and present the implications of an architecture-centric development process. We introduce the key stakeholders involved in the development or use of architecture and introduce architecture models that address their specific architectural concerns.
4. General approach to describing architectures (15 minutes)
In this section we start from presenting the key ideas of the IEEE recommended practice for architectural descriptions. We introduce the concepts of architectural viewpoints and views and discuss their possible representations.
5. Proposed architectural views (1 hour 45 minutes)
In this section we describe in detail a set of proposed architectural views and how they can be represented in UML. We introduce some of the stereotypes and UML extensions used for representing various architectural concepts.
6. Architecting with UML (45 minutes)
In this introduction to the afternoon topics we discuss what are the significant (and often hard) architectural decisions and how they can be communicated in UML. We are also trying to address the fundamental question: Can proven architectural designs be captured and reused? In order to do that, we put architectures in the context of the broader field of patterns and examine how they can be applied.
7. Architectural Patterns of reactive and real-time systems (1 hour)
We examine several patterns of reactive and real-time system, using the real-time extension of UML. Examples are drawn from the patterns developed at ObjecTime by Bran Selic and his group.
8. Architectural Patterns of distributed and internet-based systems (1 hour)
We examine several patterns of distributed and e-business systems. Examples are drawn from the reusable architectural assets developed by Wojtek Kozaczynski and his team to support development of e-business applications.
7. Towards UML 2.0 (15 minutes)
Here we end to the sound of thunderous applause. More realistically, we bring the discussed subject to closure and share our understanding of the directions of UML 2.0 and in particular its support for architecture descriptions.
Basic understanding of the UML is helpful, but not essential. Understanding of and practical experience with a software development process are helpful.
Bran Selic (email@example.com) is a Principal Engineer at Rational Software. He has over 25 years of experience with industrial real-time systems in telecommunications, aerospace, and robotics. He is the principal author of a popular text-book on the use of the object paradigm in real-time applications and was one of the members of the core team responsible for defining the UML standard within the OMG. Most recently he has been working on defining the precise semantics of the UML and also on defining a profile for using the UML in the real-time domain. Mr. Selic has lectured extensively on the latter topic and is a frequent invited speaker at various technical and scientific conferences. He is also a member of the editorial board of several technical publications, and adjunct professor at Carleton University. He is based in Kanata, Ontario.
Dr. Wojtek (Voytek) Kozaczynski
the Director of Architectures & Application Frameworks and has been leading
development of reusable software asset for the e-development Accelerators Group
of Rational. He has over 20 years of industrial and academic experience in
This tutorial was presented at ICSE 2001 in Toronto in May, 2001. It is a further evolution of 2 different tutorials given in several venues by Wojtek Kozaczynski and Philippe Kruchten, most notably at OOPSLA’2000, 1999 and 1998. It brings more recent elements in UML, UML 2.0, UML real-time extension, use of IEEE1471:2000, and recently developed architectural patterns.