Acoplamento é sempre inversamente proporcional ao numero de camadas?

Tenho me perguntado isso já faz um tempo. Acoplamento é sempre inversamente proporcional ao numero de camadas?

Controler desacopla view de persistencia/negocio
VM desacopla sistema do SO
etc etc etc

Conhecem outros exemplos que comprovem ou destruam essa ideia?

Tambem estou curioso em saber!..rsrs

Eu acho que o número de camadas não tem nada a ver com o grau de acoplamento. Usar camadas não significa que necessariamente se está usando padrões de projeto, ou que os está utilizando da forma correta. Tanto pode acontecer de as camadas estarem fortemente acopladas entre sim, quanto pode ocorrer de os módulos dentro de cada camada terem acoplamento alto.

Ah, claro. Se está usando camadas já desacoplou um pouco, mas não acho que se possa firmar um relacionamento de proporcionalidade entre os conceitos. TI nem de longe é uma ciência exata.

Trabalhei em um projeto implementando MVC para Desktop e quando migramos para Web tivemos que fazer a camada View e refazer a camada de Controle, pois da forma que foi concebida ambas View-Controler tinham alto grau de acoplamento. Portanto, posso afirmar que esse pattern nao contribuiu para a migracao do projeto que tinhamos por questao do acoplamento!

Ate mais…

Mas veja bem Vini, no seu caso o uso do MVC mesmo que usado de uma maneira que não fosse a ideal o ajudou a migrar o sistema de Swing para a WEB sim. Pois conforme você disse, vocês tiveram que refazer as camadas de visão e de controle e preservaram a camada de modelo. Já imaginou se não usassem o MVC? Vocês provavelmente teriam de reescrever todo o sistema.

Dito isto tenho que concordar com a J-Chist (ela é menina, ok?) quando ela disse que usar as camadas já é um começo para desacoplar um sistema e não uma garantia de desacoplamento total.

Essa questão do acoplamento é complicada pois mesmo dentro de cada camada pode acontecer de as classes serem altamente acopladas mesmo que o acoplamento entre as camadas seja bem baixo. E esse fato derruba a “tese” de que o nível de acoplamento de uma aplicação é inversamente proporcional ao número de camadas.

Mas só para esquentar a discussão, já vi casos em que havia um MVC dentro de cada camada do MVC (MVC recursivo? rs). E isso ajudou bastante no reuso de cada módulo nas camadas do sistema.

[quote=Vini Fernandes] Trabalhei em um projeto implementando MVC para Desktop e quando migramos para Web tivemos que fazer a camada View e refazer a camada de Controle, pois da forma que foi concebida ambas View-Controler tinham alto grau de acoplamento. Portanto, posso afirmar que esse pattern nao contribuiu para a migracao do projeto que tinhamos por questao do acoplamento!

Ate mais…[/quote]
Vini, muito pelo contrário.
View e Controler são intimamente ligadas.
Para cara view [color=darkred]deve-se[/color] ter um controler particular.
O objetivo é deixar o model inalterado.
Lógico que isso é propenso a problemas quando a arquitetura provê responsabilidades demais para alguma (ou varias) dessas camadas, o que pode causar replicação de codigo desnecessária.

Oi Tchello, em conversa com um amigo chegamos a essa mesma conclusao…rsrs.

Ate