jueves, 25 de noviembre de 2010

Ingenieria del Software de Sala Limpia

Sala Limpia

Es un enfoque que hace hincapié en la necesidad de incluir la corrección en el software a medida que éste se desarrolla.

Consiste en la edición de dependencias de costosos procesos de eliminación de defectos, mediante la escritura de incrementos de código desde su primer momento.

Su modelo de proceso incluye la certificación estadística de calidad de los incrementos de código, a medida que estos se van acumulando en el sistema.

El enfoque de sala Limpia

Demanda la disciplina necesaria para eliminar errores en las especificaciones y diseño, fabricando el producto de forma limpia. Propuesta por Mills y sus colegas. Henderson sugiere tres razones:

1.     La creencia consistente en que la metodología de sala limpia es excesivamente teórica, matemática y radical para utilizarla en el desarrollo de software real.
2.     No propone una comprobación unitaria por parte de los desarrolladores, sino  que la sustituye por un control estadístico de la calidad.
3.     El uso de los procesos de sala limpia requiere procesos definidos  en las fases del ciclo vital.

Estrategia de Sala Limpia






1.     Hace uso del modelo incremental del software.
2.     Asignada la funcionalidad el tubo de sala limpia comienza sus incrementos.
3.     Los requisitos globales del sistema se desarrollan empleando los métodos de software.
4.     Desarrolla un tubo de incremento de software.

Tareas de la Sala Limpia

  • Planificación de incrementos: Se desarrolla un plan de proyecto que adopta la estrategia incremental. Se establecen las funcionalidades de los incrementos, tamaño estimado y un plan de desarrollo de sala limpia de cada uno.
  • Recolección de requisitos: Mediante el uso de técnicas  se desarrolla una descripción de los requisitos a nivel de usuario.
  • Especificación de la estructura de cajas: Se utiliza un método de especificación que hace uso de la estructura de caja para describir la especificación funcional, donde se aísla y separa  la definición de los datos  para cada nivel de refinamiento.
  • Diseño formal: El diseño de sala limpia es una extensión natural y sin discontinuidades de la especificación. Las especificaciones (cajas negras) se refinan iterativamente para transformarse en diseños análogos  a la arquitectura  y a los procedimientos (cajas  de estado y cajas transparentes) respectivamente.
  • Verificación de corrección: El equipo de sala limpia lleva a cabo actividades de verificación de corrección aplicadas al diseño y al código. La verificación comienza con la estructuras de cajas de alto nivel y avanza hacia el diseño y el código.
  • Generación de código, inspección y verificación: La especificaciones de estructura de caja, que se representan mediante un lenguaje especializado, se traduce al lenguaje de programación adecuado.
  • Planificación de la comprobación estadística: La utilización del software se analiza , se planifica y se diseña un conjunto de casos de pruebas que ejerciten la distribución de probabilidad de la utilización.
  • Comprobación estadística de utilización: Las técnicas estadísticas de utilización ejecutan un conjunto finito de casos de prueba.
  • Certificación: Una vez finalizado los procedimientos, se certifican los incrementos.

¿Qué  hace diferente la sala limpia?


Difiere de los puntos de vista convencionales y orientados a objetos:
1) Hace usos explícitos del control estadístico de calidad
2) Verifica la especificación del diseño empleando una demostración de corrección basada en las  matemáticas.
3) Hace mucho uso de la comprobación estadística de utilización para descubrir errores de especial  incidencia.

El enfoque de sala limpia aplica la mayor parte de los principios básicos de ingeniería del software. Prácticas convencionales: quita importancia al papel de la comprobación y depuración de unitarios y  al reducir mucho las comprobaciones que son realizadas por quien desarrolla el software. En sala limpia, la comprobación unitaria y la depuración se ven sustituidas por una verificación de  corrección y por una comprobación basada estadísticamente.


ESPECIFICACION FUNCIONAL

Independientemente del modelo de análisis seleccionado. Se modelan los datos, la función y el comportamiento. Los modelos resultantes deben ser desglosados para proporcionar un grado de detalle cada vez más elevado. El objetivo global consiste en pasar de una especificación que captura la esencia de un problema a una especificación que proporciona una cantidad de detalle sustancial para su implementación.
Emplea un método llamado:

 Estructura de Cajas: Una caja encapsula el sistema con cierto grado de detalle. Mediante un proceso de refinamiento progresivo, se van refinando las cajas para formar una jerarquía en la cuál cada caja tiene.

 transferencia referencial: el contenido de información de cada especificación de caja basta para definir su refinamiento, sin depender de la implementación de ninguna otra caja. Esto capacita al analista para desglosar jerárquicamente el sistema. Se utilizan tres tipos de cajas:

Caja negra: Especifica el comportamiento del sistema o una parte del mismo. El sistema
responde a estímulos específicos mediante la aplicación de un conjunto de reglas de transición que hacen corresponder el estímulo con la respuesta.

Caja de estado: encapsula los datos de estados y de servicios de forma análoga a los objetos. Se representa las entradas y las salidas . representa la historia de estímulos de la caja negra (los datos encapsulados en la caja de estado que deben ser mantenidos entre las transiciones implicadas.

Caja transparente: se definen en esta caja las funciones de transición que están implicadas en la caja de estados.

1.     Especificación de caja negra

Es una abstracción que describe la forma en que un sistema responde a unos estímulos. Las abstracciones de datos, las operaciones que manipulan estas abstracciones, se ven encapsuladas por la caja negra. Al igual que una jerarquía de clases, la especificación de caja negra puede mostrar a las jerarquías de utilización en que las cajas de nivel inferior heredan las propiedades de las cajas de nivel inferior dentro de la estructura de árbol.
2.     Especificación de caja de estado

Es una generalización sencilla de una máquina de estado. Un estado es algún modo observable de comportamiento del sistema. A medida que se produce el procesamiento, el sistema va respondiendo a sucesos (estímulos) efectuando una transición que parte del estado actual y llega a algún nuevo estado. A medida que se efectúa la transición, puede producirse una acción.
Utiliza una abstracción de datos para determinar la transición al estado siguiente, y la acción  (respuesta) que se producirá como consecuencia de la transición.
La caja de estado contiene una caja negra.



3.     Especificación de caja transparente

Está íntimamente relacionada con el diseño de procedimientos y con la programación estructurada. Es importante tener en cuenta que la especificación de procedimientos descrita en la jerarquía de caja transparente se puede demostrar a efectos de corrección.                                                                                                                         



 
Refinamiento y verificación del diseño

Cada especificación de caja transparente representa el diseño de un procedimiento necesario para efectuar una transición de caja de estado.  Mediante la caja transparente, se utilizan las estructuras de programación estructurada y de refinamiento progresivo. En cada nivel de refinamiento, el equipo de sala limpia lleva a cabo una verificación formal de corrección. Para lograr esto, se asocia un conjunto de condiciones genéricas de corrección a las estructuras de programación estructurada.

Es importante tener en cuenta que la utilización de estructuras de programación estructurada  restringe el número de comprobaciones de corrección que es preciso efectuar.


 
Ventajas de la verificación del diseño.

La verificación de corrección rigurosa de cada uno de los refinamientos del diseño de caja transparente posee un cierto número de ventajas evidentes:
  • Se reduce la verificación de un proceso finito.
La forma anidada y secuencial, en que se organizan las estructuras de control en una caja transparente, define de manera natural una jerarquía que revela las condiciones de corrección que es preciso verificar. Un axioma de sustitución nos permite reemplazar las funciones objetivo por sus refinamientos de estructura de control dentro de la jerarquía de subdemostraciones.
  • Permite que los equipos de sala limpia verifiquen todas la líneas de diseño y código.
A parte se pueden realizar pruebas escritas cuando se necesite una confianza adicional.
  •  Da lugar a un nivel de defectos próximo a cero
El requisito de acuerdo unánime basado en las verificaciones individuales de resultados da lugar a un software. que posee pocos o ningún defecto antes de su primera ejecución. 
  •  Es escalable. 
  •  Produce un código mejor que la comprobación unitaria.
Porque la unitaria solamente comprueba los efectos de ejecutar vías de pruebas seleccionadas de entre muchas vías posible. Al basar la verificación en la teoría de funciones, el enfoque de sala limpia puede verificar todos y cada uno de los posibles efectos sobre los datos, porque aun cuando un programa pueda tener múltiples vías de ejecución, solamente posee una función.



No hay comentarios:

Publicar un comentario