criterios diseno cohesion

27

Click here to load reader

Upload: miguel-salazar-reque

Post on 14-Aug-2015

83 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Criterios Diseno Cohesion

CohesiónCohesión

Criterios para Evaluar la Criterios para Evaluar la Calidad de un Diseño Calidad de un Diseño

ModularModular

Page 2: Criterios Diseno Cohesion

DefiniciónDefiniciónCohesión es la medida que determina Cohesión es la medida que determina en en

que grado se relacionan los elementosque grado se relacionan los elementos o o actividades actividades de un módulode un módulo

CohesiónCohesión

Por elemento entendemos:Por elemento entendemos:•• una sentencia o grupo de sentenciasuna sentencia o grupo de sentencias•• invocaciones a otros módulosinvocaciones a otros módulos•• conjunto de procedimientos o funciones conjunto de procedimientos o funciones

empaquetados en el mismo móduloempaquetados en el mismo módulo

Page 3: Criterios Diseno Cohesion

Tipos de CohesiónTipos de CohesiónCohesiónCohesión

Cohesión CoincidencialCohesión CoincidencialCohesión LógicaCohesión LógicaCohesión TemporalCohesión TemporalCohesión Cohesión ProceduralProceduralCohesión ComunicacionalCohesión ComunicacionalCohesión SecuencialCohesión SecuencialCohesión FuncionalCohesión Funcional

PésimoPésimo

MaloMalo

BuenoBueno

PeorPeor

MejorMejor1.1.--2.2.--3.3.--4.4.--5.5.--6.6.--7.7.--

Caja NegraCaja Negra

Caja Gris OscuroCaja Gris Oscuro

Caja GrisCaja Gris

Caja BlancaCaja BlancaCaja Blanca

Cohesión Alta => Buena Descomposición y Bajo AcoplamientoCohesión Alta => Buena Descomposición y Bajo Acoplamiento

Page 4: Criterios Diseno Cohesion

DefiniciónDefiniciónUn módulo tiene Un módulo tiene Cohesión FuncionalCohesión Funcional sisi

todos los elementos del módulo contribuyen a todos los elementos del módulo contribuyen a la la realizarealización de una y ción de una y sólosólo una funciónuna función

Cohesión FuncionalCohesión Funcional

Ejemplos de Módulos con Cohesión FuncionalEjemplos de Módulos con Cohesión Funcional• CalcularCalcular Coseno de un AnguloCoseno de un Angulo

•• LeerLeer Registro de TransacciónRegistro de Transacción

•• CalcularCalcular Punto de Impacto de un MisilPunto de Impacto de un Misil

•• CalcularCalcular Salario Neto de un EmpleadoSalario Neto de un Empleado

•• AbrirAbrir Archivo de EmpleadosArchivo de Empleados

Presentan Presentan Solamente UNSolamente UNVerboVerbo en el en el Nombre del Nombre del MóduloMódulo

Page 5: Criterios Diseno Cohesion

DefiniciónDefiniciónUn módulo tiene Un módulo tiene Cohesión SecuencialCohesión Secuencial sisi

sus elementos están involucrados en sus elementos están involucrados en actividades tales que actividades tales que los datos de salida de los datos de salida de una actividad sirven como datos de entrada una actividad sirven como datos de entrada para otra actividadpara otra actividad

Cohesión SecuencialCohesión Secuencial

Ejemplos de Módulos con Cohesión SecuencialEjemplos de Módulos con Cohesión Secuencial• ValidarValidar Registro Registro yy GrabarGrabar Registro VálidoRegistro Válido

•• ObtenerObtener Fecha de Nacimiento Fecha de Nacimiento yy CalcularCalcular EdadEdad

•• ObtenerObtener Código de Producto Código de Producto yy RecuperarRecuperar Precio Precio UnitarioUnitario

GeneralmenteGeneralmentePresentan Presentan ConjunciónConjunciónen el Nombre en el Nombre del Módulodel Módulo

Page 6: Criterios Diseno Cohesion

Tiene Cohesión Secuencial

Tiene Cohesión Tiene Cohesión SecuencialSecuencial

Cohesión SecuencialCohesión Secuencialpedido de reintegropedido de reintegro

ObtenerObtenerPedido de ReintegroPedido de Reintegro

ObtenerObtenerLegajo de Cliente Legajo de Cliente

Obtener Obtener Pedido de Reintegro Pedido de Reintegro y Legajo de Clientey Legajo de Cliente

legajo de clientelegajo de cliente

pedido de pedido de reintegroreintegro

legajo de clientelegajo de clientenronro. cliente. cliente

Diccionario de DatosDiccionario de Datos

pedido de reintegropedido de reintegro : = : = nronro. cliente. cliente + an+ anáálisis + importe + fechalisis + importe + fechalegajo de cliente : = legajo de cliente : = nronro. cliente + nombre cliente + direcci. cliente + nombre cliente + direccióón + n + nronro. plan. plan

Page 7: Criterios Diseno Cohesion

Tiene Cohesión Secuencial

Tiene Cohesión Tiene Cohesión SecuencialSecuencial

Cohesión SecuencialCohesión Secuencialcódigo de productocódigo de producto

ObtenerObtenerCódigo de ProductoCódigo de Producto

Recuperar Precio Recuperar Precio por Unidad por Unidad

Obtener Obtener Código de Producto Código de Producto y Recuperar Precio y Recuperar Precio

UnitarioUnitario

precio x unidadprecio x unidad

código de código de productoproducto

precio x unidadprecio x unidadcódigo de código de productoproducto

Page 8: Criterios Diseno Cohesion

Tiene Cohesión funcional

Tiene Cohesión Tiene Cohesión funcionalfuncional

Cohesión SecuencialCohesión Secuencial

ObtenerObtenerCódigo de ProductoCódigo de Producto

Recuperar Precio Recuperar Precio por Unidad por Unidad

Editar renglón de Editar renglón de facturafactura

código de código de productoproducto

precio x unidadprecio x unidadcódigo de código de productoproducto

Page 9: Criterios Diseno Cohesion

DefiniciónDefiniciónUn módulo tiene Un módulo tiene Cohesión ComunicacionalCohesión Comunicacional

sisi sus elementos están involucrados en sus elementos están involucrados en actividadesactividades tales que todastales que todas utilizan los mismos utilizan los mismos datos de entrada y no importa el orden en que datos de entrada y no importa el orden en que se realicense realicen

Cohesión ComunicacionalCohesión Comunicacional

Ejemplos de Módulos con Cohesión ComunicacionalEjemplos de Módulos con Cohesión Comunicacional• RecuperarRecuperar Nombre Nombre yy Saldo de un ClienteSaldo de un Cliente

•• RecuperarRecuperar Título, Autor Título, Autor yy Precio de un LibroPrecio de un Libro

•• CalcularCalcular Salario Promedio Salario Promedio yy MáximoMáximo

•• GenerarGenerar Informe de Salarios Informe de Salarios yy CalcularCalcular Salario Promedio Salario Promedio

Generalmente Generalmente Presentan Presentan ConjunciónConjunciónen el Nombre en el Nombre del Módulodel Módulo

Page 10: Criterios Diseno Cohesion

Cohesión ComunicacionalCohesión Comunicacional

Tiene Cohesión Comunicacional

Tiene Cohesión Tiene Cohesión ComunicacionalComunicacional

nombre clientenombre cliente

ConsultarConsultarSaldoSaldo

Consultar Consultar Nombre ClienteNombre Cliente

Recuperar Recuperar Saldo y Saldo y

Nombre ClienteNombre Cliente

saldosaldonronro. de cuenta. de cuenta

nronro. de . de cuentacuentasaldosaldo nombre clientenombre cliente

Page 11: Criterios Diseno Cohesion

DefiniciónDefiniciónUn módulo tiene Un módulo tiene Cohesión Cohesión ProceduralProcedural sisi

sus elementos están involucrados en sus elementos están involucrados en actividades diferentes donde actividades diferentes donde el control es la el control es la principal relaciónprincipal relación

Cohesión Cohesión ProceduralProcedural

Ejemplos de Módulos con Cohesión Ejemplos de Módulos con Cohesión ProceduralProcedural• GrabarGrabar Ultima Transacción y Ultima Transacción y ObtenerObtener SiguienteSiguiente

•• GrabarGrabar Ultimo Registro, Ultimo Registro, LeerLeer y y EditarEditar Nuevo RegistroNuevo Registro

•• Rutina de IteraciónRutina de Iteración

•• Módulo de DecisiónMódulo de Decisión

Generalmente Generalmente Presentan Presentan Nombres que Nombres que denotan Flujo denotan Flujo de Controlde Control

Page 12: Criterios Diseno Cohesion

Cohesión Cohesión ProceduralProceduralMódulo Procesar Tablas de VentasMódulo Procesar Tablas de Ventas

Usa Usa tablaVentasSemanaltablaVentasSemanal, , tablaVentasPorSucursaltablaVentasPorSucursaltotalSemanaltotalSemanal := := totalSucursalestotalSucursales := 0:= 0Para i:= 1 hasta 7 hacerPara i:= 1 hasta 7 hacer

totalSemanaltotalSemanal := := totalSemanaltotalSemanal + + tablaVentasSemanal[itablaVentasSemanal[i]]totalSucursalestotalSucursales := := totalSucursalestotalSucursales + + tablaVentasPorSucursal[itablaVentasPorSucursal[i]]

Fin ParaFin ParaventaPromedioPorDiaventaPromedioPorDia := := totalSemanatotalSemana / 7/ 7ventaPromedioPorSucursalventaPromedioPorSucursal := := totalSucursalestotalSucursales / 7/ 7Retorna Retorna ventaPromedioPorDiaventaPromedioPorDia, , ventaPromedioPorSucursalventaPromedioPorSucursal

Fin MóduloFin MóduloTanto los días de la semana como

el número de sucursales son

siete …

Tanto los días de Tanto los días de la semana como la semana como

el número de el número de sucursales son sucursales son

siete …siete …

Page 13: Criterios Diseno Cohesion

DefiniciónDefiniciónUn módulo tiene Un módulo tiene Cohesión TemporalCohesión Temporal sisi sus sus

elementos están involucrados en actividades elementos están involucrados en actividades cuya cuya relación principal es el tiemporelación principal es el tiempo

Cohesión TemporalCohesión Temporal

Ejemplos de Módulos con Cohesión TemporalEjemplos de Módulos con Cohesión Temporal• InicializarInicializar Variables GlobalesVariables Globales

•• FinalizarFinalizar TransacciónTransacción

•• AbrirAbrir ArchivoArchivoss

•• CerrarCerrar ArchivoArchivoss

Presentan Presentan Nombres que Nombres que denotan denotan actividades que actividades que se deben realizar se deben realizar juntas en un juntas en un determinado determinado momentomomento

InicializarInicializarVariablesVariables

Page 14: Criterios Diseno Cohesion

DefiniciónDefiniciónUn módulo tiene Un módulo tiene Cohesión LógicaCohesión Lógica sisi sus sus

elementos están involucrados en elementos están involucrados en actividadesactividadesque que responden a una misma categoría generalresponden a una misma categoría generalAdemás,Además, la(s)la(s) actividad(es)actividad(es) a ser a ser ejecutada(s) a ser a ser ejecutada(s) sonson

seleccionadas externamenteseleccionadas externamente con una con una cuplacupla de controlde control

Cohesión LógicaCohesión Lógica

Ejemplos de Módulos con Cohesión LógicaEjemplos de Módulos con Cohesión Lógica• GenerarGenerar Informe de Ventas Informe de Ventas óó de Comprasde Compras

•• GenerarGenerar InformesInformes

•• LeerLeer Registro A Registro A óó Registro B Registro B óó Registro CRegistro C

•• Módulo General de ConsultasMódulo General de Consultas

Presentan Presentan DisyunciónDisyunción óóactividad de actividad de propósito propósito generalgeneral en el en el Nombre del Nombre del MóduloMódulo

Page 15: Criterios Diseno Cohesion

Cohesión LógicaCohesión Lógica

informe de informe de comprascompras

Generar Generar InformesInformes

OpOp

informe de informe de ventasventas

informe de informe de producciónproducción

Generar Generar Informe de Informe de ComprasCompras

Generar Generar Informe de Informe de

VentasVentas

Generar Generar Informe de Informe de ProducciónProducción

Case Case OpOp

OpOp = 1= 1 OpOp = 2= 2 OpOp = 3= 3

Especificación del Módulo Especificación del Módulo Generar InformesGenerar Informes

Generar Generar Informe de Informe de ComprasCompras

Generar Generar Informe de Informe de

VentasVentas

Generar Generar Informe de Informe de ProducciónProducción

Tiene Cohesión Lógica

Tiene Cohesión Tiene Cohesión LógicaLógica

Page 16: Criterios Diseno Cohesion

DefiniciónDefiniciónUn módulo tiene Un módulo tiene Cohesión CoincidencialCohesión Coincidencial sisi

sus elementos están involucrados en sus elementos están involucrados en actividades para las que actividades para las que es imposible es imposible encontrar alguna relaciónencontrar alguna relación (ni datos, ni control, (ni datos, ni control, ni tiempo, ni categoría general) ni tiempo, ni categoría general)

Cohesión CoincidencialCohesión Coincidencial

Ejemplos de Módulos con Cohesión CoincidencialEjemplos de Módulos con Cohesión Coincidencial• Módulo XMódulo X--666666

•• Módulo de MisceláneasMódulo de Misceláneas

•• Utilidades & ParchesUtilidades & Parches

Presentan un Presentan un Nombre Nombre crípticocríptico ó sin ó sin significadosignificado

M XM X--666666

OpOp

Page 17: Criterios Diseno Cohesion

Cohesión CoincidencialCohesión Coincidencial

•• Tentativas inútiles de Economía de MemoriaTentativas inútiles de Economía de Memoria

•• Tentativas de Mejorar Tiempos de Respuesta Tentativas de Mejorar Tiempos de Respuesta

•• Tentativas de Mejorar la Cohesión Pobre de Otros Tentativas de Mejorar la Cohesión Pobre de Otros Módulos (Dejando las Partes Poco Cohesivas en un Módulos (Dejando las Partes Poco Cohesivas en un Único Módulo)Único Módulo)

•• Al igual que con Cohesión Lógica, comúnmente es Al igual que con Cohesión Lógica, comúnmente es necesario enviar una necesario enviar una cuplacupla de Control para seleccionar la de Control para seleccionar la actividad a realizaractividad a realizar

CaracterísticasCaracterísticas

Page 18: Criterios Diseno Cohesion

¿Cómo determinamos la Cohesión de un ¿Cómo determinamos la Cohesión de un módulo de forma sistemática?módulo de forma sistemática?

Se debe ExaminarSe debe Examinar•• Nombre del móduloNombre del módulo

–– Útil sólo si el nombre define precisa, completa y Útil sólo si el nombre define precisa, completa y honestamente lo que hace el módulohonestamente lo que hace el módulo

•• Subordinados en el DESubordinados en el DE–– Los subordinados representan Los subordinados representan subsub--funciones del módulofunciones del módulo

•• Estructura internaEstructura interna–– Especificaciones (PseudoEspecificaciones (Pseudo--código, Diagramas de código, Diagramas de NassiNassi, etc.), etc.)–– Código fuenteCódigo fuente

Determinando el nivel de CohesiónDeterminando el nivel de Cohesión

Page 19: Criterios Diseno Cohesion

¿Cómo determinamos la Cohesión de un ¿Cómo determinamos la Cohesión de un módulo de forma sistemática?módulo de forma sistemática?

Utilizando un Árbol de Decisión Utilizando un Árbol de Decisión

Determinando el nivel de CohesiónDeterminando el nivel de Cohesión

La secuenciaLa secuenciaes importante?es importante?

Las actividadesLas actividadesson de la mismason de la mismacategoría general?categoría general?

SíSí

NoNo

DatosDatos

ControlControl

1.1.-- FuncionalFuncionalSíSí

NoNo2.2.-- SecuencialSecuencial3.3.-- ComunicacionalComunicacional

4.4.-- ProceduralProcedural

5.5.-- TemporalTemporal

6.6.-- LógicaLógica

7.7.-- CoincidencialCoincidencial

Ninguna deNinguna delas Anterioreslas Anteriores

El móduloEl módulo

única función?única función?ejecuta unaejecuta una

Que relaciónQue relación

del módulo?del módulo?

tienen lastienen lasactividadesactividades

SíSí

NoNo

TiempoTiempo

Page 20: Criterios Diseno Cohesion

Módulos con más de una CohesiónMódulos con más de una Cohesión

ProblemaProblemaAlgunas veces un módulo puede presentar Algunas veces un módulo puede presentar

justificadamente más de un nivel de cohesión ...justificadamente más de un nivel de cohesión ...

transaccióntransacción

Imprimir Imprimir TransacciónTransacción

Grabar Grabar TransacciónTransacción

Terminar Terminar TransacciónTransacción

transaccióntransaccióntransaccióntransacción

¿Qué Cohesión Tiene ¿Qué Cohesión Tiene “Terminar Transacción” ?“Terminar Transacción” ?

¿Temporal ó Comunicacional ?¿Temporal ó Comunicacional ?

Page 21: Criterios Diseno Cohesion

Reglas de Cadenas en Serie y ParaleloReglas de Cadenas en Serie y Paralelo

HeurísticaHeurísticaAplicar reglas de cadena en serie y cadena Aplicar reglas de cadena en serie y cadena

en paralelo [en paralelo [PagePage JonesJones 88].88].

Podemos ver a las actividades de un módulo como Podemos ver a las actividades de un módulo como los eslabones de una cadena y a la cohesión los eslabones de una cadena y a la cohesión como la fuerza que une dichos eslabones como la fuerza que une dichos eslabones

Page 22: Criterios Diseno Cohesion

Reglas de Cadenas en Serie y ParaleloReglas de Cadenas en Serie y Paralelo

Cadenas en ParaleloCadenas en ParaleloSi Si todastodas las actividades del módulo están las actividades del módulo están

relacionadas por más de un nivel de cohesión, relacionadas por más de un nivel de cohesión, entonces tomar el nivel más fuerte como la entonces tomar el nivel más fuerte como la cohesión del módulocohesión del módulo

transaccióntransacción

Imprimir Imprimir TransacciónTransacción

Grabar Grabar TransacciónTransacción

Terminar Terminar TransacciónTransacción

transaccióntransacción

¿Qué Cohesión Tiene “Terminar ¿Qué Cohesión Tiene “Terminar Transacción” ?Transacción” ?Temporal Temporal (peor ó más débil)(peor ó más débil)Comunicacional Comunicacional (mejor ó más fuerte)(mejor ó más fuerte)

=> C. Comunicacional=> C. Comunicacional

Page 23: Criterios Diseno Cohesion

Reglas de Cadenas en Serie y ParaleloReglas de Cadenas en Serie y Paralelo

Cadenas en SerieCadenas en SerieSi existen grupos de actividades del módulo Si existen grupos de actividades del módulo

que están relacionados por distintos niveles de que están relacionados por distintos niveles de cohesión, entonces tomar el nivel más débil como cohesión, entonces tomar el nivel más débil como la cohesión del módulo la cohesión del módulo

MM

aa

¿Qué Cohesión Tiene “M” ?¿Qué Cohesión Tiene “M” ?Secuencial Secuencial (más fuerte)(más fuerte)

Entre A y BEntre A y BEntre A y CEntre A y CEntre C y DEntre C y D

Comunicacional Comunicacional (más débil)(más débil)Entre B y CEntre B y C

=> C. Comunicacional=> C. Comunicacional

AA BB CC DD

aacc

cc

Page 24: Criterios Diseno Cohesion

Tipos de CohesiónTipos de CohesiónCohesiónCohesión

Cohesión CoincidencialCohesión CoincidencialCohesión LógicaCohesión Lógica

Cohesión TemporalCohesión TemporalCohesión Cohesión ProceduralProceduralCohesión ComunicacionalCohesión ComunicacionalCohesión SecuencialCohesión SecuencialCohesión FuncionalCohesión Funcional

PésimoPésimo

MaloMalo

BuenoBueno

PeorPeor

MejorMejor 1.1.--2.2.--3.3.--4.4.--5.5.--6.6.--7.7.--

Cohesión Cohesión InformacionalInformacional

Cohesión Cohesión InformacionalInformacionalCohesión de un Cluster de Información cuyos módulos Cohesión de un Cluster de Información cuyos módulos

tienen todos cohesión funcionaltienen todos cohesión funcional

Page 25: Criterios Diseno Cohesion

Clusters de InformaciónClusters de Información

DefiniciónDefiniciónUn Un Cluster de InformaciónCluster de Información modela una modela una

instancia de un instancia de un Tipo Abstracto de DatosTipo Abstracto de Datos

Estructura de Datos =>Estructura de Datos => Tablero de AjedrezTablero de Ajedrez

Efectuar Efectuar MovimientoMovimiento

Posición Posición Ocupada?Ocupada?

piezapieza posiciónposiciónposiciónposición

ocupadaocupada

......Módulos de Acceso y Módulos de Acceso y ActualizaciónActualización =>=>

Se reúnen en un cluster aquellos módulos que Se reúnen en un cluster aquellos módulos que manipulan una misma Estructura de Datosmanipulan una misma Estructura de Datos

Page 26: Criterios Diseno Cohesion

Cohesión de un Cluster de InformaciónCohesión de un Cluster de Información

DefiniciónDefiniciónSi todos los módulosSi todos los módulos de un cluster de de un cluster de información información tienen cohesión funcionaltienen cohesión funcional=>=> El cluster (visto como un único módulo) El cluster (visto como un único módulo) tendrá tendrá Cohesión Cohesión InformacionalInformacional

En caso contrarioEn caso contrario=> El cluster tendrá la peor entre las => El cluster tendrá la peor entre las

cohesiones de sus móduloscohesiones de sus módulos

Page 27: Criterios Diseno Cohesion

Cohesión & AcoplamientoCohesión & Acoplamiento

Relación entre Cohesión y AcoplamientoRelación entre Cohesión y AcoplamientoEn General, aEn General, a Mayor Cohesión Menor AcoplamientoMayor Cohesión Menor Acoplamiento

Comparación de Niveles de CohesiónComparación de Niveles de CohesiónNivelNivel AA MM II CC RR

FuncionalFuncional BuenoBueno BuenoBueno BuenoBueno BuenoBueno BuenoBuenoInformacionalInformacional BuenoBueno BuenoBueno BuenoBueno BuenoBueno BuenoBuenoSecuencialSecuencial BuenoBueno BuenoBueno MedioMedio BuenoBueno BuenoBuenoComunicacionalComunicacional MedioMedio MedioMedio VariableVariable MedioMedio MedioMedioProceduralProcedural VariableVariable PobrePobre PobrePobre VariableVariable MaloMaloTemporalTemporal PobrePobre MedioMedio MaloMalo MedioMedio MaloMaloLógicaLógica MaloMalo MaloMalo MaloMalo MaloMalo MaloMaloCoincidentalCoincidental MaloMalo PobrePobre MaloMalo MaloMalo MaloMalo

AA: Acoplamiento; : Acoplamiento; MM: : MantenibilidadMantenibilidad; ; II: Implementación; : Implementación; CC: Comprensión; : Comprensión; RR: : ReusabilidadReusabilidad