![]()
(Una aproximación a la medición de la calidad)
Se diferencien claramente los diferentes aspectos que están vinculados con la calidad del software. | |
Se entreguen las herramientas teóricas y practicas para realizar una correcta evaluación (medición) y adecuación de un proyecto. |
Clase magistral, para los temas correspondientes a fundamentación teórica. | |
Ejercicios desarrollados en clase, para comprensión y aplicación de los temas. | |
Lecturas de elementos teóricos que permitan la crítica y generen la duda acerca de las formas de evaluación. |
Estrategias evaluativas
A través de tareas de aplicación y medición de algoritmos. | |
Elaboración de casos de medición para un modelo desarrollado. | |
Aplicación de los aspectos de calidad (ISO), para la dar fiabilidad en el producto terminado. | |
Consultas de elementos adicionales y algoritmos de alto desempeño para cubrir aspectos necesarios en la calidad del software. |
Un software de calidad debe ser eficaz, es decir, que debe realizar las funciones establecidas, debe ser amigable. Un usuario debe utilizar el software porque produce resultados confiables, realiza todas las operaciones que se requieren, ejecuta las operaciones en un tiempo aceptado y es fácilmente usado por el grupo de usuarios a quien este dirigido. | |
Un software de calidad debe ser eficiente, es decir el costo de su desarrollo tomando todos los recursos y el costo de su operación debe ser tal que las organizaciones involucradas en su desarrollo y uso obtengan el máximo beneficio o por lo menos un beneficio aceptable en un período de tiempo establecido. |
Aspectos básicos de calidad de software. |
Completitud | |
Consistencia y precisión | |
Solidez | |
Simplicidad | |
Calidad en los procesos de desarrollo | |
Seguridad y Verificabilidad, estas dos últimas que se determinan con el sistema en uso. |
Exactitud de los procesos | |
Claridad y exactitud de la documentación | |
Completitud | |
Eficiencia y verificabilidad del software | |
Claridad y amigabilidad de la interfaz |
Exactitud y claridad en la documentación | |
Modularidad acoplamiento | |
Facilidad de lectura | |
Simplicidad |
Calidad de software. Se define la calidad de software como la ausencia de errores de funcionamiento, la adecuación a las necesidades del usuario, y el alcance de un desempeño apropiado (tiempo, volumen, espacio), además del cumplimiento de los estándares. Los objetivos que la calidad persigue son : La aceptación (utilización real por parte del usuario) y la Mantenibilidad (posibilidad y facilidad de corrección, ajuste y modificación durante largo tiempo). Para alcanzar estos objetivos, es necesaria una actitud y compromiso de todo el personal que se encuentre en el desarrollo del proyecto, y en todas y cada una de las etapas (en general, planeación, análisis, diseño, programación, pruebas, mantenimiento) correspondientes al ciclo de vida que se hubiese seleccionado para el proyecto. En forma adicional durante el proceso de aplicación de las metodologías se requiere tener en cuenta : |
Realización de Revisiones Técnicas Formales durante cada etapa.
Realización de pruebas y revisiones por personas "externas" al proyecto.
Elaboración de la adecuada documentación del software, y de los cambios.
Verificación del cumplimiento de los estándares de desarrollo
Medición permanente de la productividad del proceso y de la calidad de los resultados.
Desarrollo y ajustes de modelos estadísticos de calidad y productividad.
Control de la desviación de los promedios de calidad y productividad.
Los requisitos del software son la base de las medidas de la calidad.
Los estándares especificados definen un conjunto de criterios de desarrollo que guían la forma en que se aplica la ingeniería del software, Si no se distinguen esos criterios no habrá calidad del software.
Existe un conjunto de requisitos implícitos que a menudo no se mencionan, si no se alcanzan estos requerimientos podría la calidad quedar en entredicho. Los requisitos son llamados por los usuarios finales llaman elementos obvios, los cuales el diseñador no debe dejar pasar sin explicación.
Factores que pueden ser medidos directamente (errores, líneas, tiempo, )
Factores que sólo pueden ser medidos indirectamente (facilidad de uso, mantenimiento, )
Corrección | |
Fiabilidad | |
Eficiencia | |
Integridad | |
Facilidad de uso |
Facilidad de mantenimiento | |
Flexibilidad | |
Facilidad de prueba |
Portabilidad | |
Reusabilidad - Reutilizabilidad | |
Interoperabilidad |
McCall propone para las métricas asociadas al software un nivel de evaluación entro cero (0) y diez (10) como medidas. Además, aclara que las métricas y la evaluación son procesos subjetivos. Los elementos que se pueden tener en cuenta para la evaluación son :
Autodocumentación Que el archivo ejecutable entregue documentación significativa. | |
Completitud Se han implementado las funciones requeridas. | |
Concisión Compacto en líneas de código. | |
Consistencia - Uso de métodos de diseño, técnicas de documentación a través del desarrollo. | |
Eficiencia en la ejecución Medida del tiempo de ejecución. | |
Estandarización de los datos Manejar tipos abstractos de datos (TAD) a través del programa. | |
Exactitud Preciso en cálculos y control. | |
Facilidad de auditoria Comprobar la conformidad con los estándares. | |
Facilidad de expansión- Facilidad de ampliar diseños arquitectónicos, de datos, o procedimiento. | |
Facilidad de operación - | |
Facilidad de traza Realizar ingeniería en reversa. Que tan fácil es devolverme a los requerimientos. | |
Formación Debe poseer un buen sistema de ayudas para que los nuevos usuarios apliquen el sistema. | |
Generalidad Amplitud de aplicación potencial de los componentes del programa. Es decir, los módulos creados pueden ser útiles en otras aplicaciones del mismo tipo, o aplicaciones que manejen tipos de datos semejantes. | |
Independencia del hardware Que los diseños sean independientes de la máquina o máquinas que se tienen destinadas para el software. A calidad. pero no a implantación | |
Independencia del sistema software Hasta donde el programa es independiente de la plataforma de desarrollo. | |
Instrumentación En que grado el programa muestra funcionamiento e identifica errores, | |
Modularidad División del programa en componentes funcionales. Acoplamiento, cohesión. | |
Normalización de las comunicaciones Que tanto se usan estándares, interfaces, protocolos, entre otros elementos que pueden ser de importancia. | |
Seguridad | |
Simplicidad El sistema de información debe ser fácil de entender. | |
Tolerancia de errores- Que tanto se pierde al ocurrir un daño grave. | |
Metodologías de desarrollo. Una metodología de desarrollo de software permite producir organizada y económicamente software de alta calidad, siguiendo una serie de pasos donde se utilizan un conjunto de técnicas, notación y normas de documentación preestablecidas. |
Satisfaga una especificación funcional dada. | |
Este de acuerdo con las limitaciones del mundo real. | |
Encuentre los requerimientos implícitos o explícitos sobre la ejecución y uso de recursos. | |
Satisfaga las restricciones sobre el proceso de desarrollo mismo, tales como tiempo, costo de las herramientas disponibles para hacer el diseño, entre otras. |
Toda la información está basada en los datos y estos conforman la parte más estable de un sistema y por ende le dan estabilidad a la aplicación. Las estructuras se especifican de forma que sean flexibles al cambio, esto implica que las modificaciones a los requerimientos no afectan la estabilidad del sistema ya que no provocan alteraciones traumáticas a menos que se trate de cambios significativos. | |
Los resultados del análisis,(modelo de análisis RIP) diseño e implementación son reutilizables. La representación del mundo real a través del Análisis Orientado a Objetos (AOO) lleva a una modularidad formada por paquetes de clases y objetos. Estos a su vez conforman subsistemas reutilizables en futuros proyectos. Es de anotar que la Modularidad aquí llega más allá de dividir un programa en funciones como se hace en las metodologías estructuradas. | |
Mejora el análisis y la interacción expertos-dominio "Casos de Uso" del problema. A través del enfoque orientado a objetos se construye un modelo desde la visión del experto que representa el problema en forma más natural, haciendo prevalecer el pensamiento de los usuarios directos del futuro sistema. | |
La manera como se agrupan los elementos del mundo con sus operaciones como un todo, incrementa la consistencia entre el modelo y el mundo real. | |
Representa explícitamente los elementos comunes. AOO utiliza la herencia para identificar y capitalizar los atributos y servicios comunes. | |
Promociona la utilizabilidad usabilidad. |
De acuerdo con la experiencia de algunos, se ha notado que se produce menos código y por ende es más fácil de mantener favoreciendo la relación costo beneficio. | |
Muchas de las personas que no trabajan con computador encuentran el enfoque orientado a objetos muy natural. |
Ejercicio practico 1. Indicar que características básicas de las métricas apoyan a los aspectos de calidad de software. (Justificar) Trabajo a ser desarrollado en grupos preferiblemente en clase para que se desarrolle discusión abierta, cada grupo tomará uno o varios aspectos dependiendo de la cantidad de grupos.
Ejercicio practico 2. Con base en las metodologías descritas, indicar como la metodología en sus procesos y pasos apoya los factores de calidad, justifique. Trabajo a ser desarrollado en grupos. Al igual que el anterior los aspectos de calidad deben ser entregados a los grupos de trabajo.
En los procesos de calidad de software uno de los elementos que más puede inquietar a los diseñadores es el adecuado manejo de los algoritmos y su eficiencia, para que el resultado sea óptimo al momento de ser implementado, para eliminar esta preocupación por parte del diseñador aparece en la disciplina de la ingeniería del software un tema que es el análisis de algoritmos, en este tema aparecen elementos como la complejidad computacional, verificación de programas, entre otros.
Complejidad computacional - La complejidad computacional estudia los costos de cómputo necesarios para resolver un problema; entendiéndose por costos los recursos de espacio de almacenamiento y de, principalmente, tiempo de cómputo. La complejidad temporal tiene que ver con el tiempo que tarda un programa para ejecutarse, la complejidad espacial estudia la cantidad de almacenamiento que es necesario para una operación. Al analizar la complejidad de un algoritmo, el tiempo está expresado en términos de pasos de computación elementales (asignaciones, comparaciones, operaciones matemáticas básicas, etc), por ejemplo, una operación de asignación ocupa una unidad de tiempo para ejecutarse, un ciclo ocupa el número de iteraciones en que está definido, etc.
Orden de un algoritmo La función que define el tiempo de ejecución de un programa proporciona información interesante para clasificar los diferentes algoritmos que existen para resolver problemas. Con esta función es posible comparar el desempeño de diferentes algoritmos desarrollados para un problema en particular.
Matemáticas de los algoritmos. (Para el caso de medición en el peor de los casos y para la media)
|
|
|
|
x |
|
|
|
|
Trabajo practico ( Ejercicio : Medición de los tiempos de asignación, operación, comparación e incremento)
METRICAS
Métricas de calidad. El concepto de métrica es el termino que describe muchos y muy variados casos de medición. Siendo una métrica una medida estadística (no cuantitativa como en otras disciplinas ejemplo física) que se aplica a todos los aspectos de calidad de software, los cuales deben ser medidos desde diferentes puntos de vista como el análisis, construcción, funcional, documentación, métodos, proceso, usuario, entre otros.
0 |
No influencia |
Ninguna |
0% |
0 10% |
1 |
Incidental |
Insignificante |
1 - 20% |
11 20% |
2 |
Moderado |
Moderada |
21 - 40% |
21 30% |
3 |
Medio |
Media |
41 60% |
31 40% |
4 |
Significativo |
Significativa |
61 80% |
41 50% |
5 |
Esencial |
Fuerte |
81 100% |
> 50% |
Facilidad de operación.
Valoración |
Pregunta : ¿Requiere el sistema copias de seguridad y de recuperación fiables? |
0 |
No se especifican por parte del usuario consideraciones especificas de operación. |
1 2 |
Se requieren, proporcionan y prueban procesos de arranque, backup y recuperación. |
3 4 |
Además la aplicación minimiza la necesidad de actividades manuales, tales como instalación de cintas y papel. |
5 |
La aplicación se diseña para operación sin atención. |
Comunicación de los datos. Los datos o información de control que la aplicación utiliza se envía o recibe a través de los facilidades de comunicación.
Valoración |
Pregunta : ¿Se requiere de comunicación de datos? |
0 |
Aplicación es batch exclusivamente |
1 2 |
Impresión o entrada de datos remota |
3 5 |
Teleproceso (TP) interactivo |