abr-17 Projetar Subsistema Projetar subsistema
Fluxo de análise e projeto abr-17 Analisar Serviços Arquiteto de Software Projetar Serviços Projetar Arquitetura Revisor de projeto Prototipar Interface gráfica Arquiteto de Informação Check List bla bla bla blabla Analisar Casos de Uso Projetar Casos de Uso Projetar Subsistemas decisões do arquiteto <<subsystem>> Analista de Sistemas Revisar Projeto Projetar classes Projetar Base de Dados Projetista de Banco de Dados Fluxo de análise e projeto
Objetivos desta atividade abr-17 Objetivos desta atividade Identificar elementos internos ao subsistema (classes e outros subsistemas) que realizem a interface do subsistema O comportamento da interface deve ser distribuído entre estes elementos, de forma análoga à análise e ao projeto de casos de uso Este processo pode gerar novas dependências do subsistema com elementos externos A atividade é realizada uma vez para cada subsistema, podendo ser recursiva (gerando outros subsistemas) Aplicável tanto ao RUP como a SOA Projetar subsistema
Visão geral dos artefatos abr-17 Visão geral dos artefatos Subsistemas Realização de Caso de Uso Analista de Sistemas Projetar Subsistema Classes de Projeto Subsistemas (atualizados) Projetar subsistema
Passos para Projetar Subsistema abr-17 Passos para Projetar Subsistema Identificar elementos de projeto do subsistema (classes e/ou outros subsistemas) e distribuir o comportamento do subsistema entre eles Documentar os elementos do subsistema Descrever as dependências do subsistema com elementos externos Projetar subsistema
abr-17 Passo 1. Identificar elementos de projeto do subsistema e distribuir o comportamento do subsistema entre eles Identifique novas classes e subsistemas que, cooperativamente, realizem o comportamento do subsistema crie novos elementos de projeto, ou reuse elementos existentes O comportamento do subsistema pode ser identificado a partir das operações na interface As operações podem ser realizadas por classes internas ou subsistemas internos Observando o comportamento que o subsistema deve implementar, descrito em sua interface, são identificadas novas classes e/ou subsistemas necessários para implementar os serviços desejados. Projetar subsistema
Incorpore persistência, quando aplicável Passo 1. Identificar elementos de projeto do subsistema e distribuir o comportamento do subsistema entre eles abr-17 Desenvolva um ou mais diagramas de interação para cada operação da interface, alocando responsabilidades aos elementos de projeto os diagramas ajudam a encontrar os elementos! Incorpore persistência, quando aplicável Diagramas de interação podem ajudar a encontrar os elementos, pois descrevem como o subsistema realiza cada uma de suas operações. Projetar subsistema
Diagramas de interação para subsistemas abr-17 Cliente subsistema Fachada subsistema Elemento de projeto1 Elemento de projeto2 responsabilidade() Op1() Responsabilidade do subsistema Op2() Interações internas do subsistema Op3() Op4() Note que a interface não faz parte do diagrama já que o objetivo é mostrar interações entre elementos internos Projetar subsistema
QIB – Subsistema de Comunicação com a Operadora de Cartão abr-17 Diagrama de seqüência A classe ArquivoPagamento modela o formato do arquivo aceito pela operadora. A fachada se comporta como um controlador. O método criarCodigoDeEnvio() gera um número que identifica esta transmissão. A classe ProtocoloOperadoraCartao implementa o protocolo de comunicação com a operadora. Neste exemplo, após o envio, a classe envia o pedido de confirmação (baseado no número da transmissão). Projetar subsistema
QIB – Subsistema de Comunicação com a Operadora de Cartão abr-17 Diagrama de colaboração Projetar subsistema
Passo 2. Documentar os elementos do subsistema abr-17 A estrutura interna do subsistema é definida neste passo, através de diagrama(s) de classe incluindo os relacionamentos entre elementos de projeto A técnica usada é a mesma usada na atividade Analisar caso de uso As mensagens trocadas entre os objetos apontam as responsabilidades Os links entre objetos indicam os relacionamentos Projetar subsistema
QIB – Subsistema de Comunicação com a Operadora de Cartão abr-17 Diagrama de classes ArquivoPagamento ISubsistemaComunicacaoOperadoraCartao enviar() <<Interface>> ProtocoloOperadoraCartao FachadaComunicacaoOperadoraCartao PagamentoCartao Projetar subsistema
Passo 3. Descrever dependências do subsistema abr-17 Os passos anteriores identificaram os elementos internos, com as respectivas responsabilidades, e as associações entre esses elementos O objetivo aqui é documentar associações com elementos externos necessários à realização da interface do subsistema Projetar subsistema
Descrevendo Dependências: Notação abr-17 Descrevendo Dependências: Notação Dependência de um subsistema Dependência na interface! Cliente <<subsystem>> Fornecedor Dependência de um pacote <<subsystem>> Cliente Suporte Projetar subsistema
QIB – Subsistema de Comunicação com a Operadora de Cartão abr-17 Dependências controladores transacao Projetar subsistema
Exercício – Qualiti Internet Banking abr-17 Dado: Os subsistemas envolvidos no caso de uso Realizar DOC, suas interfaces e seus relacionamentos com outros elementos de projeto Produzir: Diagrama de interação para cada operação na interface Diagrama de classes para os elementos internos do subsistema Projetar subsistema