1. Conceptos básicos de Calidad del Software LS3148 - Calidad de Software 3IM1

Download Report

Transcript 1. Conceptos básicos de Calidad del Software LS3148 - Calidad de Software 3IM1

1. Conceptos básicos de
Calidad del Software
LS3148 - Calidad de Software
3IM1
Universidad Antonio de Nebrija
Justo Hidalgo –con algunos apuntes de Manuel Fernando Juan-
Contenidos
1.
2.
3.
4.
Introducción
SW vs. otros productos industriales
Características básicas
Definiciones de Calidad
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
2
Conceptos Básicos en Calidad de Software
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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
3
¿Por qué Calidad de Software?
•
LIMITED WARRANTY
– Nebrisscape Inc. provides no warranty, either expressed or implied, with respect
to NEBRIGATOR’s performance, reliability or fitnees for any specified purpose.
Nebrisscape Inc. Does not warrant that the software or its documentation will
fulfil your requirements. Although Nebrisscape Inc. has performed thorough tests
of the software and reviewed the documentation, Nebrisscape Inc. does not
provide any warranty that the software and its documentation are free of errors.
Nebrisscape Inc. will in no case be liable for any damages, incidental, direct,
indirect or consequential, incurred as a result of impaired data, recovery costs,
profit loss and third party claims. The software is licensed “as is”. The purchaser
assumes the complete risk stemming from application of the NEBRIGATOR
program, its quality and performance.
– If physical defects are discovered in the documentation or the CD on which
NEBRIGATOR is distributed, Nebrisscape Inc. will replace, at no charge, the
documentation or the CD within 180 days of purchase, provided proof of
purchase is presented.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
4
SW vs. otros productos industriales
1. Complejidad del producto
2. Visibilidad del producto
3. Procesos de desarrollo y producción
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
5
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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
6
SW vs. otros productos industriales:
visibilidad del producto
• Los productos SW son invisibles
– ¿Cómo sabemos si a nuestro SW “le falta una
puerta”?
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
7
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
3. Manufactura
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
8
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-.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
9
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
10
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
11
Qué nos obliga a asegurar la Calidad en el SW (II):
entorno del desarrollador profesional
1.
2.
3.
4.
5.
6.
7.
Condiciones contractuales
Relación cliente-proveedor
Trabajo en equipo
Cooperación y coordinación
Interfaces con otros sistemas software
Cambios de componentes del equipo
Mantenimiento de producto
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
12
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
13
Qué nos obliga a asegurar la Calidad en el SW (IV):
relación cliente-proveedor
•
•
Cooperación continua.
Propenso a cambios
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
14
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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
15
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
16
Qué nos obliga a asegurar la Calidad en el SW (VII):
cooperación y coordinación
Equipo de
Desarrollo SW
Otro equipo
subcontratado
Equipo de
Desarrollo HW
Equipo de
Desarrollo SW
Otro equipo
subcontratado
Nuestro
Equipo
Equipo de
Desarrollo del
Cliente
Otro equipo
subcontratado
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
Otro equipo
subcontratado
17
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
Control de
Asistencia
Sistema de
Gestión de
Notas
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
Sistema de
Envío de
Información
18
Qué nos obliga a asegurar la Calidad en el SW (IX):
cambio de componentes del equipo
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
19
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
20
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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
21
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)
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
22
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
23
Definición de calidad (y IV)
•Calidad es valor para alguien (Weinberg).
•Traducido al entorno empresarial, algo con calidad es
algo que satisface al cliente, resolviendo sus necesidades
explícitas e implícitas.
•Crosby : 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?
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
24
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.
•Y a veces interesa tener en cuenta al cliente del cliente (p.e.
confederaciones).
•¿Qué es entonces satisfacción del cliente?
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
25
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 (Juran).
Calidad es valor para el cliente. (Weinberg).
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)
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
26
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
27
Definición de software de calidad
•Calidad es cumplir con los requisitos (Crosby, Quality is free,
1979).
•Calidad es cumplir con los requisitos de una persona
determinada (Weinberg, Software quality management, vol1,
1991).
•Ej: Un editor de textos que sea
incapaz de manejar ficheros de
más de 200 o 300 páginas será un
software de calidad para el que
sólo escribe documentos de pocas
páginas.
•Sin embargo el mismo editor de
textos será un software de mala
calidad para el que escriba libros o
documentos extensos.
¿cero defectos => sw de calidad?
¿muchas posibilidades => sw de
calidad?
¿código elegante => sw de calidad?
¿rapidez => sw de calidad?
¿precio => sw de calidad?
¿facilidad de uso => sw de calidad?
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
28
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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
29
¿Qué es un error 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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
30
¿Qué es un error 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?
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
31
Causas de Errores Software (I)
1.
2.
3.
Mala definición de requisitos
Mala comunicación con el cliente
Desviaciones deliberadas
•
•
4.
Mala reutilización
Presupuesto/ tiempo
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
32
Causas de Errores 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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
33
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
34
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
35
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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
36
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
37
Control de Calidad
Juran:
El control de calidad el el proceso a través del cual se
miden las características de la calidad en un momento
dado, se comparan con estándares, y se toman acciones
sobre las desviaciones.
Shewhart:
Control significa acción para conseguir un determinado
propósito.
Control de calidad son las acciones necesarias para
mantener una determinada característica o características
de la calidad dentro de unos límites preestablecidos.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
38
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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
39
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.
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
40
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
NASA SW product assurance guidebook
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
41
Ú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
Calidad de Software - 1. Conceptos
Básicos - Justo Hidalgo
42