Search for contacts, projects,
courses and publications

Software Architecture


Architecture is not only necessary as the global blueprint to manage the complexity of large software systems, but should also be seen as the focus of the main design decisions influencing the quality attributes (modularity, maintainability, extensibility, portability, interoperability, reuse, performance, scalability, elasticity) of the resulting system. This class teaches the students to structure complex software systems using components and connectors while keeping track of the rationale behind their design decisions. Topics: System Decomposition vs. Software Composition; Design Principles: Simplicity, Abstraction, Separation of Concerns, Encapsulation, Information Hiding; Architectural Styles and Patterns; API Design; Architectural Modeling: 4+1 Architectural Views: Logical, Physical, Process, Development; C5: Context, Container, Component, Classes and Connectors. Architectural Decision Making



  • G. Fairbanks, Just Enough Software Architecture: A Risk-Driven Approach, Marshall & Brainerd, August 2010. (textbook)
  • R. N. Taylor, N. Medvidovic, E. M. Dashofy, Software Architecture: Foundations, Theory, and Practice, Wiley, January 2009 (reference book)
  • Martin Fowler, Patterns of Enterprise Application Architecture, Addison Wesley, 2002
  • Luke Hohmann, Beyond Software Architecture: Creating and Sustaining Winning Solutions, Addison-Wesley, 2003
  • Mary Shaw and David Garlan, Software Architecture: Pespectives on an Emerging Discipline, Prentice-Hall, 1996



Pautasso C.

Course director

Gallidabino A.


Additional information

Academic year
Master of Science in Management and Informatics, Elective course, Lecture, 1st and 2nd year

Master of Science in Software & Data Engineering, Core course, Lecture, 1st year

PhD programme of the Faculty of Informatics, Elective course, Lecture, 1st, 2nd and 3rd year