lunes, 12 de enero de 2015

Factores y características que determinan la calidad del software. Factores comunes a la calidad del software

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