Algunos Conceptos Básicos sobre Aseguramiento de la Calidad de Software


Aseguramiento de la calidad.

El Aseguramiento de la Calidad de Software es una actividad, para toda empresa que desarrolle software y debe llevarla a cabo de una manera limpia y correcta. Es un proceso de ingeniería de software que se define como un “conjunto de acciones planificadas y sistemáticas que son necesarias para proporcionar la confianza adecuada en que un producto o servicio cumpla con los requisitos dados sobre la calidad”.

El aseguramiento de la calidad software engloba los siguientes puntos:

– El mejoramiento de los métodos, técnicas de análisis, diseño, codificación y prueba.

– “Revisiones técnicas formales que se aplican durante cada fase del proceso de desarrollo de software”, que ayudan a detectar los defectos.

– “Utilización de estándares” durante el desarrollo.

– “Sistema de Métricas”, para la retroalimentación de todas las personas

– Definir estrategias de prueba multiescala;

– Control de la documentación del software y de los cambios realizados;

– Un procedimiento que asegure, siempre que sea posible, un ajuste a los estándares de desarrollo del software.

Esta actividad de aseguramiento de la calidad debe apoyarse en los procesos:

– Verificación.

– Validación.

– Gestión de Configuración.

– Medición de software.

Ingeniería de Software

Existen varias definiciones de Ingeniería de Software, que son el resultado de investigaciones que concluyen en dar una definición exacta de lo que es esta disciplina de la ingeniería. En este apartado se colocan las siguientes definiciones:

– La ingeniería de software es el establecimiento de y uso de los principios robustos de la ingeniería a fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre computadoras reales (Fritz Bauer).

– Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE).

La ingeniería de software establece en cada uno de los proyectos o programas de desarrollo un proceso definido que debe ser llevado a cabo con éxito cumpliendo estándares de implementación y mejores prácticas.

Estándares de implementación

Los estándares de implementación darán el punto de partida de la codificación, estos son tan importantes como la arquitectura que se va a utilizar para el desarrollo de la aplicación. Los estándares de implementación no son reglas de codificación que el desarrollador debe cumplir. Desde la descripción de un modulo, pasando por la descripción de un archivo hasta la descripción de una variable que participa en un método de una clase. Los estándares de implementación se han definido y utilizado con mayor rigidez desde el inicio de la programación orientada a objetos.

Cada empresa de desarrolla software debe tener un conjunto de estándares de implementación. Estos deben estar de acuerdo con el tipo de aplicación que se desarrolle, la complejidad y sobre todo el tamaño.

Otra característica de los estándares de implementación es la ayuda a la comunicación de los desarrolladores al momento de interpretar los diagramas de secuencia.

Estos estándares debe ser utilizados, en este proyecto, para apoyar al marco de trabajo, el estudiante debe seleccionar un estándar de implementación el cual debe cumplir con rigidez en su desarrollo.

Proceso de Software

El proceso de software está en base a su definición, es decir, todo proceso que se sigue debe ser definido en sus etapas, procedimientos, métodos, herramientas, entre otros.

Una definición del proceso de software es la siguiente:

– Es un conjunto coherente de políticas, estructuras organizacionales, tecnologías y artefactos que son necesarios para concebir, desarrollar, instalar y mantener un producto de software.

La visión de los procesos de software es en base a las siguientes características:

a. Son complejos.

b. No son procesos de producción típicos, ya que están dirigidos por excepciones, se ven muy determinados por circunstancias impredecibles y cada uno tiene peculiaridades que lo distinguen de los demás.

c. Tampoco son procesos de ingeniería pura, ya que se desconocen las abstracciones adecuadas (no existe una ciencia experimental en la apoyarse), dependen de demasiada gente, el diseño y la producción no están claramente diferenciados, y los presupuestos, calendarios y calidad no pueden ser planificados de forma suficientemente fiable.

d. No son (completamente) procesos creativos, ya que algunas partes pueden ser descritas en detalle y algunos procedimientos son impuestos previamente.

e. Están basados en descubrimientos que dependen de la comunicación, coordinación y cooperación dentro de marcos de trabajo predefinidos: los entregables generan nuevos requisitos; los costes del cambio del software no suelen reconocerse; y el éxito depende de la implicación del usuario y de la coordinación de muchos roles (ventas, desarrollo técnico, cliente, entre otros).

Dirección de Proyecto

La gestión de proyectos es la disciplina de organizar y administrar recursos de manera tal que se pueda culminar todo el trabajo requerido en el proyecto dentro del alcance, el tiempo, y coste definidos.

Existen tres aspectos importantes dentro de la dirección de proyectos, estos son:

– Tiempo. Se refiere a la cantidad de tiempo disponible para completar un proyecto.

– Costo. Se refiere a la cantidad de presupuesto para el proyecto.

– Alcance. Se refiere a lo que se debe hacer para producir el resultado final del proyecto.

Estas tres restricciones son frecuentemente competidoras entre estas: incrementar el alcance típicamente aumenta el tiempo y el costo, una restricción fuerte de tiempo puede significar un incremento en costos y una reducción en los alcances, y un presupuesto limitado puede traducirse en un incremento en tiempo y una reducción de los alcances.

Calidad de Software

Para el proyecto la calidad de software se entiende como:

– Es el grado en el que el software satisface una serie de requisitos de operación preestablecidos, los estándares de desarrollo específicos con anterioridad y las características inherentes a todo producto de software desarrollado de manera profesional (Pressman)

Existen tres puntos importantes respecto a la definición que se ha presentado y son las siguientes:

1. Los requisitos de del software son la base de las medidas de la calidad. La falta de concordancia de estos es una falta de la calidad. los requisitos son los objetivos para todo el desarrollo de software.

2. Los estándares definen un conjunto de criterios de desarrollo que guían la forma en que se aplica la ingeniería de software. Si no se siguen estos criterios, casi siempre habrá falta de calidad.

3. Existe un conjunto de requisitos implícitos (Requisitos no Funcionales), que a menudo no se mencionan. Si el software se ajusta a sus requisitos explícitos pero falla en alcanzar los requisitos implícitos, la calidad queda entredicha.

Estos puntos dan como resultado cuatro enfoques en el desarrollo de software, cada uno de estos debe ser controlado y medido para ver si se va mejorando o si se está ejecutando correctamente.

El primero es el personal, muchos investigadores dicen que una sola persona tiene poca probabilidad para lograr realizar todas las actividades del desarrollo de software y cumplan una calidad planificada. El desarrollo se debe realizar en equipo, el cual debe coordinar y alcanzar una comunicación en sus actividades.

El segundo punto es el proyecto, este tiene un ciclo de vida, el cual debe cumplir el siguiente ciclo de desarrollo:

– Inicialización.

– Planificación.

– Ejecución.

– Control y Seguimiento.

– Cierre

Otro punto importante es el producto, este tiene un ciclo de vida, las etapas son conocidas ampliamente (planificación, análisis, diseño, implementación), pero el resultado, el producto, debe ser validado (pruebas) y certificado, si es posible, por alguna organización externa o por un grupo interno que garantice que el producto es el correcto y cumpla con los objetivos (requisitos) que se han identificado. Para esto se debe implantar en distintas fases del desarrollo estándares, preferiblemente internacionales.

Por último, está el Proceso de Software, es el punto más importante y será el que dará los márgenes para llevar a cabo el desarrollo, el proceso de software involucra la planificación de los otros puntos ya vistos.

El proceso opera en dos niveles (nivel organizacional y nivel de proyecto). A nivel de proyecto ayuda a satisfacer las metas del proyecto (Alta Calidad y productividad). A nivel de la organización ayuda a satisfacer los objetivos de la organización de poder predecir y mejorar.

La Tecnología, enfoque no menos importante que los anteriores. Si no se toma en cuenta, es muy probable no cumplir con los requisitos. Este enfoque se entiende con un ejemplo, que es el siguiente: No se puede desarrollar un software, hoy en día, en una maquina con un procesador 8086, ya que esta tecnología es muy antigua y es muy probable que no se logre cumplir con requisitos no funcionales.

Proceso de Evaluación.

Una evaluación corresponde al estudio y análisis de uno o más procesos realizado por un equipo capacitado de profesionales, utilizando un modelo de referencia de evaluación como base para determinar, a lo menos, fortalezas y debilidades dentro de una organización. Un método de evaluación puede ser aplicado para distintos propósitos, incluyendo evaluaciones internas para mejora de los procesos, evaluaciones de capacidad de selección de proveedores, evaluaciones de monitoreo de procesos, inspecciones definidas, entre otros enfoques.

Verificación.

La verificación es parte del proceso de evaluación y está conformado por los métodos que conforman las revisiones y auditorias de configuración.

El objetivo principal es “demostrar que el producto, componentes del producto y artefactos cumplan con los requisitos establecidos”. Involucra la definición de del producto o servicio y artefactos intermedios con respecto a los requisitos seleccionados, incluyendo requisitos del cliente, del producto o servicio y componentes del producto o servicio. El mejoramiento de proceso y de la calidad está fuertemente enlazado con la verificación. Ya que esta, se aplica al producto y artefactos, comenzando con la verificación de los requisitos, pasando por la verificación de artefactos y terminando con la verificación del producto completo.

Las actividades que establecen para la verificación son las siguiente:

– Preparar la Verificación. Una preparación es necesaria para asegurar que los requerimientos de verificación están incluidos en los requerimientos del producto y las componentes del producto, diseños, planes de desarrollo y programas. La verificación incluye selección, inspección, prueba, análisis y demostración de artefactos.

– Realizar revisiones de pares. La revisión de pares es un análisis metodológico de artefactos realizado por los productores o desarrolladores pares para identificar defectos a ser removidos y recomendar otros cambios según sean necesarios. Además, es un método de ingeniería importante y efectivo implementado vía inspecciones u otros métodos de revisión.

– Verificar Artefactos Seleccionados. Los métodos, procedimientos y criterios de evaluación son usados para verificar que el artefacto seleccionado y cualquier mantención asociada, entrenamiento y servicios de soporte usan el ambiente de verificación apropiado. Actividades de verificación deben ser realizadas durante todo el ciclo de vida del producto.

Validación

El objetivo principal es “demostrar que el producto, componentes del producto y artefactos corresponden a lo esperado para su uso”.

El propósito de Validación es demostrar que un producto o componentes del producto cumplen su uso planeado cuando es ubicado en su planeado ambiente.

Actividades de validación pueden ser aplicadas a todos los aspectos del producto en cualquiera de sus ambientes planeados, tal como operación, entrenamiento, manufactura, mantención, y servicios de soporte. Los métodos empleados para conseguir la validación pueden ser aplicados a artefactos así como también a productos o servicios y componentes del producto o servicios.

Generalmente en el desarrollo de software se atribuye a esta actividad a los distintos tipos de prueba del producto, ya sea de fases tempranas o la fase final. Entre otras atribuciones están la prueba de los casos de uso que define UML para el desarrollo y descripción de un software. Entre estos tipos de prueba se encuentran los siguientes:

– Pruebas de Aceptación. Pruebas realizadas por el usuario quien comprueba en su ambiente de operación el sistema entregado. Los puede aceptar o rechazar.

– Pruebas de Análisis de Valor Límite: Prueba que tiene por objetivo verificar la ejecución de programa analizando los valores límite de los tipos de datos especificados. Para ello se debe probar con valores dentro y fuera de los límites especificados para el tipo de dato.

– Pruebas de Caja Blanca: Los objetivos de este tipo de pruebas es garantizar la ejecución por lo menos una vez todos los caminos independientes de cada modulo, la ejecución de todas las decisiones lógicas en sus caminos verdadero y falso, la ejecución de todos los lazos en sus límites, y la ejecución de las estructuras internas de datos para asegurar su validez.

– Pruebas Caja de Cristal: Prueban por lo menos una vez todos los caminos en el control de cada componente y todas las decisiones lógicas.

– Pruebas de Caja Negra: Las pruebas de caja negra se centran en los requerimientos funcionales. Permiten al ingeniero del software obtener un conjunto de entradas que prueben completamente los requerimientos funcionales de un programa sin importar los detalles internos del programa, a fin de verificar que el programa corra bien.

– Pruebas de Caja de Pandora: Consiste en abstenerse de realizar pruebas de depurar bastante bien un proyecto; se deja al cliente que lo ensaye y acepte. El resultado es una bomba de tiempo.

– Pruebas de Comparación: Consiste en la comparación de las salidas de las distintas versiones de una misma componente o producto software.

– Pruebas Funcionales: Buscan satisfacer los requerimientos funcionales de las componentes del producto o producto final.

– Pruebas de Instalación: Pruebas que buscan satisfacer los requerimientos de operación del sistema.

– Pruebas de Regresión: Las pruebas de regresión consisten en a realizar pruebas ejecutadas previamente, con el fin de asegurar de que los cambios hecho en el código no ha provocado efectos laterales no deseados.

– Pruebas de Rendimiento: Buscan satisfacer los requerimientos no funcionales asociados satisfacer requerimientos de rendimiento del sistema (volumen de datos, tasa de transacciones, etc.)

– Pruebas de Seguridad: Buscan satisfacer los requerimientos no funcionales referidos a mantener la integridad del sistema ante cualquier amenaza definida que pueda llegar a tener en su operación.

– Prueba de Validación: el producto final se prueba para definir si cumple los requerimientos funcionales y de rendimiento, facilidad de mantenimiento, recuperación de errores.

Entre las actividades que se deben preparar y planificar están las siguientes:

– Preparación de la validación. Actividades de preparación incluyen la selección de productos y los componentes del producto para validación, y establecer y mantener el ambiente, procedimientos y criterios de validación. Los artefactos seleccionados para validación pueden incluir sólo el producto o puede incluir niveles apropiados de las componentes del producto que son usados para construir el producto. El ambiente de Integración de Productos, Verificación y Validación puede ser el mismo.

– Establecer el ambiente para la validación. Los requisitos para el ambiente de validación son manejados por el producto o las componentes de productos seleccionadas, por el tipo de artefacto (por ejemplo, diseño, prototipo, versión final) y por los métodos de validación. Esto podría producir requisitos para la compra o desarrollo de equipamiento, software u otros recursos. El entorno de validación puede incluir la reutilización de recursos existentes.

– Establecer procedimientos y criterios de validación. Procedimientos y criterios de validación son definidos para asegurar que el producto o las componentes del producto van a satisfacer su uso planificado cuando es ubicado en su ambiente planificado. La aceptación de casos de pruebas y procedimientos pueden satisfacer la necesidad de procedimientos de validación.

– Validar productos o componentes del producto o artefacto. Los métodos, procedimientos y criterios de validación son usados para validar los productos y las componentes de los productos seleccionados y cualquier mantenimiento, entrenamiento y servicios de apoyo asociado usando el apropiado ambiente de validación. Actividades de validación son realizadas durante todo el ciclo de vida del producto.

Grupo de Aseguramiento de la Calidad.

El grupo de aseguramiento de calidad debe seguir las siguientes actividades:

– Determinar el plan de aseguramiento de la calidad para un proyecto de desarrollo siguiendo un proceso definido.

– Participar en el desarrollo del plan de proyecto de desarrollo de software, estándares a seguir, procedimientos, herramientas y métodos.

– Revisar las actividades de ingeniería de software para verificar su conformidad de cada una de estas.

– Auditar los artefactos de software para verificar su conformidad.

– Conducir revisiones periódicas de las actividades con los clientes de la forma más apropiada.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s