Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Supongamos que para solucionar todas las instancias de un problema • La estructura del producto es importante no solo para el desarrollo
particular un algoritmo requiere f (n) cálculos. sino también para el mantenimiento.
• Decimos que f (n) es asintóticamente óptima si para todo • Dividimos la estructura en:
algoritmo con complejidad g que soluciona el problema, f es O(g).
1. Estructura del Flujo de Control: apunta a la secuencia en las
cuales se ejecutan las instrucciones.
• Complejidad de un Problema: es el orden del algoritmo
2. Estructura del Flujo de Datos: sigue el rastro de los items de
asintóticamente óptimo para la solución del problema.
datos como son creados o manejados por el programa.
3. Estructura de Datos: la organización de los datos en sı́ misma,
• Un problema que tiene una solución acotada polinómicamente se independiente del programa.
dice factible.
Administración y Gestión de Proyectos de Software, UNS 239 Administración y Gestión de Proyectos de Software, UNS 241
• NP-completo: subconjunto de programas mas complejos. • Arco: Flujo de control de una sentencia a otra. Muestran el patrón
de control.
• La jerarquı́a de clases de complejidad está dada por P, NP y
NP-completo. • Dado un programa A, llamamos interpretación razonable F (A) al
grafo de control de flujo de A.
No siempre es posible mapear A en F (A).
Administración y Gestión de Proyectos de Software, UNS 240 Administración y Gestión de Proyectos de Software, UNS 242
Estructura del Flujo de Control: Ejemplo Grafo de Flujo de Control
• Arco: par ordenado < x, y > donde x e y son los nodos de los
extremos. La dirección del arco es de x a y.
Administración y Gestión de Proyectos de Software, UNS 243 Administración y Gestión de Proyectos de Software, UNS 245
• Idea: Si m es una medida estructural definida en términos del • Camino: secuencia de arcos consecutivos. Puede haber duplicados
modelo F (A), y si el programa A es estructuralmente mas complejo en la secuencia.
que B =⇒ m(A) >> m(B)
• Camino Simple: camino sin arcos repetidos.
• Se trata de introducir un enfoque independiente de cualquier visión
de programación estructurada. • Ejemplo:
1. Nodo 50 Grado-in: 1
• La técnica permite mostrar que cualquier programa tiene una única 2. Nodo 50 Grado-out: 2
descomposición estructural definida por componentes primitivas. 3. Camino: < 30, 40 >, < 40, 50 >, < 50, 60 >, < 60, 40 >, <
40, 50 >, < 50, 80 >
• Se utilizan conceptos de grafos. No es camino simple, ya que repite < 40, 50 >
Administración y Gestión de Proyectos de Software, UNS 244 Administración y Gestión de Proyectos de Software, UNS 246
Grafo de Flujo de Control Grafo de Flujo de Control...
Administración y Gestión de Proyectos de Software, UNS 247 Administración y Gestión de Proyectos de Software, UNS 249
Administración y Gestión de Proyectos de Software, UNS 248 Administración y Gestión de Proyectos de Software, UNS 250
Secuencia y Anidamiento... Secuencia y Anidamiento...
• Sean F1 y F2 grafos de flujos. Supongamos que F1 tiene un nodo • En general, sean F1, F2, . . . , Fn grafos de flujos con n nodos de
de procedimiento X. Anidar F2 en F1 en X es el grafo formado por procedimientos especı́ficos X1, X2, · · · , Xn. El grafo resultante es
F1 reemplazando el arco que sale de X con todo F2. El grafo de F (F 1 en X1, F2 en X2, · · · , Fn en Xn) Si los nodos no son relevantes
flujo resultante es F 1(F 2 en X). Si no hay ambiguedad F 1(F 2) F (F1, F2, · · · , Fn)
Administración y Gestión de Proyectos de Software, UNS 251 Administración y Gestión de Proyectos de Software, UNS 253
Administración y Gestión de Proyectos de Software, UNS 252 Administración y Gestión de Proyectos de Software, UNS 254
Nociones de Estructurado Nociones de Estructurado...
• Grafo de Flujo Primo: grafos de flujos que no pueden ser • Los elementos de S son S − graf os. Se llaman S − graf os básicos
descompuestos de manera no trivial en secuencias y anidamientos
• Se puede elegir que bloques constituyen los S − graf os. Ejemplo:
• Bohm y Jacopini: Cualquier algoritmo puede ser implementado
1. Para S = {P1}, S − graf os = {P1, P2, · · · , Pn, · · ·}
usando las construcciones de secuencia, selección y anidamiento.
2. S d = {P1, D0, D2} son los grafos D − estructurados
3. Para S = {D1, D2}, los siguiente son S − graf os: Fig.8.7
• Objetivo: Considerando solo el grafo de flujo determinar si un
algoritmo es estructurado o no.
Administración y Gestión de Proyectos de Software, UNS 255 Administración y Gestión de Proyectos de Software, UNS 257
• Se dice que una familia de grafos es S − estructurada (o que los • Se puede asociar con cualquier grafo de flujo un árbol de
miembros de la familia son S − graf os) si satisface las siguientes descomposición.
reglas recursivas:
1. Cada miembro de S es S − estructurado • El árbol es construı́do a partir de secuencias y anidamiento de grafos
2. Si S y S son S − graf os =⇒ primos.
F ; F es S − graf o
F (F ) es S − graf o (siempre que esté definido el anidamiento de • Ejemplo:
F en F
3. Ningún otro grafo es un S − graf o a menos que se pueda mostrar
que es generado en un número finito de veces por la aplicación de
los puntos anteriores.
Administración y Gestión de Proyectos de Software, UNS 256 Administración y Gestión de Proyectos de Software, UNS 258
Ejemplo de Descomposición Descomposición Prima
• Procedimiento:
1. Se calcula el árbol.
2. Si todo nodo es un elemento de S o es un Pn =⇒ el grafo es un
S − graf o.
Administración y Gestión de Proyectos de Software, UNS 259 Administración y Gestión de Proyectos de Software, UNS 261
Administración y Gestión de Proyectos de Software, UNS 260 Administración y Gestión de Proyectos de Software, UNS 262
Medidas Jerárquicas... Medir Longitud
Administración y Gestión de Proyectos de Software, UNS 263 Administración y Gestión de Proyectos de Software, UNS 265
Administración y Gestión de Proyectos de Software, UNS 264 Administración y Gestión de Proyectos de Software, UNS 266
Medida de Complejidad Ciclomática de Mc Cabe Medida de Complejidad Ciclomática de Mc Cabe...
• Para un programa con grafo F , el número ciclomático es: • La complejidad de las componentes anidadas en un primo F es la
v(F ) = a − n + 2 complejidad del primo F mas la suma de las complejidades de las
donde F tiene a arcos y n nodos. componentes menos el número de componentes.
• El número ciclomático mide el número de caminos linealmente • Desde la teorı́a de las mediciones, es dudoso que cualquiera de estas
independientes de F . afirmaciones corresponda a relaciones intuitivas sobre complejidad.
• Para cualquier grafo F , v(F ) = 1 + d, donde d es el número de • Por eso, v no puede ser usada como una medida general de
nodos predicados de F . complejidad.
• La medida es objetiva y útil para medir los caminos linealmente • El número ciclomático es un indicador útil de la dificultad para probar
independientes, pero no es claro que refleje de manera completa y y mantener un programa o módulo. Si v > 10 = problemático.
exacta la complejidad de un programa.
Administración y Gestión de Proyectos de Software, UNS 267 Administración y Gestión de Proyectos de Software, UNS 269
• v puede ser definida como una medida jerárquica: • Mc Cabe tambien propone una medida para capturar el nivel general
1. M1: v(F ) = 1 + d para cada primo F de estructuración de un programa.
donde d:cantidad de nodos predicados de F .
2. M2: v(F1; · · · ; Fn) = Σv(Fi ) − n + 1 • Para un programa con grafo F , define:
3. M3: v(F (F1, · · · , Fn)) = v(F ) + Σv(Fi ) − n para cada primo F complejidad esencial: ev(F ) = v(F ) − m
donde m es el número de subgrafos de F que ∈ {D0, D1, D2, D3}
• La complejidad de los primos depende sólo del número de nodos
predicado que tengan.
Administración y Gestión de Proyectos de Software, UNS 268 Administración y Gestión de Proyectos de Software, UNS 270
Ej.: Medida de Complejidad Esencial de Mc Cabe Medidas de Cubrimiento de Tests
Administración y Gestión de Proyectos de Software, UNS 271 Administración y Gestión de Proyectos de Software, UNS 273
• Mc Cabe afirma que la complejidad esencial indica el grado hasta el • En estrategias de caja blanca, los casos de test se seleccionan de tal
cual el grafo puede ser “reducido” descomponiéndolo en todos los manera que toda sentencia de programa se ejecute al menos una vez
subgrafos que son D − primos. (cobertura de sentencias).
• La complejidad esencial mide el número ciclomático de lo que queda • En términos de grafos de programas la cobertura de sentencias se
luego de descomponer todos los subgrafos estructurados. logra encontrando un conjunto de caminos de tal forma que todo
nodo esté en al menos un camino.
• Una idea más intuitiva de la complejidad esencial puede ser el número
ciclomático del primo más grande en el árbol de descomposición.
Administración y Gestión de Proyectos de Software, UNS 272 Administración y Gestión de Proyectos de Software, UNS 274
Ejemplo: Medidas de Cubrimiento de Tests Medidas de Cubrimiento de Tests...
Administración y Gestión de Proyectos de Software, UNS 275 Administración y Gestión de Proyectos de Software, UNS 277
• Una alternativa para tests de caja blanca es seleccionar casos de test • Es importante no sólo diseñar la estrategia, sino también el número
de tal manera que cada rama (arco) sea ejecutada al menos una vez mı́nimo de casos de test.
(cobertura de arcos).
• El teorema de descomposición nos permite calcular el NMCT.
• La estrategia de caja blanca mas exhaustiva es seleccionar casos
de test de tal forma que todo camino posible del programa sea • Un caso de test corresponde a un camino a través del grafo F .
ejecutado al menos una vez (cobertura de caminos). Prácticamente
imposible. • Para calcular el NMCT, debemos calcular el número mı́nimo de
caminos m(F ) requeridos para satisfacer la estrategia.
• Existe un impedimento básico en las estrategias de caja blanca:
Camino No Factible: es un camino del programa que no puede ser • Podemos calcular m(F ) a partir del árbol, conociendo m(F ) para
ejecutado por ningún input. los primos, la secuencia y el anidamiento.
Ejemplo: ABCEFG
Administración y Gestión de Proyectos de Software, UNS 276 Administración y Gestión de Proyectos de Software, UNS 278
Número Mı́nimo de Casos de Test: Ejemplo Ratio de Efectividad de Test...
Administración y Gestión de Proyectos de Software, UNS 279 Administración y Gestión de Proyectos de Software, UNS 281
Administración y Gestión de Proyectos de Software, UNS 280 Administración y Gestión de Proyectos de Software, UNS 282
Métodos Ponderados por Clase : WMC Número de Descendientes : NOC
Administración y Gestión de Proyectos de Software, UNS 283 Administración y Gestión de Proyectos de Software, UNS 285
Administración y Gestión de Proyectos de Software, UNS 284 Administración y Gestión de Proyectos de Software, UNS 286
Respuesta para una Clase : RFC Métricas propuestas por Lorenz y Kidd
• Puede surgir el interrogante de si la clase está modelada • Número de Operaciones Invalidadas por una Subclase (NOI)
correctamente.
– Invalidación: cuando una subclase substituye una operación
heredada por una versión especializada para su propio uso.
Administración y Gestión de Proyectos de Software, UNS 287 Administración y Gestión de Proyectos de Software, UNS 289
Falta de Cohesión en los Métodos : LCO Métricas propuestas por Lorenz y Kidd...
• El número de pares de métodos cuya similitud es cero menos el • Número de Operaciones Agregadas por una Subclase (NOA)
número de pares de métodos cuya similitud es distinta de cero. Si
el valor es negativo, se asume cero. – Las subclases se especializan agregando atributos y operaciones
privadas.
• Similitud: si dos pares de métodos acceden a uno o más de los
mismos atributos. • Indice de Especialización (IE) = (N OI ∗ nivel)/Mtotal .
– nivel= nivel de la jerarquı́a de clases donde reside la clase.
• La cohesión de los métodos dentro de una clase es deseable ya que
– Mtotal=número total de métodos para la clase.
promueve el encapsulamiento.
Administración y Gestión de Proyectos de Software, UNS 288 Administración y Gestión de Proyectos de Software, UNS 290
Métricas Orientadas a Operaciones Métricas para Pruebas OO (Binder)...
Administración y Gestión de Proyectos de Software, UNS 291 Administración y Gestión de Proyectos de Software, UNS 293
• Carencia de Cohesión en Métodos (LOC). – Guión de Escenario: es una secuencia detallada de pasos que
• Porcentaje Público y Protegido (PPP): Los atributos públicos describen la interacción entre el usuario y la aplicación.
se heredan de otras clases. Los atributos protegidos son una
especialización y privados de una clase especı́fica. Esta métrica • Número de Clases Claves (NCC)
indica el ratio entre ambos. – Clase Clave: Clase central al dominio del problema.
• Acceso Público a Datos Miembros (APD): Indica el número de
clases (o métodos) que pueden acceder a los atributos de otra • Número de Subsitemas (NSUB)
clase, violando el encapsulamiento.
– Proporciona una idea de la asignación de recursos, de planificación
y de esfuerzo de integración.
Administración y Gestión de Proyectos de Software, UNS 292 Administración y Gestión de Proyectos de Software, UNS 294