martes, 23 de noviembre de 2010

SALA LIMPIA.

http://www.scribd.com/doc/32165542/Capitulo-25-Ing-Del-Soft-de-Sala-Limpia 

La utilización integrada del modelado de ingeniería del software convencional, métodos formales, verificación de programas (demostraciones de corrección) y estadística SQA se han combinado en una técnica que puede dar lugar a un software de calidad extremadamente alta. La ingeniería del software de 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. En lugar del ciclo clásico de análisis, diseño, pruebas y depuración, el enfoque de sala limpia sugiere un punto de vista distinto :

La filosofía que subyace tras la ingeniería del software de sala limpia consiste en evitar la dependencia de costosos procesos de eliminación de defectos, mediante la escritura de incrementos de código desde un primer momento, y mediante la verificación de su corrección antes de las pruebas.  Su modelo de proceso incluye la certificación estadística de calidad de los incrementos de código, a  medidad que estos se van añadiendo cn el sistema.

En muchos aspectos, el enfoque de sala limpia eleva la ingenicría del software a otro nivel. Al igual que las técnicas de métodos formales que se presentaban en el Capítulo 25, el proceso de sala limpia hace hincapié en el rigor en la especificación y en el diseño, y en la verificación formal de cada uno de los elementos del modelo de diseño Fesultante mediante el uso de pruebas de corrección basadas en fundamentos matemáticos. Al extender el enfoque adoptado en los métodos formales, el enfoque de sala limpia hace hincapié también en técnicas de control estadístico de calidad, incluyendo las comprobaciones basadas en el uso anticipado del software por parte de los clientes.
  ----------------------------------------------------------------------------------------------------------------------------------
Qué es? Cuántas veces se ha oído decir «Hazlo correctamente a la primera.? 

Esa es la filosofía primordial de la ingeniería del software de sala limpia, un proceso que da importancia a la verificación matemática de la corrección antes de que comience la construcción de un programa y de que la certificación de la fiabilidad del software forme parte de la actividad de pruebas. Haciendo hincapié en una filosofía más profunda, se trataría de aquella que tiene índices de fallo extremadamente bajos y que es dificil o imposible de lograr utilizando métodos menos formales.
-----------------------------------------------------------------------------------------------------------------------------------
¿Quién lo hace?                                                                                                                                     


Un ingeniero del software formado para esta especialización. 
 ---------------------------------------------------------------------------------------------------------------------------------
¿Por qué es importante?

Los errores conllevan doble trabajo. Trabajar el doble lleva más tiempo y es más caro. NO sería maravilloso poder reducir dramáticamente la cantidad de errores (fallos informáticos) que se cometen en el diseño y construcción del software? Esto es lo que promete la ingeniería del software de sala limpia. 
------------------------------------------------------------------------------------------------------------------------------------
¿Cuáles son los pasos?

Los modelos de análisis y diseño se crean utilizando la representación de estructura de caja. Una <caja. encapsula el sistema (o algún aspecto del sistema) a un nivel específico de abstracción. La verificación de la corrección se aplica una vez que se ha completado el diseño de la estructura de caja Y la prueba estadística de l a utilización comienza una vez que se ha verificado la corrección en cada estructura de caja. El software se prueba definiendo un conjunto de escenarios, determinando la probabilidad de utilización de cada uno y definiendo entonces las pruebas aleatorias que se ajustan a las probabilidades. Por último, los registros de errores resultantes se analizan para permitir el cálculo matemático de la fiabilidad proyectada en el componente de software.
-----------------------------------------------------------------------------------------------------------------------------------
¿Cuál es el producto obtenido? 


El desarrollo de especificaciones de caja negra, de caja de estado y de caja limpia. Y, además, el registro de los resultados de las pruebas formales de corrección y las pruebas estadísticas de utilización.
----------------------------------------------------------------------------------------------------------------------------------
¿Cómo puedo estar seguro de que lo he hecho correctamente? 

La prueba formal de corrección se aplica a la especificación de estructura de cajas. Las pruebas estadísticas de utilización ejercitan los escenarios de utilización para asegurar que no se revelen y se puedan corregir los errores en la funcionalidad del usuario. Los datos de prueba se utilizan para proporcionar una señal de la fiabilidad del software. 

Cuando el software falla en el mundo real, suelen abundar los peligros a largo plazo así como los peligros inmediatos. Los peligros pueden estar relacionados con la seguridad humana, con pérdidas económicas o con el funcionamiento efectivo de una infraestructura social y de negocios. La ingeniería del software de sala limpia es un modelo de proceso que elimina los defectos antes de que puedan dar lugar a riesgos graves.
 -----------------------------------------------------------------------------------------------------------------------------------
EL ENFOQUE DE SALA LIMPIA.

La filosofía de la «sala limpian en las técnicas de fabricación de hardware es en realidad algo bastante sencillo:

se trata de una forma rentable y eficiente, en términos de tiempo, de establecer un enfoque de fabricación que impida la introducción de defectos de producción. En lugar de fabricar un producto y dedicarse después a eliminar defectos, el enfoque de sala limpia demanda la disciplina necesaria para eliminar errores en las especificaciones y en el diseño, fabricando entonces el producto de forma «limpia».

La filosofía de sala limpia fue propuesta por primera vez para la ingeniería del software por parte de Mills y sus colegas  durante los años 80. Aun cuando las primeras experiencias acerca de este enfoque disciplinado para los trabajos relacionados con el software mostraba promesas significativas , no ha alcanzado una amplia utilización. Henderson sugiere tres posibles razones:

1- La creencia en que la metodología de sala limpia es excesivamente teórica, excesivamente matemática y excesivamente radical para utilizarla en el desarrollo de software real.

2- No propugna una comprobación unitaria por parte de los desarrolladores, sino que la sustituye por una verificación de la corrección y por un control estadístico de la calidad -estos conceptos que representan una desviación fundamental con respecto a la forma en que se desarrolla la mayor parte del software en la actualidad-.

3- La madurez de la industria de desarrollo del software. El uso de procesos de sala limpia requiere una aplicación rigurosa de procesos definidos en todas las fases del ciclo de vida. Dado que la mayor parte de la industria funciona todavía en el nivel ad hoc (según se ha definido por parte del Software Engineering Institute Capability Maturity Model), la industria no ha estado preparada para aplicar estas técnicas.

Aun cuando existen ciertos indicios de verdad en todas las indicaciones expresadas anteriormente, los posibles bencficios de la ingeniería del software de sala limpia compensan más que sobradamente la inversión requerida para superar la resistencia cultural que se encuentra en el núcleo de estas objeciones.

----------------------------------------------------------------------------------------------------------------------------------
 La estrategia de sala limpia:

El enfoque de sala limpia hace uso de una versión especializada del modelo incremental de software. Se desarrolla un «cauce de incrementos de software»  por parte de equipos de ingeniería del software pequeños e independientes. A medida que se va certificando cada incremento, se integra en el todo. Consiguientemente, la funcionalidad del sistema va creciendo con el tiempo.
-----------------------------------------------------------------------------------------------------------------------------------
¿Cuáles son las tareas principales que se realizan en la ingeniería del software de sala limpia?

 Los requisitos globales del sistema o producto se van desarrollando empleando los métodos de ingeniería de sistemas. Una vez que se ha asignado una funcionalidad al elemento de software del sistema, el tubo de la sala limpia comienza sus incrementos. Se producen las tareas siguientes:

Planificación de incrementos. Se desarrolla un plan de proyecto que adopta la estrategia incremental. Se van estableciendo las funcionalidades de cada uno de los incrementos, su tamaño estimado y un plan de desarrollo de sala limpia. Es preciso tener especial cuidado para asegurar que los incrementos certificados se vayan integrando de forma temporalmente oportuna.

Recolección de requisitos. Mediante el uso de técnicas similares a las presentadas en el Capítulo 1 1, se desarrolla una descripción más detallada de requisitos del nivel del usuario (para cada incremento).

Especificación de la estructura de cajas. Se utiliza un método de especificación que hace uso de estructuras de caja para describir la especificación funcional.

Ajustado a los principios de análisis operacional, la estructura de caja «aísla y separa la definición creativa del comportamiento, de los datos, y de los procedimientos para cada nivel de refinamiento».

Diseño formal. Mediante el uso del enfoque de estructura de cajas, el diseño de sala limpia es una extensión natural y sin discontinuidades de la especificación. Aun cuando es posible efectuar una distinción clara entre estas dos actividades, las especificaciones (que se denominan «ca.jas negras>>)s e refinan iterativamente (dentro de cada incremento) para transformarse en diseños análogos a la arquitectura y a los procedimientos (que se denominan «cajas de estado» y «cajas trasparentes», respectivamente).

Verificación de corrección. El equipo de sala limpia lleva a cabo una serie de rigurosas actividades de verificación de corrección aplicadas primero al diseño y después al código. La verificación comienza con la estructura de cajas del más alto nivel (la especificación) y avanza hacia el detalle de diseño y el código. El primer nivel de verificación de corrección se lleva a cabo aplicando un conjunto de cuestiones de corrección» [LIN88]. Si este conjunto de preguntas no demuestra que la especificación es correcta, se utilizan métodos más formales (matemáticos) de verificación.

Generación de código, inspección y verificación: Las especificaciones de estructura de caja, que se representan mediante un lenguaje especializado, se traducen al lenguaje de programación adecuado. Se utilizan entonces técnicas estándar de recorrido o de inspección para asegurar el cumplimiento sernántico de las estructuras de código y de cajas, y la corrección sintáctica de código. A continuación, se efectúa una verificación de corrección para el código fuente.

Planificación de la comprobación estadística.
La utilización estimada del software se analiza, se planifica y se diseña un conjunto de casos de prueba que ejerciten la «distribución de probabilidad» de esa utilización. Según se muestra en la, esta actividad de sala limpia se realiza en paralelo con la especificación, la verificación y la generación de código.

Comprobación estadística de utilización. Recordando que es imposible una comprobación exhaustiva del software de computadora, siempre resulta necesario diseñar un conjunto finito de casos de prueba. Las técnicas estadísticas de utilización ejecutan una colección de pruebas derivadas de una muestra estadística (la distribución de probabilidad indicada anteriormente) de todas las posibles ejecuciones del programa por parte de todos los usuarios de una cierta población objetivo.

Certificación. Una vez que se ha finalizado la verificación, la inspección y la comprobación de utilización (y después de corregir todos los errores) se certifica el incremento como preparado para su integración.
 
Al igual que otros modelos de proceso del software descritos en otras partes de este libro, el proceso de sala limpia hace especial hincapié en la necesidad de conducir unos modelos de análisis y de diseño de muy alta calidad. Según se verá posteriormente en este capítulo, la notación de estructura de cajas no es más que otra forma para que el ingeniero del software pueda representar los requisitos y el diseño. La distinción real del enfoque de sala limpia consiste en que se aplica la verificación formal a los modelos de ingeniería.
-------------------------------------------------------------------------------------------------------------

¿Qué hace diferente la sala limpia?

Dyer alude a las diferencias del enfoque de sala limpia cuando define el proceso:

La sala limpia representa el primer intento práctico de poner el proceso de desarrollo del software bajo un control estadístico de calidad con una estrategia bien definida para la mejora continua del proceso. Para alcanzar esta meta, sc definió un ciclo único de vida de sala limpia, que hacía hincapié en una ingeniería del software basada en las matemáticas para obtener diseños de software correctos y que se basaba en software basado en estadística para la cei-tificación de fiabilidad de ese software.

La ingeniería del software de sala limpia ditiere de los puntos de vista convencionales y orientados a objetos que se representan en la Partes Tercera y Cuarta de este libro porque:

1. Hace uso explícito 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.

Evidentemente, el enfoque de sala limpia aplica la mayor parte, si es que no todos, de los principios básicos de ingeniería del software y de los conceptos que se han presentado a lo largo de este libro. Son esenciales unos buenos procedimientos de análisis y diseño si es que se desea producir una elevada calidad. Pero la ingeniería de sala limpia diverge de las prácticas de software convencionales al quitar importancia (hay quien diría eliminar) al papel de las pruebas de unidad y a la depuración y al reducir dramáticamente (o eliminar) la cantidad de comprobaciones que son realizadas por quien desarrolla el software'.

En el desarrollo convencional del software, los errores se aceptan como cosas que pasan. Dado que se considera que los errores son inevitables, cada módulo del programa debe ser comprobado unitariamente (para descubrir los errores) y depurado después (para eliminar los errores). Cuando se publica finalmente el software, la utilización práctica descubre aun más defectos, y comienza otro ciclo de comprobación y depuración. Este trabajo repetido asociado a las actividades mencionadas resulta costoso y lleva mucho tiempo. Y lo que es peor, puede ser degenerativo; la corrección de errores puede (inadvertidamente) dar lugar a la introducción de otros errores.

En la ingeniería del software de sala limpia, la comprobación unitaria y la depuración se ven sustituidas por una verificación de corrección y por pruebas basadas en la estadística. Estas actividades, junto con el mantenimiento de registros para una continua mejora, hacen que el enfoque de sala limpia sea único.



No hay comentarios:

Publicar un comentario