Análise OO / UML Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de...

Post on 17-Apr-2015

104 views 1 download

Transcript of Análise OO / UML Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de...

Análise OO / UML

Renata AraujoRicardo Storino

Núcleo de Computação EletrônicaCurso de Programação de Computadores

Maio a Setembro/2000

Análise e Projeto de Sistemas

2

Ciclo de Vida de Software

Definição dos requisitos

Análise

Projeto

Implementação

Teste/Avaliação

Implantação

Manutenção

Documentos são geradosa cada fase e servem deentrada para a fase seguinte

3

Ciclo de Vida - Modelo Cascata

Intenções

Especificação do

Software

Projetodo

Software

Códigodo

Software

Sistemapronto

para operar

Análise

Projeto

Implementação

Teste

Requisitosdo

Software

Definição de Requisitos

Documentos geradosdurante o ciclo de vida

Transformações

4

Definição de Requisitos

Identificar desejos, intenções, procedimentos

atuais e dados;

Organizá-los de forma coerente

Definir de uma forma geral o que será tratado pelo software interface com o que fica de fora do

software

DesejosIntenções

ProcedimentosDados

Requisitosdo

Software

5

Análise do Software

Entendimento e Representação Domínio do problema Conceitos Funcionalidades Casos de uso

Baseado nos fatores críticos de sucesso do software

Especificaçãodo

Software

Requisitosdo

Software

6

Análise Orientada a Objetos

Objetivos Representar todos os conceitos do mundo real que são

relevantes para o sistema Modelagem do Sistema segundo o paradigma OO Descrever a estrutura de classes do sistema

Produtos Modelo/representação do software Modelo de Análise do Sistema

Representação gráfica do diagrama de classes do Sistema e das interações entre os objetos destas classes

Documentação Detalhamento e complementação do diagrama de classes do

sistema

7

Análise Orientada a Objetos

8

Diagramas da UML

Visão Externa Diagrama de Casos de Uso

Visão Estrutural (Estática) Diagrama de Classes

Visão Comportamental (Dinâmica) Diagrama de Estado Diagrama de Atividade

Visão de Interação Diagrama de Sequência Diagrama de Colaboração

Visão da Arquitetura (Implementação) Diagrama de Componentes Diagrama de Implantação Diagrama de Pacotes

9

Diagramas de Caso de Uso

Especificam a visão externa do sistema Descrevem como o sistema é percebido por seus

usuários Descrevem as interações entre os usuários e o

sistema

Consulta de saldo

Ator

Solicitação de extrato

Interações

10

Diagramas de Classe

Descrevem a parte estática do sistema, ignorando seu processamento

Apresentam Classes (objetos) Atributos Relacionamentos

Herança Agregação Associação

Serviços

11

Diagramas de Estado

Apresentam as sequências de estados que um objeto assume em sua existência em resposta a estímulos recebidos

Complemento das descrições estáticas de classes

Relacionam os possíveis estados que os objetos de uma classe podem ter e quais os eventos que causam mudanças em seu estado.

Pedido Registrado

Pedido em Análise

Pedido para análise requisitado

Pedido enviado

Pedido em Aprovação

Pedido para aprovação

Aprovação emitida

Pedido Aprovado

Pedido será atendido

Classe Pedido

12

Diagramas de Sequência

Apresentam a interação entre os objetos no decorrer do tempo

Mostra a sequência de mensagens entre objetos

Vendedor

Janela Pedido Nota Fiscal Fatura Cliente

1: situação financeira do cliente 2: obter pedidos

(cliente)

3: obter notas fiscais (pedido)

4: obter faturas vencidas (nota fiscal)

5: obter faturas a vencer (nota fiscal)

6: obter limite de crédito (cliente)

13

Diagrama de Classes

Passos para confecção

Identificação de Classes

Identificação de relacionamentos

Definição de atributos

Definição de serviços

14

Identificação de Classes

O domínio do problema Um determinado domínio de problemas inclui informações

relativas ao mundo real

Os requisitos da aplicação Considerados os objetivos da aplicação a ser construída,

apenas um subconjunto dessas informações necessita ser representado

15

Identificação de Classes

Cliente Nome Endereço Altura Peso Idade Sexo Renda Mensal Cor dos Cabelos Número de Dependentes ...

Cliente Nome Endereço Idade Sexo Renda Mensal Número de Dependentes

No mundo real Em uma dada aplicação/sistema

16

Identificação de Classes

No mundo real Numa aplicação/sistema

Cliente

Endereço

Carro Dependentes

Time

Nome

Cliente

Nome

Endereço

17

Identificação de Classes

O que procurar? Objetos

Ex. Pessoas, clientes, turmas, cursos, produtos etc. Agentes

Ex. cliente, atendente etc. Unidades organizacionais

Ex. local para entrega, setor etc. Eventos

Reclamação do cliente, pedido pago etc.

“Quaisquer conceitos que serão armazenados e “lembrados” pelo sistema.”

18

Identificação de Classes

O que Considerar? Armazenamento necessário

O sistema precisará armazenar informações sobre os objetos desta classe?

Mais de um objeto em uma classe É possível identificar facilmente os objetos desta classe? Evite classes que representem um só objeto

Atributos sempre aplicáveis Todos os atributos identificados para a classe são aplicáveis a

todas as suas instâncias?

19

Identificação de Classes

Notação de classe

Nome da Classe

<lista de atributos>

<Lista de serviços/operações>

20

Identificação de Classes

Recomendações Nomenclatura de classes

Nome da classe deve descrever claramente o conceito representado

Uso de termos de conhecimento de todos Evitar abreviaturas Estabelecimento de padrões para nomeação de classes Evitar ambigüidades (dupla interpretação)

Uso Fast CasePrática

21

Definição de Atributos

Objetivo Identificar e formalizar a definição dos atributos de cada

classe presente no diagrama de classes

O que considerar? Necessidade do sistema em armazenar as características das

instâncias das classes

22

Definição de Atributos

Representação gráfica

Nome da Classe

<lista de atributos>

<Lista de serviços/operações>

23

Definição de Atributos

Notação de atributos

Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}

Visibilidade: Critério de acesso ao atributo Opcional

+ visibilidade pública (default) Atributo pode ser acessado por todos, inclusive por serviços de outras classes

# visibilidade protegida Atributo é acessado apenas pelos serviços da própria classe ou por serviços de classes

dentro de um mesmo pacote

- visibilidade privada Atributo é acessado por operações da própria classe

24

Definição de Atributos

Notação de atributos

Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}

Visibilidade:

Aluno

+ Nome# Endereço- Créditos

25

Definição de Atributos

Notação de atributos

Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}

Nome do atributo Obrigatório!!!! Necessidade de padronização Clareza de significado Evitar abreviaturas

Aluno

+ Nome# EndereçoDoAluno- CréditosObtidos

26

Definição de Atributos

Notação de atributos

Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}

Tipo de Expressão Opcional Tipo de implementação do atributo

Inteiro String Real ... Aluno

+ Nome: string# EndereçoDoAluno: string- CréditosObtidos: int

27

Definição de Atributos

Notação de atributos

Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}

Valor Inicial Valor inicial do atributo Opcional

Aluno

+ Nome: string# EndereçoDoAluno: string- CréditosObtidos: int = 0

28

Definição de Atributos

Notação de atributos

Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade}

Propriedade Opcional Maior detalhamento do atributo

Descrição Tipo

Estático Constante Variável

Domínio de Valores

Aluno

+ Nome: string# EndereçoDoAluno: string-CréditosObtidos: int = 0-NumMáximoDeCréditos: int = 70 {constant}

29

Definição de Atributos

Notação de atributos Exemplo

Nome da Classe

AtributoAtributo:tipo do dadoAtributo:tipo do dado = valor inicial

Aluno

NomeEndereço:stringCréditos:inteiro = 0

Uso Fast CasePrática

30

Definição de Serviços

Objetivo Identificar e formalizar a definição das operações de cada

classe presente no diagrama de classes

O que considerar? Necessidade de cada classe em realizar operações que

atendam às funcionalidades do sistema

31

Definição de Serviços

Representação Gráfica

Nome da Classe

<lista de atributos>

<Lista de serviços/operações>

32

Definição de Serviços

Notação de serviços

Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}

Visibilidade: Critério de acesso ao serviço Opcional

+ visibilidade pública (default) Serviço pode ser acessado por todos, inclusive por serviços de outras classes

# visibilidade protegida Serviço é acessado apenas pelos serviços da própria classe ou por serviços de classes

dentro de um mesmo pacote

- visibilidade privada Serviço é acessado por operações da própria classe

33

Definição de Serviços

Notação de serviços

Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}

Visibilidade:

Aluno

NomeEndereçoCréditos

+ InformarNome( ):string# InformarEndereço( ):string- CancelarCréditos( códigoCadeira )

34

Definição de Serviços

Notação de serviços

Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}

Nome do serviço Obrigatório!!!! Necessidade de padronização Clareza de significado Evitar abreviaturas

Aluno

NomeEndereçoCréditos

+ InformarNome( ):string# InformarEndereço( ):string- CancelarCréditos( códigoCadeira )

35

Definição de Serviços

Notação de Serviços

Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}

Parâmetros Lista de valores utilizados pelo serviço

Aluno

NomeEndereçoCréditos

+ InformarNome( ):string# InformarEndereço( ):string-CancelarCréditos( códigoCadeira )-AtualizarCréditos( códigoCadeira, ano, número de Créditos )

36

Definição de Serviços

Notação de serviços

Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}

Expressão de tipo de retorno Tipo do valor de retonor do serviço

Aluno

NomeEndereçoCréditos

+ InformarNome( ):string# InformarEndereço( ):string-CancelarCréditos( códigoCadeira )-AtualizarCréditos( códigoCadeira, ano, número de Créditos )

37

Definição de Atributos

Notação de serviços

Visibilidade Nome do Serviço (Parâmetro): Expressão de Tipo de Retorno {Propriedade}

Propriedade Opcional Maior detalhamento do serviço

Classificação Construtor:

incializam/constroem instâncias da classe

Destrutor: destróem instâncias da classe

Modificador de atributos: modificam valores de atributos

Seletor de atributos: utilizam mas não modificam valores de atributos

Prés e pós condições Exceções Propriedades dependentes da

linguagem de programação

Aluno

NomeEndereçoCréditos

+ CriarAluno( nome ) { construtor }+ InformarNome( ):string# InformarEndereço( ):string-CancelarCréditos( códigoCadeira ) { modificador }-AtualizarCréditos( códigoCadeira, ano, número de Créditos )

38

Definição de Serviços

Persistência Objetos Persistentes – armazenado no banco de dados Objetos transientes – em memória

Construtores e Destrutores Coleta automática de lixo

Serviços para acesso a atributos

Uso Fast CasePrática

39

Identificação de Relacionamentos

Objetivo Identificar associações, agregações e relacionamentos de

generalização/ especialização (herança) entre classes

O que considerar? Necessidade do sistema em “lembrar” relacionamentos entre

as classes

O que procurar? Todos os relacionamentos entre instâncias de classes que

sejam relevantes para o sistema

40

Identificação de Relacionamentos

Associação Relacionamentos simples entre instâncias de classes

Descrevem algum vínculo, relacionamento ou interdependência entre instâncias de classes

41

Identificação de Relacionamentos

Associação - Representação Unária

Binária

Pessoa

Aluno

É pai de

0..*

1..2

Cadeira0..* Cursa

0..*

42

Identificação de Relacionamentos

Associação - Representação N-ária

Avaliação

Funcionário Quesito

* *

Projeto

*

43

Identificação de Relacionamentos

Agregação

Relacionamentos com uma semântica bem definida: a de composição

Relacionamentos que representem: montagens e suas partes

Ex. Um carro e suas partes

(motor, chassi, rodas …) recipientes e seus conteúdos

Ex. Vôo e passageiros conjuntos e seus membros

Ex. Turma e alunos

44

Identificação de Relacionamentos

Agregação - notação

EmpresaDepartamento

“Todo”“Parte”

1..*

1

45

Identificação de Relacionamentos

Herança O que procurar?

Diferenças e similaridades entre classes Várias classes com características comuns

Notação Veículo

Ano Cor

Carro Ônibus Caminhão

Ano Cor No de Assentos

Ano Cor Capacidade

Ano Cor No de Portas

46

Generalização / Especialização

O que procurar? (cont.) Uma classe com atributos aplicáveis apenas a subconjuntos de suas

instâncias

Funcionário

NomeNascSalárioProjeto

Funcionário_Maria Nome = ‘Maria’ Nasc = ‘16/02/70’ Salário = 2500

Projeto = ‘’

Funcionário_João Nome = ‘João’ Nasc = ‘10/05/65’ Salário = 3000

Projeto = ‘Call Center’Gerente

Projeto

47

Identificação de Relacionamentos

Nome/Semântica do relacionamento

Multiplicidade 1 somente um * muitos (zero ou mais) 0..* muitos (zero ou mais) 0..1 opcional (zero ou um) 1..* maior ou igual a um M..N sequência específica

Ex. 1..27 (de um a 27), 23..* (acima de 23)

Papéis Navegabilidade Restrições

Uso Fast CasePrática

48

Diagramas de Estado

Objetos de uma classe possuem um “ciclo de vida” São gerados Assumem posições (estados) Dão origem a outros objetos Deixam de existir (são destruídos)

O estudo dos diferentes estados de um objeto de uma classe e das transições entre estes estados permite o levantamento de serviços adicionais a serem incorporados na classe

49

Diagramas de Estado

Notação

Estado: condição ou situação durante a vida de um objeto no qual

satisfaz alguma condição, executa alguma atividade em resposta a um evento ou espera pela ocorrência de algum evento.

<nome do estado>

Início

Fim

50

Diagramas de Estado

Notação

Evento: Ocorrência que deve ser reconhecida e gerar uma reação pelo

sistema em estudo. A ocorrência de um evento provoca a transição entre estados de

instâncias de alguma classe pertencente ao sistema

Estado 1

Estado 2

evento

51

Diagramas de Estado

Exemplo – Classe PedidoDeCompra

Pedido Registrado

Envio de pedido

Pedido cancelado

Pedido em Análise

Requisição de análise de

pedido

Pedido Pendente

Pedido não pode ser atendido neste

momento Pedido já pode ser atendido

Pedido Aprovado

Pedido é aprovado

Pedido cancelado

Pedido cancelado

Pedido cancelado

Pedido Atendido

Atendimento a Pedido

Uso Fast CasePrática

52

Diagramas de Sequência

Objetivo Identificar o envio de mensagens entre os objetos das

diversas classes do diagrama em resposta a cada caso de uso

Um diagrama de sequência mostra interações de objetos organizadas em uma sequência de tempo e de mensagens trocadas

53

Diagrama de Sequência

um objeto

outro objeto

Tempo(top-down)

ativação

Linha de vida

criar

mensagem

retorno

excluir

Símbolo de exclusão

ator

(evento)

54

Diagrama de Sequência

Vendedor

Janela Pedido Nota Fiscal Fatura Cliente

1: situação financeira do cliente 2: obter pedidos

(cliente)

3: obter notas fiscais (pedido)

4: obter faturas vencidas (nota fiscal)

5: obter faturas a vencer (nota fiscal)

6: obter limite de crédito (cliente)

Uso Fast CasePrática