Este documento trata sobre los fundamentos de la calidad del software. Explica que la calidad del software es crucial debido a la dependencia en sistemas informáticos. Define la calidad como la capacidad de satisfacer necesidades manifiestas e implícitas. También describe la evolución de los enfoques de calidad del software, desde los primeros marcos en las décadas de 1970 y 1980 hasta los más recientes que incluyen lenguajes formales.
1. Fundamentos de la Calidad del Software
Introducción
Las computadoras están siendo usadas en una amplia y creciente variedad de áreas de
aplicación y su operación correcta es a menudo crítica para el éxito de los negocios y la
seguridad humana. Hoy en día programas altamente complejos controlan aspectos
fundamentales de nuestras vidas, desde cuestiones mínimas como el funcionamiento de
nuestro teléfono móvil hasta situaciones esenciales, como las constantes vitales de un
enfermo. Desarrollar o seleccionar productos de software de alta calidad es por lo tanto un
asunto de primera importancia.
La calidadenel desarrolloyel mantenimientodel software se haconvertidohoyendía en uno
de losprincipalesobjetivosestratégicosde lasorganizaciones, debido a que cada vez más, los
procesos principales de las organizaciones – y su supervivencia - dependen de los sistemas
informáticosparasubuenfuncionamiento.Parece claroque todaslasaplicacionesque pueden
tenerel software debenserproductosde altacalidad:fácilesde usar,confiablesyseguros, tan
rápidoscomonecesite el cliente,baratosenrelaciónconsusprestaciones,flexiblesyfácilesde
mantener y modificar. En cierto sentido no debe hacerse distinción entre construir un
programa y fabricar cualquier otro bien de consumo. Sin embargo la realidad nos muestra
cómo estamos acostumbrados a buscar el certificado de calidad cuando adquirimos, por
ejemplo, una lavadora, pero por otro lado, aceptamos que muchas aplicaciones que usamos
no cumplan con mínimos requisitos de calidad exigibles a cualquier otra mercancía.
La similitud no sólo alcanza a las características del producto, sino que cada vez más afecta a
su proceso de producción; así pues se habla acerca del concepto de fábrica del software .
Además,enlaindustria,normasinternacionaleshablanacercade que laespecificaciónde gran
amplitud y la evaluación de los productos de software son un factor clave para asegurar la
calidad adecuada del software (ISO/IEC 9126-1:2001).
Otro de los conceptosque se manejaesel de Ingenieríadel Software que incluye una serie de
principios, metodologías, técnicas y herramientas para el desarrollo de software.
El objetivo primordial de la ingeniería de software es producir un sistema, aplicación o
producto de software de alta calidad. Para lograr este objetivo, los ingenieros del software
debenaplicarmétodosefectivosjuntoconherramientasmodernasdentro del contexto de un
proceso maduro de desarrollo de software.
Existenestudiosyestadísticasque representancon claridad la problemática del desarrollo de
software:
“Sólo el 51% de los proyectos de software tienen éxito”
Standish Group, CHAOS Report, 2004
Existe unamejoraal revisarlosdatos de añosanteriores, pues se han implantado prácticas de
calidad de software, tales como la aplicación de programas de mejora de procesos.
2. Calidad del Software
I Definición de Calidad
Por loanterior,se hace necesariode principio,definirqué esCalidad.Unadefiniciónesla
siguiente:
- “Es la totalidad de las características de una entidad que dan soporte a su capacidad
de satisfacer necesidades manifiestas e implícitas” ISO 8402:1994. La entidad
relevante en nuestro caso es un producto de software
- “Concordancia con los requisitos funcionales y de rendimiento explícitamente
establecidos, con los estándares de desarrollo explícitamente establecidos, con los
estándares de desarrollo explícitamente documentados y con las características
implícitasque se esperade todosoftware desarrollado profesionalmente” [Pressman
98]
La definiciónanteriorsirve ademásparahacerhincapié entresaspectos:
- Los requisitos (requerimientos) de software se deben cumplir, en caso contrario,
indican claramente la falta de calidad.
- Los estándaresdefinenun conjunto de criterios de desarrollo que deben seguirse de
manera explícita.
- Las características implícitas de calidad, a menudo no mencionadas, también deben
ser cumplidas.
Según la norma IEEE 1601 la calidad de un producto de software se define como el grado en
que posee una combinación adecuada de determinadas características como son el
rendimiento, la fiabilidad o la seguridad. Como se puede observar, se puede considerar esta
definición un tanto vaga debido a la subjetividad inherente en el término. Por la razón
anterior,sonmuchoslosautoresque han propuestomarcosde trabajoen losque caracterizan
la calidad y trabajan con ella de una forma sistemática.
Evolución de las Propuestas de Calidad
MacCall y otros en 1977, y Cavano y MacCall en 1978, fueron de los primeros que ofrecieron
propuestaseneste sentido.Segúnlosautores, la calidad puede llegar a cuantificarse tan sólo
mediante el análisisde un conjunto de factores. Estos factores se agrupan de acuerdo con las
características operativasdel software,sucapacidadparaaceptar cambiosy suadaptabilidada
nuevos entornos.
•Los factoresque consideraestapropuestaestánorganizadossegún3grupos:
Factoresde Revisión
Factoresde Transición
Factoresde Operación
•Los Factoresde Revisiónincluyen:
Flexibilidad
Mantenibilidad
Contestación
•Los Factoresde Transiciónincluyen:
Portabilidad
Reusabilidad
Interoperabilidad
•Los factoresde Operaciónincluyen:
Eficiencia
Integridad
Usabilidad
Fiabilidad
3. Corrección
Dado que enla mayoría de los casos escasi imposiblerealizarmedidas directas de los mismos
también definieron un conjunto de atributos de calidad que cuantificados subjetivamente
entre 0 y 10 permitenvalorarlacalidad de un producto como una medida ponderada de esos
valores. Otros autores como Boehm y otros (1978), Grady y Caswell (1987) y la ISO (1991)
siguieron los pasos de MacCall y Cavano y profundizaron en el conocimiento de los factores
más comunes que influyen en la calida del software.
El resultadomássignificativode estaprimerageneraciónde marcos de calidad fue la creación
de un conjunto de catálogos jerárquicos de factores de calidad, así como una primera
aproximaciónsistemáticaal procesode evaluaciónde lamisma,aúncuandotuviese unafuerte
componente subjetiva. Por desgracia, ninguna de estas propuestas deslindaba claramente el
concepto de atributo de calidad (medidas) y requisito de calidad (restricciones sobre estas
medidas), por lo que en muchas ocasiones resultaban confusos.
Más adelante,Gilb(1998),Kelleryotros (1995) y Olsina (1999), profundizaron en el problema
y llegaron a la conclusión de que no es posible determinar un conjunto de atributos
universalmenteválido, por lo que sus marcos estaban basados en la creación de catálogos ad
hoc que en algunas ocasiones se obtenían como concreciones de normas internacionales.
Además, se empezó a separar claramente entre ofertas y demandas de calidad, aunque el
concepto de atributo, por desgracia, aún se confundía con el de requisito.
Una limitación común a todos los marcos de segunda generación es la falta de lenguajes
formalesparaexpresar la calidad. Estos marcos proponen plantillas, técnicas o métodos para
trabajar con ella, pero nunca un lenguaje dotado de una semántica rigurosamente definida
que permitaconstruirherramientasútilesasu alrededor. Frølud y Koistinen, Franch (en 1998)
y Burgués y Franch (2000), entre otros, son los abanderados de una tercera generación de
marcos de calidad en los que el objetivo ha sido proporcionar estos lenguajes.
Existen también hoy en día propuestas para una posible cuarta generación orientada
principalmente alacalidadenaplicacionesenservicios web utilizados en portales y comercio
electrónico, tales como la de Ruiz-Cortés (2000) y Corchuelo y otros (2002).