Acoplamiento de Módulos
En ingeniería de software, el acoplamiento es el grado de interdependencia entre módulos de software. Dos módulos que están fuertemente acoplados son fuertemente dependientes el uno del otro. Sin embargo, dos módulos que están débilmente acoplados no dependen el uno del otro. Los módulos no acoplados no tienen ninguna interdependencia entre ellos.
Los distintos tipos de técnicas de acoplamiento se muestran en la figura:
Un buen diseño es el que tiene un bajo acoplamiento. El acoplamiento se mide por el número de relaciones entre los módulos. Es decir, el acoplamiento aumenta a medida que el número de llamadas entre módulos aumenta o la cantidad de datos compartidos es grande. Así, se puede decir que un diseño con alto acoplamiento tendrá más errores.
Tipos de acoplamiento entre módulos
1. Sin Acoplamiento Directo: No hay acoplamiento directo entre M1 y M2.
En este caso, los módulos están subordinados a módulos diferentes. Por lo tanto, no hay acoplamiento directo.
2. Acoplamiento de datos: Cuando los datos de un módulo se pasan a otro módulo, esto se llama acoplamiento de datos.
3. Acoplamiento de sellos: Dos módulos están acoplados por sellos si se comunican utilizando elementos de datos compuestos como estructura, objetos, etc. Cuando el módulo pasa una estructura de datos no global o una estructura completa a otro módulo, se dice que están acoplados por sellos. Por ejemplo, pasar una variable de estructura en C o un objeto en lenguaje C++ a un módulo.
4. Control Coupling: El Acoplamiento de Control existe entre dos módulos si los datos de un módulo se utilizan para dirigir la estructura de la ejecución de instrucciones en otro.
5. Acoplamiento externo: El Acoplamiento Externo surge cuando dos módulos comparten un formato de datos, protocolos de comunicación o interfaz de dispositivo impuestos externamente. Esto está relacionado con la comunicación con herramientas y dispositivos externos.
6. Acoplamiento común: Dos módulos están acoplados en común si comparten información a través de algunos elementos de datos globales.
7. Acoplamiento de contenido: El Acoplamiento de Contenido existe entre dos módulos si comparten código, por ejemplo, una bifurcación de un módulo en otro módulo.
Cohesión de Módulos
En la programación informática, la cohesión define al grado de pertenencia de los elementos de un módulo. Así, la cohesión mide la fuerza de las relaciones entre las piezas de funcionalidad dentro de un módulo dado. Por ejemplo, en los sistemas de alta cohesión, la funcionalidad está fuertemente relacionada.
La cohesión es un tipo ordinal de medida y se describe generalmente como «alta cohesión» o «baja cohesión».
Tipos de Cohesión de Módulos
- Cohesión Funcional: Se dice que existe Cohesión Funcional si los diferentes elementos de un módulo, cooperan para lograr una única función.
- Cohesión Secuencial: Se dice que un módulo posee cohesión secuencial si los elementos de un módulo forman los componentes de la secuencia, donde la salida de un componente de la secuencia es la entrada del siguiente.
- Cohesión comunicacional: Se dice que un módulo tiene cohesión comunicacional, si todas las tareas del módulo hacen referencia o actualizan la misma estructura de datos, por ejemplo, el conjunto de funciones definidas sobre un array o una pila.
- Cohesión procedimental: Se dice que un módulo tiene cohesión procedimental si el conjunto de propósitos del módulo son todas las partes de un procedimiento en el que hay que llevar a cabo una secuencia particular de pasos para lograr un objetivo, por ejemplo, el algoritmo para decodificar un mensaje.
- Cohesión temporal: Cuando un módulo incluye funciones que están asociadas por el hecho de que todos los métodos deben ejecutarse en el mismo tiempo, se dice que el módulo exhibe cohesión temporal.
- Cohesión lógica: Se dice que un módulo es lógicamente cohesivo si todos los elementos del módulo realizan una operación similar. Por ejemplo, manejo de errores, entrada y salida de datos, etc.
- Cohesión coincidente: Se dice que un módulo tiene cohesión coincidente si realiza un conjunto de tareas que se asocian entre sí de forma muy débil, si es que lo hacen.
Diferencia entre Acoplamiento y Cohesión
Acoplamiento | Cohesión |
---|---|
El Acoplamiento también se denomina Vinculación entre Módulos. | La Cohesión también se denomina Vinculación Intra-Módulo. |
El acoplamiento muestra las relaciones entre los módulos. | La cohesión muestra la relación dentro del módulo. |
El acoplamiento muestra la independencia relativa entre los módulos. | La cohesión muestra la fuerza funcional relativa del módulo. |
Al crear, se debe buscar un bajo acoplamiento, es decir, la dependencia entre los módulos debe ser menor. | Mientras se crea se debe apuntar a una alta cohesión, es decir, un componente/módulo cohesivo se centra en una sola función (es decir, un pensamiento único) con poca interacción con otros módulos del sistema. |
En el acoplamiento, los módulos están vinculados a los otros módulos. | En la cohesión, el módulo se centra en una sola cosa. |