Go to:
Logótipo
You are here: Start > MESW0003

Software Architecture and Design

Code: MESW0003     Acronym: ADS

Keywords
Classification Keyword
CNAEF Informatics Sciences

Instance: 2020/2021 - 1S Ícone do Moodle

Active? Yes
Web Page: https://moodle.up.pt/course/view.php?id=2146
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Master in Software Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
MESW 19 Syllabus since 2016/17 1 - 6 42 162

Teaching language

Suitable for English-speaking students

Objectives

BACKGROUND 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.

SPECIFIC AIMS 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.

PERCENTAGE DISTRIBUTION Scientific component: 50% Technologic componente: 50.

Learning outcomes and competences

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

• Recognize the main architecture styles existent for software systems.
• Make a precise description of an architecture.
• Idealize different alternative architectures to solve the same problem and evaluate (justifying) which is the best one in terms of design and reuse.
• Recognize and understand several design patterns.
• Understand and apply several methods and techniques of software reuse.
• Build a medium-dimension software system following a requirement and architecture specification, selecting and applying design patterns and using a component-based development method.
• Use development definitions and tools to make the previous tasks more efficient.

Working method

Presencial

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.

Program

Introduction
• Software design: fundamental concepts, principles and approaches.
• What is software architecture?
• The importance of software architecture.

Architecture Styles
• The main architectural styles
• Examples of architecture styles: pipes and filters, data abstraction, object-orientation, event-based systems, layered systems, repositories, interpreters, process-control systems.

Software Patterns
• The origins of software patterns
• Types of software patterns: architectural patterns, design patterns, idiomatic structures.
• Examples of Architecture Patterns: POSA patterns.
• Examples of Design Patterns: GoF patterns.

Object-Oriented Design
• The SOLID Principles
• Code smells
• Refactoring and Refactoring to Patterns
• Advanced Object Orientation Topics

Mandatory literature

Gamma Erich 070; Design patterns. ISBN: 0-201-63361-2
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal; Pattern-Oriented Software Architecture Volume 1: A System of Patterns, Wiley, 1996. ISBN: 978-0471958697

Complementary Bibliography

Bass Len; Software Architecture in Practice. ISBN: 0-201-19930-0
Martin Fowler; Refactoring. ISBN: 0-201-48567-2

Teaching methods and learning activities

The classes will have a theoretical component that will provide formal exposition of contents and final presentation and discussion of the projects developed by the students during the semester. As to focus the students’ attention on the main topics, little questions on those topics will be developed out of classes. During the semester, the students will have the chance to put the knowledge transmitted in practice by doing short exercises and incremental development of a medium-dimension project. The questions, exercises and project will encourage the students to complement the knowledge transmitted with other resultant of the individual research done on the course contents.

Evaluation Type

Distributed evaluation with final exam

Assessment Components

Designation Weight (%)
Exame 40,00
Participação presencial 10,00
Trabalho prático ou de projeto 50,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Estudo autónomo 30,00
Frequência das aulas 36,00
Trabalho laboratorial 90,00
Total: 156,00

Eligibility for exams

Not exceed the absence limits and actively participate in the practical works that will be subject to evaluation. 

Students dispensed from attendance rules must, in time periods defined with teachers, present the evolution of their works, and participate in the final presentations sessions as the regular students. 

Calculation formula of final grade

Distributed Evaluation= Assignment * 0.5 + Individual Participation * 0.1
Final Evaluation = Distributed Evaluation * 0.60 + Exam * 0.40

All components have a minimum grade of 40%.
Recommend this page Top
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2024-11-08 at 22:04:28 | Acceptable Use Policy | Data Protection Policy | Complaint Portal