Um das principais qualidades de um serviço de negócio deve ser o baixo acoplamento em relação a outros serviços. Este é um das mais importante características de SOA e que deve ser buscada na especificação e desenvolvimento dos serviços de negócio.
Apesar de parecerem novos, na realidade, os conceitos de acoplamento ("coupling") e coesão ("cohesion") aplicados na Ciência da Computação são bastante antigos. Os primeiros a formalizarem tais conceitos foram Edward Yourdon e Larry Constantine em seu clássico e seminal livro "Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design" de 1977.
No glossário de termos do livro Yourdon e Constantine conceituam coesão ("cohesion") como: "The degree of functional relatedness of processing elements within a single module", ou o grau de conexão funcional de elementos de processamento no interior de um módulo. Já acoplamento ("coupling") é definido como segue: "a measure of the strength of interconnection between one module and another" ou uma medida da força de interconexão entre um módulo e outro.
As noções de acoplamento e coesão estão intimamente relacionadas. Um módulo com alto grau de coesão possui um baixo grau de acoplamento e vice-versa. Um dos indicativos de bom desenho de um programa é a alta coesão de suas rotinas e o baixo acoplamento entre as rotinas. Programas com estas características tendem a ter um menor custo para manutenção, evolução, etc. Nos capítulos 6 e 7, Constantine e Yourdon descrevem métricas para a classificação dos graus de acoplamento e coesão.
Estes conceitos são aplicáveis universalmente em quaisquer ambientes computacionais. Uma classe de um programa orientado a objetos é justamente um pedaço de código com alto nível de coesão e baixo nível de acoplamento em relação a outras classes.
Em SOA, a diferença está, mais uma vez, no nível de abstração onde tais conceitos são usados. Enquanto o contexto de discussão de Yourdon e Constantine são subrotinas e módulos de um programa, SOA emprega estas mesmas noções entre sistemas. É claro que, se baixo acoplamento e alta coesão são objetivos a serem perseguidos em programas, em SOA esta importância aumenta sobremaneira em relação aos Serviços de Negócio. Basta lembrar que em SOA o ponto de discussão não é mais em relação a subrotinas, módulos, componentes ou classes mas sim entre sistemas corporativos de uma companhia. Alguns Serviços de Negócio se apoiarão no sistema ERP, outros terão como base aplicações em "mainframe", etc.
Como conclusão, não é exagero dizer que a implementação de Arquitetura de Serviços consiste no conjunto de todas as melhores práticas e conceitos para o desenvolvimento de aplicações acumulados nos últimos 40 anos. Coesão e acoplamento são somente alguns destes conceitos.
Nenhum comentário:
Postar um comentário