SlideShare une entreprise Scribd logo
1  sur  53
Uso de Padrões no
Desenvolvimento de Web
Services
Um Estudo de Caso
Rafael Salerno de Oliveira
Prof Ms Vinícius Costa de Souza

S
Motivação
Integração

Multiplataforma
Disponibilização

Independência
de Tecnologia
Objetivo
• Como Reduz a Complexidade
• Comunicação Comum entre
Desenvolvedores
• Como proporciona Evolução
O que é um Web Service?
S É uma Solução que possibilita:

S Comunicação entre Aplicações Diferentes

S Interação com Diferentes Plataformas
Características
Infraestrutura aberta

Transparência de Linguagem

Design modular
“Isolar o Cliente”
Principais Tipos
Meio da Comunicação
Conteúdo da Comunicação
Padrões/Estilos de API para
Web Services

• RPC API
• Message API
• Resource API
RPC API
Remote Procedure Call
Message API
Resource API
Tipos de Padrões de Interação
Cliente-Servidor
• Request/Response
• Request/Acknowledge
• Media Type Negotiation

• Linked Service.
Request/Response
Request/Response
Request/Acknowledge
Steps no Server:
1. Recebe um Request
2. Envia um Identificador(token) ou uma URL

3. Processsa a requisição em backgroud
4. Recebe o Identificador e envia o
Request/Acknowledge
Media Type Negotiation
Linked Service
Linked Service
Padrões de
Request/Response
S Service Controller

S Data Transfer Object
Service Controller

- Controlam a execução de tarefas de negócios e
coordenam o acesso à recursos.
- Front Controller
Data Transfer Object
Data Transfer Object
Estilos de Implementação de
Web Service
Considerações para implementação do serviço
Web:
S Atomicidade - tudo ou nada

S Não gerenciar estados

S Ações quando houver composição de serviços
Estilos de Implementação de
Web Service
S Operation Script

S Command Invoker
Estilos de Implementação de
Web Service
S Transaction Script
Padrões de Infra- Estrutura
para Web Service
S Service Connector

S Service Descriptor
S Service Interceptor
S Idempotent Retry
Service Connector
S Esconde detalhes da

comunicação entre APIs
relacionadas

Idempotent Retry
S Tratar problemas relacionados a

erro de conexão
Service Descriptor
Service Interceptor
Benefícios do uso de padrões
de projeto

Diminuem
o
retrabalho
Metodologia

S Público alvo

S Técnica utiliza amostragem por conveniência
S Observação do pesquisador.
S Questionário direcionado a profissionais de

TI
Estudo de Caso
S Foi utilizado uma aplicação usada por uma

empresa de pesquisa de medicamentos.
S Algumas funcionalidades:
 Monitoramento de Portfólio de Medicamentos

 Pesquisa e Recomendação de Medicamentos
 Agrupamento de Medicamento

 Histórico do medicamento
Estudo de Caso
S P1 - Sem Padrões de Projeto para web

Services
S P2 - Com Padrões de Projeto para web

Services
S As duas aplicações realizam o mesmo

trabalho
S Tem entradas e saídas iguais o que facilita a

comparação
Estudo Comparativo

S O que foi Comparado :
 Padrões de Projetos

 Frameworks
 Número de Linhas de Código

 Complexidade Ciclomática (IF,WHILE e FOR)
 Manutenibilidade (facilidade, precisão, segurança na
Complexidade Ciclomática
M=D+1 onde:
D=ponto de decisão (IF,FOR,WHILE)

Valores de Referência:
− 1-10, métodos simples, sem muito risco
− 11-20, métodos medianamente complexos, com
risco moderado
− 21-50, métodos complexos, com risco alto
− 51 ou mais, métodos instáveis de altíssimo risco.
(MCCABE,1976)
Resultados Obtidos
Projeto 2
• Padrão Arquitetural SOA

• Estilo de RPC API
• Linked Service com serviço raiz com pontos de
entrada
• Data Transfer Object para tratar dados
recebidos e Enviados e deixar o cliente a parte
Resultados Obtidos
• Operation Transcripts para ter um único ponto
de controle transacional

• Comand Invoker para que o Serviço não
conheça o modelo de domínio e fazer com que
o cliente conheça apenas interfaces de saída
• Service Interceptor para realizar validações
Resultados Obtidos
• O projeto 2 teve aproximadamente 1200 linhas a mais
que o projeto 1
• Complexidade Ciclomática foi considerada:
P1 - “medianamente complexo, com risco
moderado”
Resultados Obtidos
P1

P2
Resultados Obtidos
• A manutenibilidade foi de 1h e 30 min a menos
no projeto 2
Casos de manutenção:
• Suporte a relatórios em CSV

• Manutenção no agrupamento por medicamentos
do mesmo tipo
• Ordenação de medicamentos após o
agrupamento do mesmo tipo
Estudo Qualitativo
S Pesquisa com dez profissionais

S Objetivo :
Importância dos padrões de projeto

É determinado pelo tempo de

experiência?
Estudo Qualitativo

Experiência na área de TI em anos:
5 anos

6 anos 8 anos 5 anos 12 anos

3 anos

1 ano 4 anos 5 anos

2 anos
Estudo Qualitativo
Estudo Qualitativo
Estudo Qualitativo
Estudo Qualitativo
Conclusão do Estudo
Qualitativo
S A maior parte das pessoas sabem que os

Padrões de projeto tem benefícios
S A complexidade e quando se usar pode

estar ligado a tempo de experiência
S Dependendo do contexto que se trabalha

a pessoas acham que o framework pode
ser mais importante que o Padrão de
Considerações Finais

• Complexidade
• Manutenção
•

Código Duplicado

• Comunicação
Referencial
Service Design Patterns - Study Case

Contenu connexe

Similaire à Service Design Patterns - Study Case

Portfólio serviços psrv
Portfólio serviços psrvPortfólio serviços psrv
Portfólio serviços psrvRomulo Bokorni
 
Janaína Horácio - Terceirização - O desafio de garantir a Qualidade
Janaína Horácio - Terceirização - O desafio de garantir a QualidadeJanaína Horácio - Terceirização - O desafio de garantir a Qualidade
Janaína Horácio - Terceirização - O desafio de garantir a Qualidademinastestingconference
 
Aula 03 - Verificação e Validação de Requisitos.pptx
Aula 03 - Verificação e Validação de Requisitos.pptxAula 03 - Verificação e Validação de Requisitos.pptx
Aula 03 - Verificação e Validação de Requisitos.pptxLucianaRecartCardoso
 
TCC - Certificação Digital
TCC - Certificação DigitalTCC - Certificação Digital
TCC - Certificação DigitalMarcos Bezerra
 
Modernização de Aplicações
Modernização de AplicaçõesModernização de Aplicações
Modernização de AplicaçõesMarcio Sete
 
Desafio de crescer
Desafio de crescerDesafio de crescer
Desafio de crescerGuilherme
 
Desenvolvimento de um Ponto Eletronico Web
Desenvolvimento de um Ponto Eletronico WebDesenvolvimento de um Ponto Eletronico Web
Desenvolvimento de um Ponto Eletronico WebCirino F Refosco
 
Ciclo de vida processo
Ciclo de vida processoCiclo de vida processo
Ciclo de vida processoPatrícia Melo
 
201305 IT Simplification Lean caixa-geraldepositos
201305 IT Simplification   Lean caixa-geraldepositos201305 IT Simplification   Lean caixa-geraldepositos
201305 IT Simplification Lean caixa-geraldepositosFrancisco Calzado
 
1 Qss
1 Qss1 Qss
1 Qsslcbj
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Renato Groff
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android Inael Rodrigues
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Renato Groff
 
Desenvolvimento Ágil e Pontos de Função gerenciando o projeto de maneira ági...
Desenvolvimento Ágil e Pontos de Função  gerenciando o projeto de maneira ági...Desenvolvimento Ágil e Pontos de Função  gerenciando o projeto de maneira ági...
Desenvolvimento Ágil e Pontos de Função gerenciando o projeto de maneira ági...Dextra
 
Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...
Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...
Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...Vanessa Campos
 
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDayQuando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDayBase2 Tecnologia
 

Similaire à Service Design Patterns - Study Case (20)

Portfólio serviços psrv
Portfólio serviços psrvPortfólio serviços psrv
Portfólio serviços psrv
 
Apresentação NetProject 2021
Apresentação NetProject 2021Apresentação NetProject 2021
Apresentação NetProject 2021
 
Metralhando sua API
 Metralhando sua API Metralhando sua API
Metralhando sua API
 
Janaína Horácio - Terceirização - O desafio de garantir a Qualidade
Janaína Horácio - Terceirização - O desafio de garantir a QualidadeJanaína Horácio - Terceirização - O desafio de garantir a Qualidade
Janaína Horácio - Terceirização - O desafio de garantir a Qualidade
 
Programa de Parceiros
Programa de ParceirosPrograma de Parceiros
Programa de Parceiros
 
Aula 03 - Verificação e Validação de Requisitos.pptx
Aula 03 - Verificação e Validação de Requisitos.pptxAula 03 - Verificação e Validação de Requisitos.pptx
Aula 03 - Verificação e Validação de Requisitos.pptx
 
TCC - Certificação Digital
TCC - Certificação DigitalTCC - Certificação Digital
TCC - Certificação Digital
 
Modernização de Aplicações
Modernização de AplicaçõesModernização de Aplicações
Modernização de Aplicações
 
Desafio de crescer
Desafio de crescerDesafio de crescer
Desafio de crescer
 
Desenvolvimento de um Ponto Eletronico Web
Desenvolvimento de um Ponto Eletronico WebDesenvolvimento de um Ponto Eletronico Web
Desenvolvimento de um Ponto Eletronico Web
 
Ciclo de vida processo
Ciclo de vida processoCiclo de vida processo
Ciclo de vida processo
 
201305 IT Simplification Lean caixa-geraldepositos
201305 IT Simplification   Lean caixa-geraldepositos201305 IT Simplification   Lean caixa-geraldepositos
201305 IT Simplification Lean caixa-geraldepositos
 
1 Qss
1 Qss1 Qss
1 Qss
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
 
DevOps e App Insights
DevOps e App InsightsDevOps e App Insights
DevOps e App Insights
 
TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android TDC 2012: Trilha - Android University Back end Android
TDC 2012: Trilha - Android University Back end Android
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
 
Desenvolvimento Ágil e Pontos de Função gerenciando o projeto de maneira ági...
Desenvolvimento Ágil e Pontos de Função  gerenciando o projeto de maneira ági...Desenvolvimento Ágil e Pontos de Função  gerenciando o projeto de maneira ági...
Desenvolvimento Ágil e Pontos de Função gerenciando o projeto de maneira ági...
 
Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...
Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...
Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...
 
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDayQuando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
Quando utilizar Crowdsourcing em Testes | Crowdtest no DevDay
 

Plus de Rafael Salerno de Oliveira (20)

TDC - Qual o tamanho adequado de um micro serviço?
TDC - Qual o tamanho adequado de um micro serviço?TDC - Qual o tamanho adequado de um micro serviço?
TDC - Qual o tamanho adequado de um micro serviço?
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
Aws route 53
Aws route 53Aws route 53
Aws route 53
 
Aws Network Introduction
Aws Network Introduction Aws Network Introduction
Aws Network Introduction
 
Aws system manager
Aws system managerAws system manager
Aws system manager
 
Clean code
Clean codeClean code
Clean code
 
Kontena
KontenaKontena
Kontena
 
Docker hub
Docker hubDocker hub
Docker hub
 
Docker cloud
Docker cloudDocker cloud
Docker cloud
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Domain driven design com functional programing(f#)
Domain driven design com functional programing(f#)Domain driven design com functional programing(f#)
Domain driven design com functional programing(f#)
 
Virtual box
Virtual boxVirtual box
Virtual box
 
Serf
SerfSerf
Serf
 
Vagrant
VagrantVagrant
Vagrant
 
V8 Google
V8 GoogleV8 Google
V8 Google
 
Thinking in systems
Thinking in systemsThinking in systems
Thinking in systems
 
Design pattern for mobile Android IOS
Design pattern for mobile Android IOSDesign pattern for mobile Android IOS
Design pattern for mobile Android IOS
 
Batoo jpa
Batoo jpaBatoo jpa
Batoo jpa
 
Hammock Driven Development
Hammock Driven DevelopmentHammock Driven Development
Hammock Driven Development
 
Responsibility Driven Design
Responsibility Driven DesignResponsibility Driven Design
Responsibility Driven Design
 

Service Design Patterns - Study Case