BLUE PAPER - 'CALIDAD Y MODELOS DE PRODUCCIÓN DE SOFTWARE'
DATOS PUBLICACIÓN 27-Enero-2008. Original para Mundo Azul
ABSTRACT
En este artículo se inicia la investigación de diversos aspectos que afectan a la calidad del software comparada con la calidad obtenible en otro tipo de productos, bienes y servicios. En concreto, el artículo estudia el proceso productivo del software en sus diversas variantes y proporciona algunas directrices y guías acerca de la calidad que cabe esperar según el tipo de proceso productivo que sea de aplicación.
ARTÍCULO
Calidad y modelos de producción de software

Una reflexión acerca de la calidad del software

Es llamativo cómo en la industria del software se adoptan como válidos unos estándares de calidad diferentes, inferiores, al de la mayoría de las industrias; cómo se admite que el software puede fallar y cómo las empresas dedican fuertes partidas presupuestarias, simplemente, a un mantenimiento correctivo de su software y sus sistemas.

Reflexionando sobre esta cuestión, nos hemos preguntado si existen factores estructurales, más allá de una presunta falta de madurez aún de esta industria, que justifiquen unos comparativamente pobres resultados en cuanto a fiabilidad.

Y en esa reflexión, hemos creído encontrar un factor estructural que tal vez no justifica plenamente, pero al menos sí puede explicar parcialmente, el porqué, en algunos casos, de esa calidad mediocre. Todo ello sin perjuicio de que puedan existir otros factores explicativos adicionales.

Ese factor estructural proviene de la propia cadena de valor y, sobre todo, del modelo de producción de la industria del software.

La esencia del problema
Podríamos resumir el hallazgo afirmando que la industria del software tiene un proceso productivo que se acerca más a un modelo de investigación y desarrollo, a un modelo muy personalizado, más que a un proceso de producción industrializado.

Entendemos que uno de los factores que motiva la alta calidad de productos de otros sectores radica en la adopción de unos procesos productivos muy definidos, maduros y estandarizados o, al menos, reglamentados. Este tipo de procesos productivos estandarizados permiten fácilmente la aplicación de rigurosos sistemas de control de calidad. Además, la propia madurez del proceso coadyuva en la consecución de una tasa de errores o puntos de no calidad muy baja.

Por el contrario, la industria del software aplica procesos productivos poco estandarizados, poco maduros, y más cercanos a la pura artesanía o a los procesos de innovación o de investigación y desarrollo.

Modelos de cadena de valor y procesos de producción

Para intentar profundizar en el problema, plantearemos, primeramente, un modelo genérico de cadena de valor y de producción del software que nos permita realizar alguna comparación con la cadena de valor y procesos productivos de otros sectores.

A continuación estudiaremos tres variantes de modelo de producción software, cada una con fuertes implicaciones en la calidad obtenida.

Un modelo general

En la siguiente figura, planteamos ese modelo general de cadena de valor y hacemos un zoom sobre el proceso productivo.

En la parte superior de la figura se muestra un modelo de cadena de valor muy sencillo y genérico. En ese modelo distinguimos cuatro eslabones.

La concepción de producto tiene que ver con la investigación de mercado, y la definición técnico comercial de los productos a generar por una empresa u organización. Este eslabón se enmarca en la conocida como política de producto en los tratados de marketing.

El eslabón de fabricación y distribución se centra en la producción en masa del producto y su distribución hasta el cliente o puntos de venta. Este eslabón tiene que ver con el mundo de las operaciones, fabricación y logística.

El eslabón de promoción contempla todas las actividades de publicidad y promoción y se encuadra, por tanto, de nuevo en el campo del marketing.

Finalmente la posventa incluye las actividades de relación con el cliente posterior a la venta del producto o servicio. Fundamentalmente hablamos de soporte técnico, mantenimiento correctivo, gestión de reclamaciones, etc.

Haciendo zoom sobre el eslabón de fabricación y distribución, tendremos una visión del proceso productivo del software que nos permitirá analizar sus particularidades.

En ese proceso productivo contemplamos cinco grandes subprocesos.

El subproceso de investigación y desarrollo se encarga del análisis y selección de tecnologías, de la definición técnica del producto, de la elaboración de prototipos y de la definición del proceso de fabricación o producción masivo del producto. Estaríamos hablando de actividades como la evaluación de tecnologías y arquitecturas, de la especificación de requisitos y, en general, del desarrollo y prueba del producto software, así como la definición de los procedimientos de instalación, configuración y explotación. En la industria del software, este eslabón es de una enorme importancia y consume una muy notable proporción de los recursos y esfuerzos.

El subproceso que hemos denominado producción es el encargado de la fabricación en masa y de forma ya estandarizada o, al menos, procedimentada, del producto que se definió en el subproceso de investigación y desarrollo. En el caso de la fabricación de software, y al contrario de lo que sucede en sectores industriales como, por ejemplo, el automovilístico, este proceso es relativamente simple. Se trata de realizar las copias necesarias del software, imprimir los manuales asociados, y del empaquetado ya sea para su distribución física o para distribución por medios electrónicos.

La distribución se encarga de hacer llegar el producto a los puntos de venta o, mejor, al propio cliente final. Si hablamos de copias físicas (CD-ROM, DVD, etc) más manuales en forma de libros, todo ello en una caja, estamos muy cerca de un proceso de distribución de productos como el de cualquier otro sector y es un subproceso relativamente complejo. Si hablamos de su distribución por medios electrónicos (típicamente mediante descarga desde un portal o mediante mecanismos de actualización automatizada como Windows Update) el proceso se simplifica bastante.

La instalación, eslabón casi ausente en la mayoría de procesos productivos de otros sectores, tiene su importancia en la industria del software. Se trata del subproceso por el que se instala el software en el ordenador u ordenadores de destino. Según el tipo de software, este subproceso puede ser trivial o, por el contrario, ser realmente complejo.

La configuración y parametrización es un subproceso, de nuevo, casi totalmente ausente en otros procesos productivos y se encarga del ajuste del producto software mediante la modificación de parámetros, y la ejecución de personalizaciones, que afinan la adecuación del producto a los gustos o necesidades del cliente.

El proceso productivo que acabamos de esbozar, se lleva a cabo con notables diferencias según el tipo de producto software de que estemos hablando. Y esas diferencias en la aplicación de ese proceso productivo general tienen importantes consecuencias en la calidad que podemos esperar de cada tipo de producto software.

Los productos cerrados

Consideremos, en primer lugar, lo que hemos denominado, de una forma algo arbitraria, productos cerrados.

Nos referimos con ese nombre a productos generados por una empresa de software para un mercado masivo, que se distribuyen, sin cambios, para todos los clientes, y que sólo realizan ligeras adaptaciones a los gustos del usuario o necesidades del cliente.

Hablaríamos de productos como sistemas operativos (Windows, Leopard, Linux, etc), paquetes ofimáticos (Microsoft Office, OpenOffice, etc) o soluciones software como contabilidad personal, álbum de fotos y un larguísimo etcétera.

En este tipo de productos, la empresa fabricante realiza un esfuerzo grande de desarrollo, sí, pero una sola vez. A partir de ahí cobran protagonismo los procesos de producción y distribución en masa. La instalación y configuración suelen ser muy limitadas y sencillas y son generalmente realizadas por el propio usuario del software.

Este tipo de ciclo productivo es muy similar al de productos industriales de todo tipo: automóviles, electrónica de consumo, material de oficina y casi cualquier otro producto industrial que se nos pueda venir a la mente.

Este proceso productivo está centrado, pues, en la producción y distribución.

Productos parametrizables. Software empresarial, ERP y CRM.

Otro tipo de productos son los que denominamos productos parametrizables. Se trata de productos que, aunque tienen una sólida base de software generado durante la fase de investigación y desarrollo, realmente se completan, se rematan, en la fase final, ya con el cliente. Existe una fuerte actividad de parametrización y configuración que adapta el software a las particularidades y necesidades del cliente final.

Es el caso típico de paquetes de software empresarial del tipo del ERP (Enterprise Resource Planning) o CRM (Customer Relationship Management). Exponentes de este tipo de productos serían las grandes ‘suites’ de SAP, Oracle, etc

En este caso, y a pesar del evidente esfuerzo previo de investigación y desarrollo del producto, y de la necesidad del resto de eslabones del ciclo productivo, lo que caracteriza a estos productos software es la fase de configuración y parametrización (lo que se suele denominar implantación, en estos entornos). El subproceso de parametrización suele requerir de la participación de consultoras especializadas y es un proceso largo y caro. El resultado final es un software que aunque proporciona una gran cantidad de funcionalidad, y aunque viene provisto de una serie de mejoras prácticas empresariales, está fuertemente personalizado para las necesidades del cliente.

Podemos afirmar que este proceso productivo está centrado en la configuración y parametrización.

Soluciones a medida

El último tipo de proceso productivo proviene de las soluciones o desarrollos a medida. Se trata de un escenario habitual en grandes empresas que encargan un software ajustado completamente a sus necesidades y deseos. Se trataría de la versión software del traje a medida. En estos casos, el software se realiza una sola vez para el cliente en cuestión. En muchas ocasiones, incluso, es el propio departamento de sistemas de información de la empresa el encargado del desarrollo.

En este caso, realmente, el proceso productivo se confunde, casi totalmente, con la actividad de investigación y desarrollo. El software se realiza una sola vez y, en ese sentido, es como si el prototipo generado durante la fase de investigación y desarrollo fuese, directamente, el producto final.

No existen, apenas, el proceso de producción y distribución, puesto que no se realiza producción en masa. La instalación es tan personalizada como el producto y la configuración y parametrización no suele ser muy notable ya que el propio producto software ya está fuertemente adaptado a las necesidades del cliente.

Estamos, por tanto, ante un proceso productivo centrado en la investigación y desarrollo.

Impacto del modelo de producción en la calidad

El proceso productivo adoptado tiene, en nuestra opinión, fuertes implicaciones en la calidad que podemos esperar del software.

En la medida que el proceso productivo incluya mayores dosis de personalización y particularización para un cliente, la calidad, a igualdad de otros factores, tenderá a degradarse. En la medida que nos acerquemos a un proceso industrializado y repetitivo, la calidad obtenida, a igualdad del resto de factores, tenderá a aumentar.

En el modelo de proceso productivo que hemos propuesto, dos son los subprocesos que aportan la especificidad y personalización. El primero es el proceso de investigación y desarrollo. El segundo es el de configuración y parametrización. Ambos son procesos no repetitivos y, por tanto, fuertemente expuestos a errores y fallos. Esa singularidad y exposición al error es menor en el caso de la configuración y parametrización ya que ésta se mueve en márgenes mucho más estrechos. La investigación y desarrollo, por el contrario, tiene abiertas todas las posibilidades de acierto, pero también de error.

Intentamos resumir esas conclusiones en el siguiente diagrama en el que situamos los tres tipos de productos / procesos productivos en un diagrama donde en abscisas colocamos la capacidad de personalización y, en ordenadas, la fragilidad (la exposición a errores) del software. En el diagrama se ve cómo la capacidad de personalización corre pareja con la fragilidad del software y cómo los productos cerrados son, o deberían ser, los más robustos, mientras los desarrollos a medida son los más sujetos a problemas de calidad.

Conclusiones

El proceso de producción de software puede proporcionarnos una explicación parcial acerca del porqué de los problemas de calidad que le aquejan.

En la medida que ese proceso productivo sea más repetitivo y procedimentado es de esperar un mayor nivel de calidad del software. Por el contrario, a medida que se aportan dosis de personalización y los procesos son más particularizados, crece la probabilidad de aparición de problemáticas de calidad.

En ese sentido, los productos cerrados deberían ofrecer una robustez más cercana a otros bienes de producción industrial, mientras que los desarrollos a medida parecen propensos a problemáticas de calidad. En un punto intermedio se sitúan los productos parametrizables.

LICENCIA
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.