1 aula 9 fases do desenvolvimento de software uml
TRANSCRIPT
1
Aula 9
Fases do desenvolvimento de software
UML
2003/2004 Programação Orientada para
Objectos2
Ideia do cliente
2003/2004 Programação Orientada para
Objectos3
Resultado da falta de planeamento
2003/2004 Programação Orientada para
Objectos4
Cuidado!
Tal como não faz sentido que o arquitecto comece o seu trabalho assentando tijolos no edifício final sem antes o ter projectado, também não faz qualquer sentido uma empresa de desenvolvimento de software começar a resolver um problema escrevendo linhas de código
2003/2004 Programação Orientada para
Objectos5
Fases do desenvolvimento de software
Análise Identificação dos conceitos importantes e suas relações Resultado: modelo de análise ou modelo conceptual
Desenho Decisão dos conceitos identificados que serão modelados
através de classes e suas relações Resultado: modelo de desenho
Implementação Implementação do modelo de desenho numa linguagem
de programação Resultado: programa
2003/2004 Programação Orientada para
Objectos6
Processo iterativo
Implementação
Análise
Desenho
2003/2004 Programação Orientada para
Objectos7
Outras fases do processo de desenvolvimento de software
Implementação
Análise
Desenho
Especificação de requisitos
Teste
Implantação
Manutenção
2003/2004 Programação Orientada para
Objectos8
Criatividade
A criatividade é uma qualidade importante no desenvolvimento de software Deve utilizar-se no desenvolvimento da solução Não na forma como a solução é escrita ou
apresentada
2003/2004 Programação Orientada para
Objectos9
Programa
Um programa é um modelo simplificado de parte do mundo
Uma solução só deve ser complexa se não existir uma solução mais simples
2003/2004 Programação Orientada para
Objectos10
UML: Unified Modelling Language
Linguagem gráfica de modelação Grady Booch Ivar Jacobson James Rumbaugh
Diagramas representam modelo simplificado
Ferramenta importante de comunicação
2003/2004 Programação Orientada para
Objectos11
Diagramas em UML
Estáticos: De classes De objectos
Casos de Utilização Sequência Colaboração Estado Actividade Implementação
2003/2004 Programação Orientada para
Objectos12
Diagramas de classes
Representam as classes e as relações que existem entre elas
Vários diagramas é melhor que apenas um: ênfase numa parte do modelo
Domínio do problema: conceitos - modelo de análise Domínio da solução: classes - modelo de desenho
Estáticos: as relações entre as classes não se alteram ao longo da execução do programa
2003/2004 Programação Orientada para
Objectos13
Classes
Empregado
Empregado
Empregado {abstract}
Classe concreta.
Classe abstracta.Classe abstracta.
Língua natural
Nome comum: “humano”
UML
C++
class Humano { // …};
Humano
2003/2004 Programação Orientada para
Objectos14
Características de uma classe
Empregado
- nome_: string- sexo_: Sexo
+ nome(): string+ salário(): double
Empregado
- nome_: string- sexo_: Sexo
Empregado
+ nome(): string+ salário(): double
AtributosAtributos
OperaçõesOperações
Conjunto das operações e dos atributos de uma classe
2003/2004 Programação Orientada para
Objectos15
Características de uma classe
Visibilidade +, características públicas #, características protegidas -, características privadas
2003/2004 Programação Orientada para
Objectos16
Características de uma classe
Forma
…+ desenha()+ nova(inout entrada: ifstream&): Forma*…
Característica com âmbito de classe,
Característica com âmbito de instância.
Em C++:
class Forma { public static Forma* nova(ifstream& entrada);
// …};
2003/2004 Programação Orientada para
Objectos17
Notas, comentários e restrições
Isto é uma nota.
Empregado Classerepresentando empregados…
{Isto é uma restrição.}
Racional
- numerador_: int- denominador_: int
«invariant»
{denominador_ 0 mdc(numerador_, denominador_) = 1}
Notas
Restrições
2003/2004 Programação Orientada para
Objectos18
Operações
Cada linha corresponde a uma operação
nome_de_função(lista_de_parâmetros): tipo_de_devolução
nome_de_procedimento(lista_de_parâmetros)
2003/2004 Programação Orientada para
Objectos19
Operações: parâmetros
tipo_de_passagem nome: tipo
Tipo de passagem in: alterações ao parâmetro feitas pelo método que implementa a
operação não se reflectem no valor do respectivo argumento inout: valor inicial do parâmetro é importante e, além disso,
alterações ao parâmetro feitas pelo método que implementa a operação reflectem-se no valor do respectivo argumento
out: valor inicial não é importante (ou não existe de todo), mas valores atribuídos ao parâmetro pelo método que implementa a operação reflectem-se no valor do respectivo argumento
2003/2004 Programação Orientada para
Objectos20
OperaçõesEmpregado
+ nome(): string {query}+ salário(): double {query}
Forma
«constructor»+ Forma(in posição: Posição)
«query»+ posição(): Posição {isPolymorphic = false}+ desenha()
«update»+ movePara(in posição: Posição)
+ nova(inout entrada: ifstream&): Forma*
- posição_: Posição
Operações inspectoras.
Construtores.
Inspectores.
Modificadores.
2003/2004 Programação Orientada para
Objectos21
Operações: PC e CO
Racional
- numerador_: int- denominador_: int
«precondition»
{denominador 0}
+ Racional(in numerador: int, in denominador: int)…
2003/2004 Programação Orientada para
Objectos22
Métodos
Racional
- numerador_: int- denominador_: int
{ return numerador_;}
…+ numerador(): int {query}…
2003/2004 Programação Orientada para
Objectos23
Atributos
Especificação nome: tipo nome [multiplicidade]: tipo nome: tipo = valor_inicial
Multiplicidade n - um número fixo n de valores n..m - de n a m valores * - um número arbitrário de valores n..* - pelo menos n valores
2003/2004 Programação Orientada para
Objectos24
Atributos
PilhaFixaDe100Int
- número_de_itens: int = 0- número_máximo_de_itens: int = 100 {frozen}- itens [número_de_itens]: int
…
PilhaFixaDe100Int
- número_de_itens: int = 0- número_máximo_de_itens: int = 100 {frozen}- itens: int[número_máximo_de_itens]
…
2003/2004 Programação Orientada para
Objectos25
Atributos
FormaComposta
- formas [*]: Forma…
…
FormaComposta
- formas: vector<Forma*>…
…
Implementação:
class FormaComposta: public Forma { public: … private: vector<Forma*> formas; …};
2003/2004 Programação Orientada para
Objectos26
Relação de generalização
Forma
RectânguloCírculo FormaComposta
Relação é um
2003/2004 Programação Orientada para
Objectos27
Relação de generalização: exemplos
Língua natural
"Um humano é um mamífero.", ou "Qualquer humano é um mamífero.".
UML
C++class Humano : public Mamífero { // …};
Mamífero
Humano
2003/2004 Programação Orientada para
Objectos28
Relação de generalização: exemplos
Língua natural
"Um hidroavião é um avião e é também um veículo naval.", ou
"Qualquer hidroavião é um avião e é um veículo naval.".
UML
C++class Hidroavião : public Avião, public VeículoNaval { // …};
Avião
Hidroavião
VeículoNaval
2003/2004 Programação Orientada para
Objectos29
Relação de amizade
Menos forte que generalização Mais forte que associação
ListaDeInt ListaDeInt::Iterador«friend»
Dependência.
2003/2004 Programação Orientada para
Objectos30
Relações de associação
Composição Relação é composto por um Os tempos de vida dos objectos envolvidos estão relacionados
Agregação Relação parte/todo ou possui um Pode implicar o controlo do tempo de vida de um objecto por outro
Associação simples Não há conceito de posse Os tempos de vida dos objectos ligados entre si são independentes
2003/2004 Programação Orientada para
Objectos31
Associação simples
Empregado Chefe
Empregado ChefeChefia* 0..1
empregados chefe
Empregado ChefeChefia* 0..1
- empregados - chefe
Empregado ChefeChefia* 0..1
- empregados - chefe
2003/2004 Programação Orientada para
Objectos32
Associações e outras…
Empregado
Chefe
Chefia
*
- empregados
0..1
- chefe
2003/2004 Programação Orientada para
Objectos33
Associação simples
Língua natural
"Qualquer empregado é chefiado por (tem [fraco]) no máximo um chefe."
UML
C++
class Empregado { // … private: Chefe* chefe;};
Empregado ChefeÉChefiadoPor 0..1
- chefe
2003/2004 Programação Orientada para
Objectos34
Especificada por losango vazio
Agregação
Empresa
*
- frota
0..1
Veículo
2003/2004 Programação Orientada para
Objectos35
Agregação
Língua natural
"Uma empresa possui (tem [médio]) um número arbitrário de veículos."
UML
C++
class Empresa { // … private: list<Veículo*> frota;};
Empresa Veículo*
- frota
0..1
2003/2004 Programação Orientada para
Objectos36
Especificada por losango preenchido
Composição
Forma
FormaComposta
{incomplete}
*
- formas
0..1
2003/2004 Programação Orientada para
Objectos37
Composição
Língua natural"Um humano é composto por (tem [forte]) uma cabeça e dois braços."
UML
C++class Humano { // … private: Cabeça cabeça_; Braço braços[2];};
Humano
Braço
Cabeça1
2
- cabeça
- braços
2003/2004 Programação Orientada para
Objectos38
Diagramas de objectos
Mostram como as instâncias das classes, ou seja, os objectos, se ligam entre si no sistema em execução num dado instante de tempo
Estáticos: dizem respeito ao estado do programa
2003/2004 Programação Orientada para
Objectos39
Objectos
zé
zé: Humano
zé: Humano {frozen}
: Humano
: Racional
numerador_ = 3denominador_ = 2
Objecto sem nome associado.
Objecto cuja classe pode ser inferida.
Constante.
Estado do objecto.
2003/2004 Programação Orientada para
Objectos40
Ligações
: FormaComposta
: Círculo
: Rectângulo
: Círculo
: FormaComposta
: Círculo
: Rectângulo
: Círculo
2003/2004 Programação Orientada para
Objectos41
Aula 9: Sumário
Fases do desenvolvimento de software UML
Diagramas de classes Classes Relações
Diagramas de objectos Objectos ou instâncias Ligações