Projetar Serviços Vítor Braga – vtb@cin.ufpe.br. Objetivos da aula Apresentar os passos...

Post on 18-Apr-2015

104 views 0 download

Transcript of Projetar Serviços Vítor Braga – vtb@cin.ufpe.br. Objetivos da aula Apresentar os passos...

Projetar ServiçosVítor Braga – vtb@cin.ufpe.br

Objetivos da aula Apresentar os passos necessários para

realizar a atividade projetar Serviços Discutir e mostrar o passo a passo para

a construção dos artefatos

Relembrando ...

Visão geral (Exemplo: RUP)

Visão geral

Especificação do modelo de negócios

Analisar serviços

Implementação

TesteAvaliação

PlanejamentoInicial

Planejamento

Modelagem do Negócio

Requisitos

Projetar Serviços

Especificação do Modelo de Negócio

Analisar Serviços

Projetar Serviços

Com

pu

tati

on

Ind

ep

en

den

tM

od

el (C

IM)

Pla

tform

Ind

ep

en

den

tM

od

el (P

IM)

Pla

tform

Sp

ecifi

cM

od

el

(PS

M)

MDATerms

MDES

OA

Fluxo de Atividades

Identificar Serviços [Arquitetura dos Serviços]

Refinar Serviços

[Modelo de Interação dos Serviços]

[Modelo de Informação Refinado]

Identificar Componentes

[Modelo de Componentes dos Serviços]

Fluxo de Atividades

Identificar Serviços [Arquitetura dos Serviços]

Refinar Serviços

[Modelo de Interação dos Serviços]

[Modelo de Informação Refinado]

Identificar Componentes

[Modelo de Componentes dos Serviços]

Passos para Identificar Serviços

1. Empacotar Casos de Uso2. Construir Arquitetura de Serviços3. Identificar Serviços de Entidades5. Revisar Resultados

Operadora do DOC

Desbloquear Talõesde Cheque

Efetuar Login

Alterar Senha

Consultar Saldo

Consultar Extrato

Consultar Qualiti CardRealizar Transferência

Consultar Cheques

Solicitar Talões de Cheque

Realizar DOC

ClienteAtor

Operadora Cartão de Crédito

Efetuar Pagamento do Qualiti Card

Mostrar Dados daConsulta

<<include>>

<<include>>

ClienteAtor

Realizar Doc

Realizar Transferência

Operadora Doc

Controle Cheque

Controle de Acesso

Controle Conta

Controle Qualit Card

Operadora de Cartão de Crédito

ClienteAtor

Realizar Doc

Operadora Doc

Controle Cheque

Controle de Acesso

Controle Conta

Controle Qualit Card

Operadora de Cartão de Crédito

Services Contracts

Cliente Front-end<<consumer>>

Sistema back-end<<participant>>

Operadora DOC<<participant>>

Operadora Cartão<<participant>>

Controle de Cheque<<Service Contract>>

Controle de Acesso<<Service Contract>>

Controle de Conta<<Service Contract>>

Controle Qualiti Card<<Service Contract>>

Realiazar Transferencia<<Service Contract>>

Relizar Doc<<Service Contract>>

consumer

consumer

consumer

provider

provider

provider

provider

consumer

consumer

Servico Operadora Cartao<<Service Contract>>

Servico Operadora Doc<<Service Contract>>

provider

comsumer

consumer

provider

provider

3. Identificar Serviços de entidades

ContaintInternetConta PagamentoCartãoComprovante

Serviço Conta<<Service Contract>>

Serviço Conta Internet<<Service Contract>>

Serviço PagamentoCartão<<Service Contract>>

Interação dos Serviços

Sistemática “semelhante” Distribuir comportamento entre as classes

Para cada Serviço (service contract) Diagrama de seqüência (coreografia dos

serviços) Surgimento de novas entidades

Atualizar o Modelo de Informação do negócio

: Cliente Front-end : Controle de Acesso

: Serviço Conta Internet

1 : logar(login,senha)

2 : existe(login, senha)

3 : ContaInternet

4 : sessão

5 : alterarSenha(login,senhaAntiga, SenhaNova)

6 : existe(login,senha)

7 : ContaInternet

8 : atualizar(ContaInternet)

9 : Conta Internet10 : sessão

Modelo de informação atualizado

ContaintInternet

+login+senha

Conta

+numero+saldo

PagamentoCartão

+numero da fatura+data+valor+numero da conta

Modelo de Componentes dos serviços

ServiçoControleAcesso<<Service Contract>>

+logar(login, senha)+alterarSenha(login, senhaAntiga, senhaNova)

Servico Cadastro ContaInternet<<Service Contract>>

+existe(login, senha)+atualizar(login, senha)

ServicoQualitiCard<<Service Contract>>

+EfetuarpagamentoQualitCard()

Componente ContaInternet

Componente Controle de Acesso

Componente Qualiti Card

Componente Cliente Front-end

Servico Operadora Cartao<<Service Contract>>

+enviar()

Serviço Pagamento cartão<<Service Contract>>

Compoente Operadora Cartão

Componente Pagamento cartão

Componente Cadastro ContaBancariaServiço Cadastro ContaBancaria

<<Service Contract>>

Especificação do Modelo de Negócio

Analisar Serviços

Projetar Serviços

Com

pu

tati

on

Ind

ep

en

den

tM

od

el (C

IM)

Pla

tform

Ind

ep

en

den

tM

od

el (P

IM)

Pla

tform

Sp

ecifi

cM

od

el

(PS

M)

MDATerms

MDES

OA

Projetar Serviços

Fluxo de Atividades

Projetar Arquitetura do Sistema

Front-end Design Back-end Design

Projetar Arquitetura

1. Refinar Análise de Serviços2. Definir Padrão de Arquitetura

1. Refinar Análise de Serviços Baseado no:

Conhecimento do negócio Modelo de interação dos serviços Modelo de Componentes dos serviços

Analisar se os contratos de serviços e componentes identificados até o momento Empacotamento foi correto? Todos os componentes de front-end foram

identificados ? Podemos “agrupar” serviços semelhantes? Todas as capacidades foram identificadas?

ClienteAtor

Realizar Doc

Realizar Transferência

Operadora Doc

Controle Cheque

Controle de Acesso

Controle Conta

Controle Qualit Card

Operadora de Cartão de Crédito

ClienteAtor

Realizar Doc

Operadora Doc

Controle Cheque

Controle de Acesso

Controle Conta

Controle Qualit Card

Operadora de Cartão de Crédito

ServiçoControleAcesso<<Service Contract>>

+logar(login, senha)+alterarSenha(login, senhaAntiga, senhaNova)

Servico Cadastro ContaInternet<<Service Contract>>

+existe(login, senha)+atualizar(login, senha)

ServicoQualitiCard<<Service Contract>>

+EfetuarpagamentoQualitCard()

Componente ContaInternet

Componente Controle de Acesso

Componente Qualiti Card

Componente Cliente Front-end

Servico Operadora Cartao<<Service Contract>>

+enviar()

Serviço Pagamento cartão<<Service Contract>>

Compoente Operadora Cartão

Componente Pagamento cartão

Componente Cadastro ContaBancariaServiço Cadastro ContaBancaria

<<Service Contract>>

ServiçoControleAcesso<<Service Contract>>

+logar(login, senha)+alterarSenha(login, senhaAntiga, senhaNova)

Servico Cadastro ContaInternet<<Service Contract>>

+existe(login, senha)+atualizar(login, senha)

ServicoQualitiCard<<Service Contract>>

+EfetuarpagamentoQualitCard()

Componente ContaInternet

Componente Controle de AcessoComponente Qualiti Card

Componente Cliente Front-end

Servico Operadora Cartao<<Service Contract>>

+enviar()

Serviço Pagamento cartão<<Service Contract>>

Compoente Operadora Cartão

Componente Pagamento cartão Componente Cadastro ContaBancaria

Serviço Cadastro ContaBancaria<<Service Contract>>

2. Definir Padrão de Arquitetura O arquiteto pode seguir um padrão já

existente para estruturar a aplicação O arquiteto também pode definir novos

padrões ou atualizar orientações já existentes

Identificar oportunidades de reuso: serviços e componentes disponíveis no mercado Serviços e componentes de aplicações já

desenvolvidas Serviços e componentes que podem se tornar

reusáveis para outros projetos

Projetar Arquitetura

1. Refinar Análise de Serviços

2.Definir Padrão de Arquitetura

2. Definir Padrão de Arquitetura

O Arquiteto deve levar em consideração as tecnologias que serão usadas: Ex: .net, java, flash, C++Todos os serviços com a mesma

tecnologiaComo será a integração do Front e

back-end

Necessidades do negócio Além do sistema web

Acessado por Iphone e desktop (windows, mac e linux)

O ambiente de produção é ser Windows Server 2003 com .net framework 2.0 e banco de dados sql server 2005

Definição da Arquitetura Interface web=> ASP.NET Iphone=> Aplicação Desktop=> aplicação Java Integração com o front-end será feito via

web service Os componentes serão implementados do

zero Os componentes de acesso a dados

deverão implementar o padrão Repositório

Componente ContaInternet

Componente Controle de AcessoComponente Qualiti Card

Compoente Operadora Cartão

Compoente CadastrotransacaoComponente Cadastro ContaBancaria

Front-end Iphone<<front-end>>

Desktop<<Front-end>>

Front-end Web<<Front-end>>

IServicoQualitCard

+EfetuarpagamentoQualitCard()

ICadastroTransacao

+ConsultarSaldo()+ConsultarExtrato()+RealizarTransferencia()

IServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

ICadastroContaBancaria

+inserir()+remover()+atualizar()+consultar()

IServicoOperadoraCartao

+enviar()

ICadastroContaInternet

+inserir(ContaInternet)+remover(ContaInternet)+atualizar(ContaInternet)+existe(login, senha)

FachadaWebservice

IFachadaWebServices

O que aconteceria se todos os componentes fossem implementados como serviços?

Fluxo de Atividades

Projetar Arquitetura do Sistema

Front-end Design Back-end Design

Projetar Back-end1. Projetar Componentes2. Atualizar Modelo de Informação3. Agrupar classes 4. Projetar Classes e Banco de dados

Projetar componentesPara cada componente:

1. Definir padrões de projetos utilizados2. Fazer Diagrama de classes3. Fazer Diagrama de sequência para

todas as operação de sua interface

Componente ContaInternet

Componente Controle de AcessoComponente Qualiti Card

Compoente Operadora Cartão

Compoente CadastrotransacaoComponente Cadastro ContaBancaria

Front-end Iphone<<front-end>>

Desktop<<Front-end>>

Front-end Web<<Front-end>>

IServicoQualitCard

+EfetuarpagamentoQualitCard()

ICadastroTransacao

+ConsultarSaldo()+ConsultarExtrato()+RealizarTransferencia()

IServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

ICadastroContaBancaria

+inserir()+remover()+atualizar()+consultar()

IServicoOperadoraCartao

+enviar()

ICadastroContaInternet

+inserir(ContaInternet)+remover(ContaInternet)+atualizar(ContaInternet)+existe(login, senha)

FachadaWebservice

IFachadaWebServices

Diagrama de classe: Fachada Webservice

IFachadaWebServices

+logar()+efatuarPagamentoQualitCard()+alterarSenha()

FachadaWebservice

+efetuarpagamentoQualitCard()+logar()+alterarSenha()

IServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

IServicoQualitCard

+EfetuarpagamentoQualitCard()

Componente ContaInternet

Componente Controle de AcessoComponente Qualiti Card

Compoente Operadora Cartão

Compoente CadastrotransacaoComponente Cadastro ContaBancaria

Front-end Iphone<<front-end>>

Desktop<<Front-end>>

Front-end Web<<Front-end>>

IServicoQualitCard

+EfetuarpagamentoQualitCard()

ICadastroTransacao

+ConsultarSaldo()+ConsultarExtrato()+RealizarTransferencia()

IServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

ICadastroContaBancaria

+inserir()+remover()+atualizar()+consultar()

IServicoOperadoraCartao

+enviar()

ICadastroContaInternet

+inserir(ContaInternet)+remover(ContaInternet)+atualizar(ContaInternet)+existe(login, senha)

FachadaWebservice

IFachadaWebServices

Diagrama de classes: Componente Controle de acesso

ServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

ICadastroContaInternet

+inserir(ContaInternet)+remover(ContaInternet)+atualizar(ContaInternet)+existe(login, senha)

ContaintInternet

+login+senha

IServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

Compoente Controle de acesso: Efetuar Login

: FachadaWebservice : ServicoControleAcesso : ICadastroContaInternet

1 : logar() 2 : existe()

Componente ContaInternet

Componente Controle de AcessoComponente Qualiti Card

Compoente Operadora Cartão

Compoente CadastrotransacaoComponente Cadastro ContaBancaria

Front-end Iphone<<front-end>>

Desktop<<Front-end>>

Front-end Web<<Front-end>>

IServicoQualitCard

+EfetuarpagamentoQualitCard()

ICadastroTransacao

+ConsultarSaldo()+ConsultarExtrato()+RealizarTransferencia()

IServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

ICadastroContaBancaria

+inserir()+remover()+atualizar()+consultar()

IServicoOperadoraCartao

+enviar()

ICadastroContaInternet

+inserir(ContaInternet)+remover(ContaInternet)+atualizar(ContaInternet)+existe(login, senha)

FachadaWebservice

IFachadaWebServices

Diagrama de classes

ICadastroContaInternet

+inserir(ContaInternet)+remover(ContaInternet)+atualizar(ContaInternet)+existe(login, senha)

ServicoCadastroContaInternet

IRepositorioContaInternet

+inserir(ContaInternet)+remover(ContaInternet)+atualizar(ContaInternet)+existe(login, senha)

RepositorioContaInternetBDR

Diagrama de sequencia

: ServicoControleAcesso : ServicoCadastroContaInternet : RepositorioContaInternetBDR

1 : existe() 2 : existe()

Projetar componentesPara cada componente:

1. Definir padrões de projetos utilizados2. Fazer Diagrama de classes3. Fazer Diagrama de sequência para

todas as operação de sua interface4. Agrupar classes em pacotes

Fazer Diagrama de seqüência para todas as operação das interfaces dos componentes

Para facilitar o entendimento, fazer o fluxo completo para as operações da Fachada

Diagramas de Seqüência

Logar (Completo)

: FachadaWebservice : IServicoControleAcesso : ICadastroContaInternet : IRepositorioContaInternet

1 : logar() 2 : existe() 3 : existe()

FachadaWebservice

+efetuarpagamentoQualitCard()+logar()+alterarSenha()

IFachadaWebServices

ServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

ICadastroContaInternet

IServicoControleAcesso

+logar(login, senha)+alterarSenha(login, senhaAtual, SenhaNova)

CadastroContaInternet

IRepositorioContaInternet

RepositorioContaInternetBDR

IServicoQualitCard

+EfetuarpagamentoQualitCard()

ServicoQualitCard

ICadastroContaBancaria

CadastroContaBancaria

IRepositorioContaBancariaBDR

RepositorioContaBancariaBDR

IServicoOperadoraCartao

FachadaOperadoraCartão

IServiçoCadastroTransaçoes

CadastroTransacoes

IRepositorioTransacoesBDR

RepositorioTransacoesBDR

Projetar Back-end1. Projetar Componentes2. Atualizar Modelo de Informação3. Projetar Classes e Banco de dados

Modelo de InformaçãoContaintInternet

+login+senha

ContaBancaria

+numero+saldo

Transacao

+numero da fatura+data+valor+numero da conta

1 1

1

0..*

Comporavante

PagamentoCartao

+numeroFatura

1

1

Projetar Back-end1. Projetar Componentes2. Atualizar Modelo de Informação3. Agrupar classes4. Projetar Classes e Banco de dados

Fluxo de Atividades

Projetar Arquitetura do Sistema

Front-end Design Back-end Design

Projetar Front-end Baseado no protótipo da interface,

tecnologias utilizadas e integração front-back end: Diagrama de classe Diagramas de sequencia

Front-end Iphone<<front-end>>

Desktop<<Front-end>>

Front-end Web<<Front-end>>

FachadaWebservice

IFachadaWebServices

Front-end

TelaLogin

+loginText: TextBox+senhaText: TextBox+entrarButton: Button

+efetuarlogin()

Front-end: web

TelaLogin

+loginText: TextBox+senhaText: TextBox+entrarButton: Button

+efetuarlogin()

FachadaWebservice

+efetuarpagamentoQualitCard()+logar()+alterarSenha()

IFachadaWebServices

+logar()+efatuarPagamentoQualitCard()+alterarSenha()

Front-end: web

: TelaLogin : IFachadaWebServices

: ClienteAtor

1 : efetuarlogin()

2 : logar()

3 : registrarSessao()

Front-end

Front-end Iphone<<front-end>>

Desktop<<Front-end>>

Front-end Web<<Front-end>>

FachadaWebservice

IFachadaWebServices

TelaLogin

+loginText: TextField+senhatext: TextField+logarButton: J Button

+logar()

Diagrama de Classes

TelaLogin

+loginText: TextField+senhatext: TextField+logarButton: J Button

+logar()

IComunicacaoWebService

ComunicacaoWebService

+logar()

Diagrama de Sequencia

: TelaLogin

: ComunicacaoWebService : ClienteAtor

1 : efeturarLoginr()

2 : logar()

3 : callWebService()

Dúvidas ?