POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
Clase 05a calidad verificacion validacion
1. Introducción a la Calidad
y Pruebas de Software
¿seguro que el software funciona bien?
¿seguro que hace lo que el cliente quiere que haga?
Universidad de los Andes
Demián Gutierrez
Febrero 2013
1
3. ¿Calidad?
La calidad es sinónimo de software que
funciona acorde a lo especificado por el
cliente
Hoy en día, se considera que una de las
mejores métricas de calidad de software es la
satisfacción del cliente con respecto al
producto desarrollado
¿será suficiente?
3
4. ¿Calidad?
tres visiones distintas
usuario
necesidades, valor, desarrolladores
facilidad de uso, fallas / ¿qué tanto puedo dormir
errores, recuperación de noche?
frente a fallas / errores ¿qué tan miserable es mi
trabajo?
¿qué tan fácil de
entender, mantener y
modificar es el producto
en el que estoy
trabajando?
negocio
retorno de inversión
relación costo beneficio
¿qué tan fácil de
mantener y modificar es
el producto?
4
5. ¿Calidad?
Tiene su impacto
externa principal en la
Usualmente es la que percepción que tiene
de alguna forma ve el cliente del
(sufre o disfruta) el producto
cliente directamente
Tiene su impacto
principal en lo
¿calidad de mantenible y flexible
software? interna que es el software
Es la que desarrollado
usualmente vemos (muy importante)
(sufrimos) los
desarrolladores o Generalmente
sufre indirectamente (aunque no
el cliente necesariamente), una
buena calidad interna
tiende a producir un
producto con buena
calidad externa
5
6. ¿Calidad?
tres visiones distintas
usuario
necesidades, valor, desarrolladores
facilidad de uso, fallas / ¿qué tanto puedo dormir
errores, recuperación de noche?
frente a fallas / errores ¿qué tan miserable es mi
trabajo?
Calidad Externa ¿qué tan fácil de
entender, mantener y
modificar es el producto
en el que estoy
trabajando?
negocio
retorno de inversión Calidad Interna
relación costo beneficio
¿qué tan fácil de
mantener y modificar es
el producto?
6
7. Calidad y Requisitos
¿existe alguna relación entre
la calidad de un producto de
software y sus requisitos?
¿funcionales?
¿no funcionales?
7
8. ¿Calidad?
La calidad del software es el conjunto de cualidades que lo
caracterizan y que determinan su utilidad y existencia
Para que un software sea útil y su existencia tenga sentido,
entre otras cosas, tiene que satisfacer las necesidades de
los clientes/usuarios
La calidad es sinónimo de eficiencia, flexibilidad,
corrección, confiabilidad, mantenibilidad, portabilidad,
usabilidad, seguridad, integridad y cualquier otro atributo
que se defina que debe tener un producto de software
(¿suenan conocidos esos atributos?)
8
10. (1) (3)
desarrolladores (opcional)
introducen algún tipo de usuarios
error en el código del disparan el error en el
sistema, o fallan en prever código o utilizan el
alguna forma en la que se
usará el sistema (2) software de una forma
imprevista
(error humano) sistema
se pone en producción
con los defectos
introducidos
involuntariamente por los
desarrolladores
(4)
BU resultado
G ! Se produce algún tipo de
consecuencia no deseada
¿algo explota?
¿algo se estrella?
etc
10
11. una falla de software ocurre
cuando un programa no
cumple con las
especificaciones, es decir,
con el comportamiento
esperado de dicho programa
11
12. ¿Fallas de Software?
¿el costo que producen
las fallas del software?
(video)
http://www.youtube.com/watch?v=kYUrqdUyEpI
http://www.youtube.com/watch?v=gp_D8r-2hwk
http://www.youtube.com/watch?v=EMVBLg2MrLs
12
14. ¿Fallas de Software?
el costo que producen las fallas del
software se puede apreciar en varios
casos de estudio:
La explosión del ARIANE 5 ocasionada por un error de software
costó, a la Agencia Espacial Europea, $370 millones
(el video que acaban de ver)
14
15. ¿Fallas de Software?
NASA Mars Climate Orbiter: For nine months, the Mars
Climate Orbiter was speeding through space and speaking
to NASA in metric. But the engineers on the ground were
replying in non-metric English
($125 millones perdidos por una confusión de unidades)
15
16. ¿Fallas de Software?
el costo de no poder poner un sistema
en producción debido a su baja calidad
Un error en el sistema de manejo de equipajes costó, al
aeropuerto de Denver en EEUU, más de $ 1.1 millones diarios
No pudieron abrir el nuevo aeropuerto a tiempo, tuvieron que
esperar hasta resolver el problema, hacer que el sistema de
manejo de equipaje fuera estable les tomó más de 6 meses
16
17. ¿Fallas de Software?
este costo es incalculable cuando estas fallas afectan
la vida humana:
Una falla en el sistema de defensa Patriot permitió que un misil
SCUD iraquí impactará una barraca de soldados americanos en
Dhahran causando la muerte de 28 personas y dejando 98
heridos
The British destroyer H.M.S. Sheffield was sunk in the Falkland
Islands war. According to one report, the ship's radar warning
systems were programmed to identify the Exocet missile as
"friendly" because the British arsenal includes the Exocet's
homing device and allowed the missile to reach its target, namely
the Sheffield
¿Karma? ¿Justicia poética? ¿Causalidad? … 17
Se podrían decir muchas sutilezas, pero no tengo ganas
18. ¿Fallas de Software?
un ejemplo más dramático:
desperfectos en el software de la
máquina de radioterapia Therac-25
produjeron varias muertes por
sobredosis
si los operadores usaban lentamente a IU entonces
el software funcionaba correctamente,
en la medida en que los operadores se volvieron
más diestros usando el software, comenzaron a utilizar
más rápidamente la IU lo que generó la falla
18
20. ¿Calidad?
la calidad del software se puede medir
(aunque no siempre es fácil)
Cantidad de Cantidad de Cantidad de
defectos por línea defectos por defectos por
de código Release “x” unidad
Conformidad con
Aserciones por
Estándares de Complejidad líneas de código
Programación Ciclomática
Cobertura de Cualquier Cantidad de
Código tipo de prueba aplicada Pruebas
y las métricas
resultantes
Estudios / Pruebas
Otras...
de Usabilidad
20
21. Calidad: Medir, Verificar y Asegurar
verificar / medir
la calidad
vs
asegurar la calidad
¿cuál es la diferencia?
¿cuál es más importante?
21
22. Calidad: Medir y Verificar
¿recuerdan el proceso en cascada?
¿por qué estamos
Definición de
Requerimientos hablando de
pruebas y de
Diseño de
Sistema calidad en una
y de Software
etapa tan temprana
Implementación del curso?
y Pruebas de
Unidades (sobre todo de
calidad interna)
Integración y
Prueba del
Sistema
¿qué sucede si
Operación y
aquí encontramos Mantenimiento
un problema?
22
23. Calidad: Medir y Verificar
Visión clásica -> La calidad del software puede medirse
después de elaborado el producto. Pero
esto puede resultar muy costoso si se
detectan problemas derivados de
imperfecciones en el diseño, por lo que es
Definición de
Requerimientos imprescindible tener en cuenta tanto la
obtención de la calidad final de un producto,
Diseño de
como su control durante todas las etapas
Sistema del ciclo de vida del software
y de Software
Implementación
y Pruebas de
Unidades
Integración y
Prueba del
Sistema
Operación y
Mantenimiento
¿cómo se ataca este problema desde la visión ágil? 23
24. Calidad: Medir y Verificar VS Asegurar
Proceso,
Prácticas
Aseguramiento
de la Calidad
Recursos
Equipos,
Insumos,
Calidad RRHH
(en general)
¿pruebas continuas
(de software) del producto?
¿integración continua?
¿entregas frecuentes?
Producto
(no necesariamente
Verificación
la versión final) de la Calidad
24
25. Calidad: Asegurar...
Es decir, para hacer software
de calidad
(asegurar la calidad)
es necesario tener buenos
procesos, buen personal,
buenas prácticas, etc...
25
27. Calidad: Costo / Relatividad
la calidad es relativa,
varía de un sistema a otro
Un software elaborado para el control de naves espaciales debe
ser confiable al nivel de "cero fallas"
un producto de software para ser explotado durante un largo
período (10 años o más), necesita ser confiable, mantenible y
flexible para disminuir los costos de mantenimiento y
perfeccionamiento durante el tiempo de explotación
Un software hecho para ejecutarse una sola vez no requiere el
mismo nivel de calidad que los productos anteriores
27
28. Calidad: Costo / Relatividad
la calidad tiene un precio asociado
encontrar un balance adecuado es
clave
The Cost of Quality
http://asq.org/learn-about-quality/cost-of-quality/overview/overview.html
es decir el costo de NO hacer un producto con la calidad suficiente
vs
el costo de hacer un producto con excesiva calidad
28
29. Calidad: Costo / Relatividad
usted quiere
estar aquí
Mayor Costo
Mayor Calidad
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Costo de Desarrollo
Costo de Mantenimiento, Soporte, Cambio, Operación, etc
Costo Total 29
31. Verificación y Validación
Relación Calidad Relación
CLIENTE (en general) ESPECIFICACIONES
-> (de software) ->
ESPECIFICACIONES PRODUCTO
PRODUCTO
Validación: ¿Se Verificación: ¿Se
está construyendo el está construyendo el
producto correcto? producto
correctamente?
Cumple con las Cumple con las
expectativas del cliente especificaciones
¿El software CORRE /
FUNCIONA como
debería? 31
32. Verificación y Validación
Modelado Ingeniería Construcción Pruebas Entrega
Diseño Diseño
de de e de la de la
Arq. Detallado
Negocios Requisitos Integración Aplicación Aplicación
… Todo el Proceso de Desarrollo ...
Verificación y Validación
el buen software depende de los detalles, en el proceso
de validación y verificación se pulen los detalles y se
atan los cabos sueltos...
32
34. Verificación Software
Técnicas
dinámicas
Pruebas
(Corriendo el
producto)
Verificación
Producto
de la Calidad
Inspecciones Análisis Verificación
Revisiones Técnicas Estático Formal
Técnicas estáticas
(Sin correr el software o producto)
34
35. Verificación Software
(Técnicas Estáticas)
¿% errores detectados?
¿eficientes o no?
Ver Sommerville 6ed
Otras... pág. 429 observaciones
De Documentos de Fagan en IBM
(Requerimientos, Ver visión de las
Diseño, Pruebas, inspecciones en XP
etcétera) Automatizadas
(Ej: LINT,
Compiladores, IDEs)
Inspecciones De Interfaz de
Checkstyle
Revisiones Técnicas Usuario
FindBugs
PDM
De Código Hammurapi
Análisis
(Análisis estático,
Estático
sin ejecutar)
Manuales
(Revisiones
de Código)
Revisiones Formales
Programación por Pares
35
36. Verificación Software
(Técnicas Dinámicas)
Aspecto a Evaluar Grano del
Componente
No Funcionales a Probar
Rendimiento, De Sistema
Stress (fin a fin)
Funcionales De Integración
Instalación
Unitaria
Pruebas Seguridad
Otras
Conocimiento Nivel de Aceptación
del Código Automatización
Caja Negra Manuales Alfa
De Regresión
Caja Blanca (automatizadas) Beta
36
37. Calidad: Algunas Historias...
algunas historias
sobre fallas de
software:
http://www.cs.tau.ac.il/~nachumd/verify/horror.html
http://www.cse.lehigh.edu/~gtan/bug/softwarebug.html
http://www.wired.com/software/coolapps/news/2005/11/69355
http://www.it-cortex.com/Stat_Failure_Rate.htm
http://www.rand.org/pubs/papers/P4947/
(este artículo es particularmente interesante, a pesar de ser de 1972)
41