DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE...

34
Departamento de Informática Universidad de Valladolid Campus de Segovia ______________________ TEMA 9: CRITERIOS DE CALIDAD DE DISEÑO MODULAR

Transcript of DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE...

Page 1: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

Departamento de InformáticaUniversidad de Valladolid

Campus de Segovia______________________

TEMA 9:CRITERIOS DE CALIDADDE DISEÑO MODULAR

Page 2: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

CRITERIOS DE CALIDAD DEDISEÑO MODULAR

•Conceptos generales–Cohesión y acoplamiento– Balanceado y factorización

Page 3: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

CRITERIOS DE CALIDAD

• Los criterios son el acoplamiento y la cohesión.

• Estos criterios fueron introducidos por Yourdon et al.En los años 70.

• El acoplamiento es un medio de evaluar la relaciónentre los distintos módulos de un sistema.

• La cohesión mide el grado de conexión funcionalentre los constituyentes o elementos de un mismomódulo.

Page 4: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO.DEFINICIÓN

• El acoplamiento es una medida del grado deinterdependencia entre los módulos de un sistema.

• Lo deseable es tener módulos con pocoacoplamiento (o independiente entre sí).

– Para ser capaces de realizar el mantenimiento de un módulosin tener que cambiar otros módulos.

• Este criterio se puede relacionar con la complejidadde una interfaz.

Page 5: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

TIPOS DE ACOPLAMIENTO

• NORMAL Menos acoplamiento

– POR DATOS

– POR ESTAMPADO

– POR CONTROL

• COMÚN

• POR CONTENIDO Más acoplamiento

Page 6: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO NORMAL• Se dice que dos módulos “A” y “B” están acoplados

normalmente si:– A invoca a B– B realiza su función y retorna el control a A– Toda la información que comparten la realizan a través de los

parámetros presentes en la llamada.

A

BNo hay parámetrosen la llamada.

Page 7: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO NORMAL.POR DATOS

• Dos módulos están acoplados por datos si están acopladosnormalmente y además todos los parámetros que se intercambian sondatos elementales sin estructura interna (tipos básicos).

ProducirFactura

Calcularalquilercoche

TIPO COCHE

KILOMETROS

DIAS

IMPORTEALQUILER

Los datos que se pasan en este ejemplo son básicos

Page 8: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO NORMAL.POR ESTAMPADO

• Dos módulos acoplados normalmente lo están porestampado si uno le pasa al otro un dato compuesto (conestructura interna).

ProducirFactura

Calcularalquilercoche

IMPORTEALQUILER

REGISTROALQUILERCOCHE

Los datos que se pasan en este ejemplo son compuestos

Page 9: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO NORMAL.POR CONTROL

• Dos módulos acoplados normalmente lo están por controlsi uno le pasa al otro un dato con la intención de controlarsu lógica interna.

Obtenertransacción y

registro

Control desistema

E/S

REGISTROMAESTRO

FLAG DESELECCIÓN REGISTRO

TRANSACCIÓN

Valores del Flag de Selección:1. Obtiene registro maestro2. Obtiene registro transacción3. Obtiene ambos4. Imprime cabecera.Etc...

El módulo jefe controla, a través del dato “Flag de selección”, la lógica del módulo subordinado. Si fuera al revés se dice que hayuna inversión de autoridad.

Page 10: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO NORMAL.POR CONTROL

• Con frecuencia el acoplamiento por control indica la presenciade algún error de diseño más grave (Que los módulos poseanpoca cohesión ).

• Dentro del acoplamiento por control hay dos tipos de flag:– Flags de control:que intentan controlar la lógica del módulo que

los recibe.– Flags descriptivos: que revelan cualidades relativas al dato.

A

Obtener nombreCliente

NOMBRENUMEROCLIENTE NUMERO

CLIENTE INVÁLIDO

Flag descriptivoque no pretendecontrolar la lógicadel módulo

Page 11: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

TIPO DE INFORMACIÓN QUEINTERCAMBIAN MÓDULOS NORMALMENTE

ACOPLADOS

TIPO DE INFORMACIÓN

CONTENIDODEL NOMBRE EJEMPLO

Registro clienteCódigo Postal

Registro es válidoCódigo Postal numérico

Leer siguiente registroRechazar este cliente

SUSTANTIVO

ADJETIVO

VERBO

DATO SIMPLEO

ESTRUCTURADO

FLAG DESCRIPTIVO

FLAG DE CONTROL

Page 12: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO COMÚN, PORVARIABLES GLOBALES

• Dos módulos A y B están acoplados globalmente si se refierena una misma zona global de datos o variable global.

• Las áreas de datos globales no son aconsejables:– Un error de programación que aparece en un módulo acoplado

globalmente puede aparecer en otros módulos que compartandicha área global.

– Estos módulos son menos reutilizables

– Es un tipo de acoplamiento en el cuál es difícil determinar laprocedencia de la información depositada en el área global.

– Los sistemas con muchas áreas globales son muy difíciles demantener.

Page 13: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ACOPLAMIENTO POR CONTENIDO

• Se dice que dos módulos están acoplados por contenidosi uno se refiere al interior del otro en alguna de lassiguientes formas:– Modificando o leyendo sus datos internos– Saltando directamente al interior de su código

• En este punto se pierde totalmente la modularidad

Page 14: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COMPARACIÓN DE LOS DISTINTOSTIPOS DE ACOPLAMIENTO

• Dos módulos pueden presentar más de un tipo deacoplamiento. En ese caso siempre se considerará elpeor de los dos.

Tipo de acoplamiento Modificabilidad Comprensión Reusabilidad

Por datos

Por estampado

Por control

Global

Contenido

Buena

Buena

Pobre

Media

Mala

Buena

Media

Pobre

Mala

Mala

Buena

Media

Pobre

Pobre

Mala

Page 15: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN

• La cohesión es una medida de la fuerza de la relaciónfuncional entre los elementos de un módulo.

• Se entiende por elemento de un módulo:– Una instrucción– Un grupo de instrucciones– Una definición de datos– Una llamada a otro módulo

• Lo ideal es disponer de módulos fuertemente cohesivos,cuyos elementos tengan poca relación con otroselementos de otros módulos.

Page 16: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

ESCALAS DE COHESIÓNCohesión más fuerte (Mejor Mantenimiento)

FUNCIONALSECUENCIALCOMUNICACIONALPROCEDURALTEMPORALLÓGICACASUAL

Cohesión más débil (Peor Mantenimiento)

• En los tres primeros niveles los módulos se comportancomo cajas negras y por tanto representan los nivelesmás deseables de cohesión dentro de un sistema.

Page 17: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN FUNCIONAL• Un módulo presenta cohesión funcional si contiene

elementos que contribuyen a la realización de una solafunción.

• Son los módulos más reutilizables ya que solo esnecesario conocer la función que cumplen.

• El nombre de este tipo de módulos suele indicarclaramente la función que realizan:

– Calcular suma– Validar campo numérico– Calcular seno del ángulo

Page 18: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN SECUENCIAL• Un módulo presenta cohesión secuencial si sus

elementos están envueltos en tareas, tal que la salida deuna tarea sirve de entrada para la siguiente.

• Como se puede ver el módulo implementa un conjuntode funciones relacionadas entre sí.

Formatea el nº y calcula la

raiz cuadrada

RAIZCUADRADANUMERO

Módulo Formatea nº y calcula raiz cuadradausa Númeroretorna Raiz cuadradaprincipio Formatea el número Calcula raiz cuadradaFin.

Page 19: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN COMUNICACIONAL• Un módulo presenta cohesión comunicacional si contiene

actividades que comparten los mismo datos ya sean deentrada o de salida.

En algunos casos un módulo con cohesión comunicacionalpuede ser dividido en dos o más módulos con cohesiónfuncional.

OBTENERDETALLESCLIENTE

NOMBRECLIENTENUMERO

CUENTA SALDO PRESTADO

Módulo obtener detalles de Clienteusa Número cuentaretorna Nombre cliente Saldo préstamoprincipio Encontrar nombreEncontrar saldo préstamoFin.

Page 20: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

DIFERENCIAS ENTRE COHESIÓNSECUENCIAL Y COMUNICACIONAL

• En el módulo con cohesión secuencial es relevante el ordenmientras que en el comunicacional no.

Formatearnumero

Calcularraiz

cuadrada

número Raizcuadrada

Producirinformesalario

Calcularpromedio

salario

Tabla salarioempleados

Informesalarios

Salariopromedio

Page 21: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN PROCEDURAL• En un módulo con cohesión procedural los elementos

desarrollan actividades diferentes, posiblemente sinrelación alguna, tal que el flujo de control fluye de unaactividad a la siguiente.

• En estos módulos las diferentes actividades no compartendatos, lo único que las relaciona es el flujo de control.

ESCRIBIRLEER Y EDITAR

REGISTRO

REGISTROSALIDA

REGISTROENTRADAEDITADO

Módulo Escribir, leer y editar registrousa Registro salidaretorna Registro entrada editadoprincipio Escribir registro salidaleer registro de entradallenar campos numéricos delregistro de entrada con cerosFin.

Page 22: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN TEMPORAL• En un módulo con cohesión temporal los elementos están

envueltos en actividades que están relacionadas por eltiempo (se deben desarrollar al mismo tiempo).Normalmente cada una de estas actividades responde auna tarea diferente.

• La cohesión procedural y la temporal son muy parecidas,salvo por el hecho de que en la procedural suele ser másimportante el orden.

Módulo Inicializar funciones delsistemausa ContadorA, ContadorBBandera activado y Tabla totalesretorna lo mismo inicializadoprincipio pone los contadores a cerolimpia tabla de totalespone bandera activado en falsoFin.

INICIALIZARFUNCIONES

DEL SISTEMA

Contador B

Contador A BANDERAACTIVADO

TABLATOTALES

Page 23: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN LÓGICA• En un módulo con cohesión lógica los elementos

contribuyen en tareas de la misma categoría general y lasactividades a desarrollar se seleccionan fuera del módulo.

• Estos módulos se caracterizan por:– Necesitan una interfaz ancha que permita seleccionar la

actividad a ejecutar.– Son módulos difíciles de entender y mantener

Módulo Rutina general de E/Susa RegistroA, Bandera de selecciónretorna RegistroA, RegistroB,RegistroCprincipiosi bandera de selección=1 entonces escribir registro A en Fmaes. Leer registroB de Fichero1 si_no si bandera de selección=2 Leer registroB de Fichero1 si_no Leer registroA de Fichero2 Leer registroC de Fichero3Fin.

RUTINAGENERAL DE

E/S

RegistroA

Bandera de Selección

Registro B

RegistroC

Page 24: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

COHESIÓN CASUAL• Un módulo con cohesión casual es aquel cuyos elementos

realizan tareas diferentes sin relación significativa entre ellas.• Estos módulos aparecen debido a:

– Intentos por ahorrar tiempo o memoria, situando dentro de unmódulo trozos de código que se repite a lo largo del sistema.

– Cambios de mantenimiento mal hechos, en módulos con pocacohesión.

Módulo Funciones variasusa Mensaje operador, flag activación, Acumulador, Matriz numérica.retorna Acumulador, Matriz numérica.principio si flag-activación=1 entonces inicializar Matriz numérica a 0. Inicializar acumulador a 0. si_no si flag-activación=2 entonces imprimir cabecera si_no Escribir en pantalla Mensaje OperadorFin.

FUNCIONES VARIAS

MensajeOperador

Flag deactivación

Acumulador

Matriznumérica

Page 25: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

DETERMINACIÓN DE LA COHESIÓN DEUN MÓDULO. ÁRBOL DE COHESIÓN

• A partir de una serie de preguntas situadas en los nodosse determina la cohesión dominante del módulo.

¿COMO ESTÁN RELACIONADAS

LAS ACTIVIDADESDENTRO DEL

MÓDULO?

COMUNICACIONAL

FUNCIONAL

SECUENCIAL

PROCEDURAL

TEMPORAL

LÓGICA

CASUAL

¿ES IMPORTANTELA SECUENCIA?

¿ES IMPORTANTELA SECUENCIA?

¿SON LAS ACTIVIDADESDE LA MISMA CATEGORÍA?

¿REALIZA EL MÓDULO UNA SÓLA FUNCIÓN? SI

NO

NO

SI

SI

SI

NO

NO

POR DATOS

POR FLUJO DE CONTROL

NINGUNA DE LAS DOS

Page 26: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

OTROS CRITERIOSDE DISEÑO

• FACTORIZACIÓN

• POR LA FORMA DEL SISTEMA

– SISTEMAS BALANCEADOS

Page 27: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

FACTORIZACIÓN• La factorización consiste en la separación de la función

contenida como código dentro de un módulo, para formar unnuevo módulo.

• El proceso inverso se denomina desfactorización y tambiénpuede representarse en el D.E.

F

Fa

Page 28: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

RAZONES DE USO DE LAFACTORIZACIÓN

• Reducir el tamaño de los módulos• Clarificación del sistema obteniendo las ventajas del

diseño descendente• Evitar que una misma función este codificada en varios

módulos• Separar el cálculo y el procesamiento de las decisiones

sobre los módulos.• Crear módulos reusables.• Simplificar la implementación.

Page 29: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

EJEMPLO DE FACTORIZACIÓN

CALCULARVALOR IVA

CALCULARVALOR

ARTÍCULO

OBTENERPRECIO

ARTÍCULO

CALCULARPRECIO CON

IVA

CALCULARIMPORTEARTÍCULO

E1

E2 S1

E3

S2

S3

S4E4E5 E6

E7E8

S5

E1, E3.- Código artículoE2, E4.- Cantidad artículoE5, E8, S2.- Precio de artículoE6, S3.- Valor artículoE7, S4.- IVA aplicableS5.- Precio con IVAS1.- Importe artículo

CALCULARIMPORTEARTÍCULO

E1

E2 S1

Page 30: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

CRITERIOS PARA DETENER LAFACTORIZACIÓN

• Cuando no se encuentre una función bien definidasusceptible de ser factorizada.

• Cuando las interfaces comiencen a ser tan complejascomo los propios módulos de manera que no se mejore lacomprensión del módulo.

Page 31: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

CLASIFICACIÓN DE LOS MÓDULOS ENFUNCIÓN DEL FLUJO DE LOS DATOS

• Aferente: el módulo envía información de abajo hacia arriba,es decir recoge información de algún módulo subordinado.

• Eferente: el módulo envía información de arriba hacia abajo.

• Transformación: Toma información del módulo jefe y latransforma en datos que le devuelve.

• Coordinación: coordina la información entre los módulossubordinados.

• Los módulos pueden presentar una combinación de estostipos.

Page 32: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

FORMA DEL SISTEMA

• A partir de la forma del diagrama de estructura se puedeevaluar la calidad del diseño.

• En un diagrama de estructura se distinguen tres áreas:– aferente: que trata con la información de entrada.– Transformación: que procesa los datos de entrada para

producir la salida.– Eferente: que trata con la información de salida

• A partir del desarrollo de cada una de estas áreaspodremos evaluar el diseño.

Page 33: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

SISTEMAS BALANCEADOS

• Un sistema balanceado es aquel en el que los módulossuperiores manejan información de naturaleza lógica másque física.

• Son los módulos de niveles inferiores de las ramasaferente y eferente los que tratan con los datos físicos deentrada y salida.

• La ventaja de los sistemas balanceados es que se mejorael acoplamiento entre los módulos y a su mantenibilidad.

Page 34: DISEÑO MODULAR DE PROGRAMASjvalvarez/docencia/ingenieria software... · CRITERIOS DE CALIDAD DE DISEÑO MODULAR •Conceptos generales –Cohesión y acoplamiento – Balanceado

EJEMPLO DE SISTEMA BALANCEADOACTUALIZAR

FICHERO

GENERARNUEVO

REGISTROMAESTRO

CONSEGUIRTRANSACC

VÁLIDA

PONERNUEVO

REGISTRO

CONSEGUIRTRANSACC.

CONSEGUIR CAMPO VÁLIDO

CONSEGUIRCAMPO

LEERLINEA

TERMINAL

VALIDARTRANSACC.

EDITARCAMPO

FORMATEARNUEVO

REGISTRO

CONSEGUIRREGISTROMAESTRO

ESCRIBIRNUEVO

REGISTRO