El documento presenta el método Cleanroom Software Engineering (CSE) para el desarrollo de software de alta calidad. CSE se basa en fundamentos matemáticos y especifica el software como funciones matemáticas mediante el uso de "cajas" (negras, de estado y transparentes) que mapean entradas a salidas. El desarrollo sigue un proceso incremental con verificación y pruebas estadísticas para garantizar la calidad. CSE puede integrarse con métodos ágiles y es compatible con marcos como CMMI.
3. 2015, 4,452 entrevistados de 108 países.
Adopción generalizada
Mejoras en diversos aspectos:
● Satisfacción
● Tiempo
● Costos?
● Deuda técnica
Adopción generalizada
Mejoras en diversos aspectos:
● Satisfacción
● Tiempo
● Costos?
● Deuda técnica
¿Por qué otro método?
4. Prácticas
● Retroalimentación continua
● Pair programming
● Clean code
● Refactoring
● Pruebas: Automatización, TDD, PU
● Integración y despliegue continuos
Prácticas
● Retroalimentación continua
● Pair programming
● Clean code
● Refactoring
● Pruebas: Automatización, TDD, PU
● Integración y despliegue continuos
Deuda técnica
“La atención continua a la excelencia técnica y el buen diseño
mejora la agilidad”.
Agile Manifesto
5. ● Implementación pobre
● No implementación de prácticas de calidad
● Es más costoso detectar defectos al final
● Un programador usando análisis estático e inspecciones
genera más calidad a la mitad del costo y 3/4 partes del
tiempo que un par de programadores trabajando juntos*
● La efectividad de las pruebas es de solo 35%*
● Alrededor de un 6% de los casos de prueba tienen
defectos en sí mismos*
Seguimos generando defectos :(
*Caper Jones
La triste realidad...
10. ¿Qué es el CSE?
Imagen: By Uploaded by Duk 08:45, 16 Feb 2005 (UTC) -
http://www.grc.nasa.gov/WWW/ictd/content/labmicrofab.html, Public Domain,
https://commons.wikimedia.org/w/index.php?curid=60825
Cleanroom Software Engineering es un
método para la producción de software de
alta calidad.
Tiene su fundamento teórico en las
matemáticas.
12. “En análisis matemático, el concepto general de función,
aplicación o mapeo se refiere a una regla que asigna a
cada elemento de un primer conjunto un único elemento
de un segundo conjunto”.
Función matemática
Una función vista como una
«caja negra», que transforma
los valores u objetos de
«entrada» en los valores u
objetos de «salida»
Fuente: Wikipedia
13. ● Los programas son reglas que expresan funciones
matemáticas
● La especificación de un programa es la especificación de una
función que mapea del dominio del programa (secuencias de
inputs) a su rango (espacio de salida).
● Atributos:
– Completez: Cada elemento del dominio se mapea a al menos
un elemento del rango
– Consistencia: Cada elemento del dominio se mapea a lo
mucho un valor en el rango
– Corrección: De las especificaciones contra los requerimientos
Fundamentos de CSE
14. Especificación y diseño de “cajas”
Caja negra (BB)
Caja de estados (SB)
Caja transparente (CB)
EH -> R
(estado anterior, estímulo) -> (nuevo estado, respuesta)
(estado anterior, estímulo) -> (nuevo estado, respuesta)
a través de un modelo procedural
16. BB y SB: Representación tabular
Regla No. Historia Estímulo actual Respuesta
1 Usuario no dado de alta Ingresar al sistema Redireccionar a darse de alta
2 Usuario no dado de alta
En página de alta
Registrar datos y enviar Correo de confirmación
3 Usuario no dado de alta
En página de alta
Con correo enviado
Confirmación de correo Alta en el sistema y reenvío
a ventana de ingreso
4 Usuario no dado de alta
En página de alta
Con correo enviado
Ingresar al sistema “Mensaje de correo enviado”
Transici
ón
No.
Estado
anterior
Estímulo Nuevo estado Respuesta Regla
BB
1 noAlta Ingresar
al sistema
enProcesoAlta Redireccionar a darse de alta 1
2 enProces
oAlta
Registrar
datos y
enviar
esperandoCorreo Correo de confirmación 2
3 esperand
oCorreo
Confirmaci
ón de
correo
esperandoIngreso Alta en el sistema y envío a
ventana de ingreso
3
4 esperand
oCorreo
Ingresar
al sistema
esperandoCorreo “Mensaje de correo enviado” 4
BB
SB
17. ●
Secuencia
–Do g; h; enddo
●
Ifthen
–If p then g; endif
●
Ifthenelse
–if p then g else h; endif
●
Whiledo
–while p do g; enddo
●
DoUntil
–do g until p; enddo
CB: Representación procedural
19. ● Los programas son reglas que expresan
funciones matemáticas
● Especificación y diseño vía “cajas”
● Verificación y Validación vía Peer review
● Desarrollo incremental
● Testing con muestreo estadístico y certificación
de calidad
Fundamentos de CSE
20. ● Prueba con muestreo estadístico:
– Se utiliza en otros dominios (Ej. Manufactura)
– Valiosa cuando es imposible medir la totalidad (Ej.
Contaminación del mar)
– En software es imposible probar el 100% (”La única
prueba exhaustiva..”)
Testing estadístico
21. ● El software se ve como un modelo estocástico,
esto es una serie de eventos que se desarrollarán
en el tiempo con una cierta probabilidad
– Se elabora un modelo de utilización para representar la
(usualmente) infinita población de usos del sistema y a
partir de ahí se generan los casos de prueba
considerando un muestreo de esa población.
– Con el resultado se generan inferencias estadísticas.
– Los modelos de utilización se pueden representar
usando cadenas de Markov o gramáticas formales.
Testing estadístico
22. Representación con Markov
Estado
B
Inicio
Estado
A
Fin
100% 1%
20%
50%
10% 70%
100%
En el modelo de Markov se representan estados de uso conectados por arcos de
transición que representan estímulos posibles al sistema bajo prueba, con una
probabilidad asignada a cada arco. La probabilidad representa qué tanto se puede
seleccionar un arco de transición a partir de un estado.