Contact People Projects Teaching Papers Intranet

Software Architectures

Lecturer: Hans-Werner Sehring, Miguel Garcia (Lab class)
Duration: 2 h lectures per week + 1 h tutorial
Location & Time: Lecture: HS20 206, Monday 11:15 - 12:45
Lab class: HS20 214, Tuesday 11:45 - 12:45
Exceptions: 2005-05-16 Pentecost
2005-05-30/31 swapped lecture and lab class
Periodicity: Every summer semester
Certificate: Written exam at the end of the semester
Exam: SBS 95 Audimax I, August 10th, 15:00
Question time: Monday August 8th, 11:00, HS 20, 206

Exam Preparation

We expect all participants to

  • understand and be able to describe the different architectures that were explained in the lecture
  • understand the architectural patterns, design patterns and programming idioms explained in the lecture
  • be able to read and to draw UML diagrams
  • understand OOAD in general
  • be able to understand and complete given Java code

Please note that this list is not complete.

The exercises will greatly help.

Here are some sample questions to give you an idea of what the questions in the exam would be like.

Background and Motivation

Software developers have often adopted specific architectural patterns for system organization - but, for the most part, informally. This lecture presents the state of the art in software architectures as an engineering discipline. The focus is on practical and proven models, styles and methods presented from an object-oriented perspective.

Goals

The primary objective of this course is to teach students how to approach software systems from an architectural point of view. By the end of the course, students should be able to

  • recognize major architectural styles in existing software systems,
  • decribe an architecture accurately,
  • generate reasonable architetural alternatives for a problem and choose among them,
  • evaluate commercial  tools and software components from an architectural perspective,
  • use object-orientend models and tools to expedite such tasks.
Prerequisites

Students attending this lecture are expected to have the following background in computer science.

The links above point to lecture material which may help students to brush up their knowledge in these areas.

Practical programming skills in at least one high-level programming language (Pascal, Modula, C++, Java, ...) are indispensable to make practical use of the concepts and techniques presented in the lecture in subsequent studies or on the job. The computing center of the TUHH provides training services during the semester and the semester break which are also open to students to acquire such basic skills.

You may want to use our small self-assessment test to check, whether you need to brush up your knowledge. After you solved the test, you may compare your results with our solutions.

Position in the Curriculum

Contents

In those places of the lecture where concrete code examples are needed, the object-oriented language Java will be used. However, most of the material presented in this course is language-independent.

  1. What is Software Architecture?
  2. Revisiting Object-Oriented Analysis, Design, and Implementation
  3. Design Patterns
  4. Pipes&Filters Architectures
  5. Event-based Architectures
  6. Layered Architectures
  7. Frameworks
  8. Component Architectures
    1. Software Components
    2. Client-Side Component Architecture
    3. Foundation for Server-Side Component Architecture
    4. Server-Side Component Architecture

Exercises

The exercises can be found in the Exercises directory. The solutions can be found in the solutions directory.

The above exercises should help students to digest and to understand the material presented in the lecture. Similar problem sets will be used in the final written exam which is the basis for the certificate.

Solutions must compile or a detailed description of the reason why the sources cannot compile has to be given.

The solutions should be sent electronically to miguel.garcia@tuhh.de.

We suggest to have a valid WebMail-Account to send the solutions from the lab class computers.

Lab class groups

Groups will be set up in the lab class.

Recommended Literature

  • Mary Shaw, David Garlan: Software architecture, perspectives on an emerging discipline. Prentice-Hall, 1996.
    Chapter 1, 2, 3, 4, and 7 are highly relevant for this lecture. This text provides an excellent treatment of software architectures as an engineering discipline. Strongly recommended.
  • Michael Jackson: Software Requirements & Specifications: A lexicon of practice, principles, and prejudices, Reading, MA: Addison-Wesley, 1995.
  • Erich Gamma et al: Design patterns, elements of reusable object-oriented software. Addison-Wesley, 1995. (also available in German)
    In-depth coverage of design patterns and object-oriented programming idioms. Strongly recommended.
  • John Vlissides: Pattern Hatching: Design Patterns Applied, Addison-Wesley (Software Patterns Series), 1998. Very good book on application of Design Patterns (Gamma et al.). Also quite funny.
  • Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-oriented software architecture. A system of patterns, John Wiley&Sons, 1996.
    Several of the architectural patterns, design patterns and programming idioms described in this book will be covered in this course. Strongly recommended.
  • Douglas Lea: Concurrent Programming in Java: Design Principles and Patterns, Addison Wesley, Nov 1999.
  • Martin Fowler, Kendall Scott: UML Distilled, Addison-Wesley, 1997.
    Concise introduction to the UML notation used throughout this course. 15 copies available in the TUHH library.
  • Craig Larman: Applying UML and Patterns, Prentice Hall, 1997.
    This book may be helpful for students that look for larger examples of UML designs. Poor coverage of patterns.
  • Frank Griffel: Componentware: Konzepte und Techniken eines Softwareparadigmas, 1998.
  • Tanenbaum, Steen: Verteilte Systeme, 2003.

Additional Literature

  • Ivar Jacobson, Martin Griss, Patrick Jonsson, Patrik: Software Reuse. Architecture, Process and Organization for Business Success. Addison-Wesley, 1997.
    An organizational perspective on issues related to software architectures.
  • Ian Sommerville: Software Engineering, Addison-Wesley 1995 (5th ed.).
    A textbook on software engineering fundamentals.
  • Helmut Balzert: Lehrbuch der Software-Technik. Band I, Software-Entwicklung, Spektrum-Verlag, 1997.
    A modern textbook and handbook on software-engineering.
  • James Gosling: The Java Language Specification, Addison-Wesley, 1997.
    The authorative answer to all questions relating to Java as a language.
  • Michael L. Brodie, Michael Stonebraker: Migrating Legacy Systems. Morgan-Kaufmann, 1995.
    One of the few books covering architectural aspects of the migration of large corporate software systems to meet new organizational requirements.
STS 2005-04-01 Hans-Werner Sehring