capitulo04

74
Fundamentos de Ingeniería del Software Capítulo 4. Diseño

Upload: carlos-saenz-lazo

Post on 25-Sep-2015

212 views

Category:

Documents


0 download

DESCRIPTION

ApuntesDiagramaEstructura

TRANSCRIPT

  • Fundamentos de

    Ingeniera del Software

    Captulo 4. Diseo

  • Hay dos formas de realizar un diseo: una es hacerlo tan simple que obviamente no haya deficiencias; la otra es hacerlo tan complicado que no haya deficiencias complicado que no haya deficiencias obvias

    C.A.R. Hoare

  • Diseo. Estructura

    1. El proceso de diseo.2. Modelos de diseo.3. Diseo estructurado.

    Diagramas de estructura. Diagramas de estructura. Estrategias de diseo:

    Anlisis de transformaciones. Anlisis de transacciones.

    4. Mtricas de calidad estructural. Acoplamiento. Cohesin.

    5. Heursticas de diseo estructural.

  • 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 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.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.

  • E-R

    ERS

    DFD

    Anlisis (Qu)Lenguaje comprensible por el usuario

    Diseo de alto nivel (arquitectnico)

    Organizacin lgicaEnfoque de

    datos

    Enfoque funcional

    El proceso de diseo (II)

    Modelo lgico de datos

    Modelo fsico de datos

    Arquitectura de procesos

    Estructura detallada: programas y mdulos

    Esquema de BD y ficheros

    Cuadernos de carga

    Codificacin y pruebas

    Diseo de bajo nivel (detallado)

    Diseo (Cmo)

    Decisiones concretas: organizacin y rendimiento

    ImplementacinLenguaje comprensible por la mquina(Piattini et al. 04)

    datos

  • El proceso de diseo (III)

    Cada modelo se asienta en el anterior:Diseo de datos. Transforma el modelo del dominio de la informacin del anlisis en las estructuras de datos necesarias para la implementacin.

    Diseo arquitectnico. Diseo arquitectnico. Estructura modular del programa/aplicacin.

    Diseo de interfaz. Interfaces del sw. con otros sistemas y con los usuarios.

    Diseo procedimental. Descripcin procedimental de los componentes del sw.

  • 2. Modelos de diseo (Yourdon 93)MODELO ESENCIAL

    (LGICO)

    Se le asignan algunos procesos

    En la ltima etapa del anlisis se ha establecido el lmite de automatizacin del

    Anlisis

    Comunicacin entre tareas (a travs del S.O.)

    Se le asignan algunos almacenes

    MODELO DE PROGRAMA

    MAINFRAME

    CPU REMOTA

    TAREA 1 TAREA 2 TAREA 3

    Mdulo A

    Mdulo B Mdulo C Mdulo D

    MODELO DE PROCESADORES

    MODELO DE TAREAS

    Lnea de telecomunicaciones

    procesos lgicos

    de automatizacin del sistema

    Diseo

  • Asignacin de procesos y

    almacenes a procesadores (Yourdon 93)

    Asignado al procesador 1

    Asignado al procesador 2

    Ntese cmo este almacn podr estar replicado en cada procesador

  • 3. Diseo estructurado

    Objetivos: Desarrollar la estructura modular del programaDefinir las relaciones entre mdulos

    Tcnica ppal.: Diagrama de Estructura Pseudocdigo Pseudocdigo rboles de decisin

    Documentacin de partida: DFDs Estrategias de diseo:

    Anlisis de transformaciones Anlisis de transacciones

  • 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.

  • Diseo estructurado (II)

    Tareas a realizar:Determinar qu mdulos implantarn los procesos terminales (primitivos) obtenidos en el anlisis.

    Organizar la estructura de estos mdulos y definir las conexiones entre los mismos.

    Organizar la estructura de estos mdulos y definir las conexiones entre los mismos.

    Describir el pseudocdigo para cada mdulo. Se basa en:

    abstraccin modularidad encapsulamiento y ocultamiento de informacin

    Aade un nivel de abstraccin a la programacin estructurada.

  • Diagrama de estructura (Diagrama de estructura de cuadros de Constantine)

    Diseo arquitectnico del sistema: diagrama de mdulos funcionalesIdentifica qu mdulos se necesitan, as como sus inputs/outputs (caja negra)sus inputs/outputs (caja negra)

    Refleja la comunicacin de datos y control y la jerarqua entre mdulos

    Diagrama de estructura:MdulosConexionesComunicaciones

  • Diagrama de estructura.

    Mdulo

    Aquella parte de cdigo que se puede llamar (Page-Jones 88).

    Representa un programa, subprograma, procedimiento, funcin o rutina, dependiendo del lenguaje de implementacin que se vaya a utilizar. 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!

    Se representa en el diagrama mediante un rectngulo.

  • DE. Representacin de

    mdulos

    OBTENER DATOS

    CLIENTES

    MDULO

    MDULO

    Mdulo normal.

    IMPRIMIR CHEQUE DE

    PAGO

    MDULO PREDEFINIDO

    1

    CONECTOR

    Un mdulo predefinido est disponible en la biblioteca del sistema o de la propia aplicacin (a veces, puede ser tambin un mdulo de un sistema operativo o de un SGBD), y por tanto, no es necesario codificarlo.

    Para no perder la referencia, el diagrama de estructura debe dibujarse en una hoja tamao A4. Si no cabe (bien), se deben explosionar los elementos (como en System Architect) o poner conectores.

  • DE. Representacin de

    mdulos (II)

    En la notacin de Mtrica tpica tambin se dispone de:

    Almacenes de datosAlmacenes de datos

    Dispositivos fsicos

    NOMBRE

    DISPOSITIVO

    mdulos que representan dnde van a estar fsicamente los datos (tablas, ficheros)

    dispositivos (de cualquier tipo) por donde se puede recibir o enviar informacin que necesite el sistema.

  • 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 CONEXIN

    MDULO QUE LLAMAA

    B retorna a A, inmediatamente despus del lugar donde se produjo la llamada de A a B.

    El diagrama no dice nada sobre el cdigo de A ni sobre el de B, lo nico que sabe es que en A existe una sentencia del tipo CALL B.

    El diagrama no dice cuntas veces puede A invocar a B. Slo se dice que A es capaz de invocar a B. Tal vez no realice ninguna invocacin.

    CONEXIN

    MDULO LLAMADOB

    Tampoco muestra detalles internos de los mdulos como cdigo, algoritmos o datos.

  • Diagrama de estructura.

    Conexin entre mdulos (II)

    AEstructura repetitiva

    Estructura alternativa

    CB

    Orden de ejecucin de los mdulos: de izquierda a derecha y de arriba abajo (Piattini et al. 04)

    Segn (Molina et al. 97) el orden no importa:El diagrama de estructura no representa aspectos procedurales del

    sistema como las secuencias, alternativas o bucles

  • Diagrama de estructura.

    Conexin entre mdulos (III)

    Men login

    Ejemplo tpico de aplicacin interactiva: un conjunto de opciones de men que se escogen

    cclicamente por el usuario

    Procesos para departamentos

    Procesos para agentes externos

    Procesos Generales

  • Diagrama de estructura.

    Comunicacin entre mdulos

    Los signos para llevar a cabo la comunicacin entre mdulos son:

    Obtener datos clientes

    EORcampo alfabtico correcto

    mdulos son:

    Flags o controles

    DatosValidar campo

    alfabticoObtener campo

    siguiente

    campo

    campo correcto

    EOR

    campo

  • 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 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.

  • Diferencias entre datos y flags

    Los datos se procesan.

    Los datos son la informacin compartida por los mdulos.

    La posicin de la flecha (hacia arriba o hacia abajo) indica el sentido de la comunicacin.

    Los controles slo sirven para comunicar condiciones entre los mdulos.

    Los controles indican al mdulo que llama la terminacin EOF, o un error del mdulo llamado, y deben ir siempre en sentido ascendente.

    En sentido descendente dan lugar a sentido de la comunicacin. Los datos tienen importancia

    para el mundo exterior, estn relacionados con el problema.

    En sentido descendente dan lugar a un acoplamiento de control no deseable y la cohesin se ve comprometida.

    Se pretende que los mdulos de arriba coordinen, los de abajo realicen el trabajo especfico y sealen condiciones anormales o de terminacin.

    Los flags tienen importancia en la comunicacin de informacin en el interior; son los que sincronizan la operativa de los mdulos.

    Los flags no se suelen mostrar en los diagramas (Piattini et al. 04)

  • Representacin de

    parmetros

    Se pueden representar mediante tablas de interfaz (Piattini et al. 04)

    Mdulo Parmetro formal

    Entrada Salida Uso Significado

    F(x,y) x S No P Fecha nacimientoF(x,y) x S No P Fecha nacimiento

    y No S M Edad

    ...donde Uso es denotado por:P Procesado: a = b + 2M Modificado: a = 3 + b T Transferido por el mdulo llamado a otro mdulo que ste llama, sin modificar su valor

    C Es usado como una variable de ControlI El parmetro es transferido a otro mdulo y es modificado en este segundo mdulo

  • Diagrama de estructura.

    Ejemplo (Piattini et al. 96)

  • Diagrama de estructura.

    Ejemplo (II) (Molina et al. 97)

    CONSEGUIR ENTERO VLIDO

    ENTERO

    ENTERO VLIDO FIN DE FICHERO

    EL ENTERO ES VLIDO CONSEGUIR ENTERO VLIDO:

    FIN DE FICHERO

    LEER ENTERO DE FICHERO

    VALIDAR ENTERO

    ENTERO

    ES VLIDO CONSEGUIR ENTERO VLIDO:...

    LEER_ENTERO( fin_fichero, entero ) ;...

    if VALIDAR_ENTERO( entero ) then ...

    ...

  • Diagrama de estructura.

    Ejemplo (III) (Molina et al. 97)

    EMISIN CHEQUESDE PAGO

    IMPORTE PAGO

    NOMBRE EMPLEADO

    NMERO EMPLEADO

    REGISTRO PAGO JORNALEROFIN REGISTROSPAGO NETO EMPLEADO

    PAGO NETO JORNALEROREGISTRO PAGO

    CALCULAR PAGOBRUTO JORNALEROS

    CALCULARDEDUCCIONES

    NORMALES

    CALCULAR PAGOBRUTO EMPLEADOS

    IMPRIMIRCHEQUE PAGO

    OBTENERREGISTRO PAGO

    CALCULAR PAGONETO EMPLEADOS

    CALCULAR PAGONETO JORNALEROS

    JORNADAS TRABAJADAS

    RETRIBUCIN DIARIA

    IRPFIRPF

    COMPLEMENTOS

    SUELDO BASE

    REGISTRO PAGO EMPLEADO

    PAGO BRUTO EMPLEADO

    DEDUCCIONES NORMALES

    PAGO BRUTO JORNALERO

  • Diagrama de estructura.

    Ejemplo (III) (Molina et al. 97)

    program EMISION_CHEQUES ;type

    treg_pago : RECORD...END ;treg_jornalero : RECORD...END ;treg_empleado : RECORD...END ;

    varimporte : real ;importe_pago_jorn, importe_pago_empl : real ;registro_pago : treg_pago ;

    procedure OBTENER_REG_PAGO ( var rp : treg_pago; var fin_reg : boolean ) ;function CALCULAR_NETO_JORN ( rj : treg_jornalero ) : real ;function CALCULAR_NETO_EMPL ( re : treg_empleado ) : real ;function CALCULAR_BRUTO_JORN ( ret_diaria, jorn_trab : real ) : real ;function CALCULAR_BRUTO_EMPL ( sueldo_base, complem : real ) : real ;function CALCULAR_DEDUCCIONES ( pago_bruto, irpf : real ) : real ;procedure IMPRIMIR_CHEQUE_PAGO( num_emp : integer ; nom_emp : string; importe : real ) ;registro_pago : treg_pago ;

    registro_empleado : treg_empleado ;registro_jornalero : treg_jornalero ;fin_registros : boolean ;numero_empleado : integer ;nombre_empleado : string ;

    beginOBTENER_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.

    importe : real ) ;

  • Mtodos para la

    especificacin de mdulos

    Interfaz-funcin (mdulo, entradas, salidas, funcin).

    Pseudo-cdigo. Ms preciso que el usado en anlisis 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: Dos estrategias:

    Anlisis de transformaciones Anlisis de transacciones

    Importante: disear el DE de forma que: Los mdulos de nivel superior toman las decisiones de ejecucin (coordinan)

    Los de nivel inferior realizan la mayor parte del trabajo de entrada, de clculo y de salida

  • Estrategias de diseo.

    Pasos a seguir

    Revisar el modelo fundamental del sistema DFD procesos primitivos no hace falta crear el DFD de procesos no hace falta crear el DFD de procesos primitivos se aaden procesos, si hace falta recomendado, como mnimo, tener 3 niveles de profundidad

    Determinar si el DFD tiene caractersticas de transformacin o de transaccinindica expresamente la caracterstica del DFD!

  • 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 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.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

    Finalmente, es preciso optimizar!(Piattini et al. 04)

  • Anlisis de transaccin(Piattini et al. 04)

    Son transacciones (caminos) independientes.

  • Anlisis de transaccin. Primer nivel de factorizacin

    (Piattini et al. 04)

  • Anlisis de transaccin. Segundo nivel de factorizacin

    Finalmente, es preciso optimizar!(Piattini et al. 04)

  • Anlisis de transformacin.

    Ejemplo (Gua de tcnicas de Mtrica 2.1, MAP 95, p.144)

  • 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)

    de cara a la reutilizacin, es bueno que Actualizar archivo R (S, T) haga uso de imprimir modificaciones?

    Un planteamiento para discutir:

  • Centros de transaccin

    implcitos

    Normalmente el esquema de transaccin no es tan claro:

    el proceso de transaccin no aparece 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)

    PRealizar devolucin

    PRealizar venta

    DPTO. SERVICIO ACLIENTES

    datos-devolucin

    datos-venta (Molina et al. 97) p.172

    ...

    PAdmitir pagodatos-pago

    Seleccione la opcin deseada:Seleccione la opcin deseada:

    1.1. Realizar ventaRealizar venta

    2.2. Realizar devolucinRealizar devolucin

    3.3. Admitir pagoAdmitir 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 transformacionesDE para cada transaccin 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 ++Extensibilidad ++Reutilizacin ++

    Dos mtricas:AcoplamientoCohesin

  • Acoplamiento

    Grado de interdependencia entre mdulos.

    Depende de la forma de interactuar entre los mdulos: p.ej. n / tipo de parmetros que se intercambian.p.ej. n / tipo de parmetros que se intercambian.

    Objetivo: minimizar el acoplamiento (CAJA NEGRA).modificabilidad++, comprensin++, reutilizacin++

    Ventajas de un bajo acoplamiento: Menos oportunidades para el efecto onda. El cambio realizado en un mdulo afecta lo menos posible a otros mdulos.

    Mientras se est manteniendo un mdulo, es deseable no necesitar preocuparse de los detalles internos de cualquier otro mdulo.

  • Complejidad de la interfaz

    Acoplamiento Complejidad de la interfazP.ej. (Molina et al. 97) 1. CALL LONGITUD( X1, Y1, X2, Y2, D ) 1. CALL LONGITUD( X1, Y1, X2, Y2, D ) 2. CALL LONGITUD( ORIGEN, DESTINO, D ) 3. CALL LONGITUD( PuntosX, PuntosY, D ) 4. CALL LONGITUD( LINEA, D ) 5. CALL LONGITUD( TABLALINEA ) 6. CALL LONGITUD.

    Qu interfaz es ms fcil de entender?

  • 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 acoplamientoStevens, Myers y Constantine 74

    Acoplamiento NormalDe datos Por estampadoDe control

    MEJOR (- Acopl.)

    Lmite de De control

    Acoplamiento comn Acoplamiento por contenido

    PEOR (+ Acopl.)

    Lmite de aceptacin

    Si dos mdulos presentan varios tipos de acoplamiento, se considera que tienen el peor de los acoplamientos que presentan.

  • Niveles de acoplamiento (II)

    Acoplamiento normal:A y B normalmente acoplados si:

    1) A llama a B; 2) B retorna el control a A

    De datos: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

    Obtener DNI Cliente

    Slo debe haber parmetros con sentido

    En la medida de lo posible, minimizar el nmero de parmetros

    Leer DNI Cliente

    DNI cli

  • Acoplamiento normal por

    estampado

    Introduce indireccin No es deseable si el mdulo que recibe el registro slo necesita parte de los datos.

    Obtener DNI Cliente

    parte de los datos. Pasar campos innecesarios oscurece el diseo y reduce la flexibilidad

    No crear registros artificiales, empaquetando datos no relacionados

    Leer Cliente

    cli

  • Acoplamiento normal de

    control

    Deseable slo si los flags de control son descriptivos

    EORcampo alfabtico correcto

    Validar campoalfabtico

    Obtener camposiguiente

    Obtener datos clientes

    campo

    campo correcto

    EOR

    campo

  • Acoplamiento normal de

    control (II)

    No es deseable si el control tiene sentido descendente:Un mdulo controla a otro y no son realmente independientes

    Obtener trans y registro

    reg maestroreg transFlag de seleccindependientes El mdulo subordinado tiene poca cohesin

    Solucin: sustituir el mdulo subordinado por tantos mdulos como sea necesario, de forma que slo intercambien datos

    Control sist E/S

    reg maestroreg trans

    Flag de selecc:Flag de selecc:

    1.1. Obtiene RTObtiene RT

    2.2. Obtiene RMObtiene RM

    3.3. Obtiene RT y RMObtiene RT y RM

  • Acoplamiento normal de

    control (III)

    Peor es si hay inversin de autoridad (Molina et al. 97) p.66

    el mdulo subordinado intenta controlar al mdulo padre

    Encontrar palabras

    Formar palabras

    otro regreg

    ...

  • Niveles de acoplamiento (III)

    Acoplamiento comn. Ms de dos mdulos hacen referencia a un rea comn de datos. Dos mdulos pueden estar acoplados globalmente y no estar conectados mediante una llamada.

    En general, es desaconsejable, dado que (Molina et al. 97): En general, es desaconsejable, dado que (Molina et al. 97): Un error de programacin en un mdulo que usa puede aparecer en otros mdulos que compartan esa misma rea global.

    Reutilizacin-- Puede ser difcil averiguar de dnde procede informacin depositada en el rea global.

    Se pueden incluso usar para depositar informacin de distinta naturaleza.

    Aplicaciones difciles de mantener: es difcil saber qu datos son usados por un mdulo.

  • Niveles de acoplamiento (IV)

    Acoplamiento de contenido. Ocurre cuando un mdulo necesita o accede a una parte de otro, rompiendo la jerarqua de funcionalidad de la estructura.

    En la mayora de los casos slo se puede dar en En la mayora de los casos slo se puede dar en ensamblador

    Hay que evitarlo descomponiendo el mdulo al que se accede o duplicando esa parte de cdigo en el mdulo que llama

    A

    B

  • Datos vagabundos (Molina et al. 97) p.62

    Deben evitarse tambin los datos vagabundos(que a veces estn asociados al acoplamiento normal)

    Posibles soluciones:a) Reorganizar el

    diagramab) Introducir variables

    globales

  • Datos vagabundos (II)

    Solucin (a) El dato vagabundo registro maestro se ha maestro se ha eliminado reorganizando el DE

  • 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 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: (Molina et al. 97)

    AULAS APARCAMIENTO

    COCINAS COMEDOR

    AULASCOCINAS

    APARCAMIENTOCOMEDOR

  • Niveles de cohesinStevens, Myers y Constantine 74

    Funcional Secuencial Comunicacional

    Mayor cohesin (CAJA NEGRA)

    Procedural Temporal Lgica Coincidental Peor cohesin

    (CAJA GRIS)

    (CAJA TRANSPA-RENTE)

    Lmite de aceptacin

  • Niveles de cohesin (II)

    Funcional: se realiza una sola funcin. Secuencial: la salida de una tarea sirve como entrada a la siguiente:

    varios mdulos con cohesin funcional que se pasan un dato

    Comunicacional: actividades que comparten datos (bien los Comunicacional: actividades que comparten datos (bien los mismos datos de entrada o de salida).

    Procedural: actividades diferentes, en las cuales el flujo de ejecucin fluye de una a la siguiente.

    Temporal: actividades diferentes relacionadas por el tiempo. Lgica: actividades con la misma categora lgica general, que se

    seleccionan fuera del mdulo.

    Coincidental o casual: actividades diferentes sin relaciones significativas entre ellas.

  • Niveles de cohesin (III)

    Ejemplos:Funcional:

    funciones matemticas como cos(alpha); escribir registro (fichero, registro)

    Secuencial: Formatear registro = Leer registro + Aplicar formato registro

    Comunicacional: Comunicacional: Obtener detalles cliente (num_cta, nombre_cli, saldo_prestamo)

    Procedural:Mdulo Detectar error, corregirlo y reanudar la ejecucin

    Por qu no es cohesin secuencial?Temporal:

    mdulos de inicializacin y terminacinLgica:

    rutina general de E/S

    ms ejemplos en (Piattini et al. 04) o (Molina et al. 97) p.78.

  • Determinacin de la

    cohesin de un mdulo (Molina et al. 97)

    Realiza el mdulo una sola funcin?

    Cmo estn relacionadas las

    Es importante la secuencia?

    1. FUNCIONAL.

    2. SECUENCIAL.

    3. COMUNICACIONAL

    S

    S

    NO

    NO POR DATOS

    POR FLUJO DE relacionadas las actividades dentro

    del mdulo? Es importante la secuencia?

    Son las actividades de la misma categora

    general?

    4. PROCEDURAL.

    5. TEMPORAL.

    6. LGICA.

    7. CASUAL.

    S

    S

    NO

    NO

    POR FLUJO DE CONTROL

    NINGUNA DE LAS DOS

  • 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 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 Solucin: combinar funciones subordinadas en una solaExcepcin: cuando el mdulo es un centro de transacciones

    Deben evitarse largas secuencias lineales. Soluciones:(a) revisar las posibilidades de descomponer las funciones en subfunciones con entidad propia.(b) comprimir mdulos subordinados en un mdulo de nivel superior.

  • Heursticas de diseo

    estructural (Molina et al. 97) cap. 6

    Factorizar funciones cuando sea posible. Inicializar las variables lo ms tarde posible en el diagrama, cerca de las funciones a realizar.

    Evitar la disgregacin de decisiones: Evitar la disgregacin de decisiones:

    La parte de reconocimiento de la condicin se separa de la parte de ejecucin

    Cul puede ser un sntoma?

  • Heursticas de diseo

    estructural (II) (Molina et al. 97) cap. 6

    Evitar sistemas dirigidos por la entrada fsica (sistemas que no procesan suficientemente la entrada).

    LgicoLo deseable es:

    FSICO

    LGICO ...

  • Heursticas de diseo

    estructural (III) (Molina et al. 97) cap. 6

    Ejemplo de sistema dirigido por la entrada fsica

    El acoplamiento suele ser alto.

    Ya que los mdulos Ya que los mdulos superiores en la jerarqua tratan con la entrada fsica, cualquier cambio en la especificacin de sta afectar a gran parte del sistema.

  • Heursticas de diseo

    estructural (IV) (Molina et al. 97) cap. 6

    Edicin de los datos de entradaValidar sintaxis antes que semnticaValidar lo sencillo antes que lo cruzadoValidar lo sencillo antes que lo cruzadoEjemplo: nombre-ciudad y cod-postalValidar: 1 sintaxisnombre-ciudad caracteres alfabticoscod-postal numrico

    2 Verificar que ambos datos existen3 Validacin cruzada: cod-postal nombre-ciudad

  • Heursticas de diseo

    estructural (V) (Molina et al. 97) cap. 6

    Informacin de los errores: Qu mdulo llama al mdulo que escribe

    Dos soluciones no vlidas:

    que escribe mensajes de error?

  • Heursticas de diseo

    estructural (VI) (Molina et al. 97) cap. 6

    Dnde se pone el texto de los mensajes de error?Diseminados por el

    Solucin vlida:

    Diseminados por el sistema

    Dentro de un nico mdulo