Sunteți pe pagina 1din 69

CALIDAD Y EL SOFTWARE

INTRODUCCION

Las

computadoras

estn

siendo

usadas en una amplia y creciente


variedad de reas de aplicacin y su
operacin

correcta

es

a menudo

crtica para el xito de los negocios y


la seguridad humana

INTRODUCCION

Desarrollar o seleccionar productos de


software de alta calidad es por lo tanto un
asunto de primera importancia.

No

debe

hacerse

distincin

entre

construir un programa y cualquier otro


bien de consumo.

INTRODUCCION

Existen estudios y estadsticas que representan con claridad la problemtica del


desarrollo de software:
Slo el 51% de los proyectos de software tienen xito
Standish Group, CHAOS Report

CONCEPTOS BASICOS DE
CALIDAD

CONCEPTOS BASICOS DE CALIDAD

Las cinco vistas principales segn Kitchenham y Pfleeger son:

En la vista trascendental, calidad es difcil de definir o describir en trminos


abstractos, pero puede ser reconocido si est presente.

En la vista del usuario, la calidad es la idoneidad para un propsito o las


necesidades del usuario.

CONCEPTOS BASICOS DE CALIDAD

En la vista de producto, el enfoque es sobre caractersticas


inherentes en el propio producto, se controlan estos indicadores de
calidad interna (o tambin llamado mtricas internas) con la
esperanza de obtener un mejor comportamiento externo en el
producto (calidad en uso).

CONCEPTOS BASICOS DE CALIDAD

En la vista de la fabricacin, calidad significa conformidad para


procesar las normas.

En la vista basada en el valor, la calidad es la disposicin de los


clientes a pagar por un producto/servicio/software.

CONCEPTOS BASICOS DE CALIDAD

Veamos otras definiciones planteadas por instituciones reconocidas:

Propiedad o conjunto de propiedades inherentes a un objeto que


permiten apreciarlo como mejor, igual o peor que otros objetos de su
especie [DRAE: Diccionario de la Real Acadmica Espaola]

CONCEPTOS BASICOS DE CALIDAD

Calidad suele significar el conjunto de las cualidades

Es la totalidad de las caractersticas de una entidad que dan soporte


a su capacidad de satisfacer necesidades manifiestas e implcitas
[ISO 8402:1994]

Origen y Conceptos

Origen

En los aos 50, el software comenz a encontrar su camino dentro


de los sistemas del DoD (del ingls Deparment of Defense of USA).
Usualmente estos proyectos estaban muy alejados de la
planificacin, se pasaban del presupuesto y tenan muchos
problemas tcnicos.

Origen

Para intentar resolver este problema se estableci la Verificacin y


Validacin Independientes (IV&V del ingls Independent Verification
and Validation)

Origen

Luego durante los aos 70 la actividad de desarrollo de software


comenz a expandirse y las compaas de desarrollo de software
fueron experimentando los mismos pobres resultados que las agencias
gubernamentales (DoD, NASA etc.) en las dcadas tempranas.

Origen

Varios

proyectos

desarrollados

entre

1980

1990

fueron

desastrosos, muchos excedan ampliamente el presupuesto y la


planificacin o entregaban software de baja calidad .

Durante los 80 esta experiencia se convirti en lo que conocemos


como crisis del software.

Origen

Mientras SQA era visto como un pequeo paso dentro del proceso
del desarrollo del software, muchos jefes de proyectos vieron
beneficios cuantificables a partir de integrar SQA dentro del proceso
de desarrollo de software.

CALIDAD DE
SOFTWARE

CALIDAD DE SOFTWARE

Hablamos todo el tiempo de problemas relacionados con la calidad


del software pero no tenemos una definicin precisa de lo que sta
significa

CALIDAD DE SOFTWARE

Sin una definicin clara, concisa y medible de lo que es la calidad del


software, no podemos tomar buenas decisiones de negocio respecto
del uso de los recursos.

CALIDAD DE SOFTWARE

Roger Pressman :
El cumplimiento de los requerimientos funcionales y de
performance explcitamente definidos, de los estndares de
desarrollo

explcitamente

documentados

de

las

caractersticas implcitas esperadas del desarrollo de software


profesional.

CALIDAD DE SOFTWARE

Watts Humphrey dice:


El foco principal de cualquier definicin de calidad de software
debera ser las necesidades del cliente. Crosby al igual que
Pressman define la calidad como conformidad con los
requerimientos. Mientras uno puede discutir la diferencia entre
requerimientos, necesidades y deseos, la definicin de calidad debe
considerar la perspectiva de los usuarios. Entonces las preguntas
claves son Quines son los usuarios?, Qu es importante para
ellos? Y Cmo sus prioridades se relacionan con la manera en que
se construye, empaqueta y se da soporte al producto?

CALIDAD DE SOFTWARE
PRINCIPIOS DE CALIDAD

Watts Humphrey, considerado padre de la calidad de los procesos de


software, public los 6 principios bsicos de la calidad del software, los
cuales son:

Principio 1. Si un cliente no demanda calidad, probablemente no la


conseguir.

Principio

2.

Para

obtener

calidad

de manera

constante,

los

desarrolladores deben gestionarla en su trabajo.

Principio 3. Para gestionar la calidad, los desarrolladores deben


medirla.

CALIDAD DE SOFTWARE
PRINCIPIOS DE CALIDAD

Principio 4. La calidad de un producto la determina el proceso usado


para desarrollarlo.

Principio 5. Ya que las pruebas solucionan solo una fraccin de los


defectos, debes tener pruebas de calidad.

Principio 6. La calidad solo la producen profesionales motivados


orgullosos de su trabajo.

CALIDAD DE SOFTWARE

Al Davis define calidad del software como:

La calidad no se trata de tener cero defectos o una mejora medible


de la proporcin de defectos, no se trata de tener los requerimientos
documentados. No es ms ni menos que satisfacer las necesidades
del cliente (por ms que las necesidades estn o no correctamente
documentadas)

CALIDAD DE SOFTWARE
Glosario de la IEEE
El grado con el cual un sistema, componente o
proceso cumple con los requerimientos y con las
necesidades y expectativas del usuario.

ASEGURAMIENTO DE CALIDAD DE
SOFTWARE Y TECNICAS
ASOCIADAS

ASEGURAMIENTO DE CALIDAD
DE SOFTWARE

Las actividades para la garanta de calidad (QA) garantizan que


pocos, o ningn defecto en el sistema de software exista cuando se
entregue a sus clientes o se lance al mercado

Clasificacin de actividades
de acuerdo a los defectos

Existen actividades de control de calidad como intentar prevenir, eliminar,


reducir o contener diversos problemas especficos de acuerdo a los defectos.

Podemos clasificar estas alternativas de control de calidad en tres categoras


genricas:

Prevencin de defectos a travs bloqueo de error o remocin de la fuente


del error

Reduccin de defectos a travs de deteccin y remocin de fallas

Contencin de defectos a travs de prevencin y contencin de fallas :

Clasificacin de actividades
de acuerdo a los defectos
Prevencin de defectos a travs bloqueo de error o remocin de la fuente del error

Eliminar fuentes de error, tales como ambigedades y errores de


conceptualizacin que son la raz de los errores.

Prevencin o bloqueo de fallas. Este grupo de tcnicas rompe la relacin entre


las fuentes de errores y fallas a travs del uso de herramientas, tecnologas y
la aplicacin de ciertas normas de proceso y producto.

Clasificacin de actividades
de acuerdo a los defectos
Reduccin de defectos a travs de deteccin y remocin de fallas

Inspeccin, deteccin y remocin directa de fallas del cdigo del software,


diseo, etc.

Pruebas para remover fallas, basadas en observacin durante la ejecucin del


programa

Clasificacin de actividades
de acuerdo a los defectos
Contencin de defectos a travs de prevencin y contencin de fallas :

Algunas alternativas de control de calidad, tales como el uso de tcnicas de


tolerancia a fallos.

Una extensin relacionada con tolerancia a fallos son las medidas de


contencin para evitar consecuencias catastrficas, como la muerte, lesiones
personales, daos a la propiedad o daos ambientales, en caso de fallas.

Tratar con defectos al post y pre


lanzamiento

Las fallas restantes en el producto terminado son comnmente llamadas


defectos dormidos, estos pueden estar dormidos por algn tiempo, pero
tienen el potencial de causar problemas a los usuarios del producto, situacin
que se debe minimizar o evitar.

Tratar con defectos al post y pre


lanzamiento

Despus del lanzamiento del producto, las fallas observadas y problemas


reportados por los clientes y usuarios tambin necesitan ser solucionados.

Por otra parte las actividades de contencin de defectos tienen por objetivo
minimizar el impacto negativo de estas fallas remanentes durante las
operaciones de uso despus del lanzamiento del producto.

Representacin grafica

Clasificacin de actividades
de acuerdo a los defectos

La figura tambin muestra la relacin entre las actividades de Aseguramiento


de Calidad y los errores relacionados a travs de algunos ejemplos:

Algunos errores conceptuales teles como e6 son directamente removidos por


las actividades de remocin de errores

Otras acciones incorrectas o errores, tales fuentes de error provocados por la


fuente e3 y e5 son bloqueados.

Clasificacin de actividades
de acuerdo a los defectos

Siguen otras fallas como f2, son bloqueadas a travs de tolerancia a fallas por
algunas instancias de ejecucin.

Entre las instancias de error, las estrategias de contencin podran ser


aplicadas para aquellos con consecuencias graves.

Educacin y formacin

La educacin y formacin proporcionan soluciones basadas en el personal


para la eliminacin de origen del error.

Educacin y formacin de profesionales de software pueden ayudarles a


controlar, administrar y mejorar su forma de trabajar.

Educacin y formacin
Conocimiento de producto y el dominio especifico

Por ejemplo, los desarrolladores familiarizados con software integrado pueden


disear software sin tener en cuenta sus limitaciones ambientales, provocando
a diversos problemas de la interfaz y la interaccin entre el software y su
entorno fsico.

Educacin y formacin
Conocimiento en el desarrollo de software y experiencia

Por ejemplo, la falta de experiencia con la especificacin de anlisis y


requisitos de producto generalmente conduce a muchos problemas y afectan
en posterior diseo, codificacin y pruebas de actividades.

Educacin y formacin
Conocimientos sobre metodologa, tecnologa y herramientas de desarrollo

Por ejemplo, en una implementacin de la tecnologa de contorsionista (Mills


et al., 1987b), si los desarrolladores no estn familiarizados con los
componentes clave de verificacin formal o pruebas estadsticas, hay pocas
posibilidades para la produccin de productos de alta calidad.

Educacin y formacin
Conocimiento del proceso de desarrollo

Por ejemplo, si las personas involucradas en el desarrollo de software


incremental no saben cmo encajan los esfuerzos de desarrollo individuales
para los diferentes incrementos puede llevar a muchos problemas de interfaz
o interaccin.

Mtodo formal

Los Mtodos formales proporcionan una forma para eliminar ciertas fuentes de
error y para comprobar la ausencia de fallos relacionados.

Los mtodos de desarrollo formal, incluyen la especificacin formal y


verificacin formal.

Mtodo formal

El mtodo oficial ms antiguo y ms influyente es el enfoque axiomtico.

En este enfoque, el "significado" de un elemento de programa o la


interpretacin formal de los efectos de su ejecucin se resumieron en un
axioma. Reglas y axiomas adicionales se usan para conectar diferentes
piezas.

Mtodo formal

Otras tcnicas de verificacin formal influyentes incluyen la transformacin de


predicados basado en ideas de condicin ms dbiles (Dijkstra, 1975; Gries,
1987), y clculo de programa o enfoque funcional basado en funciones
matemticas y ejecuciones simblicas (Mills et al, 1987a)

Mtodo formal

Tambin existen tcnicas semiformales , Por ejemplo, las tcnicas de control


de modelo estn ganando popularidad en la comunidad de investigacin de
ingeniera de software (Ghezzi et al., 2003).

Mtodo formal

Hasta ahora, el mayor obstculo para los mtodos formales es el alto costo
asociado con la difcil tarea de llevar a cabo correctamente estas actividades
humanas intensivas sin suficiente apoyo automatizado.

OTRAS TECNICAS DE
PREVENCION
DEFECTOS

Un proceso bien gestionado tambin puede eliminar muchos


problemas. Por ejemplo, no tener un proceso definido o no
siguindolo para la gestin de la configuracin del sistema puede dar
lugar a incoherencias o problemas de interfaz entre los diferentes
componentes de software.

OTRAS TECNICAS DE
PREVENCION
DEFECTOS

A veces, las herramientas de software especficas tambin pueden


ayudar a reducir las posibilidades de que las inyecciones de falla. Por
ejemplo,

un

editor

automticamente

dirigido

cada

para

parntesis

la
de

sintaxis
apertura,

que
"{",

equilibra
con

un

parntesis de cierre "}", puede ayudar a reducir los problemas


sintcticos en los programas escritos en el lenguaje C.

REDUCCION DE
FALLAS

Para la mayora de los sistemas grandes de software en uso hoy en


da, es poco realista esperar que las actividades de prevencin de
defectos sea 100% efectiva en la prevencin de las inserciones de
falla accidentales. Por lo tanto, necesitamos tcnicas efectivas para
eliminar la mayor cantidad de fallas inyectadas como sea posible
bajo las restricciones del proyecto.

INSPECCIN: DETECCIN DE
REMOCIN DIRECTA DE
FALLOS

Inspecciones de software son exmenes crticos de software por


parte de inspectores humanos destinados a descubrir y corregir fallas
en los sistemas de software. La inspeccin es una alternativa de
control de calidad conocida, familiar para la mayora de profesionales
con experiencia de calidad de software. La obra ms antigua y de
mayor influencia en la inspeccin de software es la inspeccin Fagan
(Fagan, 1976).

PRUEBAS: OBSERVACIN
Y REMOCIN DE FALLAS

Las pruebas son una de las partes ms importantes de QA y la


actividad de control de calidad ms comnmente utilizada. Las
pruebas consisten en la ejecucin de software y la observacin del
comportamiento del programa o el resultado. Si se observa un
fracaso, se analiza el registro de ejecucin de localizar y corregir el
fallo que lo causo. Actividades de pruebas individuales y tcnicas se
pueden clasificar utilizando diversos criterios y se examinaron en
consecuencia, como se discute a continuacin.

CUNDO REALIZAR LAS


PRUEBAS Y DETECTAR LOS
FALLOS RELACIONADOS?

Dado que las pruebas es una actividad de control de calidad basado


en ejecucin, un requisito previo para la prueba real es la existencia
de las implementadas unidades de software, componentes, o sistema
para ser probado, aunque la preparacin para la prueba puede
llevarse a cabo en las fases anteriores de desarrollo de software.

Si se utilizan prototipos de software, como por ejemplo en el proceso


de espiral, o si un sistema de software es desarrollado mediante un
proceso incremental o iterativo, la prueba general puede conseguir
comenzado mucho antes.

QUE PROBAR, Y QU
TIPO DE FALLOS
ENCONTRAMOS?

Prueba de la caja negra o funcional verifica el correcto manejo de


las funciones externas proporcionadas por el software, o si el
comportamiento observado se ajusta a las expectativas del usuario o
las especificaciones del producto. Caja blanca (o estructural),
prueba que verifica la correcta implementacin de las unidades
internas, las estructuras y las relaciones entre ellos. Varias tcnicas
pueden ser utilizadas para construir modelos y generar casos de
prueba para llevar a cabo pruebas de caja negra o de caja blanca.

OTRAS TCNICAS E
IDENTIFICACIN DE
RIESGOS

La inspeccin es de las tcnicas estticas ms utilizadas para la


deteccin de defectos y su remocin. Varias otras tcnicas estticas
estn disponibles, incluyendo diversos modelo formales basados en
los anlisis como el anlisis de algoritmos, anlisis de tabla de
decisiones, anlisis de valores en los lmites, la mquina de estados
finitos y modelado Petri-net, el control anlisis de flujo de datos,
rboles de fallos de software, etc.

Regla de 80:20

CONTENCION DE
FALLAS

Debido al gran tamao y alta complejidad de la mayora de los


sistemas de software en uso hoy en da, las actividades de reduccin
de defectos anteriores slo pueden reducir el nmero de fallos a un
nivel bastante bajo, pero no eliminarlos por completo. Para los
sistemas de software donde el impacto fracaso es sustancial, como
muchos sub-sistemas de software de control en tiempo real de
medicina, nuclear, transporte y otros sistemas integrados, este bajo
nivel de defectos y riesgos todava pueden ser inadecuados. Se
necesitan algunas alternativas de control de calidad adicionales.

SOFTWARE TOLERANTE A
FALLOS

Los bloques de recuperacin utilizan ejecuciones repetidas (o


redundancia en el tiempo) como un mecanismo bsico de tolerancia
a fallos. Si se detectan fallos en algunas reas locales, una parte de
la ltima ejecucin se repite, con la esperanza de que esta ejecucin
repetida no dar lugar a la misma falla. Por lo tanto, las fallas locales
no se propagarn, aunque podra involucrar algunos retrasos.

NVP utiliza redundancia en paralelo, donde N copias, cada una de


una versin diferente, de los programas cumpliendo las mismas
funciones se estn ejecutando en paralelo. El algoritmo de decisin
en NVP se asegura de que las fallas locales en un nmero limitado de
estas versiones paralelas no ponga en peligro los resultados de
ejecucin global.

Un hecho a destacar es que en la mayora de las tcnicas de tolerancia a


fallos, los errores no se identifican tpicamente, por lo tanto, no se
elimina, pero son tolerados

QA Y CONTENCION DE
FALLAS

La eliminacin de peligros a travs de la sustitucin, la simplificacin,


la disociacin, la eliminacin de errores humanos especficos, y la
reduccin de los materiales o condiciones peligrosas.

Reduccin del peligro a travs del diseo para la capacidad de


control (por ejemplo, la liberacin automtica de la presin en las
calderas),

QA Y CONTENCION DE
FALLAS

Control de riesgos a travs de la reduccin de la exposicin, el


aislamiento y la contencin (por ejemplo, las barreras entre el
sistema y el medio ambiente),

Control de daos a travs de las vas de evacuacin, el abandono


seguro de los productos y materiales, y los dispositivos para limitar
los datos fsicos al equipo y personal.

OBSERVACIONES FINALES QA

La prevencin de defectos a travs de eliminacin de fuentes de


error y actividades error de bloqueo, como la educacin y la
formacin, la especificacin formal y verificacin, y la seleccin y
aplicacin de tecnologas apropiadas, herramientas, procesos o
normas.

Reduccin de defectos a travs de la inspeccin, pruebas y otros


anlisis estticos o actividades que detectan y eliminan los fallos de
software.

Como

una

de

las

alternativas

ms

importantes

ampliamente usadas,

Defectos de contencin a travs de la tolerancia a fallos, la


prevencin o minimizacin de impacto, para garantizar la fiabilidad y
seguridad del software.

n
A

c
es

t ic
p

o?

Algunos hechos para considerar el


importante papel que juega la Calidad
dentro del desarrollo de Software:
28 de julio 1962 Mariner I.Un error
en el software de la sonda Mariner I hace
que el cohete se desve de su trayectoria
cayendo sobre el Ocano Atlntico.

Una serie de acciones de espionaje por parte de la CIA para


controlar el gaseoducto transiberiano acabo instalando un bug que
provoc la mayor explosin no nuclear de la historia.

04 de junio 1996 Ariane 5 Vuelo 501 ,explot por un defecto en el software de


control internoantes de que pasara un minuto de vuelo.

1985-1987 Acelerador mdico Therac 25.Un error en el


tratamiento de radiacin del dispositivo proporcion dosis
letales de radiacin en varios centros mdicos. Cinco personas
murieron y muchas otras se vieron afectadas.

CONCLUSIONE
S

CONCLUSIONES

La situacin actual de la industria mundial de desarrollo de software


y mantenimiento de software requiere implementar normas de
calidad que permitan mejorar los procesos de todas las reas de la
empresa.

CONCLUSIONES

La prioridad actual de estas organizaciones no debe centrarse


nicamente de un producto terminado. Debe medirse a los largo de
todos los procesos que se llevan a cabo en una empresa que
desarrolla software.

S-ar putea să vă placă și