1.1
Factores y características que determinan la calidad del software.
Factores comunes a la calidad del software
Funcionalidad:
Se aprecia evaluando el
conjunto de características y capacidades del programa, la generalidad de las
funciones entregadas y la seguridad del sistema global.
Uno de los problemas más difíciles a los
que se enfrenta un jefe de proyecto es conocer cuanta funcionalidad es
suficiente. La presión para ofrecer más facilidades (conocida como featurism),
está constantemente presente. Sus consecuencias son malas para los proyectos
internos, donde las presiones vienen de los usuarios de la misma compañía, y
son peores para los productos comerciales, ya que la parte más destacada de los
análisis comparativos suele ser una tabla donde se enumeran una por una las
propiedades que ofrecen los distintos productos analizados.
El featurism es realmente
la combinación de dos problemas, uno más difícil que el otro. El problema más
fácil es la pérdida de consistencia como consecuencia de estar añadiendo nuevas
propiedades, lo que puede afectar a su facilidad de uso. Los usuarios se quejan
con razón de que toda la parafernalia que acompaña a una nueva versión de un
producto lo hace tremendamente complejo. Tales comentarios no deberían
preocuparnos en exceso, puesto que las nuevas propiedades no surgen de la nada:
la mayor parte de las veces han sido solicitadas por los usuarios –otros usuarios.
Lo que a unos les puede resultar algo superfluo puede ser una facilidad
indispensable para otros.
La solución aquí es trabajar una y otra
vez sobre la consistencia del producto global, tratando de que todo encaje en
un molde general. Un buen producto software está basado en un número pequeño de
potentes ideas; incluso si tiene muchas propiedades especializadas, éstas
deberían explicarse como consecuencia de los conceptos básicos. El “gran plan”
debe estar visible y todo debería ocupar su sitio dentro de él.
Corrección:
La corrección es la
cualidad principal. Si un sistema no hace lo que se supone que debe hacer, poco
importan el resto de consideraciones que hagamos sobre él – si es rápido, si
tiene una bonita interfaz de usuario…
Pero esto es más fácil de decir que de
lograr. Incluso el primer paso hacia la corrección es ya difícil: debemos ser
capaces de especificar los requisitos del sistema de una forma precisa, lo que
es en sí una ardua tarea.
Los métodos que aseguran la corrección son
usualmente condicionales. Un sistema de software importante,
incluso uno pequeño según los estándares de hoy, implica a tantas áreas que
sería imposible garantizar su corrección manejando todas las componentes y
propiedades en un solo nivel. En cambio, es necesaria una solución multinivel,
en la que cada nivel confía en la corrección de los inferiores:
Hardware ----> Sistema Operativo---->
Compilador ----> Sistema de Aplicación
En la solución condicional de la
corrección, sólo hay que preocuparse en garantizar que cada nivel sea
correcto bajo el supuesto de que los niveles inferiores son
correctos.
Confiabilidad:
El
conjunto de atributos que soporta la capacidad del software para mantener su
nivel de rendimiento bajo condiciones establecidas por un periodo de tiempo
establecido.
Eficiencia:
El conjunto de recursos informáticos
y de código necesarios para que un programa realice su función.
Casi sinónimo de eficiencia es la palabra
“rendimiento”. La comunidad del software muestra dos tipos de actitud con
relación a la eficiencia:
- Algunos
desarrolladores tienen una obsesión con las cuestiones de rendimiento y le
dedican gran cantidad de esfuerzos a presuntas optimizaciones.
- Por
otro lado, existe la tendencia de soslayar las cuestiones de eficiencia,
como se evidencia en las frases de la industria “hágalo correcto antes de
hacerlo rápido” y “de todos modos los modelos de computadoras del año que
viene van a ser un 50% más rápidos”.
De manera más general, la preocupación por
la eficiencia debe sopesarse con otros objetivos tales como la extensibilidad y
la reutilización; optimizaciones extremas pueden hacer al software tan especializado
que limite el cambio y la reutilización. Es más, la potencia creciente del
hardware de las computadoras nos permite tener una actitud más relajada con
respecto a tratar de ganar hasta el último byte o microsegundo.
No hay comentarios:
Publicar un comentario