Fundamentos de la calidad en el
software
Los computadores están siendo usados 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
calidad en el desarrollo y el mantenimiento del software se ha convertido hoy
en día en uno de los principales objetivos estratégicos de las organizaciones,
debido a que cada vez más, los procesos principales de las organizaciones – y
su supervivencia - dependen de los sistemas informáticos para su buen
funcionamiento
Parece claro que todas las aplicaciones que pueden
tener el software deben ser productos de alta calidad: fáciles de usar,
confiables y seguros, tan rápidos como necesite el cliente, baratos en relación
con sus prestaciones, flexibles y fáciles de 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, en la industria, normas internacionales hablan
acerca de que la especificación de 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 conceptos que se maneja es el de Ingeniería
del 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
deben aplicar métodos efectivos junto con herramientas modernas dentro del
contexto de un proceso maduro de desarrollo de software. Existen estudios y estadísticas que representan con
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
una mejora al revisar los datos de años anteriores, pues se han implantado
prácticas de calidad de software, tales como la aplicación de programas de
mejora de procesos
•
La
orientación adecuada consiste en partir de una metodología de desarrollo
suficientemente contrastada y admitida, personalizada para la propia
organización pero sin pérdida de la generalidad de la misma (lo que consiguen
muchas personalizaciones es la pérdida de la eficiencia de la metodología).
Definición de calidad
Por lo anterior, se hace necesario de principio,
definir qué es Calidad
Una definición es la 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ícitas que se espera de todo software desarrollado profesionalmente”.[Pressman98].
La definición anterior sirve además para hacer
hincapié en tres aspectos:
–
Los
requisitos (requerimientos) de software se deben cumplir, en caso contrario,
indican claramente la falta de calidad.
–
Los
estándares definen un 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.
Un proceso de desarrollo de software determina quién
debe hacer qué, cuándo y cómo.
Un proceso de software define la forma en que se
organiza el trabajo de un equipo de desarrollo y otros grupos de apoyo.
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
Son las actividades que se realizan siguiendo métodos
y técnicas para desarrollar un producto de software.
El proceso de desarrollo recibe como entrada
requisitos nuevos o modificados y genera un sistema nuevo o modificado.
Evolución de las propuestas de calidad
MacCall y otros en 1977, y Cavano y MacCall en 1978,
fueron de los primeros que ofrecieron propuestas en este sentido. Según los
autores, la calidad puede llegar a cuantificarse tan sólo mediante el análisis
de un conjunto de factores .Estos factores se agrupan de acuerdo con las
características operativas del software, su capacidad para aceptar cambios y su
adaptabilidad a nuevos entornos
Los factores que considera esta propuesta están
organizados según 3 grupos:
•
Factores
de Revisión
•
Factores
de Transición
•
Factores
de Operación
•
Los
Factores de Revisión incluyen:
•
Flexibilidad
•
Mantenibilidad
•
Contestación
•
Los
Factores de Transición incluyen:
•
Portabilidad
•
Reusabilidad
•
Interoperabilidad
•
Los
factores de Operación incluyen:
–
Eficiencia
–
Integridad
–
Usabilidad
–
Fiabilidad
–
Corrección
Dado que en la mayoría de los casos es casi imposible
realizar medidas directas de los mismos también definieron un conjunto de
atributos de calidad que cuantificados subjetivamente entre 0 y 10
permiten valorar la calidad 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
calidad del software.El resultado más significativo de esta primera
generación de marcos de calidad fue la creación de un conjunto de catálogos
jerárquicos de factores de calidad, así como una primera aproximación
sistemática al proceso de evaluación de la misma, aún cuando tuviese una
fuerte 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), Keller y otros (1995) y
Olsina (1999), profundizaron en el problema y llegaron a la conclusión de que
no es posible determinar un conjunto de atributos universalmente vá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 formales para expresar 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 permita construir herramientas útiles a su 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 a la calidad en aplicaciones
en servicios web utilizados en portales y comercio electrónico, tales
como la de Ruiz-Cortés (2000) y Corchuelo y otros (2002).