SlideShare une entreprise Scribd logo
1  sur  46
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
La calidad no es un acto, es un hábito.


                                     Aristóteles
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
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
Introducción
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!
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
   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?
Introducción
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
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
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
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
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
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
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)
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
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
Una definición dura de calidad
¿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
¿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
¿Qué es computación científica?
¿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
¿Qué es computación científica?
¿Qué es computación científica?
¿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
¿Qué es computación científica?
¿Qué es computación científica?
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
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
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
Calidad en el software: el
conundrum
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
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
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
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
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!
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
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
Aseguramiento de calidad en
software científico
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
Aspectos de calidad en el
software científico
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!
Aspectos de calidad en el
software científico
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
santiago.nunez@micit.go.cr
    snunezcr@acm.org

Contenu connexe

Tendances

Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XPJorw Yengle
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadXKWDX
 
SSTQB - Glosario de terminos de pruebas de software
SSTQB  - Glosario de terminos de pruebas de softwareSSTQB  - Glosario de terminos de pruebas de software
SSTQB - Glosario de terminos de pruebas de softwareProfessional Testing
 
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?Kudos S.A.S
 
Monografia metodologia agil xp oficial
Monografia metodologia agil xp oficialMonografia metodologia agil xp oficial
Monografia metodologia agil xp oficialHarry G Portales
 
Gestion de riesgos
Gestion de riesgosGestion de riesgos
Gestion de riesgosjoselucho_89
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Cesar Acosta
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xpCrisCobol
 
Futuro del Software: Impacto en las organizaciones y en los profesionales
Futuro del Software:  Impacto en las organizaciones  y en los profesionalesFuturo del Software:  Impacto en las organizaciones  y en los profesionales
Futuro del Software: Impacto en las organizaciones y en los profesionalesAISTI
 
Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Renata Briseño
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xpfiremas
 
Gestion de proyectos - Estimación del Esfuerzo
Gestion de proyectos - Estimación del EsfuerzoGestion de proyectos - Estimación del Esfuerzo
Gestion de proyectos - Estimación del EsfuerzoMarta Silvia Tabares
 

Tendances (20)

Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XP
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidad
 
SSTQB - Glosario de terminos de pruebas de software
SSTQB  - Glosario de terminos de pruebas de softwareSSTQB  - Glosario de terminos de pruebas de software
SSTQB - Glosario de terminos de pruebas de software
 
Diapositivas xp
Diapositivas xpDiapositivas xp
Diapositivas xp
 
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?Introducción  a la Ingeniería de Software:Qué es un Buen Sistema?
Introducción a la Ingeniería de Software:Qué es un Buen Sistema?
 
Manual01
Manual01Manual01
Manual01
 
Monografia metodologia agil xp oficial
Monografia metodologia agil xp oficialMonografia metodologia agil xp oficial
Monografia metodologia agil xp oficial
 
Gestion de riesgos
Gestion de riesgosGestion de riesgos
Gestion de riesgos
 
Programación Xp Nocturno
Programación Xp NocturnoProgramación Xp Nocturno
Programación Xp Nocturno
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Ingenieria De Software
Ingenieria De SoftwareIngenieria De Software
Ingenieria De Software
 
Xp
XpXp
Xp
 
Futuro del Software: Impacto en las organizaciones y en los profesionales
Futuro del Software:  Impacto en las organizaciones  y en los profesionalesFuturo del Software:  Impacto en las organizaciones  y en los profesionales
Futuro del Software: Impacto en las organizaciones y en los profesionales
 
Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)
 
Programacion extrema_WR
Programacion extrema_WRProgramacion extrema_WR
Programacion extrema_WR
 
Paso6 201014 25_colaborativo
Paso6 201014 25_colaborativoPaso6 201014 25_colaborativo
Paso6 201014 25_colaborativo
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Gestion de proyectos - Estimación del Esfuerzo
Gestion de proyectos - Estimación del EsfuerzoGestion de proyectos - Estimación del Esfuerzo
Gestion de proyectos - Estimación del Esfuerzo
 

Similaire à Calidad de Software Científico: Aspectos Clave

Intoduccion A La Ingenieria Del Software
Intoduccion A La Ingenieria Del SoftwareIntoduccion A La Ingenieria Del Software
Intoduccion A La Ingenieria Del Softwareguest9ad165
 
Curso ingeniería de software parte i
Curso ingeniería de software parte iCurso ingeniería de software parte i
Curso ingeniería de software parte iparafernalico
 
ing. de software
ing. de softwareing. de software
ing. de softwareellizabp_22
 
PruebasEstaticasSP (1).pdf
PruebasEstaticasSP (1).pdfPruebasEstaticasSP (1).pdf
PruebasEstaticasSP (1).pdfEDISON673136
 
Aseguramiento de calidad
Aseguramiento de calidadAseguramiento de calidad
Aseguramiento de calidadJorge Garcia
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Softwareem3marquez
 
Proceso del Software Una visión General
Proceso del Software Una visión GeneralProceso del Software Una visión General
Proceso del Software Una visión GeneralRuth Hidalgo Tene
 
Trabajo investigacion (jeiner gonzalez.b)
Trabajo investigacion (jeiner gonzalez.b)Trabajo investigacion (jeiner gonzalez.b)
Trabajo investigacion (jeiner gonzalez.b)Jeiner Gonzalez Blanco
 
Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)Jeiner Gonzalez Blanco
 
Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)Jeiner Gonzalez Blanco
 
Proceso de Software Una Visión General
Proceso de Software Una Visión GeneralProceso de Software Una Visión General
Proceso de Software Una Visión GeneralRuth Hidalgo Tene
 

Similaire à Calidad de Software Científico: Aspectos Clave (20)

Intoduccion A La Ingenieria Del Software
Intoduccion A La Ingenieria Del SoftwareIntoduccion A La Ingenieria Del Software
Intoduccion A La Ingenieria Del Software
 
Curso ingeniería de software parte i
Curso ingeniería de software parte iCurso ingeniería de software parte i
Curso ingeniería de software parte i
 
Is01
Is01Is01
Is01
 
14.administración de la calidad
14.administración de la calidad14.administración de la calidad
14.administración de la calidad
 
ing. de software
ing. de softwareing. de software
ing. de software
 
PruebasEstaticasSP (1).pdf
PruebasEstaticasSP (1).pdfPruebasEstaticasSP (1).pdf
PruebasEstaticasSP (1).pdf
 
introducción ingeniería de software
introducción  ingeniería de  softwareintroducción  ingeniería de  software
introducción ingeniería de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Ensayo sobre la calidad de software
Ensayo sobre la calidad de softwareEnsayo sobre la calidad de software
Ensayo sobre la calidad de software
 
Aseguramiento de calidad
Aseguramiento de calidadAseguramiento de calidad
Aseguramiento de calidad
 
Calidad de software Unidad 3
Calidad de software Unidad 3Calidad de software Unidad 3
Calidad de software Unidad 3
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Proceso desarrollo software
Proceso desarrollo softwareProceso desarrollo software
Proceso desarrollo software
 
proceso del software_2
proceso del software_2proceso del software_2
proceso del software_2
 
Proceso del Software Una visión General
Proceso del Software Una visión GeneralProceso del Software Una visión General
Proceso del Software Una visión General
 
Trabajo investigacion (jeiner gonzalez.b)
Trabajo investigacion (jeiner gonzalez.b)Trabajo investigacion (jeiner gonzalez.b)
Trabajo investigacion (jeiner gonzalez.b)
 
Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)
 
Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)Mule investigation (jeiner gonzalez.b)
Mule investigation (jeiner gonzalez.b)
 
Proceso de Software Una Visión General
Proceso de Software Una Visión GeneralProceso de Software Una Visión General
Proceso de Software Una Visión General
 

Calidad de Software Científico: Aspectos Clave

  • 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
  • 2. La calidad no es un acto, es un hábito. Aristóteles
  • 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
  • 19. Una definición dura de calidad
  • 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
  • 22. ¿Qué es computación científica?
  • 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
  • 24. ¿Qué es computación científica?
  • 25. ¿Qué es computación científica?
  • 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
  • 27. ¿Qué es computación científica?
  • 28. ¿Qué es computación científica?
  • 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
  • 32. Calidad en el software: el conundrum
  • 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
  • 40. Aseguramiento de calidad en software científico
  • 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
  • 42. Aspectos de calidad en el software científico
  • 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!
  • 44. Aspectos de calidad en el software científico
  • 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
  • 46. santiago.nunez@micit.go.cr snunezcr@acm.org