|
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.
- What is Software Architecture?
- Revisiting Object-Oriented
Analysis, Design, and Implementation
- Design Patterns
- Pipes&Filters Architectures
- Event-based Architectures
- Layered Architectures
- Frameworks
- Component Architectures
- Software
Components
- Client-Side
Component Architecture
- Foundation
for Server-Side Component Architecture
- 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.
|