Autor: Leyvis Salinas Alguacil / leyvis.salinas@mtz.jovenclub.cu
El modelo de fábrica de software basado en componentes es uno organizativo que tiene como objetivo contribuir a elevar la productividad de los procesos y el empleo adecuado de los recursos humanos de una organización productiva de software. Para la elaboración del modelo se tuvieron en cuenta los problemas en el flujo de trabajo actual, las deficiencias referentes a la distribución de roles, la inadecuada gestión del tiempo y la escasa utilización de componentes de software. Dicho modelo cuenta con una estructura formada por cinco entidades o componentes organizacionales las cuales son: la entidad Inteligencia, Gerencia de proyecto, Personas, Repositorio y Proceso. En cada una de ellas se organiza el trabajo a desarrollar a partir de procesos y actividades establecidas lo que ajusta el modelo a su objetivo fundamental para obtener productos con la calidad requerida. Estos procesos están concebidos para que sigan una línea de desarrollo que permita el buen funcionamiento entre las entidades. Es muy importante en este ámbito la comunicación, interacción e integración entre los componentes organizacionales ya que el trabajo de cada uno depende de los demás. Este modelo permite ser adaptado a cualquier organización o empresa incluyendo sus particularidades además de responsabilizar e identificar a los recursos humanos con su trabajo.
Introducción
Para los años noventa las empresas productoras de software se dan a la tarea de buscar ideas para lograr un cambio en las formas, condiciones y medios de producir software. En esos momentos existían producciones artesanales, por lo que los ingenieros de ese entonces se proponen evolucionar de una producción artesanal a una producción industrial, además de buscar modelos de desarrollo de software que les permitieran en poco tiempo producir software de calidad.
En Cuba existen centros en los que el desarrollo de software cuenta con un alto porcentaje de artesanía. La tendencia actual de las empresas de software cubanas es transitar de una empresa común hacia las fábricas de software en donde las mejoras del producto sean el verdadero negocio.
El modelo propuesto permite la reutilización de código, la utilización de componentes existentes y la posibilidad de integrar diferentes proyectos con características semejantes para alcanzar un desarrollo de software más ágil y eficiente a la medida del cliente. El mismo se obtuvo a partir de las deficiencias encontradas en el departamento de Señales Digitales del centro de desarrollo de software “Geoinformática y Señales Digitales” en la Universidad de las Ciencias Informáticas. En el centro existen un número de proyectos productivos y no se cuenta con el personal necesario para lograr satisfacer las necesidades de los mismos, esto provoca que no se aprovechen al máximo los recursos humanos disponibles en el departamento, y que por ende no se logre una especialización de dicho personal en un rol específico dentro del proyecto productivo en que se encuentre, lo que conlleva a un atraso en la entrega y culminación del producto final.
Materiales y métodos (Desarrollo)
Modelo de Fábrica de Software Basado en Componentes
El Modelo de Fábrica de software Basado en Componentes se decidió estructurar con 5 entidades o componentes organizacionales debido a:
– La producción basada en componentes donde exista un área de producción de software que incluya y fomente la producción de componentes.
– La entidad Repositorio de Componentes que permita la gestión óptima de los componentes de código y los activos del proceso.
– El uso de estándares de calidad que eleven el proceso de desarrollo de software y la producción de componentes.
– La definición de reglas que permitan la coordinación de cada una de las personas que intervienen en el proceso y el ensamblaje de cada uno de los componentes.
– La definición de la entidad Proceso y los elementos indispensables en un proceso.
– La entidad Persona deberá incluir la generalización y especialización de equipos y personas.
– La creación de bases tecnológicas que se enfoquen en mantener una ardua y efectiva vigilancia tecnológica que provea información exacta para cada producto.
Estos componentes organizacionales son los que posibilitan un mejor desempeño en el momento de poner en práctica la propuesta de dicho modelo:
Entidad Inteligencia o Componente Inteligencia: Esta engloba las áreas que se encuentran fuera de la producción de software pero que a su vez son una parte importante de ella incluyendo todo lo referente a la gestión de la información y el conocimiento, la gestión documental, la superación y capacitación de los RR.HH.
Entidad Gerencia de Proyecto o Componente Gerencia de Proyecto: Esta se encarga de la selección de los RRHH involucrados en los proyectos, de realizar una previa organización del proceso a ejecutar, así como la gestión de la calidad de la fábrica. Funciona a través de procesos claves como la iniciación del proyecto, la planificación del proyecto, la ejecución, seguimiento y control del proyecto.
Entidad Personas o Componente Personas: Se organizará por equipos de trabajo, con el modelo PSP y TSP (Personal Software Process / Team Software Process). Está estructurada por los procesos de selección del personal, capacitación del personal y la gestión del personal.
Entidad Repositorio o Componente Repositorio: En él se almacenarán los componentes de software, pruebas de estos componentes y sus documentos respectivos para el correcto uso de los mismos. Además de incluir un repositorio de documentos. En él se realizan procesos como la gestión del componente de software y de la documentación.
Entidad Proceso o Componente Proceso: Esta entidad abarcará todo lo referente al proceso de desarrollo de software, control del proyecto, la gestión de personal y el cierre del proyecto.
Entidad Inteligencia: La entidad o componente organizacional Inteligencia realiza a través de la unidad gestión de información la gestión del conocimiento para saber las potencialidades y los problemas de la fábrica, su responsabilidad es crear un ambiente en el que el conocimiento y la información disponibles en una organización sean accesibles y puedan ser usados para estimular la innovación y mejorar las decisiones, debe manejar la información interna, o sea, la gestión organizacional. (Trujillo, 2007)
Ésta se retroalimenta de factores internos del departamento como el Jefe del departamento y los demás grupos de apoyo al funcionamiento organizacional del mismo. En dicha entidad el jefe de departamento será el factor esencial para guiar y orientar el trabajo, el mismo se encargará de captar el personal que será parte del departamento y asignarlo a la entidad Persona donde se organizarán y capacitarán con ayuda de la planificación realizada en la parte de docencia de esta entidad.
La entidad inteligencia funciona internamente de la siguiente forma: el jefe de departamento dirige el sistema de inteligencia empresarial dentro del departamento, los elementos que la constituyen se agrupan por equipos los cuales son: la Docencia, la Investigación y el Marketing.
Investigación: Su trabajo se basa en recopilar información sobre las convocatorias a eventos científicos, cursos o postgrados próximos, vinculados a temas afines al departamento, también se mantiene un registro sobre la participación de profesores en dichos eventos además de maestrías o doctorados a los que estén vinculados, cuenta con la recopilación de bibliografía necesaria que puedan utilizar los profesores y estudiantes en general acerca de un tema determinado y de índole científica.
Docencia: Área encargada de atender y controlar todos los temas de formación de pregrado de los estudiantes, con énfasis en la formación en el ciclo profesional, cuyas asignaturas se imparten desde la producción. Esta área atiende además las asignaturas optativas que se ofertan como parte de la formación de los estudiantes y es el encargado de monitorear los trabajos de fin de carrera de todos los estudiantes de 5to año.
Marketing: Es el proceso de planificación y ejecución de la concepción de la comunicación y de la distribución, así como de la fijación de precios, ideas, productos y servicios, para intercambios que satisfagan a los individuos y a los objetivos de la organización. Modo de concebir y ejecutar relaciones de intercambio, con la finalidad de que sea satisfactoria a las partes que intervienen y a la sociedad, mediante el desarrollo, valoración, distribución y promoción, por una de las partes, de los bienes, servicios o ideas que la otra parte necesite.
La entidad Inteligencia enfrenta tareas tan importantes como la prospectiva, la inteligencia competitiva y empresarial, para finalmente garantizar la viabilidad de una decisión. (Trujillo, 2007).
Entidad Gerencia de Proyecto
Esta entidad o componente organizacional se encarga de realizar una previa organización del proyecto a llevar a cabo. Para su desarrollo se tiene en cuenta: todo el proceso de gestión de la integración de proyecto, la definición y del alcance del proyecto, los plazos, costos, la calidad, la gestión de los recursos humanos, la gestión de riesgos y la mitigación de los mismos, las compras así como los suministradores y controladores. En este componente se seleccionan los recursos humanos que van a trabajar como tal en el proyecto o línea de producto a desarrollar.
La gerencia de proyecto tiene como misión establecer los objetivos del proyecto, definir la metodología a seguir en su realización, planificar y programar tareas y recursos, corregir desviaciones y comunicar progresos y resultados. Esta empieza antes de que comience el proyecto, continúa a medida que éste se desarrolla y concluye cuando finaliza el proyecto (proceso de cierre), es decir, lleva un proceso de seguimiento y control como se muestra en la figura 6, el mismo es llevado por el gerente funcional que en este caso es el jefe de línea de desarrollo o el líder de proyecto productivo.
Para llevar a cabo la correcta planificación del proyecto se debe tener en cuenta:
– Especificar sus objetivos (definidos en el alcance).
– Estructurarlo en actividades y tareas.
– Establecer la secuencia, prioridades y dependencia (relaciones de precedencia) entre tareas).
– Estimar la duración de dichas tareas.
– Definir los recursos disponibles.
– Definir el presupuesto admisible.
Entidad Personas
La entidad personas permitirá la organización de los recursos humanos disponibles en la fábrica, los que serán asignados por el jefe de departamento hacia esta entidad. La misma se encargará del proceso de selección del personal, donde se evaluarán las competencias laborales y se asignarán los roles y responsabilidades de acuerdo a los resultados obtenidos. Se realizará capacitación para los que no cuenten con un buen desempeño, además de impartir cursos para superar a los mismos, de acuerdo a la planificación que se realice en la parte de docencia en la entidad Inteligencia.
Las personas se agruparán por equipos de trabajos, organizados de acuerdo al rol que desempeñen en el proyecto y de acuerdo con un jefe de equipo que controlará y distribuirá cada una de las tareas a realizar teniendo en cuenta las necesidades de la fábrica.
Los roles a tener en cuenta para formar los grupos de trabajo son:
Analistas: Son los encargados de realizar la ingeniería de software del proyecto a desarrollar en la fábrica.
Arquitectos de software: Este equipo es el encargado de seleccionar la arquitectura y todo lo relacionado con el desarrollo del proyecto, realizar una ardua vigilancia tecnológica, mantenerse actualizado con las herramientas, tecnologías y tendencias que se renuevan en el día a día para poder seleccionar la tecnología más adecuada en el momento de creación de un producto, lo cual brindará el soporte tecnológico a la Entidad Proceso dentro del proyecto que se vaya a desarrollar.
Desarrolladores: El equipo de desarrolladores se encargará de todo lo que tiene que ver con la parte de la programación del sistema.
Base de Datos: Este equipo se encarga de la parte de la construcción y elaboración de la base de datos que el proyecto pueda necesitar para el almacenamiento de la información.
Calidad: El Grupo de Calidad se encarga de:
– Mantener un sistema de revisiones internas que garanticen elevar los niveles de calidad del proceso de desarrollo de software.
– Guiar el aseguramiento de la calidad del proceso de desarrollo de software en los proyectos.
– Fomentar el desarrollo investigativo y ejecutar actividades de formación y superación de cada una de las temáticas y área de trabajo del grupo de calidad.
– Ejecutar pruebas de liberación, aceptación y pilotos al 100% de los entregables de todos los proyectos.
Planificación y control: El trabajo que se realiza consiste en actualizar y llevar un seguimiento y control de los recursos humanos del departamento y de todo el trabajo que se realiza al lado del líder de proyecto, su trabajo se centrará en todo lo relacionado con las estadísticas de estas actividades.
Cada uno de los equipos contará con un jefe los cuales rendirán cuenta a los líderes de proyectos (los que se encuentran en la entidad gerencia de proyectos) los cuales a su vez al Jefe de Departamento o de fábrica (se encuentran en la entidad Inteligencia). Cada jefe se encargará de realizar encuentros semanales o quincenales del equipo al que dirige. Agrupar a las personas por equipos de trabajo posibilita la comunicación y el intercambio de ideas en el trabajo desarrollado.
PSP y TSP: (Personal Software Process / Team Software Process) es un modelo que es utilizado para aumentar la calidad de los productos de software a través de un equipo disciplinado y auto-dirigido. A diferencia de otros modelos, el PSP se implementa a nivel personal, para después integrase las actividades en el equipo de trabajo TSP, que a su vez se puede integrar al modelo de calidad de la organización como CMMI.
Entidad Repositorio
La entidad Repositorio se encargará de almacenar los componentes de software que se generen en la fábrica, así como cuenta con un repositorio de información donde se almacenan documentos útiles para todo el proceso que se maneja en dicha fábrica. Para el funcionamiento de dicho repositorio se debe tener en cuenta características como la búsqueda y la recuperación de estos componentes de software, además de funciones claves para un repositorio de este tipo:
Identificación y descripción: para describir un archivo se debe tener en cuenta un conjunto de características tales como: nombre, dominio, palabra clave, y otros que identificar y diferenciarlos de los otros archivos que comprenden el mismo repositorio. Para cada uno de los componentes almacenados debe ser posible determinar dentro de una forma homogénea (repositorio) los archivos del mismo tipo, los cuales deben tener el mismo conjunto de características.
Insertar componente: un repositorio debe permitir a los usuarios autorizados insertar nuevos archivos, o incluso nuevas versiones de los mismos. La inserción significa añadir al repositorio un archivo que contenga la descripción y el componente asociado.
Exploración del catálogo: a los usuarios del repositorio se le debe permitir explorar el catálogo de los archivos para que puedan comprender y analizar las características de los archivos disponibles.
Búsqueda en los textos: un repositorio debe permitir que sus usuarios hagan búsquedas más específicas de la descripción de los archivos. Como resultados se obtienen uno o más archivos que cumplen las condiciones deseadas, al observar los resultados, se puede decidir por un mayor detalle o generalización de los criterios anteriores.
Recuperación: después de la identificación del archivo que se desea, un repositorio debe permitir a los usuarios recuperar los archivos para que más adelante se puedan utilizar en un proceso de reutilización. (Legrá, 2011)
Entidad Proceso
Esta entidad comprende todo el desarrollo del proceso de software que se realiza en la fábrica, para llevar a cabo todo este desarrollo el proceso es guiado por el estándar de calidad CMMI.
El desarrollo del proceso comprende:
Requerimientos: Abarca todos los requerimientos necesarios para que el proyecto funcione, dígase tiempo, costo, organización de las personas, soporte, entre otras. En éste se define todo el proceso de desarrollo de software, se identifican los riesgos del proceso de desarrollo (esto también se realiza en la entidad gerencia de proyecto).
Metodología: Para el buen desarrollo del proceso y luego de determinado todos los requerimientos necesarios para llevar a cabo el proyecto, se deberá tener en cuenta una metodología que guíe el proceso de desarrollo de software. Esta metodología se escoge de acuerdo el proyecto que se vaya a desarrollar.
Flujo de trabajo: En el flujo de trabajo se generarán todas las actividades y tareas a solucionar, las mimas son asignadas al equipo de desarrollo de la fábrica.
Desarrollo de Software: Abarcará todo el proceso de desarrollo de software, la utilización de componentes reutilizables y todo lo referente con la elaboración del software. Se lleva además, el control del proyecto que se realiza para obtener un producto con la calidad requerida (cierre del proyecto).
Para llevar a cabo el proceso se debe tener en cuenta todo lo antes organizado en la entidad Gerencia de Proyecto, para luego pasar a llegar a tener un acuerdo de la tarea a realizar con el cliente, el equipo confecciona el Plan del estudio de la factibilidad de realizar el proyecto. El líder de proyecto selecciona el grupo que va a dirigir la confección de la aplicación, personal ubicado en la entidad Personas.
El resultado de la unión de las actividades antes expuestas da paso a la creación y culminación de un producto con calidad y eficiencia de acuerdo a la utilización de personal y tiempo requerido.
Resultados/Discusión
Estructura oficial del modelo propuesto
Como se mencionó anteriormente estas entidades tienen una estrecha comunicación e integración entre ellas lo que permite un mejor funcionamiento y cooperación de los miembros de la fábrica. El flujo de trabajo entre dichas entidades se explica a continuación para su mejor comprensión.
Desde la entidad Inteligencia se fortalece el funcionamiento del trabajo a realizar en el departamento por los jefes del mismo, además de asignar por parte de éste los recursos humanos a la entidad Persona. Los directores ejecutivos (jefe de departamento) y gerentes funcionales (jefes de proyectos) ubicados en la entidad Gerencia de Proyecto se encargarán de realizar una previa organización del trabajo a desarrollar y la selección del personal a trabajar en cada proyecto, los cuales se organizarán en la entidad Personas, los líderes de proyecto a su vez se encargan de controlar todo el proceso de desarrollo de software que se ejecuta en la entidad Proceso, así como de brindar un seguimiento y control al desarrollo de software.
En la entidad Persona el personal competente se organiza por equipos de trabajo, éstos ejecutan todo el trabajo que se desarrolla en la entidad Proceso. Ésta para su funcionamiento necesitará de los componentes de software ubicados en la entidad Repositorio, así como de la documentación necesaria que brinda la misma, en ella también será almacenado todo el código y el producto cuando esté terminado por los desarrolladores.
En la figura 1 se muestra como queda la propuesta de diseño de la arquitectura del Modelo de Fábrica de Software Basado en Componentes.
Conclusiones
Se llevó a cabo el análisis de los Modelos de Fábrica de Software existentes en el mundo para tener en cuenta elementos esenciales para un mejor funcionamiento de la fábrica donde se vaya a aplicar la propuesta. Se realiza la explicación de la estructura organizacional basada en componentes, estructura a tener en cuenta para la elaboración del nuevo modelo de fábrica de software.
Se logra realizar además la propuesta del Modelo de Fábrica de Software Basado en Componentes, al valorar las opiniones y necesidades de las directivas de los proyectos y el jefe de departamento de señales digitales, por lo que como resultado se cumplió el objetivo principal pues con la elaboración del modelo se logra racionalizar los recursos humanos del departamento y elevar la productividad de sus procesos.
Finalmente se logró realizar la validación de la propuesta de la investigación, mediante la técnica Delphi. Se obtuvo como resultado un buen nivel de aceptación de la propuesta de la investigación, por parte de los expertos, se logró el objetivo propuesto y se contribuyó con la organización del trabajo y la distribución racional de los recursos humanos en el departamento.
Referencias Bibliográficas
Brualla, Cecilia Rigoni. CMMI: Mejora del proceso en fábricas de software. España: s.n.
ESPAÑOLA, REAL ACADEMIA. 2010. DICCIONARIO DE LA LENGUA ESPAÑOLA. [En línea] 2010. http://www.rae.es/RAE/Noticias.nsf/Home?ReadForm.
Legrá, J. L. 2011. Repositorio de Componentes. Habana: s.n., 2011.
Li, Ch., Li, H. y Li, M. 2001. Software Factory Model Based on ISO 9000 e CMM for Chinese Small Organization. Hong Kong: Second Asia-Pacific Conference on Quality Software (APAQS’01), 2001.
Marante Valdivia, M. 2008. Geothesis. [En línea] 04 de diciembre de 2008. http://www.geothesis.com/index.php?option=com_content&view=article&id=586:evaluacirica-sobre-modelos-de-factor-de-software&catid=21:artulos&Itemid=100.