Post on 18-Apr-2015
Arquitetura Orientado a Serviços
Análise e Projeto de Sistemas – if718
»Mostrar os principais problemas nos processos de desenvolvimento de software
»Apresentar os principais conceitos de Service Oriented Architecture (SOA)
»Apresentar os passos necessários para realizar a atividade analisar Serviços
Objetivo
POR QUE PROJETOS DE SOFTWARE SÃO COMPLICADOS?
Prob
lem
as» Software é abstrato
» Software é complexo
» Requisitos incompletos
» Tecnologia muda muito rápido
» Mudança é inevitável
» Desenvolvimento Baseado em Componentes
» Desenvolvimento Orientado a Aspectos
» Linhas de Produtos de Software» Desenvolvimento Dirigido a Modelos
(Mode-Driven Development - MDD)» Arquitetura Orientada a Serviços
(Service Oriented Architecture - SOA)
Engenharia de Software
O QUE É ARQUITETURA ORIENTADA A SERVIÇOS ?
SOA
Confusão com o Termo Service Oriented Computing
“SOA é, basicamente, um modelo de arquitetura de que beneficia a eficiência, agilidade e produtividade no desenvolvimento de aplicações e está alinhado com os objetivos de “service oriented computing” Thomas Erl
SOA
Estilo de arquitetura onde as funcionalidades de aplicações existentes são disponibilizadas na forma de serviços
SOA
O que são serviços?
»Serviço é um componente que atende a uma função de negócio (business function). Ele pode receber e responder requisições ocultando os detalhes de sua implementação.
Desacoplados em relação ao cliente/consumidorDescritos através de contratos de operações
Como Projetar Serviços?
SOA: Vantagens
Serviços são coleções de “capacidade”
Assim como pessoas, um serviço pode prover múltiplas capacidades.
Classificação dos Serviços
• Quando estamos modelando os serviços, fica evidente que podemos classifica-los em função:– Tipo de logica que encapsulam– Potencial de Reuso – Como a logica implementada se relaciona com o
domínio da aplicação• Por isso, podemos classificar os serviços:
– Serviços de entidades– Serviços de tarefas– Serviços de utilidade
Tipos Serviços
Analisar Serviços
Contexto
Arquiteto de Informação
Analisar Casos de Uso
Revisar Projeto
Projetar Arquitetura
Projetista deBanco de Dados
Arquiteto de Software
Revisor de projeto
Projetar Casos de Uso
Projetar Subsistemas
Projetar Base de Dados
Analista deSistemas
decisões doarquiteto
<<subsystem>>
CheckList bla bla
bla
blabla
Projetar classes
Prototipar Interface gráfica
Analisar Serviços
ProjetarServiços
»Visão inicial da arquitetura do sistema
»Sistemática para identificação dos serviços e componentes
“Análise” diferente do RUP
Objetivos
Passo a Passo
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]
Para Identificar Serviços:
1. Empacotar Casos de Uso2. Construir Arquitetura de Serviços3. Identificar Serviços de Entidades5. Revisar Resultados
Para Identificar Serviços:
1. Empacotar Casos de Uso2. Construir Arquitetura de Serviços3. Identificar Serviços de Entidades5. Revisar Resultados
Anal
isar
Ser
viço
s
Exem
plo
do Q
IB
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>>
Exem
plo
do Q
IB
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
2. Construir Arquitetura de Serviços
• Arquitetura de Serviços (Service Architecture) é gerada a partir do modelo de casos de uso
• Passo inicial para identificação dos serviços do sistema
• SOAML (Profile UML para modelar SOA)
Arquitetura de Serviços
• Services architecture descreve como os participantes que consomem e fornecem serviços para atender aos requisitos do negócio.
• Participant representa uma “parte” que consomem e/ou fornecem serviços. Podem representar pessoas, organizações ou sistemas.
• A service contract é a especificação do acordo entre provedores e consumidores de um serviço quanto às informações trocadas entre participantes.
• Gerada estaticamente a partir do modelo de casos de uso “empacotado”:• Atores => participant• Sistema => participant• Pacote de casos de uso => Service Contract• Relação na direção caso de uso – ator => Service
Contract• Casos de uso no modelo principal=> Service
Contract
Arquitetura de Serviços
Ator 1Ator 2
Pacote 1
Pacote 2
UC 1
UC2
UC3
UC 4
UC 5
Anal
isar
Ser
viço
s Pacote1<<Service Contract>>
Pacote2<<Service Contract>>
UC5<<Service Contract>>
UC5-Ator2<<Service Contract>>
Ator1<<Participant>> Ator2
<<Participant>>Sistema
<<Participant>>
consume
consume
consume
provide
provide
provide
consume provide
Arqu
itetu
ra d
e Se
rviç
os
Participants
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
Sistema back-end<<participant>>
Operadora DOC<<participant>>
Operadora Cartão<<participant>>
Cliente Front-end<<consumer>>
Services Contracts
Realiazr Transferencia<<Service Contract>>
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
Relizar Doc<<Service Contract>>
Controle de Acesso<<Service Contract>>
Controle de Cheque<<Service Contract>>
Controle de Conta<<Service Contract>>
Controle Qualiti Card<<Service Contract>>
Servico Operadora Doc<<Service Contract>> Servico Operadora Cartao
<<Service Contract>>
Arquitetura de Serviços
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
• Um tipo de serviço que é derivado de um ou mais entidades de negócio relacionadas. – São altamente reutilizável e usados por
vários serviços• Exemplo: Serviços para fazer CRUD
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>>
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]
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
Interação dos Serviços
• Levar em consideração TODOS os casos de uso envolvidos
• Diagrama de interação único*• Não possuem mensagens reflexivas
– Por que?
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
Mensagens de retorno
: 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
Exercício
• Fazer diagrama para o pacote Controle de Qualit Card
Atualizar o Modelo de informação
• Atualizar atributos das entidades• Possíveis fontes: conhecimento do negócio,
requisitos, glossário, modelo do negócio, mensagens do modelo de interação etc.
• São propriedades/características das entidades identificadas– informação cujo valor é o aspecto crucial– informação de propriedade exclusiva do objeto
• Caso seja identificada nova entidade, verificar necessidade de criar novo serviço
• Remover entidades desnecessárias
Modelo de informação atualizado
ContaintInternet
+login+senha
Conta
+numero+saldo
PagamentoCartão
+numero da fatura+data+valor+numero da conta
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]
Identificação de componentes
• Sistemática para identificar os componentes1. Identificar os participants provedores2. Componentes “provedores” implementam os
contratos de serviços3. Definir relacionamento entre componentes
Iden
tifica
r Com
pone
ntes
Cliente Front-end<<participant>> Sistema back-end
<<participant>>
Operadora Cartão<<participant>>
ControleAcesso<<Service Contract>>
consumerprovider
ControleConta<<Service Contractt>>
consumerprovider
ControleQualitiCard<<Service Contract>>
consumerconsumer
OperadoraCartao<<Service Contract>>
comsumer provider
ContaInternet<<Service Contract>>
Transação<<Service Contract>>
ContaBancaria<<Service Contract>>
Cliente Front-end<<Front-end>>
Controle ContaControle de Acesso Controle Cartão
IControleAcesso IControleConta IControleCartão
Trasação
ITrasaçãoIContaInternet
ContaInternet ContaBancaria
IContaBancaria
IOperadoraCartão
OperadoraCartão
Analisar Serviços
Análise e Projeto de Sistemas – if718