26
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa Glauco Vinicius Argentino de Oliveira 1 Walter Mourão 2 RESUMO Muitas organizações possuem dificuldades em realizar o controle efetivo de sua informação, uma vez que esta se encontra fragmentada nos diversos sistemas de informação existentes e sem integração. Esse cenário acaba acarretando o atraso dos processos de tomada de decisão, principalmente por parte da alta gerência. Neste cenário a arquitetura orientada a serviços é uma abordagem de desenvolvimento de sistemas de informação corporativos que busca manter o foco nos processos de negócio, implementando-os como serviços reutilizáveis e interoperáveis. Esse trabalho tem por objetivo analisar a experiência da implementação de alguns conceitos da arquitetura orientada a serviços em sistema de gestão de fluxo de caixa através da realização de um estudo de caso. No decorrer desse artigo serão definidos os principais conceitos relacionados á esse estilo arquitetural, compreendidas as dificuldades de integração com sistemas legados e levantados aspectos importantes a serem observados durante a adoção desse paradigma. Palavras-chave: integração de sistemas, arquitetura de software, arquitetura orientada a serviços. 1 Analista desenvolvedor da SQUADRA Tecnologia em Software LTDA e aluno do curso superior de Tecnologia em Sistemas para Internet do Centro Universitário de Belo Horizonte. Email: [email protected]. 2 Especialista em melhoria de processo de software e professor do curso superior de Tecnologia em Sistemas para Internet do Centro Universitário de Belo Horizonte. Email: [email protected].

Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

Embed Size (px)

Citation preview

Page 1: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

Estudo da aplicação da arquitetura orientada a serviços em um sistema de

gestão de fluxo de caixa

Glauco Vinicius Argentino de Oliveira1

Walter Mourão2

RESUMO

Muitas organizações possuem dificuldades em realizar o controle efetivo de sua

informação, uma vez que esta se encontra fragmentada nos diversos sistemas de

informação existentes e sem integração. Esse cenário acaba acarretando o atraso

dos processos de tomada de decisão, principalmente por parte da alta gerência.

Neste cenário a arquitetura orientada a serviços é uma abordagem de

desenvolvimento de sistemas de informação corporativos que busca manter o foco

nos processos de negócio, implementando-os como serviços reutilizáveis e

interoperáveis. Esse trabalho tem por objetivo analisar a experiência da

implementação de alguns conceitos da arquitetura orientada a serviços em sistema

de gestão de fluxo de caixa através da realização de um estudo de caso. No

decorrer desse artigo serão definidos os principais conceitos relacionados á esse

estilo arquitetural, compreendidas as dificuldades de integração com sistemas

legados e levantados aspectos importantes a serem observados durante a adoção

desse paradigma.

Palavras-chave: integração de sistemas, arquitetura de software, arquitetura orientada a serviços.

1 Analista desenvolvedor da SQUADRA Tecnologia em Software LTDA e aluno do curso superior de

Tecnologia em Sistemas para Internet do Centro Universitário de Belo Horizonte. Email: [email protected]. 2 Especialista em melhoria de processo de software e professor do curso superior de Tecnologia em

Sistemas para Internet do Centro Universitário de Belo Horizonte. Email: [email protected].

Page 2: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

2

1. INTRODUÇÃO

Em geral, as empresas investem muito dinheiro em software e para que obtenham

um retorno sobre investimento esse software deve ser utilizado por vários anos. No

entanto com o passar do tempo os usuários exigem cada vez mais dos sistemas de

informação, inclusive dos sistemas legados: interfaces gráficas, tempo de resposta

pequeno, extração em tempo real de informações gerenciais, etc. (SANTOS, 2004).

Tipicamente os sistemas legados são grandes, complexos e difíceis de lidar pelo

fato de que muitos processos de negócios foram encapsulados em lógicas de

aplicação no decorrer dos anos (BENNETT, 1995). Esses sistemas acabaram se

transformando no repositório da experiência e do conhecimento das organizações,

tornando-se vitais para a continuidade de seus negócios (SANTOS, 2004, p.6).

As diversas “ondas tecnológicas” pelas quais o mercado passou nos últimos anos,

promoveram a heterogeneidade corporativa (Figura 1). Em grandes corporações é

possível encontrar inúmeros sistemas de informação sendo executados em múltiplas

arquiteturas. Muitos desses sistemas não possuem integração com os demais,

convertendo-se então em verdadeiras “ilhas de informação”. Essa falta de integração

entre os ativos de Tecnologia da Informação (TI) é um desafio que as organizações

enfrentam quando tentam se manter competitivas e crescendo (MICROSOFT, 2006).

Page 3: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

3

Figura 1 – Representação da heterogeneidade dos sistemas corporativos e da integração “ponto-a-

ponto”.

Fonte: Adaptado da obra de (JOSSUTIS, 2008, p.14).

Nesse contexto, em que é necessário promover a integração dos diversos sistemas

de informação heterogêneos, a arquitetura orientada a serviços (SOA3) ganha

destaque como uma abordagem capaz de promover o melhor alinhamento do

departamento de TI com as necessidades da empresa, de forma a responder melhor

às mudanças.

A arquitetura orientada a serviços é um estilo de arquitetura de software com foco na

distribuição do processamento através da criação e publicação de serviços

reutilizáveis, flexíveis e interoperáveis. Esses serviços são funcionalidades

específicas presentes nas aplicações corporativas e que dizem respeito ao negócio

da empresa, e que podem ser disponibilizados para todas as demais aplicações de

3 SOA é a sigla para Service Oriented Architecture ou Arquitetura Orientada a Serviços.

Page 4: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

4

modo a facilitar e unificar o processo de desenvolvimento de software (MICROSOFT,

2006).

Os sistemas de informação, que utilizam a arquitetura orientada a serviços, se

organizam de tal forma que passam a ser criados a partir dos componentes que

executam funções discretas de negócio. Estes componentes, denominados

“serviços”, podem ser distribuídos e ajustados em um novo processo de negócio

assim que necessário. O objetivo é permitir às empresas realizar negócios e obter

vantagens tecnológicas por meio da combinação e inovação de processos,

governança eficaz e estratégia de tecnologia, as quais giram em torno da definição e

reutilização de serviços (SOUZA JÚNIOR et al, 2007).

Segundo (IBM, 2005), a arquitetura orientada a serviços oferece aos negócios os

seguintes benefícios:

Permite maior agilidade na realização dos processos de negócios;

Habilita as organizações a transcender seus limites;

Reduz o tempo dos ciclos de desenvolvimento de software;

Juntamente com os benefícios para o negócio, o departamento de TI pode colher os

seguintes benefícios:

Gerar serviços apenas uma vez e utilizá-los freqüentemente;

Promover a consistência dos processos de negócio;

Padronizar a integração e a redução da complexidade das soluções de

software;

De maneira geral, observa-se que a adoção da arquitetura orientada a serviços

ainda é baixa, bem como a quantidade de material científico publicado no idioma

português a respeito do assunto.

O principal objetivo desse trabalho é analisar uma experiência da implementação

dos conceitos da arquitetura orientada a serviços em sistema de informação do

mundo real. Para tanto, os objetivos secundários são:

Page 5: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

5

Definir os principais conceitos relacionados à Arquitetura Orientada a

Serviços;

Compreender as dificuldades da integração de sistemas legados;

Identificar aspectos importantes a serem observados durante a adoção de

SOA em uma organização;

A pretensão desse trabalho é fornecer uma ferramenta de consulta para suporte a

decisões da utilização ou grau de utilização da arquitetura orientada a serviços.

Será realizado um estudo de caso da implementação de um sistema de informação

que utiliza conceitos da arquitetura orientada a serviços. Nesse estudo de caso

serão identificadas as principais dificuldades observadas durante a implementação

bem como um conjunto de boas práticas identificadas.

O estudo de caso foi selecionado como metodologia para o desenvolvimento desse

trabalho pelo fato de ser um tipo de pesquisa qualitativa que visa compreender e

evidenciar o “como” e “porque” de um determinado cenário. É um tipo de

investigação a respeito de uma situação específica que procura descobrir sua

essência e características e que possui um forte cunho descritivo, sem a

interferência do pesquisador sobre a situação.

O trabalho de pesquisa consistiu em uma série de reuniões presenciais com os

profissionais envolvidos no processo de desenvolvimento. Houve uma intensa

pesquisa documental de todos os artefatos gerados na fase de concepção,

elaboração e construção do projeto.

Esse projeto foi escolhido para a realização desse estudo de caso pelo fato de

incorporar alguns dos princípios da arquitetura orientada a serviços e ser um

primeiro passo para a adoção desse estilo arquitetural por toda a empresa.

Page 6: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

6

2. MARCO TEÓRICO

A arquitetura orientada a serviços consiste em três elementos principais que serão

apresentados em maiores detalhes no decorrer do artigo:

Serviços;

Infra-estrutura;

Políticas e processos.

2.1 ARQUITETURA DE SOFTWARE

Para compreender o conceito de arquitetura orientada a serviços é necessário

compreender o que é a arquitetura de software e qual a sua importância em um

projeto de software.

Em sua obra, Bass, Clements e Kazman definem a arquitetura de software como

sendo a estrutura de um sistema computacional, que abrange os componentes de

software que compõem esse sistema, suas propriedades visíveis externamente e o

relacionamento entre eles.

Pressman ainda enfatiza que a arquitetura não é o software operacional, mas sim

uma representação que permite ao engenheiro de software:

Analisar a aderência do desenho aos requisitos levantados junto ao cliente;

Considerar alternativas arquiteturais em um estágio no qual as alterações no

desenho ainda são relativamente simples;

Minimizar os riscos associados á construção de software;

Com base na obra de Bass, Clements e Kazman, Pressman elenca três principais

razões para justificar a arquitetura de software:

Page 7: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

7

As representações da arquitetura de software são uma forma de melhorar a

comunicação entre as partes interessadas (stakeholders) no desenvolvimento

do software.

A arquitetura destaca as decisões de desenho que terão um impacto profundo

em todo o trabalho consecutivo da engenharia de software, e no sucesso final

do software.

A arquitetura representa um modelo de como um software é estruturado e

como seus componentes trabalham juntos.

2.2 ARQUITETURA ORIENTADA A SERVIÇOS

A arquitetura orientada a serviços é um paradigma que tem como principal objetivo a

exposição e reuso intenso de serviços, componentes de software que executam

tarefas específicas relacionadas ao negócio, de maneira pouco acoplada e

interoperável, para que em médio prazo a tarefa de desenvolver uma aplicação seja

primordialmente a tarefa de compor e coordenar os serviços já existentes

(MACHADO, 2004).

Josuttis afirma que a arquitetura orientada a serviços lida muito bem com

características difíceis e conhecidas dos grandes sistemas:

Sistemas distribuídos;

Diferentes proprietários;

Heterogeneidade;

As características da arquitetura orientada a serviços que permite lidar muito bem

com as características dos grandes sistemas, citadas anteriormente, são:

Serviços: A arquitetura orientada a serviços objetiva abstrair concentrando-se

no aspecto corporativo do problema. Um serviço é então, uma representação

da TI de alguma funcionalidade de negócio. O objetivo da arquitetura

orientada a serviços é estruturar grandes sistemas distribuídos baseados em

abstração das regras e funções de negócio;

Page 8: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

8

Interoperabilidade: A interoperabilidade não é um conceito novo e existia

muito antes do aparecimento da arquitetura orientada a serviços juntamente

com a idéia de EAI (Enterprise Application Integration). Entretanto, na

arquitetura orientada a serviços, a interoperabilidade é quem guia a

implementação das funcionalidades de negócio (serviços);

Acoplamento fraco: Acoplamento fraco consiste em minimizar as

dependências de modo a aumentar a flexibilidade, escalabilidade e tolerância

às falhas;

Machado ainda apresenta algumas características relevantes presentes em grande

parte das aplicações e frameworks orientados a serviços. As características

consideradas relevantes são:

Reuso “caixa-preta”: Diz respeito à capacidade de extensão das

funcionalidades através da descrição de interfaces ou contratos bem definidos

que devem ser respeitados;

Distribuição: Um sistema baseado na uma arquitetura orientada a serviços é

tipicamente um sistema cooperativo aberto. Em um sistema cooperativo

aberto, novas entidades podem dinamicamente passar a compor o sistema,

deixar de existir ou ainda evoluir, sendo que essas entidades podem estar

localizadas em máquinas distintas;

Heterogeneidade Ambiental: Em virtude da distribuição, existe a

necessidade de que sistemas baseados na arquitetura orientada a serviços

ofereçam suporte a ambientes heterogêneos. Em geral os componentes dos

sistemas (serviços) estão executando em máquinas distintas, e precisam se

comunicar de alguma forma;

Composição: O ideal perseguido é a capacidade de compor ou recompor

aplicações sem tocar em código escrito e devidamente testado;

Coordenação: Está intimamente ligada com a sincronização, ordenação e

temporização da execução dos serviços. Na indústria, à coordenação está

mais relacionada a modelagem de processos de negócios (BPM – Business

Process Management), onde a linguagem usada tenta descrever intimamente

como funciona o processo da corporação;

Page 9: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

9

Dinamismo e Adaptabilidade: Aplicações orientadas a serviços conseguem

se adaptar às mudanças de requerimentos com facilidade. Os serviços podem

entrar e sair do sistema em tempo de execução, tipicamente se comunicando

com o registro de serviços através de mensagens de publicação ou de

remoção. Além disso, geralmente os sistemas nunca fazem referência direta

ao serviço e sim a uma interface para o serviço, possibilitando dinamismo;

Sincronia: A troca de mensagens, seu modo de transmissão e a semântica

são partes fundamentais em sistemas distribuídos, pois são a única maneira

que os componentes possuem de se comunicar e sincronizar suas ações;

2.3. SERVIÇOS E PROCESSOS DE NEGÓCIO

Como dito anteriormente, a arquitetura orientada a serviços é focada nos processos

de negócio. Um processo do negócio pode ser automatizado por meio de sistemas

de informação visando realizá-lo com maior rapidez, menor quantidade de erros,

menor custo e maior qualidade. Esse processo pode ser executado com um ou mais

passos e esses passos podem ser executados em sistemas diferentes.

É possível desmembrar um processo de negócio em passos menores e mais

concretos. A Figura 2 fornece uma representação possível desse conceito, no

entanto, deve-se ter em mente que o número exato de camadas e terminologia

podem variar de acordo com o ambiente.

Page 10: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

10

Figura 2 – Representação da hierarquia de um processo de negócio.

Fonte: Adaptado da obra de (JOSUTTIS, 2008, p.74).

O principal objetivo de um serviço é representar um passo natural da funcionalidade

de negócio. Sendo assim, um serviço pode ser definido como uma tarefa repetitiva e

específica dentro de um processo de negócio (IBM, 2005), uma peça independente

de funcionalidade que pode ser descoberta na rede, e que descreve o que ela pode

fazer e como pode se interagir com ela (MICROSOFT, 2006).

Esses serviços podem ser implementados e consumidos em uma única máquina,

distribuídos através de um conjunto de computadores ou uma rede local, ou através

de redes corporativas (IBM, 2005).

Pelo fato desses serviços serem implementados tendo em vista o negócio, as

pessoas de negócio deveriam ser capazes de entender o que um serviço faz

(JOSUTTIS, 2008). A principal conseqüência dessa abordagem é que neste nível de

abstração os detalhes específicos da plataforma não importam.

Page 11: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

11

Muitas definições da arquitetura orientada a serviço que foram encontradas no

decorrer do desenvolvimento desse artigo, afirmam que a implementação dos

serviços deve ser realizada utilizando-se os XML Web Services. Muitos até

confundem a arquitetura orientada a serviços com essa tecnologia. Os XML Web

Services são apenas uma maneira para implementar a arquitetura orientada a

serviços, contudo, o conceito dessa arquitetura não está vinculado a nenhuma

tecnologia específica.

2.4. ENTERPRISE SERVICE BUS

O ESB (Enterprise Service Bus ou Barramento de Serviços Corporativos) é parte da

infra-estrutura da arquitetura orientada a serviços e provê um modo dos

consumidores invocarem os serviços ofertados pelos fornecedores.

A Figura 3 ilustra a utilização do ESB em um cenário de SOA federativa ou em rede.

Esse cenário ocorre quando existem serviços básicos (funcionalidade discretas) e os

compostos (serviços compostos por outros serviços). Esse estágio introduz uma

camada adicional para os serviços,denominada camada de orquestração.

Page 12: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

12

Figura 3 – Representação da interação entre serviços, orquestração de serviços, ESB e consumidor

de serviço.

Fonte: JOSUTTIS, 2008, p.62.

Dentre as responsabilidades atribuídas a um ESB e citadas por (JOSUTTIS, 2008)

estão:

Prover conectividade: Possibilitar que um consumidor converse com um

fornecedor sem conhecer necessariamente sua localização;

Transformação de dados: Por integrar diferentes plataformas e linguagens

de programação, uma parte fundamental é a transformação de dados;

Roteamento inteligente: Prover uma maneira para enviar uma chamada de

serviço do consumidor para o fornecedor e depois enviar uma resposta do

fornecedor para o consumidor;

Lidar com segurança: Restringir o modo como os consumidores invocam os

serviços e vêem os resultados;

Lidar com confiabilidade: Garantir que uma mensagem enviada por um

consumidor ou uma resposta enviada por um fornecedor serão entregues;

Gerenciamento dos serviços: Mais cedo ou mais tarde surgirão dúvidas

referentes à como gerenciar todos os serviços disponíveis. Isso abrange

definições de como o consumidor descobrirá um serviço já existente e onde

Page 13: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

13

informações mais detalhadas do serviço podem ser encontradas, por

exemplo;

Monitoramento e logging: Registra qual é o cliente que está chamando

determinado serviço e quanto tempo leva uma chamada específica;

2.5. BUSINESS PROCESS MANAGEMENT

O Gerenciamento de Processos de Negócios (BPM) freqüentemente é relacionado à

arquitetura orientada a serviços. O BPM é uma disciplina de gerenciamento que

combina a gestão de negócio com a TI, buscando a melhoria dos processos de

negócio através da utilização de métodos e ferramentas para modelar, publicar,

controlar e analisar os diversos processos de negócio, de modo a permitir que as

organizações alcancem seus objetivos (MICROSOFT, 2006).

O BPM promove a agilidade organizacional e suporta os esforços dos funcionários

para o direcionamento de mudanças no processo e rápida inovação. Para isso, o

BPM suporta o alinhamento do TI e das atividades de negócios dentro da empresa e

fora dela, com parceiros comerciais e fornecedores (MICROSOFT, 2006).

Um processo de negócio pode ser caracterizado como um conjunto de tarefas

que envolvem pessoas e recursos para que possa se atingir um objetivo bem

definido. Como resultado deste, é gerado um produto ou serviço que vai ao

encontro dos desejos dos clientes.

Os processos de negócios podem ser estruturados ou não, dependendo do grau de

mobilidade dos passos subjacentes, ou seja: automatizados ou mutáveis,

geralmente executados apenas por pessoas ou por pessoas interagindo com

sistemas. As pessoas são uma parte essencial de quase todos os processos de

negócios – elas direcionam as soluções e as percepções que fazem uma empresa

avançar e, portanto, o objetivo deve ser capacitá-las para criar inovações e serem

mais produtivas (e não uma “reengenharia” de pessoas que as exclua do processo).

Page 14: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

14

3. ESTUDO DE CASO

Neste estudo de caso será apresentado um projeto de software em desenvolvimento

para uma grande empresa de engenharia do Brasil. Essa empresa atua a mais de

50 anos no mercado de construção pesada no Brasil e no Exterior, desenvolvendo

projetos nos segmentos de construção rodoviária, ferroviária, metroviária, portuária,

hidroelétrica, termoelétrica, petróleo e gás, dutos, saneamento urbano, canais de

irrigação e manutenção industrial onshore4 ou offshore5.

3.1. PROPÓSITO

Esse projeto de software consiste no desenvolvimento de um sistema de gestão do

fluxo de caixa e tem por objetivo melhorar e unificar o processo de fluxo de caixa.

3.2. O PROCESSO DE FLUXO DE CAIXA

O fluxo de caixa pode ser considerado uma demonstração visual das receitas e

despesas distribuídas em uma linha do tempo e consiste na previsão de entradas e

saídas de recursos financeiros em um determinado período. O principal objetivo

dessa previsão financeira é fornecer informações para a tomada de decisões, tais

como:

Prognosticar as necessidades de captação de recursos financeiros;

Prever a sobra ou falta de recursos financeiros;

Aplicar o excedente de caixa em alternativas rentáveis para a empresa.

4 Localizado ou operado em terra.

5 Localizado ou operado no mar.

Page 15: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

15

Para montar essa projeção do fluxo de caixa, é necessário levar em consideração os

seguintes dados (Figura 4):

Entradas: contas a pagar e receber; empréstimos; saldo do caixa;

Saídas: contas a pagar; custos fixos (despesas gerais de administração);

pagamentos de empréstimos; compras a vista;

Figura 4 – Representação do processo de fluxo de caixa.

Fonte: Squadra Tecnologia.

O fluxo de caixa é considerado um dos principais instrumentos de análise e

avaliação de uma empresa, proporcionando ao administrador uma visão futura dos

recursos financeiros da empresa, integrando o caixa, as contas correntes em

bancos, contas de aplicações, receitas, despesas e as previsões.

Essa projeção pode ser realizada mês a mês, trimestre a trimestre ano a ano ou até

mesmo em bases diárias.

7.3. CENÁRIO ATUAL

Atualmente, essa empresa convive com os seguintes problemas referentes ao fluxo

de caixa:

É dependente de suas filiais no que tange aos processos financeiros;

Possui dificuldades na captação de dados das fontes heterogêneas;

Possui dificuldade na realização do processo de previsão de caixa;

Page 16: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

16

Todos esses problemas contribuem para o aumento da dificuldade em antever com

assertividade a sobra e a falta de caixa em médio prazo, um grande volume de

trabalho e retrabalho e a dificuldade em captar e aplicar recursos no mercado de

maneira mais adequada.

ERP (Enterprise Resource Planning) são sistemas de informação desenvolvidos

para integrar dados, processos e departamentos de uma organização possibilitando

a automação e armazenamento de todas as informações em um único sistema.

Essa integração pode ser vista sob a perspectiva funcional (sistemas de: finanças,

contabilidade, recursos humanos, fabricação, marketing, vendas, compras, etc) e

sob a perspectiva sistêmica (sistema de processamento de transações, sistemas de

informações gerenciais, sistemas de apoio a decisão, etc).

Com o intuito de auxiliar na gestão do fluxo de caixa, um ERP6, um sistema legado,

que envolve todo o movimento transacional da empresa, é utilizado por algumas

áreas funcionais (Figura 5). Esse ERP foi desenvolvido utilizando-se uma linguagem

chamada 4GL e utiliza banco de dados IBM INFORMIX. Ele é composto por uma

série de módulos, tais como: contas a pagar, contas a receber, suprimentos, etc.

Apesar disso, o controle das previsões financeiras é realizado utilizando-se planilhas

eletrônicas. Para a realização das previsões financeiras, cada área funcional envia

uma planilha com seus dados e a unificação desses dados é realizada

manualmente.

Figura 5 – Representação da composição do ERP Legado.

Fonte: Squadra Tecnologia.

6 Sistemas de informação que integram todos os dados e processos de uma organização em um

único sistema.

Page 17: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

17

Buscando modelar e melhorar seus processos de negócio, foi contratada uma

consultoria no ano de 2006. Essa consultoria detectou uma série de pontos a

melhorar, e o projeto de desenvolvimento desse software é um dos passos

propostos para a melhoria do processo de fluxo de caixa.

Durante a fase de concepção desse projeto foram identificadas algumas

características que influenciaram na decisão de utilizar conceitos da arquitetura

orientada a serviço. São eles:

Extração de dados de um ERP composto por pelo menos 15 módulos;

Exposição de serviços reutilizáveis que serão consumidos nas próximas

aplicações desenvolvidas por essa empresa;

Necessidade de promover o “reuso corporativo”;

Existe hoje nessa empresa uma tendência á criação de um ambiente tecnológico

corporativo homogêneo. Para tanto, foi decidido que todos os novos sistemas de

informação deveriam ser desenvolvidos utilizando-se a plataforma Microsoft .NET.

Seguindo essa tendência, a empresa optou pelo desenvolvimento desse novo

sistema de informação utilizando o .NET Framework 2.0.

3.4. SOLUÇÃO PROPOSTA

Tendo em vista os problemas levantados junto ao cliente e apresentados

anteriormente, foi pensada uma arquitetura que promovesse a criação de um novo

sistema de informação para atuar como uma camada acima do legado. Esse novo

sistema de informação tem por objetivo centralizar todos os dados referentes á

gestão do fluxo de caixa (provenientes do ERP Legado) em uma nova base de

dados. Essa base de dados posteriormente será utilizada para a criação de um

sistema de Business Intelligence.

As principais funcionalidades esperadas desse sistema dizem respeito á

possibilidade de criar previsões de caixa de cada uma das áreas funcionais e decidir

Page 18: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

18

o fluxo de caixa. Dessa maneira a empresa poderá agir de uma maneira mais

proativa diante dos eventos financeiros.

Com o intuito de possibilitar uma maior flexibilidade nas mudanças e otimizar os

processos de negócio, foi incorporada uma abordagem orientada a processos. O

intuito do BPM é orquestrar o fluxo de chamadas dos serviços e criar serviços

compostos.

Para implementar o BPM foi escolhido o jBPM. jBPM é uma ferramenta de gerência

de processos para o ambiente Java reconhecida pelo mercado. O principal motivo

para sua escolha foi o fato de que o driver de acesso ao banco de dados utilizado

pelo cliente (IBM INFORMIX) possuir uma série de problemas de compatibilidade

com o Microsoft .NET Framework, principalmente no que diz respeito ao suporte á

two phase commit (2PC7). Esse problema não ocorre no ambiente Java e por

consequência no jBPM.

Para a modelagem dos processos de negócio não foi utilizada a linguagem BPEL

(Business Process Execution Language), uma vez que esta mapeia apenas

processos executáveis (sem a interação de seres humanos). Para a modelagem dos

processos de negócio foi utilizada então a linguagem XPDL (XML Process Definitio

Language) que é uma linguagem que permite o mapeamento de processos de

negócio (com a interação de seres humanos).

Assim como o BPM, todos os serviços criados até então foram escritos em Java.

Esses serviços são consumidos por essa aplicação e também expostos para as

demais aplicações como XML Web Services. A utilização dos XML Web Services

deve-se ao fato dessa ser uma tecnologia amplamente suportada atualmente e que

permite a interoperabilidade dos diversos sistemas de informação, sendo

independente da linguagem de programação utilizada e plataforma. Os detalhes

referentes à XML Web Services não são descritos nesse trabalho, uma vez que

7 É uma abordagem para manter a consistência através de múltiplos sistemas. Na primeira fase,

todos os backends são perguntados para confirmar uma mudança solicitada para que na segunda fase o commit das atualizações normalmente sejam bem sucedido. De acordo com o princípio de acoplamento fraco, compensação é o termo usando em SOA, no lugar de 2PC.

Page 19: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

19

constituem um assunto bastante extenso e não constituem parte essencial da

arquitetura orientada a serviços.

Cabe uma importante observação quanto aos XML Web Services: a simples

utilização destes em um projeto de software, não qualifica o software como orientado

a serviços. Grande parte ou todos os conceitos tratados anteriormente nesse artigo

devem fazer parte da cultura organizacional para que uma solução de software

possa ser denominada realmente como orientada a serviços. A partir disso, tem-se

que XML Web Services são meramente uma forma de se implementar a arquitetura

orientada a serviços, mas não parte essencial dela.

A decisão de expor esses serviços não partiu da equipe de desenvolvimento, mas

sim da empresa. Todos os serviços expostos foram elencados e constituem seus

principais processos de negócio.

O papel dos serviços neste cenário é disponibilizar funcionalidades as quais poderão

ser facilmente acopladas nos processos. Estes serviços têm a característica de

serem focados em objetivo, por este motivo, os serviços são rotinas concisas e com

um escopo bem definido. Isto é feito com o objetivo de não possuírem serviços que

sobreponha funcionalidades que possam estar em outros serviços.

Visando prover conectividade entre a aplicação e os serviços criados, foi

implementado um barramento corporativo de serviços (ESB) pala equipe de

desenvolvimento. Esse barramento não possui todas as funcionalidades previstas

em um barramento adquirido comercialmente, entretanto, atende ás necessidade do

projeto em um primeiro momento. Dentre as funcionalidades ofertadas por esse

componente de software estão:

Capacidade de prover conectividade entre a aplicação e os serviços;

Capacidade de rotear as mensagens entre clientes e fornecedores de

serviços;

Capacidade de interceptar e tratar as mensagens trafegadas;

A função de interceptar e tratar as mensagens tem o objetivo de, se necessário for,

alterar o fluxo da mensagem e/ou o seu conteúdo. Já a função de expor os serviços

Page 20: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

20

possibilita que outros sistemas ou subsistemas possam utilizar dos serviços

disponibilizados. Existiu a demanda de um barramento neste cenário devido à

necessidade de integração com sistemas legados, bem como o reaproveitamento de

serviços por outros sistemas.

4. CONCLUSÃO

A arquitetura orientada a serviços é uma abordagem capaz de promover a criação,

exposição e reutilização de vários serviços de negócio, promovendo a produtividade

e a lucratividade no desenvolvimento e manutenção de software. Sua capacidade de

lidar bem com ambientes heterogêneos permite que novos softwares sejam criados,

independente de linguagem de programação ou plataforma, tendo como foco

principal o negócio.

A criação e exposição de serviços oferecem uma série de benefícios, tanto no que

tange à rapidez do desenvolvimento, como na redução de custos e prazos na

distribuição de sistemas. Ela possibilita integração de sistemas de plataformas

diferentes (.NET, J2EE, CORBA), tornando o ambiente corporativo interoperável.

Este estilo arquitetural não introduz nenhum conceito novo. É um paradigma que

reúne os principais conceitos e práticas de integração de sistemas já existentes.

Outro aspecto importante é o fato desse paradigma aceitar a heterogeneidade do

ambiente corporativo, ao contrario de outras abordagens precursoras.

Assim como todo e qualquer paradigma ou tecnologia, a arquitetura orientada a

serviços não deve ser encarada como uma “bala de prata”. Apesar de todas as

vantagens ofertadas pela utilização desse paradigma, deve-se ponderar a respeito

de sua utilização em cada cenário. Esse e um paradigma cujo custo de

implementação pode ser relativamente caro caso o ambiente corporativo seja

homogêneo. Para ambientes homogêneos existem soluções mais simples e de

menor custo.

Page 21: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

21

Durante o desenvolvimento desse trabalho foram definidos os principais conceitos

relacionados á arquitetura orientada a serviços, bem como foram apresentados

algumas das dificuldades encontradas na integração de sistemas de informação no

contexto corporativo.

Com base nesse estudo de caso e na experiência da equipe que compõe esse

projeto, que já participou de outros projetos envolvendo EAI e SOA, foram

identificados alguns aspectos importantes a serem observados durante a adoção de

SOA em uma organização:

Utilização de padrões de mercado: A utilização de muitos padrões em um

mesmo projeto SOA, acarreta no insucesso do consumo dos serviços. Dentre

os padrões mais utilizados atualmente estão:

o WS-I: utilização de tecnologias compatíveis com o padrão de

interoperabilidade de Web Services.

o WS-BPEL: Implementação dos processos executáveis genéricos e

reutilizáveis utilizando BPEL (Business Process Execution Language).

o WSDL: Mecanismo de definição de serviços e as mensagens que um

serviço oferece.

o UDDI: Mecanismo de procura e registro de serviços para promover o

reuso.

o SOAP: Protocolo baseado em HTTP que usa mensageria composta de

XML sobre uma rede.

Utilização do ESB: O ESB não é um componente essencial em soluções

SOA, desde que o ambiente da empresa não tenha um cenário complexo de

integração. Entretanto na maioria dos casos o ESB é um elemento essencial.

Aderência aos princípios SOA: Alguns princípios pregados pela arquitetura

centrada em orientação a serviços devem ser seguidos, para garantir as

promessas feitas sobre SOA. São eles:

o Fraco acoplamento:

o Contrato de Interfaces

o Serviços reutilizáveis

Page 22: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

22

Utilização de nomes de negócio para os serviços: Os consumidores dos

serviços são analistas de negócio. Desta forma, os nomes dos serviços

devem usar as suas terminologias e vocabulário para tornar seu significado

mais intuitivo.

Utilização da abordagem Bottom-Up e Top-Down para elencar os

serviços: A abordagem Bottom-Up investiga o legado da empresa, em

especial, as aplicações escritas antes da adoção da SOA, sobre possíveis

funcionalidades e componentes que possam agregar valor de negócio para as

novas soluções, no formato de serviços.

A Top-Down, especifica processos de negócio que compõem fluxos de dados

e processos, contanto com isso com serviços que possibilitem a correta

execução destes processos. Neste caso, através do desenho do processo,

podem-se descobrir quais serviços serão necessários, e neste caso decide-se

aproveitar o que o legado têm a oferecer (usando um ESB para transformar o

legado em serviços), ou criar o serviço do zero, uma vez identificado que

aquele comportamento jamais foi feito em termos de TI na empresa.

Criar serviços que tenham operações atômicas: Se um serviço realiza

uma operação transacional de alteração ou exclusão de dados, esta operação

deve poder ser desfeita sem que outros serviços sejam afetados. Quem deve

se preocupar com compensação de transações e estornos deve ser o gestor

do processo BPEL, e não o serviço. Sendo assim, o serviço deve se

preocupar apenas com os seus próprios dados.

Construir os serviços iterativamente: Tornar os serviços de uma empresa

disponíveis é algo que pode ser feito de maneira incremental. Ë interessante

começar por uma área ou grupo de processos da empresa que traga maior

valor agregado.

No momento do término desse artigo esse projeto ainda estava em andamento (fase

de construção, segundo o RUP8). Entretanto isso não é um empecilho para que o

mesmo seja utilizado como referencial desse trabalho, uma vez que a arquitetura

proposta está bem-definida e mudanças no escopo serão pouco significativas. Para

8 O Rational Unified Process (RUP) é um framework de processos da IBM Rational guiado por casos

de uso, centrado na arquitetura, e que propõe o desenvolvimento de software de modo iterativo e incremental.

Page 23: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

23

trabalhos futuros, espera-se relatar o término desse processo de desenvolvimento e

os passos conseguintes da adoção da arquitetura orientada a serviços por essa

empresa.

Page 24: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

24

Study about the application of the service oriented architecture in a cash flow

management system

ABSTRACT

Many corporations has problems in control effectively its information,

once it is fragmented in the several existing information systems without integration.

Such scenario brings delays to reach decisions, mainly caused by the management

team. In this scenario, the Service Oriented Architecture (SOA) is a corporate

information system development approach that aims focus in the business process,

implementing them as reusable and interoperable services.

This work aims to analyse the experience of implementing some service-oriented

architeture concepts in a cash-flow management system, through a case study. I the

course of this article, the main concepts of that architectural style will be related,

since the dificulties of integrating with legacy systems are known, and important

aspects to be watched during the adoption of that paradigm.

Keywords: Systems Integration, Software Architecture, Service Oriented

Architecture

Page 25: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

25

REFERÊNCIAS BASS, CLEMENTS, KAZMAN. Software Architecture in Practice, 2nd edition, Addison Wesley, 2003, p.44. BENNETT, K.H. Legacy Systems: Coping With Success, IEEE Software, January 1995, Vol 12, No. 1, pp 19-23 IBM CORPORATION, IBM’s SOA Foundation: An Architectural Introduction and Overview, November 2005. IBM CORPORATION, Introduction to the Value and Governance Model of Service-Oriented Architecture, 2005. JOSUTTIS, Nicolai M., SOA na prática: A arte de modelar sistemas distribuídos, AltaBooks, 2008. MACHADO, João Coutinho, Um Estudo Sobre o Desenvolvimento Orientado a Serviços, 2004. Trabalho acadêmico – (Tese de Mestrado) – Pontifica Universidade Católica do Rio de Janeiro, Rio de Janeiro, 2004. MICROSOFT CORPORATION, Ativando uma “Arquitetura Orientada a Serviços Realista” na Plataforma Microsoft, Dezembro 2006. PRESSMAN, Roger. Software Engineering: A Practitioner's Approach, 5th edition, McGraw-Hill, 2000, p.366-368. SANTOS, Cássio Rogério Celestino, Gerência de Risco na Modernização de Sistemas Legados. 2004. Trabalho acadêmico – (Monografia) – Escola Politécnica da Universidade de São Paulo, São Paulo, 2004, Disponível em: <http://www.pcs.usp.br/~lucia/teses/CassioSantos.pdf>. Acesso em: 04 mar. 2008. SOUZA JÚNIOR, Marcílio, CUNHA, Mônica, CAMPOS NETO, João Gabriel, SANTOS BARROS, Heitor, Implementação de um protótipo para integração orientada a serviços dos sistemas de informação do CEFET-AL, 2007. Trabalho acadêmico – (Artigo Científico) – CEFET-AL, Maceió, Alagoas. `

Page 26: Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

26

Meus sinceros agradecimentos á minha família pelo apoio,

meus amigos pelo companheirismo e estímulo e meu

orientador por acreditar em meu potencial e por me orientar,

permitindo-me realizar esse trabalho.

Obrigado por me ensinarem com prazer e dedicação parte do

que sei e, o que é mais importante, me ensinarem a aprender

sozinho.