Elaboração Projeto Final - APGS Adriana P. de Medeiros Elaboração Objetivo da fase Análise e Projeto Modelo Conceitual Modelo de Projeto Diagramas de Sequência Diagrama de Estados Proposta de componentes Documentação Análise, Projeto e Gerência de Sistemas Projeto Final 2 Objetivo Analisar o domínio do problema e estabelecer uma base arquitetural para o novo sistema Necessário: concluir os casos de uso de sistema construir o modelo conceitual construir o modelo de projeto construir os diagramas de sequência construir diagramas de estados (se necessário) preparar proposta de componentes para o sistema Análise, Projeto e Gerência de Sistemas Projeto Final 3 Elaboração Análise e Projeto Análise, Projeto e Gerência de Sistemas Projeto Final 4 UML: Perspectivas Múltiplas A UML descreve tipos puros de diagramas Diagrama de Classes, Diagrama de Sequência, etc. A mesma notação diagramática pode ser usada em três tipos de perspectivas e modelos: Perspectiva essencial ou conceitual Perspectiva de especificação Diagramas representam uma descrição de coisas no mundo real ou domínio de interesse Diagramas representam uma descrição de abstrações de software ou componentes com especificações e interfaces Perspectiva de implementação Diagramas representam uma descrição de implementação de software em uma tecnologia e linguagem específica (como Java) Análise, Projeto e Gerência de Sistemas Projeto Final 5 Diagrama de Classes: Perspectivas Conceitual Modelo Conceitual Especificação (Tipos e Interfaces) Modelo de Projeto Implementação Análise, Projeto e Gerência de Sistemas Projeto Final 6 Modelo Conceitual Ilustra as classes conceituais significativas em um domínio de problema Pode mostrar: objetos do domínio ou classes conceituais associações entre as classes conceituais atributos de classes conceituais Usando a notação UML, um modelo conceitual é ilustrado como um conjunto de diagramas de classes, nos quais não se definem operações Análise, Projeto e Gerência de Sistemas Projeto Final 7 Modelo Conceitual Um Modelo Conceitual é uma representação de classes conceituais do mundo real, não de componentes de software. Durante a Modelagem Conceitual levantamos conceitos relativos ao domínio de um problema. Devemos nos concentrar no negócio e não em detalhes de implementação. Análise, Projeto e Gerência de Sistemas Projeto Final 8 Modelo Conceitual Modelos não são corretos ou incorretos; eles são mais úteis ou menos úteis [Fowler 97] Se modelamos um conceito de uma determinada maneira, devemos nos questionar quanto a sua utilidade e se a forma que modelamos é a que mais nos facilitará. Queremos: Representar abstrações Independência de implementações Facilidade de comunicação [Fowler 97] Fowler, M., Analysis Patterns – Reusable Object Models, Addison Wesley, 1997 Análise, Projeto e Gerência de Sistemas Projeto Final 9 Exemplo: Modelo Conceitual Funcionário Pedido preenche número data 1 * nome idade * 1 Organização 1 Cargo 1..* LinhaDe ItemDePedido quantidade 1 1 Produto {incompleto} Livro Análise, Projeto e Gerência de Sistemas CD Projeto Final DVD 10 Dicas Se você não pensar em uma classe conceitual X como um número ou um texto no mundo real, então X provavelmente será uma classe conceitual, não um atributo Concentre-se nas associações cujo conhecimento do relacionamento deve ser preservado por algum tempo (associações “que devem ser conhecidas”) Relacione classes conceituais com uma associação, não com um atributo Fonte: Livro “Utilizando UML e Padrões” - Craig Larman Análise, Projeto e Gerência de Sistemas Projeto Final 11 Modelo de Projeto Contém diversos tipos de diagramas, incluindo os diagramas de classes, de pacotes e de interação Um diagrama de classe de projeto ilustra as especificações para classes de software e interfaces em uma aplicação. Inclui: classes, associações e atributos informação de tipo de atributo métodos interfaces, com suas operações e constantes navegabilidade dependências Análise, Projeto e Gerência de Sistemas Projeto Final 12 Modelo de Projeto Considerar: Operações necessárias Padrões de Projeto Restrições Diagramas de Sequência Análise, Projeto e Gerência de Sistemas Projeto Final 13 Exemplo: Modelo de Projeto Pedido número: Integer data: Date criarLinhaDeItem(...) obterTotal () LinhaDeItemDePedido 1 contém 1..* quantidade: Integer obterSubTotal () 1 descreve * EspecificaçãoProduto descricao: String preco: Moeda ... Análise, Projeto e Gerência de Sistemas Projeto Final 14 Revisão: Classes Abstratas Não podem ser instanciadas São usadas quando não conhecemos a implementação de seus métodos A implementação é dada por suas subclasses Análise, Projeto e Gerência de Sistemas Projeto Final 15 Exemplo Figura calcularArea() Retângulo altura base calcularArea() base x altura Análise, Projeto e Gerência de Sistemas Triângulo altura base Círculo raio calcularArea() calcularArea() PI x raio x raio base x altura/2 Projeto Final 16 Revisão: Interfaces Uma interface é uma coleção de operações usadas para especificar um serviço de uma classe ou componente Interfaces permitem separar a especificação de funcionalidade, em termos de operações, de sua implementação em termos de método Esta separação torna o cliente que usa uma interface independente da implementação desta interface Uma implementação particular de uma interface, como por exemplo uma classe ou componente, pode ser substituída por uma outra implementação sem que seja necessário mudar o cliente Análise, Projeto e Gerência de Sistemas Projeto Final 17 Exemplo Conta Transacao Cliente <<usa>> numero:Integer create() obterNumero() retirarDinheiro() depositarDinheiro() OU Conta <<interface>> Transacao Cliente numero:Integer <<usa>> retirarDinheiro() depositarDinheiro() Análise, Projeto e Gerência de Sistemas Projeto Final create() obterNumero() retirarDinheiro() depositarDinheiro() 18 Revisão: Pacotes Mecanismo de propósito geral para organizar elementos de um modelo em grupos Cliente Regras de Negócio FormPedido Pedido Cliente GUI + Window + Form # EventHandler Análise, Projeto e Gerência de Sistemas FormPedido Pedido Projeto Final 19 Revisão: Generalização de Pacotes GUI + Windows + Form # EventHandler WindowsGUI + GUI::Window + Form # GUI::EventHandler + VBForm Análise, Projeto e Gerência de Sistemas MacGUI Projeto Final 20 Revisão: Subsistemas Um subsistema é simplesmente uma parte de um sistema e é usado para decompor um sistema complexo em partes “quase” independentes Sistema de Varejo Atendimento ao cliente Análise, Projeto e Gerência de Sistemas Gestão da Loja Projeto Final Controle de Estoque 21 Revisão: Padrões de Projeto São descrições de objetos e classes comunicantes que são customizados para resolver um problema geral de projeto num contexto particular São classificados por dois critérios: Finalidade – o que o padrão faz Criação Estrutural Comportamental Escopo – especifica se o padrão se aplica a Classes Objetos Análise, Projeto e Gerência de Sistemas Projeto Final 22 Revisão: Padrões de Projeto Analisar o uso de padrões de projeto para modelar problemas já conhecidos Criação Estrutural Singleton, Factory Method, Abstract Factory, etc Composite, Decorator, Façade, etc Comportamental Command, Observer, State, Strategy, etc O uso dos padrões deve ser justificado Análise, Projeto e Gerência de Sistemas Projeto Final 23 Diagrama de Sequência Diagramas de Sequência apresentam a interação entre um grupo de objetos de um sistema, através de mensagens ou controles, em um determinado cenário Servem para modelar o “funcionamento” do sistema, inclusive a concorrência entre objetos Enfatizam a ordem temporal das mensagens Úteis para compreensão da dinâmica, principalmente para iniciantes na OO Análise, Projeto e Gerência de Sistemas Projeto Final 24 Aplicação Diagramas de Sequência são primariamente utilizados para a atribuição de responsabilidades a cada um dos objetos do sistema - operações Além de servir para descoberta das operações, serve para a modelagem da interação entre os objetos Completam o tripé da análise: Casos de Uso - comportamento externo (funcional) Diagramas de Classes - visão estática Diagramas de Sequência - visão dinâmica Análise, Projeto e Gerência de Sistemas Projeto Final Internos 25 Construção Cada Caso de Uso provê vários cenários Um cenário é uma instância de um caso de uso O Diagrama de Classes mostra os objetos da aplicação Fazemos um Diagrama de Sequência mostrando a interação dos objetos em um determinado cenário, ou seja, para cada cenário de um Caso de Uso teremos um diagrama Análise, Projeto e Gerência de Sistemas Projeto Final 26 Construção (cont.) Diagrama de Classes efehc oiránoicnuF oãçacolA * odacola *..1 rodacola Caso de Uso Nome: Reservando Passagem Atores: Agente Curso de Eventos 1- Ujfsaj jfklsdj jfdkkj fl als ;a f a; 2- jfaskdjf lj kl;k kdfjasdkl lkssss 3- jsdkfklk lkkkk lopjfa[ pokfsao opw 4- skdjfI)kkk;’PIO lkkfapp kjadfp 5- lkLKO oeppae fokkzp;xp pokf ;lp[ Alternativas 1- Ijfksa kJFKJ a;lkj ;kjfklasojk;a oãsiviD 1 * odanidrobus oãçacolA atad MeioTransporte Operações ... Carro Navio Diagrama de Sequência Janela de Entrada de Pedido uma linha de Pedido um Pedido um item em Estoque criar() * criar() verifica () [verfifica = true] retirar_item() refabricar_item() [refabricar_item = true] new um Item de Refabricação Objetos [verfifica = true] new um Item de Entrega Cenário Interação Análise, Projeto e Gerência de Sistemas Projeto Final 27 Exemplo Janela de Entrada de Atendente Pedido Informa dados criar() :Item_Estoque :Pedido * criar() :linha_Pedido verificar () [verfifica = true] retirar_item() refabricar_item() [refabricar_item = true] criar () :Item_Refabricação [verificar = true] criar () :Item_Entrega data_entrega Análise, Projeto e Gerência de Sistemas Projeto Final 28 Exemplo : Registro : Catálogo Produto : Lista Especificações : Venda li :LinhaDeItem : Lista ItensDeVenda entrarItem(id, qtd) obterEspec(id) buscarEspec(id) criarLinhaDeItem (esp, qtd) criar(esp, qtd) adicionar(li) Análise, Projeto e Gerência de Sistemas Projeto Final 29 Diagrama de Estados Mostra as sequências de estados que um objeto ou uma interação assume em sua vida, em resposta a estímulos recebidos, juntamente com suas respostas e ações Complementa a classe e relaciona os possíveis estados que os objetos da classe podem ter e quais eventos podem causar a mudança de estado (transição) Análise, Projeto e Gerência de Sistemas Projeto Final 30 Exemplo Pedido enviado Registrando pedido Alteração de pedido solicitada Alterando pedido Pedido para análise requisitado Analisando pedido Pedido não pode ser atendido no momento Cancelando pedido Pedido será cancelado Pedido p/ aprovação Pedido já pode ser atendido Colocando pedido em pendência Análise, Projeto e Gerência de Sistemas Cancelamento de pedido solicitado Pedido cancelado Aprovando pedido Pedido será atendido Pedido atendido Atendendo pedido Projeto Final 31 Proposta de Componentes Propor componentes para o novo sistema apenas componentes considerados necessários pelo grupo Especificar as classes para cada componente Definir as interfaces de cada componente Especificar as operações de cada interface (incluindo a assinatura de cada operação) A Análise, Projeto e Gerência de Sistemas proposta deve ser justificada Projeto Final 32 Referências 1. The Unified Modeling Language User Guide By Booch, Grady / Rumbaugh, Jim / Jacobson, Ivar; ISBN 0201571684. 2. Understanding UML: The Developer's Guide, Harmon, Paul / Watson, Mark; ISBN 1558604650. 3. Utilizando UML e Padrões: Larman, Craig; ISBN 8536303581 4. Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a Objetos, Gamma, Erich / Helm, Richard / Johnson, Ralph / Vlissides, John; ISBN 8573076100 5. http://hillside.net/patterns/ Análise, Projeto e Gerência de Sistemas Projeto Final 33 Documentação Gerada Introdução Apresentação da empresa (o cliente) Objetivos gerais do projeto Estrutura do documento Modelagem de Negócio Características da empresa (descrição, estrutura organizacional, recursos de informática, expectativa do cliente e processo atual ) Processos de negócio (Casos de uso de negócio) Problemas identificados Necessidades detectadas Requisitos Diagrama de Casos de Uso e descrições Requisitos Suplementares Alternativas de Solução Descrição de cada alternativa Análise comparativa das alternativas Alternativa recomendada pela equipe Alternativa escolhida pelo usuário e critério de escolha Análise, Projeto e Gerência de Sistemas Projeto Final 34 Documentação Gerada Análise e Projeto Modelo Conceitual (diagrama de classes conceituais) Modelo de Projeto - Diagrama de Classes de Projeto • tipos de atributos e operações • classes abstratas e interfaces • padrões de projeto • pacotes, etc. - Justificativa para o uso de Padrões de Projeto - Diagramas de Sequência • apenas para os casos de uso de sistema principais - Diagrama de Estados (se necessário) - Proposta de Componentes Glossário Anexos Análise, Projeto e Gerência de Sistemas Projeto Final 35