530 likes | 686 Views
Análise e Projeto Orientados a Objeto com UML e Padrões. Parte I Análise, Projeto e Processo. 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.
E N D
Análise e Projeto Orientados a Objetocom UML e Padrões Parte I Análise, Projeto e Processo
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
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
Análise — o quê Investigação do problema e dos requisitos Projeto — como Descrição de uma solução lógica Requisitos Casos de uso Restrições Vocabulário Objetos Arquitetura Instalação & Operação Interface do usuário O que é Análise e Projeto? “Fazer a coisa certa” “Fazer certa a coisa”
Conflito de Terminologias • 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. Mais orientado a análise Mais orientado a projeto
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
Conceito de domínio Representação na análise Representação no projeto Livro Livro título título imprimir() public class Livro { public void imprimir(); private String titulo; } Representação no código Representação de um Conceito na APOO • Ex.: O conceito “Livro” em um sistema de biblioteca
Quem é responsável por o quê? Como eles interagem? Atribuição de responsabilidades, projeto das interações Diagramas de classes de projeto, diagramas de colaboração / interação Uma Analogia:Organizando os Negócios de uma Empresa Analogia APOO Documentos Associados Quais são os processos de negócio? Análise de requisitos Casos de uso Quais são os papeis dos empregados? Análise do domínio Modelo conceitual
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 casosde usos Definir modelode domínio Definir diagramasde interação Definir diagramasde classesde projeto Exemplo: jogo de dados
Um Exemplo — Jogo de Dados Definir casosde usos Definir modelode domínio Definir diagramasde interação Definir diagramasde classesde projeto Caso de uso: Jogar Atores: Jogador Descriçã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. • Casos de uso: são descrições narrativas de processos do domínio no formato de prosa estruturada.
Um Exemplo — Jogo de Dados Definir casosde usos Definir modelode domínio Definir diagramasde interação Definir diagramasde classesde projeto • Um modelo conceitual descreve conceitos do mundo real, não componentes de software! Modelo conceitual:Conceitos, atributos, e associações que são considerados importantes no domínio da aplicação.
Um Exemplo — Jogo de Dados Definir casosde usos Definir modelode domínio Definir diagramasde interação Definir diagramasde classesde projeto • 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. joga() 1: r1 := lança() pedro:Jogador dado1 : Dado instância 2: r2 := lança() dado2 : Dado Diagrama de Colaboração
Diagrama Interação Um Exemplo — Jogo de Dados Definir casosde usos Definir modelode domínio Definir diagramasde interação Definir diagramasde classesde projeto Barra de Interação – Linha de Vida
Um Exemplo — Jogo de Dados Definir casosde usos Definir modelode domínio Definir diagramasde interação Definir diagramasde classesde projeto • Como os objetos (de software) se conectam? • Quais são os métodos de uma classe?
APOO X APE • Metodologias mais antigas, como Análise e Projeto Estruturados, baseiam-se em outras dimensões de decomposição. Sistema de Biblioteca A&P Orientados a Objeto A&P Estruturados Decomposição por objetos ou conceitos Decomposição por funções ou processos Sistema Catálogo Bibliotecário Registra Empréstimos Livro Adiciona Recursos Reporta Multas Biblioteca
A Linguagem de Modelagem Unificada • 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
UML 1.1 Industrialização (Set’97) UML 1.0 Padronização (Jan’97) Parceiros da UML UML 0.9 & 0.91 Unificação II (Out’96) Unified Method 0.8 Unificação I (Out’95) Booch’93 OMT-2 Outros métodos OOSE Booch’91 OMT-1 Fragmentação Origem e Evolução da UML
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
Construção Implantação Planejamento & Elaboração Um Processo Iterativo Simplificado • 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
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
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
Construção Implantação Planejamento & Elaboração Fase de Planejamento e Elaboração 2. Criar Rel. Prel. de Investigação 1. Definir Plano Inicial 3. Definir Requisitos 5. Implementar Protótipo 6. Definir Casos de Uso 4. Reg. Termos no Glossário a b, d Notas a. contínua 7. Definir Mod. Conc. Inicial 8. Definir Arquit. Inicial 9. Refinar Plano b. opcional c a, c, d c. adiável d. ordem variada
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
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
Construção Implantação Planejamento & Elaboração Fase de Construção Ciclo de Desenv. 1 Ciclo de Desenv. 2 ... Refin. Plano Sinc. Artefatos Análise Projeto Impl. Teste
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
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
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 Ciclo de Desenv. 2 Ciclo de Desenv. 3 Caso de uso A Versão Completa Caso de uso A Versão Simplificada Caso de uso B Caso de uso C
Análise Notas a. se ainda não feito Ciclo de Desenv. 2 Ciclo de Desenv. 1 ... b. contínuo c. opcional Refin. Plano Sinc. Artefatos Análise Projeto Impl. Teste 4. Refinar Glossário 1. Definir Casos de Uso Essenciais 3. Refinar Modelo Conceitual 2. Refinar Diag. Casos de Uso b a 5. Definir Diag. Seq. 6. Definir Contrat. de Operação 7. Definir Diag. Estado c
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
Projeto Notas Ciclo de Desenv. 1 Ciclo de Desenv. 2 a. em paralelo com ... diag. interação b. ordem variada Refin. Plano Sinc. Artefatos Análise Projeto Impl. Teste 2. Definir Relatórios, Interface Usuário 1. Definir Casos de Uso Reais 3. Refinar Arquitetura b 4. Definir Diag. Interação 5. Definir Diag. Classes 6. Definir Esquema do BD a
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
Padrões de Projeto(introdução) 1. Objetivos de Projeto e 2. Vantagens no uso de Padrões de Projeto
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.
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
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
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.
ComponenteSistemaArquivos 0..* tamanho listar ( ) {abstract} Arquivo Pasta tipo listar ( ) listar ( ) Composição em Sistema de Arquivos
Composição em Documento 0..* ElementoDocumento Caráter Imagem ElementoCompostoDocumento Documento Página Coluna Frame LinhaTexto
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.
Caso de Uso(Detalhamento) 1. Um exemplo: Processar Venda
Um exemplo: Processar Venda Ator 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.
Um exemplo: Processar Venda (continuação) Fluxo Básico 1. 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).
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 a recuperação do estado anterior. 2. O Sistema restaura o estado anterior. 2a. O Sistema detecta anomalias que impedem a restauraçã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.
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.
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.
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.
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.
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.
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. • ...