Definición de Cohesión (informática)
En informática, la cohesión es el grado en que los elementos dentro de una unidad de software (como módulos, subrutinas, clases o funciones) están relacionados y colaboran para lograr un objetivo o propósito específico. Una unidad de software con alta cohesión agrupa elementos que trabajan juntos de manera estrecha y lógica, facilitando la comprensión, el mantenimiento y la reutilización del código.
Por ejemplo, en una clase llamada GestorDeUsuarios, sería deseable que todos sus métodos estén orientados a gestionar usuarios (crear, modificar, eliminar, buscar), en lugar de incluir funcionalidades no relacionadas como el procesamiento de pagos o la gestión de inventarios.
Alta cohesión es un principio clave en el diseño de software de calidad. Favorece la claridad, la mantenibilidad y la facilidad para realizar pruebas, ya que cada unidad se encarga de una responsabilidad bien definida. Por el contrario, una cohesión baja implica que los elementos agrupados tienen poca relación entre sí, lo que genera confusión, dificulta la localización de errores y aumenta la complejidad del sistema.
El acoplamiento es otro concepto relacionado: mide la dependencia entre diferentes unidades de software. Se recomienda buscar alta cohesión y bajo acoplamiento para lograr sistemas modulares, flexibles y fáciles de modificar. Junto con la modularidad, la cohesión y el acoplamiento son fundamentales para mejorar la calidad y la escalabilidad del software, y para incrementar la reutilización del código.
Tipos de cohesión (criterios de agrupamiento)
- Cohesión funcional: Todos los elementos de la unidad colaboran para realizar una única función bien definida. Es el tipo de cohesión más deseable.
Ejemplo: Una función calcularPromedio() que solo agrupa operaciones necesarias para calcular el promedio de una lista de números. - Cohesión secuencial: Las tareas dentro de la unidad se ejecutan en secuencia, donde la salida de una función es la entrada de la siguiente.
Ejemplo: Un módulo que primero lee datos, luego los procesa y finalmente los almacena, pasando los resultados de una etapa a la siguiente. - Cohesión comunicacional o de datos: Las funciones de la unidad trabajan sobre el mismo conjunto de datos.
Ejemplo: Un módulo que contiene funciones para validar, transformar y exportar un mismo archivo de datos. - Cohesión procedimental: Las funciones están relacionadas porque se ejecutan siguiendo un procedimiento específico, aunque no necesariamente compartan datos.
Ejemplo: Un módulo que primero inicializa una conexión y luego ejecuta una consulta, donde ambas acciones forman parte de un procedimiento general. - Cohesión lógica: Los elementos agrupados realizan tareas de la misma naturaleza lógica, aunque no estén directamente relacionados.
Ejemplo: Una biblioteca que agrupa todas las funciones matemáticas, como suma, resta y multiplicación, aunque no dependan entre sí. - Cohesión temporal: Los elementos se agrupan porque deben ejecutarse en el mismo momento o periodo de tiempo.
Ejemplo: Un módulo que inicializa varias variables al arrancar el sistema, aunque no estén relacionadas por funcionalidad. - Cohesión casual o coincidente: Los elementos no tienen ninguna relación significativa y simplemente están agrupados por conveniencia o casualidad. Es la cohesión menos deseable y debe evitarse.
Ejemplo: Un módulo que contiene funciones de impresión, validación y conexión a base de datos sin relación entre sí.
Ventajas de la alta cohesión
- Facilita el mantenimiento: Los cambios suelen estar localizados y afectan a menos partes del sistema.
- Mejora la comprensión: Es más sencillo entender el propósito de cada módulo o clase.
- Promueve la reutilización: Las unidades bien definidas pueden reutilizarse en diferentes contextos.
- Reduce los errores: Menor probabilidad de efectos secundarios no deseados.
Desventajas de la baja cohesión
- Dificulta el mantenimiento: Los cambios pueden tener efectos colaterales impredecibles.
- Aumenta la complejidad: Es más difícil de entender y depurar el sistema.
- Reduce la reutilización: Las unidades mal definidas son menos reutilizables.
Comparación con conceptos relacionados
- Cohesión vs. Acoplamiento: La cohesión se refiere a la relación interna de los elementos de una unidad, mientras que el acoplamiento se refiere a la dependencia entre diferentes unidades de software. Idealmente, se busca alta cohesión y bajo acoplamiento.
- Cohesión vs. Modularidad: La modularidad es la división del sistema en partes independientes; la cohesión mide la calidad de esa división.
¿Por qué es importante la cohesión en el desarrollo de software?
La cohesión es esencial porque permite organizar el código de manera lógica y eficiente, lo que facilita su comprensión, mantenimiento y evolución. Un sistema con alta cohesión es más robusto, menos propenso a errores y más fácil de ampliar o modificar.
¿Cómo se puede mejorar la cohesión en un sistema existente?
Para mejorar la cohesión, es recomendable analizar y revisar el código, identificando módulos o clases con responsabilidades poco claras o múltiples. Se pueden subdividir unidades grandes en otras más pequeñas y especializadas, y reagrupar funciones de acuerdo a su propósito común. Documentar los cambios y realizar pruebas es fundamental para asegurar la integridad del sistema.
¿Existe algún caso en el que la cohesión no sea deseable?
En general, la alta cohesión siempre es deseable. Sin embargo, un exceso de cohesión puede derivar en unidades demasiado pequeñas o especializadas, lo que puede aumentar la cantidad de módulos y dificultar la gestión del sistema. El equilibrio entre cohesión y acoplamiento es clave para mantener la flexibilidad y escalabilidad del software.
Resumen: Cohesión
La cohesión en informática describe cuán estrechamente relacionados están los elementos de una unidad de software. Una alta cohesión es fundamental para lograr sistemas claros, mantenibles y reutilizables, y debe ser un objetivo central en el diseño y desarrollo de software de calidad.
Términos relacionados:
• Acoplamiento
• Modularidad
• Reutilización de código
Autor: Leandro Alegsa
Actualizado: 11-07-2025
¿Cómo citar este artículo?
Alegsa, Leandro. (2025). Definición de Cohesión. Recuperado de https://www.alegsa.com.ar/Dic/cohesion.php