Resumen ACM
Resumen ACM
ADMINISTRACIÓN
CONFIGURACIÓN DEL SOFTWARE
DE LA
22
CONCEPTOS uando se construye software de computadoras, el cambio es inevitable. Y el cambio
C
CLAVE
administración de contenido . 517 aumenta el nivel de confusión cuando los miembros de un equipo de software trabajan
auditoría de configuración . . 514 en un proyecto. La confusión surge cuando los cambios no se analizan antes de que se
líneas de referencia . . . . . . . 504 realicen, cuando no se registran antes de que se implanten, si no se reportan a quienes tienen
control de cambio . . . . . . . . 511 necesidad de conocerlos o si no se controlan en forma que mejore la calidad y se reduzca el
control de versión . . . . . . . . 510 error. Babich [Bab86] analiza esto cuando afirma:
identificación. . . . . . . . . . . . 509
El arte de coordinar el desarrollo de software para minimizar [...] la confusión se llama administración
ítems de configuración de la configuración, que es el arte de identificar, organizar y controlar las modificaciones que se hacen
de software (ICS) . . . . . . . . 505
al software que construirá un equipo de programación. La meta es maximizar la productividad al
objeto de configuración . . . . 505
minimizar los errores.
objetos de configuración
de webapps . . . . . . . . . . . . 517 La administración de la configuración del software (ACS) es una actividad sombrilla que se
proceso ACS . . . . . . . . . . . . 508 aplica a lo largo del proceso de software. Puesto que el cambio puede ocurrir en cualquier mo-
reporte de estado . . . . . . . . 615 mento, se desarrollan actividades ACS para 1) identificar el cambio, 2) controlar el cambio, 3)
repositorio . . . . . . . . . . . . . 506 garantizar que el cambio se implementó de manera adecuada y 4) reportar los cambios a otros
webapps . . . . . . . . . . . . . . 515 que puedan estar interesados.
Es importante hacer una distinción clara entre el apoyo al software y la administración de la
configuración del software. El apoyo es un conjunto de actividades de ingeniería de software
que ocurren después de que éste se entregó al cliente y de que se puso en operación. La admi-
nistración de la configuración del software es un conjunto de actividades de rastreo y control
que inicia cuando comienza un proyecto de ingeniería de software y sólo termina cuando el
software se retira de la operación.
UNA
MIRADA ¿Qué es? Cuando se construye software de ga se demora. Por dicha razón, la gestión del cambio es
RÁPIDA
computadora, ocurren cambios. Y puesto que parte esencial de la administración de la calidad.
ocurren, es necesario administrarlos de manera ¿Cuáles son los pasos? Puesto que muchos productos de
efectiva. La administración de la configuración trabajo se realizan cuando el software se construye, cada
del software (ACS), también llamada gestión del cambio, uno debe identificarse de manera única. Una vez logrado,
es un conjunto de actividades diseñadas para administrar pueden establecerse mecanismos para control de versión y
el cambio mediante la identificación de los productos de de cambio. Para garantizar que la calidad se mantiene
trabajo que es probable que cambien, el establecimiento conforme se realizan cambios, audite el proceso; y para
de relaciones entre ellos, la definición de mecanismos para asegurarse que quienes deben conocerlos estén informa-
administrar diferentes versiones de dichos productos de dos acerca de los cambios, realice reportes.
trabajo y el control de los cambios impuestos, así como la ¿Cuál es el producto final? Un Plan de Administración
auditoría y reporte de los cambios realizados. de la Configuración del Software define la estrategia del
proyecto para la gestión del cambio. Además, cuando se
¿Quién lo hace? Todos los involucrados en el proceso de
invoca ACS formal, el proceso de control de cambio pro-
software se relacionan en cierta medida con la gestión del
duce solicitudes de cambio de software, reportes y órdenes
cambio, pero en ocasiones se crean posiciones de apoyo
de cambio de ingeniería.
especializadas para administrar el proceso ACS.
¿Cómo me aseguro de que lo hice bien? Cuando
¿Por qué es importante? Si no se controla el cambio, todo producto de trabajo pueda explicarse, rastrearse y
éste lo controla a uno. Y eso nunca es bueno. Es muy fácil controlarse; cuando todo cambio pueda rastrearse y ana-
que un torrente de cambios descontrolados convierta en lizarse; cuando todos los que deben saber acerca de un
caos un proyecto de software bien estructurado. Como cambio están informados, entonces la gestión del cambio
consecuencia, la calidad del software se reduce y la entre- se hizo correctamente.
501
Una meta principal de la ingeniería de software es mejorar la facilidad con la que los cam-
bios pueden acomodarse y reducir la cantidad de esfuerzo empleado cuando deban realizarse
cambios. En este capítulo se estudian las actividades específicas que permiten administrar
el cambio.
La salida del proceso de software es información que puede dividirse en tres categorías amplias:
1) programas de cómputo (tanto en el nivel de fuente como en formatos ejecutables), 2) produc-
tos de trabajo que describen los programas de cómputo (dirigidos a varios participantes) y 3)
datos o contenido (incluidos dentro del programa o externos a él). Los ítems que comprenden
toda la información producida como parte del proceso de software se llaman colectivamente
configuración del software.
Conforme avanza el trabajo de ingeniería de software, se crea una jerarquía de ítems de con-
Cita: figuración del software (ICS): un elemento de información nominado que puede ser tan pequeño
como un solo diagrama UML o tan grande como el documento de diseño completo. Si cada ICS
“No hay nada permanente,
excepto el cambio.” simplemente conduce a otros ICS, dará como resultado poca confusión. Por desgracia, en el
proceso entra otra variable: el cambio, que puede ocurrir en cualquier momento, por cualquier
Heráclito, 500 a.C.
razón. De hecho, la Primera Ley de la Ingeniería de Sistemas [Ber80] establece: “Sin importar
dónde se esté en el ciclo de vida del sistema, el sistema cambiará, y el deseo por cambiar per-
sistirá a lo largo del ciclo de vida.”
¿Cuál es el origen de estos cambios? La respuesta a esta pregunta es tan variada como los
mismos cambios. Sin embargo, existen cuatro fuentes fundamentales de cambio:
1 Esta sección se extrajo de [Dar01]. El permiso especial para reproducir “Spectrum of functionality in CM System”,
de Susan Dart [Dar01], © 2001 de Carnegie Mellon University, se obtuvo del Software Engineering Institute.
más pequeños o más grandes, pero, en esencia, hay temas genéricos que cada uno de estos
proyectos enfrenta con respecto a la AC).
En el nivel operativo, el escenario involucra varios roles y tareas. Para el gerente de proyecto,
? ¿Cuáles son las metas
de y las actividades la meta es garantizar que el producto se desarrolla dentro de cierto marco temporal. Por
realizadas por cada uno tanto, monitorea el progreso del desarrollo y reconoce y reacciona ante los problemas. Esto se
de los elementos hace mediante la generación y el análisis de reportes acerca del estado del sistema de software
constituyentes
y al realizar revisiones al sistema.
involucrados en la
administración del Las metas del gerente de configuración son garantizar que se sigan los procedimientos y
cambio? políticas para crear, cambiar y probar el código, así como hacer accesible la información acerca
del proyecto. Para implantar técnicas a fin de mantener el control sobre los cambios de código,
este gerente introduce mecanismos para: realizar peticiones oficiales de cambios, evaluarlos
(mediante un Consejo de Control de Cambios que sea responsable de aprobar los cambios al
sistema de software) y autorizarlos. El gerente elabora y difunde la lista de tareas para los inge-
nieros y básicamente crea el contexto del proyecto. Además, recopila estadísticas acerca de los
componentes que hay en el sistema de software, tales como la información que determina cuá-
les componentes del sistema son problemáticos.
PU Para los ingenieros de software, la meta es trabajar eficazmente. Esto significa que los inge-
NT
O nieros no deben interferir innecesariamente unos con otros en la creación y prueba del código
CLAVE y en la producción de productos operativos de apoyo. Pero, al mismo tiempo, deben intentar
Debe existir un mecanismo para comunicarse y coordinarse de manera eficiente. Específicamente, los ingenieros usan herra-
asegurar que los cambios
mientas que ayudan a construir un producto de software consistente. Se comunican y coordinan
simultáneos hechos al mismo
componente se rastreen, gestionen y al notificarse unos con otros las tareas requeridas y las tareas completadas. Los cambios se
ejecuten de manera adecuada. propagan a través del trabajo mutuo mediante fusión de archivos. Existen mecanismos para
garantizar que, para componentes que experimentan cambios simultáneos, hay alguna forma
de resolver los conflictos y la fusión de cambios. Se conserva una historia de la evolución de
todos los componentes del sistema, una bitácora con las razones de los cambios y un registro
de lo que realmente cambió. Los ingenieros tienen su propio espacio de trabajo para crear,
cambiar, poner a prueba e integrar código. En cierto punto, el código se convierte en una línea
de referencia desde la cual continúan mayores desarrollos y se realizan variantes para otras
máquinas objetivo.
El cliente usa el producto. Puesto que éste se encuentra bajo control AC, el cliente sigue pro-
cedimientos formales para solicitar cambios y para indicar errores en el producto.
De manera ideal, un sistema AC utilizado en este escenario debe apoyar todos estos roles y
tareas, es decir, los roles determinan la funcionalidad requerida de un sistema AC. El gerente de
proyecto ve la AC como un mecanismo de auditoría; el gerente de configuración la considera
un mecanismo de control, rastreo y generación de políticas; el ingeniero de software, como un
mecanismo de control de cambio, construcción y acceso; y el cliente la ve como un camino para
garantizar la calidad.
Estos elementos (que se estudiarán con más detalle en secciones posteriores) no son mutua-
mente excluyentes. Por ejemplo, los elementos componentes trabajan en conjunción con los
elementos de construcción conforme evoluciona el proceso de software. Los elementos de pro-
ceso guían muchas actividades humanas que se relacionan con la ACS y, por tanto, también
pueden considerarse como elementos humanos.
Una especificación o producto que se revisó formalmente y con el que se estuvo de acuerdo, que a
partir de entonces sirve como base para un mayor desarrollo y que puede cambiar sólo a través de
procedimientos de control de cambio formal.
Antes de que un ítem de configuración del software se convierta en línea de referencia, los
cambios pueden realizarse rápida e informalmente. No obstante, una vez establecida la línea de
referencia, pueden realizarse cambios, pero debe aplicarse un procedimiento formal específico
para evaluar y verificar cada uno de ellos.
En el contexto de la ingeniería de software, una línea de referencia es un hito en el desarrollo
del software. Una línea de referencia se marca al entregar uno o más ítems de configuración del
software que se aprobaron como consecuencia de una revisión técnica (capítulo 15). Por ejemplo,
los elementos de un modelo de diseño se documentaron y revisaron. Se encontraron y corrigie-
ron errores. Una vez que todas las partes del modelo se revisaron, corrigieron y luego aprobaron,
el modelo de diseño se convierte en línea de referencia. Los cambios adicionales a la arquitectura
del programa (documentada en el modelo de diseño) pueden realizarse sólo después de que cada
uno se evalúa y aprueba. Aunque las líneas de referencia pueden definirse en cualquier nivel de
detalle, en la figura 22.1 se muestran las líneas de referencia de software más comunes.
En la figura 22.1 también se ilustra la progresión de eventos que conducen a una línea de
CONSEJO referencia. Las tareas de la ingeniería de software producen uno o más ICS. Después de revisar
Asegúrese de que la base de datos y aprobar los ICS, se colocan en una base de datos del proyecto (también llamada librería de pro-
del proyecto se mantenga en una yecto o repositorio de software, y que se estudia en la sección 22.2). Cuando un miembro de un
ubicación centralizada controlada. equipo de ingeniería de software quiere hacer una modificación a un ICS que se ha convertido
en línea de referencia, se copia de la base de datos del proyecto en el espacio de trabajo priva-
do del ingeniero. Sin embargo, este ICS extraído puede modificarse solamente si se siguen
controles ACS (que se estudian más adelante en este capítulo). Las flechas de la figura 22.1
ilustran la ruta de modificación de un ICS convertido en línea de referencia.
FIGURA 22.1
Modificado
ICS como línea de ICS
referencia y base
Base de datos del proyecto
de datos del
proyecto Aprobado
Tareas de Revisiones
la ingeniería ICS ICS
técnicas
de software
Almacenado
ICS
Extraído
Controles
ICS
ACS
LÍNEAS DE REFERENCIA:
Especificación del sistema
Requerimientos de software
Especificación de diseño
Código fuente
Planes/procedimientos/datos de prueba
Sistema operativo
2 Esas relaciones se definen dentro de la base de datos. La estructura de la base de datos (repositorio) se estudia
con mayor detalle en la sección 22.2.