Go to:
You are here: Start > M.EIC010

Software Systems Architecture

Code: M.EIC010     Acronym: ASSO

Classification Keyword
OFICIAL Software Engineering

Instance: 2021/2022 - 2S Ícone do Moodle Ícone  do Teams

Active? Yes
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Master in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
M.EIC 50 Syllabus 1 - 6 39 162

Teaching Staff - Responsibilities

Teacher Responsibility
Ademar Manuel Teixeira de Aguiar
Filipe Alexandre Pais de Figueiredo Correia

Teaching - Hours

Recitations: 3,00
Type Teacher Classes Hour
Recitations Totals 2 6,00
Ademar Manuel Teixeira de Aguiar 3,00
Filipe Alexandre Pais de Figueiredo Correia 3,00
Mais informaçõesLast updated on 2021-07-30.

Fields changed: Learning outcomes and competences, Bibliografia Obrigatória, Programa

Teaching language

Suitable for English-speaking students


As the dimension and complexity of software systems grows, it becomes more important to understand them at more advanced abstraction levels. The architecture of a software system describes the global structure in terms of its components, external proprieties and its interrelations. For medium and big-dimension systems, to chose the right architecture becomes crucial to the success of its development.

This course aims to introduce the concepts of software architectures, design patterns and topics directly related, such as the software components’ one. Furthermore, it aims to teach how to design, understand and evaluate software systems architectures both at the level of abstraction of macro-architecture and micro-architecture. All this to familiarize the students with the fundamental concepts of software architecture, the proprieties and applicability of the different architecture styles, the most popular design patterns, software components, reusable architectures and the relations of all these concepts with the software reuse.

Learning outcomes and competences

At the end of the year, the students must be able to:

• Recognize the main existing architectural patterns for software systems.
• Describe an architecture accurately.
• Design different alternative architectures to solve the same problem and evaluate (justifying) which one is best for the quality attributes that each supports.
• Recognize and understand several design patterns.
• Understand and apply several methods and techniques of software reuse.
• Identify the key factors in designing evolvable software architectures.
• Design a migration plan between different types of architecture.
• Build a medium-sized software system following a requirements specification by selecting and applying design and architectural patterns and using component-based development and recent technologies.
• Use tools that can make development tasks more efficient.

Working method


Pre-requirements (prior knowledge) and co-requirements (common knowledge)

The students should have previous knowledge and experience on software development, object-oriented programming and software engineering.



• Software Design: fundamental concepts and principles
• What is the software architecture?
• Software architecture’s importance
• Design at multiple levels, from macro to micro: architectural styles and architectural patterns, drawing patterns and idiomatic structures

Software Patterns

• Software patterns’ origins
• Examples of design patterns (GoF)
• Examples of architecture patterns (POSA)
• Refactoring to patterns

Software Architectures

• Quality attributes
• Evaluating architectures: fitness functions
• Designing for quality attributes: tactics
• Representation and documentation of software architectures
• Reuse of software architectures: production lines, frameworks, software components.

Evolutionary Software Architectures

• Conway’s Law
• Incremental change
• Architectural coupling
• Evolutionary data
• Building evolvable architectures
• Architectural refactoring
• Microservices, example of an architecture designed for evolution

Mandatory literature

Erich Gamma... [et al.]; Design patterns. ISBN: 0-201-63361-2
Buschmann, F., Henney, K. & Schmidt, D.C.; Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing, Wiley, 2007. ISBN: 0470059028
Ford, N., Parsons, R. & Kua, P.; Building evolutionary architectures: Support constant change, O'Reilly Media, 2017. ISBN: 1491986360

Complementary Bibliography

Bass, Len; Software Architecture in Practice. ISBN: 0-201-19930-0

Teaching methods and learning activities

Classes will be used for the formal presentation of the main topics of the curricular unit and for the final presentation and discussion of the projects developed by the students throughout the semester. In order to focus students' attention on the main topics, short and optional questions will be proposed on the topics being studied for out-of-class development. Throughout the semester students will have the opportunity to put into practice the knowledge obtained through small exercises and through the incremental development of a medium-sized project. Together, the questions, exercises and project, will encourage students to complement the knowledge transmitted with other resulting from individual research on the contents of the course.

Evaluation Type

Distributed evaluation without final exam

Assessment Components

Designation Weight (%)
Participação presencial 10,00
Teste 30,00
Trabalho escrito 30,00
Trabalho laboratorial 30,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Estudo autónomo 20,00
Frequência das aulas 42,00
Trabalho laboratorial 100,00
Total: 162,00

Eligibility for exams

Obtaining at least 50% of the evaluation in the components test, written work and laboratory work.

Calculation formula of final grade

Final grade = (test x 30%) + (project x 60%) + (individual evaluation x 10%).

Special assessment (TE, DA, ...)

Similar to the ordinary students’ one.

Classification improvement

The final classification can be improved with an improvement exam and/or project evolution.

Recommend this page Top
Copyright 1996-2023 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2023-06-08 at 23:55:51 | Acceptable Use Policy | Data Protection Policy | Complaint Portal