Software Architecture and Design

2013 (Spring Semester)


This class teaches the students to structure complex software systems using components and to keep track of the rationale behind their design. Architecture is not only necessary as the global blueprint to guide the design and manage the complexity of large software systems, but should also be seen as the focus of the main design decisions influencing the properties (modularity, maintainability, extensibility, portability, interoperability, reuse, performance) of the resulting system.


Introduction and Motivation: Why Software Architecture?; System Decomposition vs. Software Composition; Design Principles: Simplicity, Abstraction, Separation of Concerns, Encapsulation, Information Hiding; Patterns and Anti- Patterns: Avoiding Common Design Mistakes; Component Models and Composition Techniques; Architectural Views: Logical, Physical, Process, Development; Architectural Styles: Monolithic, Layered, Client/Server, REST, Serviceoriented, Peer-to-Peer, Event-driven, Data-centric, Pipes/Filters, Space based, Plugin; Architectural Description Languages; Architectural Decision Modeling; API Design Techniques.

Teaching mode

Two lectures per week. Attendance is mandatory.


R. N. Taylor, N. Medvidovic, E. M. Dashofy, Software Architecture: Foundations, Theory, and Practice, Wiley, January 2009.
G. Fairbanks, Just Enough Software Architecture: A Risk-Driven Approach, Marshall & Brainerd, August 2010.

Mary Shaw and David Garlan, Software Architecture: Pespectives on an Emerging Discipline, Prentice-Hall, 1996
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal Pattern Oriented Software Architecture: A System of Patterns, Wiley, 1996
William Brown, Raphael Malveau, Hays McCormick, Thomas Mowbray, Anti Patterns: Refactoring Software, Architectures, and Projects in Crisis, Wiley, 1992
Clemens Szyperski, Component Software: Beyond Object-Oriented Programming, 2nd Edition, Addison-Wesley, 2002
Len Bass, Paul Clements, Rick Kazman, Ken Bass, Software Architecture in Practice, 2nd Edition, Addison-Wesley, 2003
Martin Fowler, Patterns of Enterprise Application Architecture, Addison Wesley, 2002
Luke Hohmann, Beyond Software Architecture: Creating and Sustaining Winning Solutions, Addison-Wesley, 2003
Ian Gorton, Essential Software Architecture, Springer 2006