SlideShare a Scribd company logo
1 of 10
Download to read offline
UNIVERSIDAD AUTONOMA DE CHIHUAHUA
            FACULTAD DE INGENIERIA




        Análisis de correctitud
  Modelado y análisis de requerimientos del
                 software

                              Equipo No. 4


                        225654 Canales Tarango Irving Manuel
                        225673 Najera Chavira Daniel Giovanni
                         225690 Ibarra Garcia Carlos Antonio




                                  Octubre - 2011




El documento pretende describir y recordar temas anteriores que hemos visto durante la
carrera, en el documento usted observara diagramas, se dará una descripción y se darán
referencias para indagar mas en el tema.
Contenido

Objetivo.................................................................................................................................3

!
Introducción..........................................................................................................................3


Desarrollo.............................................................................................................................3

!
!         Análisis de correctitud................................................................................................3
! !

! !       Simulación y prototipado............................................................................................6



!         Verificación del modelo..............................................................................................8



Conclusión............................................................................................................................9


Recomendaciones................................................................................................................9


Referencias.........................................................................................................................10




                                                                                                                                        2
Objetivo

El objetivo es indagar en los temas de la exposición la mayoría de la información se
encuentra dentro de temas importantes que corresponden a la ingeniería de software, los
apartados son sumamente precisos se recolecto un gran numero de información con el
objetivo de extraer y asociar lo mejor para que el interesado comprenda de una mejor
manera los temas.

Introducción

Al momento en que analizamos inspeccionamos con la finalidad de entender las
propiedades y las capacidades de ese algo en el que indagamos.

En términos de software el análisis caracteriza a un grupo de ejecución. También está
basado en un modelo del producto en lugar del propio producto, así abstrae elementos
que podrían ser cruciales. 

Desarrollo

Analisis de correctitud (Correctness):

Un programa es funcionalmente correcto si se comporta de acuerdo a la especificación de
las funciones (especificación de requerimientos funcionales) que debería proveer. Esta
definición de correctitud asume que existe una especificación de requerimientos
funcionales del sistema y que es posible determinar en forma no ambigua si las cumple o
no. Se presentan diversas dificultades cuando no existe dicha especificación, o si existe
pero está escrita informalmente utilizando, por ejemplo, lenguaje natural por lo que es
posible que contenga ambiguedades.

La correctitud es una propiedad matemática que establece la equivalencia entre el
software y su especificación, por lo que cuanto más riguroso se haya sido en la
especificación, más precisa y sistemática podrá ser su evaluación. Posteriormente se
verá que la correctitud puede ser evaluada mediante diversos métodos, algunos de
enfoque experimental como las pruebas, otros de enfoque analítico como verificación
formal de la correctitud. Es de notar que esta definición de correctitud no toma en
consideración el que la especificación en sí misma puede ser incorrecta por contener
inconsistencias internas, o no corresponder de forma adecuada a las necesidades para
las que fue concebido el programa.

Análisis Estático (Somerville, 2005)

Un análisis estático es la examinación de un programa sin ejecutarlo. Las inspecciones a
menudo están dirigidas por listas de comprobación de errores y heurísticas que identifican
errores comunes en diferentes lenguajes de programación.
Por lo tanto, es una técnica que se aplica directamente sobre el código fuente tal cual, sin
transformaciones previas ni cambios de ningún tipo. La idea es que, en base a ese código
fuente, podamos obtener información que nos permita mejorar la base de código
manteniendo la semántica original.



                                                                                          3
El analizador estático de código recibirá el código fuente de nuestro programa, lo
procesará intentando averiguar qué es lo que queremos que haga y nos dará sugerencias
con las que podamos mejorar ese código.




Básicamente al realizar un análisis estático, se obtiene una facilidad de mantenimiento y
de desarrollo, ya que su objetivo es minimizar la deuda técnica del proyecto.

Algunas comprobaciones que se pueden detectar mediante análisis estático son:

Encontrar partes de codigo que puedan
   ●Reducir el rendimiento.
   ●Provocar errores en el software.
   ●Complicar el flujo de datos.
   ●Tener una excesiva complejidad.
   ●Suponer un problema en la seguridad.


 Clase de defecto                          Comprobación del análisis estático
 Defectos 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 los límites de los
                                           vectores.
                                           Variables no declaradas.
 Defectos de control                       Código no alcanzable.
                                           Saltos incondicionales en bucles.
 Defectos de entrada/salida                Las variables salen dos veces sin intervenir
                                           ninguna asignación.
 Defectos de interfaz                      Inconsistencias en el tipo de parámetros.
                                           Inconsistencias en el número de parámetros.
                                           Los resultados de las funciones no se utilizan.
                                           Existen funciones y procedimientos a los que
                                           no se les llaman.
 Defectos de gestión de almacenamiento     Punteros sin asignar.
                                           Aritmética de punteros.




                                                                                              4
Las etapas implicadas en el análisis estático comprenden:

   1.Análisis del flujo de control. Esta etapa identifica y resalta bucles con múltiples
      salidas o puntos de entrada y código no alcanzable. El código no alcanzable es
      código que se salta con instrucciones goto no condicionales o que está en una
      rama de una sentencia condicional en la que la condición nunca es cierta.
   2.Análisis del uso de los datos. Esta etapa revela cómo se utilizan las variables del
      programa. Detecta variables que se utilizan sin inicialización previa, variables que
      se asignan dos veces y no se utilizan entre asignaciones, y variables que se
      declaran pero nunca se utilizan. El análisis del uso de los datos también descubre
      pruebas inútiles cuando la condición de prueba es redundante. Las condiciones
      redundantes son condiciones que son siempre ciertas o siempre falsas.
   3.Análisis de interfaces. Este análisis comprueba la consisitencia de las declaraciones
      de funciones y procedimientos y su utilización. No es necesario si se utiliza para la
      implementación un lenguaje fuertemente tipado como Java, ya que el compilador
      lleva a cabo estas comprobaciones. El análisis de interfaces puede detectar errores
      de tipos en lenguajes débilmente tipados como C. El análisis de interfaces también
      puede detectar funciones y procedimientos que se declaran y nunca son llamados
      o resultados de funciones que nunca se utilizan.
   4.Análisis del flujo de información. Esta fase del análisis identifica las dependencias
      entre las variables de entrada y salida. Mientras no detecte anomalías, muestra
      cómo se deriva el valor de cada variable del programa a partir de otros valores de
      variables. Con esta información, una inspección de código debería ser capaz de
      encontrar valores que han sido calculados erróneamente. El análisis de flujo de
      información puede tambien mostrar las condiciones que afectan al valor de una
      variable.
   5.Análisis de caminos. Esta fase del análisis semántico identifica todos los posibles
      caminos en el programa y muestra las sentencias ejecutadas en dicho camino.
      Esencialmente desenreda el control del programa y permite que cada posible
      predicado sea analizado individualmente.

Los analizadores estáticos son particularmente valiosos cuando se utiliza un lenguaje de
programación como C. Este lenguaje no tiene reglas de tipo estrictas, y la comprobación
que puede hacer el compilador es limitada. Por lo tanto, es fácil para los programadores
cometer errorres, y la herramienta de análisis estático puede automáticamente descubrir
un gran numero de errores potenciales y reducir los costes de prueba de forma
significativa.

Por otro lado los lenguajes de programación modernos como Java han eliminado algunas
características propensas a error. Todas las variables deben ser inicializadas; no hay
sentencias goto, y la gestion de almacenamiento es automática.Esta aproximación para
evitar errores en llugar de detectarlos es mas efectiva a la hora de mejorar la fiabilidad del
programa.

Análisis manual

Deberíamos tratar de realizar el análisis manual cada vez que vayamos a crear una nueva
funcionalidad en nuestro software, preguntándonos en este caso si la arquitectura actual
nos permite implementarla con facilidad, si disponemos de las librerías adecuadas o si
podemos modificar la base de nuestro código para facilitar el desarrollo de esta nueva
funcionalidad. Es decir, lo reservaremos para situaciones concretas.
                                                                                           5
Análisis automatizado

puede ser realizado con una mayor periodicidad ya que no requiere de intervención
humana y, lo que es mejor, puede ser programado y repetido tantas veces como sea
necesario. Además obra con objetividad, siempre nos va a devolver la misma respuesta
ante el mismo código fuente de entrada.




                                                               (Exposito, 2010)




Simulación y prototipado

Las herramientas PRO/SIM (de prototipos y simulación) proporcionan al ingeniero del
software la capacidad de predecir el comportamiento de un sistema en tiempo real antes
de llegar a construirlo. Además, capacitan al ingeniero del software para desarrollar
simulaciones del sistema de tiempo real que permitirán al cliente obtener ideas acerca de
su funcionamiento, comportamiento y respuesta antes de la verdadera implementación.
Debemos ubicarnos en el ciclo de vida en espiral, a en la siguiente pagina remarcamos
donde nos encontramos como ingenieros de software:




                                                                                       6
Para recordar un poco de este ciclo colocamos lo siguiente, remarcando el tercer
punto:

Ventajas:
   ●Inclusión de de análisis de riesgos a lo largo del proceso
   ●Desarrollo de software = proceso evolutivo
   ●Uso de prototipos, uso de simulaciones
   ●El cliente ve evolucionar el proyecto
   ●Tratamiento del mantenimiento al mismo nivel que el desarrollo (se trata de otra
      espiral más)



Problemas:
   ●Difícil de convencer al cliente de su utilidad (hay que realizar muchos tests y esto
      cuesta dinero)
   ●Implantación muy compleja
   ●Necesita gran habilidad en la valoración de riesgos
   ●Método muy nuevo




                                                                                      7
Prototipado




Herramientas de gestión de prototipo
Los prototipos son utilizados ampliamente en el desarrollo de aplicaciones, para la
evaluación de especificaciones de un sistema de información, o para un mejor
entendimiento de cómo los requisitos de un sistema de información se ajustan a los
objetivos perseguidos.

Ciclo de vida con prototipado
Ventaja
   ●Mejora la comunicación analista - cliente
   ●Mejor identificación de los requerimientos del cliente
   ●Satisface la curiosidad del cliente (en seguida puede ver cosas)

Problemas
   ●Identificación del prototipo con el producto final
   ●Prototipo no reaprovechable
   ●Técnicas inapropiadas con el fin de prototipar más rápidamente

Verificacion del modelo

Uno de los mayores retos de a los que se enfrentan los proyectos de ingeneria es el
creciente tamano y la complejidad de los sistemas.

La verificación se hace para asegurar que:

- El modelo está programado correctamente
- Los algoritmos se han implementado correctamente
- El modelo no contiene errores, omisiones o errores
• La verificación asegura que la especificación es completa y que los errores no se han
implementado en la aplicación del modelo
                                                                                    8
• La verificación no asegura el modelo:
- Resuelve un problema importante
- Cumple con un conjunto específico de requisitos del modelo
- Refleja correctamente el funcionamiento del mundo real.

Verificacion formal y metodos formales

La verificación formal evalúa la exactitud de los algoritmos que se basa el sistema.
Verificación de software evalúa qué tan bien software satisface los requisitos definidos y la
verificación de los modelos evalúa la correctitud de los modelos. Los metodos formales se
basan en representaciones matematicas del software, normalmente como una
especificacion formal.

Los metodos formales requieren un análisis muy detallado de las especificacion del
sistema y del programa, y su uso consume a menudo tiempo y resulta caro.
Estos metodos formales se ocupan principalmente del analisis matematico de la
especificacion; de transformar la especificacion a una representacion mas detallada
semanticamente equivalente o de verificar formalmente que una representacion del
sistema es semanticamente equivalente a otra representacion.

Los metodos formales pueden utilizarse en diferentes etapas en el proceso V&V:

   1.Puede desarrollarse una especficacion formal del sistema y analizarse
      matematicamente para buscar inconsistencias. Esta tecnica es efectiva para
      descrubir errores y omisiones de especificacion.
   2.Puede verificarse formalmente, utilizando argumentos matematicos, que el codigo de
      sistema software es consistente con su especificacion. Esto requiere una
      especificacion formal y es efectiva para descubrir algunos errores de diseno y
      programacion.

El objetivo final de la verificacion del modelo es que proporciona informacion precisa,
informacion sobre el sistema que se modela y hace que el sistema se utilice.

Conclusión
El equipo logro recordar procesos de la ingeniería de software que estudiamos en
semestres anteriores, indagamos de una manera mas profunda en procesos mas
específicos y nos dimos cuenta de que el buen modelado es parte fundamental para la el
proceso de desarrollo de software.

Recomendaciones
Queremos hacer la invitación a que vean la siguiente presentación http://
webdiis.unizar.es/~zarazaga/workPage/docencia/ingSoft1/trasparencias/is1_01.pdf y así
tener una mejor noción del por que de la materia y en que parte o mas bien dicho fase
nos estudiando la ingeniería de software.




                                                                                         9
Referencias
Jintao Pan (1999) Software testing ece.cmu.edu/. Recuperado el 2 de Octubre del 2011
http://www.ece.cmu.edu/~koopman/des_s99/sw_testing/

Monzon Diaz, J.L Fernandez Sanchez (2006) Decimo congreso internacional de ingenieria
de proyectos ppooa.com.es/ Recuperado el 2 de Octubre del 2011 http://
www.ppooa.com.es/vmis.pdf

Somerville, I. (2005). INGENIERÍA DEL SOFTWARE. Séptima edición. Madrid: PEARSON
EDUCACIÓN.

Exposito, R. (2010). RaulExposito.com. Recuperado el 4 de Octubre del 2011, de http://
raulexposito.com/files/documentos/AnalisisEstaticoCodigo.pdf

E-Clases (2004) eclases.tripod.com/ Recuperado el 3 de octubre del 2011         http://
eclases.tripod.com/id12.html

F. Javier Zarazaga Soria y Javier Nogueras Iso (2008) Introduccion a la ingenieria de
software http://webdiis.unizar.es/ Recuperado el 3 de Octubre del 2011 http://
webdiis.unizar.es/~zarazaga/workPage/docencia/ingSoft1/trasparencias/is1_01.pdf




                                                                                    10

More Related Content

What's hot

Sesion 3 2 modelo de analisis
Sesion 3 2 modelo de analisisSesion 3 2 modelo de analisis
Sesion 3 2 modelo de analisis
Julio Pari
 
Negacion fallo prolog
Negacion fallo prologNegacion fallo prolog
Negacion fallo prolog
UNCP
 
Critical System Specification in Software Engineering SE17
Critical System Specification in Software Engineering SE17Critical System Specification in Software Engineering SE17
Critical System Specification in Software Engineering SE17
koolkampus
 
Fundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónFundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - Introducción
Professional Testing
 
Vc4 nm73 eq#4-3des
Vc4 nm73 eq#4-3desVc4 nm73 eq#4-3des
Vc4 nm73 eq#4-3des
17oswaldo
 
Bibliotecas de clase en java
Bibliotecas de clase en javaBibliotecas de clase en java
Bibliotecas de clase en java
Edy Morales
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
Chuyito Alvarado
 

What's hot (20)

Sesion 3 2 modelo de analisis
Sesion 3 2 modelo de analisisSesion 3 2 modelo de analisis
Sesion 3 2 modelo de analisis
 
Sistema experto test orientacion vocacional
Sistema experto test orientacion vocacionalSistema experto test orientacion vocacional
Sistema experto test orientacion vocacional
 
S2-POO-1.2 Representación Gráfica
S2-POO-1.2 Representación GráficaS2-POO-1.2 Representación Gráfica
S2-POO-1.2 Representación Gráfica
 
Teoría de grafos
Teoría de grafosTeoría de grafos
Teoría de grafos
 
Negacion fallo prolog
Negacion fallo prologNegacion fallo prolog
Negacion fallo prolog
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Pruebas del software
Pruebas del softwarePruebas del software
Pruebas del software
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Critical System Specification in Software Engineering SE17
Critical System Specification in Software Engineering SE17Critical System Specification in Software Engineering SE17
Critical System Specification in Software Engineering SE17
 
Semantic analysis
Semantic analysisSemantic analysis
Semantic analysis
 
Fundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónFundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - Introducción
 
Vc4 nm73 eq#4-3des
Vc4 nm73 eq#4-3desVc4 nm73 eq#4-3des
Vc4 nm73 eq#4-3des
 
Defining the Problem - Goals and requirements
Defining the Problem - Goals and requirementsDefining the Problem - Goals and requirements
Defining the Problem - Goals and requirements
 
Bibliotecas de clase en java
Bibliotecas de clase en javaBibliotecas de clase en java
Bibliotecas de clase en java
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
 
Estructuras de datos osvaldo cairo
Estructuras de datos   osvaldo cairoEstructuras de datos   osvaldo cairo
Estructuras de datos osvaldo cairo
 
Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datosUnidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datos
 
Diseño caso de pruebas
Diseño caso de pruebasDiseño caso de pruebas
Diseño caso de pruebas
 
Tema 1-2 identificadores - variable y constante
Tema 1-2 identificadores - variable y constanteTema 1-2 identificadores - variable y constante
Tema 1-2 identificadores - variable y constante
 

Similar to Software Correctness

Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De Programas
Sergio Sanchez
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y Verificacion
jose haar
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y Verificacion
FARIDROJAS
 
Verificacion --validacion
Verificacion --validacionVerificacion --validacion
Verificacion --validacion
eduardoao2
 

Similar to Software Correctness (20)

Is new
Is newIs new
Is new
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de Calidad
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De Programas
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y Verificacion
 
Validacion Y Verificacion
Validacion Y VerificacionValidacion Y Verificacion
Validacion Y Verificacion
 
Segunda web conferencia
Segunda web conferenciaSegunda web conferencia
Segunda web conferencia
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Norma iso 14598
Norma iso 14598Norma iso 14598
Norma iso 14598
 
Deber2
Deber2Deber2
Deber2
 
prueba de aplicaciones convencionales
prueba de aplicaciones convencionalesprueba de aplicaciones convencionales
prueba de aplicaciones convencionales
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Programacion
ProgramacionProgramacion
Programacion
 
Verificacion --validacion
Verificacion --validacionVerificacion --validacion
Verificacion --validacion
 
Calidad del software cap2
Calidad del software   cap2Calidad del software   cap2
Calidad del software cap2
 
15_pruebaSW.ppt
15_pruebaSW.ppt15_pruebaSW.ppt
15_pruebaSW.ppt
 
Pruebas
PruebasPruebas
Pruebas
 
PROGRAMACIÓN EN JAVA
PROGRAMACIÓN EN JAVAPROGRAMACIÓN EN JAVA
PROGRAMACIÓN EN JAVA
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programar
 
Trabajo de teoria de sistema 2
Trabajo de teoria de sistema 2Trabajo de teoria de sistema 2
Trabajo de teoria de sistema 2
 
XXXS
XXXSXXXS
XXXS
 

More from Universidad Autonoma de Chihuahua

More from Universidad Autonoma de Chihuahua (20)

Diapc semana dos
Diapc semana dosDiapc semana dos
Diapc semana dos
 
Cd semana dos
Cd semana dosCd semana dos
Cd semana dos
 
Rhii trabajo final
Rhii trabajo finalRhii trabajo final
Rhii trabajo final
 
Rhii rel labindcol_cdrosin
Rhii rel labindcol_cdrosinRhii rel labindcol_cdrosin
Rhii rel labindcol_cdrosin
 
Rhii cuadro sinoptico
Rhii cuadro sinopticoRhii cuadro sinoptico
Rhii cuadro sinoptico
 
Rhii evaluacion desempeño
Rhii evaluacion desempeñoRhii evaluacion desempeño
Rhii evaluacion desempeño
 
Rhii seguridad empresa
Rhii  seguridad empresaRhii  seguridad empresa
Rhii seguridad empresa
 
Rhii cap marcolegal_presentacion
Rhii cap marcolegal_presentacionRhii cap marcolegal_presentacion
Rhii cap marcolegal_presentacion
 
Rhii gestión valorcomp
Rhii gestión valorcompRhii gestión valorcomp
Rhii gestión valorcomp
 
Rhii ensayo diversidadibm
Rhii ensayo diversidadibmRhii ensayo diversidadibm
Rhii ensayo diversidadibm
 
Com intmyv 225690
Com intmyv 225690Com intmyv 225690
Com intmyv 225690
 
Com intmyv 225690_mcdonalds
Com intmyv 225690_mcdonaldsCom intmyv 225690_mcdonalds
Com intmyv 225690_mcdonalds
 
Com intmyv 225690_cuestionariouno
Com intmyv 225690_cuestionariounoCom intmyv 225690_cuestionariouno
Com intmyv 225690_cuestionariouno
 
Com intmyv 225690_cuestionariodos
Com intmyv 225690_cuestionariodosCom intmyv 225690_cuestionariodos
Com intmyv 225690_cuestionariodos
 
Com intmyv 225690_cuestionario
Com intmyv 225690_cuestionarioCom intmyv 225690_cuestionario
Com intmyv 225690_cuestionario
 
Com intmyv 225690_motoresbusqueda
Com intmyv 225690_motoresbusquedaCom intmyv 225690_motoresbusqueda
Com intmyv 225690_motoresbusqueda
 
Com intmyv 225690_redessociales
Com intmyv 225690_redessocialesCom intmyv 225690_redessociales
Com intmyv 225690_redessociales
 
Dch admon talentohumano
Dch admon talentohumanoDch admon talentohumano
Dch admon talentohumano
 
Dch importancia asesor
Dch importancia asesorDch importancia asesor
Dch importancia asesor
 
Dch importancia funcionescoach
Dch importancia funcionescoachDch importancia funcionescoach
Dch importancia funcionescoach
 

Software Correctness

  • 1. UNIVERSIDAD AUTONOMA DE CHIHUAHUA FACULTAD DE INGENIERIA Análisis de correctitud Modelado y análisis de requerimientos del software Equipo No. 4 225654 Canales Tarango Irving Manuel 225673 Najera Chavira Daniel Giovanni 225690 Ibarra Garcia Carlos Antonio Octubre - 2011 El documento pretende describir y recordar temas anteriores que hemos visto durante la carrera, en el documento usted observara diagramas, se dará una descripción y se darán referencias para indagar mas en el tema.
  • 2. Contenido Objetivo.................................................................................................................................3 ! Introducción..........................................................................................................................3 Desarrollo.............................................................................................................................3 ! ! Análisis de correctitud................................................................................................3 ! ! ! ! Simulación y prototipado............................................................................................6 ! Verificación del modelo..............................................................................................8 Conclusión............................................................................................................................9 Recomendaciones................................................................................................................9 Referencias.........................................................................................................................10 2
  • 3. Objetivo El objetivo es indagar en los temas de la exposición la mayoría de la información se encuentra dentro de temas importantes que corresponden a la ingeniería de software, los apartados son sumamente precisos se recolecto un gran numero de información con el objetivo de extraer y asociar lo mejor para que el interesado comprenda de una mejor manera los temas. Introducción Al momento en que analizamos inspeccionamos con la finalidad de entender las propiedades y las capacidades de ese algo en el que indagamos. En términos de software el análisis caracteriza a un grupo de ejecución. También está basado en un modelo del producto en lugar del propio producto, así abstrae elementos que podrían ser cruciales.  Desarrollo Analisis de correctitud (Correctness): Un programa es funcionalmente correcto si se comporta de acuerdo a la especificación de las funciones (especificación de requerimientos funcionales) que debería proveer. Esta definición de correctitud asume que existe una especificación de requerimientos funcionales del sistema y que es posible determinar en forma no ambigua si las cumple o no. Se presentan diversas dificultades cuando no existe dicha especificación, o si existe pero está escrita informalmente utilizando, por ejemplo, lenguaje natural por lo que es posible que contenga ambiguedades. La correctitud es una propiedad matemática que establece la equivalencia entre el software y su especificación, por lo que cuanto más riguroso se haya sido en la especificación, más precisa y sistemática podrá ser su evaluación. Posteriormente se verá que la correctitud puede ser evaluada mediante diversos métodos, algunos de enfoque experimental como las pruebas, otros de enfoque analítico como verificación formal de la correctitud. Es de notar que esta definición de correctitud no toma en consideración el que la especificación en sí misma puede ser incorrecta por contener inconsistencias internas, o no corresponder de forma adecuada a las necesidades para las que fue concebido el programa. Análisis Estático (Somerville, 2005) Un análisis estático es la examinación de un programa sin ejecutarlo. Las inspecciones a menudo están dirigidas por listas de comprobación de errores y heurísticas que identifican errores comunes en diferentes lenguajes de programación. Por lo tanto, es una técnica que se aplica directamente sobre el código fuente tal cual, sin transformaciones previas ni cambios de ningún tipo. La idea es que, en base a ese código fuente, podamos obtener información que nos permita mejorar la base de código manteniendo la semántica original. 3
  • 4. El analizador estático de código recibirá el código fuente de nuestro programa, lo procesará intentando averiguar qué es lo que queremos que haga y nos dará sugerencias con las que podamos mejorar ese código. Básicamente al realizar un análisis estático, se obtiene una facilidad de mantenimiento y de desarrollo, ya que su objetivo es minimizar la deuda técnica del proyecto. Algunas comprobaciones que se pueden detectar mediante análisis estático son: Encontrar partes de codigo que puedan ●Reducir el rendimiento. ●Provocar errores en el software. ●Complicar el flujo de datos. ●Tener una excesiva complejidad. ●Suponer un problema en la seguridad. Clase de defecto Comprobación del análisis estático Defectos 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 los límites de los vectores. Variables no declaradas. Defectos de control Código no alcanzable. Saltos incondicionales en bucles. Defectos de entrada/salida Las variables salen dos veces sin intervenir ninguna asignación. Defectos de interfaz Inconsistencias en el tipo de parámetros. Inconsistencias en el número de parámetros. Los resultados de las funciones no se utilizan. Existen funciones y procedimientos a los que no se les llaman. Defectos de gestión de almacenamiento Punteros sin asignar. Aritmética de punteros. 4
  • 5. Las etapas implicadas en el análisis estático comprenden: 1.Análisis del flujo de control. Esta etapa identifica y resalta bucles con múltiples salidas o puntos de entrada y código no alcanzable. El código no alcanzable es código que se salta con instrucciones goto no condicionales o que está en una rama de una sentencia condicional en la que la condición nunca es cierta. 2.Análisis del uso de los datos. Esta etapa revela cómo se utilizan las variables del programa. Detecta variables que se utilizan sin inicialización previa, variables que se asignan dos veces y no se utilizan entre asignaciones, y variables que se declaran pero nunca se utilizan. El análisis del uso de los datos también descubre pruebas inútiles cuando la condición de prueba es redundante. Las condiciones redundantes son condiciones que son siempre ciertas o siempre falsas. 3.Análisis de interfaces. Este análisis comprueba la consisitencia de las declaraciones de funciones y procedimientos y su utilización. No es necesario si se utiliza para la implementación un lenguaje fuertemente tipado como Java, ya que el compilador lleva a cabo estas comprobaciones. El análisis de interfaces puede detectar errores de tipos en lenguajes débilmente tipados como C. El análisis de interfaces también puede detectar funciones y procedimientos que se declaran y nunca son llamados o resultados de funciones que nunca se utilizan. 4.Análisis del flujo de información. Esta fase del análisis identifica las dependencias entre las variables de entrada y salida. Mientras no detecte anomalías, muestra cómo se deriva el valor de cada variable del programa a partir de otros valores de variables. Con esta información, una inspección de código debería ser capaz de encontrar valores que han sido calculados erróneamente. El análisis de flujo de información puede tambien mostrar las condiciones que afectan al valor de una variable. 5.Análisis de caminos. Esta fase del análisis semántico identifica todos los posibles caminos en el programa y muestra las sentencias ejecutadas en dicho camino. Esencialmente desenreda el control del programa y permite que cada posible predicado sea analizado individualmente. Los analizadores estáticos son particularmente valiosos cuando se utiliza un lenguaje de programación como C. Este lenguaje no tiene reglas de tipo estrictas, y la comprobación que puede hacer el compilador es limitada. Por lo tanto, es fácil para los programadores cometer errorres, y la herramienta de análisis estático puede automáticamente descubrir un gran numero de errores potenciales y reducir los costes de prueba de forma significativa. Por otro lado los lenguajes de programación modernos como Java han eliminado algunas características propensas a error. Todas las variables deben ser inicializadas; no hay sentencias goto, y la gestion de almacenamiento es automática.Esta aproximación para evitar errores en llugar de detectarlos es mas efectiva a la hora de mejorar la fiabilidad del programa. Análisis manual Deberíamos tratar de realizar el análisis manual cada vez que vayamos a crear una nueva funcionalidad en nuestro software, preguntándonos en este caso si la arquitectura actual nos permite implementarla con facilidad, si disponemos de las librerías adecuadas o si podemos modificar la base de nuestro código para facilitar el desarrollo de esta nueva funcionalidad. Es decir, lo reservaremos para situaciones concretas. 5
  • 6. Análisis automatizado puede ser realizado con una mayor periodicidad ya que no requiere de intervención humana y, lo que es mejor, puede ser programado y repetido tantas veces como sea necesario. Además obra con objetividad, siempre nos va a devolver la misma respuesta ante el mismo código fuente de entrada. (Exposito, 2010) Simulación y prototipado Las herramientas PRO/SIM (de prototipos y simulación) proporcionan al ingeniero del software la capacidad de predecir el comportamiento de un sistema en tiempo real antes de llegar a construirlo. Además, capacitan al ingeniero del software para desarrollar simulaciones del sistema de tiempo real que permitirán al cliente obtener ideas acerca de su funcionamiento, comportamiento y respuesta antes de la verdadera implementación. Debemos ubicarnos en el ciclo de vida en espiral, a en la siguiente pagina remarcamos donde nos encontramos como ingenieros de software: 6
  • 7. Para recordar un poco de este ciclo colocamos lo siguiente, remarcando el tercer punto: Ventajas: ●Inclusión de de análisis de riesgos a lo largo del proceso ●Desarrollo de software = proceso evolutivo ●Uso de prototipos, uso de simulaciones ●El cliente ve evolucionar el proyecto ●Tratamiento del mantenimiento al mismo nivel que el desarrollo (se trata de otra espiral más) Problemas: ●Difícil de convencer al cliente de su utilidad (hay que realizar muchos tests y esto cuesta dinero) ●Implantación muy compleja ●Necesita gran habilidad en la valoración de riesgos ●Método muy nuevo 7
  • 8. Prototipado Herramientas de gestión de prototipo Los prototipos son utilizados ampliamente en el desarrollo de aplicaciones, para la evaluación de especificaciones de un sistema de información, o para un mejor entendimiento de cómo los requisitos de un sistema de información se ajustan a los objetivos perseguidos. Ciclo de vida con prototipado Ventaja ●Mejora la comunicación analista - cliente ●Mejor identificación de los requerimientos del cliente ●Satisface la curiosidad del cliente (en seguida puede ver cosas) Problemas ●Identificación del prototipo con el producto final ●Prototipo no reaprovechable ●Técnicas inapropiadas con el fin de prototipar más rápidamente Verificacion del modelo Uno de los mayores retos de a los que se enfrentan los proyectos de ingeneria es el creciente tamano y la complejidad de los sistemas. La verificación se hace para asegurar que: - El modelo está programado correctamente - Los algoritmos se han implementado correctamente - El modelo no contiene errores, omisiones o errores • La verificación asegura que la especificación es completa y que los errores no se han implementado en la aplicación del modelo 8
  • 9. • La verificación no asegura el modelo: - Resuelve un problema importante - Cumple con un conjunto específico de requisitos del modelo - Refleja correctamente el funcionamiento del mundo real. Verificacion formal y metodos formales La verificación formal evalúa la exactitud de los algoritmos que se basa el sistema. Verificación de software evalúa qué tan bien software satisface los requisitos definidos y la verificación de los modelos evalúa la correctitud de los modelos. Los metodos formales se basan en representaciones matematicas del software, normalmente como una especificacion formal. Los metodos formales requieren un análisis muy detallado de las especificacion del sistema y del programa, y su uso consume a menudo tiempo y resulta caro. Estos metodos formales se ocupan principalmente del analisis matematico de la especificacion; de transformar la especificacion a una representacion mas detallada semanticamente equivalente o de verificar formalmente que una representacion del sistema es semanticamente equivalente a otra representacion. Los metodos formales pueden utilizarse en diferentes etapas en el proceso V&V: 1.Puede desarrollarse una especficacion formal del sistema y analizarse matematicamente para buscar inconsistencias. Esta tecnica es efectiva para descrubir errores y omisiones de especificacion. 2.Puede verificarse formalmente, utilizando argumentos matematicos, que el codigo de sistema software es consistente con su especificacion. Esto requiere una especificacion formal y es efectiva para descubrir algunos errores de diseno y programacion. El objetivo final de la verificacion del modelo es que proporciona informacion precisa, informacion sobre el sistema que se modela y hace que el sistema se utilice. Conclusión El equipo logro recordar procesos de la ingeniería de software que estudiamos en semestres anteriores, indagamos de una manera mas profunda en procesos mas específicos y nos dimos cuenta de que el buen modelado es parte fundamental para la el proceso de desarrollo de software. Recomendaciones Queremos hacer la invitación a que vean la siguiente presentación http:// webdiis.unizar.es/~zarazaga/workPage/docencia/ingSoft1/trasparencias/is1_01.pdf y así tener una mejor noción del por que de la materia y en que parte o mas bien dicho fase nos estudiando la ingeniería de software. 9
  • 10. Referencias Jintao Pan (1999) Software testing ece.cmu.edu/. Recuperado el 2 de Octubre del 2011 http://www.ece.cmu.edu/~koopman/des_s99/sw_testing/ Monzon Diaz, J.L Fernandez Sanchez (2006) Decimo congreso internacional de ingenieria de proyectos ppooa.com.es/ Recuperado el 2 de Octubre del 2011 http:// www.ppooa.com.es/vmis.pdf Somerville, I. (2005). INGENIERÍA DEL SOFTWARE. Séptima edición. Madrid: PEARSON EDUCACIÓN. Exposito, R. (2010). RaulExposito.com. Recuperado el 4 de Octubre del 2011, de http:// raulexposito.com/files/documentos/AnalisisEstaticoCodigo.pdf E-Clases (2004) eclases.tripod.com/ Recuperado el 3 de octubre del 2011 http:// eclases.tripod.com/id12.html F. Javier Zarazaga Soria y Javier Nogueras Iso (2008) Introduccion a la ingenieria de software http://webdiis.unizar.es/ Recuperado el 3 de Octubre del 2011 http:// webdiis.unizar.es/~zarazaga/workPage/docencia/ingSoft1/trasparencias/is1_01.pdf 10