David Garvin
es uno de estos autores y dice que para definir si un software es de calidad debemos tener en cuenta varias dimensiones:
- Calidad de desempeño:
¿el software cumple con los requerimientos especificados en la etapa de análisis? - Calidad de las características:
¿el software tiene características que sorprenden y agradan cuando se muestra a los usuarios? Esta dimensión es un poco subjetiva y dudosa, ¿ustedes que opinan? - Confiabilidad:
¿fallas, bugs, se puede acceder a él cuando se necesita? - Conformidad:
hace referencia a estándares locales, legales, de diseño, etc.. - Durabilidad:
¿Se puede actualizar, corregir, mantener? - Servicio:
hace referencia a la velocidad del servicio post-venta y lo rápido que puede actuar en caso de que falle el sistema. - Estética:
otro que es discutible, ¿verdad? de todas formas, existen cada vez más avances en este campo, del que se encargan los especialistas en interfaces de usuario y experiencia de usuario (UX, UI), apareciendo estándares, modas y convenciones sobre lo que es estético o no en software. - Percepción:
el más subjetivo de todos. Garvin dice que los prejuicios pueden influir en la percepción de la calidad por parte del usuario final. Hagamos un ejercicio y pensemos una marca de sistemas operativos. Esa misma que pensaste, ¿te parece de calidad o no?
Otros autores
que trabajaron sobre este tema, son por ejemplo McCall, Richards y Walters, quienes hablan de:
- Corrección:
grado en que un programa satisface los requerimientos iniciales. - Confiabilidad:
precisión y grado en que se espera que el programa haga lo que tiene que hacer. - Integridad:
tiene que ver con la accesibilidad y seguridad que brinda el software. - Usabilidad:
qué tan fácil es aprender a operar el sistema. - Facilidad de recibir mantenimiento:
¿es sencillo de reparar? - Flexibilidad:
¿es sencillo de mejorar? - Susceptibilidad a someterse a pruebas:
¿es fácil de testear? - Portabilidad:
¿qué tan fácil es cambiar el sistema de ambiente (a otro hardware y/o sistema operativo), qué tanto depende de los ambientes? - Reusabilidad:
¿qué tanto se puede volver a usar del programa, ya sea todo el software, algunas secciones de código, o aplicaciones, etc. - Interoperabilidad:
¿qué tan fácil es hacer que este software interactúe con otros.