Una de las prácticas de la ingeniería de software que es actualmente utilizada por grandes y medianas empresas desarrolladoras de software es la administración de la configuración de software. Esta disciplina sirve para identificar, organizar y controlar las modificaciones que se hacen al software. Dicha disciplina nace en los años 80s, surgida debido a los problemas que se presentaron en la industria de desarrollo de software de los años 70s, algunos de estos problemas fueron: la mala planeación en proyectos de software, el manejo inapropiado de la integridad tanto en códigos fuente como en documentación referente a los productos de software.
La administración de la configuración de software que en lo sucesivo denominaré ACS, es un proceso que debe ser realizado durante las etapas involucradas en el desarrollo o en el mantenimiento del producto de software.
La ACS puede ser descrita como un acuerdo bien definido de las partes de software así como los procedimientos y herramientas a ser usados para construir el producto o sistema de estas partes. Esta también debe de incluir procedimientos para reconstruir varias versiones y liberaciones para el mercado o para los clientes.
Es recomendable cuando se utilice la ACS se tome como referencia algún estándar por ejemplo usar el estándar IEEE 828-1983[1], el cual define un estándar para la elaboración de un plan de ACS.
La ACS esta formada de cuatro partes [3]:
• Identificación de la configuración.
• Control de la configuración.
• Estado de la configuración.
• Auditoria en la configuración.
A continuación se explica brevemente cada una de las partes.
Identificación de la configuración. Primeramente se deben de identificar los elementos que se deseen administrar en la configuración. Estos elementos pueden ser: archivos que contengan código fuente, documentos referentes a la especificación de requerimientos de software, diagramas, modelos, documentos de pruebas al software, o bien cualquier otro elemento que se desee controlar y administrar durante el desarrollo o mantenimiento del producto de software.
Control de la configuración. Es el proceso de controlar y evaluar los cambios propuestos al elemento de software, una vez propuesto un cambio debe ser analizado, evaluado, revisado, y aprobado por un grupo de personas autorizado, por lo regular este grupo esta formado por miembros del equipo de desarrollo y el usuario.
Estado de la configuración. En esta parte se rastrean los elementos que han sido identificados previamente para su control y administración. También en esta parte se generan reportes con la información de estos elementos. Por ejemplo se puede conocer cuantos cambios han sido propuestos en un periodo de tiempo, o los cambios que se han hecho a algún elemento que se encuentre bajo la configuración de software.
Auditoria de la configuración. En esta parte se asegura que las políticas de desarrollo, procesos y procedimientos escritos en el plan de ACS sean consistentemente seguidos. También se verifica que todos los productos de software estén correctamente producidos, identificados, descritos, y que todas las solicitudes de cambios estén resueltas.
Los problemas más frustrantes de software son a menudo causados por una pobre ACS. Los problemas son frustrantes porque toman tiempo reparar y a menudo pasan en el peor momento y son totalmente innecesarios[4].
Si a usted le es familiar alguna de las siguientes situaciones que aparecen a continuación le recomiendo comenzar a usar ACS[2]:
• Un defecto en el software que fue reparado seis meses atrás y misteriosamente a aparecido de nuevo
• Un programador que ha gastado doce horas haciendo un cambio a una versión incorrecta de un software
• Dos programadores trabajando sobre un proyecto rescribiendo código uno del otro.
• No se encuentra la ultima versión de un código fuente.
• No hay manera de evaluar el impacto en los requerimientos de los cambios propuestos
Aunque las grandes y medianas empresas usen ACS también las micro y pequeñas empresas pueden obtener beneficios del uso de ACS. No es necesario contar con algún software costoso que lleve el control de la ACS para una micro o pequeña empresa.
Un ejemplo sencillo de usar ACS en una micro o pequeña empresa sería en primer lugar definir el rol de la persona que administrará y llevará acabo el plan de ACS. Después se puede definir el rol de las personas que formarán parte del control de la configuración, la persona encargada de verificar que se este llevando a acabo de manera correcta el ACS, finalmente la persona que se encargará de rastrear y generar reportes de los elementos identificados. Cabe señalar que si el numero de miembros de la empresa es reducido una persona puede desempeñar varios roles, una vez definidos los roles se procede a elaborar el plan de ACS.
Dentro del plan de ACS se puede definir el nombre de algún recurso compartido en el cual los miembros del equipo envíen códigos fuente, documentación, pruebas, o algún otro elemento a manejar en la configuración. También puede estar definido un estándar para nombres de archivos que represente a alguno de los elementos antes mencionados, se puede definir como llevar a cabo el control de versiones sobre los elementos. Finalmente se puede definir un formato de solicitud de cambios en el cual incluya nombre de proyecto, persona que solicita el cambio, cambio solicitado, analizador del cambio, componentes que afecta, prioridad del cambio, etc.
No importa el tamaño de la empresa el usar ACS es una práctica recomendada que le traerá beneficios.
Referencias.
[1] Sommerville, Ian. Software Engineering 6th Edition. Addison Wesley, 2001.
[2] Leishman, Theron R. Cook, David A. CrossTalk, Vol. 16. No. 1, 2003
[3] Bersoff, Edward. Elements of Software Configuration Management. IEEE Transactions on Software Engineering, Volume SE-10 Number 1, pages 79-87, 1984.
[4] Humphrey, Watts. Managing the Software Process. Adisson Wesley, 1989.