SlideShare uma empresa Scribd logo
1 de 42
CAPITULO 1




  Verificación y Validación
Asegurando que un sofware satisface las
       necesidades del usuario



                              Por Julio C. Alsina

                              Ingeniería de Software
Objetivos


• Introducción a la verificación y validación del
  software y discusión acerca de las diferencias
  entre ambas.
• Descripción del proceso de inspección de
  programa y su rol en la verificación y validación.
• Explicación de análisis estático como técnica de
  verificación
• Descripción del proceso de desarrollo del software
  Cleanroom

                                      Ingeniería de Software
Tópicos cubiertos

• Planificación de la Verificación y
  Validación
• Inspecciones de Software
• Análisis estático automatizado
• Desarrollo del software Cleanroom




                                 Ingeniería de Software
Verificación vs validación



• Verificación:
     “Estamos creando el producto correctamente”
   El software debería ajustarse a su especificación


• Validación:
      " Estamos creando el producto correcto"
   El software debería realizar lo que el usuario realmente
   necesita


                                              Ingeniería de Software
El proceso de V & V

• Es un proceso de ciclo de vida – V&V
  debería aplicarse en cada etapa en el
  proceso de software (Rev. Req., Diseño, Insp.Codigo, Prueba)

• Tiene dos objetivos principales:
   – El descubrimiento de defectos en un sistema
   – El asegurar que un sistema es utilizable en una
     situación operacional



                                                Ingeniería de Software
V&V Estática y dinámica

• Inspecciones de Software: relacionadas con el
  análisis de una representación estática de un
  sistema para descubrir problemas (V&V estática)
   – Puede ser un suplemento de un documento basado en
     una herramienta y análisis de código
• Prueba de Software: relacionadas con pruebas y
  observaciones del comportamiento del producto
  (V&V dinámica)
   – El sistema es ejecutado con datos de prueba y es
     observado su comportamiento operacional



                                           Ingeniería de Software
V&V estáticas y dinámicas


                                          Static
                                      Verificación
                                       verification
                                        Estática



Requirements
Especif. de        High-level
                   Diseño de             Formal
                                     Especificación          Detailed
                                                             Diseño
                                      specification                              Program
                                                                                Programa
specification
 Requerim.           design
                   Alto Nivel           Formal                design
                                                            Detallado


                                                                                Dynamic
                                                                               Validación
 Prototype
 Prototipo                                                                     validation
                                                                               Dinámica
             “Técnicas estáticas solo comprueban correspondencia con las especificaciones”
              “No demuestran que SW tiene utilidad operacional ni desempeño o fiabilidad”
                        “Para validar un sistema de SW se requieren PRUEBAS”
                                                                        Ingeniería de Software
Pruebas de programa

       “Son prácticas con programas que utilizan datos similares a los reales”
                      “Examinan salidas buscando anomalías”
   “Pueden realizarse en fase de Implementación o despues de finalizar la misma”
• Pueden revelar la presencia de errores, NO su
  ausencia
• Una prueba exitosa es aquella en la que se
  descubren uno o mas errores
• La única técnica de validación para requerimientos
  no funcionales
• Debe ser utilizada conjuntamente con verificación
  estática para proveer un completo proceso de V&V
                                                              Ingeniería de Software
Tipos de Pruebas

• Pruebas de Defectos
   – Pruebas diseñadas para descubrir
     defectos en los sistemas
   – Una prueba de defectos exitosa es aquella que revela la
     presencia de defectos en un sistema
   – Controladores obtienen sentimiento intuitivo de la
     fiabilidad del SW
• Pruebas estadísticas
   – Pruebas diseñadas para reflejar la frecuencia de
     entradas de usuario. Utilizadas para estimación de
     fiabilidad (número de caidas del sistema).
   – Desempeño valora Tiempo Ejec. y Tiempo Respuesta

                                             Ingeniería de Software
Metas de V& V

• La Verificación y Validación deberían
  conceder confianza en que el software
  alcanza su propósito.
• Esto NO significa que esté libre de defectos
• Mas bien debería ser lo suficientemente
  bueno para su uso y el tipo de uso
  determinará el grado de confianza que es
  necesaria

                                  Ingeniería de Software
Nivel de Confianza V & V

Depende del propósito del sistema, expectativas del
usuario y del ambiente de marketing
   – Función del Software
      • El nivel de confianza depende de cuan crítico es el software para una
        organización (Ej. sistemas criticos de medicina)
   – Expectativas del Usuario
      • Los usuarios pueden tener bajas expectativas de ciertos tipos de
        software. La tolerancia a fallas de sistema ha decrecido.
   – Ambiente de Marketing
      • Poner tempranamente un producto a la venta puede ser mas
        importante que encontrar defectos en el programa (Ej. Si clientes no
        estan dispuestos a pagar alto precio SW, son más tolerantes a fallas)

                                                        Ingeniería de Software
Pruebas y Depuración

• Pruebas y depuración de defectos son procesos distintos
• V&V están relacionados con el establecimiento de la
  existencia de defectos en un programa
• Depuración está relacionada con
  localizar y reparar estos errores
• Depuración considera formular una hipótesis acerca del
  comportamiento del programa, luego probar estas
  hipótesis para encontrar el error
• Pueden apoyarse en herramientas interactivas
  integradas con un sistema de interpretación
                                         Ingeniería de Software
El proceso de Depuración




   Test
Resultados                                                  Test
                                                          Casos de
  results     Specification
              Especificación
de pruebas                                                 cases
                                                          Pruebas



  Locate          Design             Repair                Re-test
 Localizar   Diseñar repair
                error
                      Reparac      Reparación de
                                      error
                                                          Volver a
   error                                                  program
   error           error               error               probar




                                                   Ingeniería de Software
Planeamiento de V & V

• V&V es un proceso caro. Puede ocupar la mitad del
  presupuesto de desarrollo
• Se necesita una planificación cuidadosa para obtener lo
  mejor de los procesos de pruebas e inspección
• La planificación debería estar antes que nada en el
  proceso de desarrollo
• El plan debería identificar el balance entre verificación
  estática y pruebas
• La planficación de las pruebas se relaciona con la
  definición de estándares para el proceso de pruebas,
  mas que con la descripción de las pruebas de productos
• Cuanto más crítico, mayor esfuerzo a verif. estáticas
                                           Ingeniería de Software
El modelo de desarrollo V


Requir ements
 Especif. de               System
                         Especif. de             System
                                               Diseño del              Detailed
                                                                        Diseño
specification            specification           design                 design
 Requerim.                Sistema.              Sistema.               Detallado


       PlanAcceptance
            de Prueba                  System
                                Plan de Prueba        PlanSub-system
                                                           de Prueba                        Module and
                                                                                             Codificación
                                     integration          integration                         unit code
                                                                                              y prueba de
             test plan
       de Aceptación           Integración sma.      Integr.test plan
                                                             Sub-sma.
                                      test plan                                               and tess
                                                                                            unidad y módulo




Servicio
  Service
                       Prueba de
                        Acceptance          Prueba Integra-
                                                  System             Prueba Integra-
                                                                       Sub-system
                           test
                       Aceptación             integration test
                                             ción Sistema            integration test
                                                                    ción sub-sistema


                “Derivar planes de prueba a partir de las especificaciones y diseño del sistema”


                                                                               Ingeniería de Software
La estructura de un plan de prueba de software


• Proceso de pruebas ”Descripcion de fases principales del proceso”
• Trazabilidad de requerimientos
   “Plantear de forma a probar individualmente todos los requerimientos”
• Items probados ”Especificar los items de proceso de SW a probar”
• Agenda de pruebas ”Calendarizar pruebas y asignar recursos”
• Procedimientos de almacenamiento de pruebas
   ”Almacenar resultados. Debe ser posible auditar los procesos de prueba”
• Requerimientos de software y hardware
• Limitaciones ”Anticipar restricciones que puedan afectar al proceso”



                                                           Ingeniería de Software
Inspecciones de Software

• Involucran al equipo examinando la fuente de
  representación con el objetivo de descubrir
  anomalías y defectos
• No requieren ejecución de un sistema,
  de modo que pueden ser utilizadas
  antes de la implementación
• Pueden ser aplicadas a cualquier representación
  del sistema (requerimientos, diseño, datos de
  prueba, etc.)
• Técnica muy efectiva para descubrir errores
                                      Ingeniería de Software
Exito de la Inspección

• Muchos y diferentes defectos pueden ser
  descubiertos en una sola inspección. En
  pruebas, un defecto puede enmascarar otro
  de modo que son requeridas varias
  ejecuciones. Cada prueba normalmente
  conduce a una sola falla o defecto.
• Resaltan la reutilización y el conocimiento
  de programación, de modo que los revisores
  están preparados para ver aquellos tipos de
  errores que aparecen comunmente.
                                 Ingeniería de Software
Inspecciones y Pruebas
• Las inspecciones y pruebas son complementarias y
  no técnicas de verificación opuestas
• Ambas deberían ser utilizadas
  durante el proceso de V&V
• Las inspecciones pueden chequear conformidad con
  una especificación, pero no conformidad con los
  requerimientos reales del cliente
• Las inspecciones no pueden chequear características
  funcionales, como ser rendimiento, usabilidad, etc.
• Las inspecciones sobrecargan el costo inicial pero
  conducen a ahorros luego que los equipos adquieren
  experiencia en su utilización.

                                        Ingeniería de Software
Inspecciones de Programa

• Enfoque formalizado a revisiones de
  documentos
• Intento explícito para la
  DETECCIÓN de defectos (no la corrección)
• Los defectos pueden ser errores lógicos,
  anomalías en el código que pueden indicar
  una condición errónea (por ej. una variable
  no inicializada) o el no cumplimiento de
  estándares.
                                 Ingeniería de Software
Pre-condiciones para Inspección

• Una especificación precisa debe estar disponible
• Los miembros del equipo deben estar familiarizados con
  los estándares de la organización
• Debe estar disponible el código sintácticamente correcto
• Un checklist de errores debería estar preparado
• La gerencia debe aceptar que la inspección incrementará
  los costos tempranamente en el proceso de software
• La gerencia no debe utilizar las inspecciones en las
  evaluaciones del personal


                                             Ingeniería de Software
El proceso de inspección




Planifica-
 Planning
   ción      Panorama
              Overview                                                  Follow-up
                                                                      Seguimiento
              general      Individual
                         Preparación                    Re-elabora-
                                                          Rework
                           preparation
                          individual                       ción
                                           Inspection
                                          Reunión de
                                             meeting
                                          Inspección




                                                              Ingeniería de Software
Procedimiento de Inspección

• Panorama general del sistema presentado al
  equipo de inspección (autor describe objetivo del codigo)
• Código y documentos asociados son distribuídos
  por adelantado al equipo de inspección
• Preparacion individual de los participantes
• La inspección se realiza y son descubiertos los
  errores (< 2hs). Cantidad depende de experiencia
• Se realizan las modificaciones para reparar los
  errores descubiertos
• La re-inspección puede o no ser necesaria (seguimiento)
• El documento resultante es aprobado por el
  moderador
                                            Ingeniería de Software
Equipos de Inspección

• Constituídos por al menos 4 miembros:
  – El autor del código a ser inspeccionado
  – El inspector que encuentra los errores,
    omisiones e inconsistencias
  – El lector que lee el código al equipo
  – El moderador que dirige la reunión y anota los
    errores descubiertos (responsable de planificar)
  – Otros roles son secretario y moderador en jefe.


                                      Ingeniería de Software
Checklists de Inspección

• Un checklist de errores comunes debería
  utilizarse para dirigir la inspección
• Un checklist de errores es dependiente del
  lenguaje de programación
• Cuanto mas „débil‟ el tipo de
  chequeo, mas largo el checklist
• Ejemplos: inicialización, nombrado de
  constantes, terminación de bucles, límites
  de arrays, etc.
                                  Ingeniería de Software
Chequeos de inspección
    Clase de falta                                              Chequeo de Inspección
Fallas de datos            -Están todas las variables inicializadas antes de que sus valores sean utilizados?
                           - Han sido nombradas todas las constantes?
                           - El límite inferior de los arrays debería ser 0, 1 u otro?
                           - El límite superior de los arrays debería ser igual al tamño del array o a su tamaño menos 1?
                           - Si se utilizan cadenas de caracteres, existe un delimitador explícitamente asignado?

Fallas de control          - Para cada sentencia condicional, es correcta la condición?
                           - Cada bucle se termina?
                           - Están correctamente puestos entre paréntesis las sentencias compuestas?
                           - En las sentencias CASE, son posibles todos los casos que se incluyen?
Fallas de entrada/salida   - Son utilizadas todas las variables?
                           - Todas las variables de salida tienen un valor asignado antes de que ocurra la salida?
Fallas de interfase        - Todas las llamadas a funciones y procedimientos tienen el número correcto de parámetros?
                           - Coinciden los tipos de parámetros formales y casuales?
                           - Están los parámetros en el orden correcto?
                           - Si los componentes accesan la memoria compartida, tienen el mismo modelo de la estructura de
                           memoria compartida?
Fallas de administración   - Si una estructura relacionada es modificada, han sido todos los enlaces correctamente reasignados?
de almacenamiento          - Si se utiliza almacenamiento dinámico, se ha distribuído el espacio correctamente?
                           - Luego de que el espacio ya no sea necesario, es explícitamente desocupado?

Fallas de administración   - Han sido consideradas todas las posibles condiciones de error?
de excepciones


                                                                                                  Ingeniería de Software
Ratio de Inspección

• 500 declaraciones/hora durante el panorama general
• 125 declaraciones de origen/hora durante la
  preparación individual
• 90-125 declaraciones/hora pueden ser
  inspeccionadas
• Sin embargo, la inspección es un proceso caro
• Inspeccionar 500 líneas cuesta acerca de 40 horas
  hombre
  (4 personas  1 hs. panorama gral. + 4 hs. Prep.Individual + 4 a 5 hs. Inspección)




                                                                Ingeniería de Software
Análisis estático automatizado

• Los analizadores estáticos son herramientas
  de software para el procesamiento
  de texto fuente
• Analizan el texto del programa e intentan
  descubrir condiciones potenciales de error y
  las ponen a disposición del equipo de V&V
• Es muy efectivo como soporte para las
  inspecciones. Es un suplemento pero no
  puede reemplazar el proceso de inspección
                                  Ingeniería de Software
Chequeos de análisis estático

       Clase de falta                      Chequeo de Análisis estático
Fallas de datos               - Variables utilizadas antes de su inicialización
                              - Variables declaradas pero nunca utilizadas
                              - Variables asignadas dos veces pero nunca utilizadas entre
                              asignaciones
                              - Posibles violaciones de límites de arrays
                              - Variables no declaradas
Fallas de control             - Código no encontrado
                              - Segmentos incondicionales dentro de bucles
Fallas de entrada/salida      - Variables de salida dobles
Fallas de interfase           - No coinciden los tipos de parámetros
                              - No coinciden los números de parámetros
                              - Resultados de función sin utilizarse
                              - Funciones y procedimientos que no son llamados
Fallas de administración de   - Punteros no asignados
almacenamiento                - Punteros aritméticos


                                                                  Ingeniería de Software
Etapas del análisis estático

• Análisis de Control de Flujo. Chequea los bucles
  con salidas o entradas múltiples, encuentra código
  perdido, etc.
• Análisis de uso de datos. Detecta variables no
  inicializadas, variables escritas dos veces sin una
  intervención asignada, variables que fueron
  declaradas pero nunca fueron usadas, etc.
• Análisis de Interfase. Chequea la consistencia de
  declaraciones de rutinas y procedimientos y sus
  usos.

                                         Ingeniería de Software
Etapas del Análisis Estático

• Análisis del flujo de información. Identifica las
  dependencias de variables de entrada y salida.
  No detecta anomalías, pero resalta información
  para la inspección o revisión de código.
• Análisis de rutas. Identifica las rutas utilizadas en
  el programa y analiza las declaraciones ejecutadas
  en esas rutas. Potencialmente útil en el proceso de
  revisión.
• Estas etapas generan gran cantidad de
  información, que debe ser usada con cuidado
                                          Ingeniería de Software
138% more lint_ex.c                          Listar programa
#include <stdio.h>                           Define función con 1 parametro
printarray (Anarray)
  int Anarray;
{
  printf(“%d”,Anarray);
}
main ()
{                                             Se llama función c/3 parametros
  int Anarray[5]; int i; char c;
  printarray (Anarray, i, c);                Variables i y c declaradas
  printarray (Anarray) ;                      no reciben valor y result.no se usa
}

139% cc lint_ex.c
                                              Compilación sin errores
140% lint lint_ex.c                           Lint SI DETECTA ERRORES

lint_ex.c(10): warning: c may be used before set           Variables usadas sin inicializar
lint_ex.c(10): warning: i may be used before set
printarray: variable # of args. lint_ex.c(4) :: lint_ex.c(10) #Argum. dif.a los declarados
printarray, arg. 1 used inconsistently lint_ex.c(4) ::
lint_ex.c(10)
printarray, arg. 1 used inconsistently lint_ex.c(4) ::      Análisis estático
lint_ex.c(11)
printf returns value which is always ignored                           LINT
Utilización del análisis estático

• Particularmente valioso cuando un lenguaje
  como por ej. C es utilizado, el cual tiene un
  tipeo débil y por lo tanto varios errores
  pueden no ser detectados por el compilador
• Menos efectivo en términos de costos para
  lenguajes como Java, que tienen fuertes
  controles de tipeo y pueden por lo tanto,
  detectar varios errores durante la
  compilación
                                   Ingeniería de Software
Desarrollo de software de „Sala Limpia‟

• El nombre se deriva del proceso de „Sala Limpia‟
  en la fabricación de semiconductores. La filosofía
  es evitar los defectos antes que corregirlos.
• Reemplaza a pruebas de unidades de componentes
  por inspeccion para comprobacion de consistencia
  con especificaciones
• El proceso de desarrollo está basado en:
   – Especificación formal
   – Desarrollo incremental
   – Verificación estática utilizando argumentos de
     corrección
   – Pruebas estadísticas para determinar la fiabilidad de los
     programas

                                              Ingeniería de Software
El proceso de „Sala Limpia‟



  Formally                                                 Reparación del Error
                                                              Error rework
 Formalizar
   specify
   system
Especificación

                      Define
                     Definir       Construct
                                   Construir           Formally
                                                       Verificar          Integrate
                                                                           Integrar
                     software
                 incrementos de    structured
                                    programa            verify
                                                        código           increment
                                                                        incremento
                    increments
                    software        program
                                  estructurado           code
                                                     formalmente
  Develop
 Desarrollar
 operational
   perfil                                    Design
                                               Diseñar                                    Test
                                                                                        Pruebas
   profile
 operacional                                statistical                               integrated
                                               pruebas                                   sistema
                                               tests                                    system
                                            estadísticas                               integrado




                                                                        Ingeniería de Software
Características del proceso de Sala Limpia

• Especificación formal utilizando un modelo
  de transición de estados
• Desarrollo incremental
• Programación estructurada – se utilizan
  técnicas de control limitado y abstracción
• Verificación estática utilizando
  inspecciones rigurosas
• Pruebas estadísticas del sistema (se basa en
  el perfil operacional)

                                  Ingeniería de Software
Desarrollo Incremental


                               Especificación
                                   Frozen
                                specification
                                 congelada



   Establish
   Establecer          Formal
                    Especificación        Develop s/w
                                           Desarrollo de             Deliver
                                                                   Entrega del
rerquirements
 requerimientos     specification
                       Formal              increment
                                         Incremento de sw            software
                                                                    Software




                  Solicitud de ements change request
                        Requir cambio de requerimientos




                                                            Ingeniería de Software
Especificación Formal e Inspecciones

• El modelo basado en estados es una
  especificación del sistema y el proceso de
  inspección chequea el programa
  contra este modelo
• El enfoque de programación es definido de
  manera a que la correspondencia entre el
  modelo y el sistema sea clara
• Argumentos matemáticos (no pruebas) son
  utilizados para elevar la confianza en el
  proceso de inspección
                                 Ingeniería de Software
Equipos del proceso de „Sala Limpia‟

• Equipo de Especificación.. Responsable del
  desarrollo y mantenimiento de la especificación
  del sistema.
• Equipo de Desarrollo. Responsable por desarrollar
  y verificar el software. El software NO es
  ejecutado o compilado durante este proceso.
• Equipo de Certificación. Responsable por el
  desarrollo de una serie de pruebas estadísticas para
  ejercitar el software luego del desarrollo. Modelos
  de crecimiento de la fiabilidad son utilizados para
  determinar cuando la fiabilidad es aceptable.
                                        Ingeniería de Software
Evaluación del proceso de „Sala Limpia‟

• Los resultados en IBM han sido impresionantes
  con algunas fallas descubiertas en sistemas
  entregados
• Evaluación independente muestra que el proceso
  no es mas costoso que otros enfoques
• Menos errores que en un proceso
  de desarrollo „tradicional‟
• No está claro como este enfoque puede ser
  transferido a un ambiente con ingenieros menos
  capacitados o menos motivados
                                     Ingeniería de Software
Puntos claves

• La verificación y validación no son lo mismo. La
  verficación muestra conformidad con la
  especificación; la validación muestra que el
  programa satisface las necesidades del cliente
• Los planes de prueba deberían ser elaborados para
  guiar el proceso de pruebas
• Las técnicas de verificación estática consideran la
  examinación y el análisis del programa para la
  detección de errores
• Las inspecciones de programa
  son muy efectivas para descubrir errores
                                       Ingeniería de Software
Puntos claves
• Las inspecciones de código de programa son
  realizadas por un equipo pequeño para localizar
  fallas
• Las herramientas de análisis estático pueden
  descubrir anomalías en los programas las cuales
  pueden ser indicadores de fallas en el código
• El proceso de desarrollo de „Sala Limpia‟ depende
  del desarrollo incremental, verificación estática y
  pruebas estadísticas


                                       Ingeniería de Software

Mais conteúdo relacionado

Mais procurados

Tecnicas de estimacion de software
Tecnicas de estimacion de softwareTecnicas de estimacion de software
Tecnicas de estimacion de softwareAdes27
 
Estimacion De Proyecto
Estimacion De ProyectoEstimacion De Proyecto
Estimacion De Proyectojavier
 
Métricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxMétricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxEduardo Robayo
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de softwareRodrigo Santiago
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareAndres Valencia
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y VerificacionFARIDROJAS
 
Metricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de PruebaMetricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de PruebaKevin Castillo
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de softwarerogergene
 
Software De Gestion
Software De GestionSoftware De Gestion
Software De GestionPabloraton
 
Software Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By SrikanthSoftware Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By SrikanthSrikanth Krishnamoorthy
 
Ingeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareIngeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareMoises Medina
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareKarloz Dz
 

Mais procurados (20)

Tecnicas de estimacion de software
Tecnicas de estimacion de softwareTecnicas de estimacion de software
Tecnicas de estimacion de software
 
Estimacion De Proyecto
Estimacion De ProyectoEstimacion De Proyecto
Estimacion De Proyecto
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
 
Métricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptxMétricas de Calidad del Software.pptx
Métricas de Calidad del Software.pptx
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de software
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_software
 
Lenguaje unificado de modelado
Lenguaje unificado de modeladoLenguaje unificado de modelado
Lenguaje unificado de modelado
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y Verificacion
 
Guia iso 9126
Guia iso 9126Guia iso 9126
Guia iso 9126
 
Verificación y Validación del Diseño
Verificación y Validación del DiseñoVerificación y Validación del Diseño
Verificación y Validación del Diseño
 
Metricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de PruebaMetricas de Codigo Fuente y Metricas de Prueba
Metricas de Codigo Fuente y Metricas de Prueba
 
Metodología GQM
Metodología GQMMetodología GQM
Metodología GQM
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
 
Proyecto Final - Calidad de Software
Proyecto Final - Calidad de SoftwareProyecto Final - Calidad de Software
Proyecto Final - Calidad de Software
 
Estimación de Proyectos de Software
Estimación de Proyectos de SoftwareEstimación de Proyectos de Software
Estimación de Proyectos de Software
 
Software De Gestion
Software De GestionSoftware De Gestion
Software De Gestion
 
Software Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By SrikanthSoftware Testing - A sneak preview By Srikanth
Software Testing - A sneak preview By Srikanth
 
Ingeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareIngeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de software
 
Acs
AcsAcs
Acs
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de Software
 

Destaque

Sistemas críticos - Ingeniería de Sistemas
Sistemas críticos - Ingeniería de SistemasSistemas críticos - Ingeniería de Sistemas
Sistemas críticos - Ingeniería de SistemasUniminuto - San Francisco
 
Un framework para el despliegue y evaluación de procesos software
Un framework para el despliegue y evaluación de procesos softwareUn framework para el despliegue y evaluación de procesos software
Un framework para el despliegue y evaluación de procesos softwareIván Ruiz-Rube
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de softwareAlex Hurtado
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentesjose_macias
 
Cuestionario seguridad informática
Cuestionario seguridad informáticaCuestionario seguridad informática
Cuestionario seguridad informáticaJavier Navarro
 
Calidad De Software
Calidad De SoftwareCalidad De Software
Calidad De SoftwareJimmy Campo
 
Calidad Del Producto Software
Calidad Del Producto SoftwareCalidad Del Producto Software
Calidad Del Producto Softwarealbert317
 
Modelado de procesos de negocio
Modelado de procesos de negocioModelado de procesos de negocio
Modelado de procesos de negociorehoscript
 
Qué es la ingeniería web
Qué es la ingeniería webQué es la ingeniería web
Qué es la ingeniería webVictor Barraza
 

Destaque (13)

Sistemas críticos - Ingeniería de Sistemas
Sistemas críticos - Ingeniería de SistemasSistemas críticos - Ingeniería de Sistemas
Sistemas críticos - Ingeniería de Sistemas
 
Un framework para el despliegue y evaluación de procesos software
Un framework para el despliegue y evaluación de procesos softwareUn framework para el despliegue y evaluación de procesos software
Un framework para el despliegue y evaluación de procesos software
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de software
 
Ingeniería del software basada en componentes
Ingeniería del software basada en componentesIngeniería del software basada en componentes
Ingeniería del software basada en componentes
 
Cuestionario seguridad informática
Cuestionario seguridad informáticaCuestionario seguridad informática
Cuestionario seguridad informática
 
Calidad De Software
Calidad De SoftwareCalidad De Software
Calidad De Software
 
Calidad Del Producto Software
Calidad Del Producto SoftwareCalidad Del Producto Software
Calidad Del Producto Software
 
Modelado de procesos de negocio
Modelado de procesos de negocioModelado de procesos de negocio
Modelado de procesos de negocio
 
Pruebas de caja blanca y negra
Pruebas  de caja blanca y negraPruebas  de caja blanca y negra
Pruebas de caja blanca y negra
 
Validacion web
Validacion webValidacion web
Validacion web
 
Qué es la ingeniería web
Qué es la ingeniería webQué es la ingeniería web
Qué es la ingeniería web
 
Prubea de software
Prubea de softwarePrubea de software
Prubea de software
 
Plan de pruebas
Plan de pruebasPlan de pruebas
Plan de pruebas
 

Semelhante a Calidad del software cap1

Semelhante a Calidad del software cap1 (20)

Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Sqm
SqmSqm
Sqm
 
Validación y Verificación de Software
Validación y Verificación de SoftwareValidación y Verificación de Software
Validación y Verificación de Software
 
DESARROLLO DE PROYECTOS DE SOFTWARE
DESARROLLO DE PROYECTOS DE SOFTWAREDESARROLLO DE PROYECTOS DE SOFTWARE
DESARROLLO DE PROYECTOS DE SOFTWARE
 
03 proceso de desarrollo de software
03 proceso de desarrollo de software03 proceso de desarrollo de software
03 proceso de desarrollo de software
 
Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Espoch
EspochEspoch
Espoch
 
Ra semana 16
Ra semana 16Ra semana 16
Ra semana 16
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
Fundamento del Diseño de Software
Fundamento del Diseño de SoftwareFundamento del Diseño de Software
Fundamento del Diseño de Software
 
Entregables de pruebas
Entregables de pruebasEntregables de pruebas
Entregables de pruebas
 
Webinar Oracle Application Testing Suite
Webinar Oracle Application Testing SuiteWebinar Oracle Application Testing Suite
Webinar Oracle Application Testing Suite
 
Presentacion pp
Presentacion ppPresentacion pp
Presentacion pp
 
Modelo v y cascada
Modelo v y cascadaModelo v y cascada
Modelo v y cascada
 
Las Claves para Gestionar Proyectos de Sistemas de Información
Las Claves para Gestionar Proyectos de Sistemas de InformaciónLas Claves para Gestionar Proyectos de Sistemas de Información
Las Claves para Gestionar Proyectos de Sistemas de Información
 
Desarr
DesarrDesarr
Desarr
 
Desarrollo de proyectos
Desarrollo de proyectosDesarrollo de proyectos
Desarrollo de proyectos
 
Trabajo
TrabajoTrabajo
Trabajo
 
Trabajo
TrabajoTrabajo
Trabajo
 

Último

Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesLauraColom3
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 

Último (20)

Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reacciones
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 

Calidad del software cap1

  • 1. CAPITULO 1 Verificación y Validación Asegurando que un sofware satisface las necesidades del usuario Por Julio C. Alsina Ingeniería de Software
  • 2. Objetivos • Introducción a la verificación y validación del software y discusión acerca de las diferencias entre ambas. • Descripción del proceso de inspección de programa y su rol en la verificación y validación. • Explicación de análisis estático como técnica de verificación • Descripción del proceso de desarrollo del software Cleanroom Ingeniería de Software
  • 3. Tópicos cubiertos • Planificación de la Verificación y Validación • Inspecciones de Software • Análisis estático automatizado • Desarrollo del software Cleanroom Ingeniería de Software
  • 4. Verificación vs validación • Verificación: “Estamos creando el producto correctamente” El software debería ajustarse a su especificación • Validación: " Estamos creando el producto correcto" El software debería realizar lo que el usuario realmente necesita Ingeniería de Software
  • 5. El proceso de V & V • Es un proceso de ciclo de vida – V&V debería aplicarse en cada etapa en el proceso de software (Rev. Req., Diseño, Insp.Codigo, Prueba) • Tiene dos objetivos principales: – El descubrimiento de defectos en un sistema – El asegurar que un sistema es utilizable en una situación operacional Ingeniería de Software
  • 6. V&V Estática y dinámica • Inspecciones de Software: relacionadas con el análisis de una representación estática de un sistema para descubrir problemas (V&V estática) – Puede ser un suplemento de un documento basado en una herramienta y análisis de código • Prueba de Software: relacionadas con pruebas y observaciones del comportamiento del producto (V&V dinámica) – El sistema es ejecutado con datos de prueba y es observado su comportamiento operacional Ingeniería de Software
  • 7. V&V estáticas y dinámicas Static Verificación verification Estática Requirements Especif. de High-level Diseño de Formal Especificación Detailed Diseño specification Program Programa specification Requerim. design Alto Nivel Formal design Detallado Dynamic Validación Prototype Prototipo validation Dinámica “Técnicas estáticas solo comprueban correspondencia con las especificaciones” “No demuestran que SW tiene utilidad operacional ni desempeño o fiabilidad” “Para validar un sistema de SW se requieren PRUEBAS” Ingeniería de Software
  • 8. Pruebas de programa “Son prácticas con programas que utilizan datos similares a los reales” “Examinan salidas buscando anomalías” “Pueden realizarse en fase de Implementación o despues de finalizar la misma” • Pueden revelar la presencia de errores, NO su ausencia • Una prueba exitosa es aquella en la que se descubren uno o mas errores • La única técnica de validación para requerimientos no funcionales • Debe ser utilizada conjuntamente con verificación estática para proveer un completo proceso de V&V Ingeniería de Software
  • 9. Tipos de Pruebas • Pruebas de Defectos – Pruebas diseñadas para descubrir defectos en los sistemas – Una prueba de defectos exitosa es aquella que revela la presencia de defectos en un sistema – Controladores obtienen sentimiento intuitivo de la fiabilidad del SW • Pruebas estadísticas – Pruebas diseñadas para reflejar la frecuencia de entradas de usuario. Utilizadas para estimación de fiabilidad (número de caidas del sistema). – Desempeño valora Tiempo Ejec. y Tiempo Respuesta Ingeniería de Software
  • 10. Metas de V& V • La Verificación y Validación deberían conceder confianza en que el software alcanza su propósito. • Esto NO significa que esté libre de defectos • Mas bien debería ser lo suficientemente bueno para su uso y el tipo de uso determinará el grado de confianza que es necesaria Ingeniería de Software
  • 11. Nivel de Confianza V & V Depende del propósito del sistema, expectativas del usuario y del ambiente de marketing – Función del Software • El nivel de confianza depende de cuan crítico es el software para una organización (Ej. sistemas criticos de medicina) – Expectativas del Usuario • Los usuarios pueden tener bajas expectativas de ciertos tipos de software. La tolerancia a fallas de sistema ha decrecido. – Ambiente de Marketing • Poner tempranamente un producto a la venta puede ser mas importante que encontrar defectos en el programa (Ej. Si clientes no estan dispuestos a pagar alto precio SW, son más tolerantes a fallas) Ingeniería de Software
  • 12. Pruebas y Depuración • Pruebas y depuración de defectos son procesos distintos • V&V están relacionados con el establecimiento de la existencia de defectos en un programa • Depuración está relacionada con localizar y reparar estos errores • Depuración considera formular una hipótesis acerca del comportamiento del programa, luego probar estas hipótesis para encontrar el error • Pueden apoyarse en herramientas interactivas integradas con un sistema de interpretación Ingeniería de Software
  • 13. El proceso de Depuración Test Resultados Test Casos de results Specification Especificación de pruebas cases Pruebas Locate Design Repair Re-test Localizar Diseñar repair error Reparac Reparación de error Volver a error program error error error probar Ingeniería de Software
  • 14. Planeamiento de V & V • V&V es un proceso caro. Puede ocupar la mitad del presupuesto de desarrollo • Se necesita una planificación cuidadosa para obtener lo mejor de los procesos de pruebas e inspección • La planificación debería estar antes que nada en el proceso de desarrollo • El plan debería identificar el balance entre verificación estática y pruebas • La planficación de las pruebas se relaciona con la definición de estándares para el proceso de pruebas, mas que con la descripción de las pruebas de productos • Cuanto más crítico, mayor esfuerzo a verif. estáticas Ingeniería de Software
  • 15. El modelo de desarrollo V Requir ements Especif. de System Especif. de System Diseño del Detailed Diseño specification specification design design Requerim. Sistema. Sistema. Detallado PlanAcceptance de Prueba System Plan de Prueba PlanSub-system de Prueba Module and Codificación integration integration unit code y prueba de test plan de Aceptación Integración sma. Integr.test plan Sub-sma. test plan and tess unidad y módulo Servicio Service Prueba de Acceptance Prueba Integra- System Prueba Integra- Sub-system test Aceptación integration test ción Sistema integration test ción sub-sistema “Derivar planes de prueba a partir de las especificaciones y diseño del sistema” Ingeniería de Software
  • 16. La estructura de un plan de prueba de software • Proceso de pruebas ”Descripcion de fases principales del proceso” • Trazabilidad de requerimientos “Plantear de forma a probar individualmente todos los requerimientos” • Items probados ”Especificar los items de proceso de SW a probar” • Agenda de pruebas ”Calendarizar pruebas y asignar recursos” • Procedimientos de almacenamiento de pruebas ”Almacenar resultados. Debe ser posible auditar los procesos de prueba” • Requerimientos de software y hardware • Limitaciones ”Anticipar restricciones que puedan afectar al proceso” Ingeniería de Software
  • 17. Inspecciones de Software • Involucran al equipo examinando la fuente de representación con el objetivo de descubrir anomalías y defectos • No requieren ejecución de un sistema, de modo que pueden ser utilizadas antes de la implementación • Pueden ser aplicadas a cualquier representación del sistema (requerimientos, diseño, datos de prueba, etc.) • Técnica muy efectiva para descubrir errores Ingeniería de Software
  • 18. Exito de la Inspección • Muchos y diferentes defectos pueden ser descubiertos en una sola inspección. En pruebas, un defecto puede enmascarar otro de modo que son requeridas varias ejecuciones. Cada prueba normalmente conduce a una sola falla o defecto. • Resaltan la reutilización y el conocimiento de programación, de modo que los revisores están preparados para ver aquellos tipos de errores que aparecen comunmente. Ingeniería de Software
  • 19. Inspecciones y Pruebas • Las inspecciones y pruebas son complementarias y no técnicas de verificación opuestas • Ambas deberían ser utilizadas durante el proceso de V&V • Las inspecciones pueden chequear conformidad con una especificación, pero no conformidad con los requerimientos reales del cliente • Las inspecciones no pueden chequear características funcionales, como ser rendimiento, usabilidad, etc. • Las inspecciones sobrecargan el costo inicial pero conducen a ahorros luego que los equipos adquieren experiencia en su utilización. Ingeniería de Software
  • 20. Inspecciones de Programa • Enfoque formalizado a revisiones de documentos • Intento explícito para la DETECCIÓN de defectos (no la corrección) • Los defectos pueden ser errores lógicos, anomalías en el código que pueden indicar una condición errónea (por ej. una variable no inicializada) o el no cumplimiento de estándares. Ingeniería de Software
  • 21. Pre-condiciones para Inspección • Una especificación precisa debe estar disponible • Los miembros del equipo deben estar familiarizados con los estándares de la organización • Debe estar disponible el código sintácticamente correcto • Un checklist de errores debería estar preparado • La gerencia debe aceptar que la inspección incrementará los costos tempranamente en el proceso de software • La gerencia no debe utilizar las inspecciones en las evaluaciones del personal Ingeniería de Software
  • 22. El proceso de inspección Planifica- Planning ción Panorama Overview Follow-up Seguimiento general Individual Preparación Re-elabora- Rework preparation individual ción Inspection Reunión de meeting Inspección Ingeniería de Software
  • 23. Procedimiento de Inspección • Panorama general del sistema presentado al equipo de inspección (autor describe objetivo del codigo) • Código y documentos asociados son distribuídos por adelantado al equipo de inspección • Preparacion individual de los participantes • La inspección se realiza y son descubiertos los errores (< 2hs). Cantidad depende de experiencia • Se realizan las modificaciones para reparar los errores descubiertos • La re-inspección puede o no ser necesaria (seguimiento) • El documento resultante es aprobado por el moderador Ingeniería de Software
  • 24. Equipos de Inspección • Constituídos por al menos 4 miembros: – El autor del código a ser inspeccionado – El inspector que encuentra los errores, omisiones e inconsistencias – El lector que lee el código al equipo – El moderador que dirige la reunión y anota los errores descubiertos (responsable de planificar) – Otros roles son secretario y moderador en jefe. Ingeniería de Software
  • 25. Checklists de Inspección • Un checklist de errores comunes debería utilizarse para dirigir la inspección • Un checklist de errores es dependiente del lenguaje de programación • Cuanto mas „débil‟ el tipo de chequeo, mas largo el checklist • Ejemplos: inicialización, nombrado de constantes, terminación de bucles, límites de arrays, etc. Ingeniería de Software
  • 26. Chequeos de inspección Clase de falta Chequeo de Inspección Fallas de datos -Están todas las variables inicializadas antes de que sus valores sean utilizados? - Han sido nombradas todas las constantes? - El límite inferior de los arrays debería ser 0, 1 u otro? - El límite superior de los arrays debería ser igual al tamño del array o a su tamaño menos 1? - Si se utilizan cadenas de caracteres, existe un delimitador explícitamente asignado? Fallas de control - Para cada sentencia condicional, es correcta la condición? - Cada bucle se termina? - Están correctamente puestos entre paréntesis las sentencias compuestas? - En las sentencias CASE, son posibles todos los casos que se incluyen? Fallas de entrada/salida - Son utilizadas todas las variables? - Todas las variables de salida tienen un valor asignado antes de que ocurra la salida? Fallas de interfase - Todas las llamadas a funciones y procedimientos tienen el número correcto de parámetros? - Coinciden los tipos de parámetros formales y casuales? - Están los parámetros en el orden correcto? - Si los componentes accesan la memoria compartida, tienen el mismo modelo de la estructura de memoria compartida? Fallas de administración - Si una estructura relacionada es modificada, han sido todos los enlaces correctamente reasignados? de almacenamiento - Si se utiliza almacenamiento dinámico, se ha distribuído el espacio correctamente? - Luego de que el espacio ya no sea necesario, es explícitamente desocupado? Fallas de administración - Han sido consideradas todas las posibles condiciones de error? de excepciones Ingeniería de Software
  • 27. Ratio de Inspección • 500 declaraciones/hora durante el panorama general • 125 declaraciones de origen/hora durante la preparación individual • 90-125 declaraciones/hora pueden ser inspeccionadas • Sin embargo, la inspección es un proceso caro • Inspeccionar 500 líneas cuesta acerca de 40 horas hombre (4 personas  1 hs. panorama gral. + 4 hs. Prep.Individual + 4 a 5 hs. Inspección) Ingeniería de Software
  • 28. Análisis estático automatizado • Los analizadores estáticos son herramientas de software para el procesamiento de texto fuente • Analizan el texto del programa e intentan descubrir condiciones potenciales de error y las ponen a disposición del equipo de V&V • Es muy efectivo como soporte para las inspecciones. Es un suplemento pero no puede reemplazar el proceso de inspección Ingeniería de Software
  • 29. Chequeos de análisis estático Clase de falta Chequeo de Análisis estático Fallas de datos - Variables utilizadas antes de su inicialización - Variables declaradas pero nunca utilizadas - Variables asignadas dos veces pero nunca utilizadas entre asignaciones - Posibles violaciones de límites de arrays - Variables no declaradas Fallas de control - Código no encontrado - Segmentos incondicionales dentro de bucles Fallas de entrada/salida - Variables de salida dobles Fallas de interfase - No coinciden los tipos de parámetros - No coinciden los números de parámetros - Resultados de función sin utilizarse - Funciones y procedimientos que no son llamados Fallas de administración de - Punteros no asignados almacenamiento - Punteros aritméticos Ingeniería de Software
  • 30. Etapas del análisis estático • Análisis de Control de Flujo. Chequea los bucles con salidas o entradas múltiples, encuentra código perdido, etc. • Análisis de uso de datos. Detecta variables no inicializadas, variables escritas dos veces sin una intervención asignada, variables que fueron declaradas pero nunca fueron usadas, etc. • Análisis de Interfase. Chequea la consistencia de declaraciones de rutinas y procedimientos y sus usos. Ingeniería de Software
  • 31. Etapas del Análisis Estático • Análisis del flujo de información. Identifica las dependencias de variables de entrada y salida. No detecta anomalías, pero resalta información para la inspección o revisión de código. • Análisis de rutas. Identifica las rutas utilizadas en el programa y analiza las declaraciones ejecutadas en esas rutas. Potencialmente útil en el proceso de revisión. • Estas etapas generan gran cantidad de información, que debe ser usada con cuidado Ingeniería de Software
  • 32. 138% more lint_ex.c  Listar programa #include <stdio.h>  Define función con 1 parametro printarray (Anarray) int Anarray; { printf(“%d”,Anarray); } main () {  Se llama función c/3 parametros int Anarray[5]; int i; char c; printarray (Anarray, i, c); Variables i y c declaradas printarray (Anarray) ; no reciben valor y result.no se usa } 139% cc lint_ex.c  Compilación sin errores 140% lint lint_ex.c  Lint SI DETECTA ERRORES lint_ex.c(10): warning: c may be used before set  Variables usadas sin inicializar lint_ex.c(10): warning: i may be used before set printarray: variable # of args. lint_ex.c(4) :: lint_ex.c(10) #Argum. dif.a los declarados printarray, arg. 1 used inconsistently lint_ex.c(4) :: lint_ex.c(10) printarray, arg. 1 used inconsistently lint_ex.c(4) :: Análisis estático lint_ex.c(11) printf returns value which is always ignored LINT
  • 33. Utilización del análisis estático • Particularmente valioso cuando un lenguaje como por ej. C es utilizado, el cual tiene un tipeo débil y por lo tanto varios errores pueden no ser detectados por el compilador • Menos efectivo en términos de costos para lenguajes como Java, que tienen fuertes controles de tipeo y pueden por lo tanto, detectar varios errores durante la compilación Ingeniería de Software
  • 34. Desarrollo de software de „Sala Limpia‟ • El nombre se deriva del proceso de „Sala Limpia‟ en la fabricación de semiconductores. La filosofía es evitar los defectos antes que corregirlos. • Reemplaza a pruebas de unidades de componentes por inspeccion para comprobacion de consistencia con especificaciones • El proceso de desarrollo está basado en: – Especificación formal – Desarrollo incremental – Verificación estática utilizando argumentos de corrección – Pruebas estadísticas para determinar la fiabilidad de los programas Ingeniería de Software
  • 35. El proceso de „Sala Limpia‟ Formally Reparación del Error Error rework Formalizar specify system Especificación Define Definir Construct Construir Formally Verificar Integrate Integrar software incrementos de structured programa verify código increment incremento increments software program estructurado code formalmente Develop Desarrollar operational perfil Design Diseñar Test Pruebas profile operacional statistical integrated pruebas sistema tests system estadísticas integrado Ingeniería de Software
  • 36. Características del proceso de Sala Limpia • Especificación formal utilizando un modelo de transición de estados • Desarrollo incremental • Programación estructurada – se utilizan técnicas de control limitado y abstracción • Verificación estática utilizando inspecciones rigurosas • Pruebas estadísticas del sistema (se basa en el perfil operacional) Ingeniería de Software
  • 37. Desarrollo Incremental Especificación Frozen specification congelada Establish Establecer Formal Especificación Develop s/w Desarrollo de Deliver Entrega del rerquirements requerimientos specification Formal increment Incremento de sw software Software Solicitud de ements change request Requir cambio de requerimientos Ingeniería de Software
  • 38. Especificación Formal e Inspecciones • El modelo basado en estados es una especificación del sistema y el proceso de inspección chequea el programa contra este modelo • El enfoque de programación es definido de manera a que la correspondencia entre el modelo y el sistema sea clara • Argumentos matemáticos (no pruebas) son utilizados para elevar la confianza en el proceso de inspección Ingeniería de Software
  • 39. Equipos del proceso de „Sala Limpia‟ • Equipo de Especificación.. Responsable del desarrollo y mantenimiento de la especificación del sistema. • Equipo de Desarrollo. Responsable por desarrollar y verificar el software. El software NO es ejecutado o compilado durante este proceso. • Equipo de Certificación. Responsable por el desarrollo de una serie de pruebas estadísticas para ejercitar el software luego del desarrollo. Modelos de crecimiento de la fiabilidad son utilizados para determinar cuando la fiabilidad es aceptable. Ingeniería de Software
  • 40. Evaluación del proceso de „Sala Limpia‟ • Los resultados en IBM han sido impresionantes con algunas fallas descubiertas en sistemas entregados • Evaluación independente muestra que el proceso no es mas costoso que otros enfoques • Menos errores que en un proceso de desarrollo „tradicional‟ • No está claro como este enfoque puede ser transferido a un ambiente con ingenieros menos capacitados o menos motivados Ingeniería de Software
  • 41. Puntos claves • La verificación y validación no son lo mismo. La verficación muestra conformidad con la especificación; la validación muestra que el programa satisface las necesidades del cliente • Los planes de prueba deberían ser elaborados para guiar el proceso de pruebas • Las técnicas de verificación estática consideran la examinación y el análisis del programa para la detección de errores • Las inspecciones de programa son muy efectivas para descubrir errores Ingeniería de Software
  • 42. Puntos claves • Las inspecciones de código de programa son realizadas por un equipo pequeño para localizar fallas • Las herramientas de análisis estático pueden descubrir anomalías en los programas las cuales pueden ser indicadores de fallas en el código • El proceso de desarrollo de „Sala Limpia‟ depende del desarrollo incremental, verificación estática y pruebas estadísticas Ingeniería de Software