A granularidade dos serviços é utilizada para mensurar a profundidade de abstração que foi aplicado. A granularidade pode ser dividida em duas partes, sendo: granularidade fina (fine-grained) e granularidade grossa (coarse-grained), onde granularidade fina determina que precisamos de muitos "grãos", enquanto na granularidade grossa, teremos poucos "grãos", bem maiores.
Com a granularidade fina, teremos serviços com poucas operações, mas dividiremos essas operações por vários serviços.
Já com a granularidade grossa, isso se inverte, ou seja, teremos poucos serviços, mas cada um deles conterá uma porção bem maior de operações.
Cada uma das técnicas tem suas vantagens e desvantagens, e ao meu ver, quando temos uma granularidade fina, temos pequenos "blocos" de funcionalidades bem específicas e muitas vezes independentes, e que ficam bem mais fáceis de serem atualizadas, distribuídas e gerenciadas, mas isso pode se tornar complexo demais para aqueles que consomem os serviços, já que terão que compor e sincronizar suas operações, para que atinja um determinado objetivo.
Por outro lado, a granularidade grossa pode tornar os serviços mais auto-suficientes, mas o problema disso é que cada serviço poderá, acidentalmente, fazer muito mais trabalho do que ele realmente deveria, e que muitas vezes precisará recorrer à outros serviços, para que, também, atinjam o seu objetivo, aumentando assim o acoplamento.
http://www.linhadecodigo.com.br/artigo/2599/granularidade-de-servicos.aspx#ixzz3OZiyYJEk
Analise das opções:
a) utilizar o protocolo HTTP como contrato formal, permitindo assim que qualquer aplicação cliente acesse os serviços da aplicação desenvolvidos por José. (Errado - WSDL tem informações contrato formal)
b) utilizar um repositório WSDL para disponibilizar contratos SOAP, aumentando a coesão e diminuindo o acoplamento do sistema. (Errado - O repositório UDDI para recuperar web services e suas principais partes são Registro e Descoberta )
c) implementar os serviços da aplicação utilizando padrões de projeto que permitam que um componente de software que implementa um determinado serviço seja utilizado em outro sistema. (Errado - SOA é independente de arquitetura tecnologica)
d) implementar as funcionalidades do sistema na forma de serviços, garantindo que estes mantenham um baixo acoplamento, uma alta coesão e sejam de uma granularidade grossa. (Correto - Principios básicos de SOA: baixo acoplamento e alta coesão e granulidade que pode ser fina ou grossa depende do desenho do serviço - http://www.linhadecodigo.com.br/artigo/2599/granularidade-de-servicos.aspx )
e) utilizar um mecanismo de autenticação e HTTPs para garantir a segurança da sua aplicação e para garantir o alto acoplamento entre cliente e provedor de serviços. (Errado - Principio básico de SOA é baixo acoplamento)