Está en la página 1de 38

Verificacin y

Validacin del
Software
Unidad
2. Revisiones del
Software (Parte 1)

Unidad 2: Revisiones del


Software
1.
2.
3.
4.

5.
6.

Definicin y caractersticas de las revisiones del


software
Tipos de revisiones de software
Estndar IEEE-1028 "Standard for Software
Reviews
El proceso de cada uno de los principales tipos de
revisin: inspecciones, recorridos y revisiones
personales
Revisin de los principales productos de trabajo:
plan del proyecto, requerimientos, diseo, cdigo
Formatos propuestos para la documentacin de
las revisiones de software
Revisiones del Software

Revisiones de software, qu
son?
Son

parte del proceso de verificacin del


software.
Las revisiones o inspecciones de software,
son un proceso de V&V esttico en el que un
sistema software se revisa para encontrar
errores, omisiones y anomalas.
Generalmente se centran en el cdigo fuente,
pero pueden aplicarse a cualquier producto del
proceso de desarrollo.
Son

un filtro para el proceso de software.


Revisiones del Software

Revisiones de software, qu
son?

En los procesos de manufactura tradicional, las


inspecciones por especialistas en aseguramiento de
la calidad es una prctica aceptada, y comn.

Estas inspecciones toman lugar en puntos


especficos de la lnea de ensamblaje, y son usadas
para asegurar que las partes y los ensamblajes estn
correctamente construidos acorde a las
especificaciones.

La forma ms comn de inspeccin sigue siendo una


persona haciendo un juicio basado en su experiencia.
Revisiones del Software

Revisiones de software, qu
son?
Las

inspecciones son usadas para asegurar la


calidad durante el proceso de desarrollo, no
slo en la fase de implementacin.

Si

una organizacin mantiene registros de los


resultados de las inspecciones y de todos los
otros mtodos de identificacin de defectos,
podr detectar el porcentaje promedio de
errores localizados, y entonces indicar cundo
un producto est listo para pasar a la
siguiente etapa del proceso de desarrollo.
Revisiones del Software

Revisiones de software, qu
son?
Las

revisiones de software pueden ser


muy variadas,
desde revisiones informales, como una
reunin informal alrededor de una mquina
de caf donde se discuten aspectos
tcnicos de algn producto del proceso,
hasta revisiones formales, como una
presentacin formal del diseo del
software ante un auditorio de clientes,
gestores y personal tcnico.
Revisiones del Software

Revisiones de Software:
Ventajas
Ventaja

Durante las pruebas, los errores pueden ocultar


otros errores.
Cuando

se descubre un error, nunca se puede estar


seguro de si otras anomalas de salida son debidas a un
nuevo error o son efectos secundarios del error original.

Debido a que la inspeccin es un proceso


esttico, no hay que preocuparse de las
interacciones entre errores.
Una

nica sesin de inspeccin puede descubrir


muchos errores en un sistema
Revisiones del Software

Revisiones de Software:
Ventajas
Ventaja

Pueden inspeccionarse versiones


incompletas de un sistema sin costos
adicionales.
Si

un programa est incompleto, entonces se


necesita desarrollar software de soporte
especializado para las pruebas a fin de probar
aquellas partes que estn disponibles.

Revisiones del Software

Revisiones de Software:
Ventajas
Ventaja

Adems de buscar los defectos en el


programa, una inspeccin tambin puede
considerar atributos de calidad ms
amplios de un programa, tales como
grado de cumplimiento con los
estndares, portabilidad y mantenibilidad.
Puede

buscarse ineficiencias, algoritmos no


adecuados y estilos de programacin que
podran hacer que el sistema fuese difcil de
mantener y actualizar.
Revisiones del Software

Algunos problemas
Problema

1.

Uno de los mayores daos en las


inspecciones, es la inhabilidad de los
productores y los inspectores de diferenciar
un producto de la persona que lo creo.
Cuando

un producto particular tiene muchos


errores, los inspectores en ocasiones pueden
ensaarse atacando al productor.
Se debe mantener la inspeccin centrada en el
producto, as como un tono profesional durante
las reuniones de inspeccin.
Revisiones del Software

10

Algunos problemas
Problema

2.

Tratar de usar inspecciones sin programar el


tiempo adecuado para su preparacin y
seguimiento.
Una

preparacin insuficiente reduce el nmero


de lneas o elementos que pueden ser
inspeccionados en una reunin particular, dado
que el tiempo se consume en tratar de entender
el producto.
Un seguimiento insuficiente puede causar que
los defectos se mantengan. Defectos que podran
no ser encontrados en pruebas posteriores.
Revisiones del Software

11

Qu se busca?
La reduccin de defectos,
fallas, errores, etc. en el
sistema de software.

Algunas enfermedades, dicen los mdicos,


son fciles de curar en sus inicios aunque
difciles de reconocer pero en el transcurso
del tiempo, cuando no han sido reconocidas a
primera vista y tratadas, se vuelven fciles de
reconocer pero difciles de curar

Nicols Maquiavelo

Problemas de calidad del


software

La meta del aseguramiento de la calidad, es eliminar los


problemas en el software, los cuales pueden tener
distintos nombres como bugs, fallas, errores, defectos,
etc.
Es importante definir a qu nos referimos con cada
cosa, por ejemplo:
Error:
es

un problema descubierto antes de que el software sea liberado


entre usuarios finales.

Defecto:
es

un problema detectado slo despus de que el software ha sido


liberado entre los usuarios finales.

La diferencia tambin podra estar entre si el problema se


detecta en la misma fase del proceso donde se gener, o en una
fase posterior.
Revisiones del Software

14

Impacto de los defectos


El

objetivo de las inspecciones es


encontrar los errores antes de que se
conviertan en defectos,
de modo que no se propaguen a travs
del proceso

Revisiones del Software

15

Ampliacin y eliminacin de
defectos
Para

ilustrar la generacin y deteccin


de errores, usaremos el siguiente
modelo de ampliacin de defectos.

Defectos
Errores que
vienen de
pasos
previos

Deteccin

Porcentaje
de eficiencia
Errores amplificados 1:x
para
deteccin de
Nuevos errores generados errores
Errores pasados por alto

Revisiones del Software

Errores que
pasan al
siguiente
paso

16

Modelo de ampliacin de
defectos
Un

recuadro representa un paso de


desarrollo de software.
Durante el paso, los errores se pueden
generar de manera inadvertida.
La revisin puede fallar en descubrir errores
generados de manera reciente y errores de
pasos anteriores, lo que resulta en cierto
nmero de errores que se pasan por alto.
En algunos casos, los errores que se pasan
por alto de pasos anteriores, se amplifican
con el trabajo actual.
Revisiones del Software

17

Ampliacin y eliminacin de
defectos
SIN inspeccin

Diseo
preliminar
0
10 6
0
0%
4
10

Diseo
Detallado
6
4x1.5 0%
25
X = 1.5

94

Prueba de
integracin
0
0

50%

Es una suposicin
optimista

47

Prueba
cdigo/unida
37 10
d 10
94
27 27x3 20%
25
A
X=3
integracin

Prueba de
validacin
0
0

50%

24

Revisiones del Software

Prueba de
sistema
0
0

12

50%
Errores
latentes

18

Ampliacin y eliminacin de
defectos
CON inspeccin

Diseo
preliminar
0
3
0 70%
10

24

Prueba de
integracin
0
0

50%

12

2
1

Diseo
Detallado
Prueba
cdigo/unida
2
15 5
d5
24
1x1.5 50%
10 10x3 60%
25
25
A
X = 1.5
X=3
integracin
Prueba de
validacin
0
0

50%

Revisiones del Software

Prueba de
sistema
0
0

50%
Errores
latentes

19

Ampliacin y eliminacin de
defectos
Primer

caso:

10 errores de diseo se amplifican en 94


antes de empezar las pruebas.
12 defectos latentes se liberan al campo.
Segundo

caso:

10 errores iniciales de diseo se


amplifican en 24 al comenzar las pruebas.
Slo existen 3 defectos latentes.
Revisiones del Software

20

Ampliacin y eliminacin de
defectos
Al

considerar el costo relativo de la deteccin


y eliminacin de errores se puede establecer
el costo global.
El nmero de errores descubierto se
multiplica por el costo de eliminar un error
(1.5 unidades para el diseo, 6.5 antes de las
pruebas, 15 durante las pruebas, y 67
despus de la liberacin)
Usando los datos anteriores, los costos son:
Sin revisiones: 2177 unidades de costo
Con revisiones: 783 unidades de costo
Revisiones del Software

21

Algunos casos
ejemplo
Tomados de reportes de
investigacin publicados

Caso ejemplo 1
Inspecciones

(Fagan,
1976)

de diseo y cdigo

Revisiones del Software

23

Caso ejemplo 1
Resultados

(Fagan,
1976)

del estudio

Revisiones del Software

24

Caso ejemplo 1

(Fagan,
1976)

Resumen
Se realiz un experimento usando inspecciones de software
y recorridos (walkthroughs)
Las inspecciones consumieron alrededor del 15% del tiempo
Se obtuvo una reduccin en los errores de alrededor del 40%

Conclusiones:
Las inspecciones incrementan la productividad y la calidad
del sistema. Tambin ayudan a mejorar el control del
proceso y la administracin de los proyectos.

Fagan indica que las inspecciones pueden ayudar a


encontrar entre un 60 y 90% de los errores (Fagan,
1986)
Revisiones del Software

25

Caso ejemplo 2
(Rusell, 1991)

Datos

extrados de resultados en
proyectos de Northern Telecom.

Revisiones del Software

26

Caso ejemplo 2

(Rusell, 1991)

Datos extrados de
un sistema con
ms de 10
millones de lneas
de cdigo
Ms de 2.5
millones de lneas
de cdigo fueron
inspeccionadas
La grfica muestra
el costo en
esfuerzo de
encontrar defectos
con inspecciones
Revisiones del Software

27

Caso ejemplo 2
(Rusell, 1991)

El tiempo dedicado a inspecciones incluye preparacin,


presentacin general del producto a inspeccionar y
reuniones de inspeccin.
El estudio muestra que se puede encontrar un defecto
por cada hora hombre dedicada a las inspecciones.
Esto es de dos a cuatro veces ms rpido que hacerlo durante
las pruebas del cdigo.

En la empresa, cada defecto encontrado despus de la


liberacin consume alrededor de 4.5 das hombre
repararlo.
Por tanto, cada hora dedicada a la inspeccin reduce alrededor
de 33 horas de mantenimiento asumiendo un da de trabajo de
7.5 horas.
Revisiones del Software

28

Caso ejemplo 2
(Rusell, 1991)

Defectos

detectados por
cada mil lneas de
cdigo en cada
paso de
inspeccin.

Entre

menos
lneas se
inspeccionen por
hora, mayor la
tasa de deteccin
de errores.
Revisiones del Software

29

Tipos de revisiones
de software

Tipos de revisiones de
software
Las

revisiones de software pueden variar


en su tipo y nivel de formalidad
(informales y formales)
Algunas de las ms comunes son:
Auditorias
Auto-inspeccin
Inspecciones tcnicas formales (o
inspecciones)
Revisiones
Recorridos (Walkthroughs)

Revisiones del Software

31

Auditorias
Es

una tcnica de verificacin realizada


durante el proceso de desarrollo de un
nuevo producto o durante el mantenimiento.
Consiste en que asegurar que tanto un
producto se ajusta a los planes, polticas,
procedimientos y estndares establecidos.
Se realizan a travs de reuniones,
observaciones y examinando los productos y
procedimientos.
Revisiones del Software

32

Auto-inspeccin

Es una revisin intensa de un producto del trabajo


para asegurar que est correcto, completo, que es
consistente y claro.
Puede involucrar distintas tareas, tales como:

Revisin de sintaxis
Examinar referencias cruzadas
Violacin de convenios
Comparacin detallada con la especificacin
Lectura de cdigo
Anlisis de diagramas de flujos de control
Sensibilizacin de caminos

Es preferible que se realice por alguien no


involucrado en el desarrollo del producto.
Revisiones del Software

33

Inspecciones tcnicas
formales
Se

realizan por un equipo que examina un


producto determinado, siguiendo roles y un
proceso bien definido.
El equipo normalmente se constituye de
cuatro o cinco miembros: moderador,
secretario, lector, el productor, el agente de
V&V, y uno o ms expertos.
El proceso normalmente involucra los
siguientes pasos: presentacin general,
preparacin, inspeccin, retrabajo, y
seguimiento.
Revisiones del Software

34

Revisiones
Se

enfoca en evaluar un producto en base a


guas, estndares y especificaciones de
desarrollo y proveer a los administradores,
evidencia de que el proceso se est
realizando acorde con los objetivos
establecidos.
La revisin es similar a las inspecciones y
recorridos, con excepcin de que incluye a la
administracin.
No se enfoca tanto en aspectos tcnicos
como las inspecciones.
Revisiones del Software

35

Recorridos
El

objetivo principal es detectar y documentar


fallas.
Esto debe ser realizado por todos los
involucrados.
Un equipo tpico para los recorridos es:

Coordinador,
Presentador,
Secretario,
Encargado de mantenimiento,
Encargado de estndares,
Agente de acreditacin, que representa al usuario
Revisores adicionales
Revisiones del Software

36

Inspecciones vs Recoridos vs
Revisiones

Las inspecciones son un proceso formal de cinco pasos.


Se utiliza una lista de comprobacin para descubrir
errores.
Un recorrido es menos formal, tiene menos pasos, y no
usa una lista de comprobacin, o documento para
reportar el trabajo del equipo.
Las inspecciones y recorridos se enfocan en asegurar la
correccin.
Las revisiones se enfocan ms en deficiencias en el
diseo, o desviaciones de los modelos conceptuales o
los requerimientos, que en los intrincados detalles de
cada lnea de la implementacin.
El enfoque de las revisiones no es en fallas tcnicas,
sino en asegurar que el diseo y el desarrollo
concuerdan con las necesidades de la aplicacin.
Revisiones del Software

37

Bibliografa
Sommerville,

captulo: 22
Pressman, captulo 26
Fagan, M.E., Design and Code inspections to
reduce errors in program development, 1976,
IBM Systems Journal, Vol. 15, No 3, Page 182211
Fagan, M.E., Advances in Software Inspections,
July 1986, IEEE Transactions on Software
Engineering, Vol. SE-12, No. 7, Page 744-751
Rusell, G.W., Experience With Inspection in
Ultralarge-Scale Development, January 1991,
IEEE Software, 8(1): 25-31.
Revisiones del Software

38