Changes between Version 2 and Version 3 of WF/detalhamento


Ignore:
Timestamp:
08/11/10 11:00:44 (14 years ago)
Author:
viani
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/detalhamento

    v2 v3  
    11= Módulo de Desenvolvimento de Aplicações para o Expresso utilizando o Padrão MVC = 
    22 
     3== Introdução == 
     4O Expresso Livre é um projeto de software livre iniciado em abril de 2004 pela Companhia de Informática do Paraná \cite{Silva:2008}, segundo o site www.expressolivre.org \cite{expressolivre:2010} ele "é uma solução completa de comunicação que reúne Email, Agenda, Catálogo de Endereços, Workflow e Mensagens Instantâneas em um único ambiente.". O sistema tem suas origens como uma customização do software E-!GroupWare, desenvolvido e mantido por uma grande comunidade de colaborares voluntários \cite{Egrupware:2010}. 
    35 
    4 == Introdução == 
    5 O Expresso Livre é um projeto de software livre iniciado em abril de 2004 pela Companhia de Informática do Paraná \cite{Silva:2008}, segundo o site www.expressolivre.org \cite{expressolivre:2010}  ele  "é uma solução completa de comunicação que reúne Email, Agenda, Catálogo de Endereços, Workflow e Mensagens Instantâneas em um único ambiente.". O sistema tem suas origens como uma customização do software E-!GroupWare, desenvolvido e mantido por uma grande comunidade de colaborares voluntários \cite{Egrupware:2010}. 
     6Apesar de fornecer muitos recursos é comum o surgimento de necessidades específicas da corporação que não são atendidas pelas ferramentas disponíveis no ambiente Expresso. Para suprir esta carência muitos desenvolvedores utilizarem o módulo Workflow para criarem aplicações personalizadas que necessitam recursos do ambiente. Este caminho muitas vezes não é o mais adequado, pois várias das necessidades de implementação não tem características de workflow, no entanto a esta é maneira mais simples de integração dos recursos disponíveis, particularmente os dados de usuários, a uma aplicação que seja executada no ambiente. 
    67 
    7 Apesar de fornecer muitos recursos é comum o surgimento de necessidades específicas da corporação que não são atendidas pelas ferramentas disponíveis no ambiente Expresso. Para suprir esta carência muitos desenvolvedores utilizarem o módulo Workflow para criarem aplicações personalizadas que necessitam recursos do ambiente. Este caminho muitas vezes não é o mais adequado, pois varias das necessidades de implementação não tem características de workflow, no entanto a esta é maneira mais simples de integração dos recursos disponíveis, particularmente os dados de usuários, a uma aplicação que seja executada no ambiente. 
    8  
    9 O sistema proposto neste trabalho é um módulo para desenvolvimento rápido de aplicações para ser utilizado de forma integrada ao ambiente Expresso, substituindo o módulo workflow. Utilizando a ferramenta proposta o programador pode criar aplicações para atender a várias necessidades corporativas utilizando as funcionalidades do ambiente expresso e de fluxo de processos no modelo de workflow. O sistema deverá também oferecer integração simplificada com banco de dados PostgreSQL e uma interface de desenvolvimento de páginas baseada na metodologia WYSWIG. 
    10  
     8O sistema proposto neste trabalho é um módulo para desenvolvimento rápido de aplicações para ser utilizado de forma integrada ao ambiente Expresso, substituindo o módulo workflow. Utilizando a ferramenta proposta, o programador pode criar aplicações para atender a várias necessidades corporativas utilizando as funcionalidades do ambiente expresso e de fluxo de processos no modelo de workflow. O sistema deverá também oferecer integração simplificada com banco de dados PostgreSQL e uma interface de desenvolvimento de páginas baseada na metodologia WYSWIG. 
    119 
    1210== Modelos Utilizados == 
     11 
    1312=== Workflow === 
    1413 
    15 O modulo Workflow é utilizado para executar fluxos pré-definidos de uma atividade utilizando a estrutura organizacional cadastrada no ambiente Expresso. Segundo classificação proposta por Nicolao \cite{Nicolao:1996} o modelo de workflow do moódulo do expresso é caracterizado como do tipo administrativo, pois "envolve processos repetitivos com regras de coordenação de tarefas simples, tal como roteamento de um relatório de despesa ou requisição de viagem, controladas por um processo de autorização". Estas são necessidades que devem ser atendidas pelas próprias necessidades do ambiente corporativos a que se dispõe a atender o ambiente Expresso. 
     14O módulo Workflow é utilizado para executar fluxos pré-definidos de uma atividade, utilizando a estrutura organizacional cadastrada no ambiente Expresso. Segundo classificação proposta por Nicolao \cite{Nicolao:1996} o modelo de workflow do moódulo do expresso é caracterizado como do tipo administrativo, pois "envolve processos repetitivos com regras de coordenação de tarefas simples, tal como roteamento de um relatório de despesa ou requisição de viagem, controladas por um processo de autorização". Estas são necessidades que devem ser atendidas pelas próprias necessidades do ambiente corporativos a que se dispõe a atender o ambiente Expresso. 
    1615 
    1716O uso de gerenciamento de fluxos pode ser implementado como uma ferramenta de apoio a sistemas que tenham características de workflow, passando a ser utilizado não como módulo do sistema mas como infraestrutura disponível pelo ambiente para ser utilizada no desenvolvimento de aplicações. Esta alteração na forma de utilização de fluxos permite maior flexibilidade do ambiente como um todo além de maior encapsulamento das atividades. 
    1817 
    19 Por outro lado é visível a necessidade de uma aplicação simplificada para a manutenção e gerenciamento dos processos de workflow dentro das organizações. A retirada deste módulo tende a provocar impactos negativos entre os usuários que já estão habituados com o uso das ferramentas. Para evitar estes problemas e dadas as características do sistema de desenvolvimento de aplicações proposta é inevitável a existência de uma aplicação de gerenciamento e manutenção de processos de workflow. Esta aplicação deve ser parte integrante do módulo de desenvolvimento de aplicações. 
     18Por outro lado, é visível a necessidade de uma aplicação simplificada para a manutenção e gerenciamento dos processos de workflow dentro das organizações. A retirada deste módulo tende a provocar impactos negativos entre os usuários que já estão habituados com o uso das ferramentas. Para evitar estes problemas e dadas as características do sistema de desenvolvimento de aplicações proposta é inevitável a existência de uma aplicação de gerenciamento e manutenção de processos de workflow. Esta aplicação deve ser parte integrante do módulo de desenvolvimento de aplicações. 
    2019 
    21  
    22 === Parão MVC === 
     20=== Padrão MVC === 
    2321 
    2422O modelo Model View Controller (MVC) apesar de muito valorizado não é um conceito novo, em 1979 Reenskaug \cite{Reenskaug:1979} publica artigo apresentando os conceitos de modelo, controle e visualização. Com a evolução da internet e o grande uso de aplicações baseadas no padrão Web o uso de MVC popularizou-se significativamente e atualmente é um padrão de projeto amplamente utilizado pelos desenvolvedores de aplicações. 
     
    3028== Módulo para Desenvolvimento de Aplicações para o Ambiente Expresso, MoDA2E == 
    3129 
    32 O módulo proposto respeita o padrão MVC e propõe independência entre os componentes das camadas de controle e modelo da visualização de tal forma que alterações nas classes de uma camada tenham impacto mínimo nas classes de outra camada. Este conceito de independência é, por consequência, estendido a integração com os recursos do ambiente Expresso tornado os aplicativos resistentes a mudanças de versão. 
     30O módulo proposto respeita o padrão MVC e propõe independência entre os componentes das camadas de controle e modelo da visualização, de tal forma que alterações nas classes de uma camada tenham impacto mínimo nas classes de outra camada. Este conceito de independência é, por consequência, estendido a integração com os recursos do ambiente Expresso tornado os aplicativos resistentes a mudanças de versão. 
    3331 
    34  
    35  
    36 Como o desenvolvimento dos aplicativos utiliza apis para acessar as funcionalidades do ambiente apenas alterações nas bibliotecas podem influenciar no comportamento das aplicações o que oferece também independência a alterações feitas no Expresso. Esta característica da segurança ao desenvolvedor de aplicativos no sentido, que mesmo que este não tenha controle das alterações no ambiente, seus programas continuarão tendo as mesmas funcionalidades. 
     32Como o desenvolvimento dos aplicativos utiliza APIs para acessar as funcionalidades do ambiente, apenas alterações nas bibliotecas podem influenciar no comportamento das aplicações, o que oferece também independência a alterações feitas no Expresso. Esta característica dá segurança ao desenvolvedor de aplicativos, no sentido que mesmo que este não tenha controle das alterações no ambiente, seus programas continuarão tendo as mesmas funcionalidades. 
    3733 
    3834O desenvolvedor utiliza o framework de desenvolvimento definindo as funcionalidades que deseja dar a aplicação em um script, podendo utilizar uma interface gráfica para gerar este arquivo, que inclui informações de conexão com banco de dados, workflow e perfis de usuários. A partir do script de configuração é gerado o ambiente da aplicação contendo uma estrutura de pastas baseadas no modelo e código básico para o funcionamento da aplicação. 
     
    4036O desenvolvedor pode então criar suas interfaces humano-computador, utilizando a ferramenta de criação fornecida com o framework, ou integrar aplicativos utilizando chamadas http padronizadas. 
    4137 
    42 Grande parte das necessidades do programa são geradas automaticamente pela ferramenta de "Geração de Aplicativos", reduzindo significativamente o tempo de analise e desenvolvimento. O módulo utiliza o padrão de arquitetura de software Model-view-controles (MVC), que separa a lógica do negocio da interface humano-computador, fornecendo um ambiente de fácil manutenção e alto desacoplamento. 
     38Grande parte das necessidades do programa são geradas automaticamente pela ferramenta de "Geração de Aplicativos", reduzindo significativamente o tempo de análise e desenvolvimento. O módulo utiliza o padrão de arquitetura de software Model-view-controles (MVC), que separa a lógica do negocio da interface humano-computador, fornecendo um ambiente de fácil manutenção e alto desacoplamento. 
    4339 
    44 O módulo pode ser utilizado também como uma ferramenta capaz de prover serviços podendo ser integrada com aplicações já existentes ou em desenvolvimento que necessitem implementar funcionalidades fornecidas por sistemas ativos no módulo. 
     40O módulo pode ser utilizado também como uma ferramenta capaz de prover serviços, podendo ser integrada com aplicações já existentes ou em desenvolvimento que necessitem implementar funcionalidades fornecidas por sistemas ativos no módulo. 
    4541 
    4642=== Camada de Visualização === 
     
    4844O desacoplamento da camada de visualização oferece ao desenvolvedor a possibilidade de independência das interfaces gráficas do ambiente Expresso. Este desacoplamento é um requisito importante uma vez que alterações nas ferramentas de interface do Expresso podem provocar erros ou alterar a funcionalidades de scripts javascript ou configurações de estilo tendo em vista que muitas vezes a comunidade responsável pela manutenção e desenvolvimento do Expresso Livre não tem conhecimento sobre a funcionalidade das aplicações do módulo. 
    4945 
    50 A geração das interfaces da camada pode ser feita pelo processamento de templates gerados pela ferramenta de desenvolvimento rápido e convertidos para o formato HTML. Estes templates contem informações sobre leiaute e mesclamento de dados obtidos no objeto gerado na chamada da execução. A ferramenta é capaz de processar vários componentes HTML e é capaz de minimizar o trafego de dados utilizando chamadas que retornam apenas os dados que necessitam ser redesenhados na tela evitando a necessidade de gerar novas páginas a cada chamada. 
     46A geração das interfaces da camada pode ser feita pelo processamento de templates gerados pela ferramenta de desenvolvimento rápido e convertidos para o formato HTML. Estes templates contém informações sobre leiaute e mesclamento de dados obtidos no objeto gerado na chamada da execução. A ferramenta é capaz de processar vários componentes HTML e é capaz de minimizar o tráfego de dados utilizando chamadas que retornam apenas os dados que necessitam ser redesenhados na tela evitando a necessidade de gerar novas páginas a cada chamada. 
    5147 
    52 As telas disponíveis aos cliente e promovem a sensação deste estar utilizando uma aplicação desktop com as facilidades e os padrões comuns em páginas disponíveis na Web. Esta forma de apresentação minimiza o tempo de aprendizagem no uso das aplicações quando o usuário está familiarizado com uso de navegadores para acesso a Internet. Evitando carregar todo conteúdo das páginas a cada chamada significa significativa melhora de performance e recursos extras de interatividade. 
     48As telas disponíveis aos cliente promovem a sensação deste estar utilizando uma aplicação desktop com as facilidades e os padrões comuns em páginas disponíveis na Web. Esta forma de apresentação minimiza o tempo de aprendizagem no uso das aplicações quando o usuário está familiarizado com uso de navegadores para acesso a Internet. Evitando carregar todo conteúdo das páginas a cada chamada significa significativa melhora de performance e recursos extras de interatividade. 
    5349 
    5450=== Comunicação Entre as Camadas === 
    5551 
    56 Para ampliar as possibilidades de uso do sistema as camadas de controle e modelo tem forte acoplamento, atuando como um serviço capaz de receber dados, processa-los e gerar um resultado para ser entregue ao cliente. Apesar do desacoplamento da camada de visualização do ponto de vista das ferramentas de desenvolvimento a execução de uma rotina somente faz sentido se for acionada por um cliente que assume sempre o papel da camada de visualização. Existe então um desacoplamento entre a camada de visualização e as as camadas de controle e modelo do ponto de vista do desenvolvimento da aplicação mas a execução de qualquer rotina implica na necessidade de um protocolo de comunicação para estabelecer o vinculo entre as camadas. 
     52Para ampliar as possibilidades de uso do sistema as camadas de controle e modelo tem forte acoplamento, atuando como um serviço capaz de receber dados, processá-los e gerar um resultado para ser entregue ao cliente. Apesar do desacoplamento da camada de visualização do ponto de vista das ferramentas de desenvolvimento, a execução de uma rotina somente faz sentido se for acionada por um cliente que assume sempre o papel da camada de visualização. Existe então um desacoplamento entre a camada de visualização e as as camadas de controle e modelo do ponto de vista do desenvolvimento da aplicação mas a execução de qualquer rotina implica na necessidade de um protocolo de comunicação para estabelecer o vínculo entre as camadas. 
    5753 
    58 A comunicação entre o cliente que solicita a execução de determinada atividade não é feita de forma única. A aplicação adota um protocolo para o recebimento das informações e outro para o retorno dos dados. Esta opção foi feita para facilitar o desenvolvimento de aplicações utilizando a Web, todo pedido para a camada de controle é feita via requisição http ou https utilizando post ou request e retorno é feito pelo envio de um documento XML puro, ou HTTP utilizando o mesmo protocolo que inciou a aplicação. 
     54A comunicação entre o cliente que solicita a execução de determinada atividade não é feita de forma única. A aplicação adota um protocolo para o recebimento das informações e outro para o retorno dos dados. Esta opção foi feita para facilitar o desenvolvimento de aplicações utilizando a Web, todo pedido para a camada de controle é feita via requisição http ou https utilizando post ou request e retorno é feito pelo envio de um documento XML puro, ou HTTP utilizando o mesmo protocolo que iniciou a aplicação. 
    5955 
    60 Como as ferramentas de desenvolvimento Web mais populares implementam métodos para manipulação de informações fornecidas em arquivos no formato XML este foi adotado como padrão para a implementação de troca entre a camada de controle e o cliente. Internamente a camada de controle e de modelo compartilham os dados por meio de objetos que são passados entre as classes e os métodos. Quando a rotina foi finalizada esta retorna um objeto contendo as informações que devem ser retornadas para o cliente populadas em suas propriedades e retorna este objeto para a camada de controle que deve chamar um método capaz de mapear as propiedades do objeto para tags XML. 
     56Como as ferramentas de desenvolvimento Web mais populares implementam métodos para manipulação de informações fornecidas em arquivos no formato XML este foi adotado como padrão para a implementação de troca entre a camada de controle e o cliente. Internamente a camada de controle e de modelo compartilham os dados por meio de objetos que são passados entre as classes e os métodos. Quando a rotina foi finalizada, esta retorna um objeto contendo as informações que devem ser retornadas para o cliente, populadas em suas propriedades e retorna este objeto para a camada de controle que deve chamar um método capaz de mapear as propiedades do objeto para tags XML. 
    6157 
    6258=== Factory === 
    6359 
    64 O uso de recursos do ambiente não devem ser acessados diretamente pois o acesso depende de validação de permissões e implementações diferenciadas de construtores das classes. Para padronizar o processo de uso de recursos a ferramenta de construção de aplicativos para o ambiente Expresso utiliza uma classe que implementa o padrão factory \cite{Larman:2005} para instanciar o recurso solicitado. O uso da classe factory permite ao desenvolvedor acessar as apis permitindo acesso apenas a métodos disponíveis as aplicações e protegendo os recursos do módulo. 
     60O uso de recursos do ambiente não devem ser acessados diretamente pois o acesso depende de validação de permissões e implementações diferenciadas de construtores das classes. Para padronizar o processo de uso de recursos a ferramenta de construção de aplicativos para o ambiente Expresso utiliza uma classe que implementa o padrão factory \cite{Larman:2005} para instanciar o recurso solicitado. O uso da classe factory permite ao desenvolvedor acessar as APIs permitindo acesso apenas a métodos disponíveis às aplicações e protegendo os recursos do módulo. 
    6561 
    66 A factory é utilizada estaticamente e fornece dois métodos públicos newInstance e getInstance que tornam uma instancia do objeto que esta cria. O metodo newInstance é utilizado para gerar um objeto com os atributos com os valores padrão no momento da criação do mesmo, já getInstance cria uma instância do objeto caso esta não existe e recupera uma instância existente caso contrario, pode ser encarado como uma variação do padrão singleton. 
     62A factory é utilizada estaticamente e fornece dois métodos públicos newInstance e getInstance que retornam uma instância do objeto que esta cria. O método newInstance é utilizado para gerar um objeto com os atributos e valores padrão no momento da criação do mesmo, já getInstance cria uma instância do objeto, caso este não exista, e recupera uma instância existente caso contrário, pode ser encarado como uma variação do padrão singleton. 
    6763 
    6864== Criação de Programas para o Módulo == 
     
    7066O MoDA2E prepara o ambiente e gera a estrutura de pastas e arquivos para o desenvolvedor. O módulo sempre instância a classe controll.class.php na pasta controll contida na pasta raiz da aplicação que é criado pelo construtor de aplicações. Esta classe é a forma como o MoDA2E estabelece comunicação com o cliente, atuando como um tipo de extensão da camada de controle do Módulo. Na classe controll.class.php esta implementado o método default, chamado pelo construtor da classe abstrata antecessora de controll.class.php, que é sempre executado na criação do objeto. O desenvolvedor deve descrever neste método o funcionamento padrão da classe. 
    7167 
    72 A camada de controle instância componentes do modelo que executam conforme o negocio que deve ser resolvido de acordo com a rotina e parâmetros informados pelo cliente. Concluindo a atividade o ocorrendo erro durante a execução objeto de controle recebe um objeto, preferencialmente contendo apenas atributos e métodos para manuseio dos mesmos, que deve ser serializado para uma representação em XML. Em caso de erro a camada  o desenvolvedor deve instanciar uma classe de erro e retornar este objeto para ser convertido em XML. 
     68A camada de controle instância componentes do modelo, que executam conforme o negócio deva ser resolvido, de acordo com a rotina e parâmetros informados pelo cliente. Concluindo a atividade, ou ocorrendo erro durante a execução, o objeto de controle recebe um objeto, preferencialmente contendo apenas atributos e métodos para manuseio dos mesmos, que deve ser serializado para uma representação em XML. Em caso de erro a camada modelo deve instanciar uma classe de erro e retornar este objeto para ser convertido em XML. 
    7369 
    7470A classe de controle da aplicação retorna sempre um documento XML para o cliente que solicitou a rotina. Este documento pode representar tanto um objeto que representa o resultado da execução da rotina quanto a representação de um erro ocorrido durante o processo. 
     
    7672== Execução de Aplicação == 
    7773 
    78 A chamada a uma aplicação é feita pela requisição a alguma das aplicações do modulo via chamada utilizando os protocolos HTTP ou HTTPS. Ao receber a solicitação o servidor executa as instruções contidas no arquivo de controle do Expresso, instancia a classe de controle da aplicação, prepara o ambiente e passa a executar as instruções da aplicação cliente. A o termino da execução das aplicação cliente esta fornece um objeto contendo todos os dados necessários para serem apresentados ao cliente. 
     74A chamada a uma aplicação é feita pela requisição a alguma das aplicações do módulo, via chamada utilizando os protocolos HTTP ou HTTPS. Ao receber a solicitação o servidor executa as instruções contidas no arquivo de controle do Expresso, instancia a classe de controle da aplicação, prepara o ambiente e passa a executar as instruções da aplicação cliente. Ao término da execução da aplicação cliente esta fornece um objeto contendo todos os dados necessários para serem apresentados ao cliente. 
    7975 
    8076Qualquer erro de execução da aplicação é tratado pela camada de controle, e sempre que ocorrer gera uma interface padrão para ao cliente que solicitou a atividade. Se a resposta para o cliente é feita por XML retornará uma marcação de erro detalhando textualmente em linguagem de leitura humana o ocorrido. No caso de retorno HTML a interface de controle carrega a página de erro, definida pelo framework, com a mensagem de erro e retorna a página para o usuário. 
    8177 
    82  
    8378A camada de controle é capaz de converter classes para formato XML proporcionando que a aplicação retorne uma interface padronizada para o usuário sem custo de desenvolvimento. As solicitações feitas por aplicações que necessitam do retorno de um serviço são atendidas pelo retorno de um objeto representado pelo arquivo XML. Solicitações que não necessitem de geração de interface como requisições AJAX também podem fazer uso deste recurso. 
    84  
    8579 
    8680=== Acesso a Recursos === 
     
    8882Para acessar recursos do ambiente Expresso o desenvolvedor deverá utilizar a factory e utilizar diretamente os recursos do objeto por ela gerado. Para isso o desenvolvedor tem que conhecer detalhes sobre a utilização do recurso. 
    8983 
    90 Quando a aplicação necessitar de recursos de banco de dados para persistir informações do negocio que esta tratando poderá utilizar as ferramentas de acesso a dados oferecida pelo ambiente. Este conjunto de componentes é gerado dinâmicamente no momento da criação da aplicação se o desenvolvedor informar a estrutura de dados a ser utilizada pelo aplicativo que está criando. O acesso ao banco de dados também pode ser modelado pelo cliente independentemente dos recursos oferecidos pelo módulo. 
     84Quando a aplicação necessitar de recursos de banco de dados para persistir informações do negócio que esta tratando, poderá utilizar as ferramentas de acesso a dados oferecida pelo ambiente. Este conjunto de componentes é gerado dinâmicamente no momento da criação da aplicação se o desenvolvedor informar a estrutura de dados a ser utilizada pelo aplicativo que está criando. O acesso ao banco de dados também pode ser modelado pelo cliente independentemente dos recursos oferecidos pelo módulo. 
    9185 
    9286O MoDA2E oferece uma camada de persistência de dados baseada no padrão Active Record provendo mapeamento objeto-relacional. Este mapeamento no momento está limitado ao acesso ao sistema gerenciador de banco de dados, SGDB, PostgreSQL mas pode ser expandido para utilizar outras ferramentas. A proposta de uso da ferramenta para persistir dados é afastar o desenvolvedor das complexidades do mecanismo de banco de dados e facilitar o desenvolvimento da aplicação e manutenção futura. O Módulo de desenvolvimento de aplicações utiliza este mesmo modelo para suas necessidades de persistência. 
    9387 
     88== Resultados Esperados == 
    9489 
    95 == Resultados Esperados == 
    96 O módulo de desenvolvimento de aplicações para o expresso oferece um ambiente simples para o desenvolvimento de novas aplicações promovendo agilidade na criação de aplicativos que necessitem integração com o ambiente Expresso. A padronização nas ferramentas de desenvolvimento resulta em menor tempo de aprendizagem no uso do módulo possibilitando que o este possa ser uma alternativa viável para substituir processos que são mantidos com o uso de planilhas e outros artifícios. 
     90O módulo de desenvolvimento de aplicações para o expresso oferece um ambiente simples para o desenvolvimento de novas aplicações promovendo agilidade na criação de aplicativos que necessitem integração com o ambiente Expresso. A padronização nas ferramentas de desenvolvimento resulta em menor tempo de aprendizagem no uso do módulo possibilitando que este possa ser uma alternativa viável para substituir processos que são mantidos com o uso de planilhas e outros artifícios. 
    9791 
    9892A possibilidade de acesso aos sistemas como provedores de serviços oferece grande reaproveitamento de funcionalidades implementadas podendo ser acessados por sistemas externos desenvolvidos nas mais diversas linguagens. Uma consequência desta foma de fornecimento de resultados é o desacoplamento da camada de visualização das funcionalidades do negócio o que oferece possibilidade de troca de tecnologias com pouco impacto.