Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Práticas de Engenharia de
Software
Arquitetura Orientada a Serviços
Arquitetura de Software
4
Arquitetura de Software
▶ “A arquitetura de software é a organização fundamental de um
sistema, incorporada em seus componentes, suas relações entre si e
o ambiente, e os princípios que governam seu design e evolução”
(IEEE 1471-2000)
Categoria Estilo
Comunicação Orientada a Serviços (SOA) e Enterprise Service
Bus (ESB)
Operação Client/Server, N-Camadas e 3 Camadas
(Deployment)
Domínio Domain-Driven Design (DDD)
Estrutura Baseda em Componentes, Orientada a Objetos e em
Layers
8
Relação dos modelos de arquitetura mais comuns
Estilo Resumo
Client/Server Separar o sistema em duas aplicações, onde o cliente faz requisições para o
servidor.
Componentes Decomposição da estrutura da aplicação em funções reutilizáveis ou
componentes expostos com interface de comunicação bem definida.
Domain-Driven Modelo de arquitetura orientada a objetos com a modelagem focada no
Design domínio de negócio e definição de objetos de negócio baseado em
entidades dentro do domínio de negócio.
Layers Conceito de organização da aplicação em uma pilha de camadas.
Message Bus Modelo de arquitetura no qual o software pode receber e enviar
mensagens utilizando um ou mais canais de comunicação, para que as
aplicações possam interagir sem precisar conhecer detalhes específicos
sobre cada outra.
N-Camadas (tiers) Desmembra funcionalidades em segmentos separados na mesma camadas
lógica (layer), mas com cada segmento alocado em um camada física
diferente, ou seja, separado fisicamente em outro computador.
Orientada a Objetos Paradigma de estrutura baseado na divisão de responsabilidades para um
aplicação ou sistema com reutilização individual e objetos auto suficientes,
cada um contendo dados em comportamento relevantes a seu objeto.
Orientada a Aplicações que expõe e consome funcionalidades como um serviço
Serviços utilizando contratos e mensagens.
9
RESTful services
27
Web Services Restful
▶ Web services padrões (como SOAP) têm sido criticados como
padrões “pesados”, superficiais e ineficientes.
▶ REST (Representational State Transfer) é um estilo de arquitetura
baseado na transferência de representações de recursos de um
servidor para um cliente.
▶ Esse estilo reforça a web como um todo e é mais simples que o
SOAP/WSDL para implementação de web services.
▶ Serviços RESTFul envolvem uma menor sobrecarga do que os
chamados “web services grandes" e são usados por muitas
organizações que executam serviços baseados em sistemas que
não dependem de serviços fornecidos externamente.
É a tecnologia mais indicada para implementar a arquitetura de
“microserviços” (a ver em breve)
28
Resources
▶ O element fundamental na arquitetura RESTful é um
recurso (resource).
▶ Essencialmente, um recurso é um simples elemento de
dados tal como um catalogo, um registro médico, ou um
documento, tal como um capítulo de livro.
▶ Em geral, recursos podem ter multiplas representações,
i.e. eles podem existir em diferentes formatos.
MS WORD
PDF
Planilha (XLS, Excel)
Arquivos texto (Texto puro, CSV, XML, etc)
Recursos e ações
31
Resource access
▶ When a RESTful approach is used, the data is exposed and
is accessed using its URL.
▶ Therefore, the weather data for each place in the
database, might be accessed using URLs such as:
http://weather-info-example.net/temperatures/boston
http://weather-info-example.net/temperatures/edinburgh
▶ Invokes the GET operation and returns a list of maximum
and minimum temperatures.
▶ To request the temperatures for a specific date, a URL
query is used:
http://weather-info-example.net/temperatures/edinburgh?date=20140226
33
Query results
▶ The response to a GET request in a RESTful service may
include URLs.
▶ If the response to a request is a set of resources, then the
URL of each of these may be included.
http://weather-info-example.net/temperatures/edinburgh-scotland
http://weather-info-example.net/temperatures/edinburgh-australia
http://weather-info-example.net/temperatures/edinburgh-maryland
34
https://api.hgbrasil.com/weather/?format=json&cid=BRXX0032
39
Engenharia de Serviço
40
Exemplo de WebService usando Restful
▶ O processo de desenvolvimento de serviços para reuso em
aplicações orientados a serviços.
▶ O serviço precisa ser concebido como uma abstração reusavel que
possa ser usada em diferentes sistemas.
▶ Geralmente, deve ser projetada uma funcionalidade útil associada
à abstração e o serviço deve ser robusto e confiável.
▶ O serviço deve ser documentado de modo que possa ser
descoberto e compreendido pelos potenciais usuários.
41
O processo de Engenharia de Serviços
42
Estágios da Engenharia de Serviços
▶ Identificação do serviço.
É a identificação de um serviço candidato, em que você
identifica possíveis serviços que possam ser implementados e
define os requisitos de serviço.
▶ Projeto de serviço
Em que você projeta a lógica e as interfaces de serviços, além
da implementação dessas interfaces (SOAP e/ou RESTful)
▶ Implementação e implantação de serviço
Aqui você implementa e testa o serviço e disponibiliza para uso.
43
Identificação dos serviços candidatos
▶ Serviços devem apoiar processos de negócio.
▶ Identificação de serviço candidato envolve a compreensão e análise
dos processos de negócios de uma organização para decidir quais
serviços reusáveis poderiam ser implementados para apoiar esses
processos.
▶ Três tipos fundamentais de serviços:
Serviços utilitários públicos que implementam alguma
funcionalidade geral usada por diferentes processos de negócio.
Serviços de negócios que estão associados com uma função
específica de negócios, por exemplo um registro de estudante
universitário.
Serviços de coordenação ou de processo que suportam os
processos de coordenação, como um serviço de pedidos.
44
Serviços orientados a tarefas e entidades
▶ Serviços orientados a tarefas são aqueles associados com alguma
atividade.
▶ Os serviços orientados a entidades são como objetos. Eles estão
associados a uma entidade empresarial, tal qual um formulário de
pedido de emprego.
▶ Serviços de negócios ou de utilidade pública podem ser orientados
a entidades – ou tarefas.
▶ Serviços de coordenação sempre são orientados a tarefas.
45
Classificação do serviço
46
Pontos importantes sobre Engenharia de Serviços
▶ O serviço está associado a uma única entidade lógica usada em
diferentes processos de negócios?
▶ A tarefa é executada por pessoas diferentes na organização? A
tarefa pode adotar um modelo RESTful?
▶ O serviço é independente?
▶ O serviço tem que manter o estado? É necessário um banco de
dados?
▶ O serviço poderia ser usado por clientes fora da organização?
▶ Os diferentes usuários do serviço têm diferentes requisitos não
funcionais?
47
Exemplos de identificação de serviço
▶ Uma grande empresa, que vende equipamentos de informática,
conseguiu preços especiais para configurações aprovadas para
alguns clientes.
▶ Para facilitar a encomenda automatizada, a empresa pretende
produzir um serviço de catálogo que permitirá aos clientes
escolher o equipamento que eles precisam.
▶ Ao contrário de um catálogo de consumidor, os pedidos não são
colocados diretamente, por meio de uma interface de catálogo. Em
vez disso, os produtos são encomendados através do sistema de
compras baseado na web de cada empresa que acessa o catálogo
como um web service.
▶ A maioria das empresas têm seus próprios orçamentos e
procedimentos de aprovação de pedidos e encomendas. E deve
seguir seus próprios processos quando um pedido é colocado.
48
Serviço de Catálogo
▶ Criado por um fornecedor para mostrar quais itens poderiam ser
encomendados por outras empresas.
▶ Requisitos de serviço:
Deve ser criada para cada cliente uma versão específica do
catálogo.
Os catálogo devem ser baixados pelos clientes.
Podem ser comparadas as especificações e os preços de até 6
itens.
Devem ser fornecidos recursos de navegação e pesquisa.
Deve ser prevista uma função que permita que seja prevista a
data de entrega de itens encomendados.
Devem ser colocadas ordens virtuais que reservam a
mercadoria por 48 horas para permitir a uma empresa que
coloque ordens.
49
Requisitos não funcionais do Catálogo
▶ O acesso será restrito apenas a funcionários de
organizações credenciadas.
▶ Preços e configurações oferecidos para cada organização
serão confidenciais.
▶ O catálogo estará disponível a partir de 07h até 11h.
▶ O catálogo deve ser capaz de processar até 10
solicitações por segundo.
50
Descrições funcionais de operações de serviços de catálogo
51
Projeto de interface de serviço
▶ Envolve pensar sobre as operações associadas com o serviço e as
mensagens trocadas.
▶ Normalmente, o número de mensagens trocadas para completar
uma solicitação de serviço deve ser minimizado.
▶ O serviço de informações de estado podem precisar ser incluídos
nas mensagens.
52
Estágios do Projeto de Interface
▶ Projeto lógico de interface
Começa com os requisitos de serviço e define os nomes das operações e
parâmetros associados com o serviço. As exceções também devem ser
definidas.
▶ Projeto de Interface SOAP
Projetar a estrutura e organização do input e output de mensagens.
Notações como a UML são uma representação mais abstrata do que as XML.
Desenvolvimento WSDL
A especificação lógica é convertida em uma descrição WSDL.
▶ Projeto de Interface REST
A definição das operações requeridas devem ser mapeadas em operações
REST e definer quais recursos são necessários.
53
Exemplo de Projeto de Interface do Catálogo
54
RESTful interface
▶ Deve haver um recurso representando um catálogo
específico da empresa. Isso deve deve ser feito na forma de
uma URL <catalogo-base>/<nome-companhia> e deve ser
criada usando uma operação POST.
▶ Cada item do catálogo deve ter sua própria URL na forma:
<catalogo-base>/<nome-companhia>/<identificados-item>.
▶ A operação GET é usada para recuperar itens.
Lookup é implementado para usar a URL de um item em um
catálogo como um parâmetro de GET.
Search é implementado para usar o GET de um catálogo da
compania como a URL e a busca é feita passando uma “string”
como parâmetro da consulta. Essa operação GET retorna uma lista
de URLs dos itens que combinam com a busca da pesquisa.
55
RESTful interface
▶ A operação Compare pode ser implementada como um
sequência de operações GET, para recuperar itens
individualmente, seguido por uma operação POST para
criar uma tabela de comparação e no final a operação GET
retorna o resultado ao usuário.
▶ As operações CheckDelivery e MakeVirtualOrder
necessitam de um recurso adicional, representando um
pedido virtual.
Uma operação POST é usada para criar este recurso com o
número de itens requeridos. A identificação (id) da empresa é
usada para automaticamente preencher o formulário de pedido
e entregar a data calculada da entrega. Essa informação é
recuperada usando uma operação GET.
56
Implementação e implantação de serviço
▶ Implementação de serviço deve usar uma linguagem de
programação padrão ou uma linguagem de workflow.
▶ Assim, os serviços precisam ser testados por meio da
criação de mensagens de entrada e verificação da
possibilidade das mensagens de saída produzidas tal qual
esperadas como resposta.
▶ A implantação envolve a divulgação do serviço e
instalação desse em um servidor web.
Os atuais servidores fornecem suporte para instalação de
serviço.
57
Composição de Serviços
Interação de workflows
69
Key points
▶ O processo de engenharia de serviço envolve a identificação de serviços
candidatos para a implementação, definição da interface de serviços e
implementação, testes e implantação do serviço.
▶ As interfaces de serviço podem ser definidas para os sistemas legados de
software, os quais podem então, ser reusados em outras aplicações.
▶ O desenvolvimento de software que usam serviços envolve a criação de
programas pela composição e configuração dos serviços para criar novos serviços
compostos.
▶ Os modelos de processos de negócios definem as atividades e trocas de
informações nos processos empresariais.
▶ As atividades no processo de negócio podem ser implementadas pelos serviços
de modo que o modelo de processo de negócio represente uma composição do
serviço.
▶ Técnicas de teste de software baseadas na análise do código-fonte não podem
ser usadas em sistemas orientados a serviços que dependem de serviços
fornecidos externamente.
72
Referências
▶ SOMMERVILLE, Ian. Engenharia de Software; tradução
Ivan Bosnic e Kalinka G. de O. Gonçalves; revisão técnica
Kechi Hirama. 9ª Ed. – São Paulo: Pearson Prentice Hall,
2011.