41
1 Aula 9 Fases do desenvolvimento de software UML

1 Aula 9 Fases do desenvolvimento de software UML

Embed Size (px)

Citation preview

Page 1: 1 Aula 9 Fases do desenvolvimento de software UML

1

Aula 9

Fases do desenvolvimento de software

UML

Page 2: 1 Aula 9 Fases do desenvolvimento de software UML

2003/2004 Programação Orientada para

Objectos2

Ideia do cliente

Page 3: 1 Aula 9 Fases do desenvolvimento de software UML

2003/2004 Programação Orientada para

Objectos3

Resultado da falta de planeamento

Page 4: 1 Aula 9 Fases do desenvolvimento de software UML

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2003/2004 Programação Orientada para

Objectos39

Objectos

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

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

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