projetar serviços vítor braga – [email protected]. objetivos da aula apresentar os passos...
TRANSCRIPT
Projetar ServiçosVí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
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 ?