Service Design Patterns - Study Case

53
S Rafael Salerno de Oliveira Prof Ms Vinícius Costa de Souza Uso de Padrões no Desenvolvimento de Web Services Um Estudo de Caso

Transcript of Service Design Patterns - Study Case

Page 1: Service Design Patterns - Study Case

S

Rafael Salerno de Oliveira

Prof Ms Vinícius Costa de Souza

Uso de Padrões no

Desenvolvimento de Web

Services

Um Estudo de Caso

Page 2: Service Design Patterns - Study Case

Motivação

Integração

Disponibilização

Independência

de Tecnologia

Multiplataforma

Page 3: Service Design Patterns - Study Case

Objetivo

• Como Reduz a Complexidade

• Comunicação Comum entre

Desenvolvedores

• Como proporciona Evolução

Page 4: Service Design Patterns - Study Case

O que é um Web Service?

S É uma Solução que possibilita:

S Comunicação entre Aplicações Diferentes

S Interação com Diferentes Plataformas

Page 5: Service Design Patterns - Study Case

Características

Infraestrutura aberta

Transparência de Linguagem

Design modular

“Isolar o Cliente”

Page 6: Service Design Patterns - Study Case

Principais Tipos

Page 7: Service Design Patterns - Study Case

Meio da Comunicação

Page 8: Service Design Patterns - Study Case

Conteúdo da Comunicação

Page 9: Service Design Patterns - Study Case

Padrões/Estilos de API para

Web Services

• RPC API

• Message API

• Resource API

Page 10: Service Design Patterns - Study Case

RPC APIRemote Procedure Call

Page 11: Service Design Patterns - Study Case

Message API

Page 12: Service Design Patterns - Study Case

Resource API

Page 13: Service Design Patterns - Study Case

Tipos de Padrões de Interação

Cliente-Servidor

• Request/Response

• Request/Acknowledge

• Media Type Negotiation

• Linked Service.

Page 14: Service Design Patterns - Study Case

Request/Response

Page 15: Service Design Patterns - Study Case

Request/Response

Page 16: Service Design Patterns - Study Case

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

acknowledgment

Page 17: Service Design Patterns - Study Case

Request/Acknowledge

Page 18: Service Design Patterns - Study Case

Media Type Negotiation

Page 19: Service Design Patterns - Study Case

Linked Service

Page 20: Service Design Patterns - Study Case

Linked Service

Page 21: Service Design Patterns - Study Case

Padrões de

Request/Response

SService Controller

SData Transfer Object

Page 22: Service Design Patterns - Study Case

Service Controller

- Controlam a execução de tarefas de negócios e

coordenam o acesso à recursos.

- Front Controller

Page 23: Service Design Patterns - Study Case

Data Transfer Object

Page 24: Service Design Patterns - Study Case

Data Transfer Object

Page 25: Service Design Patterns - Study Case

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

Page 26: Service Design Patterns - Study Case

Estilos de Implementação de

Web Service

S Operation Script

S Command Invoker

Page 27: Service Design Patterns - Study Case

Estilos de Implementação de

Web Service

S Transaction Script

Page 28: Service Design Patterns - Study Case

Padrões de Infra- Estrutura

para Web Service

SService Connector

SService Descriptor

SService Interceptor

S Idempotent Retry

Page 29: Service Design Patterns - Study Case

Service Connector

SEsconde detalhes da

comunicação entre APIs

relacionadas

Idempotent Retry

STratar problemas relacionados a

erro de conexão

Page 30: Service Design Patterns - Study Case

Service Descriptor

Page 31: Service Design Patterns - Study Case

Service Interceptor

Page 32: Service Design Patterns - Study Case

Benefícios do uso de padrões

de projeto

Diminuem

o

retrabalho

Page 33: Service Design Patterns - Study Case

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

Page 34: Service Design Patterns - Study Case

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

Page 35: Service Design Patterns - Study Case

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

Page 36: Service Design Patterns - Study Case

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

manutenção)

Page 37: Service Design Patterns - Study Case

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)

Page 38: Service Design Patterns - Study Case
Page 39: Service Design Patterns - Study Case

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

do BD

Page 40: Service Design Patterns - Study Case

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

Page 41: Service Design Patterns - Study Case

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”

Page 42: Service Design Patterns - Study Case

Resultados Obtidos

P1P2

Page 43: Service Design Patterns - Study Case

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

Page 44: Service Design Patterns - Study Case

Estudo Qualitativo

SPesquisa com dez profissionais

S Objetivo :

Importância dos padrões de projeto

É determinado pelo tempo de

experiência?

Page 45: Service Design Patterns - Study Case

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

Page 46: Service Design Patterns - Study Case

Estudo Qualitativo

Page 47: Service Design Patterns - Study Case

Estudo Qualitativo

Page 48: Service Design Patterns - Study Case

Estudo Qualitativo

Page 49: Service Design Patterns - Study Case

Estudo Qualitativo

Page 50: Service Design Patterns - Study Case

Conclusão do Estudo

Qualitativo

SA maior parte das pessoas sabem que os

Padrões de projeto tem benefícios

SA complexidade e quando se usar pode

estar ligado a tempo de experiência

SDependendo do contexto que se trabalha

a pessoas acham que o framework pode

ser mais importante que o Padrão de

Projeto

Page 51: Service Design Patterns - Study Case

Considerações Finais

• Complexidade

• Manutenção

• Código Duplicado

• Comunicação

Page 52: Service Design Patterns - Study Case

Referencial

Page 53: Service Design Patterns - Study Case