Los podemos separar, aunque están íntimamente ligados, de hecho si nos esforzamos en aumentar mucho la cohesión de nuestro software, es muy posible que perjudiquemos el acoplamiento aumentándolo, y por el contrario si reducimos mucho el acoplamiento, se verá disminuida la cohesión:
Alta cohesión.
Nos dice que la información que almacena una clase debe de ser coherente y está en la mayor medida de lo posible relacionada con la clase.
- Cohesión Coincidente. El módulo realiza múltiples tareas, sin ninguna relación entre ellas.
- Cohesión Lógica. El módulo realiza múltiples tareas relacionadas, pero, en tiempo de ejecución, sólo una de ellas será llevada a cabo.
- Cohesión Temporal. Las tareas llevadas a cabo por un módulo tienen, como única relación el deber ser ejecutadas “al mismo tiempo”.
- Cohesión de Procedimiento. La única relación que guardan las tareas de un módulo es que corresponden a una secuencia de pasos propia del “producto”.
- Cohesión de Comunicación. Las tareas corresponden a una secuencia de pasos propia del “producto” y todas afectan a los mismos datos.
- Cohesión de Información. Las tareas llevadas a cabo por un módulo tienen su propio punto de arranque, su codificación independiente y trabajan sobre los mismos datos. El ejemplo típico: OBJETOS
- Cohesión Funcional. Cuando el módulo ejecuta una y sólo una tarea, teniendo un único objetivo a cumplir, se dice que tiene Cohesividad Funcional.
Bajo acoplamiento.
Es la idea de tener las clases lo menos ligadas entre sí que se pueda. De tal forma que en caso de producirse una modificación en alguna de ellas, se tenga la mínima repercusión posible en el resto de clases, potenciando la reutilización, y disminuyendo la dependencia entre las clases.
- Acoplamiento de Contenido. Cuando un módulo referencia directamente el contenido de otro módulo. (En lenguajes de alto nivel es muy raro)
- Acoplamiento Común. Cuando dos módulos acceden (y afectan) a un mismo valor global.
- Acoplamiento de Control. Cuando un módulo le envía a otro un elemento de control que determina la lógica de ejecución del mismo.
Fuente:
Ingenieria del Software, un enfoque práctico - Roger Pressman - Mc-Graw Hill
No hay comentarios.:
Publicar un comentario