![Page 1: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/1.jpg)
1
Aula 9
Fases do desenvolvimento de software
UML
![Page 2: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/2.jpg)
2003/2004 Programação Orientada para
Objectos2
Ideia do cliente
![Page 3: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/3.jpg)
2003/2004 Programação Orientada para
Objectos3
Resultado da falta de planeamento
![Page 4: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/4.jpg)
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
![Page 5: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/5.jpg)
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
![Page 6: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/6.jpg)
2003/2004 Programação Orientada para
Objectos6
Processo iterativo
Implementação
Análise
Desenho
![Page 7: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/7.jpg)
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
![Page 8: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/8.jpg)
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
![Page 9: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/9.jpg)
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
![Page 10: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/10.jpg)
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
![Page 11: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/11.jpg)
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
![Page 12: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/12.jpg)
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
![Page 13: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/13.jpg)
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
![Page 14: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/14.jpg)
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
![Page 15: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/15.jpg)
2003/2004 Programação Orientada para
Objectos15
Características de uma classe
Visibilidade +, características públicas #, características protegidas -, características privadas
![Page 16: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/16.jpg)
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);
// …};
![Page 17: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/17.jpg)
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
![Page 18: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/18.jpg)
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)
![Page 19: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/19.jpg)
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
![Page 20: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/20.jpg)
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.
![Page 21: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/21.jpg)
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)…
![Page 22: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/22.jpg)
2003/2004 Programação Orientada para
Objectos22
Métodos
Racional
- numerador_: int- denominador_: int
{ return numerador_;}
…+ numerador(): int {query}…
![Page 23: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/23.jpg)
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
![Page 24: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/24.jpg)
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]
…
![Page 25: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/25.jpg)
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; …};
![Page 26: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/26.jpg)
2003/2004 Programação Orientada para
Objectos26
Relação de generalização
Forma
RectânguloCírculo FormaComposta
Relação é um
![Page 27: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/27.jpg)
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
![Page 28: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/28.jpg)
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
![Page 29: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/29.jpg)
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.
![Page 30: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/30.jpg)
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
![Page 31: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/31.jpg)
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
![Page 32: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/32.jpg)
2003/2004 Programação Orientada para
Objectos32
Associações e outras…
Empregado
Chefe
Chefia
*
- empregados
0..1
- chefe
![Page 33: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/33.jpg)
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
![Page 34: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/34.jpg)
2003/2004 Programação Orientada para
Objectos34
Especificada por losango vazio
Agregação
Empresa
*
- frota
0..1
Veículo
![Page 35: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/35.jpg)
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
![Page 36: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/36.jpg)
2003/2004 Programação Orientada para
Objectos36
Especificada por losango preenchido
Composição
Forma
FormaComposta
{incomplete}
*
- formas
0..1
![Page 37: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/37.jpg)
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
![Page 38: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/38.jpg)
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
![Page 39: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/39.jpg)
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.
![Page 40: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/40.jpg)
2003/2004 Programação Orientada para
Objectos40
Ligações
: FormaComposta
: Círculo
: Rectângulo
: Círculo
: FormaComposta
: Círculo
: Rectângulo
: Círculo
![Page 41: 1 Aula 9 Fases do desenvolvimento de software UML](https://reader036.vdocuments.mx/reader036/viewer/2022062318/552fc11a497959413d8c96c1/html5/thumbnails/41.jpg)
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