Unidad
2 - Sesión 5 - Actividad 1 Selección y Recopilación de Información
INTRODUCCIÓN A LA CALIDAD DE SOFTWARE
RESUMEN
La creciente preocupación por
la calidad en la industria del software tiene como objetivo principal el
desarrollo sistemático de productos y servicios de mejor calidad y el
cumplimiento de las necesidades y expectativas de los clientes. En el presente
artículo se hace una introducción a la calidad y al modelo de calidad adoptado
por Colciencias, CMMI. Pretendemos unir esfuerzos con esta iniciativa y motivar
a la comunidad académica a trabajar en calidad con las empresas desarrolladoras
de software para mejorar la competitividad y la calidad global de esta industria.
PALABRAS CLAVES:
Calidad, de software,
industria de software, CMMI, niveles CMMI. ABSTRACT
KEYWORDS:
Quality, software quality,
software industry, CMMI, CMMI levels. ANA MARIA LÓPEZ
ECHEVERRY Ingeniera
Electricista. Profesora Asistente, Universidad Tecnológica de Pereira. anamayi@utp.edu.co CESAR
CABRERA Ingeniero de Sistemas y Computación. Profesor Auxiliar, Universidad
Tecnológica de Pereira. cace@utp.edu.co LUZ ESTELA VALENCIA AYALA Ingeniera
Industrial Candidata a M. Sc. en Investigación de Operaciones y Estadística.
Profesora Asistente, Universidad Tecnológica de Pereira. levayala@utp.edu.co
1. INTRODUCCIÓN
En un mundo globalizado, en
donde las organizaciones se ven enfrentadas a competencia de nivel mundial, la
calidad se convierte en un importante punto diferenciador, además de aumentar
la satisfacción general del cliente, disminuir costos y optimizar los recursos.
Los
productos o servicios que
ostentan certificados de calidad son preferidos por los compradores porque
trasmiten seguridad y confianza. Esto también constituye un atributo de valor
para las estrategias de comercialización en el exterior. Si bien la industria
del software es nueva, ha tenido que madurar rápidamente, tal como lo exigen
los avances tecnológicos y su alta participación al interior de las empresas.
Esta industria comparte con las demás
industrias el interés por la
calidad y la competitividad.
2. DEFINICIÓN DE LA CALIDAD
Pero, para empezar, ¿Qué es la
calidad? A continuación presentamos algunas definiciones:
•La Real Academia Española,
define la calidad, Como: “Propiedad o conjunto de propiedades
Inherentes algo, que permiten
juzgar su valor”. Esta definición esta orientada al mercado
1 .La International Standards
Organization, ISO en la norma 8402:1994, la define como la
“Totalidad de propiedades y
características de un producto, proceso o servicio que le confiere su aptitud
para satisfacer unas necesidades expresadas o implícitas.” En la actualización
de la Norma ISO, la 9000:2000, la definición quedó “Grado en el que un conjunto
de características inherentes cumple con los requisitos”. En esta definición se
hace especial
énfasis en cumplir los
requerimientos de los consumidores
2. En las definiciones
siguientes, el concepto se extiende para abarcar las características que
influyen en la calidad hacia el interior de las empresas o hacia el consumidor.
http://buscon.rae.es/draeI/html/cabecera.htm , visitada
en Mayo de 2008
2 Sistemas de gestión de
calidad – Conceptos y vocabulario (Traducción certificada),
ISO 9000:2000, ISO
2000.Scientia et Technica Año XIV, No 39, Septiembre de 2008. Universidad
Tecnológica de Pereira. 327 Para Deming la calidad esta más relacionada con los
procesos internos de la empresas, orientada hacia la producción y para Juran
con las necesidades y exigencias de los consumidores.
•Edwards Deming, la comenta en
su libro "Out of the Crisis", publicado en 1982: “El control de
calidad no significa alcanzar la perfección. Significa conseguir una eficiente
producción con la calidad que espera obtener en el mercado.”
3 Joseph Juran.En 1986,
escribió La trilogía de Juran, esta trilogía es Planificación de la Calidad,
Control de Calidad y Mejora de la Calidad. Se amplía el enfoque de la calidad
más allá del producto y la satisfacción del cliente hacia lo que significa calidad
en los procesos y el papel de la mejora de procesos en la calidad final de la
producción en general: producto, satisfacción del cliente y procesos
involucrados. La Planificación de la Calidad, se definió como el
"rendimiento del producto que da como resultado la satisfacción del
cliente; libertad de deficiencias en el producto, que evita la falta de
satisfacción del cliente". El Control de la Calidad se entiende
“como un proceso que debe seguir toda empresa para asegurarse que sus productos
o servicios mantengan un nivel mínimo de Calidad, el cual es definido por la
propia empresa, de acuerdo a las características de lo que genera, de las características
de sus clientes y de los objetivos de eficiencia que se hayan planteado y que
deban alcanzar con regularidad”. La Mejora de la Calidad es el proceso de
elevarse a niveles de rendimiento sin precedente. Un programa de este tipo
incluye demostrar las necesidades de las mejoras, identificar proyectos
específicos para la mejora, organizar el apoyo para los proyectos,
diagnosticar las causas, dar remedios para las causas, demostrar que los
remedios son efectivos bajo las condiciones de operación y proporcionar el
control para mantener las mejoras.
4 De lo anterior se observa
que todas las definiciones incluyen la participación del cliente y que en el
contexto actual, la calidad persigue, grosso modo, los siguientes objetivos:
Reducción en el costo de las operaciones.
2.1 Evolución de la calidad
3 Deming, Edwards, Out of the
Crisis, Cambridge University Press, 1986.
4 Juran, Joseph, Juran’s
Quality Handbook, Ed. McGraw Hill, 1998
La calidad en las empresas ha
evolucionado, si lo analizamos desde los inicios de los procesos de
industrialización a mediados del siglo XIX hasta cerca de 1940, la calidad se
relacionaba con la inspección en los productos con el propósito de detectar
errores, de ésta fecha hasta los años 80`s el
control de calidad se convirtió en un ejercicio de control estadístico cuyo
propósito era impedir que el producto defectuoso llegara al cliente y a partir
de los 80`s se inician procesos de gestión de calidad total, que busca
garantizar la calidad por medio de la planificación y la creación de modelos de
calidad de forma permanente.
En la industria del software
se pueden evidenciar necesidades de satisfacción del cliente de productos o
servicios de software, de reducción de recursos invertidos en proyectos de
software y de la efectiva asignación de recursos humanos. Si hablamos de la
calidad del software, una de las primeras
definiciones aseguraba que “la calidad de un programa o sistema se evaluaba de
acuerdo al número de defectos por cada mil líneas de código. (KLOC: Kilo Lines
Of Code)”.
5 La definición de la calidad
del software según la IEEE, Std. 610-1990, es “el grado con el que un
sistema, componente o proceso cumple los requerimientos especificados y las
necesidades o expectativas del cliente o usuario” Pressman, Roger, Ingeniería de
Software 3ª Ed., McGraw Hill, 1993.
Standard Glossary of Software
Engineering Terminology, IEEE STD 610-1990, IEEE 1990 Scientia et Technica Año XIV,
No 39, Septiembre de 2008. Universidad Tecnológica de Pereira.
En el libro Ingeniería del
Software de Pressman, 1998, se afirma que la calidad es la “Concordancia del
software producido con los requerimientos explícitamente establecidos, con los
estándares de desarrollo prefijados y con los requerimientos implícitos no
establecidos formalmente, que desea el usuario”
6 El profesor Vidal Alonso
Secades, de la Facultad de Informática de la Universidad Pontificia de
Salamanca, afirma que las definiciones de calidad están orientadas a las facilidades que ofrece el
software una vez esté terminado, éste debe contener las siguientes capacidades:
•Fiabilidad: Capacidad de
operar sin errores.
•Modificable: Capacidad de
hacer los cambios necesarios de una forma sencilla.
•Comprensible: Capacidad de
comprender el software operativo, de cara a un cambio o arreglo.
•Rendimiento: Velocidad y
compacidad del software.
•Utilizable: Capacidad de uso
sencillo del software.
•Probable: Capacidad de
construir y ejecutar fácilmente casos de prueba.
•Portable: Capacidad de mover
el software fácilmente de un entorno de trabajo a otro.
3.1 Aplicación de la calidad
en software En el desarrollo de software, el control de la calidad es realizado
por el mismo desarrollador, que dispone de poco tiempo, cuando lo tiene. En
otros casos, está ligado a las etapas del ciclo de vida del desarrollo del
software o bajo un conjunto de rígidos
patrones (listas de chequeo o check list en inglés) cuya revisión suele
consumir demasiado tiempo.
La garantía de calidad se inicia
con las acciones que se realizan durante la planificación como el conjunto de
procedimientos, técnicas y herramientas durante el ciclo de vida, las
actividades de auditoria tales como revisiones técnicas o inspecciones,
optimizando los criterios de correctitud y completitud y las funciones de
información de la gestión, más orientadas
a la documentación y al desarrollo de pruebas. La calidad total depende de la
calidad con la cual se lleve a cabo todo el proceso - las cinco etapas del
ciclo de vida de un desarrollo de software (análisis, diseño, implementación,
pruebas e implantación)- y cada subproceso o fase o etapa del proyecto,
adicionalmente, es indispensable contar con
los siguientes componentes: claridad, involucración, planeamiento, estándares, Pressman, Roger, Ingeniería de
Software 3ª Ed., McGraw Hill, 1993.
Secades, Vidal. “Gestión del
Conocimiento: Modelos de transferencia del conocimiento y Calidad en los Medios
de Comunicación, Organizaciones y empresas” en Curso nivelatorio de Doctorado,
Universidad Pontificia de Salamanca, España, 2007. Entrenamiento, experiencia,
controles, documentación, soporte y finalización. Es importante resaltar que en
el proceso de mejora continua se realizan actividades técnicas (aplicación de
la ingeniería del software), organizativas (aplicación de modelos de proceso o
planes) y humanas (formación del personal y motivación). En la actualidad,
según Secades, la construcción de software presenta dificultades
tales como insuficiencia en la especificación de requisitos, diseño poco
profundo, mala gestión de la configuración, poca flexibilidad para la
incorporación de cambios, prolongado tiempo de duración y aumento en los
costos. Si bien es preciso aclarar que “la demanda de software y la complejidad
del producto en sí, parecen crecer a mayor velocidad que las metodologías, el
personal capacitado y las herramientas para automatizar la
producción. A pesar de la incorporación de herramientas CASE (del inglés
Computer Assisted Software Engineering o Ingeniería de Software Asistido por
Computadora), la producción de software continúa siendo una actividad con alta participación de recursos
humanos, cien por cien intelectual y en cierto sentido, sin insumos ni materias
primas.”
Es por ello que se hace
necesaria la adopción de un estándar de calidad, basado en la experiencia de
otras industrias con más tiempo de madurez, aunque basado en las
características particulares del software como producto y como servicio. En
este artículo se hace referencia al diseñado por la Universidad Carnegie Mellon
(EUA) en el Instituto de Ingeniería de Software SEI (por sus siglas en inglés
Software Engineering Institute), llamado Capability Maturity
Model Integration, mejor conocido como CMMI, orientado a mejora de procesos en
diferentes niveles de madurez de la empresa. Este modelo fue el adoptado por
Colciencias, para el fortalecimiento de la Capacidad Nacional en Calidad de Software,
por ser el principal referente internacional de calidad exigido por las
compañías que contratan software a nivel mundial.
3.2 CMMI Éste es un modelo
para la mejora de procesos que proporciona a las organizaciones los elementos
esenciales para procesos de desarrollo y mantenimiento de software. Durante los
90, SEI desarrolló modelos para la mejora y Calidad Total en Informática, http://www.inei.gob.pe/biblioineipub/bancopub/inf/Lib5042/cap15.htm,
Visitada en Abril de 2008
Colciencias, Convenio
Interadministrativo de Cooperación No. 055-2005 SENA – No. 030-2005,
Colciencias, Agosto de 2005.Scientia et Technica Año XIV, No 39, Septiembre de
2008. Universidad Tecnológica de Pereira. medición de la madurez (CMM o
Capability Maturity Model) específicos para varias áreas:
•CMM-SW: CMM for software
•P-CMM: People CMM.
•SA-CMM: Software Acquisition
CMM.
•SSE-CMM: Security Systems
Engineering CMM.
•T-CMM: Trusted CMM
•SE-CMM: Systems Engineering
CMM.
•IPD-CMM: Integrated Product
Development CMM.
Luego del uso y aplicación
individual de éstos modelos de madurez, SEI desarrolló CMMI
para facilitar y simplificar
la adopción de forma simultánea de CMM-SW (CMM for
Software), SE-CMM (Systems
Engineering Capability Maturity Model) e IPD-
CMM (Integrated Product
Development) y de ahí la palabra Integraciónen la sigla. Antes de CMMI el
modelo más común era CMM-SW y se puede ver CMMI como la evolución de éste
último. Niveles de madurez del Modelo
CMMI Éste modelo presenta una estructura de cinco niveles de madurez, en los
cuales una organización puede determinar su madurez en la
producción de software en función de la consecución de los objetivos
establecidos en cada nivel.
Según el nivel de madurez en
que se encuentre la empresa, las medidas se enfocarán más al grupo de objetivos
del nivel correspondiente, para que mejore la capacidad de producir software y
pueda avanzar hacia el siguiente nivel. Los niveles de madurez de una
organización en CMMI son:
1 .Inicial.
2. Gestionado.
3 .Definido.
4 .Gestionado
cuantitativamente.
5. Optimizando o en
Optimización Continua.
Inicial o Nivel 1 CMMI. En los
procesos de una empresa en éste nivel, la transición desde las entradas hasta
las salidas está mal definida y descontrolada, provocando que proyectos
similares puedan tener una gran variación en cuanto a su productividad y en su calidad debido a la ausencia
de una estructura y control adecuados.
Las empresas en este nivel
deben comenzar por definir y recoger datos, estableciendo una serie de medidas
de líneas base. El objetivo principal es proporcionar un punto de partida para
medir, a través de comparación, las mejoras según se incremente la madurez.
Gestionado o Nivel 2 CMMI . En
este nivel la característica de los procesos es ser intuitivos, coexistiendo
unos costos y calidad altamente variables, junto con un razonable control de la
planificación y con unos métodos o procedimientos informales efectuados en el mismo instante. De esta
forma, se identifican las entradas y las salidas del proceso, las
restricciones, como presupuesto o calendario y los recursos utilizados para obtener el producto final.
En la definición de CMM, éste
nivel de madurez se denomina repetible. El proceso es repetible en el sentido
de que las mismas entradas producen las mismas salidas, pero todavía no es posible
observar cómo se generan las salidas. Definido.
Nivel 3 CMMI. Éste pasa a ser
un nivel cualitativo, donde se comienza a gestionar correctamente tanto los
costos como la planificación dentro de unos límites razonables.
Ahora sí se conoce la forma de
construcción del sistema, ya que se conocen las actividades intermedias y
cuáles son las entradas y salidas para las mismas. Por tanto, es posible
examinar y medir estas actividades, dado que los productos intermedios están
bien definidos.
Esta definición afecta tanto a
los procesos de administración como a los de ingeniería, que están documentados
de una forma estándar dentro del proceso de software de la organización. De
esta forma, todos los proyectos utilizan en el desarrollo y mantenimiento del
software una versión del proceso documentada.
Gestionado cuantitativamente o
Nivel 4 CMMI. A diferencia del
nivel anterior, este cuarto nivel pasa a ser un nivel cuantitativo. Ahora se
tienen medidas detalladas del proceso del software y de la calidad del
producto, Scientia et Technica Año XIV, No 39, Septiembre de 2008. Universidad
Tecnológica de Pereira.
Habilitando la presencia de un
cierto control estadístico sobre la calidad del producto.
Una vez definido el proceso,
se le añade la gestión del mismo.
Optimizado o Nivel 5 CMMI. En
este último nivel de optimización continua, las bases cuantitativas se utilizan
para una inversión continua de capital en el proceso de automatización y mejora
de manera que la organización alcanza el nivel superior de la madurez de
procesos. Las medidas en este nivel, se utilizan para mejorar el proceso,
quitando o añadiendo actividades e incluso cambiando su estructura en
función de las medidas obtenidas. Resumiendo se trata de aportar nuevos
aspectos, ideas y tecnologías que permitan mejorar el proceso del software.
En el objetivo de determinar
la madurez de una organización en los niveles mencionados, se considera la calificación
de la capacidad de los procesos en niveles con nombres y características muy
similares al nivel de madurez de la organización (Incompleto, Ejecutado, Gestionado,
Definido, Gestionado Cuantitativamente y Optimizado), adicionando un nivel de
capacidad incompleto nivel 0 , en el que un proceso no consigue sus objetivos o no se termina. Niveles de Capacidad del
modelo CMMI
Lo que hemos visto en éste
artículo son unas bases simplificadas del concepto de calidad y cómo se aplica
al Software. De ello nos viene a la cabeza la idea de evolución de la necesidad
de diferenciación de las industrias y cómo ésta necesidad lleva al desarrollo
de estándares de calidad a través
de los años. El estadio actual de la industria del software requiere la
aplicación Sinopsis de de los modelos CMM y CMMI, http://www.navegapolis.net/content/view/330/60/ visitado en Mayo de 2008 de
los estándares y de los modelos y propuestas que se han venido desarrollando en el
mundo, Colombia ha adoptado el modelo CMMI que hemos ilustrado en éste artículo.
El desarrollo de estándares y modelos de calidad en el mundo ya lleva varios años de
desarrollo y lo que nosotros vemos en Colombia es la necesidad imperiosa de que
la academia incluya el análisis de la calidad en sus programas y permita que los
estudiantes valoren y practiquen los procesos de implementación de modelos de
calidad en su formación. La adopción de un modelo de calidad por parte del Estado
colombiano es un importante indicador de que ésta nueva habilidad ya no es
opcional sino obligatoria. CMMI es un modelo de calidad basado en procesos, que
ayuda a recorrer el camino hacia la optimización de los mismos y se desarrolla
en un contexto internacional que permite a las empresas nacionales adquirir un
importante factor de competitividad, eficiencia y diferenciación. Lo anterior,
de vital importancia cuando se tiene el interés particular de exportar
productos o servicios.
5. BIBLIOGRAFÍA
Real academia de la Lengua;
búsqueda por calidad en
http://buscon.rae.es/draeI/html/cabecera.htm , visitada
en Mayo de 2008
Sistemas de gestión de calidad
– Conceptos y vocabulario (Traducción certificada),
ISO 9000:2000,ISO 2000. [3]
Deming, Edwards, Out of the Crisis, Cambridge
University Press, 1986. [4]
Juran, Joseph, Juran’s Quality Handbook, Ed. McGraw Hill, 1998
Pressman, Roger, Ingeniería de Software 3ª
Ed., McGraw Hill, 1993.
Standard Glossary of Software
Engineering Terminology,IEEE STD 610-1990, IEEE 1990.
Secades, Vidal. “Gestión del
Conocimiento: Modelos de transferencia del
conocimiento y Calidad
en los Medios de Comunicación,
Organizaciones y empresas” en Curso nivelatorio
de Doctorado,
Universidad Pontificia de
Salamanca, España, 2007.
5042/cap15.htm, Visitada en
Abril de 2008 Scientia et Technica Año XIV,
No 39, Septiembre de 2008. Universidad Tecnológica de Pereira. Colciencias,
Convenio Interadministrativo de Cooperación No. 055-2005 SENA No. 030-2005, Colciencias,
Agosto de 2005.
plan.html, visitada en Mayo de
2008 Sinopsis de de los modelos CMM y CMMI,
CMMI. Calidad. Ingeniería
del Software, http://www.ingenierosoftware.com/calidad/cmm-
cmmi.php, visitada en Mayo de 2008