Pessoal,Comecei a publicar em outro blog. O problema do blogspot e que e bloqueado na empresa onde trabalho, mas este novo endereco nao e:http://graccula.spaces.live.com/Ah! E quem quiser acessar do iPhone, o endereco e:http://graccula.mobile.spaces.live.com/Abracos,Renato Vamos falar um pouco desse assunto.E um assunto bem interessante e gerou uma baita confusao hoje la no escritorio. Nao vou entrar em detalhes sobre a confusao causada pois envolve questoes politicas e comerciais que nao tenho o menor interesse e acho que nao cabe nesse blog.Mas o interessante dessa questao e justamente a confusao que gera. O que e desacoplamento? Eu entendo como um tipo de isolamento entre camadas ou aspectos diferentes.Por exemplo, quando instanciamos um objeto para utilizar seus metodos e propriedades, estamos criando uma dependencia para aquele objeto. Se ele por algum motivo este objeto nao estiver presente no momento do desenvolvimento, o programa que depende deste objeto sequer compilara.Isso em um ambiente de desenvolvimento isolado nao causa muitos problemas, pois normalmente todos objetos estao a disposicao do desenvolvedor, ou ainda este os esta criando, entao essa equipe tem controle total sobre as dependencias do projeto.Mas em um outro cenario, como o que estou vivenciando na empresa onde trabalho, temos uma outra situacao. Duas equipes de empresas diferentes estao trabalhando em um mesmo projeto.Nao pense que ao ler este blog voce encontrara todas as respostas. Na verdade, eu nao tenho essas respostas, pois ainda estou fazendo as perguntas. A experiencia nos esta guiando para um rumo que nao esta dando certo, portanto, e a melhor forma de se obter as respostas.Quando as coisas vao bem, nao sabemos se esta dando certo por um ou por outro motivo, nao importa. Mas quando as coisas dao errado, procuramos de forma mais objetiva resolver esses problemas e com isso vamos achando as solucoes. E dessa forma temos certeza que sao as respostas certas, pois as perguntas comecam a surgir; e essas sim importam!O que acontece e que a outra equipe esta desenvolvendo a camada de interface, no caso, Web. Nos estamos desenvolvendo a camada de servicos.A confusao comecou pela decisao de passar a formula para desenvolver a camada de servicos para a outra equipe, que nao entendeu nem para que serve essa camada.Ou seja, nos estamos desenvolvendo essa camada de servicos e a outra equipe tambem. Depois a ideia era juntar os pedacos. Aproveitariamos a camada Web desenvolvida pela outra equipe, e a camada de servicos deles seria descartada e a nossa utilizada no lugar.Isso gerou uma baita confusao, pois a outra equipe desenvolveu a camada de servicos de forma errada e agora nos acusa de ter gerado muito acoplamento.Surgiu entao a duvida, como desacoplar o desenvolvimento das duas equipes? Eis a pergunta que realmente importa!Existem alguns niveis de desacoplamento. Um deles e gerar interfaces, em forma de contrato de todas as classes que compoem a camada de servicos. Depois passar essas interfaces em uma DLL separada para a outra equipe e eles saberiam exatamente como acessar os metodos necessarios para o desenvolvimento.Mas este nivel de desacoplamento nao seria suficiente, uma vez que apenas as interfaces, sem implementacao nao