Sie sind auf Seite 1von 41

Calidad de los Sistemas de

Informacin

Unidad II. Calidad enfocada al desarrollo de los


S.I.

Calidad en el desarrollo de software

Desarrollo del SW
El software es definido como la suma total de

los programas de cmputo, procedimientos,


reglas, documentacin y datos asociados que
forman parte de las operaciones de un sistema
de cmputo (IEEE Std 729-1993).
Bajo esta definicin el concepto de software va

ms all de los programas de cmputo en sus


distintas formas: cdigo fuente, binario o cdigo
ejecutable, adems de su documentacin.

El desarrollo de software es una actividad compleja que depende

principalmente del esfuerzo intelectual de las personas, as como de los


procesos y la tecnologa con la que se desarrolla. Existen diversas
metodologas y procesos para el desarrollo de software, algunas de las
actividades tpicas que se realizan son las siguientes:
1.

Requerimientos. Identificar las necesidades del usuario y


documentarlas en trminos de los servicios que debe ofrecer el software.

2. Anlisis y diseo. Desarrollar un modelo tcnico conceptual de la

solucin que permita cumplir todos los requerimientos especificados y


sirva como base para la construccin del software.
3. Codificacin. Implementar el modelo conceptual en un lenguaje o

herramienta de programacin, es decir, generar el cdigo fuente,


adems de realizar las pruebas unitarias a cada componente de software
y la integracin de estos.
4. Pruebas de sistema. Verificar que el software cumpla con los

requerimientos especificados y no presente fallas.

Calidad de software
Las dimensiones clave de la calidad son las siguientes:

1. Nivel de satisfaccin. Grado en el cual los clientes o usuarios perciben que

el producto de software cumple sus necesidades, requerimientos y expectativas.


2. Valor del producto. Grado en el cual un producto de software tiene valor
para sus involucrados, en relacin al ambiente competitivo.
3. Atributos de calidad. El grado en el cual un producto de software posee una
combinacin de propiedades deseadas (eficiencia, integridad, portabilidad, entre
otras).
Existen diversas taxonomas de los atributos de calidad, una de stas es la que

propone el Handbook of Software Quality Assurance que considera: a) calidad


de diseo (correcto, facilidad de mantenimiento, facilidad de verificacin), b)
calidad de desempeo (eficiencia, integridad, fiabilidad, facilidad de uso,
facilidad de prueba), c) calidad de adaptacin (facilidad de expansion,
flexibilidad, portabilidad, reusabilidad, interoperabilidad. Esfuerzo necesario para
acoplar el software sobre una plataforma con otro software y/o plataforma, intraoperabilidad).

4. Defectos. Grado en el cual el producto de software presenta fallas al

utilizarse, atribuibles a ste.


5. Calidad del proceso. En relacin al proceso de desarrollo por el
cual fue construido el software.
Lograr todas estas dimensiones de la calidad es algo muy complejo,

considerando adems que el software es un producto intangible. Los


defectos del software son una consecuencia indeseable del error
humano.
En cada etapa del desarrollo de software se cometen errores, es por ello

que las pruebas y el aseguramiento de la calidad son actividades


necesarias en los proyectos de desarrollo de software; y es importante
considerar que para el cumplimiento su objetivo, es necesario invertir
recursos significativos.
Al contrastar el costo de encontrar errores en cada fase del desarrollo

contra el costo incurrido de encontrar el error en una fase posterior, se


demuestra que una inversin temprana en prevencin y descubrimiento
de errores, mediante aseguramiento de la calidad, estndares,
revisiones, auditoras e inspecciones, permiten remover los defectos con
un costo significativamente menor.

Defectos y errores en la calidad de los SI

Fallos
Un fallo ocurre cuando algo deja de funcionar :
Cuando debera de hacerlo o
Como debera de hacerlo.
Los fallos estn referidos directamente al

incumplimiento de las especificaciones tanto


explcitas como implcitas. (definicin de calidad)
La OCURRENCIA de fallos seala la distancia del

producto al objetivo de la calidad y en consecuencia


del proceso que lo cre.

Defectos
Un defecto es la causa de un fallo, es algo en el producto que:
Est, pero no debe.
No est, pero debe .
No est como debe estar.
Desde el punto de vista de la corporacin, sus efectos se computan

como COSTE DE LA NO CALIDAD, que se agravan cuanto ms


tiempo permanezca sin ser eliminado.
La PRESENCIA de defectos apunta de forma directa a la validez de los

procedimientos de inspeccin y prueba.


Un defecto provoca que un programa no cumpla de manera completa y

efectiva aquello para lo que fue creado.


Es algo concreto y objetivo: se puede identificar, describir y contabilizar.
Los defectos tienen un coste.

Tipos de defectos
Documentacin.
Sintaxis.
Organizacin (gestin de cambios, libreras, control de

versiones).
Asignacin (declaraciones, mbitos, nombres duplicados).
Interfaz (dentro del mismo sistema o con otros externos).
Chequeo (mensajes de error, trazas, vaidaciones).
Datos (estructura, contenido).
Funcin (errores lgicos, bucles, recurvisidad).
Sistema (configuracin, instalacin, explotacin).
Entorno (diseo, compilacin, pruebas).

Coste de los defectos


Coste de resolver
Coste de evitar (SQAP Software Quality

Assurance Plan)
Otros costes
o Daos reales
o Tiempo
o Imagen
o Confianza
o Motivacin

Coste de los defectos (despus de)


Un defecto que llega a la fase de explotacin y pervive hasta que

ocasiona un fallo arrastra un volumen impredecible de perjuicios


que se pueden estimar econmicamente.

En la etapa final se debe impedir la entrega de productos

defectuosos al cliente. Procedimientos de inspeccin:


Revisin:
Protocolos de revisin.
Pruebas:
Diseo del plan de pruebas.
Diseo del protocolo de pruebas.
Formacin y entrenamiento del equipo de pruebas.

Coste de los defectos


(durante)
Los procedimientos de deteccin final de defectos son:
Caros:
o Es un trabajo largo, tedioso y realizado por especialistas.
Poco productivos:
o La tasa de deteccin de defectos sobre el producto terminado no es

muy alta.
Mal considerados:
o Sus costes son de difcil justificacin en la cuenta de resultados
Lo ideal es que los defectos no crucen la frontera del desarrollo.
El coste de un defecto est directamente relacionado con la distancia

entre el momento en que se introdujo y el momento en que se detecto.


De ello se deduce la importancia de la deteccin temprana y de la

incorporacin de procedimientos de revisin en todas las etapas.

Coste de los defectos


(antes)
El nico defecto barato es aquel que no se introdujo.
Por muy pronto que se detecte un defecto implica como mnimo la

realizacin del RETRABAJO* necesario para su correccin.


Pero en casos ms problemticos incorpora adems el RETRABAJO de

las tareas que, pese a haber sido bien realizadas, arrastraron los
efectos del error. (No siempre est claro cules son.)
Las metodologas de desarrollo deben contemplar estos aspectos y :
Minimizar el espacio para la comisin de errores (procedimientos).
Permitir

registrar las relaciones entre las distintas piezas del


desarrollo (trazabilidad)
Habilitar procedimientos de deteccin temprana (revisiones,
pruebas).
*Retrabajo: Trabajo que hay que hay que repetir.

El coste de los defectos

El coste de los defectos

Gestin y registro de
defectos
Registrar cada defecto que encuentres en un programa.
Registrar la informacin suficiente sobre cada defecto para que puedas

entenderlo posteriormente.
Analizar estos datos para ver qu tipos de defectos causan los mayores

problemas.
Idear formas de encontrar y corregir estos defectos.

Formas de encontrar
defectos
Aunque no hay forma de acabar con la introduccin

de defectos, es posible encontrar y eliminar casi


todos los defectos al principio del desarrollo.
Siempre estn implicados estos mtodos:
Identificar los sntomas del defecto.
Deducir

de estos sntomas la localizacin del

defecto.
Entender lo que es errneo en el programa.
Decidir cmo corregir el defecto
Hacer la correccin.
Verificar que el arreglo ha resuelto el programa.

Segn Humphrey, la forma ms rpida y

eficiente es revisando personalmente el


cdigo fuente.
As se ven los problemas, no los sntomas.
Sin embargo, con experiencia encontrar una
media del 75% al 80% de los defectos.

Formas de encontrar
defectos
Con el compilador.
Pero no detecta los errores semnticos.
Mediante pruebas.
Las pruebas de unidad encuentra sobre el 50% de los

defectos lgicos.
Las de sistema entre un 30% y un 40%. Pero no podemos
probar todos los casos.
La ms comn de todas: Que los detecten los usuarios.
Durante un ao, IBM gast 250 millones de dlares en

reparar y reinstalar correcciones de 13,000 errores


encontrados por los usuarios: 20,000 dlares por defecto.

Revisar antes de compilar


Se dedicar el mismo tiempo antes o despus de

compilar.
Antes de la revisin, se dedicar entre un 12% y un
15% del tiempo a compilar. Despus un 3% o menos.
Una vez compilado el programa, la revisin no es tan
completa.
La compilacin es igualmente efectiva antes o
despus de la revisin del cdigo.
La experiencia indica que cuando un programa tiene
muchos
defectos
durante
la
compilacin,
generalmente tienen
muchos defectos en las
pruebas.

ACTIVIDAD
1.Desarrollar como investigacin en el
cuaderno:
Contabliziacin de defectos y errores.
Costo de encontrar y corregir defectos

Tipos de pruebas
Pruebas unitarias
Objetivo: comprobar que un mdulo de cdigo (funcin, mtodo, clase,

) funciona correctamente.
Pruebas funcionales
Objetivo: comprobar que el software desarrollado realiza de manera

funcionalmente correcta aquello para lo que fue desarrollado.


Pruebas de Integracin
Objetivo:

comprobar que los mdulos que componen el cdigo


desarrollado funciona correctamente una vez que estos estn
integrados entre s.

Pruebas de validacin (de aceptacin)


Objetivo: comprobar que el software desarrollado cumple con las

expectativas del cliente, tanto desde el punto de vista de la


funcionalidad (objetiva) como de la satisfaccin del cliente (subjetiva)

Pruebas de caja blanca


Objetivo: comprobar desde el interior de los

mdulos de cdigo que estos funcionan de


manera correcta.
Pruebas de caja negra
Objetivo: comprobar desde el exterior (slo

prestando atencin a las entradas y salidas)


de los mdulos de cdigo que estos funcionan
de manera correcta.

ACTIVIDAD
2.Desarrollar como tarea en el cuaderno
la investigacin sobre:
Pruebas de caja blanca y un ejemplo

de aplicacin
Pruebas de caja negra y un ejemplo de
aplicacin.

Errores
Un

error es la accin que ha provocado la


introduccin de un defecto en el producto.
La COMISIN de errores seala de forma directa a
la calidad de los procesos de desarrollo.
Un fallo OCURRE durante el FUNCIONAMIENTO

del equipo.
Un defecto se INTRODUCE en el PRODUCTO
durante su desarrollo.
Un error lo COMETE una PERSONA durante el
desarrollo.

Errores de los usuarios


UN FALLO PROVOCADO POR UN ERROR DE UN USUARIO ES UN

DEFECTO NUESTRO
Los usuarios tambin cometen, pero eso no debe comprometer

las prestaciones del sistema. No deben producir fallos, no es


razonable trasladar la culpa al usuario de las averas causadas
por la incorrecta utilizacin (salvo especificacin).
Por ello calidad atender tambin a la formacin y entrenamiento

de los usuarios
Adems de ello, la calidad del producto y por tanto del proceso

de desarrollo debe plantearse bajo la perspectiva del uso y por


tanto debe preverse cualquier eventualidad que pueda ocurrir
durante la explotacin y proteger el sistema frente a ello.

Listas de comprobacin
La clave para realizar una revisin de cdigo efectiva es tener

un procedimiento de revisin eficiente.


Una lista de comprobacin contiene una serie de pasos de

procedimiento que se quiere y pretende seguir de forma


precisa.
La lista de comprobacin encapsula la experiencia personal.
Utilizndola

con regularidad y adaptndola, permitir


deteccin oportuna de los defectos de los programas.

la

Un ejemplo de lista de comprobacin completa y compleja es la

que realiza la NASA en la cuenta atrs de un lanzamiento, que


dura varios das.

El principal peligro es que generalmente se

encuentra slo lo que busca.


Si solamente hace las pruebas de la lista de
comprobacin, solamente encontrar lo que
est en dicha lista.
Haga al menos una revisin general del
programa para buscar lo inesperado, desde la
perspectiva del sistema o del usuario.

Ejemplo de lista de
comprobacin

Clasificacin de datos de
defectos

Dificultades de encontrar errores


Los defectos enmascaran o agravan a otros.
Interaccionan y enmascaran sntomas de otros.
Es

difcil, incluso en programas pequeos,


probar todos los caminos lgicos.
En sistemas complejos, al probar slo las
condiciones que pensamos ms importantes,
pasamos por alto muchos defectos.
A mayor nmero de defectos que entran en la
fase de pruebas, compilacin o revisin, mayor
la probabilidad de dejarlos en el producto.

Valores de rendimiento

Costos de la calidad en el desarrollo


de software
a) Costos para asegurar la calidad o costos de conformidad
Costos de Prevencin
Costo de todos aquellos esfuerzos para asegurar la calidad del software y

prevenir defectos en todas las fases del desarrollo de software. Implica


costes incurridos cuando modificas el proceso para evitar introducir
errores: Anlisis para comprender los defectos, mejora de especificacin de
requisitos, diseo e implementacin, rediseo y pruebas de un nuevo
proceso.
Por ejemplo: aseguramiento de la calidad (planeacin de la calidad,

mejora de procesos, definicin de procesos, polticas y estndares,


obtencin, anlisis y uso de datos sobre la calidad, anlisis de causas
races), requerimientos (especificaciones y prototipos), administracin
del proyecto (planeacin, capacitacin, recopilacin de mtricas),
librera de reuso (capacitacin y herramientas), administracin de la
configuracin (capacitacin y herramientas), consultora.

Costos de evaluacin
Costo del esfuerzo para descubrir la condicin de la

calidad del software (evaluaciones planeadas); incluyen


todo el trabajo de valoracin del producto para ver si
tiene defectos, excluyendo el tiempo dedicado a la
correccin de defectos.

Esto comprende por ejemplo: evaluacin de proyectos

(revisin de especificaciones de requerimientos, diseo y


componentes, verificaciones y validaciones en general,
inspecciones, pruebas unitarias, de integracin y de
sistema),
auditoras
de
calidad
del
producto,
evaluaciones externas, pruebas de productos adquiridos.

b) Costos por falta de calidad o costos


de no conformidad
Costos de fallas internas
Costo del esfuerzo para detectar y corregir problemas previos a

que el usuario los detecte, por ejemplo: corregir defectos y el


retrabajo correctivo en todas las etapas.
Costos de fallas externas
Costo del esfuerzo para corregir problemas que son detectados

por el usuario. Esto incluye remocin de fallas (mantenimiento


correctivo, retrabajo, codificacin y prueba de defectos, compra
de actualizaciones de productos), soporte (soporte tcnico para
responder por los defectos, preparacin de apuntes de
respuestas de soporte, investigacin de las quejas del usuario),
compensacin
(penalizaciones,
reclamaciones,
productos
devueltos, reembolsos, descuentos, costos de garanta), otros
(mala reputacin, prdida de ventas, usuario insatisfecho,
prdida de la confianza del cliente).

Como controlar la calidad del SW


Aseguramiento de la calidad del SW (SQA)
La calidad de los productos de software

puede ser mediante un proceso iterativo de


mejora continua que requiere control de
direccin, coordinacin y retroalimentacin
de muchos procesos simultneos:
Los procesos del ciclo de vida del SW.
El proceso de deteccin de error/defecto,

retirada de los mismos y prevencin.


El proceso de mejora de calidad

Esto

implica la utilizacin de procesos


estndares como los ISOs que permitan
localizar especficamente la falla en el
software y as poder depurarlo.

Esto se logra a travs de:


Procesos de Aseguramiento de la Calidad.
Procesos de verificacin.
Procesos de validacin.
Procesos de Revisin.
Procesos de Auditora.

Mejora de procesos como alternativa


para mejorar la calidad del software
Para construir un sistema de software de alta calidad, debe

asegurarse que cada una de sus partes sea de alta calidad. Para
mejorar la calidad de un producto, debe mejorarse la calidad del
proceso. Cuando calidad del software es pobre, el proceso de
desarrollo se enfoca a detectar y corregir defectos.
Las empresas de software requieren reducir costos, mejorar calidad

y mejorar tiempos.
Para lograr estos objetivos y mantenerse competitivas, deben

mejorar sus procesos de desarrollo de software. Los desarrolladores


de software estn conscientes que todo el software potencialmente
tiene defectos, esto hace que se realicen actividades para prevenir,
encontrar y corregir errores en el software.

Los costos de la mejora de procesos comprenden a) costos iniciales

(no recurrentes), b) costos de mantenimiento (recurrentes) y


c)costos de optimizacin. En cada uno de ellos existen factores de
costo como son: recursos humanos, tecnologa y administracin.
El proceso inicial por ejemplo, empieza con el reconocimiento de la alta

direccin sobre la necesidad de la organizacin en mejorar y termina


cuando el proceso de ingeniera de software est suficientemente bien
definido y practicado.
El tiempo de este esfuerzo es de 4 a 6 aos dependiendo de factores

como el estado de la organizacin y la cantidad de apoyo de la


administracin para el esfuerzo de mejora.
Algunos de los costos de esta fase estn relacionados con: la evaluacin

inicial, implementar programa de mtricas, la documentacin procesos,


la adquisicin de herramientas y la capacitacin inicial.

Herramientas para asegurar la calidad


Estndares de desarrollo
Propios
Adoptados
Soluciones de Diseo
Cdigos fuente de referencia
Configuracin y unificacin del IDE en

entornos de desarrollo corporativos


Herramientas de revisin de cdigo

Algunas herramientas SW
JUnit : http://www.junit.org/
Cactus : http://jakarta.apache.org/cactus /
Jtest: http://www.parasoft.com/jsp/products/jtest.jsp /
Jmeter: http://jakarta.apache.org/jmeter/
Crucible: http://www.atlassian.com/software/crucible /
Selenium: http://seleniumhq.org/

ACTIVIDAD
Desarrollar como investigacin en carpeta

de evidencias:
Clculo del costo de la calidad
www.w3c.org //html
www.jigsaw.w3.org/css-validator //css