Projetar Serviços
Vítor Braga – [email protected]
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
Requisitos
Modelagem do
Negócio
Especificação do modelo
de negócios
Analisar serviços
Planejamento
Projetar Serviços
Planejamento
Inicial
Implementação
Avaliação
Teste
Platform
Platform
Specific
Independent
Model (PSM) Model (PIM)
Computation
Independent
Model (CIM)
MDA
Terms
S
O
A
M
D
E
Fluxo de Atividades
Fluxo de Atividades
Passos para Identificar Serviços
1. Empacotar Casos de Uso
2. Construir Arquitetura de Serviços
3. Identificar Serviços de Entidades
5. Revisar Resultados
Desbloquear Talões
de Cheque
Efetuar Login
Solicitar Talões de Cheque
Alterar Senha
Consultar Cheques
ClienteAtor
Consultar Saldo
<<include>>
<<include>>
Realizar DOC
Consultar Extrato
Realizar Transferência
Consultar Qualiti Card
Efetuar Pagamento do
Qualiti Card
Operadora do DOC
Operadora Cartão de
Crédito
Mostrar Dados da
Consulta
Controle de Acesso
Controle Cheque
Controle Conta
Realizar Transferência
ClienteAtor
Realizar Doc
Operadora Doc
Controle Qualit Card
Operadora de Cartão de Crédito
Controle de Acesso
Controle Cheque
Controle Conta
ClienteAtor
Realizar Doc
Operadora Doc
Controle Qualit Card
Operadora de Cartão de Crédito
Services Contracts
<<Service Contract>>
Controle de Cheque
consumer
<<Service Contract>>
Realiazar Transferencia
consumer
consumer
<<participant>>
Operadora Cartão
provider
<<participant>>
Sistema back-end
provider
consumer
consumer
provider
comsumer
<<Service Contract>>
Controle de Acesso
<<consumer>>
Cliente Front-end
<<Service Contract>>
Servico Operadora Cartao
provider
<<Service Contract>>
Controle de Conta
provider
<<Service Contract>>
Servico Operadora Doc
provider
<<Service Contract>>
Controle Qualiti Card
<<Service Contract>>
Relizar Doc
consumer
provider
<<participant>>
Operadora DOC
3. Identificar Serviços de entidades
Conta
<<Service Contract>>
Serviço Conta
ContaintInternet
<<Service Contract>>
Serviço Conta Internet
PagamentoCartão
Comprovante
<<Service Contract>>
Serviço PagamentoCartão
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
negócio
o Modelo de Informação do
: Serviço Conta Internet
: Controle de Acesso
: Cliente Front-end
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 Internet
10 : sessão
Modelo de informação atualizado
Conta
+numero
+saldo
ContaintInternet
+login
+senha
PagamentoCartão
+numero da fatura
+data
+valor
+numero da conta
Modelo de Componentes dos serviços
<<Service Contract>>
ServiçoControleAcesso
Componente Controle de Acesso
+logar(login, senha)
+alterarSenha(login, senhaAntiga, senhaNova)
<<Service Contract>>
Servico Cadastro ContaInternet
+existe(login, senha)
+atualizar(login, senha)
Componente Cliente Front-end
<<Service Contract>>
ServicoQualitiCard
+EfetuarpagamentoQualitCard()
Componente Qualiti Card
<<Service Contract>>
Servico Operadora Cartao
+enviar()
<<Service Contract>>
Serviço Cadastro ContaBancaria
<<Service Contract>>
Serviço Pagamento cartão
Com
Platform
Platform
Specific
Independent
Model (PSM) Model (PIM)
Computation
Independent
Model (CIM)
MDA
Terms
S
O
A
M
D
E
Projetar Serviços
Fluxo de Atividades
Projetar Arquitetura
1.
2.
Refinar Análise de Serviços
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?
Controle de Acesso
Controle Cheque
Controle Conta
Realizar Transferência
ClienteAtor
Realizar Doc
Operadora Doc
Controle Qualit Card
Operadora de Cartão de Crédito
Controle de Acesso
Controle Cheque
Controle Conta
ClienteAtor
Realizar Doc
Operadora Doc
Controle Qualit Card
Operadora de Cartão de Crédito
<<Service Contract>>
ServiçoControleAcesso
Componente Controle de Acesso
+logar(login, senha)
+alterarSenha(login, senhaAntiga, senhaNova)
<<Service Contract>>
Servico Cadastro ContaInternet
+existe(login, senha)
+atualizar(login, senha)
Componente Cliente Front-end
<<Service Contract>>
ServicoQualitiCard
+EfetuarpagamentoQualitCard()
Componente Qualiti Card
<<Service Contract>>
Servico Operadora Cartao
+enviar()
<<Service Contract>>
Serviço Cadastro ContaBancaria
<<Service Contract>>
Serviço Pagamento cartão
Com
Componente Cliente Front-end
<<Service Contract>>
ServicoQualitiCard
<<Service Contract>>
ServiçoControleAcesso
+EfetuarpagamentoQualitCard()
+logar(login, senha)
+alterarSenha(login, senhaAntiga, senhaNova)
Componente Qualiti Card
<<Service Contract>>
Serviço Pagamento cartão
Componente Controle de Acesso
<<Service Contract>>
Serviço Cadastro ContaBancaria
<<Service Contract>>
Servico Cadastro ContaInternet
+existe(login, senha)
+atualizar(login, senha)
Componente Pagamento cartão
<<Service Contract>>
Servico Operadora Cartao
+enviar()
Componente Cadastro ContaBancaria
Compoente Operadora Cartão
Componente ContaInternet
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
tecnologia
 Como 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
<<Front-end>>
Front-end Web
<<front-end>>
Front-end Iphone
<<Front-end>>
Desktop
IFachadaWebServices
FachadaWebservice
IServicoControleAcesso
IServicoQualitCard
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNov
+EfetuarpagamentoQualitCard()
Componente Qualiti Card
Componente Controle de Acess
IServicoOperadoraCartao
+enviar()
oente Operadora Cartão
ICadastroContaBancaria
+inserir()
+remover()
+atualizar()
+consultar()
Componente Cadastro ContaBancaria
ICadastroTransacao
+ConsultarSaldo()
+ConsultarExtrato()
+RealizarTransferencia()
Compoente Cadastrotransacao
ICadastroContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
Componente ContaInternet
O que aconteceria se todos
os componentes fossem
implementados como
serviços?
Fluxo de Atividades
Projetar Back-end
1.
2.
3.
4.
Projetar Componentes
Atualizar Modelo de Informação
Agrupar classes
Projetar Classes e Banco de dados
Projetar componentes
Para
1.
2.
3.
cada componente:
Definir padrões de projetos utilizados
Fazer Diagrama de classes
Fazer Diagrama de sequência para
todas as operação de sua interface
<<Front-end>>
Front-end Web
<<front-end>>
Front-end Iphone
<<Front-end>>
Desktop
IFachadaWebServices
FachadaWebservice
IServicoControleAcesso
IServicoQualitCard
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNov
+EfetuarpagamentoQualitCard()
Componente Qualiti Card
Componente Controle de Acess
IServicoOperadoraCartao
+enviar()
oente Operadora Cartão
ICadastroContaBancaria
+inserir()
+remover()
+atualizar()
+consultar()
Componente Cadastro ContaBancaria
ICadastroTransacao
+ConsultarSaldo()
+ConsultarExtrato()
+RealizarTransferencia()
Compoente Cadastrotransacao
ICadastroContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
Componente ContaInternet
Diagrama de classe: Fachada
Webservice
FachadaWebservice
IFachadaWebServices
+efetuarpagamentoQualitCard()
+logar()
+alterarSenha()
+logar()
+efatuarPagamentoQualitCard()
+alterarSenha()
IServicoQualitCard
+EfetuarpagamentoQualitCard()
IServicoControleAcesso
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNova)
<<Front-end>>
Front-end Web
<<front-end>>
Front-end Iphone
<<Front-end>>
Desktop
IFachadaWebServices
FachadaWebservice
IServicoControleAcesso
IServicoQualitCard
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNov
+EfetuarpagamentoQualitCard()
Componente Qualiti Card
Componente Controle de Acess
IServicoOperadoraCartao
+enviar()
oente Operadora Cartão
ICadastroContaBancaria
+inserir()
+remover()
+atualizar()
+consultar()
Componente Cadastro ContaBancaria
ICadastroTransacao
+ConsultarSaldo()
+ConsultarExtrato()
+RealizarTransferencia()
Compoente Cadastrotransacao
ICadastroContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
Componente ContaInternet
Diagrama de classes: Componente
Controle de acesso
ServicoControleAcesso
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNova)
IServicoControleAcesso
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNova)
ICadastroContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
ContaintInternet
+login
+senha
Compoente Controle de acesso:
Efetuar Login
: FachadaWebservice
: ICadastroContaInternet
: ServicoControleAcesso
1 : logar()
2 : existe()
<<Front-end>>
Front-end Web
<<front-end>>
Front-end Iphone
<<Front-end>>
Desktop
IFachadaWebServices
FachadaWebservice
IServicoControleAcesso
IServicoQualitCard
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNov
+EfetuarpagamentoQualitCard()
Componente Qualiti Card
Componente Controle de Acess
IServicoOperadoraCartao
+enviar()
oente Operadora Cartão
ICadastroContaBancaria
+inserir()
+remover()
+atualizar()
+consultar()
Componente Cadastro ContaBancaria
ICadastroTransacao
+ConsultarSaldo()
+ConsultarExtrato()
+RealizarTransferencia()
Compoente Cadastrotransacao
ICadastroContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
Componente ContaInternet
Diagrama de classes
ServicoCadastroContaInternet
ICadastroContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
RepositorioContaInternetBDR
IRepositorioContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
Diagrama de sequencia
: ServicoControleAcesso
: ServicoCadastroContaInternet
1 : existe()
: RepositorioContaInternetBDR
2 : existe()
Projetar componentes
Para
1.
2.
3.
4.
cada componente:
Definir padrões de projetos utilizados
Fazer Diagrama de classes
Fazer Diagrama de sequência para
todas as operação de sua interface
Agrupar classes em pacotes
Diagramas de Seqüência
 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
Logar (Completo)
: IServicoControleAcesso
: FachadaWebservice
1 : logar()
: ICadastroContaInternet
2 : existe()
: IRepositorioContaInternet
3 : existe()
IFachadaWebServices
FachadaWebservice
IServicoQualitCard
+efetuarpagamentoQualitCard()
+logar()
+alterarSenha()
IServicoControleAcesso
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNova)
+EfetuarpagamentoQualitCard()
ServicoControleAcesso
ServicoQualitCard
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNova)
ICadastroContaBancaria
ICadastroContaInternet
IServicoOperadoraCartao IServiçoCadastroTransaçoes
FachadaOperadoraCartão
CadastroTransacoes
CadastroContaBancaria
IRepositorioTransacoesBDR
IRepositorioContaBancariaBDR
RepositorioTransacoesBDR
RepositorioContaBancariaBDR
CadastroContaInternet
IRepositorioContaInternet
RepositorioContaInternetBDR
Projetar Back-end
1.
2.
3.
Projetar Componentes
Atualizar Modelo de Informação
Projetar Classes e Banco de dados
Modelo de Informação
ContaBancaria
ContaintInternet
1
+numero
+saldo
1
+login
+senha
1
0..*
Transacao
+numero da fatura
+data
+valor
+numero da conta
1
1
Comporavante
PagamentoCartao
+numeroFatura
Projetar Back-end
1.
2.
3.
4.
Projetar Componentes
Atualizar Modelo de Informação
Agrupar classes
Projetar Classes e Banco de dados
Fluxo de Atividades
Projetar Front-end
 Baseado
no protótipo da interface,
tecnologias utilizadas e integração frontback end:


Diagrama de classe
Diagramas de sequencia
Front-end
<<Front-end>>
Front-end Web
<<front-end>>
Front-end Iphone
IFachadaWebServices
FachadaWebservice
<<Front-end>>
Desktop
TelaLogin
+loginText: TextBox
+senhaText: TextBox
+entrarButton: Button
+efetuarlogin()
Front-end: web
TelaLogin
+loginText: TextBox
+senhaText: TextBox
+entrarButton: Button
+efetuarlogin()
FachadaWebservice
IFachadaWebServices
+logar()
+efatuarPagamentoQualitCard()
+alterarSenha()
+efetuarpagamentoQualitCard()
+logar()
+alterarSenha()
Front-end: web
: IFachadaWebServices
: TelaLogin
: ClienteAtor
1 : efetuarlogin()
2 : logar()
3 : registrarSessao()
Front-end
<<Front-end>>
Front-end Web
<<front-end>>
Front-end Iphone
IFachadaWebServices
FachadaWebservice
<<Front-end>>
Desktop
TelaLogin
+loginText: TextField
+senhatext: TextField
+logarButton: JButton
+logar()
Diagrama de Classes
TelaLogin
+loginText: TextField
+senhatext: TextField
+logarButton: JButton
+logar()
ComunicacaoWebService
+logar()
IComunicacaoWebService
Diagrama de Sequencia
: TelaLogin
: ClienteAtor
: ComunicacaoWebService
1 : efeturarLoginr()
2 : logar()
3 : callWebService()
Dúvidas ?
Download

Aula 6 -Projetar Serviços - SOA