El acoplamiento es un concepto teórico que tiene consecuencias fatales en el mundo real. Un programa con alto nivel de acoplamiento es un programa muy difícil (y en consecuencia) costoso de mantener, en consecuencia, un software con un acoplamiento elevado tiene una deuda técnica también bastante importante.
No tener en cuenta el acoplamiento cuando se desarrolla es caer en el reverso tenebroso de la fuerza, lo mismo resulta más sencillo no tener que pensar en eso cuando se codifica, además no requiere de personal más cualificado (hacer las cosas bien para luego hacer que las cosas sean más sencillas necesita de un esfuerzo y por tanto no es nada trivial). Como ya comenté en un artículo anterior, programar pensando en que no se va a tener que volver a tocar el código es vivir ajeno a la realidad de lo que es el desarrollo de software y el ciclo de vida de los sistemas de información. ¿Puede pasar que no se tenga que tocar? Sí, pero, ¿realmente lo puedes asegurar?, ¿qué te dice tu experiencia?. Cierto es que puedes pensar: «bueno, al final le tocará el marrón a otro», pero ¿y si al final te termina tocando a ti o a algún compañero?.
Un software fuertemente acoplado es una caja de sorpresas cuando te pones a realizar tareas de mantenimiento, lo más probable es que cuando tapes un agujero se abran dos. Al final se conseguirá sacar el mantenimiento adelante, pero con un esfuerzo, desgaste y coste bastante importante.
El uso de frameworks de desarrollo supone un primer paso para reducir el acoplamiento, pero el uso de este tipo de estrategias por sí mismas no aseguran nada, ya que aunque se «deleguen» determinadas tareas en ellos, al final las «tareas de bajo nivel» residen en el software que se implementa y que el software esté más o menos acoplado depende de las buenas prácticas, conocimientos y experiencias del programador.
A los modelos de clases no se les suele prestar demasiada atención ya que una vez obtenidos los requisitos, construido el modelo de datos y consensuada la interfaz parace que lo demás no tiene demasiada importancia, sin embargo, los modelos de clases sí que permiten ver (por lo menos a alto nivel) situaciones de acoplamiento y tomar decisiones antes de codificar que pueden reducir esta métrica. Evidentemente requiere un esfuerzo y hay que sopesar también en función de las características del sistema si se realiza ese estudio o no, habrá situaciones en las que puede merecer (y merecerá) la pena y otras en las que no (aplicaciones relativamente simples).