Desarrollo Agil de Software
Desarrollo Agil de Software
Desarrollo Agil de Software
Glass (1998), afirma que la calidad es importante, pero si el usuario no está satisfecho,
nada más importa en realidad. De igual forma afirma que la calidad de un producto es una
función de cuánto cambia el mundo para mejorar. Esta visión de la calidad afirma que si
un software proporciona beneficio sustancial a sus usuarios finales, éstos están dispuestos
a tolerar problemas ocasionales en aspectos como la confiabilidad y el desempeño.
Control de calidad.
Garantía de la calidad.
Costo de la calidad.
El costo de la calidad incluye todos los costos que se generan o que demandan el
desarrollo de las actividades relacionadas con la calidad. Los estudios de costo de la
calidad se llevan a cabo para ofrecer una línea base e identificar oportunidades que
reduzcan el costo de calidad y proporcionan una base que sirva de comparación. La base
de normalización casi siempre es monetaria, ya que se tienen los datos necesarios para
evaluar dónde se encuentran las oportunidades para mejorar los procesos, se puede
evaluar el efecto de los cambios en términos monetarios. Los costos de calidad se dividen
en:
1) Costos asociados con prevención; estos costos incluyen la planificación de la calidad,
revisiones técnicas formales, equipo de pruebas y entrenamiento.
2) Evaluación y fallas; estos costos incluyen actividades que permiten comprender mejor
la condición del producto a través de cada proceso.
Se incurren los costos de fallas internas cuando se detecta un defecto en el producto antes
del envío, dichos costos incluyen reelaboración, reparación y análisis el modo de falla.
Los costos de fallas externas se asocian con defectos detectados después de que el
producto ha sido enviado al cliente algunos ejemplos de estos son la resolución de las
quejas, devolución y reemplazo del producto, soporte de ayuda en línea y trabajo de
garantía.
Garantía de la calidad del software.
" el trabajo técnico necesita revisarse por la misma razón que los lápices necesitan gomas,
errar es de humanos. La segunda razón por la que se necesitan las revisiones técnicas es
que aunque la gente sea buena al captar algunos de sus propios errores, las grandes clases
de errores escapan de su creador con más facilidad de lo que se le escapan a alguien más".
El objetivo principal de las revisiones técnicas formales es descubrir los errores durante
el proceso, de modo que no se conviertan en defectos después de liberar el software. El
beneficio de las revisiones técnicas formales es el descubrimiento temprano de los errores
de modo que ya no se propaguen a la etapa siguiente en el proceso de desarrollo de
software.
De acuerdo a los estudios realizados por Vega et al (2008), algunas normativas de calidad
en los sistemas de información y que ayudan a la realización, además de aplicar mejores
prácticas en las organizaciones son:
Describir el proceso.
Producir un manual operativo.
Desarrollar métodos para controlar los documentos.
Establecer métodos para la conservación de registros.
Para planeación.
Para requisitos del cliente.
Para actividades técnicas, por ejemplo análisis diseño y pruebas.
Para supervisión y gestión del proyecto.
En cada caso debe presentarse una medición. Se debe comparar el software con algún
conjunto de datos y obtener así algún indicio sobre la calidad. McCall, Richards &
Walters (1977), propusieron una clasificación de los factores que afectan directamente a
la calidad del software. Estos factores se muestran en la figura 2.30 En ella se concentran
tres aspectos importantes de un software:
Características operativas.
Capacidad para experimentar cambios.
Capacidad para adaptarse a nuevos entornos.
A continuación se describen los factores que propone McCall, Richards & Walters.
Corrección.
El grado en que el programa cumple con su especificación y satisfacer los objetivos que
propuso el cliente.
Confiabilidad.
Eficiencia.
Integridad.
El grado de control sobre el acceso al software o los datos por parte de las personas no
autorizadas.
Facilidad de uso.
Facilidad de mantenimiento.
Flexibilidad.
El esfuerzo que demanda probar un programa con el fin de asegurar que realiza su
función.
Portabilidad.
Facilidad de reutilización.
Interoperabilidad.
Corrección.
Confiabilidad.
El grado en que se puede esperar que un producto de software lleve a cabo sus funciones
esperadas con la precisión requerida.
Eficiencia.
Integridad.
Facilidad de uso.
Facilidad de mantenimiento.
Flexibilidad.
El esfuerzo requerido para modificar un producto de software una vez que se encuentra
ya liberado o en producción, esto es, una vez que el usuario esté haciendo uso de él.
Facilidad de prueba.
El esfuerzo requerido para probar un producto de software, de tal forma que se asegure
que realiza las funciones especificadas por el usuario.
Portabilidad.
El esfuerzo requerido para transferir un producto de software de una plataforma (entorno
de hardware y software) a otra.
Reusabilidad.
El grado en que un producto de software (o alguna de sus partes) pueda volver a ser
utilizado en otras aplicaciones, aún cuando la funcionalidad de la misma cambie.
Facilidad de interoperación.
El esfuerzo requerido para lograr que un producto de software trabaje con otro,
compartiendo recursos.
Antes de generar e introducir una serie de métricas del producto debemos contemplar que
se:
Las métricas del software sólo serán útiles si están caracterizadas de manera efectiva y se
validan para probar su valor. Según Lethbridge (2003), los siguientes principios son
representativos de muchos otros que podrían proponerse para caracterizar y validar las
métricas. Una métrica debe tener propiedades matemáticas deseables. Es decir, el valor
de la métrica debe estar en un rango significativo por ejemplo, de cero a uno, donde cero
realmente significa ausencia, uno indica el valor máximo y 0.5 representa el punto medio.
Además, una métrica pretende estar en una escala racional no debe contar con
componentes que sólo se miden en una escala ordinal. Cuando una métrica representa una
característica de software que aumenta cuando se presentan rasgos positivos o que
disminuya al encontrar rasgos indeseables, el valor de la métrica debe aumentar o
disminuir en el mismo sentido.
Cada métrica debe validarse empíricamente en una amplia variedad de contextos antes de
publicarse o aplicarse la toma de decisiones. Una métrica debe medir el factor de interés,
independientemente de otros factores. Debe crecer para aplicarse a sistemas grandes y
funcionar en diversos lenguajes de programación y dominios de sistemas. Aunque la
formulación, caracterización y validación son críticas, la recopilación y el análisis son las
actividades que dirigen el proceso de medición. Roche(1994) sugiere las siguientes
directrices para estas actividades:
1) Siempre que sea posible deben automatizarse la recopilación de datos y su análisis.
2) Deben aplicarse técnicas estadísticas válidas para establecer relaciones entre los
atributos internos del producto y las características externas de la calidad.
3) Para cada métrica deben establecerse directrices y recomendaciones para la
interpretación.
Aunque casi todas las métricas de software satisfacen esos atributos, algunas métricas de
uso común no cumplen con una o dos de ellas. Aunque se ha propuesto una amplia
variedad de taxonomía en métricas, el siguiente esquema atiende a las cuatro más
importantes en el desarrollo del software.
Métricas para el código fuente. Estas métricas miden el código fuente y se usan
para evaluar su complejidad, además de la facilidad con que se mantiene y prueba
entre otras características como:
o Métricas de complejidad. Miden la complejidad lógica del código fuente.
o Métricas de longitud. Proporcionan un indicio del tamaño del software.
Métricas para pruebas. Estas métricas ayudan a diseñar casos de prueba
efectivos y evaluar la eficacia de las pruebas en donde se incluyen:
o Métricas de cobertura de instrucciones y ramas. Lleva al diseño de casos
de prueba que proporcionan cobertura del programa.
o Métricas relacionadas con los defectos. Se concentran en encontrar
defectos y no en las propias pruebas.
o Efectividad de la prueba. Proporciona un indicio en tiempo real de la
efectividad y de las pruebas aplicadas.
o Métricas en el proceso. Métrica relacionadas con el proceso de las pruebas.