sábado, 21 de abril de 2012

DESCOMPOSICIÓN Y MODULARIDAD DEL SOFTWARE


Ingeniería de software es la producción de software con calidad. Calidad implica dos tipos de factores: internos y externos. Los factores externos son cualidades que son "detectadas" por los usuarios, por ejemplo: velocidad y facilidad de uso. Los factores internos son cualidades perceptibles por profesionales del área de la computación, por ejemplo: modularidad y legibilidad.

FACTORES EXTERNOS:

1.    Correctitud: Capacidad para realizar con exactitud las tareas definidas en las especificaciones.

2.    Robustez: Capacidad de reaccionar apropiadamente ante condiciones excepcionales.

3.    Extensibilidad: Facilidad de adaptar los productos de software a los cambios en la especificación.

4.    Reutilización: Capacidad de los elementos de software de servir para la construcción de muchas aplicaciones diferentes.

5.    Compatibilidad: Facilidad de combinar unos elementos de software con otros.

6.    Eficiencia: Capacidad para exigir la menor cantidad posible de recursos (tiempo de procesador, espacio de memoria, ancho de banda,             etc.).

7.    Portabilidad: Facilidad de transferir los productos de software a diferentes entornos de hardware y software.

8.    Facilidad de uso: Cubre la facilidad de instalación, de operación y de supervisión.

9.    Funcionalidad: Conjunto de posibilidades que proporciona un sistema.

El mantenimiento no se menciona como un factor, pero se estima que gran parte del costo del software se dedica al mismo.

A partir de los objetivos de extensibilidad y reutilización, dos de los factores de calidad más importantes, se desprende la necesidad de tener arquitecturas de sistemas flexibles, hechas con componentes autónomos de software. Esto se logra con una adecuada modularidad.


DESARROLLO:

¿Por qué descomponer un problema en partes?
Experimentalmente está comprobado que:

1.    Un problema complejo cuesta más de resolver que otro más sencillo.

2.    La complejidad de un problema global es mayor que la suma de las complejidades de cada una de sus partes por separado.

Según esto, merece la pena el esfuerzo de dividir un problema grande en subproblemas más pequeños. Ahora la cuestión es ¿cómo realizar la descomposición?; realizando un estudio descendente Top-Down que pueda llevar desde la concepción del problema global hasta identificar sus partes. Esta técnica se repite aplicando una estrategia llamada de refinamiento sucesivo, que consiste precisamente en volver a aplicar el estudio descendente Top-Down a cada subproblema una y otra vez hasta obtener subproblemas suficientemente pequeños.

¿Cuándo parar el refinamiento?

Un refinamiento excesivo podría dar lugar a un número tan grande de sub problemas que haría poco práctica la descomposición. Se tendrán en cuenta estos criterios para dejar de descomponer:

1.    Cuando no haya tareas bien definidas.

2.     Cuando la interfaz de un sub problema sea tan complicada como el propio sub problema.

No hay comentarios:

Publicar un comentario