Sunteți pe pagina 1din 46

MODULARIDAD

Diseño de Sistemas de Información

Semana 3
TÉCNICAS DE DISEÑO

• Los objetivos de las técnicas de diseño software son


fundamentalmente:
– La descomposición modular del sistema
– Los diseños de los algoritmos y estructuras de datos
fundamentales que se deben usar en el sistema
• Primero veremos las características deseables de una
buena descomposición modular del sistema, y luego se
presentarán técnicas de diseño:
– Diseño funcional descendente
– Diseño orientado a objetos
– Diseño de datos
DESCOMPOSICIÓN MODULAR
• Los pasos a seguir son:
1. Identificar los módulos
2. Describir cada módulo
3. Describir las relaciones entre módulos
• Tipos de módulos:
1. Código fuente, en el lenguaje de programación usado
2. Tabla de datos, para datos de inicialización u otros
3. Configuración, se agrupa en un módulo toda la información de
configuración en el entorno de trabajo
4. Otros: ficheros de ayuda en línea, manuales, etc.
• Una descomposición modular debe poseer ciertas cualidades mínimas para
que se pueda considerar suficientemente válida
 Independencia fucional
 Acoplamiento
 Cohesión
 Comprensibilidad
 Adaptabilidad
Acoplamiento
Un bajo acoplamiento indica un sistema
bien particionado y puede obtenerse de tres
maneras:
• Eliminando relaciones innecesarias:
Por ejemplo, un módulo puede recibir
algunos datos, innecesarios para él,
porque debe enviarlos para un módulo
subordinado.
Acoplamiento
• Reduciendo el número de relaciones necesarias:
Cuanto menos conexiones existan entre módulos,
menor será la posibilidad del efecto en cadena (un error
en un módulo aparece como síntoma en otro)
• Debilitando la dependencia de las relaciones
necesarias: Ningún módulo se tiene que preocupar por
los detalles internos de implementación de cualquier
otro. Lo único que tiene que conocer un módulo debe
ser su función y las cuplas de entrada y salida (cajas
negras).
Generalmente el tipo de cohesión de un
módulo determina el nivel de
acoplamiento
Finalmente diremos que si bien en la práctica es difícil encontrar
módulos casualmente , cohesivos en su totalidad, es común que
tengan elementos casualmente cohesivos. Tal es el caso de
operaciones de inicialización y terminación que son puestas juntas en
un módulo superior.
Los elementos de un módulo están lógicamente asociados si
puede pensarse en ellos como pertenecientes a la misma clase
lógica de funciones, es decir aquellas que pueden pensarse como
juntas lógicamente.
Por ejemplo, se puede combinar en un
módulo simple todos los elementos de
procesamiento que caen en la clase de
"entradas", que abarca todas las
operaciones de entrada.
Podemos tener un módulo que lea desde
consola una tarjeta con parámetros de
control, registros con transacciones
erróneas de un archivo en cinta, registros
con transacciones válidas de otro archivo
en cinta, y los registros maestros anterior
de un que
La cohesión lógica es más fuerte archivo en disco. Este
la coincidente, módulo
debido a que
podría llamarse
que representa un mínimo de asociación entre"Lecturas",
el problemay yque
losagrupa
todas las
elementos del módulo. Sin embargo operaciones
podemos ver quedeun
entrada,
móduloes
lógicamente
lógicamente cohesivo no realiza una función cohesivo.
específica, sino que
abarca una serie de funciones.
La cohesión temporal es más fuerte que la cohesión lógica, ya que
implica un nivel de relación más: el factor tiempo. Sin embargo la
cohesión
Debido a que temporal aún es pobre en
dicho procesamiento debenivel de cohesión
o puede y acarrea
realizarse en el mismo
inconvenientes
período en el
de tiempo, los mantenimiento
elementos y modificación
asociados del sistema.
temporalmente pueden
combinarse en un único módulo que los ejecute a la misma vez.
Para decir que un módulo tiene solo cohesión procedural, los elementos
de procesamiento deben ser elementos de alguna iteración, decisión, o
secuencia, pero no deben estar vinculados con ningún principio asociativo
de orden superior.
Este nivel de cohesión comúnmente se tiene como resultado de derivar una
estructura modular a partir de modelos de procedimiento como ser diagramas de
flujo, o diagramas Nassi-Shneiderman.
En el diagrama
Decir de la figura
que un conjunto depodemos
elementos
observar que los elementos
de procesamiento de
están vinculados
procesamiento
por comunicación1, 2, ysignifica
3, estánque
asociados
todo
por comunicación sobre la corriente de
los elementos operan sobre el mismo
datos de entrada, en tanto que 2, 3, y 4 se
conjuntopor
vinculan delos
datos
datosdedeentrada
salida o de
salida.
Los diagramas de flujo de datos (DFD) son un medio objetivo para determinar si los
elementos en un módulo están asociados por comunicación.
Cohesión Comunicativa
La cohesión por comunicación es común en
aplicaciones comerciales.

Ejemplos típicos pueden ser:


– Un módulo que imprima o grabe un archivo de
transacciones
– Un módulo que reciba datos de diferentes fuentes, y
los transforme y ensamble en una línea de impresión.
Cohesión Secuencial
El siguiente nivel de cohesión en la escala es la
asociación secuencial.
– En ella, los datos de salida (resultados) de un
elemento de procesamiento sirven como datos de
entrada al siguiente elemento de procesamiento
– En términos de un diagrama de flujo de datos de un
problema, la cohesión secuencial combina una
cadena lineal de sucesivas transformaciones de
datos .Este es claramente un principio asociativo
relacionado con el dominio del problema
En un módulo completamente funcional, cada elemento de
procesamiento, es parte integral de, y esencial para, la
realización de una función simple.
Criterios para establecer el grado de
cohesión

Una técnica útil para determinar si un módulo está


acotado funcionalmente es escribir una frase que
describa la función (propósito) del módulo y luego
examinar dicha frase. Puede hacerse la siguiente prueba:
1. Si la frase resulta ser una sentencia compuesta, contiene una
coma, o contiene más de un verbo, probablemente el módulo
realiza más de una función; por tanto, probablemente tiene
vinculación secuencial o de comunicación.
2. Si la frase contiene palabras relativas al tiempo, tales como
"primero", "a continuación", "entonces", "después", "cuando",
"al comienzo", etc., entonces probablemente el módulo tiene
una vinculación secuencial o temporal.
Criterios para establecer el grado de
cohesión

3. Si el predicado de la frase no contiene un objeto específico


sencillo a continuación del verbo, probablemente el módulo
esté acotado lógicamente. Por ejemplo editar todos los datos
tiene una vinculación lógica; editar sentencia fuente puede
tener vinculación funcional.
4. Palabras tales como "inicializar", "limpiar", etc., implican
vinculación temporal.

Es importante notar que no es necesario determinar el nivel


preciso de cohesión. En su lugar, lo importante es intentar
conseguir una cohesión alta y saber reconocer la cohesión baja,
de forma que se pueda modificar el diseño del software para que
disponga de una mayor independencia funcional.
COMPARACIÓN DE NIVELES DE COHESIÓN
COMPARACIÓN DE NIVELES DE COHESIÓN
COMPARACIÓN DE NIVELES DE COHESIÓN
COMPARACIÓN DE NIVELES DE COHESIÓN
cuando desde un módulo se pueden cambiar
datos locales de otro
se emplea una zona
común de datos a la que
tienen acceso varios
módulos
la zona común es un dispositivo externo al que están
ligados los módulos, esto implica que un cambio en el
formato de datos afecta a todos estos módulos
En un intercambio de datos se realiza mediante una
referencia a la estructura completa de datos (vector,
pila, árbol, grafo, …)
viene dado por los datos que intercambian los
módulos. Es el mejor posible

S-ar putea să vă placă și