6
ASEGURAMIENTO DE CALIDAD DE SOFTWARE Y TECNICAS ASOCIADAS Las actividades para la garantía de calidad (QA) garantizan que pocos, o ningún defecto en el sistema de software exista cuando se entregue a sus clientes o se lance al mercado. Además, queremos asegurarnos de que estos defectos restantes causarán daños o interrupciones mínimas. ACTIVIDADES DE CONTROL DE CALIDAD Podemos ver diferentes actividades de control de calidad como intentar prevenir, eliminar, reducir o contener diversos problemas específicos con diferentes aspectos de defectos. Podemos clasificar estas alternativas de control de calidad en las siguientes tres categorías genéricas: Defecto de prevención a través de error de bloqueo o eliminación de código de error: Dado que los errores son las acciones humanas falte o sea incorrectas que conducen a la inyección de fallas en los sistemas de software, podemos directamente corregir o bloquear estas acciones o eliminar las causas subyacentes para ellos. Por lo tanto, prevención de defecto puede hacerse de dos maneras genéricos: Eliminar ciertas fuentes de error, tales como eliminar ambigüedades o corregir errores humanos, que son la raíz causas de los errores. Bloquear estas acciones humanas faltantes o son incorrectas. Este grupo de técnicas rompe a la relación causal entre las fuentes de errores y fallas mediante el uso de algunas herramientas y tecnologías, aplicación de ciertas normas de proceso y producto. Detección de fallas y eliminación: QA estas alternativas detectar y eliminar ciertas fallas, una vez que han sido

Aseguramiento de Calidad de Software y Tecnicas Asociadas

Embed Size (px)

DESCRIPTION

Aseguramiento de Calidad de Software y GHFH

Citation preview

Page 1: Aseguramiento de Calidad de Software y Tecnicas Asociadas

ASEGURAMIENTO DE CALIDAD DE SOFTWARE Y TECNICAS ASOCIADAS

Las actividades para la garantía de calidad (QA) garantizan que pocos, o ningún defecto en el

sistema de software exista cuando se entregue a sus clientes o se lance al mercado. Además,

queremos asegurarnos de que estos defectos restantes causarán daños o interrupciones

mínimas.

ACTIVIDADES DE CONTROL DE CALIDAD

Podemos ver diferentes actividades de control de calidad como intentar prevenir, eliminar,

reducir o contener diversos problemas específicos con diferentes aspectos de defectos.

Podemos clasificar estas alternativas de control de calidad en las siguientes tres categorías

genéricas:

Defecto de prevención a través de error de bloqueo o eliminación de código de error: Dado

que los errores son las acciones humanas falte o sea incorrectas que conducen a la inyección

de fallas en los sistemas de software, podemos directamente corregir o bloquear estas

acciones o eliminar las causas subyacentes para ellos. Por lo tanto, prevención de defecto

puede hacerse de dos maneras genéricos:

Eliminar ciertas fuentes de error, tales como eliminar ambigüedades o corregir errores

humanos, que son la raíz causas de los errores.

Bloquear estas acciones humanas faltantes o son incorrectas. Este grupo de técnicas

rompe a la relación causal entre las fuentes de errores y fallas mediante el uso de

algunas herramientas y tecnologías, aplicación de ciertas normas de proceso y

producto.

Detección de fallas y eliminación: QA estas alternativas detectar y eliminar ciertas fallas, una

vez que han sido inyectados en los sistemas de software. De hecho, las actividades de control

de calidad más tradicionales entran en esta categoría. Por ejemplo,

Inspección directa detecta y elimina los errores del código de software, diseño, etc.

Eliminar errores basados en observaciones de error relacionados durante la ejecución

del programa.

Contención de defecto por incumplimiento de prevención y contención: estas medidas de

contención se centran en los fracasos que los contengan áreas locales por lo que no hay

errores observables de forma global para los usuarios, o limitar los daños causados por fallas

Page 2: Aseguramiento de Calidad de Software y Tecnicas Asociadas

en el sistema software. Por lo tanto, contención de defecto puede hacerse de dos maneras

genéricos:

Algunas alternativas de control de calidad, tales como el uso de técnicas de tolerancia

a fallos, rompen a la relación causal entre fallas y errores para que fallas locales no

causará fallas globales, por lo tanto "tolerar" esas fallas locales.

Una extensión relacionada con tolerancia a errores de medidas de contención para

evitar consecuencias catastróficas, como la muerte, lesiones personales y propiedad

grave o daños ambientales, en caso de fallas. Por ejemplo, contención de fracaso para

el software de control en tiempo real utilizado en reactores nucleares puede incluir

muros de hormigón que rodean y contienen material radiactivo de reactor de fusión

abajo debido a fallas de software, a fin de evitar daños al medio ambiente y la salud de

las personas.

Tratar con defectos de previo y posterior al lanzamiento

Diferentes alternativas de control de calidad pueden verse como un esfuerzo concertado para

hacer frente a errores, fallos o errores, a fin de lograr el objetivo común de calidad y mejora.

Prevención de defectos y las actividades de reducción de defecto tratan directamente con los

procesos durante el proceso de desarrollo de software.

Después del lanzamiento del producto, las fallas observadas y problemas notificados por los

clientes y los usuarios también deben corregirse, esto a su vez, podría conducir a la reducción

de defectos y generar un producto calidad. Sin embargo, no se debe renunciar a actividades de

prevención y reducción de defectos, porque el costo de corregir defectos después de lanzar el

producto es mucho mayor al producto en desarrollo. Además, el daño a la reputación de los

proveedores de software puede ser devastador.

Educación y formación

La educación y formación proporcionan soluciones basadas en el personal para la eliminación

de origen del error. Se ha observador que los profesionales de software son el factor más

importante que determina la calidad y, en última instancia, el éxito o el fracaso de la mayoría

de los proyectos de software. Educación y formación de profesionales de software pueden

ayudarles a controlar, administrar y mejorar su forma de trabajar. La eliminación de los errores

humanos ayudará a impedir que ciertos tipos de errores ingresen en el producto de software.

Page 3: Aseguramiento de Calidad de Software y Tecnicas Asociadas

Conocimiento de producto y el dominio especifico. Si las personas involucradas no

están familiarizadas con el dominio de aplicación o tipo de producto, hay una buena

posibilidad de que se apliquen mal las soluciones. Por ejemplo, los desarrolladores

familiarizados con software integrado pueden diseñar software sin tener en cuenta sus

limitaciones ambientales, provocando a diversos problemas de la interfaz y la

interacción entre el software y su entorno físico.

Conocimiento en el desarrollo de software y experiencia, desempeña un papel

importante en el desarrollo de productos de software de alta calidad. Por ejemplo, la

falta de experiencia con la especificación de análisis y requisitos de producto

generalmente conduce a muchos problemas y afectan en posterior diseño,

codificación y pruebas de actividades.

Conocimientos sobre metodología, tecnología y herramientas de desarrollo también

desempeña un papel importante en el desarrollo de productos de software de alta

calidad. Por ejemplo, en una implementación de la tecnología de contorsionista (Mills

et al., 1987b), si los desarrolladores no están familiarizados con los componentes clave

de verificación formal o pruebas estadísticas, hay pocas posibilidades para la

producción de productos de alta calidad.

Conocimiento del proceso de desarrollo. Si el personal de proyectos no tienen un buen

conocimiento del proceso de desarrollo, es poco probable que el proceso pueda

aplicarse correctamente. Por ejemplo, si las personas involucradas en el desarrollo de

software incremental no saben cómo encajan los esfuerzos de desarrollo individuales

para los diferentes incrementos puede llevar a muchos problemas de interfaz o

interacción.

Método formal

Métodos formales proporcionan una forma para eliminar ciertas fuentes de error y para

comprobar la ausencia de fallos relacionados. Los métodos de desarrollo formal, incluyen la

especificación formal y verificación formal. Especificación formal se ocupa de producir un

conjunto claro de especificaciones del producto para los requerimientos del cliente, así como

las limitaciones ambientales e intenciones de diseño, estén correctamente reflejadas, lo que

reduce las posibilidades inserción de errores accidentales. Verificación formal comprueba la

conformidad de diseño de software o código contra estas especificaciones formales,

garantizando así que el software está libre de errores con respecto a sus especificaciones

formales.

Page 4: Aseguramiento de Calidad de Software y Tecnicas Asociadas

El método oficial más antiguo y más influyente es el enfoque axiomático. En este

enfoque, el "significado" de un elemento de programa o la interpretación formal de los

efectos de su ejecución se resumieron en un axioma. Reglas y axiomas adicionales se

usan para conectar diferentes piezas. Un conjunto de condiciones formales que

describe el estado del programa antes de su ejecución llamado pre condiciones y el

conjunto después de la ejecución del programa llamados pos condiciones. Este

método comprueba que un determinado programa satisfacen las precondiciones y

postcondiciones

Otras técnicas de verificación formal influyentes incluyen la transformación de

predicados basado en ideas de condición más débiles (Dijkstra, 1975; Gries, 1987), y

cálculo de programa o enfoque funcional basado en funciones matemáticas y

ejecuciones simbólicas (Mills et al, 1987a). Las ideas básicas son similares al enfoque

axiomático, pero los procedimientos de pruebas son algo diferentes.

Varios otros limitado alcance o también existen técnicas semiformales, que

compruebe para determinadas propiedades en lugar de probar la corrección completa

de programas. Por ejemplo, técnicas control de modelo están ganando popularidad en

la comunidad de investigación de ingeniería de software (Ghezzi et al., 2003). Varios

métodos semiformales basados en formularios o tablas, como (Parnas y Madey, 1995),

en lugar de lógica formal o funciones matemáticas, han encontrado también

aplicaciones importantes.

Hasta ahora, el mayor obstáculo para métodos formales es el alto costo asociado con

la difícil tarea de llevar a cabo estas actividades intensivas humanas correctamente sin

suficiente apoyoautomatizado. Este hecho también explica, en un grado, la creciente

popularidad de alcance limitado y enfoques semiformales.