1 Análise e Projeto Orientados a Objetos Marcos Mendes 1º Semestre - 2008.
1 Análise e Projeto Orientados a Objeto com UML e Padrões Parte I Análise, Projeto e Processo.
Transcript of 1 Análise e Projeto Orientados a Objeto com UML e Padrões Parte I Análise, Projeto e Processo.
1
Análise e Projeto Orientados a Objetocom UML e Padrões
Parte I
Análise, Projeto e Processo
2
Aplicando UML, Padrões e APOO
Objetivo – Desenvolver habilidades práticas na utilização da
Tecnologia Objeto para a criação de sistemas de software bem projetados, robustos e modificáveis.
Linguagens OO são um primeiro passo necessário mas insuficiente
Outros recursos importantes – processo de desenvolvimento– padrões– UML
3
Atribuindo Responsabilidades
Saber a maneira adequada de atribuir responsabilidades a componentes de software é a habilidade mais importante na APOO– Mais difícil de dominar
– Afeta com mais profundidade a robustez, modificabilidade e reusabilidade do sistema
Padrões GRASP descrevem princípios fundamentais para auxiliar na atribuição de responsabilidades
Saber identificar objetos ou abstrações adequados é a segunda habilidade mais importante
4
O que é Análise e Projeto?
Análise — o quê
Investigação do problema e dos requisitos
Requisitos
Casos de uso
Restrições
Vocabulário
Projeto — como
Descrição de uma solução lógica
Objetos
Arquitetura
Instalação & Operação
Interface do usuário
“Fazer a coisa certa” “Fazer certa a coisa”
5
Termos “Análise” e “Projeto” não são fixos, mas usados ao longo de um contínuo.
Significados variam de metodologia para metodologia.
Distinção é útil na prática, mas debater definições rígidas não é construtivo.
Conflito de Terminologias
Mais orientadoa análise
Mais orientado a projeto
6
O que é APOO?
Na essência, É CONSIDERAR um problema e uma solução dentro da perspectiva de objetos, coisas ou conceitos.
O que é AOO?– Investigação dos objetos de domínio e seus
relacionamentos.
Descritos no Modelo de Objetos de Domínio
O que é POO?– Elaboração de uma solução lógica em termos de
componentes de software e suas colaborações e responsabilidades.
Descritos em Diagramas de Classes e Diagramas de Interação
7
Representação de um Conceito na APOO
Ex.: O conceito “Livro” em um sistema de biblioteca
Representaçãono código
Conceitode domínio
public class Livro{public void imprimir();
private String titulo;}
Livro
título
Representaçãona análise
Livro
título
Representaçãono projeto
imprimir()
8
Uma Analogia:Organizando os Negócios de uma Empresa
Documentos Associados
APOOAnalogia
Casos de usoAnálise de requisitosQuais são os processos de negócio?
Modelo conceitualAnálise do domínioQuais são os papeis dos empregados?
Diagramas de classes de projeto, diagramas de colaboração / interação
Atribuição de responsabilidades, projeto das interações
Quem é responsável por o quê? Como eles interagem?
9
Modelagem na APOO: um exemplo
Um jogo de dados no qual um jogador lança dois dados. Se o total for sete, ele vence; caso contrário, perde.
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Exemplo: jogo de dados
10
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Um Exemplo — Jogo de Dados
Casos de uso: são descrições narrativas de processos do domínio no formato de prosa estruturada.
Caso de uso: JogarAtores: JogadorDescrição: Este caso de uso começa quando um jogador pega e lança
os dados. Se a soma do valor das faces dos dados totalizar sete, ele vence; caso contrário, perde.
11
Um modelo conceitual descreve conceitos do mundo real, não componentes de software!
Um Exemplo — Jogo de Dados
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Modelo conceitual: Conceitos, atributos, e associações que são considerados importantes no domínio da aplicação.
12
Um Exemplo — Jogo de Dados
Alocação de responsabilidades para objetos ilustrando como eles interagem via mensagens.
Mostram o fluxo de mensagens entre instâncias e a invocação de métodos.
pedro:Jogador dado1 : Dado
dado2 : Dado
joga() 1: r1 := lança()
2: r2 := lança()
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
instância
Diagrama de Colaboração
13
Um Exemplo — Jogo de Dados
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Diagrama Interação
Barra de Interação –
Linha de Vida
14
Como os objetos (de software) se conectam? Quais são os métodos de uma classe?
Um Exemplo — Jogo de Dados
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
15
APOO X APE
Sistema deBiblioteca
Sistema
A&P Orientados a ObjetoDecomposição por objetos ou
conceitos
A&P EstruturadosDecomposição por funções ou
processos
RegistraEmpréstim
os
AdicionaRecursos
ReportaMultas
Catálogo
Livro
Bibliotecário
Biblioteca
Metodologias mais antigas, como Análise e Projeto Estruturados, baseiam-se em outras dimensões de decomposição.
16
A UML é a linguagem padrão de diagramação para visualizar os resultados da análise e projeto
A notação (a própria UML) é relativamente trivial Muito mais importante: habilidade para modelar
com objetos– Só aprender a notação UML não ajuda
A UML não é– um processo ou metodologia
– APOO
– regras de projeto
A Linguagem de Modelagem Unificada
17
Origem e Evolução da UML
Unified Method 0.8 Unificação I(Out’95)
Booch’93 OMT-2
Outros métodos Booch’91 OMT-1 OOSE Fragmentação
UML 1.0
Parceirosda UML
Padronização(Jan’97)
UML 1.1 Industrialização(Set’97)
UML 0.9 & 0.91 Unificação II(Out’96)
18
Processo de Desenvolvimento
Organização das atividades relacionas à produção e manutenção de sistemas de software
Útil, mas um fator de segunda ordem– O principal: equipe qualificada
Boa equipe + bom processo = menor risco
O processo racional unificado (RUP), baseado no modelo iterativo, é o processo padrão na indústria
19
Simplificação do processo iterativo unificado
Fácil extensão e customização Não inclui atividades importantes como
– Verificação & validação
– Divisão do trabalho
– Gerência de projeto
– Documentação
Um Processo Iterativo Simplificado
Planejamento &Elaboração
Construção Implantação
20
Fases
Planejamento e Elaboração– Concepção inicial, investigação de alternativas,
definição de requisitos, etc. Construção
– Construção do sistema através de múltiplos ciclos de análise, projeto, implementação e teste
Implantação– Instalação e operação do sistema
21
Modelos e Artefatos
Um modelo descreve e abstrai aspectos essenciais de um sistema– Modelo estático (estrutura)
– Modelo dinâmico (comportamento) Modelos são compostos por artefatos —
diagramas e documentos que descrevem os elementos do modelo
Na APOO, a UML é usada para descrever e visualizar os modelos e artefatos produzidos em cada fase do processo de desenvolvimento
22
Fase de Planejamento e Elaboração
2. Criar Rel. Prel. de Investigação
3. Definir Requisitos
9. Refinar Plano7. Definir Mod. Conc. Inicial c
4. Reg. Termos no Glossário a
6. Definir Casos de Uso
1. Definir PlanoInicial
5. ImplementarProtótipo
b, d
a. contínuab. opcionalc. adiáveld. ordem variada
8. Definir Arquit.Inicial a, c, d
Notas
Planejamento &Elaboração
Construção Implantação
23
Fase de Planejamento e Elaboração
Atividades:
1. Definir plano inicial
Prazos, recursos, orçamento
2. Criar relatório preliminar de investigação
Motivação, alternativas, necessidades de negócio
3. Definir requisitos
Especificação declarativa dos requisitos
4. Registrar termos no glossário
Dicionário de termos, regras, restrições
5. Implementar protótipo
Protótipo do sistema para ajudar na definição dos requisitos
24
Fase de Planejamento e Elaboração
Atividades:
6. Definir casos de uso
Descrição em prosa estruturada dos processos de negócio
7. Definir modelo conceitual inicial
Objetos de domínio e seus relacionamentos
8. Definir arquitetura inicial
Principais subsistemas e suas dependências
9. Refinar plano
Atividades não lineares – Ex.: 7, 4, 6 em paralelo
25
Fase de Construção
Ciclo deDesenv. 1
Sinc.Artefatos Análise Projeto Teste
Refin.Plano Impl.
Ciclo deDesenv. 2
...
Planejamento &Elaboração
Construção Implantação
26
Fase de Construção
Repetição de ciclos de desenvolvimento– Construção progressiva do sistema até atingir uma
versão que satisfaça corretamente os requisitos Atividades típicas de cada ciclo:
1. Refinar plano
2. Sincronizar artefatos
3. Análise
4. Projeto
5. Implementação
6. Teste
27
Ciclos de Desenvolvimento
Cada ciclo implementa um conjunto reduzido de requisitos, adicionando novas funções ao sistema – Crescimento incremental, através de expansões e
refinamentos sucessivos Ciclos com tempo fixo de duas a oito semanas Vantagens:
– Evita complexidade excessiva
– Antecipa feedback dos usuários
28
Ciclos de Desenvolvimento e Casos de Uso
Um ciclo deve atacar um ou mais casos de uso ou versões simplificadas de casos de uso.
Casos de uso mais relevantes devem ser atacados nos primeiros ciclos.– Prioridade para serviços com grande influência na
arquitetura do sistema ou de alto risco.
Ciclo de Desenv. 1
Caso de uso AVersãoSimplificada
Ciclo de Desenv. 2
Caso de uso AVersãoCompleta
Ciclo de Desenv. 3
Caso de uso B
Caso de uso C
29
Análise
a. se ainda não feitob. contínuoc. opcional
2. Refinar Diag. Casos de Uso
3. Refinar ModeloConceitual
4. Refinar Glossário b
6. Definir Contrat.de Operação
1. Definir Casos de Uso Essenciais a
5. Definir Diag.Seq.
7. Definir Diag.Estado c
Notas
...Ciclo deDesenv. 1
Sinc.Artefatos Análise Projeto TesteRefin.
Plano Impl.
Ciclo deDesenv. 2
30
Análise
Sub-atividades:
1. Definir casos de uso essenciais
2. Refinar diagramas de casos de uso
3. Refinar modelo conceitual
4. Refinar glossário
5. Definir diagramas de seqüência do sistema
6. Definir contratos de operação
7. Definir diagramas de estado
31
Projeto
2. Definir Relatórios, Interface Usuário
4. Definir Diag.Interação
5. Definir Diag.Classes a
6. Definir Esquemado BD
1. Definir Casos deUso Reais
3. Refinar Arquitetura b
Notas
a. em paralelo com diag. interaçãob. ordem variada
...Ciclo deDesenv. 1
Sinc.Artefatos Análise Projeto TesteRefin.
Plano Impl.
Ciclo deDesenv. 2
32
Projeto
Sub-atividades:
1. Definir casos de uso reais
2. Definir relatórios e interfaces com o usuário
3. Refinar arquitetura do sistema
4. Definir diagramas de interação
5. Definir diagramas de classes de projeto
6. Definir esquema do banco de dados
33
Padrões de Projeto(introdução)
1. Objetivos de Projeto e
2. Vantagens no uso de Padrões de Projeto
34
Padrão de Projeto
Descrição de um problema recorrente, de forma genérica.
Descrição de uma solução também genérica, que deve ser adaptada de acordo com o contexto em que o problema se manifesta.
35
Objetivos de projeto Reusabilidade, flexibilidade e manutenibilidade
– reutilize projetos flexíveis
– mantenha o código em um nível geral
– minimize dependência de outras classes
Robustez
– reutilize projetos seguros
– reutilize partes robustas
Suficiência e correção
– modularize o projeto
– reutilize partes confiáveis
36
Vantagens no uso de Padrões de Projeto
Evita a redescoberta de soluções Propicia o uso de soluções corretas Melhora a qualidade do software Melhora a confiabilidade do software Provê uma linguagem comum entre desenvolvedores Reduz o volume de documentação Economiza esforço e tempo de desenvolvimento e
manutenção Conduz ao bom uso de orientação a objetos
37
Exemplo de Problema Recorrente : Composição
Em um sistema de arquivos, existem arquivos e pastas (diretórios), sendo que todo arquivo está contido em uma pasta e toda pasta pode conter arquivos e também outras pastas.
Em um documento, existem caracteres e imagens como elementos básicos, e páginas, colunas, frames e linhas de texto como elementos compostos, sendo que todo elemento básico está contido em um elemento composto e todo elemento composto pode conter elementos básicos e também outros elementos compostos.
38
Composição em Sistema de Arquivos
ComponenteSistemaArquivos
Arquivo Pasta
listar ( ) {abstract}
listar ( )listar ( )
tamanho
tipo
0..*
39
Composição em Documento
ElementoDocumento
Caráter Imagem ElementoCompostoDocumento
Documento Página Coluna Frame LinhaTexto
0..*
40
Referências Bibliográficas Design Patterns: Elements of Reusable Object-Oriented
Software. Erich Gamma e outros (GoF), Addison-Wesley, 1995.
Patterns in Java: a catalog of reusable design patterns illustraded in UML, Volume 1. Mark Grand, John Wiley & Sons, 1998.
Projeto de Software: da programação à arquitetura (Software design: from programming to architecture). Eric Braude, John Wiley & Sons, 2004.
41
Caso de Uso(Detalhamento)
1. Um exemplo: Processar Venda
42
Um exemplo: Processar VendaAtor Principal: Caixa
Interessados e Interesses: Caixa: deseja entrada rápida, precisa e sem erros, de pagamento, pois a falta de dinheiro na
gaveta do caixa será deduzida do seu salário. Vendedor: deseja comissões sobre vendas atualizadas. Cliente: deseja comprar, receber um serviço rápido e com mínimo esforço. Deseja um
comprovante da compra, necessário no caso de devoluções de mercadorias. Empresa: deseja registrar precisamente as transações e satisfazer aos interesses do cliente.
Quer garantir que os pagamentos a receber do Serviço de autorização de Pagamentos sejam registrados. Deseja algum tipo de proteção contra falhas para permitir que as vendas sejam capturadas mesmo se os componentes do servidor (por exemplo, validação remota de crédito) se encontrarem indisponíveis. Deseja uma atualização automática e rápida da contabilidade e do estoque.
Órgãos fiscais governamentais: desejam cobrar os impostos de cada venda. Podem estar envolvidos vários órgãos, como por exemplo, federais, estaduais e municipais.
Serviço de autorização de pagamentos: deseja receber solicitações de autorização digital no formato e protocolo corretos. Deseja contabilizar com precisão seus débitos a pagar para a loja.
Pré-Condições: o Caixa é identificado e autenticado.
Pós-Condições: a Venda é salva. Os impostos são corretamente calculados. A Contabilidade e o Estoque são atualizados. As Comissões são registradas. O Recibo é gerado. As aprovações de pagamento são registradas.
43
Um exemplo: Processar Venda (continuação)
Fluxo Básico1. O Cliente chega à saída do PDV com bens ou serviços para adquirir.
2. O Caixa começa uma nova venda.
3. O Caixa digita o identificador do item.
4. O Sistema registra a linha de item da venda e apresenta uma descrição do item, o seu preço e o total parcial da venda. O preço é calculado segundo um conjunto de regras de preços.
O Caixa repete os passos 3 e 4 até que indique ter terminado.
5. O Sistema apresenta o total com impostos calculados.
6. O Caixa diz ao Cliente o total e solicita o pagamento.
7. O Cliente paga e o Sistema trata o pagamento.
8. O Sistema registra a venda completada e envia as informações de venda e pagamento para o Sistema externo de contabilidade (para contabilidade e comissões) e o Sistema de Estoque (para atualizar o estoque).
9. O Sistema emite recibo.
10. O Cliente sai com recibo e bens (se houver).
44
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos
*a. A qualquer momento, o Sistema falha:
Para fornecer suporte para a recuperação e a correta contabilização, garanta que todas as informações de estado sensíveis das transações e de todos os eventos possam ser recuperadas a partir de qualquer passo do cenário.
1. O Caixa reinicia o Sistema, registra-se e solicita arecuperação do estado anterior.
2. O Sistema restaura o estado anterior.
2a. O Sistema detecta anomalias que impedem arestauração:
1. O Sistema avisa ao Caixa sobre o erro, registra o erro e, então, entra em um novo estado consistente:
2. O Caixa começa uma nova venda.
45
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
3a. Identificador inválido:1. O Sistema informa o erro e rejeita a entrada.
3b. Existem vários itens do mesmo tipo e rastrear o item físico individual não é importante (p. ex: 5 pacotes de sanduíches naturais).1. O Caixa pode digitar o identificador do tipo do item e a
quantidade.
3-6a. O Cliente pede ao Caixa para remover um item da compra:1. O Caixa digita o identificador do item a ser removido da venda.
2. O Sistema exibe o total parcial atualizado.
3-6b. O Cliente diz ao Caixa para cancelar a venda:1. O Caixa cancela a venda no Sistema.
3-6c. O Caixa suspende a venda:1. O Sistema registra a venda de forma que ela fique disponível para
acesso a partir de qualquer terminal PDV.
46
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
4a. O preço do item gerado pelo Sistema não é desejado (por exemplo, o Cliente se queixa de que algo está sendo oferecido a um preço mais baixo):
1. O Caixa digita o preço que prevalecerá.
2. O Sistema apresenta o novo preço.
5a. O Sistema detecta uma falha na comunicação com o serviço externo de cálculo de impostos:
1. O Sistema reinicia esse serviço no nó PDV e continua.
1a. O Sistema detecta que o serviço não reinicia.1. O Sistema sinaliza o erro.2. O Caixa pode calcular manualmente e digitar o imposto ou cancelar a venda.
5b. O Cliente diz que tem direito a um desconto (por exemplo, empregado, cliente preferencial):
1. O Caixa sinaliza uma solicitação de desconto.
2. O Caixa entra com a identificação do Cliente.
3. O Sistema apresenta o total do desconto com base nas regras para descontos.
5c. O Cliente diz que tem um crédito na sua conta que pode ser usado para pagar a compra:
1. O Caixa sinaliza uma solicitação de crédito.
2. O Caixa digita a identificação do Cliente.
3. O Sistema aplica o crédito até que o preço=0 e deduz do pagamento remanescente.
47
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
6a. O Cliente diz que pretendia pagar com dinheiro, mas não tem dinheiro suficiente:
1a. O Cliente usa um método de pagamento alternativo.
1b. O Cliente diz ao Caixa para cancelar a venda. O Caixa cancela a venda no Sistema.
7a. Pagamento com dinheiro:
1. O Caixa digita a quantia de dinheiro fornecida.
2. O Sistema apresenta o valor do troco e libera a gaveta de dinheiro.
3. O Caixa deposita o dinheiro fornecido e entrega o troco para o Cliente.
4. O Sistema registra o pagamento em dinheiro.
48
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
7b. Pagamento a crédito:
1. O Cliente digita as informações de sua conta de crédito.
2. O Sistema envia a solicitação de autorização de pagamento para um serviço externo de Autorização de Pagamento e solicita sua aprovação.
2a. O Sistema detecta uma falha ao tentar colaborar com o sistema externo:
1. O Sistema sinaliza erro ao Caixa.
2. O Caixa pede ao Cliente uma forma de pagamento alternativa.
3. O Sistema recebe aprovação do pagamento e sinaliza a aprovação ao Caixa
3a. O Sistema recebe rejeição do pagamento:1. O Sistema sinaliza rejeição ao Caixa.2. O Caixa solicita ao Cliente uma forma alternativa de pagamento.
4. O Sistema registra o pagamento a crédito, que inclui a aprovação do pagamento.
5. O Sistema apresenta o mecanismo para entrada da assinatura do pagamento a crédito.
6. O Caixa solicita ao Cliente uma assinatura para pagamento a crédito. O Cliente fornece a assinatura.
49
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
7c. Pagamento com cheque...
7d. Pagamento com débito em contra...
7e. O Cliente apresenta cupons:
1. Antes de tratar o pagamento, o Caixa registra cada cupom e o Sistema reduz o preço conforme estabelecido. O Sistema registra os cupons usados por razões contábeis.
1a. O Cupom digitado não serve para quaisquer dos itens comprados:1. O Sistema sinaliza erro ao Caixa.
9a. Existem descontos específicos para certos produtos:
1. O Sistema apresenta os formulários de descontos e os recibos de descontos para cada item ao qual se aplica um desconto.
9b. O Cliente solicita o recibo para presente e o Sistema apresenta o mesmo.
50
Um exemplo: Processar Venda (continuação)
Requisitos Especiais Interface de Usuário (IU) por tela sensível ao toque
em um monitor de painel plano grande. O texto deve ser visível a uma distância de um metro.
Resposta de autorização de crédito dentro de 30 segundos em 90% do tempo.
De alguma forma, queremos uma recuperação robusta quando o acesso aos serviços remotos, tal como o sistema de estoque, estiver falhando.
Internacionalização de linguagem no texto exibido. Regras de negócio “plugáveis” que podem ser
inseridas nos passos 2 e 6. ...
51
Um exemplo: Processar Venda (continuação)
Lista de Variações Tecnológicas e de Dados:
3a. Identificador de item inserido por leitor a laser de código de barras (quando o item tiver código de barras) ou pelo teclado.
3b. Identificador de item pode ser qualquer um dos seguintes esquemas de codificação: CUP, NAE, NAJ ou SKU.
7a. Informação sobre a conta de crédito inserida por leitora de cartão ou pelo teclado.
7b. Assinatura de pagamento a crédito capturada em recibo de papel. NO entanto, prevemos que, dentro de dois anos, muitos clientes desejarão captura de assinatura digital.
Freqüência de Ocorrência: Poderia ser quase continuo.
52
Um exemplo: Processar Venda (continuação)
Problemas em Aberto: Quais são as variações das leis de impostos? Deve-se explorar o problema de recuperação de serviço
remoto. Qual personalização é necessária para diferentes negócios? Um Caixa deve levar sua gaveta de dinheiro quando ele sai do
Sistema? O Cliente pode usar diretamente a leitora de cartão ou é o
Caixa que deve fazê-lo?
53
APOO
1. Exercício