Universidad Bolivariana de Venezuela
P.F.G. Informática para la Gestión Social U.C. Ingeniería del software
Septiembre, 2006
Cualidades del Software
Dra. Nancy Zambrano. Guía de
clases:IS-clase1-2-(introducción-cualidades SW). Centro ISYS Escuela de Computation Facultad de
Ciencias UCV. 2005
GHEZZI, C., JAZAYERI, M., MANDRIOLI, D. "Fundamentals of Software Engineering".
Prentice-Hall International Editions. 2da ed. Nov. 2002
Bibliografía
3
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
Mediante un proceso ....
Soportado por un método riguroso, sistemático
Basado en principios reconocidos
Con actividades que se estructuren de acuerdo a un modelo
Facilitado por el uso de herramientas.
¿Cómo obtener software de calidad?
5
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
Software de calidad
7
Software de calidad
Software de calidad
El software es construido para cumplir ciertas funcionalidades y satisfacer ciertas cualidades
El proceso de construcción de software debe también cumplir ciertas cualidades.
Cualidades de software son a menudo referidas como requerimientos no funcionales (en
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
9
El software como producto
El software como producto
Es diferente a los tipos de productos tradicionales
- intangible
• Dificultades para describir y evaluar
- Maleable
• Sin forma
- Intensivamente humano
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
11
Clasificación de cualidades
Clasificación de cualidades
Internas vs. externas
- Externas visibles al usuario
- Internas concernientes a los desarrolladores
Producto vs. procesos
- Nuestro objetivo es desarrollar productos de software
- El proceso se refiere a como lo hacemos
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
13
Software de calidad
Software de calidad
Características de Calidad de
software
(Normas ISO 9126):
15
Características (ISO 9126)
Subcaracterísticas
Funcionalidad Adecuacidad (Suitability),
exactitud/precisión ( Accurateness),
Interoperable, (Conformidad Compliance ) Seguridad
Confiabilidad Madurez, Tolerancia a Falla, Recuperable
Usabilidad comprensible (Understandability ), de fácil aprendizaje (Learnability ), Operable
Eficiencia Rendimiento en tiempo, rendimiento de Recurso.
Mantenibilidad Analizable, Modificable, Estable, Testability (Prueba)
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
17
Correcto
Confiable
Robusto
Se comporta acorde a su especificación
Se comporta de acuerdo a lo esperado por el usuario
Se comporta razonablemente aún en cirscunstancias no contempladas
(tolerante a fallas).
Confiabilidad, correctitud y robustez
Confiabilidad, correctitud y robustez
Confiabilidad, correctitud y robustez
• Construcciones correctas si ellas satisfacen las
especificaciones
• En un movimiento sísmico unas colapsan (no son robustas)
19
Correctitud
Correctitud
Software es correcto si satisface las especificaciones de requerimientos funcionales
- (asumiendo que las especificaciones ...)
Acerca de la correctitud
Acerca de la correctitud
Es una cualidad absoluta (si/no)
- No hay “grado de correctitud”
¿Que pasa si las especificaciones son erróneas?
21
Confiabilidad
Confiabilidad
- Informalmente, el usuario confía en el producto
- Si las especificaciones son correctas, todo software correcto es confiable. Pero no a la inversa (en la practica, pueden haber
especificaciones incorrectas....)
- ISO 9127: Confiabilidad: se refiere a la
capacidad de un SW de mantenerse operativo bajo las condiciones establecidas por un
Confiabilidad, correctitud y robustez
Confiabilidad, correctitud y robustez
¿correcto => confiable? •Si, en el caso que la especificación capture los requerimientos del sistema
¿confiable => correcto? • No necesariamente
Correcto
confiable
¿correcto => robusto? ¿confiable => robusto?
23
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
Cualidades del software: Cualidades del software:
Reusabilidad
Reusabilidad
Productos (o componentes) son usados
(probablemente, con pequeños cambios) para construir otros productos
Reuso de partes estandar miden la madurez de una ingeniería
25
Reusabilidad
Reusabilidad
Reusable
Componentes reusables:
– Librerías científicas
– Librerías para el desarrollo de interfaces (MFC de Windows)
– Patrones
– Especificaciones
Reusabilidad
Reusabilidad
factor clave para determinar la
madurez de
cualquier industria
“....la IS debe aún evolucionar para alcanzar su
madurez como una disciplina de
“....en el futuro las aplicaciones serán construídas
ensamblando componentes..”
27
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
Cualidades del software:
Cualidades del software:
Portabilidad
Portabilidad
El software puede correr en diferentes
plataformas de hardware o ambientes de software
se refiere a la habilidad del sw de ser transferido de un ambiente a otro.
Es una cualidad relevante cuando se introducen nuevas plataformas
29
Como obtener software de calidad Software de calidad
El software como producto
Clasificación de las Cualidades
¿Que caracteristicas necesarias para lograr la calidad?
Confiabilidad, Correctitud y Robustez Reusabilidad
Portabilidad
Interoperabilidad Mantenubilidad
Contenido
Cualidades del software:
Cualidades del software:
Interoperabilidad
Interoperabilidad
Interoperable
– Puede coexistir y cooperar con otros sistemas de software
31
– Se mide mediante técnicas clásicas:
• complejidad de algoritmos
• evaluación de la eficiencia (monitoreo, simulación,..).
Cualidades del software: Cualidades del software:
eficiencia
eficiencia
Software Eficiente:
Usa los recursos computacionales
Cualidades del software: Cualidades del software:
usabilidad
usabilidad
Usabilidad es una cualidad del software que
tiene múltiples componentes y tradicionalmente es asociado con:
• Aprendizaje
• Eficiencia
• Memorización
• Baja rata de errores
• Satisfacción
•ISO 9127
Usabilidad: se
refiere al esfuerzo requerido por un conjunto de
usuarios para el uso del sw
¿ Qué es Usabilidad ?
33
Usabilidad
Usabilidad
• Usable
– La usabilidad de un producto de software está determinada por la satisfacción del usuario al utilizar el producto
– Fundamentalmente relacionada con las características de la interfaz de usuario
Cualidades del software:
Cualidades del software:
Mantenibilidad (Maintainability)
Mantenibilidad (Maintainability)
Mantenibilidad: facilidad de mantenimiento
Mantenimiento: cambios despues de la liberación del producto
35
Tipos de Mantenimiento
Tipos de Mantenimiento
Correctivo
(remoción de errores)
Adaptativo
(cambios para adecuarlos a
modificaciones de su ambiente)
Perfectivo
(cambios para mejorar la calidad -satisfacer nuevos requerimientos, aumentar la
Cualidades del software: Cualidades del software:
Comprensibilidad
Comprensibilidad
(Understandability)(Understandability) Facilidad de comprender el software
Es una cualidad muy importante, para realizar modificaciones de programa.
37
Importancia de las cualidades
Importancia de las cualidades
Al equipo de desarrollo le
interesa que el software sea comprensible, portable,
mantenible, verificable ...
Taxonomía -Según C. Ghezzi & al:
Calidad Externa: Desde el punto de vista del usuario
Correcto, Confiable
Robusto, Fácil de usar Eficiente
Calidad Interna: Desde el punto de vista del equipo de desarrollo del sistema
Verificable, Mantenible, Portable
39
Ejemplo:
Aplicación 1: Sw de administración de inventario.
Administrar/controlar el registro de efectivo Inventario/existencia de articulos
Orden de pago a los proveedores
Elaborar la data de los clientes.
Aplicación 2: Sw para un satélite.
Adquisición de data
Transmisión de data
Restricciones en tiempo real
Aplicación1 Características Aplicación2 Funcionalidad
Confiabilidad Usabilidad
Eficiencia Mantenibilidad
Medición de cualidades
Medición de cualidades
Métricas:
No existen standares aceptados para medir algunas
cualidades
43
Interrelación de cualidades
Interrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿qué otras cualidades ayudan a ello?
Confiable
Correcto
Robusto
X
Interrelación de cualidades
Interrelación de cualidades
Si se quiere que un software
tenga la cualidad X ¿cuáles otras cualidades ayudan a ello?
45
Interrelación de cualidades
Interrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿cuáles otras
cualidades ayudan a ello?
Interrelación de cualidades
Interrelación de cualidades
Si se quiere que un software tenga la cualidad X ¿cuáles otras
cualidades ayudan a ello?
47
Cualidades claves
Cualidades claves
(según Sommerville Ian) El software debe ser:
Mantenible
los cambios puedan ser hechos con bajos costos
Confiable
se ejecute de acuerdo a las expectativas
Eficiente
no haga uso excesivo de recursos y no sea lento
Usable
interfaz ajustada a las capacidades y background