Administración de Cambios y Configuración del Software

Moving to English this page is a hard work for me. It will be done, but, in the meantime, use Google for a basic tranlation.

CASE y SCM
Plex: Cómo manejar la configuración y versionamiento en una herramienta 4GL.
Heinrich Informatk: CMT, una herramienta SCM para ISeries construída con Plex.

Un poco de historia sobre CVS y la administración de cambios, a propósito de Subversion for OS/400, de SoftLanding.

Blogs sobre SCM/CM
Brad Appleton
Frank Schophuizen
Robert Cowham

La administración de cambios y la configuración del Software son parte de esas disciplinas a las que algunos desarrolladores en sus inicios adhieren a regañadientes, y a veces sólo forzados por una política corporativa.
Pero cuando un proyecto pasa de ser un ensayo, las reglas y restricciones propias de la administración de cambios y la configuración de la aplicación pasan a ser imprescindibles.
Por qué destacar estos conceptos aparte de los dedicados a calidad en general? Es que se podría decir que tener una política y un procedimiento que proteja y sostenga el código de las aplicaciones en funcionamiento en la empresa, es lo mínimo necesario para avanzar consistentemente en la salida del caos a la productividad. Más aún, en general, las herramientas dedicadas a administración de cambios y control de versión, suelen tener como herramienta acompañante, una orientada al ordenamiento de la documentación que acompaña al proyecto y a cada pieza de código, en general asociada a un sistema de seguimiento de defectos, y registro de mejoras pendientes. Estas son algunas de las actividades que atraviesan todas las etapas del ciclo de vida del software, cualquiera que sea la metodología adoptada.
Aparte debemos decir que CM y SCM son sólo una parte de los esfuerzos requeridos para la mejora de los procesos de negocios, imprescindibles hoy para cualquier emprendimiento que pretenda sobrevivir. Estas iniciativas deberían estar sustentadas en una comprehensión global y una actividad unificada de la empresa en pos de la calidad. Evolucionamos hacia un ámbito donde las certificaciones son crecientemente requeridas, donde será difícil competir por contratos sin una certificación ISO, y más aún, no podrás sostener tu empresa sin una sólida organización. CMM, TQM, ISO, son acrónimos que deberán ser conocidos,y empleados. Forbes dedica un artículo a la tendencia de Estados Unidos al Outsourcing, donde America Latina prácticamente no aparece, (excepto Uruguay y Mexico), en un mapa de quienes pueden obtener contratos de compañias en este proceso. Por supuesto, existen otras razones que explican esto, pero la consistencia es la primera. Un artículo de nuestro colega en la comunidad de Plex, Lou Kurrelmeyer, publicado en Iseries Network, sirve en sí como argumento.

Este es el escenario, donde se desarrolla el drama...

Cómo se hace para mantener una aplicación compleja que evoluciona en el tiempo? ¿Qué pasa cuando varias personas intervienen, o peor aún, cuando los participantes cambian, y pertenecen a distintas especialidades?. Después de seis meses, sin normas claras, comienza a devenir el caos...
Este es el campo de la administración de cambios:

Las herramientas 4GL (los generadores en general), vs el código en producción

Las herramientas de cuarta generación, como parte de sus características de integración y automatización, permiten, en muchos casos, adoptar una de dos vías de adopción de políticas de administración de la configuración: o intercalan otras herramientas en su ciclo de desarrollo, o manejan internamente una política integrada de control de la configuración. Sea cual fuera la forma en que lo resuelven, una de las grandes ventajas de las herramientas basadas en modelo, u otras variantes de generadores, es la de posibilitar la organización más o menos flexibles de un flujo disciplinado del trabajo de construcción del software.
Existen diferencias importantes entre arquitecturas basadas en lenguajes que requieren trabajo intensivo en el código, donde la aplicación se construye directamente escribiendo programas, y estas herramientas, donde el código fuente es una resultante de las definiciones producidas a un nivel superior.
Fundamentalmente, la diferencia se encuentra en dónde está el acento en la construcción de las aplicaciones. Mientras que un proyecto construído en Java, Visual C++, u otros del mismo tipo, la información está en el proyecto y el conjunto de archivos fuente que se compilan, en una herramienta 4GL, la información en general está en el metamodelo, y el código es una resultante. El código fuente sólo es importante para la generación en curso, y para la generación de un release consolidado, que pasa a producción. El resto, es volátil, y varía al ritmo de los cambios en las definiciones del nivel superior. Es en ese nivel donde debe concentrarse el esfuerzo del control de cambios. Digamos que en general, en este caso el mayor problema que se debe atender, es la creación de puntos de corte, Releases, que sirvan para manejar la relación entre el modelo en desarrollo, en contínuo cambio y reelaboración, y el código "congelado" de una versión en producción. Más abajo se detalla el alcance del control de cambios y configuración en Plex, y cómo se encara el manejo del código fuente en su caso.
Sin embargo, la posibilidad de mantener un corte más fino de releases casi diarios del conjunto de una aplicación de tipo "tradicional", se desdibuja a poco que la miremos en detalle. No hay duda de que, aunque pueda delimitar porción por porción qué compone un corte, esto igual no asegura que ese conjunto no guarda conflictos entre objetos y acciones, si acaso tuviera que volver atrás a un nivel determinado. Más aún, con absoluta certeza, el metamodelo será más compacto y cohesionado si tuviera que volver atrás.

Excelente Acercamiento a CM y SCM en estos sitios de discusión
Crosssroads El mayor foro sobre Administración de Cambios, en manos de sus protagonistas y sus teóricos. El sitio donde puede encontrar las herramientas (propietarias y de uso público, su evaluación, y la discusión de sus usuarios
CMWiki Una Wiki sobre administración de cambios, soportado por Brad Appleton y otros, con información conceptual en progreso.
CMBok En particular, y debido al trabajo colaborativo de Appleton, Kershaw, Thomas, Freeman, Steeman, Roy y Wessel, un conjunto ordenado de conceptos y prácticas usualmente aceptadas del manejo de la Administración de Configuración
SCM Patterns for Agility El trabajo de Brad Appleton y Steve Berczuk estudiando los patrones de Administración de la configuración del Software. Es especialmente útil la carta de referencia rápida descargable como PDF.
RoundTables Un foro de alto nivel sobre el trabajo en SCM y Calidad en general, que puede aportarle mucho.
CM Today AccuRev sostiene un sitio destinado a actuar como comunidad independiente, con un foro activo y sustancioso.
Brad Appleton No solo CMBok, mencionado arriba, sino otros trabajos directos pueden encontrarse aquí. En particular, The ACME project, centrado en CM, y el importante conjunto de papeles recolectados en sus propios links.
BOBEV Consulting El sitio de Bob Ventimiglia dedicado a SCM.
Dave Eaton Preguntas y Respuestas, Bibliografía, Enlaces enfocados en SCM. Recolector de la información sobre Configuración de FAQs, muy completa, y con "preguntas frecuentes" certeras.
El resultado puede consultarse en faqs.org
Consultora Kantelinen Esta consultora finlandesa ofrece un buen repositorio de recursos, y una lista extensa de Herramientas dedicadas al manejo de Cambios y Configuración, comerciales o de dominio público.
Un Blog en progreso Un trabajo en progreso de Eric Sink, discutiendo detalladamente los elementos del control de código fuente, escrito por un especialista, dedicado a la construcción de herramientas para SCM.
Revision Control Systems Sitio dedicado a los sistemas de control de cambios de uso libre, tales como CVS y Subversion, con indicaciones básicas de los aspectos que debe cubrir cada sistema. Puede usarse como un tutorial de control de cambios.
Un Manual de CM Si usted usa Subversion, o si usted necesita aprender cómo manejar sus cambios, éste sitio le ofrece un manual completo que lo orientará y le ayudará a resolver su problema
Shlomi Fish Shlomi Fish mantiene un sitio dedicado a Administración de cambios y configuración, básicamente bajo CVS y Subversión. Desarrolló allí un cuadro comparativo entre distintos productos, en una lista de funciones que son requeridas típicamente. La lista está abierta; basta escribir a Shlomi para sugerir la inclusión de otro producto. Actualizado a fines de 2005.
CM e ISO 9001 Methods & Tools publicó en 1999 un artículo de Robert Bamford, William J. Deibler II, de Software Systems Quality Consulting (SSQC) relacionando CM con la norma ISO 9001, y resumiendo la visión del IEEE, ISO, y SEI sobre CM. Especialmente valioso por establecer la articulación del manejo de configuración con la mejora de la calidad.
The Buildmeister Una buena fuente de información sobre Clearcase y Ant, en primer lugar. Información sobre SCM y Build Management, tanto sobre el proceso como sobre buenas prácticas. Descarga de scripts y otros recursos en SCM, particularmente para Clearcase.
UCM Central Unified Configuration Management, portal australiano sobre manejo de configuración, con buenas referencias, algunas de ellas redundantes con las señaladas aquí. Especialmente importante es la presentación de plantillas de trabajo sobre manejo de cambios y seguimiento de defectos, así como el tutorial sobre el objetivo de la administración de cambios, y las definiciones y relaciones con CMM y otros estándares (IEEE).

Herramientas Comerciales u Open Source dedicadas a CM y SCM
Ambiente ISERIES (AS/400)
Implementer Administración de cambios en el AS/400. Un excelente producto para la administración y control de los cambios en el ISeries, que avanzó desde su compra por MKS, hacia un producto SCM. Permite administrar flexiblemente el ambiente de desarrollo, y establecer reglas y perfiles para el trabajo de desarrollo. La progresiva apertura del ISeries hacia un ambiente multiplataforma, también hizo impacto en Implementer, que ahora tiene extensiones hacia el mundo de los sitemas operativos conectables por el IFS (Sistema Integrado de Archivos). Una gran cantidad de Productos que operan en el ISeries pueden ser administrados directamente a través suyo. Existen integraciones con Advantage 2E, el antecedente de desarrollo CASE de Advantage Plex, pero por causa de las fusiones empresarias, CA y MKS han quedado atrapados en una curiosa situació: Computer Associates distribuye la versión de Implementer para 2E que fabrica MKS, pero compiten en Administración de Cambios entre Source Integrity y CC Harvest.
Aldon/CMS Administración de cambios en el AS/400. Uno de los contendientes históricos en la administración de cambios en Iseries
Turnover Administración de cambios en el AS/400. Control de cambios, versionamiento, seguimiento de defectos y proyecto, extensible a un ambiente multiplataforma con Subversion. Integrable con WebSphere. Se trata de una competitiva solución para el ISeries, que tiene el interés adicional para la comunidad de Plex, de que tiene una salida de Administración de Cambios del código para AS400 de Advantage Plex.
Ambiente Multiplataforma
Source Integrity + Implementer CM y SCM sobre Windows, Unix, Linux y AS/400. Es posible integrar una gran cantidad de herramientas de terceros. Está pensada para servir a terceros. Integrado al seguimiento de defectos (defect tracking), permite un alto grado de flexibilidad y control. Es posible definir distintos esquemas de control y funciones, y agregar lógica a los procesos de administración de cada objeto. Si bien estas son propiedades de cada uno de los dos integrantes del sistema, y, como en otros muchos casos, se está progresando en la integración de un híbrido, el estado actual produce un producto de alta calidad y valor visto desde la perspectiva de un sitio que monitoree sus sitemas desde el ISeries, ya que el ISeries puede convertirse en administrador de las operaciones, y generador de los paquetes completos de cada Release.
Aldon Affinity Administración de Cambios, distribución multiplataforma, con soporte para ISeries, Windows, Unix, servidores Web. Con soporte para Websphere, y en camino de integrarse a Eclipse. Un aspecto valioso es su agrupabilidad por Grupo/Aplicación/Release, para el manejo de objetos bajo control, y el seguimiento de su localización donde estuviera. Esto da una flexibilidad muy grande para el manejo de versionamiento y distribuciones
ClearCase El núcleo de Administración de Cambios del conjunto de Herramientas de Rational para el proceso de desarrollo de Software. Soporte para herramientas de terceros que se ejecuten sobre ambientes Windows, Linux, Unix, pero no sobre ISeries. ClearCase está básicamente integrada al esquema de RUP, de las herramientas de Rational. The Buildmester ofrece una buena descripción de aspectos importantes del producto.
Subversion + Turnover CM y SCM Open Source en entorno multiplataforma. Softlanding reescribió Subversion para ISeries, para dar soporte al Sistema Integrado de Archivos. Aí, es posible usar el sistema Open Source sobre las carpetas compartidas de ISeries, permitiendo poner bajo un mismo sistema el conjunto de código de los proyectos. La versión libre no se integra con los objetos nativos de ISeries, pero existe un módulo con costo adicional para esta integración con el paquete Turnover: TurnOverSVN. Esta versión es soportada por Softlanding y por Tigris.
CollabNet Administración de Configuración, control de cambios, seguimiento de defectos, seguimiento de proyecto y documentación, administración de la comunicación en el equipo, todo ello pensado como un ambiente de trabajo colaborativo remoto.
CollabNet + Subversion CollabNet es soporte de la versión Open Source Subversion, e incluye el administrador de cambios dentro de su paquete corporativo, permitiendo el seguimiento vía Internet de la estructura del repositorio de archivos bajo control. Una versión stand-alone se distribuye gratuitamente. CollabNet ofrece referencia a un buen conjunto de herramientas y recursos Open Source en SCM.
Concurrent Version System (CVS) Sistema de control de cambios Open Source, sostenido desde hace casi veinte años por una comunidad de usuarios amplia. Multiplataforma, con soporte para Windows, Unix, Linux. Existen otras extensiones, (Subversion, Scarab) que mejoran o complementan a CVS. Subversion es un proyecto de mejora, y Scarab está orientado al seguimiento del proyecto (Seguimiento de defectos y mejoras, ordenamiento de la documentación). Otra herramienta vinculada es TKCVS, que ofrece una interface gráfica al CSV.
Permite el trabajo de equipos con resolución de conflictos, y conserva en un repositorio único la historia de versiones de un fuente. Permite mantener versiones, ejecutar bifurcaciones de versiones (branching), resolver conflictos entre múltiples usuarios, y probablemente, con un poco de manejo de scripts, etapas o secuencias en el manejo de cambio (staging). Como en otros casos, puede migrar desde otras herramientas sus proyectos a CVS (Desde RCS, SCCS, PVCS). Más información sobre CSV puede encontrarse en Loria. También The Buildmester ofrece una descripción de aspectos fundamentales de CVS
Perforce Producto propietario de SCM (Software Configuration Management), incluyendo seguimiento de defectos, basado en una arquitectura cliente/servidor, capaz de instalarse sobre plataformas Unix, Linux, y Windows (el módulo servidor, y sobre Windows, Mac, Linux, Unix, los clientes.). El manejo de código fuente se hace en las estaciones clientes, en un ambiente seguro para el cliente (cuyos cambios se hacen en la estación local) y para el servidor, que mantiene el repositorio (depot) bajo su control. Los clientes pueden ser locales o remotos, via TCP/IP. El repositorio no requiere un sistema de archivos determinado, por lo que no depende del que use la plataforma en que esté apoyado. Ofrece en línea la documentación del producto, y un estudio comparativo con otros productos (ClearCase , CVS, y Visual Source Safe). Robert Cowham mantiene un blog con indicaciones sobre Perforce
Ambiente Windows
Visual Source Safe CM SCM sobre ambientes Windows. Usada en algunos casos, criticada por limitada en sus servicios desde distintos frentes. Mencionemos en todo caso la evaluación de Uttam Narsu para el Giga Information Group: "Visual Source Safe is Suitable Only for Simple Version Control". Puede obtener el papel desde el comentario de MKS. Una recopilación de comentarios adversos la da Shlomi Fish.
Información General
Una lista de Productos En SoftwareEngineering.info. Una lista extensa de productos comerciales o de código abierto y uso público, como parte de más información sobre SCM. Como allí se dice, "If software engineering is the house, configuration management (CM) is the foundation".
Laatuk: Otra lista Una lista con probables desactualizaciones creada por Laatuk, consultora finlandesa. Se puede rastrear allí más material, sobre seguimiento de defectos, trabajo colaborativo, etc.