La Cohesión y Acoplamiento son dos conceptos muy relevantes a la hora de diseñar y desarrollar software.

Durante el artículo usaremos el concepto de módulo de software. Puedes leer el artículo para entender a qué nos vamos a referir.

Veamos en qué consisten la Cohesión y Acoplamiento

Acoplamiento

¿Qué es el acoplamiento?

El acoplamiento es la forma y nivel de interdependencia que tienen N módulos (clases, métodos, bibliotecas…) de software entre sí. Es decir, como de conectados están dos módulos de software entre sí.

Por poner un ejemplo, si un módulo A accede al dato de un módulo B, en este caso, podemos decir que A dependerá del valor B, por lo que están acoplados.

Si dos módulos de software son completamente independientes el uno del otro, decimos que están desacoplados. Esto suele implicar que tienen un alto grado de cohesión y suele ser señal de un un sistema bien estructurado.

¿Es posible desacoplamiento completo?

No, no es posible conseguir un desacoplamiento completo del sistema pero el objetivo del diseño del software debe ser reducir al máximo el acoplamiento entre los componentes del sistema.

En este punto lo ideal es eliminar el tipo de acoplamiento funcional o arquitectónico.

Ventajas

  • Permite tener una mejor mantenibilidad del sistema ahorrando en costes.
  • Mejora la reutilización de los módulos.
  • Impide que un error en un módulo se propague por el resto, además, hace más fácil localizar dicho error.
  • Reduce el impacto que tiene modificar distintos módulos cuando se actualiza uno de ellos.

Cohesión

Es un tipo de medición que trata de indicar la fuerza o el grado con la que unidades de software están unidas entre si.

Generalmente decimos que tiene «cohesión alta» o «cohesión baja».

Por regla general, es mejor optar por módulos de alta cohesión ya que van a dar como resultados módulos más sencillos, robustos, fiables, reutilizables y fáciles de mantener.

No confundamos con acoplamiento, ya que hace referencia a conceptos distintos.

Existen una serie de métricas de software inventadas por Larry Constantine como parte del diseño estructurado basado en ‘buenas prácticas de programación» como pueden ser los principios SOLID que reducen el tiempo de mantenimiento y modificación del código.

La cohesión es mayor si:

  • Las funcionalidades de una clase, invocadas a través de sus métodos, tienen muchas partes en común.
  • Los métodos de la clase realizan funciones o actividades pequeñas relacionadas, para evitar los «trozos grandes de grano»

Ventajas cohesión alta o «fuerte»

  • Reducción de complejidad. Clases más simples, menos operaciones.
  • Mejora el mantenimiento, debido a los cambios lógicos en el dominio afectan a un número menor de módulos.
  • Aumenta la reutilización del código debido a que al realizar acciones muy concretas, pueden ser fácilmente invocados desde distintas clases.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *