Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El desarrollo de productos software no es una excepción, ni está ausente de ofrecer calidad. Dicho
nivel de calidad, incluido en los productos, considera muchas actividades dentro del desarrollo de
los proyectos software. La gestión de la calidad dentro de este tipo de proyectos puede
estandarizarse dentro de la organización y certificarse a la comunidad de clientes.
La calidad del software ha mejorado en las últimas décadas, una de las razones ha sido que las
compañías han adoptado nuevas técnicas y tecnologías como el desarrollo orientado a objetos, la
ingeniería basada en componentes y las herramientas CASE.
Incorporar la calidad implica la adopción de técnicas y una gestión de la calidad para el desarrollo
en la industria del software, sin embargo, la calidad del software es un concepto complejo que no
es comparable con la calidad relacionada con la manufactura de los demás productos.
―En la manufacturación, la noción de calidad viene dada por la similitud entre el producto
desarrollado y su especificación‖. Philip Crosby, La calidad no cuesta, 1994. Esta definición es
aplicable a todos los productos, pero para el producto software no lo es, ya que existen
básicamente dos problemas:
En algunas organizaciones, las personas piensan que la calidad puede lograrse definiendo
estándares y procedimientos organizacionales de calidad que comprueban si estos estándares
son seguidos por el equipo de desarrollo, estos estándares marcan las buenas prácticas, lo que
lleva inevitablemente a un producto de alta calidad, pero en el software no se garantiza este
resultado, ya que es posible que el cliente considere que el producto final no cubre sus
expectativas.
Los buenos gestores aspiran a lograr una ―Cultura de calidad‖ dentro de la organización.
Antes de empezar hablar acerca de calidad de los productos software, es necesario definir que es
lo que se entiende por ―calidad”, a qué es aplicable y de qué forma puede ser relacionada con
productos software.
Según la Real Academia Española, calidad se puede definir como "Propiedad o conjunto de
propiedades inherentes a algo, que permiten juzgar su valor".
De esta forma podríamos decir que la calidad de los productos puede medirse como una
comparación de sus características y atributos. Este concepto puede aplicarse a cualquier
producto.
Esta medida de calidad debería hacerse observando las diferencias ocurridas en la producción de
dos productos iguales, pero la producción de artículos de cualquier especie no asegura que dos
de ellos sean totalmente iguales.
Es posible entonces, que sea preciso realizar observaciones acuciosas para lograr distinguir las
variaciones entre uno y otro, ya que éstas pueden no ser obvias. Es más, lo más seguro es que
sea necesario disponer de instrumentos adecuados y de precisión para poder observar dichos
cambios de la producción.
Eso marca uno de los principales objetivos de dar calidad a los productos, que es minimizar las
diferencias entre unidades producidas. Estas diferencias tienen diversos orígenes, lo que lleva a
tener distintas y amplias formas de corregirlos, dependiendo de la naturaleza del producto.
Es posible detectar algunos de los atributos que hacen comparable un producto de otro, como
pueden ser las formas, colores, tamaños, manejabilidad, entre otros muchos. Estas características
pueden ser físicamente mensurables y, por ello, fácilmente comparables.
Desde esa perspectiva,
¿De qué manera puede ser aplicada la calidad a los productos software?
¿Cómo controlar la variación entre los productos de este tipo?
Así como existen medidas para atributos físicos de los productos, para el software también existen
medidas que pueden hacerlo comparable, tales como puntos de función, líneas de código y otras.
Estas medidas aportan a la medida de variación entre productos software, las métricas, pero no
queda claro contra qué medimos, ¿un valor mínimo?, ¿un valor máximo?
Así como los sistemas manufactureros producen o deben producir productos de calidad, podemos
pensar que la principal meta de un equipo desarrollador de software debería ser siempre producir
software catalogado como de alta calidad.
Los avances actuales en Inteligencia Artificial, con los asistentes para el desarrollo de software no
son demasiado confiables como para remplazar al ser humano en la intervención de este proceso.
Se confirma entonces que el desarrollo de productos software es una actividad sujeta a muchos
factores que pueden hacerla poco confiable.
Podemos asegurar que la calidad del proceso de desarrollo afecta directamente a la calidad de los
productos derivados. Se mide la calidad del producto y se cambia el proceso hasta conseguir el
nivel de calidad deseado.
La gestión y mejora de la calidad del proceso debe minimizar los defectos en el software
entregado.
Como la calidad está presente en todas las etapas del proceso de desarrollo de los productos de
software, se debe conocer cómo interviene la aplicación de la calidad en cada etapa. Teniendo en
cuenta que la etapa de captura de requerimiento necesita ser correcta para garantizar el éxito del
proyecto, quedan como etapas importantes, el diseño, la construcción y la satisfacción final del
cliente:
Calidad en el diseño. Se definen las características de arquitectura e interfaz para la
realización del producto software y que se deberían cumplir posteriormente. Todas las
actividades están dentro de un proceso definido de acuerdo a alguna norma de calidad. Es
importante en esta etapa contemplar las especificaciones de los procesos, la propuesta de
tolerancia a la modificación estableciendo los métodos correctivos a las desviaciones que
puedan ocurrir.
Calidad en la producción. El logro de la calidad está dado por el grado de cumplimento de
los requerimientos de diseño en la producción. Si los requerimientos están bien definidos y
especificados, el cumplimiento de la calidad en esta etapa no debería tornarse en una
tarea compleja ni estresante, ya que las bases del trabajo están previamente definidas.
Calidad de satisfacción. La medida de la calidad está dada por los usuarios finales de los
productos software, es el entendimiento y aprecio del producto software. Esta calidad es la
culminación de un proceso, no puede esperarse en esta etapa una alta calidad si no hubo
preocupación por ella en las etapas anteriores.
Al finalizar el proceso de desarrollo y obtener un producto de calidad se espera que cumpla con:
La satisfacción del cliente.
La comercialización y uso masivo.
Que responda a los requerimientos
Para los sistemas grandes que se dividen en iteraciones se plantea un proceso general de
pruebas que comienza con la prueba de unidades de programas individuales, como son las
funciones y objetos, luego estas unidades se integran en subsistemas y sistemas, probando las
iteraciones integralmente. Una vez entregado el sistema al cliente se realizan las pruebas de
aceptación para comprobar que el sistema funciona según las especificaciones.
Cuando los sistemas son más pequeños, se distinguen menos etapas de prueba, las dos
actividades fundamentales de pruebas son:
La prueba de componentes, es probar las partes del sistema, tratando de descubrir
defectos en los componentes.
La prueba del sistema, probar el sistema integralmente, como un todo, que satisface los
requerimientos funcionales, los no funcionales y que no se comporta de forma inesperada.
Los defectos no detectados en los componentes aparecerán en esta instancia de prueba.
Los objetivos o propósitos que plantea el PUD para el workflow de prueba son:
Planificar las pruebas necesarias en cada iteración, incluyendo las pruebas de integración
y las pruebas de sistema.
Diseñar e implementar las pruebas creando los casos de prueba que especifican qué
probar, creando los procedimientos de prueba que especifican cómo realizar las pruebas y
creando componentes de prueba ejecutables, de ser posible.
Si bien las pruebas en el proceso es una etapa que generalmente se encuentra después de la
etapa de implementación, no es lo más conveniente, tal como lo expresáramos en los módulos
anteriores, es mejor detectar las fallas tempranamente. De este modo, las pruebas se encuentran
en todas las fases del ciclo de vida.
Al ser tan numerosas las diferentes pruebas que se pueden realizar al software es conveniente
tener políticas para la prueba, dependiendo del tipo de software y su tamaño, teniendo en cuenta
que se debe adoptar al menos un tipo de prueba y hacerse al menos una vez. De forma
alternativa, las políticas de prueba pueden basarse en la experiencia de uso del sistema y
centrarse en aspectos operacionales. Por ejemplo:
Deberían probase todas las funciones del sistema que se acceden a través de menús.
Prueba funcional.
Deben probarse todas las combinaciones de funciones, como son los ingresos de datos.
Prueba de datos.
El ingreso de datos debe hacerse con datos correctos e incorrectos.
Como vimos anteriormente, las pruebas del sistema integran dos o más componentes que
incorporan funcionalidades al sistema, realizando una prueba integral de su funcionamiento,
probando el incremento de software que será entregado al cliente.
Cuando la arquitectura del sistema está basada en objetos se tendrán componentes reusables
que se deben probar en forma independiente e integrada. Si el sistema no está diseñado bajo
componentes, puede tener módulos o subsistemas que puedan ser considerados componentes.
Cuando un sistema identifica algún tipo de componente es necesario realizarle su prueba.
Pruebas de componentes, proceso de pruebas de defectos, los responsables de estas
pruebas son los desarrolladores. “Pruebas unitarias”.
Cuando el sistema cuenta con numerosos componentes que no son simples funciones u objetos,
sino que son componentes compuestos por varios objetos que intervienen, es necesario
establecer el acceso a estos componentes por medio de interfaces bien definidas. En estos casos
es necesario realizarles las pruebas necesarias:
Existen diferentes tipos de interfaces entre los componentes del programa, por lo se encontrarán
distintos tipos de errores, como pueden ser:
Interfaces de parámetros, componentes con paso de parámetros que pueden ser datos,
objetos o funciones a probar.
Interfaz de memoria compartida, se comparten datos en un bloque de memoria. En este
caso se debe probar el componente que deja los datos y el que los toma.
Interfaces procedurales, son interfaces en las que un componente encapsula un conjunto
de procedimientos que pueden ser llamados por otros componentes, es común en los
objetos y componentes reutilizables de un sistema.
Interfaz de paso de mensajes, son las que un componente solicita un servicio de otro
componente por medio del paso de mensaje, el resultado también puede ser devuelto
como mensaje. Sistemas orientados a objetos y de arquitectura cliente – servidor.
El diseño de casos de prueba representa las entradas y salidas esperadas, es una parte de las
pruebas de componentes y sistemas que permite probar el correcto funcionamiento del sistema.
Como todo objetivo de pruebas, los casos de prueba tienen como propósito crear un conjunto de
casos de prueba efectivos descubriendo defectos en los programas y que muestren de alguna
forma que el sistema cumple con los requerimientos.
Para diseñar estos casos de prueba existen varias aproximaciones que se pueden seguir:
Pruebas basadas en requerimientos, utilizadas principalmente en las pruebas del sistema,
donde los componentes responden a uno o más requerimientos que debe satisfacer el
sistema.
Pruebas de particiones, utilizadas para grupos de datos que tienen características
comunes y son utilizados en la entrada de distintos componentes o módulos del sistema,
como son los datos numéricos o los rangos de las cadenas.
Pruebas estructurales, utiliza el conocimiento de la estructura del sistema o programa que
ejecuten cada una y todas las estructuras utilizadas. En este caso de debería realizar al
menos una prueba de cada estructura, por ejemplo, las condicionales que determinan el
funcionamiento en base a una condición donde se espera un comportamiento por
verdadero y otro por falso. Las pruebas de camino es una de las convenientes a utilizar en
las pruebas estructurales, cuyo objetivo es probar cada camino independiente de los
componentes o programas tratando de detectar las posibles fallas de cada camino. Hay
La etapa de pruebas de un sistema es una actividad costosa, laboriosa y lleva tiempo en ser
ejecutada, es por ello que muchas veces, se minimizan o no se realizan llevando esto a riesgos de
mal funcionamiento del sistema y a entregar un producto que no es de calidad. Esta será siempre
la razón por la cual la automatización de las pruebas es necesaria, además de aportar una ventaja
importante al proyecto.
Las herramientas de prueba son uno de los primeros software a realizar, aunque en la actualidad
los entornos de programación la traen incorporadas o bien se pueden utilizar herramientas
externas al entorno que acompañan y permiten diseñar los casos de prueba ofreciendo una serie
de facilidades y uso que pueden reducir significativamente el tiempo y costo de esta etapa.
Es claro que la ―Verificación y Validación‖ de un sistema crítico tiene mucho en común con la
validación de cualquier otro tipo de sistema, así los V&V deben demostrar que el sistema satisface
su especificación y cumplen con los requerimientos del cliente. No obstante en los sistemas
críticos se requiere un alto nivel de confiabilidad, para lo cual son necesarias pruebas y análisis
adicionales. Existen dos razones que justifican por qué esto es tan necesario:
Garantía de la seguridad
Es claro que la gestión de la calidad provee una comprobación independiente de los procesos de
desarrollo de software, para ello se debe dar importancia a la actividad de pruebas, conociendo
las características del sistema, los distintos tipos de prueba que puede realizar y las herramientas
a utilizar para garantizar que el sistema cumple con los requerimientos, es fiable y posee la debida
seguridad.
La gestión de calidad es ejecutada por personas que ejerzan autoridad en el tema, pudiendo
rechazar un producto si no cumple con las normas establecidas en las políticas de calidad de la
organización o del cliente.
D Gestión total de la
e calidad
s
a
r Aseguramiento de
r la calidad
o
l Inspección Control
l de la calidad
o
Tiempo
En la Unidad 4, vimos la calidad del producto de software y su relación estrecha con el proceso de
desarrollo, esto es simple de entender ya que el producto final del proceso es el software, por lo
tanto no se puede hablar de calidad de uno de los dos, sino de ambos.
Se pueden definir dos estándares como parte del proceso de garantía de calidad:
Los estándares de producto se aplican a las salidas del proceso software y los estándares de
proceso incluyen actividades de proceso específicas que garantizan que se sigan los estándares
de producto.
La evolución del concepto de calidad en los procesos ha definido las ventajas que trae
implementar calidad en los procesos, estas ventajas son las que justifican el porqué una
organización debe ocuparse de la calidad, porque:
Es un aspecto competitivo.
Es esencial para sobrevivir.
Es indispensable para el mercado internacional.
Es el equilibrio entre costo – efectividad.
Retiene clientes e incrementa beneficios.
Es el sello de clase en el mundo de los negocios.
La primer relación entre el cliente y el proveedor de un producto fue una tarea artesanal, ya que la
persona se comunicaba directamente con el artesano, le solicitaba lo que quería y éste lo hacía a
medida, como por ejemplo el sastre que hacía los trajes a medida del cliente, esta comunicación
tenía como resultado alta calidad y elevado costo.
Surge así, la primera definición de Calidad: ―conformidad con las especificaciones‖. El concepto
adoptado fue, a una mayor conformidad acompañará un menor número de reprocesos y
desechos, con lo que el costo del producto se reducirá, lo que puede traducirse en mayor margen
comercial o en un precio menor, con el consiguiente aumento de competitividad.
Son los técnicos quienes definen la calidad del producto y del proceso.
Cuando el Dr. W. Edwards Deming fue invitado al Japón en el verano de 1950, se encontró con un
país totalmente destruido por la guerra.
Hizo al Japón dos recomendaciones, y les aseguró que si las aplicaban, lograrían transformarse
en un país próspero y con mejor calidad de vida. En cinco años el Japón se había transformado
en el primer fabricante de barcos del mundo; para la década de los '70 había alcanzado su
liderazgo en productos electrónicos. Con disciplina y método, el Japón había hecho realidad lo
que el Dr. Deming pronosticó en 1950.
CADENA DE DEMING
En primer lugar, Deming les aseguró que:
al lograr la calidad,
sus costos se reducirían al producir con menos errores, con menos tardanzas, con menos
obstáculos,
reduciendo el reprocesamiento y
haciendo mejor uso de los insumos.
Ello los llevaría a aumentar su productividad, hacerse más competitivos, lo que les permitía
ganar el mercado con productos de mejor calidad a menor precio.
Esta recomendación ha llegado a ser conocida como la “Reacción en Cadena de Deming”, que
se puede representar con la siguiente gráfica:
Deming deja un postulado de 14 puntos que se deben seguir para conseguir la calidad en la
producción y fabricación de productos.
Otro aporte importante realizado por Deming, es el ―Círculo de Deming‖, el cual plantea 4 acciones
indispensables:
Plan – planificación.
Do – hacer
Check – verificar
Act - actuar
Este círculo nos lleva a la ―Mejora continua‖ de los procesos, ya que una vez diseñados y puestos
en práctica, se verifican y se realizan los cambios que sean necesarios para lograr una mejora en
nuevos proyectos. Estas mejoras se realizan continuamente, es por ello que recibe dicho nombre.
Calidad total
La Calidad Total incluye todas las funciones y fases que intervienen en la vida de un producto o
servicio, no sólo al producto en sí, sino a la gestión de la organización en su globalidad, poniendo
en juego todos los recursos necesarios para la prevención de los errores, involucrando a todo el
personal, sistematizando las múltiples relaciones proveedor-cliente (interno y externo), mejorando
el clima y las relaciones, reduciendo las pérdidas provocadas por una gestión insuficiente.
Es importante destacar dos conceptos fundamentales:
Tiene en cuenta la totalidad de las necesidades de los clientes con el objetivo final de la
satisfacción de sus necesidades y expectativas.
ISO 9000
ISO 9000 es una Norma con un conjunto de estándares internacionales que se pueden utilizar en
el desarrollo de un sistema de gestión de calidad de todas las industrias, pudiéndose aplicar tanto
a las organizaciones manufactureras como a las de servicios.
ISO 9001 es el estándar más general y se aplica al proceso de calidad de diseño, desarrollo y
mantenimiento de productos. Hay documentos que interpretan ISO 9001 y ayudan a entender
mejor la norma, como lo es ISO 9000-3, para el desarrollo de software.
ISO 9001 no es un estándar específico para el desarrollo de software, pero sus principios son
generales por lo que pueden aplicarse a este, ya que describe aspectos del proceso de calidad,
estándares y procedimientos, todo debe documentarse en un manual de calidad organizacional.
En cuanto a los procesos, incluido el de desarrollo de software, debe incluir una descripción de la
documentación requerida, entre ellos el documento de Especificación de Requerimientos de
Software, ERS, donde se demuestra que el proceso definido se ha seguido por cada
requerimiento.
No es un texto de ley.
No es un texto que imponga los medios aplicables para el cumplimiento de sus requisitos.
No es un texto que exija la implantación de un sistema documental complejo y difícil de
gestionar.
Objeto
No se puede mejorar lo que no se puede medir, por lo que es necesario identificar los indicadores
del proceso que luego de hacer un análisis de los resultados se puede establecer una mejora.
En 1986 el SEI, a requerimiento del Gobierno Federal de los Estados Unidos de América (en
particular del Departamento de Defensa, DoD), desarrolló una primera definición del modelo de
madurez de procesos en el desarrollo de software, que se publicó en septiembre de 1987. Este
trabajo evolucionó al modelo CMM o SW-CMM (CMM for Software), cuya última versión (v1.1) se
publicó en febrero de 1993.
Hasta ahora hemos visto el concepto de proceso, pero ¿qué es un proceso repetible?
‗Proceso‘ vs. ‗Proceso Definido, Documentado y Repetible‘ – parecen similares pero son
dos cosas TOTALMENTE DIFERENTES.
o Consistencia a través y entre proyectos reduce en el entrenamiento y los startups
o Aumenta el entendimiento del proyecto debido a la consistencia.
Work products y documentos
Planificación y reportes
Métodos y técnicas
Reduce la transición de recursos entre los proyectos
Reducen el costo/esfuerzo a causa de componentes reusables
―alimentan‖ a la organización con sus propias ―best practices‖
Una premisa de la mejora continua de proceso fue planteada por Sheri Clark, BIT y es la
siguiente:
“Si Ud. puede garantizar la calidad del proceso usado por una organización, entonces Ud. puede
garantizar la calidad de los productos y servicios generados por ese proceso”.
La mejora continua debe ser una decisión institucional, debe adquirirse una cultura dentro de ella
que lleve a trabajar bajo procesos y los cumpla como una forma natural del desempeño de sus
actividades.
La mejora en los proceso trae a la organización ventajas, es por ello que todos quieren hacer su
mejor trabajo y producir un trabajo de alta calidad, pero no todos tiene la infraestructura, el
entrenamiento y el soporte para lograrlo. Para consistentemente producir un producto o servicio
de alta calidad todos deben ser capaces en hacer su trabajo.
¿Qué características tienen estas organizaciones donde no todos son capaces de hacer un
buen trabajo?
El líder del proyecto hace malas planificaciones y toma decisiones erradas respecto a los
recursos.
No se cumplen las fechas de entrega de los proyectos
Los requerimientos presentan cambios constantes.
Los errores no se corrigen antes de que estén en producción
No aprenden de los errores pasados.
Implementar el modelo CMM no ha sido una tarea fácil de lograr ni de bajo costo para las
organizaciones, es por ello que no todas podían optar por este modelo a la hora de decidir trabajar
en calidad. Una de la alternativa viable y más usada es ISO 9001.
Las Áreas de Proceso se agrupan en cinco "niveles de madurez", una organización que tenga
institucionalizadas todas las prácticas incluidas en un nivel y sus inferiores, se considera que ha
alcanzado ese nivel de madurez.
Claves del nivel 1: selección, desvinculación, desarrollo y/o retención del personal se realiza
fuera de los cánones de CMM.
Claves del nivel 2: se concentra en cuestiones gerenciales y es la base para encarar las
cuestiones técnicas en el Nivel 3.
3. Definido. Además de una buena gestión de proyectos, a este nivel las organizaciones
disponen de correctos procedimientos de coordinación entre grupos, formación del
personal, técnicas de ingeniería más detallada y un nivel más avanzado de métricas en los
procesos. Se implementan técnicas de revisión por pares (peer reviews).
Claves del nivel 3: se construye sobre las bases de gestión de proyectos del nivel anterior. El
proceso de software está dominado por los aspectos de diseño, es una actividad de conocimiento
intensiva.
Claves del nivel 4: la capacidad del proceso es predecible, las metas son cuantitativas midiendo
calidad y productividad, se reúnen y analizan datos disponibles, se predicen cambios en procesos
y calidad de productos, los proyectos estrechan la variación del proceso.
Claves del nivel 5: la capacidad del proceso es la ―Mejora continua‖, identifica fortalezas y
debilidades, realiza análisis de costo beneficio de nuevas tecnologías, innovaciones que explotan
las mejores prácticas de la ingeniería de software, análisis de defectos y evaluación del proceso
de software.
Es así como el modelo CMM establece una medida del progreso, que está dada conforme al
avance en niveles de madurez. Cada nivel a su vez cuenta con un número de áreas de proceso
que deben lograrse. El alcanzar estas áreas o estadios se detecta mediante la satisfacción o
insatisfacción de varias metas claras y cuantificables. A excepción del primer nivel (este nivel no
se certifica porque todas las organizaciones están en nivel 1), cada uno de los restantes Niveles
de Madurez está compuesto por un cierto número de Áreas Claves de Proceso, conocidas a
través de la documentación del CMM por su sigla inglesa: KPA.
Una vez lograda la conciencia de calidad e internalizado en el uso de los procesos en las
actividades de trabajo cotidianos es más fácil avanzar, ya que se cuenta con una base más sólida
de conocimientos sobre calidad y el trabajo bajo procesos.
Todos los cambios culturales que implica avanzar de un nivel a otro con mucho trabajo y tiempo
para lograrlo.
No es necesario certificar los niveles en forma secuencial, algunas organizaciones optan por
certificar el Nivel 2, luego el 3 y saltar al 5.
La certificación es la forma de ―Validación‖ que una entidad externa realiza a la organización para
aprobar o desaprobar estándares de calidad utilizados en los procesos.
Algunas empresas emprenden el camino hacia una certificación con la convicción de que la
mejora de sus procesos y metodologías de trabajo son una vía más directa y segura hacia el éxito
comercial futuro. Estas empresas sitúan al concepto de calidad en el centro de su estrategia,
están dispuestas a invertir recursos no sólo para alcanzar la certificación sino también para
sostener y optimizar el modelo de calidad en el largo plazo.
Ambas perspectivas son válidas y pueden servir a los fines de la compañía, aunque es preferible
el primer enfoque, ya que es el que sostiene con más solidez el concepto y fin de la calidad.
Las empresas desarrolladoras de software tienen una tendencia natural hacia la formalización de
sus procesos; esto se puede atribuir en parte al grado de profesionalización de sus directivos y en
parte por la afinidad con el uso de metodologías. No obstante, es común encontrar pequeñas
empresas del sector software que cuentan con sólidos procesos, muchas veces documentados y
soportados por herramientas informáticas, que no cuentan con validaciones externas de calidad.
Una decisión que la empresa de software debe adoptar es qué modelo de calidad es el que mejor
se adapta a sus necesidades. Si bien los dos modelos ISO y CMM son estándares de calidad, ISO
es una norma certificable enfocada en los procesos internos y externos, mientras que CMM es un
modelo de madurez específicamente enfocado en los procesos de desarrollo de software.
Ambos modelos pueden ser complementarios e igualmente válidos a nivel nacional e
internacional, aunque para la mayoría de las empresas del sector, CMM es la opción más
ajustada. Para algunas empresas de servicios de desarrollo, como por ejemplo las fábricas de
software, el modelo ISO podría ser el más adecuado en tanto sean más importantes sus procesos
de relación con el cliente y de flujo interno de requerimientos, que la construcción del software en
sí mismo.
- Definir los procesos de software. Tiene como propósito desarrollar y mantener un conjunto de
activos que mejoran el desempeño de posproyectos y proveen una base para la mejora a largo
plazo.
- Una gestión integrada de software. Tiene como propósito integrar las actividades de la Ingeniería
de software y la gestión en un proceso de desarrollo del software adaptado del proceso estándar.
- Aplicar una Ingeniería de producto. Tiene como propósito ejecutar consistentemente un proceso
de Ingeniería bien definido que integre todas las actividades de la ingeniería de software para
producir un producto de calidad.
- Establecer una coordinación intergrupal. Tiene como propósito establecer un medio para que el
grupo participe activamente con otros ingenieros tratando de lograr mejores condiciones de
satisfacción efectiva y eficiente de las necesidades o requerimientos del cliente.
- Realizar una revisión por pares. Tiene como propósito eliminar tempranamente los posibles
defectos del software y del proceso.
Críticas a CMM
Frecuentemente se crítica al modelo CMM por no ser más específico en la definición de los
procesos, ya que para guiar a las organizaciones a definir y mejorar sus procesos indica qué
actividades han de realizar, pero nada sobre cómo hacerlo. Esto es así tanto en lo referente a la
ingeniería como a las herramientas o técnicas de gestión, aunque presenta una excepción en las
revisiones por pares (peer reviews).
Del mismo modo, aunque insiste continuamente en la necesidad de las métricas, no da ninguna
guía concreta del tipo de métricas que son aceptables para una correcta práctica profesional,
dejando a criterio de la organización la definición de la métrica que puede considerar como
correctas.
Los técnicos se quejan a menudo de su burocracia, de la enorme carga de "papeleo" que impone
el modelo, viéndolo más como un mecanismo de control por la dirección que una herramienta que
les ayude en su trabajo, convirtiéndose en algo imposible de poder mantener actualizado.
El CMMI sustituye el software y a los sistemas de ingeniería basados en CMM e integra a otros
modelos de ingeniería, caracterizándose por tener dos instancias, en etapas y continuo, además
de tratar algunas de las debilidades del CMM de software.
El modelo CMMI intenta ser un marco de trabajo para la mejora del proceso que sea aplicable en
un amplio abanico de compañías de diversas disciplinas y cuerpos de conocimiento. Su versión en
etapas es compatible con el CMM de software, permitiendo un desarrollo del sistema de la
organización, la gestión de los procesos a valorar y su asignación a un nivel de madurez entre 1 y
5, tal como el que plantea CMM. Su versión continua permite una clasificación más detallada y
considera 24 áreas de procesos.
Se exponen dos representaciones, atendiendo a las características más importantes de mejora del
proceso:
Por herencia del CMM tradicional
Representantes de cada tipo de representación fueron parte del grupo de desarrollo de
CMMI
Seleccionar un sólo enfoque se convertía en algo demasiado difícil
Se mantuvo un compromiso inicial de tener diferentes representaciones con un modelo
equivalente en contenidos
Cuando se planifica un proyecto se tiene que obtener estimaciones del costo y esfuerzo humano
requerido por medio de las mediciones de software que se utilizan para recolectar los datos
cualitativos y cuantitativos acerca del software y sus procesos para aumentar su calidad.
No se puede mejorar algo no se puede medir, por lo que la medición tiene que ser establecida en
función de proveer valores que permitan estimar desvío y logros alcanzados.
Las mediciones de software pueden utilizarse fundamentalmente para cubrir dos objetivos:
Hacer predicciones generales acerca del sistema, midiendo las características de los
componentes del sistema y reuniéndolas, pudiendo derivar en una estimación general de
alguno de los atributos del sistema, como puede el número de fallos detectados.
Identificar componentes anómalos, implica encontrar componentes que tengan un
comportamiento fuera de lo normal, normalmente se establece como prioridad la medición
de los componentes de mayor complejidad y criticidad, que se supone pueden tener mayor
cantidad de errores en un funcionamiento.
Si bien todos los estándares de calidad definen la necesidad de hacer mediciones, sólo indican
qué se deben realizar, pero no establecen cómo, cuáles ni dónde aplicarlas, esta es una tarea que
se determina en los lineamientos estratégicos de la organización, quien con la ayuda de los
ingenieros y líderes de proyecto tienen en cuenta las metas de la organización y los objetivos de
las áreas para establecerlas.
Una métrica de software es cualquier tipo de medida relacionada con un sistema, proceso o
documentación de software.
Las mediciones del mundo físico pueden englobarse en dos categorías: medidas directas y
medidas indirectas.
Medidas Directas. En el proceso de ingeniería se encuentran los valores que identifican el costo,
y el esfuerzo aplicado, las líneas de código producidas, velocidad de ejecución, el tamaño de
memoria y los defectos observados en un determinado período de tiempo.
Medidas Indirectas. Se encuentra la funcionalidad, calidad, complejidad, eficiencia, fiabilidad,
facilidad de mantenimiento, entre otras.
Otra clasificación válida para aplicar a las métricas es que son de ―Control‖ o de ―Predicción‖, ya
que ambas pueden influir en la toma de decisiones de la gestión.
Las métricas de control por lo general están asociadas con los procesos, mientras que las
métricas de predicción se refieren a la complejidad ciclomática de un módulo, la longitud media de
los indicadores de un programa y el número de atributos y operaciones asociadas a un
componente o a un objeto de diseño.
El proceso de medición del software dentro de un proceso de control de calidad está basado en
los indicadores a tener en cuenta y los componentes a evaluar. Cada uno de los componentes del
sistema se analiza por separado comparando los valores de las métricas entre sí y si se cuenta
con datos históricos, también se comparan con estos.
La retroalimentación puede ser positiva o negativa, en el caso de valores fuera del rango
establecido como normal se utilizan para centrar el esfuerzo de mejora para alcanzar la garantía
de calidad en los componentes que tienen los problemas o fallos.
1. Seleccionar las medidas a realizar, formulando las preguntas que la medición intenta
responder y definir cuáles son las mediciones necesarias para contestar dichas preguntas.
2. Seleccionar los componentes a evaluar, no todos los componentes tienen las mismas
métricas o todas las métricas, por lo que no es conveniente realizar un estándar de medición
para todos los componentes, sino sólo las métricas que sean significativas para cada uno de
ellos.
3. Medir las características de los componentes, una vez seleccionados los componentes
se calculan los valores de las métricas, normalmente se realiza en cuanto a diseño, código y
pruebas, utilizando una herramienta que permita la recogida de datos. Herramientas CASE.
4. Identificar las mediciones anómalas, si se cuenta con una base de datos de mediciones,
se podrá comparar cada resultado obtenido con alguno anterior, observando los valores más
altos y los más bajos de cada métrica, siendo lo óptimo que los valores permanezcan dentro
del rango establecido como de calidad y lo más cercano al límite que le corresponda de
acuerdo a lo que se está midiendo. No todos los indicadores deben aproximarse al máximo
valor o al mínimo, por ejemplo, si medimos el incremento de ventas, se tendrá que aproximar
al máximo valor y si lo supera es una buena noticia, mientras que si medimos la cantidad de
Las métricas del software también se pueden clasificar teniendo en cuenta lo que miden y cómo lo
miden, citemos algunas de ellas:
Métricas de calidad: indican cómo se ajusta el software a los requisitos implícitos y explícitos del
cliente. Es decir cómo se va a medir para que el sistema se adapte a los requisitos que pide el
cliente.
Métricas orientadas a las personas. Informan sobre la forma que la gente desarrolla el software
y sobre todo el punto de vista humano de la efectividad de las herramientas y métodos. Son las
medidas que se hacen en el proceso de desarrollo en cada etapa, como puede ser horas hombres
estimadas y reales de cada integrante del grupo de desarrollo, en función de la criticidad, tamaño
y complejidad de un componente, un requerimiento o un caso de uso.
Métricas orientas al tamaño. Sirven para determinar el tiempo necesario para terminar el
software y cuantas personas se van a necesitar. Son medidas directas al software y el proceso por
lo que, si una organización de software mantiene registros sencillos, se puede crear una tabla de
datos orientados al tamaño que sirve de referencia futura.
Métricas orientadas a la función. Son medidas indirectas del software y del proceso, se centran
en la funcionalidad o utilidad del programa.
Las métricas orientadas a la función fueron el principio propuestas por Albercht, quien sugirió un
acercamiento a la medida de la productividad denominado método del punto de función. Los
puntos de función que obtienen utilizando una función empírica basando en medidas cuantitativas
del dominio de información del software y valoraciones subjetivos de la complejidad del software.
Control de la calidad
La gestión de la calidad del software permite señalar si éste tiene escaso número de defectos y se
alcanza los estándares requeridos de mantenibilidad, fiabilidad y portabilidad. Las actividades de
la gestión de la calidad comprenden la planificación de la calidad y el control de la misma,
comprobando que el software está de acuerdo a los estándares definidos.
Las mejora prácticas están definidas por los estándares de calidad, por lo que es importante
conocerlos e implementar al menos uno de ellos, el que mejor se acomode a la organización. Una
vez implementado hay que respetar los procesos definidos y tomarlo como una cultura de trabajo.
Las mediciones de software se utilizan para obtener datos cuantitativos acerca de las cualidades
medibles del software, sus procesos, sus componentes y del producto final.
La calidad de productos software está dada por los procesos que lo desarrollan y no por el
producto mismo. Es el proceso el que ofrece al producto la calidad puesta en la ejecución del
proceso, pero para el cliente y los usuarios finales, la calidad es una característica propia del
producto.
Ante esta visión, la satisfacción del cliente se logra no sólo con un producto que satisfaga las
necesidades del cliente, sino que se deben realizar a conciencia los procesos.
De este modo, la calidad permite definir acciones planeadas y sistemáticas que requieren ser
seguidas para lograr conformidades finales en los procesos de desarrollo, ahorro de costos y
satisfacción de los clientes.