Service Design Patterns - Study Case

Post on 07-Jul-2015

129 views 2 download

Transcript of 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

Motivação

Integração

Disponibilização

Independência

de Tecnologia

Multiplataforma

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 APIRemote 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

acknowledgment

Request/Acknowledge

Media Type Negotiation

Linked Service

Linked Service

Padrões de

Request/Response

SService Controller

SData 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

SService Connector

SService Descriptor

SService Interceptor

S Idempotent Retry

Service Connector

SEsconde detalhes da

comunicação entre APIs

relacionadas

Idempotent Retry

STratar 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

manutenção)

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

do BD

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

P1P2

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

SPesquisa 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

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

Considerações Finais

• Complexidade

• Manutenção

• Código Duplicado

• Comunicação

Referencial