Configuration Management (CM) es el proceso de identificar y definir los
elementos de configuración en un sistema, controlando la liberación y cambio
de estos elementos a lo largo del ciclo de vida del sistema, registrando e informando el estado de los elementos de configuración y solicitudes de cambio, y verificando la integridad y corrección de elementos de configuración. La gestión de la configuración se practica de una forma u otra como parte de cualquier proyecto de ingeniería de software donde varias personas u organizaciones tienen que coordinar sus actividades. Importancia La razón principal para implementar un sistema SCM es mantener los productos de software / entidades cambiantes e iterativas en un estado no degradante a lo largo del ciclo de vida del software. Este es un desafío que debe cumplirse para desarrollar y mantener productos de software de calidad. La calidad de los productos de software es fundamental para el nivel de calidad del sistema completo. SCM proporciona un punto común de integración para todas las actividades de planificación, supervisión e implementación de un proyecto de software o línea de productos. Beneficios • Proporciona una instantánea del software que cambia dinámicamente para ayudar:- Toma decisiones basadas en una vista instantánea - Determinar el estado en el módulo y los niveles del sistema - Tomar mejores decisiones sobre el futuro de un proyecto de software. • Realiza un seguimiento del desarrollo concurrente de módulos o componentes del sistema general para: - Evitar que diferentes desarrolladores hagan cambios en el mismo módulo al mismo tiempo - Permitir que el progreso general del sistema sea más rápido - Proporcionar visibilidad de todo el proyecto de software a todos los desarrolladores.• Organiza todo el código de desarrollo simultáneo y la documentación asociada a: - Ahorre tiempo total del proyecto - Enfoque cada fase del desarrollo del producto de software que se organizará y ejecutará en una manera documentada y prescrita.
Linea base de CS Denominaremos así a una configuración operativa del
sistema software, a partir de la cual se puede desarrollar un cambio. o La evolución del sistema puede verse como evolución de la línea base . Planificacion(|Plan)|linea base de plani- requisitos(manual de usuario)|LB req-diseño(diseño ) | diseño -codificacio(listado) -pruebas(espefici pruebas) | LB CS Mantenimiento
El proceso de identificación de la configuración es el siguiente: La tarea de
identificación empieza con la definición de los elementos de la configuración software representativos de los productos en cada línea base establecida. Se asignan identificadores apropiados a todos los programas, documentos y periféricos, Finalmente, la identificación debe facilitar el control de cambios, para acomodar actualizaciones y modificaciones. Obj Definir una estructura de documentación organizada de un modo inteligible, Proporcionar métodos para revisiones, Relacionar los cambios con “quién, qué, cuándo, porqué, cómo” para facilitar el control esquema por capas de los documentos a los que engloba la GCS: Circulos Sw ejecutable, (listado, datos d eprueba) (Docinte, prueba valida) doc diseño, (Manua usuario, doc mantenimient, doc planificacio, espefic reque Sw)
Control de Cambios es un mecanismo para la evaluación y aprobación de los
cambios hechos a elementos de la configuración software durante el ciclo de vida Tipos 1) Control individual, antes de aprobarse un nuevo elemento. 2) Control de Gestión (u organizado), conduce a la aprobación de un nuevo elemento. 3) Control formal, se realiza durante el mantenimiento. Variantes • Configuraciones alternativas o Un sistema software puede adoptar distintas formas (configuraciones) dependiendo del lugar donde se instale. Por ejemplo, dependiendo de la plataforma (máquina + S.O.) que la soporta, o de las funciones opcionales que haya de realizar o no. o Una variante es una versión de un componente (o de la configuración global) que evoluciona por separado. o Las variantes representan una variación espacial, mientras que las revisiones representan una variación temporal.
Control de versiones se refiere a la evolución de un único elemento, o de cada
elemento por separado si son varios. La evolución puede representarse gráficamente en forma de grafo, en el que los nodos son las versiones y los arcos corresponden a la creación de una nueva versión a partir de otra ya existente. Variantes Cuando hay variantes, es decir, cuando existen simultáneamente varias versiones del componente, el grafo de evolución ya no es una secuencia lineal, sino que adopta la forma de un árbol. Propagación de cambios Cuando se tienen variantes que se desarrollan en paralelo suele ser necesario aplicar un mismo cambio a varias variantes Fusión de variantes En determinados momentos puede dejar de ser necesario mantener una rama independiente. En este caso se puede fundir con otra (MERGE), y el árbol de evolución pasa a ser un grafo convencional. Técnicas de almacenamiento Deltas directos: Se almacena completa la primera versión, y luego los cambios mínimos necesarios para reconstruir cada nueva versión a partir de la anterior. Ventajas: Es sencillo de implementar y resulta bastante intuitivo. Inconvenientes: Es más costoso recuperar las últimas versiones (lo más frecuente) que las primeras (menos frecuente). • Deltas inversos (RCS): Se almacena completa la última versión del tronco y los cambios necesarios para reconstruir cada versión anterior a partir de la siguiente. Ventajas: Es menos costoso recuperar las últimas versiones que las primeras, pero sólo en el tronco o rama principal Inconvenientes: En las otras ramas es más costoso recuperar las últimas versiones que si se aplicaran sólo deltas directos. • Marcado selectivo (SCCS): Se almacena el texto refundido de todas las versiones como una secuencia lineal, marcando cada sección del conjunto con los números de versiones Ventajas: Cuesta lo mismo recuperar cualquier versión, tanto reciente como antigua y de cualquier rama. Inconvenientes: A medida que aumenta el número de versiones aumenta también el costo de recuperar cualquier de ellas. Herramientas CV • SCCS (Source Code Control System) o Control básico de versiones, original de UNIX • RCS (Revision Control System) o Herramienta similar, parte del proyecto GNU
Control de configuración Herramientas • CVS (Concurrent Version System):
o Control de configuración, con cambios simultáneos. o La más antigua, usada todavía. • Subversion: o Similar a la anterior, más moderna. o Permite trazar renombrado o movimiento de ficheros. o Ha desplazado a CVS. • Gnuarch, Bazaar, etc.: o Su implantación es irregular. De momento no compiten con las anteriores. • Git: o Es la herramienta de moda en la actualidad. Más compleja que las anteriores. o Facilita la creación y fusión de ramas (branch-merge).