Está en la página 1de 49

Diseño y Arquitectura de Software

Tercera Unidad:

FUNDAMENTOS DE CALIDAD
DE SOFTWARE
Semana 10

Conceptos Básicos de Calidad de Software

Mg. Ing. David Ortiz


CONTENIDO

1. Introducción
2. SW vs. otros productos industriales
3. Características básicas
4. Definiciones de Calidad
5. Casos
Conceptos Básicos

Existen distintos puntos de vista respecto a la calidad:

1. Filosófico: se puede reconocer pero no definir.

2. Usuario: cumple con el propósito previsto


• (‘fitness for purpose’).

3. Producto: es algo intrínseco al producto.

4. Valor: tiene calidad para el que esté dispuesto a pagar por


ello.
SW vs. otros productos industriales

1. Complejidad del producto


2. Visibilidad del producto
3. Procesos de desarrollo y producción
SW vs. otros productos industriales:
complejidad del producto

• Parámetro: número de modos operacionales


– Producto industrial: miles de modos de operación.
– SW: millones de posibilidades.
SW vs. otros productos industriales:
visibilidad del producto

• Los productos SW son invisibles


– ¿Cómo sabemos si a nuestro SW “le falta una
puerta”?
SW vs. otros productos industriales:
procesos de desarrollo y producción (I)

1. Desarrollo de producto:
• Diseñadores y profesionales de QA (Quality
Assurance) diseñan y prueban el prototipo para
detectar defectos.
2. Planificación de producción:
• Acciones previas a puesta en producción
SW vs. otros productos industriales:
procesos de desarrollo y producción (y II)

1. Desarrollo de producto:
• OK: en SW es donde se hacen las pruebas.
2. Planificación de producción:
• En algunos casos sí –software “llave en mano”.
3. Manufactura
• La manufactura SW es automática –copiar CDs y
manuales-.
Características Básicas del desarrollo de
Software

1. Complejidad alta
2. Invisibilidad del producto
3. Detección de defectos en menos fases de
desarrollo y producción
Qué nos obliga a asegurar la Calidad en el SW (I)

• Quién realiza Software:


– Alumnos y profesores en el ámbito de la
educación
– Aficionados
– Profesionales de otras áreas que desarrollan SW
como base para sus trabajos
– Ingenieros de Software
Qué nos obliga a asegurar la Calidad en el SW
(II): entorno del desarrollador profesional

1. Condiciones contractuales
2. Relación cliente-proveedor
3. Trabajo en equipo
4. Cooperación y coordinación
5. Interfaces con otros sistemas software
6. Cambios de componentes del equipo
7. Mantenimiento de producto
Qué nos obliga a asegurar la Calidad en el
SW (III): condiciones contractuales

• Lista de requisitos funcionales


• Presupuesto del proyecto
• Planificación temporal
• En algunos casos: equipos predefinidos
Qué nos obliga a asegurar la Calidad en el SW
(IV): relación cliente-proveedor

• Cooperación continua.
• Propenso a cambios
Qué nos obliga a asegurar la Calidad en el SW (V):
trabajo en equipo

• Componentes con diferentes:


– Criterios
– Objetivos
– Ganas
– Planteamientos profesionales
– ...
• ... Pero con una meta común, queramos o
no.
Qué nos obliga a asegurar la Calidad en el SW (VI):
cooperación y coordinación

• La multidisciplinariedad actual exige el


trabajo entre diferentes equipos:
– Otros equipos sw de la misma organización
– Equipos SW y HW
– Equipos cliente y proveedor
– Subcontratas
Qué nos obliga a asegurar la Calidad en el SW (VII):
cooperación y coordinación

Otro equipo
subcontratado
Equipo de
Equipo de
Desarrollo HW
Desarrollo SW

Equipo de
Desarrollo SW

Otro equipo
Nuestro subcontratado
Equipo

Otro equipo
Otro equipo subcontratado
Equipo de subcontratado
Desarrollo del
Cliente
Qué nos obliga a asegurar la Calidad en el SW (VIII):
interfaces con otros sistemas software

• Interfaces de entrada de otros sistemas sw


• Interfaces de salida a otros sistemas sw
• Interfaces de entrada y salida al panel de
control

Sistema de Sistema de Sistema de


Control de Gestión de Envío de
Asistencia Notas Información
Qué nos obliga a asegurar la Calidad en el SW (IX):
cambio de componentes del equipo
Qué nos obliga a asegurar la Calidad en el SW (y X):
mantenimiento de producto

• El software no se termina cuando se entrega


al cliente, sino que ¡¡¡NACE!!!
... un bebé un
poco problemático
Definición de Calidad (I)

Definiciones académicas de Calidad:

Totalidad de aspectos o características de un producto o


servicio que le hace satisfacer necesidades explícitas o
implícitas.

ISO 8492:1986

En una situación contractual, las necesidades suelen ser explícitas,


mientras que en otras situaciones las necesidades están implícitas
y hay que averiguarlas y documentarlas.
Definición de Calidad (II)

Calidad de un producto o servicio es la capacidad de


dicho producto o servicio para satisfacer las exigencias
para las que fue creado, estando su valor medido por
el grado de satisfacción del consumidor que lo ha
adquirido o lo utiliza

ISO 8402 (1994)


Definición de calidad (III)

Calidad es:

El grado en que un sistema, un componente o un proceso


satisface sus requisitos especificados.

El grado en que un sistema, un componente o un proceso


satisface las necesidades o expectativas de un cliente o usuario.

IEEE Std 610.12-1990


Definición de calidad (y IV)

•Calidad es valor para alguien


•Traducido al entorno empresarial, algo con calidad es
algo que satisface al cliente, resolviendo sus necesidades
explícitas e implícitas.
•Calidad es el cumplimiento de los requisitos.
•¿Es suficiente el cumplimiento de los requisitos para que
un producto sea de calidad?

Hay distintos enfoques en las


definiciones de Calidad.
¿Hay contradicciones o todas las
definiciones son compatibles?
Definición de cliente (I)

•Destinatario de un producto proporcionado por el suministrador.


ISO 8402 (1994)

•Cliente: interno o externo.

•Cinco aspectos en el cliente:


•El que decide.
•El que compra.
•El que influye.
•El usuario.
•El que elige.
•¿Qué es entonces satisfacción del cliente?
Definición de cliente (y II)

Para que el software pueda satisfacer al cliente debe ser usable y


proporcionar una solución a una necesidad (explícita o implícita)
del cliente, a un coste razonable.

Calidad es capacidad para ser usado

Calidad es valor para el cliente

Calidad es el grado en que el cliente o usuario percibe que el


software satisface el conjunto de sus expectativas
(IEEE Std 610.12-1990)
Definición de software

¿Qué es Software?

Programas de ordenador, procedimientos y posible


documentación y datos asociados, pertenecientes a la operación
de un sistema informático.
IEEE Std 610.12-1990
Definición de software de calidad

•Calidad es cumplir con los requisitos.


•Calidad es cumplir con los requisitos de una persona
determinada.

•Ej: Un editor de textos que sea ¿cero defectos => sw de calidad?


incapaz de manejar ficheros de
¿muchas posibilidades => sw de
más de 200 o 300 páginas será un
calidad?
software de calidad para el que
sólo escribe documentos de pocas ¿código elegante => sw de calidad?
páginas.
¿rapidez => sw de calidad?
•Sin embargo el mismo editor de
¿precio => sw de calidad?
textos será un software de mala
calidad para el que escriba libros o ¿facilidad de uso => sw de calidad?
documentos extensos.
Definición de calidad de software

Calidad del software

Conjunto de características que confieren al software la aptitud


para satisfacer las necesidades establecidas y las implícitas.

Diferencia entre software de calidad y calidad del software:

La primera es la percepción que tiene un cliente. La segunda es


algo objetivo y cuantificado.
¿Qué es un error de software? (I)

• Debemos diferenciar entre:


– Error:
• Inconsistencia gramatical en alguna o algunas líneas de código.
• Incoherencia con respecto a algún requisito.
– Fault: defecto
• Es un error software que no es mitigado por otras líneas.
– Failure: fallo, avería
• Es un defecto que ocurre.
¿Qué es un error de software? (y II)

• Software para una cadena farmacéutica:


– No se debe vender a clientes que deban más de
€200: el programador puso “500”.
• Es un defecto, pero no es un fallo, pues pues las
farmacias no dan crédito.
• Pero, ¿y si cambia el criterio?
Causas de Errores de Software (I)

1. Mala definición de requisitos


2. Mala comunicación con el cliente
3. Desviaciones deliberadas
• Mala reutilización
• Presupuesto/ tiempo
4. Errores lógicos de diseño
• Algoritmos erróneos
• Secuenciamiento erróneo
• Condiciones frontera erróneas
• Omisión de estados
• Omisión de tratamiento de excepciones
Causas de Errores de Software (y II)

5. Errores de codificación
6. Incumplimiento de estándares de codificación y
documentación
7. Pruebas incompletas
8. Errores de procedimiento
9. Errores de documentación
Sistema de Gestión de la Calidad (I)

Sistema de gestión de la calidad

Conjunto de elementos mutuamente relacionados que


interactúan para establecer la política y los objetivos de calidad
de una organización, y para dirigir y controlar dicha organización
para lograr dichos objetivos.

ISO 9000:2000
Sistema de Gestión de Calidad (y II)

•Actividades coordinadas para dirigir y controlar una


organización en lo relativo a la calidad.
•Generalmente incluye el establecimiento de:
• política de la calidad
• objetivos de calidad
• planificación de la calidad
• control de la calidad
• mejora de la calidad
• aseguramiento de la calidad
ISO 9000:000
Política de Calidad

• Intenciones globales y orientación de una organización


relativas a la calidad tal como se expresan formalmente por
la Alta Dirección.
• Proporciona el marco de referencia para el establecimiento
de los objetivos de la calidad.
ISO 9000:2000
• Ejemplos:
• Cero defectos
• Satisfacción del cliente.
• Prevención de defectos.
• Rapidez de entrega.
• Mínimo coste.
• Mantenibilidad.
Planificación de Calidad

•Parte de la gestión de la calidad enfocada al establecimiento de


los objetivos de la calidad y a la especificación de los procesos
operativos necesarios y de los recursos relacionados para cumplir
los objetivos de la calidad.

ISO 9000:2000
Mejora de Calidad

Parte de la gestión de la calidad orientada a aumentar la


capacidad de cumplir con los requisitos de la calidad.

ISO 9000:2000
Aseguramiento de Calidad (I)

Parte de la gestión de la calidad orientada a proporcionar


confianza en que se cumplirán los requisitos de la calidad.

ISO 9000:2000

El aseguramiento de la calidad del software es el sistema de


métodos y procedimientos empleados para asegurar que el
producto software satisface sus requisitos. Este sistema
implica la planificación, medida y seguimiento de las actividades
de desarrollo llevadas a cabo.
Aseguramiento de Calidad (y II)

•Aseguramiento del producto software


•El aseguramiento del producto es el conjunto de
actividades a través de las cuales se obtiene la adecuación
al uso, independientemente de dónde o cuando se realicen.
•Implica asegurar que el producto es el adecuado y es
desarrollado al coste y en el plazo previsto.

•Aseguramiento del software


•Conjunto de actividades planificadas y sistemáticas que
aseguran que los productos y procesos software son
conformes a los requisitos, estándares y procedimientos.
•Bajo el término producto se incluye el software, los datos
asociados, la documentación y todo el papeleo de soporte y
reporte
Últimos conceptos

•Conformidad:
•Cumplimiento de un requisito.
•No conformidad
•Incumplimiento de un requisito.
•Defecto:
•Incumplimiento de un requisito asociado a un uso previsto
o especificado.
ISO 9000:2000
CASOS

Espacio: misiones fallidas

El 4 de junio de 1996 la Agencia


Espacial Europea lanzó el cohete
Ariane 5. Un error de programación
en el módulo de gestión provocó la
autodestrucción del cohete 37
segundos después del despegue.
CASOS

Otro caso parecido, aunque de mayor


presupuesto, fue el de la sonda de la
NASA Mars Climate Orbiter, que fue
lanzada a Marte el 11 de diciembre
de 1998 y 286 días después sobrevoló
el planeta rojo a 57 kilómetros de su
superficie en vez de los 150 previstos,
lo que provocó que se destruyera en
atmósfera marciana. El culpable del
error en la trayectoria de la sonda fue
el 'software' informático basado en la
Tierra. El fallo destruyó un proyecto
de 327 millones de dólares.
CASOS

Dinero: Knight Capital


En agosto de 2012, un error de programa
casi provocó la quiebra de la empresa de
inversión Knight Capital. La compañía
perdió 500 millones de dólares en media
hora debido a que sus computadoras
comenzaron a comprar y vender millones
de acciones sin ningún tipo de control
humano. Como resultado, el precio de las
acciones de Knight Capital cayó un 75% en
dos días.
CASOS

Medicina: radioterapia
Un error de programación de la unidad de
control de la máquina de radioterapia
Therac-25 causó entre 1985 y 1987 al
menos seis accidentes en los que los
pacientes recibieron sobredosis masivas de
radiación. Al menos tres de estos pacientes
fallecieron como consecuencia directa del
exceso de radiación. Los expertos creen
que el fallo fue causado por un error en el
código que obligó al programa a realizar la
misma acción varias veces.
CASOS

Internet: Amazon
La desactivación de los servidores del gigante de Internet Amazon el
verano de 2012 privó a muchas personas de sus datos almacenados en la
nube. El accidente, causado inicialmente por una fuerte tormenta, se
agravó repentinamente debido a varios errores del 'software' que
provocaron un fallo de programación en cadena.
CASOS

Infraestructura: apagón en el noreste de EE.UU.


En agosto del 2003 varios estados del noreste de EE.UU. y la provincia
canadiense de Ontario se quedaron sin luz debido a un corte
de energía resultado de un accidente local. El accidente pasó
desapercibido a causa de un fallo del software de vigilancia del
funcionamiento de General Electric Energy y provocó una cadena de
errores.
CASOS

Transporte: Aerolínea American Airlines


En 2013, un error de programación provocó el caos en la compañía
de aviación American Airlines. La unión de dos sistemas como resultado
de la fusión de varias compañías aéreas originó un fallo en el sistema de
reserva de pasajes. Concretamente, el problema surgió con toda
probabilidad cuando se intentó unificar plataformas escritas en
diferentes lenguajes de programación.
CASOS

Justicia: liberación anticipada de delincuentes


En octubre de 2005 se informó de que 23 presos del Departamento de
Correccionales de Michigan (EE.UU.) habían sido puestos en libertad antes de
que finalizara su condena debido a un fallo de programación informática.
Como resultado, los delincuentes salieron de prisión entre 39 y 161 días
antes de lo previsto. El representante de la asamblea estatal, Rick Jones,
expresó su preocupación por el caso, pero señaló que le "tranquilizaba" que
los presos liberados no fueran asesinos.
Gracias

También podría gustarte