Hipótesis
Si alguna característica de la
calidad del software es desequilibrada o no se implementa de manera correcta
con las demás, el software carecerá de ésta.
Argumentación
Exactitud
o
Es la base de un software
o
Es un factor externo que se logra a
través de los requerimientos funcionales del software y tiene que lograr sus
objetivos.
o
En la exactitud, todo va concatenado
en función del software, tomando en cuenta que todos los elementos involucrados
deben estar verificados, garantizados y asegurados por el desarrollador.
Métrica:
Exactitud = Número de requerimientos – Número de requerimientos
cumplidos
En donde, si la exactitud es = 0, el
software es de calidad y conforme la exactitud > 0, va decreciendo ésta.
La exactitud, como ya lo hemos
mencionado, es la parte fundamental del software que, sin ella, el software
simplemente sería nefasto. No importa si la interfaz es hermosa, si su
capacidad es mayor o tenga algo extra, si no cumple con los requerimientos
exactos.
Robustez
La
robustez se define como la capacidad de responder ante algún evento que pueda
comprometer la funcionalidad de este en otras palabras es la capacidad de
responder ante sucesos inesperados.
Existen
diversos tipos de software a lo largo del mundo, todos ellos cumplen una
función específica, es decir, es el fin con el que fueron creados.
Este
es importante ya que si el software tiene exactitud, antes definido y pasa algo
fuera de estos, el sistema deja de funcionar
dañando el contenido que tenía; dejando su objetivo el cual es realizar
cualquier función, por lo mismo se convierte en un sistema inservible y sin
calidad.
Para
poder calificar la robustez se utiliza una determinada métrica o indicadores.
También
se utilizan normas para la calidad de software, siendo la más común la ISO 9000 la cual [3]"Pone a disposición
de un auditor o certificador los procesos internos, de forma que este indique
si cumple o no la normativa al 100%, audita el sistema; Si los resultados son
positivos se emite la certificación y cada cierto tiempo se tiene que renovar;
La certificación es costosa, a consecuencia de costes que ocasionan la lejanía
y el tiempo de duración de proceso (aprox. 6 meses). Se certifica la empresa y
la metodología para el desarrollo de la aplicación."
Una
métrica propuesta por un compañero nuestro fue dividir el número de veces que
el software funcionó bien entre el número de errores que hayan ocurrido, si es
mayor a 1 el resultante, el software tiene robustez.
Robustez= #veces funcionó bien/#veces errores
que hayan ocurrido
En
mi opinión modificaría esta métrica como la división del número de veces en las
cuales fallo entre el número de veces en las cuales respondió bien ante esta
falla, va obteniendo mayor robustez mientras vaya aumentando el resultante.
Robustez=#veces
fallidas/#veces que respondió bien ante fallas
Fácil de Usar (Usabilidad)
Se define cómo la simplicidad con la que el usuario con sus
conocimientos y aptitudes conviven con el software de manera adecuada y
logrando un aprovechamiento del mismo. En otras palabras, que el esfuerzo y
entrenamiento del usuario sea solo el necesario para que este pueda interactuar
con el sistema de manera óptima y el proceso implementado sea el adecuado.
La usabilidad comienza desde la instalación hasta la aplicación del
sistema.
Este factor es importante cuando hablamos de calidad de software debido
a que al inicio el usuario debe tener una idea de cómo funciona el sistema, de
lo contrario, es muy complicado que lo siga implementando o que al utilizarlo
no logre aprovechar los alcances del sistema o incluso puede causar confusión y
frustración al usuario lo que provocaría que este dude de la calidad del
software. El programa debe considerar toda gama
de usuarios, desde los usuarios “principiantes” hasta los que tienen más
experiencia en la implementación del software. Al mismo tiempo se debe
considerar el siguiente principio “No pretendas que conoces al usuario; no lo
conoces” para que el sistema sea flexible ante cualquier tipo de usuario.
Se propuso la siguiente métrica:
Usabilidad = (Nivel de conocimiento del usuario)(Tiempo que tardó en
aprender a usar el software)
Portabilidad
Lo podemos definir
como la capacidad necesaria para trasladar el programa de un sistema
hardware-software a otro de una manera eficiente y efectiva, y con el número
mínimo de modificaciones.
Podemos decir que
se refiere a tener las capacidades de adaptar su software en el entorno
distinto, instalar el software y reemplazar atributos en el cambio de sistema,
pero sin contar aplicaciones distintas
del sistema.
Contextualización
Un sistema que se
encuentra en un local tiene la capacidad de ser instalado en otra computadora
con otro sistema operativo y con un pequeño esfuerzo en modificarlo debe ser
capaz de tener las mismas funciones iniciales.
Métrica
Una fórmula que
podemos ocupar para medir es:
Portabilidad
= 1 – (RM / RA)
Dónde: *RM son los recursos necesarios para
mover el sistema al nuevo entorno
*RA son los recursos necesarios
para adaptar el sistema en el nuevo entorno residente.
Extensibilidad
La
extensibilidad se define como la facilidad de adaptación del sistema hacia los
cambios de especificación, un ejemplo es cuando estás haciendo un tenga, con
tan solo un bloque que muevas se puede caer toda la torre, si lo trasladamos a
un software quiere decir que modifiques alguna cosa y cuando lo haces se cae
todo tu software es una clara muestra de que no cumple con la extensibilidad.
Como
en el ejemplo, es algo importante que debe tener un software, ya que vivimos en
un mundo que cambia constante mente y más si se trata de tecnología, y de
negocios; los cuales serán dedicados la mayoría de softwares.
Para
erradicar este problema una de las opciones es trabajar los softwares de manera
individual, como en POO (Programación Orientada a Objetos).
En
algunos textos dicen que los principios de extensibilidad son:
· Diseños simples( simple arquitectura)
· Descentralización (independientes)
Una
métrica que utilizaría para evaluar la extensibilidad sería:
Extensibilidad=
#modificaciones/#modificaciones bien respondidas
Compatibilidad
Se refiere a la capacidad del software para compartir o convivir con
otro sistema, que el programa sea capaz de compartir información con uno o más
sistemas que se encuentren en su mismo entorno mientras realiza las funciones
por la que es requerido. Para esto se requiere generalizar el programa y
homogenizar sus aspectos, con esto se logra que al juntarse no haya
discrepancia ante requerimientos específicos que impidan la convivencia.
Es casi imposible que existan sistemas aislados, por muy bueno que sea
un programa, si no puede convivir con el entorno en el que se encuentra, el
sistema no se podrá desarrollar como se fue requerido.
Se propuso la siguiente métrica:
Compatibilidad = Sistemas con los que es capaz de
trabajar en conjunto/1+Número de cambios en el sistema para interactuar
Reutilización
El concepto de
reutilización dentro del software puede aplicarse de distintas maneras al
momento de usarlo.
1. Consiste en
la capacidad de un sistema (software) de ser utilizado en algún otro con el
cual haya alguna similitud ya sea de código, diseño o especificación
2. Es la
creación de un sistema a partir de alguno ya existente.
Pero la forma de
definirlo de manera más adecuada es:
Elementos de
software creados en desarrollos anteriores que son empleados en un sistema
nuevo que simplifica el proceso de desarrollo y a su vez otorga mayor calidad.
Contextualización
Un software que
aplique la reutilización permite que el desarrollo sea más eficiente, incremente
su productividad y sea rápido, los tiempos se reducen y permite el avance en
algún otro aspecto del sistema como eficiencia, exactitud, etc.
Métrica
La reutilización
dentro de un sistema puede ser medida a través de una fórmula que establecimos
como:
Porcentaje
de reutilización=(software reutilizado/Software total)(100)
La reutilización no
es lo mismo que la herencia o la copia del código en algún sistema. La
reutilización normalmente puede ser dada en diversos programas mediante la
importación, es decir, es una característica que solo se da en programación
orientada a objetos.
Ejemplo
En Java es fácil
notar esta reutilización al momento de hacer uso de las librerías que nos
brinda, se importa la clase de esa librería y se puede hacer uso de su
contenido en el nuevo código.
Funcionalidad
Se define como el
número de posibilidades que proporciona
un sistema.
En un software de
calidad se deben incluir solo la
característica necesaria para su diseño e implementación, por lo cual no se
deben de incluir funciones innecesarias que puedan complicar al usuario la implementación del sistema.
Contextualización
La calidad de
Software requiere esta característica debido a que si un sistema es
funcionarle, éste permite que se cumpla el objetivo de resolver una
problemática y no se desvíe por
“solucionar” otras.
Ejemplo
En el 2011,
Facebook actualización el muro, donde el usuario escribía o recibía
comentarios, cambiándolo a biografía, lo
que dificultó a muchos usuarios sus acciones en la red social, perdiendo su
funcionalidad.
Métrica
Características
|
SI
|
No
|
Cumple
con las funciones necesarias.
|
|
|
Tiene
el diseño necesario para que ser un software amigable.
|
|
|
Sus
métodos tienen el mínimo núm. de
errores o ninguno.
|
|
|
Sus
actualizaciones no afectan a la calidad de software.
|
|
|
Ecuación para
calcular la funcionalidad:
Funcionalidad=#métodos
* métrica aciertos/#errores
Eficiencia
La eficiencia se entiende como la
cantidad de recursos computacionales y de código requeridos por un producto de
software para llevar a cabo las funciones encomendadas, en otras palabras,
es la capacidad del software para hacer buen uso de los recursos de hardware
que manipula. El concepto de eficiencia puede ser confundido con eficacia en
ocasiones, pero se debe tener en cuenta que son dos significados distintos; la
eficiencia busca cumplir con la funcionalidad de la manera más “sutil” posible,
mientras que la eficacia solo se enfoca alcanzar el resultado esperado. La
eficiencia en un Software es imprescindible para la obtención del máximo
beneficio.
La métrica
propuesta para medir la eficiencia está dada por la siguiente ecuación:
Eficiencia
= resultados/recursos
Donde a su vez, los
recursos pueden ser definidos como:
recursos= memoria utilizada + tiempo
Por lo tanto, la ecuación que devuelve el valor de la
eficiencia es:
eficiencia= resultados/(memoria utilizada
+ tiempo empleado)
En términos más
vanos, se refiere al uso de los recursos involucrados en la realización de una
meta, o más específicamente a la relación entre los recursos aplicados y el
resultado obtenido. Cuando decimos por ejemplo: "Él es una persona
eficiente" queremos manifestar que hace su trabajo muy rápido, sin
demoras, es decir hace un buen uso del recurso tiempo con relación al
resultado. Este concepto de eficiencia se aplica a cualquier otro recurso,
siempre vinculado, por supuesto a un resultado definido. Al referirnos a la
eficiencia en el Software, implícitamente hace presencia el desempeño, siendo
casi sinónimos. Una actividad eficiente hace un uso óptimo de los recursos y,
por tanto, tiene el menor costo posible.
Puntualidad
Es la
habilidad de un sistema de ser entregado según la fecha prefijada o antes de
que los usuarios lo esperen. La economía acompaña este punto siendo la
habilidad de un sistema para ser terminado exactamente o por debajo de su presupuesto
original.
Las
presiones de puntualidad podrían tentarnos a usar técnicas de “Desarrollo
Rápido de Aplicaciones” cuyos resultados pueden no poseer mucha extensibilidad.
Métrica
Para esto
debemos tener en cuenta que debemos medir el retraso pues es así como nos puede
ayudar a mejorar a ese punto y darle más calidad.
R: retraso
T: Tiempo
dado en horas en que es dado el software
de acuerdo a lo prefijado.
P: Tiempo
prefijado dado en horas.
R = T - P
Siendo que
si R es cero el retraso es nulo y fue entregado a tiempo, si es positivo hubo
un retraso lo que indica que se necesita hacer una mejora en cambio sí es
negativo quiere decir que fue entregado antes que puede hablar bien.
Ejemplo:
En una
escuela es pedido un software que se necesita ser entregado para su evaluación
final dentro de 36 horas, uno de los equipos entrega su trabajo en 40 horas por
lo que se aplica la métrica.
R = T - P; R = 40 - 36; R = 4
El resultado
quiere decir que hubo un retraso de 4 horas que hizo que su calificación fue
menor por lo que se necesita un proceso de mejora para obtener una mejor calificación.
Este punto
es importante pues en una gran empresa puede significar el que pidan o no pidan
sus proyectos pues hoy en día el mundo se mueve en tiempos exactos y lo que
menos quieren es perder tiempo ya que a
ellos aplica el dicho: “el tiempo es oro”.
Conclusión
A
manera de retomar el concepto, la calidad en el software se define como el
conjunto de cualidades que lo caracterizan y que determinan su utilidad y
existencia. Es necesario estar conscientes de que la calidad en el software es
medible, por lo tanto se establecen métricas para determinar esta cualidad,
además las métricas que se utilizan varían dependiendo de cada una de las características
la integran. Como se observó con anterioridad, para cada una de estas
cualidades se propusieron distintos criterios a evaluar, y cada uno de estos
era introducido en ecuaciones que arrojaban un rango de valores para los que la
calidad era aceptable. Tomando en cuenta lo anterior, podemos concluir que
todas estas características dependen una de la otra, es decir, si en algún
momento falta alguna o su valor es inferior al admisible,
todas las demás se verán afectadas en mayor o menor medida, dependiendo de la
correlación que exista entre ellas. En adición, es recomendable tener en cuenta
tanto la obtención de la calidad como su control durante todas las etapas del
ciclo de vida del software, ya que desperfectos posteriores podrían causar
graves daños y costos extra de reparación.