Software Architectures
|
Lecturer:
|
Hans-Werner Sehring |
|
Duration:
|
2 h lectures per week + 1 h Tutorial (lab class) |
|
ECTS Credits:
|
-- |
|
Periodicity:
|
every summer semester |
|
Certificate:
|
Written exam at the end of the semester |
|
Deutsche Fassung |
| 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.
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.
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, Visual-Basic, Java, C++, Modula-3, ...) 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 |
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 a software architecture?
- Programming Idioms
- Design Patterns
- Architectural Patterns
2. Case Study: Object Oriented Analysis, Design and Implementation
3. Pipes and Filter Architectures
4. Event-Based Architectures
5. Layered Architectures / Database Architectures
6. Frameworks
7. Component Architectures
-
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.
-
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
descirbed in this book will be covered in this course. Strongly recommended.
-
Erich Gamma et al:
Design patterns, elements of reusable object-oriented software.
Addison-Wesley, 1996. (also availabe in German)
In-depth coverage of design patterns and object-oriented programming idioms.
-
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.
-
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.