Software Architecture and Design

2014 (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.

Date Lecture Material
19.2.2014 Introduction
21.2.2014 Definitions Architects and Architecture, Principal Decisions, Drift/Erosion, Prescriptive/Descriptive, Hoisting, Presumptive/Reference, Solution/Product, M-Architecture, T-Architecture
26-28.2.2014 Architectural Styles Layered, Component-based, Service-oriented, Plugin, Pipe and Filter, Blackboard, Event-Driven, Publish/Subscribe, Client/Server, Peer to peer, Data-centric, Virtual Machine, Rule Based, Mobile Code, REST, Rails
5.3.2014 Software Components Components, Reusability, Composition, Infrastructure vs. Application-Specific Components, Components and Distributed Deployment, Components vs. Objects, Components vs. Services
7.3.2014 Component Interfaces Required and Provided Interfaces, Information Hiding, API Design Principles and Tradeoffs
12.3.2014 Component Interfaces - API Evolution API Examples, API Evolution, Adapters and Wrappers
14.3.2014 Software Connectors Connector vs. Components, Connector Roles and Cardinality, Connector Examples: RPC, Stream, Database, Disruptor, Message Bus, File Transfer, Linkage, Tuple Space, Web
21.3.2014 Software Modeling Modeling: Abstraction and Problem Solving Tool, Model Quality: Ambiguity, Accuracy, Precision, Model-Driven-Architecture, Canonical Models: Domain, Design (Boundary/Internals) and Code
26.3.2014 Software Modeling (Part 2) Examples of Domain and Design Models, Architectural Views, 4+1: Use Case Scenarios, Logical View, Process View, Development View and Physical View
26.3.2014 Architectural Patterns Layered: State-Logic-Display, Model-View-Controller, Model-Presenter-View; Components: Interoperability, Directory, Dependency Injection; Events: Event Monitor, Observer, Publish/Subscribe, Messaging Bridge, Half-Synch/Half-Asynch; Composition: Scatter/Gather, Canary Call, Master/Slave, Load Balancing, Synchronous/Asynchronous Composition
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