RSS

ACOPLAMIENTO Y COHESIÓN

06 Sep

Todo desarrollador de software debe tener en cuenta que se obtienen tantos más beneficios cuanto más alta es la cohesión en una unidad de software y más bajo es el acoplamiento entre las unidades. Esta máxima se debe aplicar tanto en el diseño, la arquitectura y la codificación.

A menudo escuchamos problemas relacionados con dos partes de software que están fuertemente acopladas, y escuchamos términos como desacoplar.

Tanto el acoplamiento como la cohesión son términos un tanto abstractos y difíciles de medir. Hace algunos años, cuando sólo existía la programación imperativa, las cosas eran un tanto más concreta. En la actualidad, con varios paradigmas en marcha (programación orientada a objetos, a aspectos, extreme programming, etc.. ) y múltiples lenguajes y plataformas, los términos de acoplamiento y cohesión se hacen más difíciles de concretar, pero siguien teniendo aplicación, aunque su significado sea más abstracto.

Empezaremos por el acoplamiento. El término “acoplamiento” hace alusión al grado de dependencia que tienen dos unidades de software. Tiempo atrás se utilizaba la palabra “módulo” o “subrutina” en lugar de unidad de sofware. Hoy en día, en opinión del que escribe, la palabra “módulo” es completamente inadecuada y obsoleta. Mejor utilizaremos “unidad de software”, que es un concepto más amplio.

ACOPLAMIENTO

Bien… ¿Qué es una unidad de software? Pues simplemente cualquier pieza de software que realice algún cometido. Por ejemplo: una función, un método, una clase, una librería, una aplicación, un componente, etc…

I) Unidades completamente desacopladas

Ya lo hemos comentado, dos unidades están completamente desacopladas cuando hacen su trabajo de manera totalmente independiente. Esto nos permitiría coger una de ellas y utilizarla tal cual en un programa sin necesidad de llevarnos la otra.

Por ejemplo, estos dos métodos (en C#), están totalmente desacoplados. Ninguno de ellos necesita al otro para hacer su trabajo.

static int metodo1(int a, int b)

{

return a * b;

}

static int metodo2(int a, int b)

{

return a + b;

}

II) Acoplamiento normal

El acoplamiento más común que existe es aquel en el que una unidad de software necesita del trabajo que hace la otra.

Por ejemplo, estos dos métodos tienen un acoplamiento normal.

static int metodo1(int a, int b)

{

int c = metodo2(a, b); ;

return 2 * c;

}

static int metodo2(int a, int b)

{

return a + b;

}

III) Acoplamiento de datos.

Una unidad de software está acoplada a otra por los datos cuando ambas necesitan del mismo conjunto local de datos para funcionar.

Por ejemplo, observa estos dos métodos de la misma clase:

class Ejemplo

{

int compartido=0;

void metodo1(int a, int b)

{

compartido = a * b;

}

void metodo2(int a, int b)

{

compartido = a + b;

}

}

COHERENCIA DEL SOFTWARE (COHESIÓN)

La cohesión hace referencia a la forma en que agrupamos unidades de software (módulos, subrutinas…) en una unidad mayor. Por ejemplo: la forma en que se agrupan funciones en una biblioteca de funciones o la forma en que se agrupan métodos en una clase, etc.

El consenso general para una buena programación o un buen diseño es que la cohesión debe ser alta. Es decir, mientras más cohesionados estén los elementos agrupados, mejor.

El acoplamiento, junto con la modularidad, la cohesión y otros factores, permiten mejorar la programación y el diseño de sistemas informáticos y aplicaciones, y son cruciales en el incremento de la reutilización de los códigos.

 
Deja un comentario

Publicado por en 6 septiembre, 2010 en SISTEMAS DE INFORMACION II

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: