Este documento trata sobre la calidad del software científico. Define la computación científica como la aplicación de modelos de simulación traducidos a código para generar descubrimientos. Explica que asegurar la calidad en software científico implica analizar posibles errores como de representación, numéricos, aproximación y simplificación. Finalmente, propone métricas y técnicas para medir y mejorar la calidad considerando estos errores.
1. Semana de Aseguramiento de la Calidad – IC@TEC
Calidad de Software en Computación
Científica
Santiago Núñez Corrales, Eng.
Investigador, Programa de Investigación e-Science, TEC
Director, Tecnologías Digitales, MICITT
3. Agenda
1. Introducción
2. Una definición dura de calidad
3. ¿Qué es computación científica?
4. Calidad en el software: el conundrum
5. Aspectos de calidad en software científico
6. De la Ciencia a la Computación
7. Algunas conclusiones
4. Introducción
La calidad es un aspecto central en la vida
moderna
Requerimiento comercial
Impacto sobre el status de vida
Medida de valor
La calidad del sofware es un tema complejo
El software siempre está en crisis!
¿Arte o ingeniería?
Cambio tecnológico
6. Introducción
Donald Knuth: el
software es un arte!
Refleja el estado
mental de un
programador al
resolver un problema
Métrica: elegancia de
la solución
La medida es
subjetiva!
7. Introducción
Mundo empresarial:
el software es un
resultado de
ingeniería
Resultado de un
proceso cuidadoso
Estándares,
herramientas de
diseño, especificación
Medida: pulgas
8. Mercado: el software
tiene más valor entre
más innovador es
La curva de adopción
tiende a ser el
modelo de facto
Decisiones:
¿desarrollo software
para lo más actual, o
lo más estable?
10. Introducción
Realidad (de la
empresa de software
CR): estándares sin
disciplina
Regla de oro
frecuente: si funciona
no lo toque!
Las pulgas se
atienden y registran,
no sistemáticamente
11. Introducción
Costa Rica debe salir progresivamente del
paradigma de maquilas de software
Crear aplicaciones en áreas más
especializadas
Software científico es una de ellas
¿Estamos preparados? No (aún).
El software científico agrega varios niveles de
complejidad
Es un área ideal para el país
12. Una definición dura de calidad
La calidad es un concepto de ingeniería
Calidad:
Medida cuantitativa del grado de cumplimiento de
un objeto o proceso de un conjunto de
especificaciones con límites de tolerancia a
desviaciones bien establecidos
Implicaciones:
Ocurre en cada paso del proceso, no solo en
etapas
Requiere disciplina y perseverancia
13. Una definición dura de calidad
¿Qué significa asegurar la calidad?
Especificar el funcionamiento ideal u óptimo sin
ambiguedades
Definir formalmente los límites de tolerancia
Especificar los pasos requeridos durante el proceso
Especificar para cada paso mecanismos de
medición del valor actual
Medir el error entre el valor ideal y el valor actual de
los límites de tolerancia
Corregir hasta que el error sea aceptable
14. Una definición dura de calidad
Las mediciones de calidad requieren una
evaluación rigurosa
¿Cómo saber si las cosas funcionan?
Hablar de calidad requiere de manera
invariable de estadística inferencial
El mundo real no es determinístico
Variables naturalmente aleatorias
Desconocimiento de condiciones iniciales
Concurrencia de eventos
15. Una definición dura de calidad
El Diseño de Experimentos (DoE) es la única
metodología confiable para determinar calidad
Por tanto, calidad es un atributo de objetos
tecnológicos únicamente
Sin experimentos, no es posible tener calidad
Experimentos reales: construcción del artefacto
tecnológico y medición de límites de tolerancia en
condiciones controladas
Experimentos virtuales: construcción de modelos
que aproximan de manera realista estados
16. Una definición dura de calidad
La calidad es un recurso, por lo tanto tiene
valor como activo intangible
Es parte de la propiedad intelectual y
usualmente es una fuente de innovación
Para garantizar calidad, se deben seguir los
principios del método científico
Existen siete factores que determinan el
proceso necesario para garantizar calidad
Las siete M (7M)
17. Una definición dura de calidad
Market: la exigencia del cliente es incremental,
no decremental
Man: las personas siempre son parte del
problema, no necesariamente de la solución
Money: la calidad tiene un costo de entrada,
pero un ahorro continuo
Material: cada objeto o proceso tiene tanta
calidad como de aquello de lo que se compone
18. Una definición dura de calidad
Machine: un proceso que se efectúa un una
máquina de alta precisión, si es bien utilizada,
producirá resultados con errores menores
Method: métodos más inteligentes permiten
mantener el equilibrio entre tiempo y costo de
la calidad
Management: administrar significa establecer
reglas claras bajo supuestos sólidos, y tomar
decisiones con criterios que conduzcan a
optimalidad de resultados
20. ¿Qué es computación científica?
La Ciencia es el proceso sistemático de hacer
el mundo objetivamente cognoscible
El inicio del conocimiento científico es la
medición de un fenómeno de manera precisa
Se mide tanto el valor obtenido como su error
experimental
A partir de los datos experimentales, se obtiene
una hipótesis y se generan teorías candidatas
Cada teoría debe refutarse y se elige la mejor
21. ¿Qué es computación científica?
Existen ocasiones en donde los experimentos
no son realizables
Las escalas de tiempo y espacio lo impiden
La cantidad de variables correlacionadas es muy
alta
El riesgo de experimentación es inaceptable
Las mediciones no pueden separarse de
incertidumbre inherente
23. ¿Qué es computación científica?
La computación científica, ciencia
computacional o e-Science es la aplicación de
modelos de simulación traducidos a código
fuente ejecutable para generar descubrimientos
científicos
El computador se transforma de apoyo
secundario a una herramienta del mismo nivel
que un telescopio o un microscopio
La computación se ha convertido en un
lenguaje de descripción de la Ciencia
26. ¿Qué es computación científica?
Por qué es importante tomar en cuenta la
computación científica:
El avance tecnológico del país está atrayendo
empresas de alto perfil, y requieren simulación
Start-ups de alto valor agregado
Disminuye los costos de laboratorio
La tendencia mundial es en proyectos
interdisciplinarios con conocimientos científicos
El área con mayor potencial de patentes y
publicaciones en otras áreas
29. Calidad en el software: el
conundrum
De regreso en el tema del software, saltan dos
preguntas a la vista:
Si el software es un arte, ¿cómo se mide la
calidad?
Si el software es una ingeniería, ¿por qué no da
buenos resultados?
Si la fabricación de autos funcionara como la
de software, uno de cada mil explotaría sin
razón aparente por día
30. Calidad en el software: el
conundrum
Posibles respuestas a las preguntas anteriores:
El desarrollo de software no debe ser un arte, pero
la creación de nuevos algoritmos sí lo es
El desarrollo de software depende de la correctitud
de las especificaciones
Las especificaciones de software tienden a ser
ambiguas. (¿Por qué? ¿Existe alguna forma de
resolverlo?)
Parte del problema radica en un desequilibrio entre
lo específico y lo general en la etapa de diseño
Es difícil medir la producción en software
31. Calidad en el software: el
conundrum
Si el software es un proceso de ingeniería,
¿cómo se define el comportamiento ideal?
Multitud de técnicas para especificar el
software, muy pocas permiten formalizar
Lenguaje Z: un formalismo matemático que
permite especificar de manera no ambigua
Basado en lógica proposicional, describe
objetos y procesos
Curva de aprendizaje alta, efectivo
33. Calidad en el software: el
conundrum
A partir de especificaciones en Z, se puede
aplicar un proceso de refinamiento:
Convertir objetos en entidades de software
Convertir procesos en diagramas de secuencia y
de estados
Identificar procesos similares entre sí
Identificar generalizaciones
El diseño de software también puede ser un
proceso calculado y con formalidad
34. Calidad en el software: el
conundrum
¿Cómo se mide la calidad del trabajo del
programador?
Cantidad de líneas de código
Cantidad de bugs
Efecto de los bugs (una línea vs piñatas)
Ponderación con el lenguaje de programación
Complejidad del problema
Total de ciclos de retrabajo
Lejanía con especificación final
35. Calidad en el software: el
conundrum
Finalmente, existe una cantidad creciente de
técnicas, lenguajes de descripción de objetos y
demás involucrados en el proceso de calidad
Mito: aplicar todas las técnicas recientes
garantiza calidad
Realidad: las técnicas no garantizan calidad,
solo garantizan condiciones bajo las cuales se
simplifica el definir métricas duras
Falta mucho por aprender de los métodos de
otras ingenierías
36. Aspectos de calidad en el
software científico
Generalmente el software científico tiene una
interacción limitada con el usuario
Los problemas son paramétricos, y los límites de
los valores son bien conocidos
Con frecuencia la interfaz gráfica es accesoria
Menor interacción → diagramas de secuencia no
incluyen HCI
La calidad en el caso de aplicaciones
científicas se concentra en la calidad de los
resultados con respecto a la realidad
37. Aspectos de calidad en el
software científico
Asegurar la calidad en el software científico
puede efectuarse analizando los posibles
casos de error que existen con respecto a
resultados
Representación
Numéricos
Aproximación
Simplicación
Inherentes
Sigue siendo software!
38. Aspectos de calidad en el
software científico
Errores de representación:
Los datos de eventos asumen rangos continuos
Los datos representables son discretos
Cantor: existen infinitamente más reales que
enteros
Overflow, underflow
Medida de calidad de un sistema: el error
(épsilon) de la máquina
Aseguramiento de calidad: utilizar operaciones
que controlen el error y un estandar
39. Aspectos de calidad en el
software científico
Errores numéricos:
Existen errores independientes de la
representación
Ocurren aún con aritmética continua
Dependen de la algoritmia
Medida de la calidad de un sistema: error entre
una función conocida y su aproximación
Aseguramiento de calidad: efectuar
benchmarks y elegir el método numérico con
mejo balance tiempo/precisión
41. Aspectos de calidad en el
software científico
Errores de aproximación:
En algunas ocasiones, el acoplamiento entre
variables es tal que el problema no admite
simplificaciones
Se utilizan funciones aproximantes
No es corregible a pesar del método numérico
Medida de calidad: error promedio y desviación
estándar con respecto a datos reales
Aseguramiento de calidad: benchmarking de
funciones aproximantes vs tiempo
43. Aspectos de calidad en el
software científico
Errores de simplificación:
En ocasiones los problemas complejos pueden
abstraerse en versiones más simples
Los detalles pequeños suelen agruparse en
términos varios de error
Dos fuentes de error
Métrica de calidad: (a) variancia de errores
varios, (b) diferencia total con datos reales
Aseguramiento de la calidad: elegir menor
simplificación posible!
45. Aspectos de calidad del software
científico
Error inherente:
Existen problemas para los cuales la incertidumbre
no puede eliminarse
Aleatoriedad
No observabilidad
Métrica de calidad: promedio y variancia en el
tiempo de valores agregados
Aseguramiento de calidad: utilizar métodos que
consideren desde el inicio la aleatoriedad y la
estocasticidad de los fenómenos complejos