martes, 21 de abril de 2015

Factores Internos y Externos de la Calidad de Software

Cómo se ha visto anteriormente, la calidad de software es algo que depende de una serie de métricas cuyo propósito es evaluar si el software cumple con características particulares de cada métrica, esto con el objetivo de garantizar la calidad del mismo.

Algo que debe de tenerse en cuenta, es que una métrica como bien su nombre lo dice, es una medida de algo, sin embargo estas no se aplican al software directamente, sino que se aplican a través de los anteriormente mencionados "factores de calidad", estos pueden ser de tipo interno (la estructura de funcionamiento del software) o de tipo externo (lo que "ve" el usuario). Estos factores son los siguientes:

Exactitud:

Este es probablemente el factor más importante de calidad de un software, pues se refiere a la función que tiene el mismo y si la cumple o no, es decir que si por ejemplo la función de un software es comprimir archivos en un formato en particular, éste tendrá exactitud si cumple específicamente con eso que es su función o propósito, si este factor falla, fácilmente puede hacer que todos los demás factores se vuelvan completamente inútiles puesto que el software simple y sencillamente no cumpliría con su función o propósito.

Una formula o métrica para calcular la exactitud puede ser la siguiente:

Número de Requerimientos - Requerimientos Cumplidos

Con esta fórmula se evalúa cuántos de los requerimientos que se tienen para un software fueron cumplidos, si el resultado es cero, quiere decir que el nivel de exactitud es optimo, pues cumple con lo que se requiere de él y si el resultado es mayor de cero, en nivel de exactitud iría disminuyendo al no cumplir con todos sus requerimientos.

Robustez:

La robustez es el segundo factor más importante en la calidad de un software, esto es debido a que la robustez es la capacidad de un software de reaccionar a situaciones anormales.

Como podría esperarse, la exactitud se enfoca en que el software cumpla su función, sin embargo para que suceda esto el usuario debe de interactuar de manera correcta con éste, pero esto no siempre va a suceder así debido a los errores humanos, un ejemplo sencillo es una calculadora, una calculadora esperaría que el usuario introduzca operaciones matemáticas lógicas y que tengan sentido, normalmente esto provocaría que si el usuario intenta introducir una operación con errores matemáticos (por ejemplo una división entre cero) o de sintaxis, el software de la calculadora fallara y se estropeara debido a que se está enfrentando a una situación para la cual no fue diseñada. Sin embargo la robustez del software se encarga de esto al actuar como un "margen de error", haciendo que si el software se encuentra con situaciones anormales despliegue automáticamente un mensaje de error al usuario indicándole la situación en cuestión, registrando así esa situación anormal en el software y evitando que se estropee.

Una fórmula que podría utilizarse para medir la robustez de un software sería la siguiente:

Número de errores / Número de veces que reacciona bien

Esta formula nos dice que entre más veces el software reaccione de manera adecuada ante los errores que se presenten, el nivel de robustez es mayor, en este caso cuando el resultado sea lo más cercano posible a 1.

Eficiencia:

La eficiencia es una parte importante de la calidad de un software, y puede definirse como la cantidad de recursos utilizados por éste para cumplir con su función. Un programa puede cumplir con su función, pero esto no sería de mucha ayuda si para hacerlo necesita consumir una cantidad enorme de recursos de la computadora y además tarda en dar un resultado. Es debido a esto que la eficiencia de un software es importante, puesto que si el nivel es alto permite que cumpla su función de una manera rápida y sin consumir demasiados recursos. Normalmente esto se toma como un aspecto secundario dado que se le da una mayor prioridad a que sea eficaz, es decir que cumpla su función (exactitud) y es a causa de esto que constantemente uno podría por ejemplo encontrarse con programas cuyos requerimientos mínimos se cumplen o se sobrepasan, pero que a la hora de la ejecución, el desempeño es pobre y consume más recursos de los que aparentaba, provocando un desperdicio innecesario de recursos y de tiempo.

Una forma de medir la eficiencia de un software es la siguiente:

Resultados / Recursos

Con esta formula se da a entender que entre más resultados se puedan obtener con menos recursos, el nivel de eficiencia será mayor, es decir que el nivel de eficiencia aumenta cuando el resultado es mayor a 1 y disminuye cuando es menor a 1.

Funcionalidad:

La funcionalidad se refiere a la "simpleza" que tiene el software al momento que el usuario interactua con él, es decir a la capacidad del software de hacer que el usuario entienda como funciona y no se pierda. Normalmente para lograr esto, lo que se hace es "limitar" la extensión o cantidad de posibilidades que ofrece un software, esto es debido a que si las posibilidades son demasiadas el usuario corre riesgo de verse abrumado por tantas opciones y funciones, provocando que se pierda y no entienda bien cómo funciona el software, mientras que si las posibilidades son demasiado bajas se corre con el riesgo de que el software se vea muy limitado en sus capacidades y que no pueda cumplir con todas sus funciones de manera satisfactoria. Un ejemplo de esto puede ser facebook, el cual en sus constantes actualizaciones y cambios ha llegado a un punto donde ofrece tantas posibilidades a los usuarios que estos se ven abrumados por ellas y pierden la habilidad de manejar el sitio de manera fluida y sencilla.

Medir la funcionalidad es algo un tanto más complicado que los demás factores, debido a que en este se debe buscar un equilibrio y no irse a algún extremo, por lo que la fórmula podría ser la siguiente:

Número de funciones + Número de posibles errores

Con esta fórmula se da a entender que entre más funciones se tienen, mayor cantidad de errores o complicaciones pueden surgir, pero como debe mantenerse un equilibrio lo ideal es que el número de funciones sea únicamente el necesario para cumplir con los requerimientos.


Fácil de Usar:

Este es un factor que está estrechamente relacionado con el anterior (funcionalidad). Como bien su nombre lo dice, este factor se enfoca en que el software pueda ser tomando por cualquier usuario y éste pueda rápidamente entenderlo y utilizarlo, para lograr esto se deben de tomar en cuenta aspectos como la interfaz gráfica, tutoriales que expliquen el software, simplicidad del programa, etc. Sin embargo un detalle que se debe tener en cuenta es que no se debe de hacer que un software sea excesivamente fácil de utilizar debido a que esto provocaría que estuviera limitado en las posibilidades que ofrece, además de que si alguien con conocimientos avanzados utiliza un software así, rápidamente sentiría que es demasiado simple y limitado por lo que al igual que con la funcionalidad se debe de mantener un equilibrio en este apartado.

La forma de medir este factor puede ser la siguiente:

Nivel de conocimiento del usuario * Tiempo que tarda en entender el programa

Con esta fórmula se da a entender que entre menor sea el resultado, más fácil de usar es el programa, pero el detalle que debe de tenerse en cuenta es que entre mayor nivel de conocimiento tenga un usuario, menos tiempo tardará en entender el programa, por lo que deben también tomarse en cuenta a los usuarios con menor nivel de conocimiento.

Reutilización:

La reutilización puede definirse como la capacidad que tiene un software de utilizar sus elementos en la construcción de otro, esto es debido a que un software en sus partes más fundamentales, puede compartir estructuras con otros ya existentes y gracias a esto los ya existentes pueden ser utilizados en la construcción del nuevo, evitando así que se tenga que volver a desarrollar algo que ya se había hecho antes y permitiendo así acelerar el proceso de desarrollo del software.

Un ejemplo de la reutilización pueden ser las librerías de Java, dado que estas librerías son códigos hechos anteriormente que cumplen con alguna función en particular y que al utilizarlas en la construcción de un software se acelera el proceso al ya no tener que volver a programar una función que éste requiera.

La forma de medir la reutilización puede ser la siguiente:

Cantidad utilizada del software original / Tamaño original del software

Con esta fórmula se expresa que entre más se haya utilizado un software en la construcción de otro, su nivel de reutilización es mayor, en este caso cuando el resultado sea lo más cercano a 1.

Compatibilidad:

La compatibilidad de un software es su capacidad de poder interactuar correctamente con otros para cumplir alguna función determinada. Normalmente un mismo software va a ser utilizado en diferentes plataformas y va a tener que interactuar con diversos programas, la compatibilidad se encarga de garantizar que éste software pueda interactuar de manera correcta con todos ellos y que así pueda cumplir lo requerido, el ejemplo más sencillo de esto vendría siendo el sistema operativo que un programa de pide para poder instalarlo.

Una formula para medir la compatibilidad sería:

No. Sistemas capaces de comunicarse / No. de cambios requeridos para poder combinarse

Con esta fórmula se dice que entre menos cambios requiera un software para interactuar correctamente con otros, mayor es su nivel de compatibilidad.

Puntualidad:

Este factor no es estrictamente designado al software, sino a todo el proceso de su desarrollo, puesto que la puntualidad como bien su nombre lo indica es la capacidad de entregar el software en el tiempo requerido. Cuando un software se desarrolla, debe de cumplir con los requerimientos del cliente y uno de ellos suele ser una fecha de entrega del software, esta fecha indica el tiempo que se tiene para desarrollarlo y el nivel de puntualidad dependerá del cumplimiento de esta fecha de entrega.

Para medir la puntualidad se utiliza la siguiente fórmula:

Tiempo en el que se entregó - Tiempo indicado

Si el resultado es negativo, entonces el software fue entregado antes de la fecha límite, lo cual podría decirse que es bueno. Si el resultado es 0, el software fue entregado exactamente en el tiempo indicado, lo cual también es bueno, y si el resultado es positivo, el software fue entregado después de tiempo, lo cual es malo.

No hay comentarios.:

Publicar un comentario