Arquitetura e Desenho de Software
Áreas Científicas |
Classificação |
Área Científica |
CNAEF |
Ciências informáticas |
Ocorrência: 2020/2021 - 1S
Ciclos de Estudo/Cursos
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
ENQUADRAMENTO À medida que os sistemas de software aumentam de dimensão e de complexidade torna-se cada vez mais importante compreendê-los a níveis de abstracção mais elevados. A arquitectura de um sistema de software descreve a sua estrutura global em termos dos seus componentes, das propriedades externas desses componentes e das suas interrelações. Para sistemas de média e grande dimensão a escolha adequada da arquitectura assume uma importância crucial para o sucesso do seu desenvolvimento.
OBJETIVOS ESPECÍFICOS A disciplina de Arquitecturas de Sistemas de Software tem como objectivo principal introduzir os conceitos de arquitecturas de software, padrões de desenho e tópicos directamente relacionados, tais como o de componentes de software. Pretende ensinar a desenhar, compreender e avaliar arquitecturas de sistemas de software, tanto ao nível de abstracção de macro-arquitectura como de micro-arquitectura e assim familiarizar os alunos com os conceitos fundamentais de arquitectura de software, as propriedades e aplicabilidade dos diferentes estilos de arquitectura existentes, os padrões de desenho mais populares, componentes de software, arquitecturas reutilizáveis e as relações destes conceitos todos com a reutilização de software.
DISTRIBUIÇÃO PERCENTUAL Componente Científica: 50% Componente Tecnológica 50%.
Resultados de aprendizagem e competências
No final da disciplina os alunos deverão ser capazes de:
• Reconhecer os principais estilos de arquitectura existentes para sistemas de software.
• Descrever uma arquitectura de forma precisa.
• Idealizar diferentes arquitecturas alternativas para resolver um mesmo problema e avaliar de forma justificada qual a melhor, quer em termos de desenho, quer em termos de reutilização.
• Reconhecer e compreender diversos padrões de desenho.
• Conhecer e aplicar diversos métodos e técnicas de reutilização de software.
• Construir um sistema de software de média dimensão de acordo com uma especificação de requisitos e uma especificação de arquitectura, seleccionando e aplicando padrões de desenho e utilizando um método de desenvolvimento baseado em componentes.
• Utilizar definições e ferramentas de desenvolvimento existentes para tornar mais expedita a realização das tarefas anteriores.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
Os alunos devem ter conhecimentos e experiência anterior em desenvolvimento de software, programação orientada por objectos, e engenharia de software.
Programa
Introdução• Desenho de software: conceitos, princípios e abordagens fundamentais.
• O que é arquitectura de software?
• A importância da arquitectura de software.
Estilos de Arquitectura• Os principais estilos arquitecturais
• Exemplos de estilos de arquitetura: pipes and filters, data abstraction, object-orientation, event-based systems, layered systems, repositories, interpreters, process-control systems.
Padrões de Software• As origens dos padrões de software
• Tipos de padrões de software: padrões de arquitectura, padrões de desenho, estruturas idiomáticas.
• Exemplos de Padrões de Arquitectura: POSA patterns.
• Exemplos de Padrões de Desenho: GoF patterns.
Desenho orientado a Objetos• Os princípios SOLID
• Code Smells
• Refatoração e Refatoração para Padrões
• Tópicos avançados de orientação a objetos
Bibliografia Obrigatória
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
Bibliografia Complementar
Bass Len;
Software Architecture in Practice. ISBN: 0-201-19930-0
Martin Fowler;
Refactoring. ISBN: 0-201-48567-2
Métodos de ensino e atividades de aprendizagem
As aulas terão uma componente teórica, utilizada tanto para a exposição formal dos principais conhecimentos da disciplina como para a apresentação final e discussão dos projectos desenvolvidos pelos alunos ao longo do semestre. Por forma a focar a atenção dos alunos nos tópicos principais, serão propostas pequenas questões de resposta facultativa e livre sobre os tópicos em estudo para desenvolvimento fora de aulas. Ao longo do semestre os alunos terão oportunidade de colocar em prática os conhecimentos transmitidos através de pequenos exercícios e desenvolvimento incremental de um projecto de média dimensão. As questões, os exercícios e o projecto conjuntamente incentivarão os alunos a complementar os conhecimentos transmitidos com outros conhecimentos resultantes de pesquisas individuais efectuadas sobre os conteúdos da disciplina.
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
40,00 |
Participação presencial |
10,00 |
Trabalho prático ou de projeto |
50,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
30,00 |
Frequência das aulas |
36,00 |
Trabalho laboratorial |
90,00 |
Total: |
156,00 |
Obtenção de frequência
Não exceder os limites de faltas e participar ativamente nos trabalhos práticos que estarão sujeitos a avaliação.
Os alunos dispensados das regras de frequência devem, em períodos de tempo definidos com o professor, apresentar a evolução dos seus trabalhos e participar nas sessões finais das apresentações como alunos regulares.
Fórmula de cálculo da classificação final
Avaliação Distribuída = Projecto * 0.5 + Participação Individual * 0.1
Avaliação Final = Avaliação Distribuída * 0.60 + Exame * 0.40
Todas as componentes têm uma classificação mínima de 40%.