criterios diseno cohesion
TRANSCRIPT
CohesiónCohesión
Criterios para Evaluar la Criterios para Evaluar la Calidad de un Diseño Calidad de un Diseño
ModularModular
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
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
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
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
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
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
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
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
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
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
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 …
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
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
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
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
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
¿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
¿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
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 ?
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
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
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
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
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
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
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