Ir para o conteúdo

Material Pedagógico

Conjunto de slides usados na aulas teóricas da UC no ano letivo 2025/2026


Métodos

Ciclo de vida do desenvolvimento
Processo de Desenvolvimento de Software
"Code and fix"
Abordagens Estruturadas
Modelo em Cascata
Desenvolvimento Iterativo e Incremental (RAD e Desenvolvimento faseado)
Abordagens interativas e incrementais – prós e contras
Rational Unified Process
Unified Process – ideias chave
Fases do Unified Process
Os Doze Princípios do Manifesto Ágil
Scrum
Scrum – prós e contras
Vantagens de seguir um processo de desenvolvimento

Modelação do Domínio

Modelos do Domínio (Entidade e Relacionamento)
Porquê modelar?
Algumas notas sobre entidades
Algumas notas sobre relações
UML
Relevância da UML
Modelos vs. Diagramas
UML – Arquitectura 4+1
Algumas notas sobre a notação
Relações entre Entidades
Classes de Associação
Associações n-árias
Primeira etapa do projecto

Use Cases

Requisitos
Tipos de requisitos
Importância dos requisitos
Conflitos entre requisitos
Validação dos requisitos
Exemplo – Sistema do Multibanco
Identificação de requisitos / Casos de Uso
Definição de Casos de Uso – Especificação
Exemplo – Máquina Multibanco
Fluxo normal
Fluxo alternativo
Fluxo de excepção
Melhorar o Use Case
Processo de definição de requisitos (funcionais)
Definição de Use Case
Use Cases – Especificação (Tipos de fluxos)
Diagrama de Use Case – Exemplo
Atores e Associações
Use Cases – ponto situação

Diagramas de Use Case

Exemplo
Que Actores? Que Associações?
Use Cases – ponto situação
Estruturação dos modelos de Use Case
«include»
Usar pré-condições…
«extend»
Generalização/Especialização de Use Cases
Alguns aspectos a ter em atenção…
Resumindo

Diagramas de Actividade

Notação base
Partições
Sinais et al.

Diagramas de Componentes/Interfaces

Arquitectura do Sistema
Componentes
Diagramas de Componentes
Interfaces
Diagramas de Componentes
Casos de uso como conjuntos de transações
Identificação de responsabilidades
Identificação de subsistemas
Componente da lógica de negócio
Primeira versão da arquitectura

Diagramas de Classe + Princípios OO

Revisão do conceito de classe
Representação de classes em UML
Níveis de modelação
Visibilidade/Declaração de atributos e operações
Relações entre classes
Classes e métodos abstractos
Operações e variáveis de classe
Princípios SOLID
Mais notação UML

Diagramas de Sequência

Diagramas de Interacção
Diagramas de Sequência – notação essencial
Mensagens
Diagramas de Sequência – fragmentos combinados
Operadores (opt, alt, break, loop, ref, par, seq, neg, consider)
Restrições de tempo / duração
Princípio SLAP
Distribuição de responsabilidades
Singleton Pattern

OCL

Utilidade dos diagramas Algumas limitações (e onde o OCL ajuda a ultrapassá-las)
Diagramas UML nem sempre são suficientes
Invaviantes, Pré-condições e Pós-condições
Sistema de tipos OCL
Colecções - Operações
Colecções - exemplos
Colecções - iteradores (tipo map)
Colecções - iteradores (tipo reduce)
Colecções - exemplos
Vantagens de utilizar OCL

ORM

Object Relational Mapping – ORM
Paradigma OO vs Relacional
Abordagens ao ORM
Lógica de negócio na Base de dados ?
Persistência ???
Exemplo e Arquitectura parcial
O comportamento e o código
Mapeamento de classes em tabelas
Associações um-para-um
Associações um-para-muitos
Associações muitos-para-muitos
Regras de mapeamento
Arquitectura com vs sem ORM
Código

Diagramas de Package

Diagramas de Package
«import» e «access»
Ponto da situação

Máquinas de Estado

Diagramas de Estado
Maquina de Estados básica
Actividades internas
Estados e estados compostos (super-estados)
Eventos when/after
Transições vs. actividades internas
Transições locais vs. transições externas
Pseudoestado de Escolha
Pseudoestados de História
Resumo da notação
Estados com concorrência…
Pseudoestados fork e join
Estados com concorrência
Pseudoestados Ponto de entrada e Ponto de saída
Protocol State Machines

Diagramas de Instalação de Fecho

Diagramas de Instalação (Deployment)
Notação básica
Instalação e componentes
Diagramas de que não falamos