Software Factory y Mantenimiento

Si hacemos con Google una búsqueda para Software Factory encontraremos que en Sudamérica existen muchas empresas que así se denominan; sin embargo, casi ninguna explica cual es su proceso de fabricación del software, y este me parece que es esencial conocerlo de antemano a objeto de calibrar la calidad del software que puedan generar. Las referencias de clientes y proyectos anteriores son una condición necesaria pero no suficiente, por la simple razón que Ud. no sabe si la misma gente que trabajó en los proyectos que le presentan como exitosos trabajarán también para Ud. Por tanto lo que una fábrica de programas tienen para garantizar su calidad y capacidad es la disposición a  firmar contratos con SLA (Service Level Agreement).

 

 

Modelos de Operación de la Fábrica de Programas
La Fábrica de Software refiere al proceso de producir programas con rapidez y calidad a través de procesos conocidos, repetibles y gestionables, y principalmente, mejorables de modo continuo, no sólo por la incorporación de técnicas y herramientas en el desarrollo del software, sino también porque se mantiene constantemente el foco sobre el  proceso de producción y de cada uno de los pasos que esto acarrea. El término fábrica indica un compromiso a largo plazo, esfuerzos integrados – por encima de proyectos individuales- para mejorar las operaciones relativas al software.[1]

La Fábrica de Software es un tipo de tecnología generativa cuyo fin es reducir la complejidad del software y, a la vez, simplificar su producción. Esto se logra mediante: 

  1. La abstracción de los aspectos complicados del software.
  2. La producción en serie del software.

 Es decir, la Fábrica de Software es la transición desde la producción artesanal, artística, de software a una producción industrial semi-automatizada, que asegura la calidad y el mejoramiento continuo usando especificaciones formales, metodologías, estándares, y teniendo una mirada permanente en la evolución de la tecnología. [2] A continuación, incluyo un modelo, a modo de ejemplo, de una Fábrica de Software estructurada en base a un Modelo de Madurez de tres niveles. 

Nivel de Madurez

  • Indicadores de la Producción de Software

Repetible           

  • Complejidad de la Producción de Software: La Fábrica de Software aplicaun enfoque de producción sistemático y repetible.
  • Conciencia sobre el Proceso: Prácticas individuales y de uso común –diseñadas- son aplicadas, esto es que la arquitectura (operacional) de la Fábrica de Software no está totalmente definida.

Gestionada 

  • Complejidad de la Producción de Software: Se aplica a la Fábrica de Software un enfoque reflexivo y adaptativo, la fábrica cuenta con una arquitectura establecida y administrada, se opera con un enfoque de líneas de producción.
  • Conciencia sobre el Proceso: Un arquitecto desarrolla la visión de largo plazo de los metamodelos y de las herramientas a utilizar, la producción del software es predictiva, porque está bajo control. 

Optimizado

  • Una realimentación –feedback- continua contribuye al mejoramiento de la capacidad de producción y del ROI.

La Conexión con el Mantenimiento
En toda organización grande que cuente con componentes de software como ERP, CRM, SCM, etc. existen al menos dos necesidades que implican desarrollo de software:

  1. La incorporación de nuevas funciones..
  2. El mantenimiento del software en uso.

 

Estas necesidades generan requerimientos que podrán tratarse formal o sistémicamente:

 

·        Tratamiento Formal, existe un área en la Gerencia de Informática que se hace cargo del mantenimiento de software, incluyendo los nuevos desarrollos. Esta área puede contar con programadores o bien los contrata por demanda. El proceso consiste en generar especificaciones funcionales –descripción del requerimiento para los programadores-, asignación del encargo a un programador, desarrollo y testing. Todo este ciclo puede estar gestionado con o sin herramientas computacionales de apoyo.

 

·        Tratamiento Sistémico, la gerencia de Informática cuenta con un grupo para gestionar el mantenimiento y de un contrato con una Fábrica de Software. En este caso internamente se hace la generación de las especificaciones funcionales y la verificación final del software recepcionado. El proceso de desarrollo completo es responsabilidad de la Fábrica de Software.

 

Cada una de estas formas de operar tiene sus ventajas y desventajas, pero si observamos la tendencia global en la gestión empresarial de externalizar los procesos que no generan valor, es evidente que la opción de la Fábrica de Software gana terreno, a mi juicio, por dos razones: permite disponer de recursos de programación permanentemente (mientras dure el contrato), y transforma el proceso de desarrollo de software en uno controlado.

Los Costos y Beneficios
En cuanto a costos para poder evaluar adecuadamente la oferta de una fábrica de Software, es necesario establecer algún modelo de costos pues siempre se terminará comparando con los costos de desarrollo propios. De modo que un modelo simple puede ser el siguiente:

 

Formula Costo Hora Mantenimiento

 

 

 

Donde.

CHM, costo total de la Hora Hombre de mantenimiento / desarrollo de software.

CHP, costo de una hora de programador.

CHfS, costo de la fracción de hora de supervisor requerida por hora de programador.

CHfC, costo de la fracción de hora de consultor requerida por hora de programador.

CHfT, costo de la fracción de hora de tester requerida por hora de consultor.

 

En este modelo el aspecto fundamental es que se asume que por cada hora de trabajo del programador se necesitan fracciones de horas de un supervisor, de un consultor y de un tester (persona técnica que hace el control de calidad).

 En cuanto a los beneficios, es necesario evaluarlos cuantitativamente, y para este efecto es necesario establecer contractualemente un SLA (Service Level Agreement) [3], esto es un acuerdo de niveles de servicios pre-definidos. Según el IEEE los SLA se deben establer foco es áreas específicas como ser: calidad del producto, calidad del proceso, calidad de la post-procucción, etc.[4].

Conviene tener en consideración que entre un contrato tradicional de servicios y un SLA existe una diferencia sutil pero sustnacial, los SLA son también servicios, pero son distintos contractualmente, ya que un SLA define más detalladamente el requerimiento, en términos de incentivos y penalidades que se obtienen por el cumplimiento o incumplimiento de niveles de servicios establecidos cuantitativamente, por ejemplo: tiempos de respuesta, tamaño del backlog, etc.. 

Referencias

[1] http://cuartageneracion.blogspot.com/2006/04/cuando-software-factory-no-es-una.html

[2] http://www.softmetaware.com/oopsla2004/langlois.pdf

[3] http://en.wikipedia.org/wiki/Service_Level_Agreement

[4] http://findarticles.com/p/articles/mi_m0SVI/is_3_11/ai_n13821992/print

 

 

 

2 comentarios en «Software Factory y Mantenimiento»

  1. Interesante el articulo, diganme donde puedo consultar mas de este estilo
    Desde ya muchas gracias

Responder a Adrian RoizmanCancelar respuesta