Professional Documents
Culture Documents
Captulo 4. Diseo
Diseo. Estructura
1.
2.
3.
El proceso de diseo.
Modelos de diseo.
Diseo estructurado.
Diagramas de estructura.
Estrategias de diseo:
4.
5.
Anlisis de transformaciones.
Anlisis de transacciones.
Acoplamiento.
Cohesin.
Diseo. Bibliografa
(Piattini et al. 96) (Piattini et al. 04) Captulo 8. Apartado 8.1.
(Molina et al. 97) A. Molina, P. Letelier, P.Snchez, J. Snchez.
Metodologa y Tecnologa de la Programacin. Servicio de
Publicaciones. UPV. 1997.
(Pressman 06) Captulo 9 (resumido) y aptdo. 10.6.
(Pressman 02) Captulo 13 y aptdos. 14.5 a 14.8.
(MAP 95) Ministerio de Administraciones Pblicas. Gua de Tcnicas
de Mtrica v.2.1. 1995.
(MAP 01) Gua de tcnicas y prcticas de Mtrica v.3.
http://www.csi.map.es/
(Page-Jones 88) M. Page-Jones. The Practical Guide to Structured
Systems Design. Yourdon Press. 1988.
1. El proceso de diseo
El proceso de aplicar distintas tcnicas y
principios con el propsito de definir un
dispositivo, un proceso o un sistema con
suficiente detalle como para permitir su
realizacin fsica.
Proceso iterativo a travs del cual se traducen
los requisitos en una representacin del
software.
La calidad slo se puede conseguir a travs de
un proceso de diseo.
Anlisis (Qu)
E-R
DFD
Organizacin
lgica
Enfoque
funcional
Arquitectura de
procesos
Enfoque de
datos
Modelo lgico de datos
Lenguaje comprensible
por el usuario
Diseo (Cmo)
Estructura detallada:
programas y mdulos
Esquema de BD
y ficheros
Cuadernos de
carga
Decisiones concretas:
organizacin y
rendimiento
Implementacin
Codificacin y
pruebas
Lenguaje comprensible
por la mquina
Diseo
Diseo arquitectnico. Estructura modular
del programa/aplicacin.
Diseo de interfaz.
2. Modelos de diseo
Anlisis
(Yourdon 93)
MODELO ESENCIAL
(LGICO)
Se le asignan
algunos
procesos
lgicos
Diseo
Lnea de
telecomunicaciones
MAINFRAME
MODELO DE
PROCESADORES
TAREA 1
CPU REMOTA
TAREA 2
MODELO DE TAREAS
Mdulo A
TAREA 3
Comunicacin entre tareas
(a travs del S.O.)
MODELO DE PROGRAMA
Mdulo B
Mdulo C
Mdulo D
Asignacin de procesos y
almacenes a procesadores
(Yourdon 93)
Asignado al
procesador 1
Ntese cmo este
almacn podr estar
replicado en cada
procesador
Asignado al
procesador 2
3. Diseo estructurado
Objetivos:
Desarrollar la estructura modular del programa
Definir las relaciones entre mdulos
Diseo estructurado
Se dispone de:
Las entradas que suministran al sistema las
entidades externas.
Las salidas aportadas por el sistema a dichas
entidades externas.
Las funciones descompuestas que se han de
realizar en ese sistema.
El esquema lgico de datos del sistema.
Se basa en:
abstraccin
modularidad
encapsulamiento y ocultamiento de informacin
Diagrama de estructura:
Mdulos
Conexiones
Comunicaciones
Diagrama de estructura.
Mdulo
Aquella parte de cdigo que se puede llamar (PageJones 88).
Representa un programa, subprograma, procedimiento,
funcin o rutina, dependiendo del lenguaje de
implementacin que se vaya a utilizar.
El diseo estructurado NO impone la restriccin de que
un mdulo tenga que ser compilado
independientemente.
Admite parmetros de llamada y retorna algn valor, si
es preciso.
Tamao ideal: 40-50 lneas
pero hay muchas opiniones!
DE. Representacin de
mdulos
MDULO
OBTENER
DATOS
CLIENTES
MDULO
PREDEFINIDO
IMPRIMIR
CHEQUE DE
PAGO
CONECTOR
1
Mdulo normal.
DE. Representacin de
mdulos (II)
En la notacin de Mtrica tpica tambin se
dispone de:
Almacenes de datos
NOMBRE
Dispositivos fsicos
DISPOSITIVO
Diagrama de estructura.
Conexin entre mdulos
La conexin entre mdulos se
representa mediante una lnea.
En la figura:
A llama a B.
B hace su funcin.
B retorna a A, inmediatamente
despus del lugar donde se
produjo la llamada de A a B.
CONEXIN
MDULO LLAMADO
Diagrama de estructura.
Conexin entre mdulos (II)
Estructura
repetitiva
A
Estructura
alternativa
Diagrama de estructura.
Conexin entre mdulos (III)
Ejemplo tpico de aplicacin interactiva:
un conjunto de opciones de men que se escogen
cclicamente por el usuario
Men login
Procesos para
agentes externos
Procesos para
departamentos
Procesos
Generales
Diagrama de estructura.
Comunicacin entre mdulos
Los signos para llevar
a cabo la
comunicacin entre
mdulos son:
Flags o controles
campo
campo correcto
EOR
Datos
EOR
Obtener campo
siguiente
campo
Validar campo
alfabtico
Flags o controles
Mediante los flags o controles, se puede
representar:
Paso de control entre mdulos: un mdulo comunica
a otro mdulo que ha terminado su proceso y
traspasa al mdulo llamado el control del sistema.
Comunicacin de que se ha producido un error en el
proceso.
Comunicacin de que se puede proceder a una
operacin concreta.
Representacin de
parmetros
Se pueden representar mediante tablas de interfaz
Mdulo
Parmetro
formal
Entrada
Salida
Uso
Significado
F(x,y)
No
Fecha nacimiento
No
Edad
Diagrama de estructura.
Ejemplo (Piattini et al. 96)
Diagrama de estructura.
Ejemplo (II) (Molina et al. 97)
ENTERO
VLIDO
FIN DE
FICHERO
CONSEGUIR
ENTERO
VLIDO
EL ENTERO
ES VLIDO
ENTERO
FIN DE
FICHERO
ENTERO
LEER ENTERO
DE FICHERO
VALIDAR
ENTERO
...
if VALIDAR_ENTERO( entero ) then
...
...
Diagrama de estructura.
Ejemplo (III) (Molina et al. 97)
EMISIN CHEQUES
DE PAGO
NMERO EMPLEADO
NOMBRE EMPLEADO
REGISTRO PAGO
PAGO NETO JORNALERO
FIN REGISTROS
IMPORTE PAGO
OBTENER
REGISTRO PAGO
CALCULAR PAGO
NETO JORNALEROS
CALCULAR PAGO
NETO EMPLEADOS
IMPRIMIR
CHEQUE PAGO
DEDUCCIONES NORMALES
RETRIBUCIN DIARIA
SUELDO BASE
PAGO BRUTO EMPLEADO
COMPLEMENTOS
JORNADAS TRABAJADAS
IRPF
IRPF
CALCULAR PAGO
BRUTO JORNALEROS
CALCULAR
DEDUCCIONES
NORMALES
CALCULAR PAGO
BRUTO EMPLEADOS
Diagrama de estructura.
Ejemplo (III) (Molina et al. 97)
program EMISION_CHEQUES ;
type
var
importe : real ;
importe_pago_jorn, importe_pago_empl : real ;
registro_pago : treg_pago ;
registro_empleado : treg_empleado ;
registro_jornalero : treg_jornalero ;
fin_registros : boolean ;
numero_empleado : integer ;
nombre_empleado : string ;
begin
OBTENER_REGISTRO_PAGO (registro_pago, fin_registros) ;
...
importe_pago_jorn := CALCULAR_NETO_JORN (registro_jornalero) ;
...
importe_pago_empl := CALCULAR_NETO_EMPL (registro_empleado) ;
...
IMPRIMIR_CHEQUE_PAGO( numero_empleado, nombre_empleado, importe) ;
...
end.
Mtodos para la
especificacin de mdulos
Interfaz-funcin (mdulo, entradas, salidas,
funcin).
Pseudo-cdigo.
Ms preciso que el usado en anlisis
Deja cierto grado de libertad al programador
No trata aspectos de eficiencia, a menos que estn
directamente relacionados con requisitos
Permite verificar la calidad del diseo
Herramientas complementarias:
Diagramas de flujo
Nassi-Schneiderman
Tablas y rboles de decisin
Estrategias de diseo
Pasos generales a seguir para obtener un buen
diseo a partir de un DFD de procesos primitivos
A veces hay que refinar el DFD de partida
Dos estrategias:
Anlisis de transformaciones
Anlisis de transacciones
Estrategias de diseo.
Pasos a seguir
Revisar el modelo fundamental del
sistema
DFD procesos primitivos
no hace falta crear el DFD de procesos
primitivos
se aaden procesos, si hace falta
recomendado, como mnimo, tener 3 niveles de
profundidad
Estrategias de diseo.
Pasos a seguir (II)
Segn sea de transformacin o
transaccin:
a) Aislar el centro de la transformacin,
especificando los lmites del flujo de llegada
y de salida
...o bien...
b) Identificar el centro de la transaccin y las
caractersticas del flujo de cada camino de
accin.
Consejo: indica expresamente los elementos
anteriores!
Estrategias de diseo.
Pasos a seguir (III)
Realizar el primer corte del diagrama de
estructuras.
Realizar el segundo nivel de factorizacin.
Refinar la estructura del programa.
Asegurarse del trabajo realizado por el
diseo obtenido.
Anlisis de transformacin
(Piattini et al. 04)
Anlisis de transformacin.
Primer corte del DE (Piattini et al. 04)
Anlisis de transformacin.
Segundo nivel de factorizacin
Anlisis de transaccin
(Piattini et al. 04)
Anlisis de transaccin.
Primer nivel de factorizacin
Anlisis de transaccin.
Segundo nivel de factorizacin
Anlisis de transformacin.
Ejemplo
Anlisis de transformacin.
Ejemplo (II) (MAP 95)
Un planteamiento para discutir:
Anlisis de transacciones.
Ejemplo
(Gua de tcnicas de Mtrica 2.1, p.148)
Anlisis de transacciones.
Ejemplo (II) (MAP 95)
Un planteamiento
para discutir:
de cara a la reutilizacin, es
bueno que Actualizar archivo R
(S, T) haga uso de imprimir
modificaciones?
Centros de transaccin
implcitos
Normalmente el esquema de transaccin
no es tan claro:
el proceso de transaccin no aparece
explcitamente en el DFD
Solucin: examinar el diagrama de
contexto y la lista de eventos para
determinar los tipos de transacciones en el
sistema
Centros de transaccin
implcitos (II)
P
Realizar venta
datos-venta
DPTO. SERVICIO A
CLIENTES
P
datos-devolucin
Realizar devolucin
...
P
datos-pago
Admitir pago
Estrategia de diseo.
Pasos a seguir (IV) (Molina et al. 97) p.169
Anlisis de transacciones
Encontrar las transacciones en el DFD
Anlisis de transformaciones
DE para cada transaccin
Anlisis de transacciones
Componer los DE en uno solo, usando un
centro de transacciones
DE para un men
4. Mtricas de calidad
estructural
Mayor calidad estructural
mantenimiento ms fcil
Extensibilidad ++
Reutilizacin ++
Dos mtricas:
Acoplamiento
Cohesin
Acoplamiento
Grado de interdependencia entre
mdulos.
Depende de la forma de interactuar entre los mdulos:
p.ej. n / tipo de parmetros que se intercambian.
Objetivo: minimizar el acoplamiento (CAJA NEGRA).
modificabilidad++, comprensin++, reutilizacin++
Complejidad de la interfaz
Acoplamiento Complejidad de la
interfaz
P.ej. (Molina et al. 97)
1.
2.
3.
4.
5.
6.
CALL
CALL
CALL
CALL
CALL
CALL
LONGITUD(
LONGITUD(
LONGITUD(
LONGITUD(
LONGITUD(
LONGITUD.
Complejidad de la interfaz
(II)
Depende de:
Cantidad de informacin que debe
comprenderse (como n parmetros)
Accesibilidad a esa informacin
Indireccin complejidad++
Informacin local complejidad- Informacin en forma estndar complejidad- Si el parmetro intenta controlar la lgica del mdulo
que lo recibe complejidad++
Niveles de acoplamiento
Stevens, Myers y Constantine 74
Acoplamiento Normal
De datos
Por estampado
De control
Acoplamiento comn
Acoplamiento por
contenido
MEJOR (- Acopl.)
Lmite de
aceptacin
PEOR (+ Acopl.)
De datos:
se establece una comunicacin bsica por medio de
elementos de datos
De estampado:
se pasan datos con estructura de registro
De control:
se comunican con flags de control
Acoplamiento normal de
datos
No genera problemas.
Es el acoplamiento deseable
en diseo estructurado
Slo debe haber parmetros
con sentido
En la medida de lo posible,
minimizar el nmero de
parmetros
DNI cli
cli
Leer Cliente
Acoplamiento normal de
control
Deseable slo si los flags de control son
descriptivos
campo alfabtico correcto
EOR
campo
campo correcto
EOR
Obtener campo
siguiente
campo
Validar campo
alfabtico
Acoplamiento normal de
control (II)
No es deseable si el control tiene
sentido descendente:
Un mdulo controla a otro y
no son realmente
independientes
El mdulo subordinado tiene
poca cohesin
Flag de selecc
reg trans
reg maestro
Flag de selecc:
1.
Obtiene RT
2.
Obtiene RM
3.
Obtiene RT y RM
Acoplamiento normal de
control (III)
Peor es si hay inversin de autoridad
(Molina et al. 97) p.66
reg
otro reg
Encontrar palabras
...
Datos vagabundos
Deben evitarse tambin
los datos vagabundos
(que a veces estn
asociados al acoplamiento
normal)
Posibles soluciones:
a) Reorganizar el
diagrama
b) Introducir variables
globales
Cohesin
Medida de la relacin funcional entre los
elementos de un mdulo.
Un mdulo coherente slo debe hacer una cosa.
Un mdulo coherente ejecuta una tarea bien definida en
un programa y requiere poca interaccin con otros
procedimientos que se ejecutan en otras partes del
programa.
Objetivo: mdulos con alta cohesin.
La escala de cohesin no es lineal:
una cohesin baja es mucho peor que una de grado
medio,
una de grado medio es casi tan buena como una alta.
Cohesin y acoplamiento
Son criterios inversamente relacionados:
AULAS
APARCAMIENTO
COCINAS
COMEDOR
COMEDOR
APARCAMIENTO
COCINAS
AULAS
Niveles de cohesin
Stevens, Myers y Constantine 74
Funcional
Mayor cohesin
Secuencial
Comunicacional
Procedural
Temporal
Lmite de
Lgica
aceptacin
Coincidental
Peor cohesin
(CAJA NEGRA)
(CAJA GRIS)
(CAJA
TRANSPARENTE)
Secuencial:
Comunicacional:
Procedural:
Temporal:
Lgica:
Coincidental o casual:
significativas entre ellas.
Determinacin de la
cohesin de un mdulo
Realiza el mdulo una sola
funcin?
NO
POR DATOS
Cmo estn
relacionadas las
actividades dentro
del mdulo?
Es importante
la secuencia?
POR FLUJO DE
CONTROL
Es importante
la secuencia?
NINGUNA DE
LAS DOS
1. FUNCIONAL.
S
NO
S
NO
S
2. SECUENCIAL.
3. COMUNICACIONAL
4. PROCEDURAL.
5. TEMPORAL.
6. LGICA.
NO 7. CASUAL.
5. Heursticas de diseo
estructural
IMPORTANTE: Los mdulos superiores deben coordinar,
y los inferiores realizar las tareas.
Reducir el n de parmetros que intercambian los
mdulos tanto como sea posible.
Nunca pasar registros que contengan muchos campos
cuando en realidad el mdulo slo necesita algunos.
No agrupar parmetros sin relacin en un registro.
Evitar que un mdulo hijo d rdenes al padre.
En la medida de lo posible, no usar variables globales.
Se puede parar la descomposicin cuando la interfaz con
un mdulo sea tan complicada como el mdulo mismo.
Heursticas de diseo
estructural
Debe evitarse la situacin en que un mdulo llama a
muchos otros (puede ser difcil de entender).
Normalmente sucede cuando no se tiene en cuenta los niveles
intermedios
Solucin: combinar funciones subordinadas en una sola
Excepcin: cuando el mdulo es un centro de transacciones
Heursticas de diseo
estructural
(Molina et al. 97) cap. 6
un sntoma?
Heursticas de diseo
estructural (II)
LGICO
FSICO
Lgico
...
Heursticas de diseo
estructural (III)
Heursticas de diseo
estructural (IV)
Heursticas de diseo
estructural (V)
Informacin
de los errores:
Qu mdulo
llama al mdulo
que escribe
mensajes de
error?
Heursticas de diseo
estructural (VI)
Solucin vlida:
Dnde se pone el
texto de los
mensajes de error?
Diseminados por el
sistema
Dentro de un nico
mdulo