Escolar Documentos
Profissional Documentos
Cultura Documentos
Henrique Shoiti Fugita-SOA PDF
Henrique Shoiti Fugita-SOA PDF
2012
© 2012, Elsevier Editora Ltda.
ISBN: 978-85-352-5340-5
Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem
ocorrer erros de digitação, impressão ou dúvida conceitual. Em qualquer das hipóteses,
solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que
possamos esclarecer ou encaminhar a questão.
Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos
ou perdas a pessoas ou bens originados do uso desta publicação.
CIP-BRASIL. CATALOGAÇÃO-NA-FONTE
SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ
F969s
Apêndices
Inclui bibliografia e índice
Contém glossário
ISBN 978-85-352-5340-5
Agradeço aos meus pais (in memoriam), filhos, irmãos, cunhados e sobrinhos pelas
alegrias vividas.
Kechi Hirama
v
Prefácio
O cenário de aplicações de software tem evoluído muito nos últimos anos, acompa-
nhando a crescente necessidade de novas aplicações e de manutenção de soluções
existentes. Porém, isso tem exigido novas abordagens de desenvolvimento de softwa-
re, deixando os paradigmas tradicionais, como a orientação a objetos, insuficientes
em entregar soluções adequadas no contexto atual.
O que se observa claramente é que cada vez mais o software precisa ser conce-
bido em alto nível de abstração para dar conta de inúmeros requisitos que devem
ser atendidos.
Se observarmos também a evolução do software juntamente com as abordagens
de seu desenvolvimento, poderemos verificar que, no início, nas décadas de 1960
e 1970, o software era apenas uma ferramenta para apoiar alguma rotina de atividade
do dia a dia, por exemplo, emissão de relatórios.
Visto apenas como uma ferramenta, o software estava desacoplado de uma visão
mais ampla da organização. E, assim, progressivamente foi sendo desenvolvido e
se proliferando, gerando altos custos de manutenção. Os paradigmas de desenvol-
vimento de software, notadamente a estruturada e orientação a objetos, surgiram
para disciplinar e minimizar seus impactos na organização, ao longo de seu ciclo
de vida.
Porém, a distância entre as necessidades da organização, ou de negócio, ainda
mais exigentes, e as soluções propostas se tornavam maiores. Isto levou à discussão
de novas abordagens de desenvolvimento de software.
Atualmente fala-se muito em necessidade de alinhamento da Tecnologia da
Informação (TI) com as estratégias de negócio, e o paradigma de orientação a ser-
viços tornou-se a forma mais adequada e aceita para esse alinhamento, preservando
investimentos através de reuso de aplicações de software.
Este livro trata basicamente de tornar esse alinhamento mais simples e produtivo.
Para isso, adotou-se uma forma didática para abordar o assunto, desde a concei-
tuação básica de serviço até a sua implementação como um software.
O livro traz como tema central a modelagem, a análise e o design, provendo um
caminho completo desde a modelagem de negócio até a especificação de serviços,
complementado por construção, implantação e gerenciamento de serviços. Esse
caminho é um diferencial deste livro em relação às outras publicações semelhantes.
Além disso, como o paradigma de orientação a serviços carece de uma padronização,
pensamos em prover uma maneira bem embasada e enriquecida de ilustrações para
que um leitor, mesmo não experiente em orientação a serviços, possa acompanhar
os conceitos e exemplos do livro.
vii
viii Prefácio
Público-alvo
Este livro é destinado a estudantes de graduação dos cursos de Engenharia de Com-
putação, Ciência de Computação, Tecnologia de Informação, Sistemas de Informação
e outros cursos similares.
Para os docentes destes cursos, o livro pode ser usado para aulas teóricas e práticas
aproveitando os exemplos ou adaptando os casos desenvolvidos.
Outro público que também pode se beneficiar do livro é constituído de gerentes e
desenvolvedores de software de empresas de software, que estão realizando projetos
com Arquitetura Orientada a Serviços (SOA – Service Oriented Architecture).
Organização do livro
Este livro está organizado em oito capítulos, mais referências, apêndices e glossá-
rio.
O Capítulo 1, Introdução, apresenta uma contextualização da modelagem, da
análise e do design, e perguntas mais frequentes.
No Capítulo 2, Entendendo SOA, é feita uma caracterização do conceito de SOA,
necessária para o bom entendimento das fases de modelagem, análise e design.
O Capítulo 3, Ciclo de vida SOA, apresenta boas práticas em modelagem, análise
e design e uma descrição de ciclo de vida e papéis e artefatos envolvidos.
O Capítulo 4, Modelagem, apresenta as atividades de modelagem de processo
as-is e to-be e especificação de requisitos de serviços.
O Capítulo 5, Análise, apresenta as atividades de identificação de serviços can-
didatos, análise de gap e análise de realização de serviços.
O Capítulo 6, Design, apresenta a especificação de contrato, especificação de
realização, verificação dos princípios e revisão dos serviços.
O Capítulo 7, Fases complementares, apresenta uma descrição complementar do
ciclo de vida SOA para as fases de construção e de implantação e gerenciamento de
serviços.
O Capítulo 8, Considerações finais, apresenta algumas considerações quanto aos
aspectos importantes do livro.
Na seção Referências, são apresentadas as referências usadas para a elaboração
do livro.
Na seção Bibliografia complementar, são apresentadas fontes de leitura interes-
santes àqueles que queiram se aprofundar no assunto tratado no livro.
Prefácio ix
Recomendações ao leitor
O livro está organizado de maneira a atender aos diversos tipos de leitores. No
entanto, a leitura ficará mais acessível àqueles que tenham noções de orientação a
objetos e que tenham alguma familiaridade com o processo de desenvolvimento de
software. Aos iniciantes, recomendamos fortemente a leitura desde o início, sem
alternar os capítulos. Àqueles que já dominam os conceitos básicos de orientação
a serviços, pode-se iniciar pelo Capítulo 3, no qual o ciclo de vida SOA é descrito.
À medida que os conceitos estejam bem assimilados, o estudo de caso do Apêndice
B pode ser usado para orientar um projeto real de software orientado a serviços em
que você esteja envolvido.
1
Introdução
Objetivo
O objetivo deste capítulo é apresentar uma visão geral sobre o novo paradigma de
desenvolvimento de software baseado no conceito de SOA (Service Oriented Architecture) para
atender às demandas atuais de novas soluções de forma flexível e com reuso de capacidades
de sistemas existentes. Além disso, algumas perguntas mais frequentes da área são respondidas.
A TI (Tecnologia da Informação) é a área mais impactante na vida das pessoas e das organi-
zações. O sucesso e o bem-estar de todos dependem das soluções providas pela TI. Então,
conhecê-la é importante para estarmos preparados para as novas necessidades que surgem
a cada dia. Velhos conceitos e técnicas podem não ser suficientes em face deste cenário.
No estágio atual, o paradigma de orientação a serviços traz muitos benefícios e desafios.
Conteúdo
1.1 Visão geral 1
1.2 Perguntas mais frequentes 4
Entendendo SOA
Objetivo
O objetivo deste capítulo é apresentar uma visão geral sobre SOA, as suas características e a
visão de alguns autores importantes. São apresentados alguns princípios, solução e benefícios
e desafios para trabalhar com este paradigma. Também é apresentada a relação do SOA com
outras abordagens.
Para falar sobre o paradigma de orientação a serviços, é necessário um entendimento claro
do que é SOA e do próprio conceito de serviço em si. Por ser um tema novo que tem ganhado
relevância recentemente, não existe ainda um consenso definitivo sobre tais conceitos. Por
meio da análise das características do paradigma e das interpretações de alguns autores, este
capítulo busca estabelecer um entendimento sobre sua definição.
Conteúdo
2.1 Definições 7
2.2 Conceitos relacionados a SOA 17
2.3 Princípios de orientação a serviços 22
2.4 Solução orientada a serviços 25
2.5 Benefícios e desafios 35
2.6 Relação com outros paradigmas 39
2.7 Considerações do capítulo 40
2.1 Definições
Antes de discutirmos a definição de SOA, ou Arquitetura Orientada a Serviços, é
necessário compreender o que é a orientação a serviços. Basicamente, a orientação a
serviços é um paradigma de construção e integração de soluções de software compos-
tas por elementos modulares chamados serviços. O paradigma baseia-se nos princípios
de orientação a serviços, que serão descritos nas próximas seções (Erl, 2007).
executar uma função para outro. No contexto de SOA, um serviço tem significado
semelhante, já que consiste em um módulo de software capaz de realizar uma função
específica quando solicitado por seus consumidores.
O serviço, unidade fundamental de uma arquitetura SOA, é uma unidade de
software que tem como propósito desempenhar uma função específica e que pode
ser fornecido por um provedor e utilizado por um consumidor.
Para ser considerado um serviço, uma unidade de software deve apresentar carac-
terísticas de design aderentes ao paradigma de orientação a serviços. Um exemplo de
serviço é o controle de crédito disponibilizado por uma entidade do tipo SERASA
e SPC. Ela pode fornecer informações sobre crédito de pessoas físicas e jurídicas a
clientes do tipo bancos. Os bancos podem implementar aplicações de concessões de
crédito somente chamando o serviço para receber estas informações.
Um serviço é composto por diversas operações. Fazendo uma analogia com a
orientação a objetos, as operações estão para um serviço assim como os métodos
estão para uma classe. Um exemplo de serviço com suas operações e respectivas
entradas (inputs) e saídas (outputs) pode ser visto na Figura 2.1.
As operações são invocadas por meio de mensagens. Um cliente envia uma men-
sagem como parâmetro de entrada para uma operação, a fim de invocá-la. O serviço
(por meio de seu provedor/realização) executa a lógica definida em seu contrato e
retorna ao cliente uma mensagem de saída com o resultado da lógica executada.
Assim, um processo de negócio é um agregado de diversos serviços, conforme
pode ser visto na Figura 2.2. As instâncias de um processo executam uma série de
operações. Um serviço é composto de um conjunto de operações relacionadas. Uma
operação processa os dados recebidos. As mensagens são responsáveis por conduzir
os dados necessários de (e para) operações.
Observação:
Alguns autores utilizam o termo “competência” ou “capacidade” para se referir ao conceito de
operação.
Figura 2.2 Relacionamentos entre os componentes de uma arquitetura SOA (Erl, 2005).
10 SOA: Modelagem, Análise e Design
plataforma);
● sistemas transacionais;
● bases de dados;
Figura 2.10 Exemplo de composição de serviços (Serviço A composto pelos Serviços B e C).
2.3.2 Reusabilidade
A orientação a serviços visa tornar cada serviço reusável, mesmo que não haja
requisitos específicos para um dado serviço no momento em que ele é desenvolvido
(Erl, 2005).
Serviços reusáveis são aqueles que podem possuir valor em diversos contextos
de processos de negócio e em interações intra e interorganizacionais e, por isso,
devem suportar diversos padrões de consumo destes serviços. Devido a esta natureza,
novos clientes podem reusar um serviço de uma maneira que não foi prevista em
seu projeto original. Nestes casos, deve haver uma infraestrutura de gerenciamento
e governança de serviços que garanta o desempenho e o devido funcionamento de
tal serviço (Marks e Bell, 2006).
2 Entendendo SOA 23
2.3.4 Abstração
Um princípio importante na orientação a serviços é a abstração ou encapsulamento
da lógica interna de um serviço por meio de sua interface. Ao separar interface de
implementação, o serviço age como uma caixa preta e expõe aos seus consumidores
somente informações sobre as operações disponíveis.
A granularidade de um serviço está diretamente relacionada com a quantidade
de funcionalidade que é encapsulada pelas operações de um serviço (Erl, 2005).
Quanto mais funcionalidade é encapsulada em um serviço, mais alta a granularidade
deste serviço.
24 SOA: Modelagem, Análise e Design
2.3.5 Autonomia
Autonomia exige que a lógica de processamento encapsulada por um serviço fique
restrita dentro de certa fronteira estabelecida, o que evita a dependência com relação
a outros serviços. Isto permite que um serviço tenha controle total sobre sua própria
lógica e possa exercer um tipo de autogovernança (autocontrole).
A autonomia de um serviço pode ocorrer em dois níveis diferentes (Erl, 2005):
no nível do serviço e autonomia pura.
Na autonomia no nível do serviço, os limites entre os serviços são distintos, mas
eles ainda podem compartilhar recursos encapsulados, como bases de dados e siste-
mas legados. Este cenário é comum, por exemplo, em diversos serviços desenvolvidos
a partir de uma mesma aplicação já existente. Neste caso, os serviços compartilham
a aplicação, mas fazem uso dela de maneira independente.
Na autonomia pura, a lógica e os dados encapsulados estão sob completo controle
do serviço, não sendo compartilhados com outros.
2.3.6 Independência de estado
Um serviço deve evitar armazenar informações de estado e contexto ou minimizar o
período de tempo que estas informações serão mantidas (Erl, 2005). Isso quer dizer
que a resposta do serviço para uma mensagem deve ser independente das mensagens
anteriores processadas pelo serviço. Dependência de contexto ou de estado diminui
o potencial de reuso do serviço. Além disso, enquanto o serviço retiver informações
de estado de um consumidor, ele se torna indisponível para atender chamadas de
outros consumidores.
Para tornar um serviço o mais independente possível de estado, as mensagens
devem ser inteligentes, isto é, deve ser adicionado às mensagens o máximo de in-
formação para que elas se tornem autossuficientes e possam ser processadas sem a
necessidade de dados de estado.
2.3.7 Visibilidade
Os serviços devem ser visíveis, o que significa que seus contratos devem ser pu-
blicados e disponibilizados de modo que possam ser descobertos e acessados pelos
potenciais consumidores. Na arquitetura SOA básica, estas interfaces são publicadas
em um registro de serviços, de onde elas podem ser buscadas pelos consumidores
(Marks e Bell, 2006).
2.3.9 Interoperabilidade
Serviços devem ser interoperáveis, isto é, deve ser possível interagir com um serviço
independentemente da tecnologia empregada em sua implementação. Quaisquer que
sejam a linguagem de programação, a plataforma ou o sistema operacional utilizado
na construção dos provedores, clientes e registros de serviços, as interações entre eles
devem ser possíveis. Para isso, estas interações devem ser realizadas utilizando-se
padrões e protocolos abertos compatíveis com qualquer tecnologia ou plataforma.
Por isso, em uma arquitetura SOA, a provisão e o consumo de serviços ocorrem de
maneira transparente às tecnologias e linguagens utilizadas em sua implementação,
garantindo a interoperabilidade entre serviços.
Atualmente, os padrões relacionados à tecnologia Web Services permitem a des-
crição de interfaces, a troca de mensagens e a busca por serviços de maneira neutra
com relação às plataformas e linguagens utilizadas.
Observação:
Apesar de não ser considerada por alguns autores um princípio propriamente dito, a interopera-
bilidade é listada nesta seção, pois descreve uma característica de design que os serviços devem
possuir e que é fundamental para o paradigma de orientação a serviços.
2.4.1 Elementos
Uma solução orientada a serviços consiste em uma aplicação composta por diversos
elementos que, integrados, automatizam um processo de negócio. Os elementos
de uma solução orientada a serviços distribuem-se nas camadas da arquitetura de
referência SOA, conforme a Figura 2.11.
Na camada de interfaces consumidoras, temos as interfaces através das quais os
usuários poderão interagir com os processos de negócio e com os serviços da solução
orientada a serviços.
Na camada de processos de negócio, temos os fluxos de processo sendo orques-
trados por uma plataforma BPMS ou por um serviço de tarefa orquestrada, que
encapsula a lógica do processo e é composto por outros serviços. Um processo de
negócio de lógica complexa pode ser dividido em subprocessos.
26 SOA: Modelagem, Análise e Design
2.4.2 Ferramentas
Ao se implementar uma arquitetura SOA, torna-se necessária uma infraestrutura
tecnológica para dar suporte aos diversos tipos de elementos que compõem uma
2 Entendendo SOA 27
Servidor de aplicação
O servidor de aplicação é o ambiente de execução responsável por executar os
componentes de serviço e alguns tipos de interfaces consumidoras (aplicações Web),
conforme pode ser visto na Figura 2.12. Deve suportar tecnologias de implementação
de serviços, como Web Services ou REST.
Plataforma BPMS
Uma plataforma BPMS (Business Process Management System), ou plataforma de
orquestração de processos, é um container capaz de executar processos de negócio
definidos na forma de modelos de processo, conforme a Figura 2.13. Uma plataforma
BPMS pode suportar a composição de serviços na execução das tarefas do processo.
A plataforma pode suportar também a orquestração de tarefas humanas (como
os sistemas de workflow), isto é, gerenciar a participação de pessoas na execução de
tarefas de um processo de negócio.
Atua nas camadas de processo e integração.
síncronos e assíncronos, escalabilidade, entre outros (Keen et al., 2005). Atua nas
camadas de serviço, componente de serviço, integração e qualidade de serviço.
Adaptadores de integração
Adaptadores de integração são ferramentas que possibilitam a comunicação com
aplicações legadas ou sistemas proprietários por meio de protocolos de comunicação
e formatos de dados que não são abertos nem padronizados, conforme a Figura 2.15.
Os adaptadores facilitam a construção de serviços a partir de aplicações legadas, pois
abstraem a complexidade de se lidar com protocolos e interfaces de programação
(APIs – Application Programming Interfaces) proprietárias.
Atua nas camadas de componentes de serviço e integração.
Portal
Um portal é um container de aplicações Web baseadas em páginas e aplicativos Web
chamados portlets, conforme pode ser visto na Figura 2.16. Sua principal função é
prover uma interface entre os usuários e os processos de negócio e serviços.
É através do portal que os usuários poderão verificar suas caixas de entrada de
tarefas, executar as tarefas humanas de processos, preencher e visualizar formulários,
monitorar as métricas e indicadores do processo e acessar aplicações Web que utilizam
serviços.
Atua na camada de interfaces consumidoras.
30 SOA: Modelagem, Análise e Design
Registro de serviços
Um registro de serviços é uma base de dados que provê informações sobre os serviços
em uma arquitetura SOA, conforme a Figura 2.18. O registro de serviços contém
informações como:
● descrições de serviços e suas operações;
● interfaces de serviços e esquemas de mensagens;
● especificações de políticas de serviços e SLAs;
● endereços físicos de serviços.
Repositórios de metadados
Em uma arquitetura SOA, um repositório de metadados é uma base de dados
utilizada para armazenar metadados de serviços e artefatos relacionados, conforme
a Figura 2.19. Alguns exemplos de metadados e artefatos armazenados por um
repositório são:
● versão do serviço;
● status do ciclo de vida;
● orquestrações de serviços;
● aplicações para Web;
● aplicações de portal;
● modelos de processos e simulações.
Permitem a construção e testes de elementos em todas as camadas funcionais.
2.5.1 Facilidade de integração
Uma arquitetura SOA é baseada em serviços intrinsecamente interoperáveis (Erl,
2005). Devido ao uso de padrões abertos de interação, aplicações estruturadas na
forma de serviços possuem uma capacidade inerente de se comunicarem de maneira
interoperável. É como se as aplicações orientadas a serviços já nascessem pré-in-
tegradas, minimizando o esforço de se desenvolver integrações entre aplicações.
A estrutura de serviços tende a facilitar a integração de aplicações, uma vez que
uma arquitetura SOA é uma maneira de se reorganizar uma infraestrutura formada de
silos de software em um portfólio de serviços compartilhados. Em uma arquitetura
SOA, as aplicações existentes e futuras podem acessar os serviços sem a necessidade
de se desenvolver integrações ponto a ponto baseadas em protocolos proprietários.
Assim, esta arquitetura pode ser utilizada em ambientes com múltiplas aplicações
baseadas em variadas tecnologias e plataformas que necessitam se comunicar. Para
efetuar transações entre elas, pode-se conectar e reusar serviços com esforço mínimo
de programação e integração (Papazoglou, 2003).
36 SOA: Modelagem, Análise e Design
Marks e Bell (2006) chegam até a chamar esse benefício de integração de custo
zero. Tal afirmação baseia-se no fato de que não é necessário nenhum esforço para
realizar a conversão entre protocolos e formatos, para se estabelecer a comunicação
entre aplicações em uma arquitetura SOA, uma vez que elas já estariam baseadas
nos mesmos padrões abertos de interação.
2.5.9 Necessidade de governança
Com a existência de um portfólio de serviços disponíveis para toda a organização,
pode haver diversas equipes de projeto desenvolvendo e utilizando serviços deste
portfólio ao mesmo tempo. Um serviço deixa de ser responsabilidade de uma
única equipe de projeto e deixa também de pertencer a um único processo de
negócio.
O paradigma de orientação a serviços exige que seja definida uma estrutura
de governança na organização, de modo a estabelecer papéis, responsabilidades,
processos para organizar os serviços desenvolvidos (Erl, 2007). A governança define
mecanismos para desenvolver, manter e divulgar os serviços do portfólio e garantir
a padronização da arquitetura.
Objetivo
O objetivo deste capítulo é apresentar um ciclo de vida para o paradigma de orientação
a serviços. São descritas boas práticas do paradigma, assim como atividades, papéis
e artefatos, destacando-se os modelos de negócio e as especificações de serviços.
Este capítulo descreve um ciclo de vida para SOA baseado em boas práticas do paradigma
de orientação a serviços. Destacam-se os papéis ou atores que desempenham as atividades
e artefatos de entrada e saída das atividades do ciclo de vida.
Conteúdo
3.1 Boas práticas 43
3.2 Ciclo de vida SOA 47
3.3 Modelagem, análise e design 50
3.4 Papéis 50
3.5 Artefatos 54
3.6 Ciclo de vida iterativo 58
3.7 Considerações do capítulo 58
3.1.1 Abordagem meet-in-the-middle
No desenvolvimento de soluções orientadas a serviços, não se pode seguir totalmente
uma abordagem top-down, levando em conta apenas os requisitos e objetivos do
negócio para a identificação e especificação de serviços. Tampouco deve ser adotada
uma abordagem puramente bottom-up, apenas encapsulando a funcionalidade de
aplicações legadas na forma de serviços. Um método deve, de alguma forma, equili-
brar as duas alternativas, resultando em uma abordagem meet-in-the-middle.
43
44 SOA: Modelagem, Análise e Design
3.2.1 Modelagem
O objetivo da fase de modelagem é capturar o estado atual do negócio, suas necessi-
dades e objetivos e traduzir para um modelo de processo de negócio e especificação
48 SOA: Modelagem, Análise e Design
3.2.2 Análise
Durante a fase de análise, são definidos os serviços pertencentes à solução, que devem
ser derivados do modelo de processo de negócio to-be e dos requisitos. Nesta fase,
devem ser identificadas as operações e os serviços candidatos necessários para dar
suporte à solução modelada. É feita então uma análise de gap, para determinar quais
dos serviços candidatos já existem no portfólio e quais serviços podem reaproveitar
recursos existentes. Finalmente, a análise de realização define qual será a estratégia
de implementação dos novos serviços.
3.2.3 Design
Em seguida vem a fase de design, quando os serviços candidatos definidos na análise
são transformados em contratos de serviços e especificações de realização. Uma vez
definidos os contratos dos serviços, ocorre também composição destes em processos
de negócio. O design de soluções orientadas a serviços exige que as interfaces sejam
muito bem definidas e documentadas antes de serem implementadas. Além disso,
deve-se garantir que os serviços especificados possuam características aderentes aos
princípios de orientação a serviços.
3.2.4 Construção
Na fase de construção, é desenvolvida a implementação dos serviços de acordo
com as especificações. Estes serviços podem ser implementados através da criação
de novos serviços a partir do zero, da exposição de aplicações existentes ou da
composição de serviços existentes reusáveis.
Nessa fase, ocorrem também os testes, que têm o intuito de validar se os requisitos
foram satisfeitos e se as implementações entregues estão de acordo com os contratos
e especificações definidas nas fases de análise e design. São realizados testes de
unidade, integrados e não funcionais.
3.2.5 Implantação
Na fase de implantação, os processos e serviços implementados são publicados e
expostos para todos os participantes, incluindo organizações, aplicações e outros
processos. Uma vez que a solução publicada é homologada, ela é colocada em
operação.
3.2.6 Gerenciamento
A fase de gerenciamento inicia-se assim que os serviços e processos são postos em
operação.
Nessa fase, ocorre a monitoração da solução, durante a qual é medido o desempe-
nho dos serviços, com o intuito de garantir qualidade na execução e conformidades
com SLAs (Service Level Agreements) e requisitos não funcionais definidos nos
contratos de serviço.
50 SOA: Modelagem, Análise e Design
Métricas de negócio e KPIs (Key Performance Indicators) são aferidos para medir
também o desempenho dos processos e detectar pontos em que pode haver melhora.
Trata-se de um processo contínuo de verificação do atendimento dos requisitos e
objetivos de negócio definidos na modelagem.
Os dados obtidos poderão servir como entrada para uma nova iteração do ciclo de
vida, iniciando um novo projeto de desenvolvimento para evoluir a solução orientada
a serviços.
3.4 Papéis
Nesta seção descrevem-se as responsabilidades e habilidades necessárias de cada
papel (ou função) de negócio dentro do ciclo de vida SOA.
3.4.1 Analista de processos
O analista de processos é responsável pela elaboração dos modelos de processo
de negócio que serão automatizados por uma solução orientada a serviços. Este
papel deve possuir conhecimentos sobre levantamento de requisitos, modelagem de
processos e elaboração de casos de uso de negócio.
3 Ciclo de vida SOA 51
É importante que a pessoa que assuma esse papel possua boa capacidade de
comunicação, tanto oral como escrita, pois ela precisará interagir com representantes
de diversas áreas da organização e precisará documentar claramente as necessidades
e requisitos identificados. É essencial que a pessoa possua conhecimento sobre o
domínio de negócio no qual a solução está inserida. Por exemplo, caso a solução
tenha como objetivo automatizar um processo de contratação de apólice de seguros,
o analista deve possuir conhecimento sobre como funciona uma seguradora.
3.4.2 Analista de serviços
O analista de serviços é responsável pela realização da transição dos artefatos
gerados pela modelagem de negócio para uma solução orientada a serviços. Este
52 SOA: Modelagem, Análise e Design
3.4.3 Arquiteto de serviços
O arquiteto de serviços tem como função principal criar as especificações dos servi-
ços a serem implementados, projetando suas interfaces e comportamento funcional.
Assim como o analista de serviços, o arquiteto de serviços também deve possuir
conhecimentos sólidos sobre os princípios de orientação a serviços, de modo a criar
contratos e especificações aderentes ao paradigma.
O arquiteto de serviços deve possuir larga experiência em análise e especificação
de sistemas e conhecimentos avançados sobre tecnologias de integração e de rea-
lização de serviços (XML, Web Services, REST etc.), para definir a arquitetura de
realização de cada serviço e especificar contratos e realizações de serviços tecnica-
mente interoperáveis e aderentes aos princípios.
Conhecimentos sólidos sobre design patterns SOA também são fundamentais na
elaboração dos contratos e especificações de serviços.
Ter capacidade de elaborar modelos em UML é uma competência desejável
quando a linguagem for adotada para representar realizações de serviços.
3.4.4 Arquiteto corporativo
O arquiteto corporativo é responsável pela governança do portfólio de serviços da
organização, definindo uma arquitetura de referência e padrões a serem seguidos nos
projetos. Este papel pode ser exercido por uma equipe, executando algumas funções
de um Centro de Excelência SOA.
São responsabilidades do arquiteto corporativo:
● definir padrões técnicos de design de esquemas e contratos de serviços;
● definir padrões técnicos de design de realização de serviços;
● definir arquitetura de referência, com orientações para reuso e integração;
● validar que os serviços pertencentes ao portfólio sejam aderentes aos princípios
de orientação a serviços;
3 Ciclo de vida SOA 53
pecificações.
Devem possuir conhecimentos sólidos nos princípios de orientação a serviços,
governança de serviços, tecnologias de integração e arquitetura de aplicações e design
patterns SOA.
3.4.6 Desenvolvedor
O desenvolvedor é responsável pela construção dos serviços especificados. O perfil
necessário é o mesmo de um método de desenvolvimento de software tradicional,
sendo importante ter conhecimentos sobre os princípios de orientação a serviços e
tecnologias de integração e de realização de serviços.
Dependendo do tamanho da equipe e da solução orientada a serviços, pode haver
a separação dos desenvolvedores em perfis especializados em partes específicas da
solução, como desenvolvedores de mediações, desenvolvedores de orquestração de
processo e desenvolvedores Web para a camada de apresentação.
Além de sólidos conhecimentos das tecnologias empregadas na implementação,
os desenvolvedores devem ser capazes de interpretar especificações de serviços,
especificações de casos de uso e modelos UML, quando estes forem utilizados.
3.4.7 Testador
O testador é responsável pelos testes dos serviços especificados. O perfil neces-
sário para este papel é o mesmo de um método de desenvolvimento de software
tradicional, sendo importante ter conhecimentos de orientação a serviços e tecnologias
de integração.
54 SOA: Modelagem, Análise e Design
3.4.8 Administrador de serviços
O administrador de serviços é responsável por implantar os serviços em produção
e mantê-los operacionais, monitorando seu desempenho e disponibilidade e as-
segurando-se de que a infraestrutura está bem dimensionada.
3.4.10 Ator de processos
O ator de processos é um papel que, no contexto do ciclo de vida SOA, representa
todos os colaboradores, funcionários, clientes e parceiros da organização que es-
tão envolvidos na execução de um processo de negócio, seja executando tarefas,
fornecendo ou recebendo informações.
3.5 Artefatos
Nesta seção serão descritos alguns artefatos gerados durante a realização das ativi-
dades do ciclo de vida SOA.
é recebido pelo atendente. Este, por sua vez, verifica os dados do pedido, e, se es-
tiverem completos, verifica se o produto existe no estoque. Caso não exista, comunica
o cliente. Se existe, o atendente gera a fatura do pedido. A fatura deve ser paga pelo
cliente e, em seguida, a área de expedição prepara o produto para o envio ao cliente.
Por fim, o cliente recebe o produto.
3.5.4 Contrato de serviço
O contrato de serviço, conforme descrito no Capítulo 2, é composto pela definição
da interface técnica do serviço, definições das mensagens do serviço e políticas
que definem restrições e requisitos não funcionais, conforme podem ser vistas
na Figura 3.6. Complementando estes artefatos técnicos, pode ser elaborado um
3 Ciclo de vida SOA 57
Modelagem
Objetivo
O objetivo deste capítulo é apresentar a fase de modelagem, onde os modelos de proces-
sos de negócio são obtidos. Estes modelos são essenciais para especificar os requisitos de
serviços.
A fase de modelagem ocorre antes das atividades da fase de análise. Nessa fase, busca-se
um entendimento sobre as necessidades de negócio e levantam-se os seus requisitos. As
atividades de modelagem são executadas por analistas de processos ou da área de processos
da organização.
A Figura 4.1 apresenta as atividades de modelagem de processo as-is, modelagem de processo
to-be e especificação de requisitos da fase de modelagem, descritas a seguir.
Conteúdo
4.1 Modelagem de processo as-is 59
4.2 Modelagem de processo to-be 64
4.3 Especificação de requisitos 70
4.4 Considerações do capítulo 74
59
60 SOA: Modelagem, Análise e Design
Observação:
Esta seção não tem como propósito ser um guia completo de modelagem e otimização de proces-
sos, mas apenas fornecer orientações sobre como processos devem ser modelados considerando
sua automação por uma solução orientada a serviços.
ser seguido).
4 Modelagem 61
● custos para execução de uma tarefa (por utilização de algum recurso ou pelo
É importante entender nesse ponto quais são as métricas críticas para se aferir o
desempenho do processo, na percepção do usuário ou do negócio. Por exemplo, em
um processo de vendas, a receita gerada é uma métrica importante, enquanto em um
processo de atendimento a clientes o tempo de duração torna-se mais crítico.
4 Modelagem 63
Dicas:
● É importante manter consistência na nomenclatura das tarefas e entidades relacionadas. Crie
um vocabulário padronizado e aplique-o no modelo de processo e nas descrições textuais
das tarefas.
● Nesse ponto, o processo deve representar a lógica de negócio e pode ser mantido com nível
alto de granularidade. As tarefas devem representar funções atômicas no nível de negócio. O
detalhamento em etapas técnicas de menor granularidade será feito nas próximas atividades
do ciclo de vida.
● Nomes de tarefas geralmente iniciam-se com verbo, como “analisar crédito” e “cadastrar
aluno”.
Exemplo
Vamos ilustrar a fase de modelagem tomando como exemplo o processo de negócio consulta
médica da clínica médica MEDSOA. Trata-se do processo iniciado quando um paciente agenda
uma consulta na clínica MEDSOA, passando pela realização da consulta até o pagamento,
realizado pelo próprio paciente ou por um convênio médico. A clínica MEDSOA não conta com
nenhuma solução orientada a serviços para automatizar seus processos, possuindo apenas um
aplicativo pacote de CRM para cadastro de pacientes.
Visando automatizar o processo, o analista de processos da clínica MEDSOA modela o
processo atual (as-is) que é executado para a realização de consultas. Para elaborar o modelo de
processo as-is, ele realiza entrevistas com os atendentes da recepção da clínica, com os médicos
e com os funcionários do setor administrativo (os atores do processo), perguntando sobre como
cada um deles executa suas atividades durante o atendimento aos pacientes. Como resultado
destas entrevistas, o analista de processos descobre o fluxo de atividades, a sequência em que
elas são executadas e a lógica envolvida no fluxo.
O processo inicia-se com o paciente entrando em contato por telefone ou pessoalmente
para solicitar uma consulta com um dos médicos da clínica. O atendente da clínica agenda a
consulta com o médico escolhido na data e na hora escolhidas pelo paciente. Na data e na hora
da consulta, o paciente comparece à clínica e é atendido pelo médico. Durante a consulta, o
médico obtém o prontuário do paciente e atualiza as informações de acordo com as observações
provenientes da consulta e eventuais exames e procedimentos. Se for o caso, o médico pode
prescrever um ou mais medicamentos ao paciente e solicitar que ele realize exames diagnósticos
e retorne para uma nova consulta. Após a finalização da consulta, caso o paciente não possua
um convênio médico, deve realizar o pagamento em cheque, dinheiro ou cartão. Caso possua,
o setor administrativo deve gerar uma fatura para ele. Se o médico tiver solicitado retorno, o
paciente deve agendar uma nova consulta, iniciando uma nova iteração do processo. Caso con-
trário, o processo é encerrado.
Baseado nessas informações, o analista de processos elabora o diagrama de processo em
notação BPMN do modelo de processo as-is de consulta médica, conforme a Figura 4.3. Temos
quatro participantes: administração, atendente, paciente e médico.
Além do diagrama de processo, o analista de processos ainda descreve textualmente os
detalhes de cada tarefa, especificando as etapas executadas pelos atores em cada uma delas.
Por exemplo, o detalhamento da tarefa “Agendar Consulta”.
Para resolver tais pontos, além de alterar o fluxo e as tarefas, pode-se propor a
automação de tarefas utilizando serviços. Este tipo de abordagem é o mais indicado
para tarefas manuais demoradas, ou aquelas cujos dados de saída não são confiáveis
por serem informados manualmente.
Os modelos podem ser representados utilizando-se uma notação de processo,
como BPMN, que pode ser convertida diretamente para a linguagem WS-BPEL por
diversas ferramentas existentes no mercado.
A modelagem de processo to-be deve definir e documentar como um processo
será executado dentro de uma organização, identificando papéis, responsabilidades,
atividades e ordens de execução. Feita esta modelagem, é possível realizar uma
análise de negócios e identificar possíveis ganhos e alterações com a execução deste
processo.
Pelo fato de descrever a automação do processo, o modelo to-be deve ser deta-
lhado até um nível mais técnico. Na especificação de processo associada devem ser
descritos os detalhes de execução de cada tarefa.
O analista de processos pode acompanhar os seguintes passos para elaborar o
modelo de processo to-be.
66 SOA: Modelagem, Análise e Design
4.2.1 Definir melhorias
A partir do modelo de processo as-is, o analista de processos deve propor melhorias
no processo de modo a solucionar os problemas e atender às necessidades e metas
de negócio levantadas nas entrevistas com os envolvidos. Definir as melhorias que
devem ser implementadas no processo de negócio de acordo com as solicitações dos
usuários, resultados de simulações e regras de negócio.
● automação de tarefas humanas que envolvem trabalhos repetitivos;
● automação de tarefas sujeitas a erros humanos ou fraudes;
● adição de revisões e verificações em pontos sujeitos a erros humanos ou fraudes;
● automação de verificações e validações de regras de negócio;
● aumento no número de recursos para execução de tarefas de longa duração.
4.2.2 Simular processo
A simulação de processos de negócio permite ao analista de processos validar se
as alterações propostas trarão os resultados esperados. Por meio da simulação, é
possível ter uma visão dos ganhos de desempenho do processo antes mesmo de sua
implementação. O uso de ferramentas de simulação auxilia o analista de processos
na tomada de decisões de melhorias, provendo relatórios gerenciais e comparativos
entre cenários.
Com uma modelagem de processo de negócio bem-feita, é possível:
● identificar os gargalos;
● estimar custos e durações;
● identificar os impactos antes da implementação de mudanças em um processo;
● criar novos cenários com a verificação do impacto no desempenho.
Baseado nos resultados das simulações de alguns cenários, o analista de processos
pode definir novos cenários para o processo, por meio de ajustes. Alguns dos possíveis
ajustes são:
● adicionar mais pessoas ou recursos para realizar uma tarefa, medindo o impacto
em termos de duração, custo ou receita;
● automatizar uma tarefa, por exemplo, passando de uma consulta manual para
impacto ao processo;
● transferir a responsabilidade por uma tarefa de um papel para outro.
Descrição textual: o atendente, ao receber um pedido do cliente, deve primeiro definir o número
do pedido para poder rastrear o produto ao longo do processo de venda. Após definir o número
do pedido, deve verificar se o cliente é cadastrado na empresa, caso contrário, deve solicitar
os dados do cliente. Em seguida, deve verificar se os dados do pedido estão completos, quanto
ao código do produto, à descrição e à quantidade.
Sequência de passos:
1. Cliente envia pedido.
2. Atendente recebe pedido.
3. Atendente define um número do pedido.
4. Atendente verifica se cliente é cadastrado, caso contrário, solicita dados do cliente.
5. Atendente verifica se dados do pedido estão completos.
Frases de requisitos:
● O cliente deve enviar pedido.
● O atendente deve verificar se cliente é cadastrado, caso contrário, deve solicitar dados do
cliente.
● O atendente deve verificar se os dados do pedido estão completos.
Dica:
O modelo de processo to-be deve possuir um detalhamento técnico maior, podendo contar
com tarefas de menor granularidade ou com detalhamento de uma tarefa em etapas de baixa
granularidade.
Exemplo:
Dando continuidade ao processo de consulta médica da clínica MEDSOA, o analista de pro-
cessos parte para a modelagem de processo “to-be”. Nesta atividade, o analista de processos
deve elaborar uma nova versão do modelo de processo, incorporando melhorias e prevendo
a automação do processo. A clínica MEDSOA visa implementar uma nova versão do processo
automatizada através de um BPMS e serviços compostos.
O analista de processos, então, modifica o modelo de processo, subdividindo-o em três
subprocessos: agendamento, atendimento e pagamento. Além disso, o analista de processos
promoveu automação ao processo, acrescentando tarefas realizadas pelo pool “sistema”.
Durante o agendamento (representado em BPMN na Figura 4.5), foram adicionadas tarefas
sistêmicas para facilitar o trabalho do atendente, como o acesso ao cadastro de pacientes e às
agendas dos médicos.
Para facilitar o trabalho do médico durante o atendimento (Figura 4.6), foram acrescentadas
tarefas sistêmicas na manipulação do prontuário do paciente (agora eletrônico) e na geração
de prescrições. Foi acrescentada também uma tarefa automatizada de envio de notificação via
SMS ou e-mail ao paciente um dia antes da consulta, para lembrá-lo de comparecer à clínica,
visando minimizar o número de atrasos e faltas.
Já no pagamento (Figura 4.7), no caso em que o paciente utiliza um convênio médico
em vez de realizar o pagamento direto, foi automatizada a tarefa de geração da fatura para o
convênio.
Além de elaborar os diagramas de processo, o analista de processos ainda deve detalhar as
tarefas, especificando dados de entrada e saída, além de descrever a lógica executada em cada
uma delas, passo a passo.
No exemplo a seguir, é ilustrado o detalhamento da tarefa “Prescrever Medicamentos e
Exames” do subprocesso atendimento.
Objetivo da tarefa: baseado no diagnóstico, o médico utiliza o sistema para gerar uma pres-
crição de medicamentos. Caso ainda sejam necessários exames, o médico gera através do
sistema uma prescrição de exames.
Dados de entrada: nomes dos medicamentos, instruções de administração dos medicamentos,
nomes dos exames.
Dados de saída: prescrição de medicamentos, prescrição de exames.
Detalhamento da tarefa: o médico acessa no sistema a função de “Geração de Prescrição”.
O médico busca e seleciona o medicamento desejado. O sistema adiciona à prescrição as
seguintes informações: nome comercial do medicamento, nome do princípio ativo, frequência
de administração, forma de administração, dose ou quantidade. Para prescrever um exame,
o médico busca e seleciona o exame desejado. O sistema adiciona à prescrição as seguintes
informações: nome do exame, instruções de preparação para o exame. Após adicionados
todos os medicamentos e exames, o médico imprime uma prescrição de medicamentos e
uma prescrição de exames e entrega-as ao paciente.
70 SOA: Modelagem, Análise e Design
Exemplo:
Complementando o modelo de processo “to-be”, o analista de processos elabora algumas
especificações de casos de uso, descrevendo as interações dos atores com a camada de
apresentação da solução orientada a serviços. Os seguintes casos de uso são descritos:
agendamento de consulta – este caso de uso representa a interação do atendente com o
sistema, quando o paciente solicita uma consulta; obter prontuário – descreve a interação
do médico com o sistema, ao buscar o prontuário de um paciente;atualizar prontuário –
descreve a interação do médico com o sistema, ao atualizar o prontuário de um paciente;
prescrever medicamentos e exames – descreve a interação do médico com o sistema,
buscando medicamentos e exames e inserindo orientações para gerar uma prescrição para
o paciente.
A seguir, é exemplificada a descrição do caso de uso que detalha uma parte do subprocesso
agendamento. O escopo do caso de uso pode ser visualizado na Figura 4.10.
4 Modelagem 73
Objetivo: registrar um paciente para uma consulta com um dos médicos da clínica, em data
e horário de preferência do paciente.
Fluxo básico de eventos:
1. Por telefone, o paciente entra em contato com a clínica e solicita consulta com um
médico, identificando-o pelo nome.
2. Atendente acessa o Sistema e seleciona a opção de menu “Agendar Consulta”.
3. Sistema exibe uma lista com os médicos disponíveis e permite que se realize uma busca
pelo nome do médico.
4. Atendente seleciona o médico indicado e escolhe a opção “Visualizar Agenda”.
5. Sistema exibe em um calendário as próximas datas e horários disponíveis para o médico
selecionado.
6. Atendente informa ao paciente as datas e os horários disponíveis.
7. Paciente informa ao atendente a data e o horário de sua preferência, dentre os disponí-
veis.
8. Atendente seleciona a data e o horário disponíveis no calendário e seleciona a opção
“Nova Consulta”.
9. Atendente preenche no sistema o nome do paciente e confirma o agendamento.
10. Sistema exibe mensagem de sucesso.
11. Atendente informa ao paciente que a consulta foi agendada com sucesso.
Fluxo alternativo:
[Paciente não possui médico de preferência – nesse caso, o paciente seleciona o médico
pela especialidade médica. Ocorre variação nos passos de 1 a 5.]
1. Por telefone, o paciente entra em contato com a clínica e solicita uma consulta, in-
formando a especialidade médica desejada.
2. Atendente acessa o sistema e seleciona a opção de menu “Agendar Consulta”.
3. Atendente seleciona a opção “Busca por especialidade”.
4. Sistema exibe uma lista com as especialidades médicas disponíveis.
74 SOA: Modelagem, Análise e Design
Análise
Objetivo
O objetivo deste capítulo é apresentar a fase de análise, onde os serviços são detalhados até
a análise de sua possível realização.
Na fase de análise, são identificados serviços candidatos a partir do modelo de processo
to-be. Ainda nesta fase, decide-se como cada serviço será realizado, analisando-se possibili-
dades de reuso para cada um, chegando a um conjunto de serviços finais.
A Figura 5.1 apresenta as atividades de identificação de serviços candidatos, a análise de gap
e a análise de realização da fase de análise, descritas a seguir.
Conteúdo
5.1 Identificação de serviços candidatos 75
5.2 Análise de gap 84
5.3 Análise de realização 91
5.4 Considerações do capítulo 97
75
76 SOA: Modelagem, Análise e Design
to-be. As operações identificadas nesta atividade são apenas candidatas, uma vez que
ainda serão analisadas e revisadas, antes de sua especificação e implementação.
Alguns exemplos de etapas de processo que podem ser identificadas como ope
rações candidatas são:
● consulta em uma base de dados ou sistema legado;
● processamento sistêmico de informações (envio de e-mails, geração de relatórios
ou massas de dados, manipulação de objetos ou registros);
● aplicação de regras de negócio;
● validação de dados.
Uma prática comum ao se escrever esse tipo de caso de uso é referir-se à solução
orientada a serviços como um todo por meio do ator “Sistema”. Assim, eventos do
caso de uso que forem automatizados pela solução serão associados ao ator “Sistema”.
Durante a fase de análise é que será definido qual elemento da solução orientada a
serviços (serviço ou aplicação legada) ficará responsável por executar cada evento.
Na identificação inicial, pode-se criar uma relação direta entre as etapas cujo ator
é o “Sistema” e uma operação de serviço. Neste caso, a solução orientada a serviços
como um todo é representada pelo ator “Sistema”.
Assim, como na decomposição de processo de negócio, o analista de serviços deve
registrar no modelo de serviços as operações candidatas identificadas nessa etapa.
A Figura 5.4 representa o fluxo de eventos de um caso de uso por meio de um
diagrama de sequência. Neste exemplo, temos dois eventos que envolvem a interação
de um dos atores usuários com o ator “Sistema”, sendo portanto identificados como
operações candidatas.
Exemplo
Uma vez definido o modelo de processo “to-be” e a especificação de requisitos (casos de uso
de negócio, regras de negócio e requisitos não funcionais) do processo de consulta médica da
clínica MEDSOA, o analista de serviços recebe esses artefatos gerados para realizar a análise
orientada a serviços.
82 SOA: Modelagem, Análise e Design
Na análise do modelo de processo “to-be”, algumas operações candidatas podem ser iden-
tificadas diretamente a partir das tarefas associadas ao ator “Sistema”. Neste caso, temos ope-
rações candidatas identificadas no nível de granularidade de tarefas de processo. As operações
identificadas, deste modo, são as seguintes, separadas por subprocesso:
Subprocesso agendamento
obter paciente pelo nome;
inserir paciente;
obter datas disponíveis na agenda;
inserir consulta na agenda.
Subprocesso atendimento
enviar notificação;
obter prontuário de paciente;
gerar prescrição;
atualizar prontuário de paciente.
Subprocesso pagamento
gerar fatura para convênio;
registrar pagamento no caixa.
Note que temos duas operações que já haviam sido identificadas pela análise inicial, no
nível de granularidade de tarefa, mas há duas outras que só puderam ser identificadas devido
ao detalhamento do caso de uso.
Já no fluxo alternativo do caso de uso, podem ser identificadas mais algumas operações
candidatas:
Serviço “Agenda”
Serviço responsável por gerenciar as agendas de consultas dos médicos da clínica MEDSOA.
Operação: inserir consulta na agenda.
Dados de entrada: identificação de médico, identificação de paciente, data e hora da consulta.
Dados de saída: mensagem de confirmação de agendamento ou erro.
Descrição da lógica: insere na agenda do médico selecionado (pelo identificador) um registro
de consulta para o paciente selecionado (pelo identificador) na data e hora selecionadas.
Caso o registro seja inserido com sucesso, retorna uma mensagem de sucesso. Caso já exista
alguma consulta na data e hora selecionadas, retorna uma mensagem de erro.
5.2 Análise de Gap
Papel: analista de serviços
Artefatos utilizados: modelo de serviços candidatos, documentação de aplicações
legadas e registro de serviços
Artefatos gerados: não aplicável
Um dos principais benefícios buscados com a adoção de SOA é o aumento no
reuso de recursos existentes. Para tal, além de se garantir que os serviços possuam
características de reusabilidade, é essencial que o método de desenvolvimento preveja
a avaliação de serviços ou outros recursos existentes para reuso na construção de
novas soluções orientadas a serviços.
A atividade de análise de gap, conforme pode ser vista na Figura 5.8, tem como
objetivo comparar os serviços candidatos identificados com os recursos já existentes
na infraestrutura de TI da organização e avaliar as possibilidades de reuso (Papazo
glou; Van den Heuvel, 2006).
Para cada operação candidata (pertencente a um serviço candidato), o analista de
serviços deve verificar se já existe algum serviço no portfólio ou aplicação de soft
ware legada que execute total ou parcialmente sua funcionalidade. Para realizar esta
busca, podem ser consultados o registro de serviços da organização, os repositórios
de recursos reusáveis ou as documentações de aplicações legadas. Também podem
ser avaliados para reuso serviços providos por parceiros externos através da nuvem
(cloud services).
caso haja sobreposição com algum serviço já existente. Por exemplo, uma operação
que já é realizada por um serviço existente passará a pertencer a ele. Ou ainda, uma
nova operação a ser criada pode pertencer ao mesmo contexto lógico de um serviço
existente, sendo, portanto, acrescentada a ele.
Dicas
● Ao revisar o agrupamento, lembre-se do design pattern Service Normalization (Normalização
de Serviços) (Erl, 2009).
● A participação do analista de serviços durante a modelagem de processo to-be visa
maximizar o reuso de serviços existentes e minimizar os gaps. O analista de serviços
pode prover o analista de processos com conhecimento sobre o portfólio de serviços
da organização e aplicações legadas existentes, direcionando a definição do modelo de
processo to-be.
Exemplo
O analista de serviços da clínica MEDSOA inicia uma análise dos recursos já existentes com o
objetivo de localizar alguma função, componente ou provedor de serviço que possa ser reusado
para realizar as operações dos serviços candidatos identificados. Para proceder com a análise
de gap, o analista de serviços consulta a documentação disponível dos programas e aplicações
legadas existentes e faz uma prospecção de provedores de serviços na nuvem. Como a clínica
MEDSOA ainda não possui soluções orientadas a serviços implementadas, não há um portfólio
de serviços a ser consultado. Caso já existisse, o registro de serviços deveria também ser avaliado
para reuso.
Como resultado da análise comparativa entre as funções encontradas nos recursos existentes
e as funções necessárias para os serviços candidatos, identificam-se os gaps a serem resolvidos.
O analista de serviços, então, classifica os gaps em um dos cenários de reuso.
Durante a atividade, o analista de serviços descobre que na clínica MEDSOA já existe um
aplicativo pacote de CRM utilizado para armazenar os dados cadastrais de pacientes. Por traba-
lhar com dados de pacientes, o aplicativo CRM foi avaliado para realização das operações do
serviço candidato “Paciente”. No entanto, o aplicativo CRM não era voltado à área médica e,
por isso, possuía apenas funções de acesso a dados cadastrais dos pacientes, mas não a dados
médicos e prontuários. O aplicativo CRM precisa de uma API para possibilitar a integração
com outros sistemas. Deste modo, o analista de serviços estuda a documentação desta API para
avaliar o reuso.
Para a operação candidata “Obter paciente pelo nome”, a API do aplicativo CRM possui duas
funções semelhantes que poderiam ser reusadas: “buscarClientePorNome” e “buscarClientePorSo-
brenome”. Como o aplicativo CRM armazena o nome e o sobrenome dos clientes em campos
separados, sua API possui funções separadas de busca por nome e por sobrenome. A operação
candidata, no entanto, considera o nome e o sobrenome como um único campo, permitindo
que pacientes sejam encontrados informando o nome ou o sobrenome.
Já para a operação candidata “Inserir paciente”, o aplicativo CRM possuía em sua API a função
“adicionarCliente”, que poderia ser reusada.
As outras operações do serviço candidato não existiam na API, pois o CRM não trabalhava
com dados de prontuário.
Desse modo, foram identificados os seguintes cenários de reuso para as operações do serviço
candidato “Paciente”:
● obter paciente pelo nome — operação realizada parcialmente por aplicação legada (fun-
ções “buscarClientePorNome” e “buscarClientePorSobrenome” do aplicativo CRM);
90 SOA: Modelagem, Análise e Design
texto ao telefone celular do paciente para lembrá-lo da consulta. O analista de serviços pesquisa
por provedores de serviços de mensageria na nuvem, obtém informações sobre seus contratos
de serviços e conclui que um serviço na nuvem poderia ser reusado para realizar a operação
candidata “Enviar notificação”.
Já para os demais serviços candidatos, a clínica MEDSOA não possuía nenhuma aplicação
legada para atender, nem foram encontrados provedores de serviços adequados na nuvem.
Portanto, para as operações candidatas restantes, o cenário de reuso identificado foi “Operação
não existente”.
A Tabela 5.1 resume os cenários de reuso identificados para todas as operações candidatas.
5.3 Análise de Realização
Papéis: analista de serviços, gerente de projeto, arquiteto corporativo
Artefatos utilizados: cenários de reuso
Artefatos gerados: modelo de serviços e decisões de realização
Uma vez identificados os cenários de reuso para cada operação candidata em rela
ção aos recursos existentes, devem então ser analisadas as alternativas de realização
possíveis para cada uma delas e decidir qual será adotada para realizar o serviço.
A análise de realização, conforme a Figura 5.14, tem por objetivo avaliar as
alternativas para realização de cada operação candidata em termos de viabilidade
técnica, custos, riscos técnicos e de projeto, esforço e ROI. Para esta tomada de
decisão, o analista de serviços pode contar com o apoio do gerente de projetos e do
arquiteto corporativo.
alterar o serviço existente para que ele se adapte ao serviço candidato. Esta
alternativa traz um risco a ser considerado, pois alterações em um serviço podem
impactar seus consumidores já existentes. Portanto, sempre que se optar pela
alteração do serviço, deve-se analisar os possíveis impactos destas alterações.
Caso a alteração afete o contrato do serviço existente, recomenda-se criar uma
5 Análise 93
nova versão do serviço (Erl, 2008). Neste caso, como a alteração afeta o contrato,
consequentemente atinge consumidores existentes do serviço. Para minimizar
o impacto, pode-se criar uma operação adicional no serviço, que execute toda
a lógica necessária para a operação candidata, ou apenas a lógica faltante.
● Implementar mediação – uma alternativa de realização comum nesse cenário é im
Dicas
● Aplique os design patterns Version Identification (Identificação de Versão) e Canonical
Versioning (Versionamento Canônico) (Erl, 2009), de modo a garantir que todos os contratos
de serviços sejam versionados de acordo com os mesmos padrões.
● O reagrupamento de operações por aplicação legada reusada deve ser aplicado com
parcimônia para evitar que isso gere um acoplamento do serviço com a aplicação
legada.
96 SOA: Modelagem, Análise e Design
Exemplo
Na análise de gap, foram identificados recursos reusáveis para realizar os serviços candidatos
“Paciente” e “Notificação”. O analista de serviços, então, avalia as alternativas de realização
para cada um deles.
Para a operação “Obter paciente pelo nome” do serviço “Paciente”, que foi considerada par-
cialmente por uma aplicação legada (as funções “buscarClientePorNome” e “buscarClientePorSo-
brenome” do aplicativo CRM), foram consideradas as seguintes alternativas de realização:
● Expor a aplicação legada como serviço – essa alternativa consistia em implementar um
novo componente de serviço que encapsulasse o acesso às duas operações. Como a pala-
vra digitada pelo usuário para realizar a busca poderia ser tanto o primeiro nome quanto o
sobrenome de um paciente, a palavra informada como dado de entrada deveria ser utilizada
como parâmetro para a invocação das duas funções, e seus resultados seriam retornados pelo
componente de serviço como um conjunto único. No entanto, a API exposta pelo aplicativo
pacote utilizava uma tecnologia de implementação que não a tecnologia padrão adotada
pela clínica MEDSOA. Além disso, o formato dos campos retornados pelo aplicativo CRM
era proprietário e necessitaria ser mapeado pelo componente de serviço.
● Implementar mediação – nessa alternativa, seria utilizada uma mediação do ESB para in-
tegrar com as funções do aplicativo CRM. A mediação seria responsável por coordenar as
chamadas às duas funções do mesmo modo que a alternativa anterior. A diferença é que o
ESB da clínica MEDSOA já possuía um adaptador para acessar a API do aplicativo CRM e
possui facilidades para construção de mapas de dados.
● Alterar aplicação legada – essa alternativa não foi considerada, pois a clínica MEDSOA não
possuía acesso ao código fonte proprietário do aplicativo CRM.
● Implementar componente de serviço – nessa alternativa, os dados contidos no CRM seriam
ignorados e seria criado um novo componente de serviço para realizar a operação candidata.
O analista de serviços, então, discutiu com o gerente de projeto e o arquiteto corporativo para
decidir pela melhor alternativa. A alternativa de expor a aplicação legada como serviço não foi
recomendada pelo arquiteto corporativo por envolver a utilização de tecnologia e linguagem de
programação que não era a adotada por padrão na organização. Já o gerente de projeto conside-
rou que o esforço para utilizar uma tecnologia não familiar e para implementar o mapeamento
de dados seria muito grande.
Já alternativa de criar um novo componente de serviço também foi contraindicada pelo
arquiteto corporativo, pois resultaria em uma nova fonte de dados de pacientes, gerando redun-
dância funcional entre o serviço e o aplicativo CRM. Esta prática iria contra o design pattern
Logic Centralization (Centralização de Lógica).
Desse modo, decidiu-se pela alternativa de implementar a mediação. Além de fazer uso de
uma ferramenta corporativa recomendada pelo arquiteto corporativo (ESB), esta alternativa foi
considerada a mais viável pelo gerente de projeto, pois os requisitos de conectividade com o
aplicativo CRM e o mapeamento de dados poderiam ser atendidos pelo ESB com menor esforço
do que por um componente de serviço.
A mesma análise foi procedida também para a operação candidata “Inserir paciente”, que foi
considerada realizada por aplicação legada. As mesmas alternativas de realização foram elen-
cadas, exceto pela alternativa de se alterar a aplicação legada. Como nesta operação candidata,
os gaps envolvidos eram somente de dados e de protocolo, a decisão de realização tomada foi
a mesma da operação candidata anterior: implementar uma mediação.
Já para a operação candidata “Enviar notificação” do serviço “Enviar Notificação”, cujo
cenário de reuso identificado foi o de operação realizada por serviço existente, foi considerada
apenas a seguinte alternativa de realização:
● Reusar serviço existente – essa alternativa propõe o reuso de um serviço já pronto fornecido
por um provedor na nuvem. Para tal, é necessário obter o contrato de serviço dos possíveis
provedores e avaliar suas condições de uso.
5 Análise 97
5.4 Considerações do capítulo
Neste capítulo foram apresentadas a descrição de serviços candidatos, a avaliação
de serviços e os recursos existentes voltados ao seu reuso na construção de soluções
orientadas a serviços. Com os cenários de reuso, as operações foram analisadas quanto
à sua realização e viabilidade. Com o resultado das análises, o modelo de serviços
pode ser revisado.
A fase de análise fornece os serviços analisados que serão mais detalhados na
próxima fase, ou seja, na fase de design.
6
Design
Objetivo
O objetivo deste capítulo é apresentar a fase de design onde os serviços são detalhados
e especificados em nível suficiente para a sua implementação.
Definidos os serviços, inicia-se a fase de design de serviços. O objetivo da fase de design
é criar especificações de serviços que satisfaçam aos requisitos do negócio e sejam aderentes
aos princípios de orientação a serviços (Erl, 2005).
A Figura 6.1 apresenta as atividades de especificação contrato de serviços, especificação
de realização de serviços e verificação de princípios da fase de design, conforme descritas
a seguir.
Conteúdo
6.1 Especificação de contrato de serviços 99
6.2 Especificação de realização de serviços 107
6.3 Verificação de princípios 113
6.4 Considerações do capítulo 118
99
100 SOA: Modelagem, Análise e Design
utilizada seja Web Services, os formatos das mensagens podem ser definidos na forma
de esquemas XSD e as definições de interfaces, representadas na linguagem WSDL.
Para cada serviço, será definido um artefato de contrato de serviços, composto por
definição de interface, esquemas de dados de mensagens, especificação funcional de
cada operação e políticas de serviço.
As mensagens de um serviço serão definidas com base nas informações neces-
sárias como entrada e saída de suas operações e com base em modelos de dados
existentes. Deve-se procurar especificar mensagens padronizadas segundo um modelo
de dados organizacional, para que uma mesma mensagem possa ser utilizada em
diversos serviços.
6 Design 101
o serviço existente, pode ser necessário alterar sua interface e/ou a especificação
funcional da operação a ser chamada. Caso seja utilizada uma mediação, deve-se
definir a interface que será exposta por ela e especificar sua lógica de integração.
Em ambos os casos, a especificação da interface é feita de modo top-down, sendo
realizada a partir do serviço candidato.
● Operação realizada por uma aplicação legada – nesse cenário, a interface é elabo-
elaborada de modo bottom-up como no cenário anterior, ou, caso se tenha optado
por alterar o legado, a interface será derivada de modo bottom-up, mas deverá ser
especificada como o legado deverá ser alterado de modo top-down, caracterizando
uma especificação meet-in-the-middle.
● Operação não existente – nesse cenário, tanto a elaboração da interface quanto a da
Dica:
Ao especificar esquemas de mensagens em linguagem XSD para Web Services, crie os docu-
mentos de esquema de mensagem separados dos documentos de interface do serviço, de modo
que possam ser reusados em mais de uma interface.
Exemplo:
A partir do modelo de serviços elaborado, o arquiteto de serviços da clínica MEDSOA dá início
à fase de design do projeto para especificar os contratos dos serviços que darão suporte ao
processo de negócio “Consulta Médica”.
O arquiteto inicia pela especificação dos esquemas de mensagens dos serviços. São definidas
as seguintes mensagens:
● DadosPaciente – mensagem contendo dados de cadastro do paciente, utilizada pelo serviço
“Paciente”.
● DadosMedico – mensagem contendo dados dos médicos da clínica, utilizada pelo serviço
“Médico”.
● DadosProntuario – mensagem contendo dados do prontuário médico de um paciente,
utilizada pelo serviço “Paciente”. Possui diversos registros do tipo ItemProntuario.
● ItemProntuario – mensagem que representa um registro de consulta feito por um médico,
contendo informações sobre sintomas e diagnóstico, utilizada pelo serviço “Paciente”.
● DadosMedicamento – mensagem contendo dados sobre um medicamento, utilizada pelos
serviços “Prescrição” e “Medicamento”.
● DadosExame – mensagem contendo dados sobre um exame médico, utilizada pelos serviços
“Prescrição” e “Exame”.
Os esquemas de mensagens podem ser visualizados na Figura 6.3.
Como o plano da clínica MEDSOA é implementar os serviços utilizando a tecnologia Web
Services, os esquemas de mensagens são formalmente descritos na forma de esquemas XML
na linguagem XSD. A Figura 6.4 mostra como exemplo o esquema “DadosPaciente” escrito em
linguagem XSD.
Após definidos todos os esquemas de mensagens, o arquiteto de serviços procede com a
especificação das interfaces de serviços, quando são definidas as assinaturas das operações,
com suas mensagens de entrada e saída.
Por exemplo, para o serviço “Paciente”, a interface definida pode ser visualizada na Figura 6.5.
Como os serviços serão implementados como Web Services, as interfaces são formalmente
descritas na linguagem WSDL. A Figura 6.6 apresenta a interface do serviço “Paciente” em
WSDL.
O arquiteto de serviços define também a qual camada pertence cada um dos serviços
especificados, de acordo com o tipo de função executada por cada um deles. A alocação dos
serviços nas camadas pode ser vista na Figura 6.7.
106 SOA: Modelagem, Análise e Design
então uma classe de fachada que representa o contrato do serviço (interface) e abstrai
para os consumidores a existência de diversos componentes de implementação. Alter-
nativamente, a função de fachada também pode ser executada por uma mediação.
Ao projetar o componente de serviço, o arquiteto de serviços deve definir a im-
plementação da lógica e dos dados.
Por meio de um diagrama de classes ou de componentes da UML, o arquiteto de
serviços deve definir a estrutura interna do componente de serviço. Deve ser definido
um modelo de classes de negócio para suportar a lógica executada pelo serviço, que
pode incluir os seguintes tipos de classes:
● Classes para representar a interface do serviço (de preferência gerada automati-
camente a partir da interface).
● Classes para processamento de mensagens (serialização e desserialização).
● Classes de mensagem.
Exemplo:
Uma vez decididas as realizações de cada serviço, o arquiteto de serviços partiu para a elabo-
ração das especificações de como cada serviço deveria ser implementado.
De acordo com as decisões de realização tomadas na fase de análise e com os contratos de
serviço definidos, cada realização deverá ser estruturada e especificada.
Serviço “Paciente”
No caso do serviço “Paciente”, que possui operações realizadas por uma aplicação legada e operações
não existentes, o arquiteto de serviços deve especificar mediações e componentes de serviços.
Para encapsular os componentes de serviços e mediações de cada operação, é criada uma
mediação (PacienteMediation), que implementa a interface de serviço, conforme a Figura 6.9.
Desse modo, quando uma operação do serviço “Paciente” for invocada através de sua interface, a
mensagem será recebida pela mediação “PacienteMediation”, que, por sua vez, roteará a mensagem
para um componente de serviço ou mediação de acordo com a operação que for invocada.
Esse é um caso de aplicação do design pattern Service Façade (Fachada de Serviço) (Erl, 2009)
comumente adotado quando um mesmo serviço possui tipos diferentes de realizações para suas
operações. Além de desacoplar as diferentes realizações do contrato, esta alternativa de design
centraliza no ESB a função de receber e rotear as mensagens de invocação aos serviços.
Para as operações “ObterClientePeloNome” e “InserirCliente”, o arquiteto de serviços es-
pecifica as mediações “ObterClientePeloNome” e “InserirCliente” que acessarão o aplicativo
CRM, por intermédio de um adaptador de integração, que por sua vez se comunicará com o
CRM utilizando sua API nativa.
Na operação “ObterClientePeloNome”, a mediação deverá invocar as funções do CRM
“buscarClientePorNome” e “buscarClientePorSobrenome”, passando como parâmetro a palavra
110 SOA: Modelagem, Análise e Design
Além desse diagrama, foi elaborado um modelo de dados para representar as tabelas de banco
de dados persistentes acessadas pela classe DAO, conforme a Figura 6.15.
Serviço “EnviarNotificacao”
Para o serviço “EnviarNotificacao”, cuja decisão de realização foi utilizar um provedor de serviço
na nuvem, o arquiteto de serviços não especificou nenhuma realização, já que seria reusada uma
realização já existente (fornecida pelo provedor de serviços na nuvem Cloud Message).
Outros serviços
Já os demais serviços, que deveriam ser realizados por novos componentes de serviços, foram
projetados pelo arquiteto de serviços de forma semelhante ao serviço “Paciente”: interface de
serviço, mediação encapsuladora, componentes de serviço para cada operação e classes DAO
para acesso ao banco de dados.
6.3 Verificação de Princípios
Papel: arquiteto corporativo
Artefatos utilizados: especificação de serviços e contratos de serviços
Artefatos gerados: não aplicável
Nesta atividade de verificação de princípios, conforme pode ser visto na Figura 6.16,
uma série de verificações é realizada sobre as especificações de serviços com o intuito
de avaliar sua conformidade com os princípios de orientação a serviços.
114 SOA: Modelagem, Análise e Design
6.3.1.2 Reusabilidade
Para garantir a reusabilidade de um serviço, deve-se verificar se não é necessário
adicionar operações ou alterar as já existentes ou especificadas para que o serviço
possa vir a ser útil em outro contexto que não o do processo de negócio sendo
desenvolvido. Mesmo que nem todas as operações não venham a ser implementadas
em um primeiro momento, é recomendável que elas já estejam especificadas para
minimizar a necessidade de mudanças posteriores na interface do serviço. A aplicação
de design patterns como Logic Centralization (Centralização de Lógica) (Erl, 2009)
e Contract Centralization (Centralização de Contrato) (Erl, 2009) deve garantir
que o acesso aos dados ou funcionalidade provida por um serviço sejam acessíveis
somente através de seu contrato.
O serviço deve ser concebido como um produto e não como uma aplicação de
finalidade única. A lógica do serviço deve ser a mais agnóstica possível (Competência
Agnóstica).
6 Design 115
6.3.1.3 Granularidade
Deve-se verificar se o nível de granularidade do serviço (a quantidade de lógica en-
capsulada) está de acordo com a camada a que pertence e com o nível de reusabilidade
esperado. Serviços de aplicação devem possuir nível baixo de granularidade, ou seja,
devem ser genéricos para que possam ter maior reusabilidade. Serviços de negócio
podem ter nível mais alto de granularidade, pois têm necessidade menor de reusabi-
lidade e devem poder ser utilizados diretamente pelos serviços de orquestração.
6.3.1.4 Autonomia
Para se obter autonomia em um serviço, deve-se garantir que a lógica encapsulada
é autocontida, isto é, não possui dependências com relação a outros serviços ou
processos. Um serviço deve possuir controle sobre seu próprio ambiente de execução,
de forma a minimizar impactos causados por fatores externos (outros serviços, outras
aplicações). A autonomia pode ser obtida reduzindo-se o acesso compartilhado aos
recursos de um serviço, aumentando o isolamento físico do ambiente de execução
de um serviço ou reduzindo as dependências externas do ambiente de execução de
um serviço.
6.3.1.5 Abstração
Deve-se verificar se o contrato (interface) do serviço está abstraindo detalhes de im-
plementação, ocultando-os dos potenciais consumidores. O serviço deve funcionar
como uma “caixa-preta”, expondo em seu contrato apenas as informações essenciais
para que possa ser utilizado. Detalhes específicos de design e implementação não
podem estar expostos no contrato do serviço.
6.3.1.8 Visibilidade
O contrato do serviço, suas operações, seus dados, sua funcionalidade e suas políticas
devem ser descritos de forma inteligível para os potenciais usuários e devem ser pu-
blicadas em um registro de serviços ou repositório de metadados. Apenas contratos
devem ser publicados (especificações de realização, artefatos de implementação,
artefatos de testes etc. não necessitam ser expostos para potenciais consumidores).
6.3.1.10 Interoperabilidade
Deve-se verificar se os contratos de serviço foram tecnicamente desenhados para serem
interoperáveis, isto é, suportar a implementação de serviços em diversas plataformas
tecnológicas. Para tal, os artefatos técnicos de interface de serviço e esquemas de
mensagens devem ser elaborados utilizando padrões abertos e evitando o uso de ca-
racterísticas e recursos proprietários ou específicos de uma determinada plataforma.
6.3.2 Revisar serviços
A verificação da aderência aos princípios de orientação a serviços pode demandar
alterações nos serviços especificados. Caso isso seja necessário, executam-se nova-
mente alguns passos da atividade de especificação de serviços para que os contratos
dos serviços sejam reprojetados conforme necessário, para se adequar aos princípios
de orientação a serviços.
Pode ser necessário rever também a alocação dos serviços nas camadas de negócio
e de aplicação, caso tenha havido alteração no escopo funcional ou na granularidade
dos serviços.
Exemplo:
O arquiteto corporativo revisa os contratos e especificações de serviços, verificando a aderência
aos princípios de orientação a serviços e a padrões corporativos de especificação contrato e
realização (nomenclatura e separação de documentos) e o uso de design patterns.
Ao verificar o princípio de baixo acoplamento, o arquiteto corporativo recomenda que
os contratos não sejam acoplados à realização encapsulada. A interface do serviço “Enviar
Notificação” do provedor externo Cloud Message, apesar de estar de acordo com os padrões
técnicos e de nomenclatura da organização, gera acoplamento com relação a características
específicas do provedor. O arquiteto corporativo recomenda definir uma nova interface de
serviço “Enviar Notificação” e encapsular a interface do provedor, utilizando uma mediação para
realizar o mapeamento entre as duas interfaces. Deste modo, o contrato fica desacoplado do
provedor de serviço, possibilitando que o provedor possa ser alterado futuramente sem impacto
aos consumidores do serviço.
Como solução, foi especificada uma mediação simples, apenas para servir como ponto de
acesso ao serviço externo, conforme a Figura 6.17 e a Figura 6.18.
6 Design 117
diversas funções de uma aplicação legada além de um conjunto de dados próprio. Desta forma,
o arquiteto corporativo aplica o design pattern Service Decomposition (Descomposição de
Serviço) (Erl, 2009), reagrupando as operações de acordo com a realização e dividindo-as entre
os serviços “Paciente” e “Prontuário”, conforme a Figura 6.19.
Para aumentar a reusabilidade dos serviços de entidade “Paciente”, “Prontuário” e “Médico”,
o arquiteto corporativo propõe a criação de novas operações que possam tornar os serviços reusá-
veis em outros contextos e processos de negócio. As novas operações propostas têm como objetivo
a manipulação dos dados providos pelos serviços de entidade, conforme a Figura 6.20.
6.4 Considerações do capítulo
Neste capítulo os serviços foram detalhados em nível de contrato de serviços e de
componentes de serviço para sua realização. Os serviços são verificados quanto à
aderência aos princípios de orientação a serviços e são revisados. Com o resultado
da revisão, a especificação de serviços pode ser alterada, se necessário.
Assim, os serviços revisados estão prontos para as próximas fases, ou seja, as
fases de construção e de implantação e gerenciamento.
7
Fases complementares
Objetivo
O objetivo deste capítulo é apresentar as fases de construção e de implantação e gerencia-
mento como complemento às fases anteriores.
Na fase de construção os serviços são implementados, orquestrados e testados. A fase de
implantação e gerenciamento se preocupa em publicar e implantar os serviços e, em seguida,
monitorar a sua operação.
Conteúdo
7.1 Construção 119
7.2 Implantação e gerenciamento 124
7.3 Considerações do capítulo 128
7.1 Construção
Na fase de construção, são desempenhadas atividades com o intuito de se obter os
serviços executáveis devidamente integrados e testados, prontos para serem im-
plantados.
A Figura 7.1 apresenta as atividades de implementação, orquestração e teste de
serviços da fase de construção, conforme descritas a seguir.
interface de serviço;
● criação de classes de acesso a dados;
7.1.2 Orquestração de serviços
Papel: desenvolvedor
Artefatos utilizados: modelo de processo to-be, contratos de serviços e especifi-
cação de serviços
Artefatos gerados: processo orquestrado
Uma vez especificados os serviços e suas interfaces WSDL, é realizada a orques-
tração dos serviços, conforme pode ser vista na Figura 7.3. Se o modelo de processo
to-be estiver representado na notação BPMN, ele pode ser convertido em um modelo
na linguagem WS-BPEL. Caso contrário, a lógica de processo pode ser descrita
manualmente em WS-BPEL ou em outra linguagem. Tal lógica deve ser especificada
de modo que as chamadas dos serviços sejam devidamente orquestradas com as
interfaces de serviços definidas e revisadas.
O objetivo dessa atividade é definir a lógica de orquestração necessária para
executar o processo, como manipulação de variáveis de processo, gerenciamento de
informação de estado, tratamento de exceções e compensação.
122 SOA: Modelagem, Análise e Design
7.1.3 Testes de serviços
Papel: testador
Artefatos utilizados: contratos de serviços, processo orquestrado e componentes
de serviço executáveis
Artefato gerado: evidências de teste
Sendo uma aplicação SOA uma composição de serviços, deve-se garantir que as ins-
tâncias desses serviços estejam disponíveis aos desenvolvedores para serem testadas.
Também, deve-se garantir uma infraestrutura necessária aos testes em ambientes
distribuídos.
A atividade de testes de serviços, conforme pode ser vista na Figura 7.4, deve
basicamente verificar se os requisitos especificados foram atendidos e se os serviços
se comportam de acordo com as políticas definidas.
Para isso ocorrer, devem-se executar os serviços e comparar os resultados com
seus contratos e especificações.
7 Fases complementares 123
7.2.1 Publicação de serviços
Papel: administrador de serviços
Artefatos utilizados: contratos de serviços e especificação de serviços
Artefato gerado: serviços publicados no registro de serviços e no repositório de
metadados
A atividade de publicação de serviços tem por objetivo a catalogação dos contratos
de serviços no registro de serviços e disponibilização dos metadados e especificações
de serviço no repositório de metadados, conforme a Figura 7.6.
Nessa atividade, o administrador de serviços deve realizar também a definição
da localização física e dos endereços de acesso de cada serviço a ser implantado.
Trata-se da publicação dos endereços físicos no registro de serviços.
7 Fases complementares 125
A publicação pode ocorrer mais cedo no ciclo de vida (após as decisões de rea-
lização ou revisão dos contratos), caso o registro de serviços suporte a indicação
do status dos serviços. Nestes casos, o contrato de serviço pode ser publicado, mas
com a indicação de que ele se encontra “Em especificação”, “Em construção” ou
“Em testes”.
126 SOA: Modelagem, Análise e Design
7.2.3 Manutenção de serviços
Papel: administrador de serviços
Artefatos utilizados: componentes de serviço implantados e métricas, alertas
e incidentes
Artefatos gerados: componentes de serviço implantados e ações corretivas e pre-
ventivas
Considerações finais
Objetivo
O objetivo deste capítulo é apresentar algumas considerações sobre a modelagem, a análise e
o design discutidas neste livro.
Conteúdo
8.1 Algumas considerações 129
129
130 SOA: Modelagem, Análise e Design
Para facilitar o entendimento, foi adotada uma dinâmica de fases sequenciais, como
um processo cascata de software. Porém, as fases discutidas são flexíveis podendo
ser aplicadas de maneira iterativa e incremental como no RUP.
A realização de um caso (Apêndice B) mostra a aplicabilidade da modelagem, da
análise e do design em projetos reais de contextos distintos. As fases foram aplicadas
em um projeto de criação de uma nova solução orientada a serviços, com o uso da
abordagem BPM. Foi empregada a tecnologia Web Services para especificar e im-
plementar os serviços.
A modelagem, a análise e o design são especialmente efetivas na análise de reuso
de recursos existentes e na manutenção da governança de serviços. Tais características
suportam dois pontos críticos da orientação a serviços. Um deles é a redução do custo
de projetos e aumento da agilidade na entrega de soluções, obtidos pelo reuso. E o
outro é a necessidade de governança sobre o portfólio de serviços da organização.
A modelagem, a análise e o design orientados a serviços são muito úteis às
organizações que estão procurando reduzir os custos com TI. E, também, para as
organizações serem mais produtivas e responderem mais rapidamente às necessidades
de negócio.
Referências
BELL, M. Service-Oriented Modeling: Service Analysis, Design, and Architecture. Estados Unidos: Wiley, 2008.
384 p.
BIEBERSTEIN, N. et al. Service-Oriented Architecture Compass: Business Value, Planning, and Enterprise Roadmap.
Estados Unidos: IBM Press, 2005. 272 p.
BRAY, T. et al. Extensible Markup Language (XML) 1.1. Second Edition. W3C Recommendation, 2006. Disponível
em: <http://www.w3.org/TR/2006/REC-xml11-20060816/>. Acesso em 27 de março de 2008.
CHRISTENSEN, E. et al. Web Services Description Language (WSDL) 1.1. W3C Note, 2001. Disponível em:
<http://www.w3.org/TR/wsdl>. Acesso em 1º de dezembro de 2008.
COCKBURN, A. Writing Effective Use-Cases. Boston: Addison Wesley, 2000. 304 p.
ENDREI, M. et al. Patterns: Service-Oriented Architectures and Web Services. Estados Unidos: IBM Redbooks,
2004. 348 p.
ERL, T. Service-Oriented Architecture: Concepts. Technology and Design. Estados Unidos: Prentice Hall, 2005.
792 p.
________. ERL,T.SOA: Principles of Service Design. Estados Unidos: Prentice Hall, 2007. 608 p.
________. ERL,T.SOA Design Patterns. Estados Unidos: Prentice Hall, 2009. 800 p.
________. ERL,T.Web Service Contract Design and Versioning for SOA. Estados Unidos: Prentice Hall, 2008. 826 p.
FALLSIDE, D. C.; WALMSLEY, P. XML Schema Part 0: Primer. Second Edition. W3C Recommendation, 2004.
Disponível em: <http://www.w3.org/TR/xmlschema-0/>. Acesso em 1º de dezembro de 2008.
FUGITA, H. S.; HIRAMA, K. MAPOS. Método de Análise e Projeto Orientado a Serviços. In: Anais do Congresso
Internacional de Gestão de Tecnologia e Sistemas de Informação (CONTECSI). 5., São Paulo, 2008(a).
________. Method for Service-Oriented Analysis and Design. In: Proceedings of the International Conference on
Software Engineering Research and Practice (SERP). Las Vegas: CSREA Press, 2008(b).
GORNIK, D. IBM Rational Unified Process: Best Practices for Software Development Teams. IBM Whitepapers,
2003. Disponível em: <ftp://ftp.software.ibm.com/software/rational/web/whitepapers/2003/rup_bestpractices.
pdf>. Acesso em 27 de maio de 2007.
HUHNS, M. N.; SINGH, M. P. Service-Oriented Computing: Key Concepts and Principles. IEEE Internet Computing,
v. 9, nº 1, p. 75-81, jan.-fev. 2005.
JESTON, J.; NELIS, J. Business Process Management: Practical Guidelines to Successful Implementations. 2. ed.
Estados Unidos: Butterworth-Heinemann, 2008. 504 p.
KEEN, M. et al. Patterns: SOA with an Enterprise Service Bus. Estados Unidos: IBM Redbooks, 2005. 386 p.
KENNEY, L. F.; PLUMMER, D. C. Magic Quadrant for Integrated SOA Governance Technology Sets. Gartner
RAS Core Research Note. Gartner, 2007.
KRAFZIG, D.; BANKE, K.; SLAMA, D. Enterprise SOA. Estados Unidos: Prentice Hall, 2004. 408 p.
KRUTCHEN, P. The Rational Unified Process: An Introduction. 2. ed. Boston: Addison Wesley, 2000. 272 p.
MARKS, E. A.; BELL, M. Service Oriented Architecture: A Planning and Implementation Guide for Business and
Technology. Hoboken, Estados Unidos: John Wiley & Sons, 2006. 384 p.
OASIS SOA REFERENCE MODEL TC. Reference Model for Service Oriented Architecture 1.0. OASIS Open,
2006. 31 p.
OASIS WS-BPEL TC. Web Services Business Process Execution Language, version 2.0. OASIS Open, 2007.
Disponível em: <http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html>. Acesso em 1º de dezembro
de 2008.
THE OPEN GROUP. Definition of SOA, version 1.1. The Open Group, 2006. Disponível em: <http://www.open-
group.org/projects/soa/page.tpl?CALLER=doc.tpl&ggid=1574>. Acesso em 21 de agosto de 2007.
131
132 SOA: Modelagem, Análise e Design
________. SOA Reference Architecture, draft version 10. The Open Group, 2009. Disponível em: <http://opengroup.
org/projects/soa-ref-arch/>. Acesso em 0 9 de dezembro de 2011.
PAPAZOGLOU, M. P. Service-Oriented Computing: Concepts, Characteristics and Directions. In: Proceedings of
the International Conference on Web Information Systems Engineering. (WISE), 4., Roma, 2003. Roma: IEEE
Computer Society, 2003. p. 3-12.
PAPAZOGLOU, M. P.; VAN DEN HEUVEL, W. J. Service-Oriented Design and Development Methodology. In:
International Journal of Web Engineering and Technology (IJWET), v. 2, nº 4, p. 412-442, 2006.
PERREY, R.; LYCETT, M. Service-Oriented Architecture. In: Proceedings of the Applications and the Internet
Workshops. Uxbridge, 2003. p. 116-119.
RAMOLLARI, E.; DRANIDIS, D.; SIMONS, A. J. H. A Survey of Service Oriented Development Methodologies.
In: Proceedings of the European Young Researchers Workshop on Service Oriented Computing (YR-SOC),
2., Leicester, 2007. p. 75-80.
RUMBAUGH, J.; JACOBSON, I.; BOOCH, G. The Unified Modeling Language Reference Manual. 2. ed. Estados
Unidos: Addison Wesley, 2004. 752 p.
SHUJA, A. K.; KREBS, J. IBM Rational Unified Process Reference and Certification Guide: Solution Designer.
Estados Unidos: IBM Press, 2007. 307 p.
ZIMMERMANN, O. et al. Analysis and Design Techniques for Service-Oriented Development and Integration.
Stuttgart: IBM Press, 2005.
Bibliografia complementar
BAJWA, I. S.; SAMAD, A.; MUMTAZ, S. et al. BPM Meeting with SOA: A Customized Solution for Small
Business Enterprises. In: International Conference on Information Management and Engineering (ICIME’09).
p. 677-682, 2009.
CHAPIN, N. Software Characteristics of SOA Projects. In: Proceedings of the 11th International Conference on
Product Focused Software (PROFES'10). p. 152-157, 2010.
DAN, A.; JOHNSON, R. D.; CARRATO, T. SOA Service Reuse by Design. In: Proceedings of the 2nd International
Workshop on Systems Development in SOA Environments (SDSOA’08). p. 25-28, May 2008.
EL YAMANY, H. F.; CAPRETZ, M. A. M.; ALLISON, D. S. Quality of Security Service for Web Services within
SOA. In: World Conference on Services – I. p. 653-660, 2009.
EMIG, C.; WEISSER, J.; ABECK, S. Development of SOA-Based Software Systems – An Evolutionary Programming
Approach. In: Proceedings of the Advanced International Conference on Telecommunications and International
Conference on Internet and Web Applications and Services (AICT/ICIW 2006). 2006.
GRONOSKY, A.; ATIGHETCHI, M.; PAL, P. Understanding the Vulnerabilities of a SOA Platform – A Case Study.
In: 9th IEEE International Symposium on Network Computing and Applications (NCA). p. 182-187, 2010.
GU, Q.; VAN VLIET, H. SOA Decision Making – What do We Need to Know. In: Proceedings of the 2009 ICSE
Workshop on Sharing and Reusing Architectural Knowledge (SHARK’09). p. 25-32, May 2009.
GU, Q.; LAGO, P. A Stakeholder-Driven Service Life Cycle Model for SOA. In: 2nd International Workshop on
Service Oriented Software Engineering: In Conjunction with the 6th ESEC/FSE Joint Meeting (IW-SOSWE’07).
p. 1-7, September 2007.
________. SOA Process Decisions: New Challenges in Architectural Knowledge Modeling. In: Proceedings of the 3rd
International Workshop on Sharing and Reusing Architectural Knowledge (SHARK’08). p. 3-10, May 2008.
HAU, T.; EBERT, N.; HOCHSTEIN, A.; BRENNER, W. Where to Start with SOA: Criteria for Selecting SOA Projects.
In: Proceedings of the 41st Annual Hawaii International Conference on System Sciences. p. 1-9, 2008.
KARANDE, A. M.; CHUNEKAR, V. N.; MESHRAM, B. B. Intelligent Database for the SOA using BPEL. In:
Proceedings of the 2011 International Conference on Communication, Computing & Security (ICCCS’11).
p. 281-284, February 2011.
KRÜGER, I. H.; MATHEW, R. Systematic Development and Exploration of Service-Oriented Software Architectures.
In: Proceedings of the Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA’04). 2004.
KULKARNI, N.; DWIVEDI, V. The Role of Service Granularity in a Successful SOA Realization: A Case Study.
In: IEEE Congress on Services – Part I. p. 423-430, 2008.
LEE, Y. C.; MA, C. M.; CHOU, S. C. A Service-Oriented Architecture for Design and Development of Middleware.
In: Proceedings of the 12th Asia-Pacific Software Engineering Conference (APSEC’05). 2005.
LI, B. Research on SOA and Component Oriented Technology in Development of Large System. In: International
Symposium on Computational Intelligence and Design (ISCID). v. 1. p. 20-23, 2010.
MULIK, S.; AJGAONKAR, S.; SHARMA, K. Where Do You Want to Go in Your SOA Adoption Journey? IT Pro-
fessional. v.10, I. 3. p. 36-39, 2008.
O'BRIEN, L.; BASS, L.; MERSON, P. Quality Attributes and Service-Oriented Architectures. Technical Note. CMU/
SEI-2005-TN-014. Carnegie Mellon University. September 2005. 30p.
O'BRIEN, L.; BREBNER, P.; GRAY, J. Business Transformation to SOA: Aspects of the Migration and Performance
and QoS Issues. In: Proceedings of the 2nd International Workshop on Systems Development in SOA Environments
(SDSOA’08). p. 35-40, May 2008.
O'BRIEN, L.; GIBSON, J.; GRAY, J. A Method for Selecting SOA Pilot Projects Including a Pilot Metrics Framework.
In: Proceeding of the 33rd International Conference on Software Engineering (ICSE’11). p. 25-32, May 2011.
PAPAZOGLOU, M. P. Web Services: Principles and Technology. September 23, 2007.
133
134 SOA: Modelagem, Análise e Design
PEI, S.; CHEN, D. Implementation of Web Services Composition System Based on SOA. In: International Conference
on Uncertainty Reasoning and Knowledge Engineering (URKE). v. 2. p. 82-85, 2001.
SCHEPERS, T. G. J.; IACOB, M. E.; VAN ECK, P. A. T. A Lifecycle Approach to SOA Governance. In: Proceedings
of the 2008 ACM Symposium on Applied Computing (SAC’08). p. 1.055-1.061, March 2008.
SETH, A.; AGARWAL, H.; SINGLA, A. R. Designing a SOA Based Model. SIGSOFT Software Engineering Notes,
v. 36, I. 5, p. 1-7, September 2011.
SNEED, H. M. Integrating Legacy Software into a Service Oriented Architecture. In: Proceedings of the Conference
on Software Maintenance and Reengineering (CSMR’06). 2006.
STAROSTA, B. S.; STIREWALT, R. E. K.; DILLON, L. K. Contracts and Middleware for Safe SOA Applications.
In: Proceedings of the International Workshop on Systems Development in SOA Environments (SDSOA’07).
May 2007.
STOJANOVIC, Z.; DAHANAYAKE, A.; SOL, H. Modeling and Design of Service-Oriented Architecture. In: IEEE
International Conference on Systems, Man and Cybernetics. p. 4147-4152.
WIECZOREK, S.; STEFANESCU, A. Service Integration: A Soft Spot in the SOA Testing Stack. In: 5th Central
and Eastern European Software Engineering Conference in Russia (CEE-SECR). p. 211-216, 2009.
YANG, J. Web Service Componentization. Communication of the ACM. v. 46, nº 10, p. 35-40, October 2003.
YOON, H.; JI, E.; CHOI, B. Building Test Steps for SOA Service Orchestration in Web Service Testing Tools. In:
Proceedings of the 2nd International Conference on Ubiquitous Information Management and Communication
(ICUIMC’08). p. 555-557, January 2008.
YU, W. D.; ONG, C. H. A SOA Based Software Engineering Design Approach in Service Engineering. In: IEEE
International Conference on e-Business Engineering (ICEBE’09). p. 409-416, 2009.
ZHANG, L. J.; ZHANG, J. Componentization of Business Process Layer in the SOA Reference Architecture. In:
IEEE International Conference on Services Computing (SCC’09). p. 316-323, September 2009.
Apêndice A
135
Apêndice B
Estudo de caso
Aplicando a modelagem, a análise e o design em uma instituição bancária
B.2 Modelagem
A fase de modelagem tem como objetivo elaborar os modelos de processo de negócio,
isto é, documentar o processo de negócio na sua forma atual (as-is) e o processo
futuro (to-be), contendo as mudanças propostas.
Modelagem de Processo as-is
Essa tarefa tem como objetivo elaborar os modelos de processo de negócio, isto é,
documentar o processo de negócio na sua forma atual (as-is) e o processo futuro
(to-be), contendo as mudanças propostas.
O modelo de processo as-is deve ser levantado por um analista de processos
junto às áreas envolvidas na execução manual do processo atual. Com base neste
levantamento, o analista de processos deve documentar o modelo de processo as-is,
através de diagramas (por exemplo, diagrama de atividades da UML ou notação
BPMN) e descrições textuais.
Na Figura B.1, é apresentado um diagrama do processo as-is de cadastro de cliente
em notação BPMN.
O processo se dedica a cadastrar clientes. Assim, após o cliente preencher a ficha
cadastral, o atendente da agência verifica se o cliente já é ou não cadastrado no sistema.
137
138 Apêndice B
Tarefa Descrição
Informar dados do O atendente da agência preenche um formulário Web com os dados
cliente cadastrais do cliente (nome, CPF/CNPJ, endereço, telefone, e-mail etc.).
O formulário valida os dados inseridos, como formato de CPF, CNPJ etc.
Verificar existência O sistema verifica no cadastro se o cliente com o CPF ou CNPJ
do cliente informado já existe.
Enviar notificação O sistema envia um e-mail ao cliente informando que seu cadastro já
de cliente existente existe no banco.
Verificar situação O sistema consulta os serviços do Serasa e do SPC para verificar a
do CPF/CNPJ situação de crédito do CPF ou CNPJ do cliente.
Enviar notificação de O sistema envia um e-mail ao cliente informando que seu cadastro foi
negação de cadastro negado, pois sua situação de crédito encontra-se irregular.
Determinar lista O sistema verifica quais documentos devem ser apresentados
de documentos obrigatoriamente pelo cliente de acordo com seu tipo (pessoa física ou
jurídica).
Receber e digitalizar O atendente da agência recebe os documentos físicos do cliente e os
documentos digitaliza, para que o sistema armazene uma cópia eletrônica deles.
Conferir documentos O Back-Office analisa os documentos digitalizados e verifica se todos
os documentos obrigatórios foram entregues e são válidos.
Reagendar visita O atendente da agência telefona para o cliente por telefone e agenda
uma visita para que o cliente traga os documentos necessários à agência.
Gravar dados do cliente O sistema grava no cadastro os dados do novo cliente.
Enviar notificação de O sistema envia um e-mail ao cliente informando que seu cadastro foi
sucesso realizado com sucesso.
140 Apêndice B
Especificação de requisitos
Além do modelo de processo to-be, o analista de processos elabora também uma
especificação de requisitos, que provê um detalhamento adicional sobre como o
processo deverá ser automatizado, no aspecto funcional e não funcional.
Além de definir requisitos não funcionais, como tempo de resposta e número
de usuários suportados, o analista de processos elabora especificações de casos de
uso para descrever as interações dos usuários com o sistema nas tarefas humanas. A
Figura B.3 representa os casos de uso elaborados.
B.3 Análise
Na fase de análise, o objetivo é identificar os serviços, analisar gap e verificar se os
serviços são realizáveis.
Identificação de Serviços Candidatos
Após a elaboração do modelo de processo to-be, composto pelo diagrama de processo
mais as descrições de tarefas do processo, o arquiteto de serviços inicia a identificação
de serviços candidatos. Esta atividade recebe como entrada o modelo de processo
to-be e tem como objetivo definir um conjunto inicial de serviços, identificados a
partir do processo.
As operações candidatas devem ser identificadas a partir da análise das descrições
das tarefas, seguindo a sequência das tarefas determinada pelo diagrama de processo.
No texto de descrição de cada tarefa, é possível identificar funções que devem ser
executadas pelo sistema, tanto nas tarefas do sistema quanto nas tarefas humanas.
Em alguns casos, uma tarefa inteira pode ser considerada uma operação candidata,
enquanto, em outros, apenas alguns passos de uma tarefa podem ser considerados
operações candidatas. As operações identificadas nas tarefas do processo são listadas
na Tabela B.2.
Apêndice B 141
Análise de Gap
Após a identificação dos serviços candidatos, a análise prossegue com a análise de
gap. O objetivo básico desta análise é localizar, nas aplicações existentes (legado),
as funções necessárias aos serviços candidatos, chegando a um cenário de reuso para
cada operação candidata.
Para analisar os cenários de reuso, deve-se consultar um repositório de serviços e
recursos reusáveis ou fontes de documentação das aplicações existentes. O cenário
142 Apêndice B
mais comum é encontrar uma arquitetura que ainda não possua um repositório de
serviços reusáveis. Neste caso recorre-se à documentação dos sistemas legados. Es-
pecificamente neste cenário, aplicação legada é o sistema de cadastro de clientes.
Como resultado dessa análise, foram obtidos os cenários de reuso apresentados
na Tabela B.3.
Análise de Realização
Na análise de realização, cada operação candidata é avaliada quanto ao seu cenário
de reuso identificado anteriormente. Nesta atividade, deve ser decidido como cada
operação de serviço será realizada.
As possibilidades de realização dos serviços candidatos devem ser analisadas pelo
arquiteto de serviços e discutidas com os responsáveis pelo repositório de serviços ou
pela arquitetura corporativa. As decisões de realização resultantes da análise devem
ser registradas nas descrições das operações e serviços candidatos. Para cada contrato
de serviço, deve ser indicado qual será sua realização.
Foram tomadas as seguintes decisões de realização:
Serviço “Cliente”
Para realizar esse serviço, decidiu-se criar um novo Web Service que seria res-
ponsável por invocar os métodos do componente “GerenciadorPessoa” do sistema
de cadastro de clientes e implementar as funções das operações não existentes. No
caso da operação “Verificar existência de cliente”, o Web Service deverá implementar
a lógica necessária para retornar o resultado desejado.
Serviço “Documento”
Como as duas operações desse serviço não existiam, um novo Web Service será
implementado para executar suas funções. Como este serviço armazena algumas
informações persistentes (como os documentos digitalizados), deve ser utilizada uma
base de dados para apoiar o serviço.
Serviço “Consulta Crédito”
Para esse serviço, ambas as operações já são realizadas por um serviço existente,
porém, externo à organização. Para manter a padronização dos serviços, decidiu-se
criar um novo Web Service para encapsular o acesso aos serviços externos, abs-
traindo a localização do serviço original e detalhes específicos. Para tal, o Web
Service deverá executar lógica de mediação, como mapeamento de mensagens e
roteamento.
144 Apêndice B
B.4 Design
Na fase de design procura-se especificar os serviços definidos em detalhes, verifi-
cando também se os princípios estão sendo atendidos. Os serviços são revisados e
orquestrados.
Verificação de princípios
O objetivo dessa atividade é verificar se cada especificação de serviço criada atende
aos princípios de orientação a serviços e se está adequada a integrar o portfólio de
serviços da organização.
Implementação de serviços
A partir da especificação dos contratos e realizações de serviços, devem ser con-
duzidas as atividades de implementação dos componentes de serviços e integração
desses ao processo de negócio.
Apêndice B 147
A partir desse ponto podem ser utilizadas tecnologias como Java EE ou Microsoft
.NET para implementação dos Web Services, e plataformas BPM para automação do
processo, como IBM WebSphere Process Server, Oracle BPM Suite ou jBPM.
Orquestração de Serviços
Durante a orquestração de serviços, o modelo de processo to-be elaborado no início
do projeto é convertido em um modelo de implementação, que deve ser trabalhado
para tratar todas as regras de negócio modeladas e adequar-se aos serviços es
pecificados.
O fluxo de trabalho do processo pode ser automatizado na plataforma BPM
utilizando-se a linguagem WS-BPEL (Web Services Business Process Execution
Language). Além da própria estrutura do processo (tarefas, decisões e conexões), é
necessário também implementar no processo os seguintes aspectos:
● variáveis;
● lógica de tratamento de dados;
● lógica de decisão nos nós do tipo “Choice” (if-then-else);
● dados de correlação de instâncias de processo;
● tempo de expiração de atividades com tal requisito;
● mapeamento das interfaces geradas no WS-BPEL para as interfaces WSDL dos
serviços utilizados pelo processo.
Após implementado, o processo em WS-BPEL é encapsulado pelo serviço de
orquestração “Cadastro de Cliente”, que por sua vez será composto pelos outros
serviços. Para tal, foi necessário também definir a interface WSDL e as mensagens
em XSD para o serviço de orquestração. A Figura B.7 mostra a composição do serviço
de orquestração “Cadastro de Cliente”.
Teste de serviços
Uma vez implementados todos os componentes de serviços e a orquestração do
processo, deve ser testada a solução como um todo. São realizados testes unitários
de cada componente de serviço e, então, um teste integrado do processo de negócio
orquestrando a execução dos serviços, para assegurar que a solução está funcionando
corretamente.
Adicionalmente, podem ser realizados testes de carga e desempenho com o intuito
de verificar o atendimento a requisitos não funcionais.
Por fim, são executados testes de aceitação com os usuários do processo, de
forma a homologar a solução para que ela possa passar para as fases seguintes de
implantação e gerenciamento.
Glossário
Abstração Abstração é uma técnica usada na modelagem de entidades complexas, como uma organização
ou um sistema de software, cujo objetivo é obter de maneira concisa os aspectos essenciais da entidade
sem considerar os seus detalhes.
API (Application Programming Interface) API é um conjunto de rotinas, bibliotecas, frameworks, protocolos
e classes independentes de linguagem de programação disponibilizados para apoiar o desenvolvimento
de aplicações de software.
Arquitetura Uma arquitetura representa uma visão dos elementos estruturais e comportamentais do sistema.
Ator Ator é um papel de uma pessoa ou um usuário que inicia e interage com o sistema.
BPM (Business Process Management) BPM é uma abordagem sistemática para identificar, avaliar e melhorar
os processos de negócio tornando-os mais efetivos e capazes de se adaptarem às mudanças do ambiente
e às metas organizacionais.
BPMN (Business Process Modeling Notation) BPMN é uma representação gráfica para especificar fluxos
de processos de negócio e Web Services.
BPMS (Business Process Management System) BPMS é uma ferramenta que permite modelar, analisar,
implementar, integrar, implantar e monitorar atividades e processos de negócio.
Caso de uso Caso de uso é uma técnica para especificar uma função do software do ponto de vista de um
ator (usuário ou outro sistema).
Ciclo de vida Ciclo de vida é o período de tempo que inicia quando um produto de software é concebido
e termina quando o software não é mais disponível para o uso. O ciclo de vida de software tipicamente
inclui uma fase de concepção, requisitos, design, implementação, teste, instalação e verificação, operação
e manutenção, e, algumas vezes, retirada de operação.
Cloud Services Cloud Services, no contexto de computação em nuvem, referem-se aos recursos de proces-
samento e armazenamento disponibilizados como serviços, sem que o usuário conheça a localização dos
provedores destes serviços.
Design Pattern Design Pattern é uma solução para problemas comuns que ocorrem em desenvolvimento de
software. No contexto de SOA, é um template que pode ser usado em diversas situações no design de
serviços.
IDE (Integrated Development Environment) IDE é um ambiente de desenvolvimento de software com
recursos integrados para dar maior produtividade aos desenvolvedores. Exemplos: Eclipse, Net Beans,
Microsoft Visual Studio etc.
ESB (Enterprise Service Bus) ESB é um middleware que possibilita a comunicação entre vários componentes
de uma arquitetura SOA.
Ferramenta CASE (Computer Aided Software Engineering) Ferramenta CASE é um programa de compu-
tador usado no desenvolvimento, teste, análise ou manutenção de um programa ou sua documentação.
Framework Framework é um conjunto de suposições, conceitos, valores e práticas que constituem uma
maneira de ver o ambiente atual.
KPIs (Key Performance Indicators) KPIs são indicadores quantitativos que refletem fatores críticos de sucesso
de uma organização. As KPIs são utilizadas por organizações para aferir o progresso do atingimento de
uma determinada meta de negócio.
Mensagem (de serviço) Mensagem é uma tecnologia usada no design de serviços para permitir a interação
entre eles. Esta tecnologia reduz os requisitos de acoplamento e remove a necessidade de conexões
persistentes.
Metadados Metadados são dados que descrevem dados ou informações (dados) que descrevem dados
primários.
149
150 Glossário
SOA (Service Oriented Architecture) SOA é uma tecnologia que torna possível, além do reuso de aplicações,
o acesso a informações diversas disponíveis em vários computadores ligados na Internet.
SOAP (Simple Object Access Protocol) SOAP é um protocolo baseado em XML que permite às aplicações
trocarem informações estruturadas nas implementações de Web Services.
Stakeholder Stakeholder é uma pessoa, área ou organização que está ativamente envolvida no projeto cujos
interesses podem ser afetados durante a execução do projeto.
Técnica Uma técnica descreve as características acumuladas na aplicação de habilidades e métodos técnicos
e gerenciais na criação de um produto ou realização de um serviço.
UDDI (Universal Description, Discovery, and Integration) UDDI é um registro (catálogo) baseado em XML
usado para que os consumidores de serviços possam descobrir e integrar Web Services publicados por
seus provedores.
UML (Unified Modeling Language) UML é uma linguagem visual resultante de numerosos métodos
orientados a objetos que existiam no início da década de 1990. Fornece diferentes visões de um sistema
por meio de seus diversos tipos de modelos.
Web Service Web Service é uma tecnologia que permite a interoperabilidade de máquinas na Internet.
WS-BPEL (Web Services Business Process Execution Language) WS-BPEL é uma linguagem executável
padrão para especificar processos de negócio com Web Services.
WSDL (Web Services Description Language) WSDL é uma linguagem baseada em XML para descrever as
assinaturas das operações fornecidas por um Web Service e como acessá-lo.
XML (Extensible Markup Language) XML é um formato de texto simples e muito flexível originalmente
projetado para atender aos desafios de publicação eletrônica em larga escala. A XML tem um papel
importante no intercâmbio de uma extensa variedade de dados da Internet. Está presente na norma ISO
8879:1986.
XSD (XML Schema Definition) XSD é uma linguagem formal para especificação de restrições de estrutura
e conteúdo de documentos XML.
Índice Remissivo
A Banke, 131
.NET, 14, 147 Base de dados, 31, 32, 78, 102
Abordagem Bell, 3, 18, 22-24
bottom-up, 43 Bieberstein, 18, 36, 37
"do zero'', 47 Boas práticas, 43
incremental, 21, 47 Booch, 132
iterativa, 58 Bottom-up, 43, 45, 101
meet-in-the-middle, 43 BPM (Business Process Management), 44, 49
top-down, 43, 45 BPMN (Business Process Modeling Notation), 44, 46,
Abstração, 115, 149 54, 62, 63, 149
princípio, 23 BPMS (Business Process Management System), 15,
Adaptador de integração, 30, 109, 110 25, 27, 28, 149
Administrador de serviços, 54 Business intelligence, 16, 31, 128
Alinhamento Business Process Management. Ver BPM
com o negócio, 37
Ambiente de execução, 27, 38 C
Ambiente de TI, 2 Caixa-preta, 12, 103, 115, 124
Análise Camadas de serviços, 18, 20, 46, 145
de fase, 49, 140 Canonical Schema (design pattern), 102
de gap, 141 Canonical Versioning (design pattern), 95
de realização, 91, 143 capacidade de composição, 24
Analista princípio, 116
de processos, 50-51 Caso de uso, 56, 71, 149
de serviços, 51-52 Casos de Uso de Negócio, 45, 50, 71
API – Application Programming Interface, 45, 149 CBD – Component Based Development, 46
Aplicação Cenário de reuso, 85, 142
legada, 87-90 Centro de Excelência SOA, 52
web, 15, 27–29 Christensen, 131
Arquiteto Ciclo de vida, 149
corporativo, 52, 116 de software, 3, 5
de serviços, 52, 102, 140, 143, 144 SOA, 43-58
Arquitetura de Informação, 19, 31, 34 Ciclo de vida iterativo, 58
camada, 15 Ciclo de vida orientado a serviços, 3
Arquitetura Orientada a Serviços, 8-11, 13, 15-19, 23- Cloud computing, 35, 150
28, 31-32, 35-38, 44, 45 Cloud service provider, 26
Arquitetura Cloud service, 84, 149
de referência, 13, 14, 52, 123, 124 Cockburn, 108, 131
de software, 7, 10 Competência agnóstica (design pattern), 114
SOA, 8-11, 13, 15-19, 23-28, 31-32, 35-38, 44, 45 Complextype, 101
Artefatos, 54-57 Component Based Development, 46
Ator de processo, 54 Componente de serviço, 14, 93, 94, 96, 107, 108, 144,
Autonomia, 24, 146 148
princípio, 115 camada, 14
Componentização de software, 12
B Composição, Capacidade de, 24
Baixo acoplamento, 23 princípio, 116
princípio, 115 Composição de serviços, 20, 21
BAM – Business Activity Monitoring, 27, 31, 33, 128 Computação em nuvem. Ver cloud computing
153
154 Índice Remissivo
M Paradigma
Manutenção de serviços, 126, 127 de desenvolvimento de software, 1, 39
Marks, 131 de orientação a serviços, 18, 39, 41, 129
Mediação, 85, 93, 119 Perrey, 40, 132
Meet-in-the-middle, 43, 101 Plataforma BPMS, 25, 28, 67, 138
Mensagem, 9, 101, 102 Políticas, 13
Metadados, 32, 124, 149 Portal, 29
Método, 43-47 Portfólio de serviços, 21, 22
de análise e design, 13, 44-47 Portlets, 29
de desenvolvimento de serviços, 3 Porttype, 102
Metodologias de desenvolvimento, 3 Princípios da orientação a serviço, 3, 4, 40
Métricas, 62 Processo
de processo de negócio, 127 de Negócio, 9, 10, 150
Middleware, 2, 16, 28, 150 de Software, 150
Modelagem, 50, 59-74, 137 Orquestrado, 121, 122
fase, 47, 59, 63 Processos de desenvolvimento, 3
Modelo de dados, 19, 36, 101, 102, 108, 113 Processos de negócio, 27
Modelo camada, 15
de processo as-is, 59, 137 Produto de software, 5, 47, 150
de processo to-be, 64, 138 Provedores de serviço, 11
de referência, 2 Publicação de serviços, 124, 125
de serviços, 56-58
Monitor de Atividade de Negócio (BAM), 31 Q
Monitor de Atividade de Serviços (SAM), 33 QoS – Quality of Service, 45, 150
Monitoração de Atividade de Negócio, 62, Qualidade de Serviço, 150
127, 128 camada, 15
Monitoração de Serviços, 15
R
N Ramollari, 3, 132
Necessidades de negócio, 2, 5, 47, 64, 70 Realização, 11, 13, 91, 107, 143
Nelis, 131 de serviço, 145
Nuvem. Ver cloud computing Registro de Serviços, 45, 92, 107
Regras de Negócio, 66, 71, 72, 76
O Repositório
Oasis, 2, 5, 131 de serviços, 2, 141-143
Objeto de software, 5 de metadados, 12, 32
OMG – Object Management Group, 16 Requisitos
Open Group, 13, 14, 131 de negócio, 3, 10, 37
Operação funcionais, 64, 85, 103
candidata, 76-78, 81, 86, 87, 92-94, 96, não funcionais, 45, 72, 140, 144
140-143 REST – REpresentational State Transfer, 17, 150
Operation, 102 RESTful – RESTful services ou RESTful web services,
Orientação 17
a componentes, 40 Reusabilidade, 22, 23, 146
a objetos, 39, 40 princípio, 114
a serviços, 4, 22, 36 Reuso, 44, 150
Orquestração de serviços, 121, 147, 150 ROI – Return on Investment, 36, 150
Rumbaugh, 132
P RUP – Rational Unified Process, 3, 150
Pacotes de implantação, 126
Padrões abertos, 12, 16, 45, 46 S
Padronizado SAM – Service Activity Monitoring, 33
contrato, 22 SCA – Service Component Architecture, 150
princípio, 114 SCM – Supply Chain Management, 1
Papazoglou, 12, 13, 132 Segurança, 38
Papéis, 50, 64 Service Decomposition (design pattern), 118
156 Índice Remissivo