O artigo é útil para analistas, arquitetos, desenvolvedores que estejam trabalhando em projetos centrados em serviços com o uso de arquiteturas SOA para que estes realizem o processo de modelagem com maior maturidade. O artigo também é útil para estudantes de graduação e especializações que desejem conhecer o estilo arquitetural SOA e os seus benefícios sobre as abordagens tradicionais monolíticas.
A arquitetura orientada por serviços é um estilo arquitetural para o desenvolvimento de aplicações baseadas em pequenos ativos reusáveis, chamados de serviços.
Esta abordagem busca ofertar diversas vantagens sobre as abordagens monolíticas tradicionais, que entregam aplicações em grandes sistemas executáveis com grande acoplamento entre suas partes. Algumas destas vantagens incluem:
- entrega iterativa e incremental, que possibilita ciclos de projetos mais curtos e melhor retorno sobre os investimentos de TI;
- capacidade de operação autônoma de cada um dos serviços em ambiente de produção;
- maior facilidade para reuso e composição com outros serviços;
- abstração tecnológica, que reduz a dependência tecnológica entre clientes e fornecedores de serviços.
A Figura 1 apresenta um esquema deste modelo, onde cada um dos serviços, bem como dos clientes que os consomem, podem ser implementados em tecnologias distintas.
Para que times construam sistemas de software centrados em serviços, eles devem identificar e especificar serviços e realizar tarefas de modelagem. Este artigo descreve como a linguagem de modelagem UML pode apoiar desenvolvedores e projetistas nestas atividades.
O ciclo de vida de projetos SOA
Projetos SOA (Service Oriented Architecture) requerem, tipicamente, que os estágios da Figura 2 sejam executados.
A identificação de serviços tem por objetivo gerar uma lista de serviços candidatos a partir da análise de metas de negócio, processos de negócio e ativos já existentes na organização.
A especificação tem por objetivo selecionar, a partir da lista de serviços candidatos, os serviços que serão implementados e gerar uma especificação destes.
A especificação gera um contrato técnico que define as operações, mensagens e contratos de um serviço e as políticas a ele aplicadas. Finalmente, a realização tem por objetivo implementar e testar um serviço em conformidade com os padrões arquiteturais estabelecidos na organização. Exemplos destes padrões incluem o WS-* ou RS-*.
Normalmente, a etapa de identificação gera um lote de serviços candidatos que são então organizados em pequenos projetos. Cada projeto entrega poucos serviços através da especificação e realização de forma iterativa e incremental.
O trabalho resultante da especificação é organizado em um ou mais modelos de serviço, que podem ser documentos puramente textuais ou documentos mais leves que façam uso de desenhos e diagramas.
Observamos da nossa experiência em projetos que documentos textuais e longos não são lidos e geram grande desperdício de esforço e tempo dos projetistas. A UML, neste sentido, se mostra uma ferramenta eficaz para reduzir o tempo de documentação, pois utiliza a linguagem visual para melhorar a comunicação entre analistas de negócio, arquitetos, desenvolvedores e analistas de teste.
A evolução da modelagem em sistemas de TI
A modelagem de sistemas SOA é uma evolução natural dos mecanismos de modelagem de sistemas existentes na TI desde os anos 70. No modelo de maturidade OSIMM (Open Group Service Integration Maturity Model) os níveis de maturidade de modelagem são apresentados (ver Figura 3).
Modelagem de serviços e a linguagem UML
Conhecer as características de um serviço nos ajuda a modelá-lo com maior precisão. Estas características incluem:
- contratos de serviços padronizados: refere-se à definição da interface, ou conjunto de funcionalidades, de um determinada serviço. Este contrato forma a API pública de um serviço para uso por seus clientes;
- serviços fracamente acoplados: refere-se ao projeto e implementação apropriados de serviços de forma a minimizar dependências do ambiente que o cerca como, por exemplo, tecnologias e outros detalhes de implementação;
- operação autônoma em ambiente de produção: refere-se a garantir que cada serviço possa operar em produção independentemente de outros serviços;
- granularidade em nível de capacidades de negócio: refere-se a garantir que a API de um serviço possua um tamanho apropriado e orientado aos módulos de negócio de uma organização;
- composibilidade: refere-se a permitir que serviços possam ser compostos para formar serviços de granularidade mais alta.
A UML, através de diagramas de classes, fornece instrumentos precisos para expressar contratos e avaliar quantitativamente o acoplamento entre serviços. Os diagramas de componentes e implantação da UML permitem expressar a alocação de serviços a componentes e expressar, portanto, a sua operação autônoma.
Finalmente, diagramas de casos de uso permitem expressar as funcionalidades de negócio e apoiar na correta identificação da granularidade destes serviços.
A linguagem UML se tornou um padrão na indústria para a modelagem de sistemas e possui um conjunto padronizado de diagramas para a modelagem de interações, estruturas e comportamentos.
Uma das características da UML no seu desenho original é ...