Projetar Arquitetura Apresentar os passos necessários para realizar a atividade projetar arquitetura e discutir seus artefatos Apresentar o padrão de arquitetura em camadas Apresentar e exercitar o uso de padrões de projeto Apresentar o Padrão MVC Considerações sobre concorrência e distribuição Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 2 Copyright © 2006 Qualiti. Todos os direitos reservados. Objetivos Analisar Serviços Projetar Arquitetura Projetar Serviços Revisor de projeto Prototipar Interface gráfica Arquiteto de Informação Analisar Casos de Uso Projetar Casos de Uso Check List bla bla bla blabla Projetar Subsistemas Analista de Sistemas Projetar classes Revisar Projeto Projetar Base de Dados Projetista de Banco de Dados Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 3 Copyright © 2006 Qualiti. Todos os direitos reservados. Arquiteto de Software O que foi feito até agora - Identificação das classes de análise (fronteira, entidade e controle) Identificação das classes persistentes Distribuição do comportamento do caso de uso entre as classes • Elaboração do diagrama de seqüência - • Geração do diagrama de colaboração Identificação das responsabilidades das classes Identificação dos atributos e relacionamentos Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 4 Copyright © 2006 Qualiti. Todos os direitos reservados. Análise de caso de uso - para cada caso de uso: Objetivos desta atividade Definir elementos de projeto (classes de projeto, cápsulas e subsistemas) e organizálos em pacotes Definir a estrutura da aplicação No final do projeto da arquitetura tudo deve estar pronto para que os projetistas possam detalhar as realizações dos casos de uso de maneira uniforme! Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 5 Copyright © 2006 Qualiti. Todos os direitos reservados. Avaliar o conjunto das classes de análise Visão geral dos artefatos Modelo de Casos de Uso Arquiteto Modelo de Análise e Projeto (classes de análise) Copyright © 2006 Qualiti. Todos os direitos reservados. Documento de Requisitos Projetar Arquitetura Mapeamento das Classes de Análise em Elementos de Projeto Documento da Arquitetura Modelo de Análise e Qualiti Software Processes Projeto (classes de projeto, cápsulas eAnálise e Projeto OO com UML e Padrões| 6 subsistemas) 1. Mapear classes de análise em elementos (classes, cápsulas e subsistemas) de projeto 2. Identificar oportunidades de reuso 3. Definir a estrutura da aplicação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 7 Copyright © 2006 Qualiti. Todos os direitos reservados. Passos para Projetar Arquitetura Identificar classes de projeto Identificar subsistemas Especificar a interface dos subsistemas Fazer o mapeamento 1 classe de análise pode dar origem a 0 ou mais elementos de projeto Mapeamento m : n Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 8 Copyright © 2006 Qualiti. Todos os direitos reservados. Passo 1: Mapear classes de análise em elementos (classes, cápsulas e subsistemas) de projeto Uma classe de análise simples, que representa uma única abstração, é mapeada para uma única classe de projeto - Exemplo: classes de entidade Classes de análise muito simples podem até ser combinadas em uma única classe de projeto Em geral, classes de análise complexas podem ser divididas em várias classes ou transformadas em um pacote ou subsistema Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 9 Copyright © 2006 Qualiti. Todos os direitos reservados. Identificando classes de projeto QIB – Identificando classes de projeto - Tem duas responsabilidades distintas: controle de acesso e conta bancária Na realidade, modelam duas entidades diferentes A separação favorece o reuso - Por exemplo, ContaCorrente é utilizado para clientes que não têm acesso à internet. 1 1 Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 10 Copyright © 2006 Qualiti. Todos os direitos reservados. Classe Conta Identificando subsistemas - Qual a diferença entre subsistemas e pacotes? - Como se descreve o comportamento de um - subsistema? Qual a grande vantagem associada aos subsistemas? Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 11 Copyright © 2006 Qualiti. Todos os direitos reservados. Antes, vamos revisar alguns conceitos... <<interface>> Nome da interface Atributos <<subsystem>> Nome subsistema Métodos Realização <<subsystem>> Nome subsistema Nome da interface Atributos Métodos Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 12 Copyright © 2006 Qualiti. Todos os direitos reservados. Subsistemas e interfaces: notação Subsistemas permitem dividir o sistema em partes independentes (que se tornarão componentes) Cada subsistema pode ser desenvolvido, testado e possivelmente implantado independentemente dos demais Um subsistema pode representar uma abstração (no projeto) de produtos ou sistemas externos que serão incorporados na implementação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 13 Copyright © 2006 Qualiti. Todos os direitos reservados. Por que usar subsistemas? Identificando subsistemas - Classes de fronteira (interfaces com sistemas - externos e com usuários) Classes que fornecem serviços complexos Componentes reusáveis - Software de comunicação - Suporte ao acesso a BD - Estruturas de dados - Bibliotecas de utilitários - Produtos específicos da aplicação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 14 Copyright © 2006 Qualiti. Todos os direitos reservados. Classes de análise Classe A Y() Z() <<interface>> Interface A <<subsystem>> Subsistema X Y() Z() Classe complexa Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 15 Copyright © 2006 Qualiti. Todos os direitos reservados. Identificando subsistemas A classe fachada <<subsystem>> nomeSubsistema Interface FachadaSubsistema ISubSistema Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 16 Copyright © 2006 Qualiti. Todos os direitos reservados. Além da interface, é destacada uma classe fachada de cada subsistema QIB – Efetuar Pagamento do Qualiti Card Identificando subsistemas <<boundary>> ComunicacaoOperadoraCartao enviar() Projeto ISubsistemaComunicacao OperadoraCartao enviar() <<subsystem>> SubsistemaComunicacao OperadoraCartao Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 17 Copyright © 2006 Qualiti. Todos os direitos reservados. Análise QIB – Efetuar Pagamento do Qualiti Card ControladorPagamentoQualitiCard PagamentoCartao ISubsistemaComunicacao OperadoraCartao enviar() FachadaComunicacaoOperadoraCartao Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 18 Copyright © 2006 Qualiti. Todos os direitos reservados. Contexto do subsistema Passo 2. Identificar oportunidades de reuso - Similaridades entre pacotes e subsistemas Externas ao sistema - Componentes disponíveis no mercado - Componentes de aplicações já desenvolvidas - Componentes que podem se tornar reusáveis para outros projetos Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 19 Copyright © 2006 Qualiti. Todos os direitos reservados. Internas ao sistema A partir das interfaces de subsistemas ou componentes existentes analisar onde estes podem ser reutilizados Para um candidato a subsistema - - Procure interfaces similares (podendo requerer engenharia reversa de subsistemas existentes) Tente adaptar a interface nova às existentes, ou tornar as existentes mais gerais Substitua a interface nova por existentes Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 20 Copyright © 2006 Qualiti. Todos os direitos reservados. Identificando oportunidades de reuso Definir as camadas da aplicação Determinar o meio de armazenamento que será utilizado Agrupar as classes, cápsulas e protocolos em pacotes e especificar a fachada da aplicação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 21 Copyright © 2006 Qualiti. Todos os direitos reservados. Passo 3. Definir a estrutura da aplicação O arquiteto pode seguir um padrão já existente para estruturar a aplicação Se o arquiteto adotar uma estrutura diferente do padrão, deve descrevê-la no Documento da Arquitetura O arquiteto também pode definir novos padrões ou atualizar orientações já existentes Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 22 Copyright © 2006 Qualiti. Todos os direitos reservados. Definir as camadas da aplicação Estruturação em camadas - interface com o usuário (GUI) - comunicação - regras de negócio - acesso a dados Interface com o usuário (GUI) Comunicação Negócio Dados Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 23 Copyright © 2006 Qualiti. Todos os direitos reservados. Separação do código: Benefícios - Dividir para conquistar - Separação de conceitos - Reusabilidade - Extensibilidade Mudanças em uma camada não afetam as outras, desde que as interfaces sejam preservadas - plug-and-play Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 24 Copyright © 2006 Qualiti. Todos os direitos reservados. Modularidade: Uma mesma versão de uma camada trabalhando com diferentes versões de outra camada - várias GUIs para a mesma aplicação - vários mecanismos de persistência suportados - pela mesma aplicação várias plataformas de distribuição para acesso a uma mesma aplicação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 25 Copyright © 2006 Qualiti. Todos os direitos reservados. Benefícios Responsável por implementar a lógica do negócio Classes inerentes ao domínio da aplicação: - classes básicas do negócio - coleções de negócio - fachada do sistema Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 26 Copyright © 2006 Qualiti. Todos os direitos reservados. Camada de negócios Representam conceitos básicos do domínio da aplicação Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 27 Copyright © 2006 Qualiti. Todos os direitos reservados. Classes básicas do negócio Representam conjuntos de objetos das classes básicas Responsáveis pela inclusão, remoção, atualização e consultas a instâncias das classes básicas Encapsulam as verificações e validações inerentes ao negócio Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 28 Copyright © 2006 Qualiti. Todos os direitos reservados. Coleções de negócio Segue o padrão de projeto Facade Representa os serviços oferecidos pelo sistema Centraliza as instâncias das coleções de negócio e/ou controladores Gerencia as transações do sistema Fachada Fachada efetuarPagamentoQualitiCard() CadastroContas CadastroPagamentos Cartao ControladorPagamento QualitiCard CadastroContas CadastroPagamentos Cartao Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 29 Copyright © 2006 Qualiti. Todos os direitos reservados. Fachada do sistema Responsável pela manipulação da estrutura física de armazenamento dos dados Isolam o resto do sistema do meio físico usado Classes coleções de dados Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 30 Copyright © 2006 Qualiti. Todos os direitos reservados. Camada de dados Executam inclusões, remoções, atualizações e consultas a instâncias das classes básicas no meio de armazenamento usado Implementadas de acordo com o meio físico usado RepositorioContasBDR Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 31 Copyright © 2006 Qualiti. Todos os direitos reservados. Coleções de dados Coleções de dados RepositorioContasBDOO RepositorioContasBDR RepositorioContasArquivo Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 32 Copyright © 2006 Qualiti. Todos os direitos reservados. Dependem do meio de armazenamento! Independência do meio de armazenamento Copyright © 2006 Qualiti. Todos os direitos reservados. Como isolar as coleções de negócio de mudanças na coleção de dados correspondente? CadastroContas <<interface>> RepositorioContas RepositorioContasBDR RepositorioContasArquivo Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 33 Interface negócio-dados Copyright © 2006 Qualiti. Todos os direitos reservados. Sugestão de serviços <<interface>> RepositorioContas inserir(conta: Conta): void atualizar(conta: Conta): void remover(conta: Conta): void consultarConta(login: String): Conta Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 34 Juntando tudo - Visão geral da arquitetura TelaLogin NEGÓCIO TelaPagamentoQualitiCard Fachada ControladorLogin ContaInternet Interfaces negóciodados CadastroContas Internet IRepositorioContasInternet ControladorPagamentoQualitiCard CadastroPagamentosCartao ... PagamentoCartao IRepositorioPagamentosCartao DADOS RepositorioContas InternetBDR RepositorioContas InternetArquivo RepositorioPagamentos CartaoBDR RepositorioPagamentos CartaoBDOO Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 35 Copyright © 2006 Qualiti. Todos os direitos reservados. GUI / Comunicação QIB – Efetuar Login e Efetuar Pagamento do Qualiti Card Mapeamento entre análise e projeto Elementos de Projeto Fachada TelaMenu Data Hora Conta ContaInternet ContaCorrente CadastroContas CadastroContasInternet IRepositorioContasInternet RepositorioContasInternetBDR CadastroContasCorrente IRepositorioContasCorrente RepositorioContasCorrenteBDR CadastroPagamentosCartao CadastroTransacoes IRepositorioTransacoes RepositorioTransacoesBDR ComunicacaoOperadoraCartao SubsistemaComunicacaoOperadoraCartao ISubsistemaComunicacaoOperadoraCartao FachadaComunicacaoOperadoraCartao Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 36 Copyright © 2006 Qualiti. Todos os direitos reservados. Classes de Análise QIB – Efetuar Login e Efetuar Pagamento do Qualiti Card Projeto da arquitetura TelaLogin TelaMenu TelaPagamentoQualitiCard 0..n 1 1 1 0..n Fachada 1 1 1 1 1 ControladorLogin ControladorPagamentoQualitiCard 1 1 1 1 ISubsistemaComunicacao OperadoraCartao 1 1 1 1 1 CadastroContasCorrente CadastroContasInternet 1 Comprovante PagamentoCartao CadastroPagamentosCartao 1 numeroFatura contaBancaria valor Data 1 1 1 1 ContaInternet IRepositorio ContasInternet RepositorioContas InternetBDR IRepositorio ContasCorrente 1 ContaCorrente IRepositorio PagamentosCartao 1 RepositorioContas CorrenteBDR RepositorioPagame ntosCartaoBDR Hora Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 37 Copyright © 2006 Qualiti. Todos os direitos reservados. FachadaComunicacaoOperadoraCartao 0..n Exercício – Qualiti Internet Banking - As classes de análise do caso de uso Realizar Doc A tabela de mapeamento e o projeto de arquitetura de Efetuar Login e Efetuar Pagamento do Qualiti Card Identificar para o Realizar Doc: - subsistemas e suas interfaces elementos de projeto (classes e subsistemas) - Tabela mapeando as classes de análise nos elementos de projeto Diagrama de contexto dos subsistemas (opcional) Projeto da arquitetura com incluindo Realizar DOC Produzir: Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 38 Copyright © 2006 Qualiti. Todos os direitos reservados. Dado: À medida que os elementos de projeto são identificados, a complexidade do modelo vai aumentando Para organizá-lo, os elementos devem ser agrupados em pacotes As camadas guiam essa organização Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 39 Copyright © 2006 Qualiti. Todos os direitos reservados. Agrupar as classes em pacotes Critérios para definição dos pacotes - Agrupa as classes em bibliotecas - Exemplo: cliente, conta, banco, util, etc. Distribuição – usuário - Agrupa as classes por locais de implantação - Exemplo: clienteRecife, clienteSaoPaulo, etc. Segurança - Agrupa as classes por permissão de acesso - Exemplo: gerência, programadores, etc. Evite dependências cíclicas Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 40 Copyright © 2006 Qualiti. Todos os direitos reservados. Acoplamento e Coesão Pacote Global - classes utilitárias Não é necessário explicitar as dependências Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 41 Copyright © 2006 Qualiti. Todos os direitos reservados. Pode ser usado por todos os outros pacotes QIB – Efetuar Login e Efetuar Pagamento do Qualiti Card conta subsistemaComunicacao OperadoraCartao <<global>> util GUI controladores transacao protocolos Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 42 Copyright © 2006 Qualiti. Todos os direitos reservados. Organização de pacotes <<entity collection>> CadastroContasCorrente <<entity collection>> CadastroContasInternet 1 1 1 <<Interface>> IRepositorioContas Corrente <<entity>> ContaCorrente 1 numero saldo <<entity>> 1 ContaInternet login senha 1 <<Interface>> IRepositorioContasInternet getSaldo() debitar() RepositorioContasCorrenteBDR RepositorioContasInternetBDR Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 43 Copyright © 2006 Qualiti. Todos os direitos reservados. QIB – Pacote conta QIB – Pacotes GUI <<subsystem>> subsistemaComunicaca o OperadoraCartao <<global>> util controladores protocolos ISubsistemaComunicacao OperadoraCartao transacao conta Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 44 Copyright © 2006 Qualiti. Todos os direitos reservados. Dependência entre pacotes Exercício – Qualiti Internet Banking - Os elementos de projeto - A estrutura definida para a aplicação Definir os pacotes da aplicação e os elementos que devem estar presentes em cada pacote (incluir os elementos do caso de uso Realizar DOC) Elaborar um diagrama mostrando as dependências entre pacotes (opcional Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 45 Copyright © 2006 Qualiti. Todos os direitos reservados. Dado: