Está en la página 1de 35

CAPÍTULO

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

www.FreeLibros.me

22Pressman(501-525).indd 501 19/1/10 17:12:05


502 PAR T E T R ES AD MINIST RACIÓN DE LA CALIDAD

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.

22. 1 ADMINISTRACIÓN DE LA CONFIGURACIÓN DEL SOFTWARE

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:

• Nuevas condiciones empresariales o de mercado dictan los cambios en los requeri-


mientos del producto o en las reglas empresariales.

• Nuevas necesidades de los accionistas demandan modificación a los datos producidos


? ¿Cuál es el origen de
los cambios que se por los sistemas de información, a la funcionalidad que entregan los productos o a los
solicitan para el servicios que ofrece un sistema basado en computadora.
software?
• La reorganización o crecimiento/reducción de la empresa produce cambios en las prio-
ridades proyectadas o en la estructura del equipo de ingeniería de software.

• Restricciones presupuestales o de calendario causan una redefinición del sistema o del


producto.

La administración de la configuración del software es un conjunto de actividades que se de-


sarrollaron para administrar el cambio a lo largo del ciclo de vida del software de computadora.
La ACS puede verse como una actividad que garantiza la calidad del software y que se aplica a
lo largo del proceso de software. En las siguientes secciones se describen las principales tareas
ACS y los conceptos importantes que pueden ayudar a gestionar el cambio.

22.1.1 Un escenario ACS1


Un escenario operativo de administración del cambio (AC) típico involucra a un gerente de pro-
yecto que está a cargo de un grupo de software, a un gerente de configuración responsable de
los procedimientos y políticas AC, a los ingenieros de software encargados de desarrollar y
mantener el producto de software y al cliente que usa el producto. En el escenario, se supone
que el producto es pequeño y que involucra a alrededor de 15 000 líneas de código desarrollado
por un equipo de seis personas. (Observe que es posible que existan otros escenarios de equipos

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.

www.FreeLibros.me

22Pressman(501-525).indd 502 19/1/10 17:12:07


C AP Í T UL O 22 ADMINIST RACIÓN DE LA CONFIG U RACIÓN DEL SOFT WARE 503

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.

22.1.2 Elementos de un sistema de administración de la configuración


En su exhaustivo artículo acerca de la administración de la configuración del software, Susan
Dart [Dar01] identifica cuatro elementos importantes que deben existir cuando se desarrolla un
sistema de administración de la configuración:

• Elementos componentes: conjunto de herramientas acopladas dentro de un sistema de


administración de archivos (por ejemplo, base de datos) que permite el acceso a cada
ítem de configuración del software, así como su gestión.

• Elementos de proceso: colección de acciones y tareas que definen un enfoque efectivo de


la gestión del cambio (y actividades relacionadas) para todos los elementos constitu-
yentes involucrados en la administración, ingeniería y uso del software.

www.FreeLibros.me

22Pressman(501-525).indd 503 19/1/10 17:12:07


504 PAR T E T R ES AD MINIST RACIÓN DE LA CALIDAD

• Elementos de construcción: conjunto de herramientas que automatizan la construcción


de software al asegurarse de que se ensambló el conjunto adecuado de componentes
validados (es decir, la versión correcta).

• Elementos humanos: conjunto de herramientas y características de proceso (que abarcan


otros elementos AC) utilizados por el equipo de software para implementar ACS efectiva.

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.

22.1.3 Líneas de referencia


El cambio es un hecho de vida en el desarrollo de software. Los clientes quieren modificar los
CONSEJO requerimientos. Los desarrolladores quieren cambiar el enfoque técnico. Los gerentes quieren
La mayoría de los cambios de modificar la estrategia del proyecto. ¿Por qué todas estas modificaciones? La respuesta real-
software se justifican, así que no hay mente es muy simple. Conforme pasa el tiempo, todos los elementos constituyentes saben más
razón para quejarse por su presencia. (acerca de lo que necesitan, sobre qué enfoque sería mejor, cómo realizarlo y todavía obtener
En su lugar, asegúrese de que tiene
dinero). Este conocimiento adicional es la fuerza motora que hay detrás de la mayoría de los
los mecanismos para lidiar con ellos.
cambios y que conduce a un enunciado de hechos que es difícil de aceptar para muchos profe-
sionales de la ingeniería de software: ¡la mayoría de los cambios se justifican!
Una línea de referencia es un concepto de administración de la configuración del software que
le ayuda a controlar el cambio sin impedir seriamente cambios justificados. El IEEE (IEEE Std.
No. 610.12-1990) define una línea de referencia como:

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.

www.FreeLibros.me

22Pressman(501-525).indd 504 19/1/10 17:12:07


C AP Í T UL O 22 ADMINIST RACIÓN DE LA CONFIG U RACIÓN DEL SOFT WARE 505

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

22.1.4 Ítems de configuración del software


Ya se definió un ítem de configuración del software como la información que se crea como parte
del proceso de ingeniería de software. En última instancia, un ICS podría considerarse como una
sola sección de una gran especificación o como un caso de prueba en una gran suite de pruebas.
De manera más realista, un ICS es todo o parte de un producto de trabajo (por ejemplo, un do-
cumento, toda una suite de casos de prueba o un componente de programa nominado).
Además de los ICS que se derivan de los productos de trabajo de software, muchas organi-
zaciones de ingeniería de software también colocan las herramientas de software bajo control
de configuración, es decir, versiones específicas de editores, compiladores, navegadores y otras
herramientas automatizadas se “congelan” como parte de la configuración del software. Puesto
que dichas herramientas se usaron para producir documentación, código fuente y datos, deben
estar disponibles cuando tengan que realizarse cambios a la configuración del software. Aunque
los problemas son raros, es posible que una nueva versión de una herramienta (por ejemplo, un
compilador) pueda producir resultados diferentes que la versión original. Por esta razón, las
herramientas, como el software que ayudan a producir, pueden convertirse en líneas de refe-
rencia como parte de un proceso amplio de administración de la configuración.
En realidad, los ICS se organizan para formar objetos de configuración que puedan catalo-
garse con un solo nombre en la base de datos del proyecto. Un objeto de configuración tiene un
nombre y atributos, y está “conectado” con otros objetos mediante relaciones. En la figura 22.2,
los objetos de configuración DesignSpecification (especificación de diseño), DataModel (mo-
delo de datos), ComponentN (componente n), SourceCode (código fuente) y TestSpecifica-
tion (especificación de prueba) se definen cada uno por separado. Sin embargo, cada uno de los
objetos se relaciona con los demás, como se muestra mediante las flechas. Una flecha curva
indica una relación composicional, es decir, DataModel y ComponentN son parte del objeto
DesignSpecification. Una flecha con doble punta indica una interrelación. Si se realizara un
cambio al objeto SourceCode, las interrelaciones permiten determinar qué otros objetos (e ICS)
pueden resultar afectados.2

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.

www.FreeLibros.me

22Pressman(501-525).indd 505 19/1/10 17:12:08


506 PAR T E T R ES AD MINIST RACIÓN DE LA CALIDAD

FIGURA 22.2
Objetos de DataModel
configuración
DesignSpecification

diseño de datos
diseño arquitectónico
diseño de módulo
diseño de interfaz
ComponentN

descripción de interfaz
descripción de algoritmo
TestSpecification PDL

plan de pruebas
procedimiento de pruebas
casos de pruebas
SourceCode

22. 2 EL REPOSITORIO ACS


En los primeros días de la ingeniería de software, los ítems de configuración del software se
mantenían como documentos en papel (¡o tarjetas perforadas!), colocadas en carpetas de papel
o de anillos, y se almacenaban en archiveros metálicos. Este mecanismo era problemático por
muchas razones: 1) con frecuencia era difícil encontrar un ítem de configuración cuando se
necesitaba, 2) era muy desafiante determinar cuáles ítems cambiaban, cuándo y por quién, 3)
construir una nueva versión de un programa existente consumía mucho tiempo y era proclive
al error y 4) describir relaciones detalladas y complejas entre los ítems de configuración era
virtualmente imposible.
En la actualidad, los ICS se mantienen en una base de datos del proyecto, o repositorio. El
Diccionario Webster define la palabra repositorio como “cualquier cosa o persona que se consi-
dera como centro de acumulación o almacenamiento”. Durante la historia temprana de la inge-
niería de software, de hecho el repositorio era una persona: el programador que debía recordar
la ubicación de toda la información relevante para un proyecto de software, quien debía recu-
perar la información que nunca se escribió y reconstruir la información perdida. Tristemente,
usar a una persona como “el centro para acumulación y almacenamiento” (aun conforme con
la definición del Webster) no funciona muy bien. En la actualidad, el repositorio es una “cosa”:
una base de datos que actúa como el centro de acumulación y de almacenamiento de la infor-
mación de ingeniería de software. El papel de la persona (el ingeniero del software) es interac-
tuar con el repositorio, usando las herramientas que se integran con él.

22.2.1 El papel del repositorio


El repositorio ACS es el conjunto de mecanismos y estructuras de datos que permiten a un
equipo de software administrar el cambio en forma efectiva. Proporciona las funciones obvias
de un moderno sistema de administración de base de datos, al asegurar integridad, posibili-
dad de compartir e integración de datos. Además, el repositorio ACS proporciona un centro para
la integración de herramientas de software, es fundamental en el flujo del proceso de software
y puede reforzar la estructura y el formato uniforme para los productos que son resultado de la
ingeniería de software.

www.FreeLibros.me

22Pressman(501-525).indd 506 19/1/10 17:12:08


MATERIA:
Introducción a la
Ingeniería de Software
Modulo
UNIVERSIDAD DE EL SALVADOR :
Facultad Multidisciplinaria de Docent
Occidente Departamento de Ingeniería e:
y Arquitectura Grupo:
UNIDAD 3.1
ADMINISTRACIÓN Y GESTIÓN DE LA CONFIGURACIÓN

La ACS (Administración de la Configuración del Software) son un


conjunto de actividades diseñadas para administrar el cambio
mediante la identificación de los componentes que es probable que
cambien, sus relaciones, la administración de sus versiones, el control
de los cambios impuesto y el reporte de los cambios realizados.
ÍTEMS DE CONFIGURACIÓN DEL SOFTWARE

Un Ítem de Configuración del Software (ICS) comprenden toda la


información producida como parte del proceso de software, estos
pueden ser pequeños como un diagrama o tan grandes como un
documento de diseño completo.
ORIGEN DE LOS CAMBIOS

Existen cuatro fuentes fundamentales del cambio:


1) Nuevas condiciones empresariales o de mercado.
2) Nuevas necesidades de los accionistas.
3) La reorganización o crecimiento/reducción de la empresa.
4) Restricciones presupuestales o de calendario.
UN ESCENARIO DE ACS

Un escenario operativo de AC típico involucra a un gerente de proyecto, a un


gerente de configuración, a los ingenieros de software y al cliente.
Para el gerente de proyecto, la meta es garantizar que el producto se
desarrolle dentro de un marco de tiempo temporal.
Las metas del gerente de configuración es garantizar que se sigan los
procedimientos y políticas para crear, cambiar y probar el código, así como
hacer accesible la información acerca del proyecto.
Para los ingenieros de software le meta es trabajar eficazmente, es decir que
estos no deben interferir unos con otros en la creación y pruebas del código y
en la producción de productos operativos de apoyo.
El cliente usa el producto; este usa procedimientos formales para solicitar
cambios y para indicar errores en el producto.
ELEMENTOS DE UN SISTEMA DE ACS

⚫ Elementos componentes: conjunto de herramientas dentro de un


sistema de administración de archivos que permite el acceso a
cada ICS, así como su gestión.
⚫ Elementos de proceso: colección de tareas que definen un
enfoque efectivo de la gestión del cambio para todos los
elementos en la administración, ingeniería y uso del software.
⚫ Elementos de construcción: conjunto de herramientas que
automatizan la construcción de software al asegurarse que ha
ocurrido un ensamble adecuado de los componentes validados.
⚫ Elementos humanos: conjunto de herramientas utilizadas por el
equipo de software para implementar ACS efectiva.
⚫ Estos elementos no son mutuamente excluyentes.
3.2 ÍTEMS DE CONFIGURACIÓN DEL SOFTWARE

Se ha definido ya un ICS como la información que se crea como parte


del proceso de ingeniería de software.
Existen organizaciones donde también se colocan herramientas de
software bajo control de la configuración, por ejemplo: versiones
específicas de compiladores, editores, navegadores, etc. Puesto que
dichas herramientas se utilizaron para producir documentación, código
y datos deben de estar disponibles cuando tengan que realizarse
cambios a la CS..
510 PAR T E T R ES AD MINIST RACIÓN DE LA CALIDAD

Por ejemplo, un DesignSpecification es un objeto agregado. Conceptualmente, puede vérsele


como una lista nominada (identificada) de punteros que especifican objetos agregados, como
ArchitecturalModel y DataModel, y objetos básicos, como ComponentN y UMLClass-
DiagramN.
PU Cada objeto tiene un conjunto de características distintivas que lo identifican de manera
NT
O única: un nombre, una descripción, una lista de recursos y una “realización”. El nombre del
CLAVE objeto es una cadena de caracteres que identifica el objeto sin ambigüedades. La descripción
Las interrelaciones establecidas por
del objeto es una lista de ítems de datos que identifican el tipo ICS (por ejemplo, elemento de
los objetos de configuración le
permiten valorar el impacto del modelo, programa, datos) representado por el objeto, un identificador de proyecto e información
cambio. de cambio y/o versión. Los recursos son “entidades que se proporcionan, procesan, referencian
o que de algún modo el objeto las requiere” [Cho89]. Por ejemplo, los tipos de datos, las funcio-
nes específicas o incluso los nombres de variable pueden considerarse como recursos del ob-
jeto. La realización es un puntero hacia la “unidad de texto” para un objeto básico, y nulo para
un objeto agregado.
La identificación del objeto de configuración también puede considerar las relaciones que
existen entre los objetos nominados. Por ejemplo, al usar la notación simple

Diagrama clase <parte de> modelo requerimientos;


Modelo requerimientos <parte de> especificación requerimientos;

se puede crear una jerarquía de ICS.


En muchos casos, los objetos se interrelacionan a través de ramas de la jerarquía de objetos.
CONSEJO Estas relaciones transestructurales pueden representarse en la forma siguiente:
Incluso si la base de datos del
proyecto proporciona la capacidad ModeloDatos <interrelacionado> ModeloFlujoDatos
para establecer dichas relaciones, ModeloDatos <interrelacionado> CasoPruebaClaseM
éstas consumen mucho tiempo para
su establecimiento y son difíciles de En el primer caso, la interrelación se efectúa entre un objeto compuesto, mientras que la se-
mantener actualizadas. Aunque son gunda relación es entre un objeto agregado (ModeloDatos) y un objeto básico (CasoPrueba-
muy útiles para el análisis de ClaseM).
impacto, no son esenciales para la
El esquema de identificación para objetos de software debe reconocer que los objetos evolu-
administración de cambio global.
cionan a lo largo del proceso de software. Antes de que un objeto se convierta en línea de refe-
rencia, puede cambiar muchas veces; incluso, después de establecer una línea de referencia, los
cambios pueden ser bastante frecuentes.

22.3.2 Control de versión


El control de versión combina procedimientos y herramientas para administrar diferentes ver-
siones de objetos de configuración que se crean durante el proceso de software. Un sistema de
control de versión implementa o se integra directamente con cuatro grandes capacidades: 1)
una base de datos de proyecto (repositorio) que almacena todos los objetos de configuración
relevantes, 2) una capacidad de administración de versión que almacena todas las versiones de
un objeto de configuración (o que permite la construcción de cualquier versión usando diferen-
cias de las versiones pasadas) y 3) una facilidad para elaboración que le permite recopilar to-
dos los objetos de configuración relevantes y construir una versión específica del software.
Además, los sistemas de control de versión y de control de cambio con frecuencia implementan
una capacidad de rastreador de conflictos (también llamado rastreador de errores) que permite al
equipo registrar y rastrear el estado de todos los conflictos sobresalientes asociados con cada
objeto de configuración.
Algunos sistemas de control de versión establecen un conjunto de cambio, una colección de
todos los cambios (en relación con cierta configuración de referencia) que se requieren para
crear una versión específica del software. Dart [Dar91] observa que un conjunto de cambio

www.FreeLibros.me

22Pressman(501-525).indd 510 19/1/10 17:12:09


C AP Í T UL O 22 ADMINIST RACIÓN DE LA CONFIG U RACIÓN DEL SOFT WARE 511

“captura todos los cambios habidos en todos los archivos que hay en la configuración, junto con
la razón de los cambios y detalles de quién y cuándo hizo los cambios”.
Algunos conjuntos de cambio nominados pueden identificarse para una aplicación o sistema.
Esto permite construir una versión del software al especificar los conjuntos de cambios (por
nombre) que deben aplicarse a la configuración de referencia. Para lograr esto, se aplica un
enfoque de modelado de sistema. El modelo del sistema contiene: 1) una plantilla que incluye una
jerarquía de componente y un “orden de construcción” para los componentes que describen
cómo debe construirse el sistema, 2) reglas de construcción y 3) reglas de verificación.4
Durante las décadas pasadas se propusieron algunos enfoques automatizados diferentes
para el control de versión. La diferencia principal en los enfoques es la sofisticación de los atri-
butos que se usan para construir versiones específicas y variantes de un sistema y la mecánica
del proceso para su construcción.

H ERRAMIENTAS DE SOFTWARE
El Sistema de Versiones Concurrentes (SVC)
El uso de herramientas para lograr el control de ver- Deben integrarse otras herramientas (por ejemplo, Makefile) con el
sión es esencial para la administración efectiva del cam- SVC para lograr esto. El SVC no implanta un proceso de control de
bio. El sistema de versiones concurrentes (SVC) es una herramienta cambio (por ejemplo, solicitudes de cambio, reportes de cambio, ras-
ampliamente utilizada para el control de versiones. Originalmente treo de errores).
diseñada para código fuente, pero útil para cualquier archivo basado Incluso con estas limitaciones, el SVC “es un dominante sistema de
en texto, el SVC 1) establece un repositorio simple, 2) mantiene todas control de versión, de red transparente y código abierto, [que] es útil
las versiones de un archivo en un solo archivo nominado al almace- para todos, desde desarrolladores individuales hasta grandes equipos
nar sólo las diferencias entre versiones progresivas del archivo origi- distribuidos” [CVS07]. Su arquitectura cliente-servidor permite a los
nal y 3) protege a un archivo contra los cambios simultáneos al esta- usuarios acceder a los archivos mediante conexiones de internet, y su
blecer diferentes directorios para cada desarrollador, lo que, por filosofía de código abierto lo vuelve disponible para la mayoría de las
tanto, aísla uno de otros. El SVC mezcla los cambios cuando cada plataformas más usadas.
desarrollador completa su trabajo. SVC está disponible sin costo alguno para entornos Windows,
Es importante observar que el SVC no es un sistema “de construc- Mac OS, LINUX y UNIX. Vea [CVS07] para más detalles.
ción”, es decir, no construye una versión específica del software.

22.3.3 Control de cambio


La realidad del control de cambio en un contexto moderno de ingeniería de software la resume
Cita: bellamente James Bach [Bac98]:

“El arte de avanzar es preservar El control del cambio es vital. Pero las fuerzas que lo hacen necesario también lo hacen desconcer-
el orden en medio del cambio y tante. Nos preocupamos por el cambio porque una pequeña perturbación en el código puede crear una
preservar el cambio en medio gran falla en el producto. Pero también puede corregir un gran fallo o permitir maravillosas nuevas
del orden.” capacidades. Nos preocupamos por el cambio porque un solo desarrollador granuja podría hundir el

Alfred North Whitehead proyecto, aunque en las mentes de dichos granujas se originan ideas brillantes y un abrumador pro-
ceso de control del cambio podría efectivamente desalentarlos de hacer trabajo creativo.

Bach reconoce que se está frente a un acto de equilibrio. Mucho control del cambio y se crearán
problemas. Muy poco y se crearán otros problemas.
Para un gran proyecto de software, el cambio descontrolado conduce rápidamente al caos.
Para tales proyectos, el control del cambio combina procedimientos humanos y herramientas

4 También es posible consultar el modelo del sistema para valorar cómo impactará un cambio en un componente
a otros componentes.

www.FreeLibros.me

22Pressman(501-525).indd 511 19/1/10 17:12:09


522 PAR T E T R ES AD MINIST RACIÓN DE LA CALIDAD

22.4.5 Control de versión


Conforme una webapp evoluciona a través de una serie de incrementos, pueden existir al mismo
tiempo algunas versiones diferentes. Una versión (la webapp operativa actual) está disponible
mediante internet para usuarios finales; otra (el siguiente incremento de webapp) puede estar
en las etapas finales de prueba antes de su implementación; una tercera versión está en desa-
rrollo y representa una gran actualización en contenido, estética de interfaz y funcionalidad. Los
objetos de configuración deben definirse con claridad, de modo que cada uno pueda asociarse
con la versión adecuada. Además, deben establecerse mecanismos de control. Dreilinger
[Dre99] analiza la importancia del control de versiones (y de cambios) cuando escribe:

En un sitio descontrolado, donde múltiples autores tienen acceso para editar y contribuir, surge el
potencial para conflictos y problemas, más aún si dichos autores trabajan desde diferentes oficinas en
diferentes momentos del día y de la noche. Usted puede pasar el día mejorando el archivo index.html
para un cliente. Después de que usted realiza sus cambios, otro desarrollador que trabaja en casa
después de las horas de oficina, o en otra oficina, puede pasar la noche actualizando su propia versión
recientemente revisada del archivo index.html, ¡y sobreescribir por completo su trabajo sin que haya
forma de recuperarlo!

Es probable que usted haya experimentado una situación similar. Para evitarla, se requiere un
proceso de control de versiones.

1. Debe establecerse un repositorio central para el proyecto web, que contendrá las versiones
actuales de todos los objetos de configuración webapp (contenido, componentes funcio-
nales y otros).
2. Cada ingeniero web crea su propia carpeta de trabajo, que contiene aquellos objetos que
se crean o cambian en cualquier momento.
3. Los relojes en todas las estaciones de trabajo de los desarrolladores deben estar sincroniza-
dos para evitar conflictos de sobreescritura cuando dos desarrolladores realizan actuali-
zaciones que están muy cercanas en el tiempo.
4. Conforme se desarrollan nuevos objetos de configuración o se cambian los objetos existen-
tes, deben importarse hacia el repositorio central. La herramienta de control de versión
(vea la discusión de SVC en la barra lateral) gestionará todas las funciones de entrada y
salida de las carpetas de trabajo de cada desarrollador web. Cuando se hagan cambios
al repositorio, la herramienta también proporcionará actualizaciones automáticas por
correo electrónico a todas las partes interesadas.
5. Conforme los objetos se importen al o se exporten del repositorio, se elabora un mensaje de
bitácora automático con marca de tiempo. Esto proporciona información útil para auditar
y puede volverse parte de un esquema de reporte efectivo.

La herramienta de control de versión conserva diferentes versiones de la webapp y puede rever-


tir una de ellas a una versión más antigua si se requiere.

22.4.6 Auditoría y reporte


Con la intención de obtener agilidad, las funciones de auditoría y reporte no tienen mucho én-
fasis en el trabajo de ingeniería web.10 Sin embargo, no se eliminan por completo. Todos los
objetos que entran o salen del repositorio se registran en una bitácora que puede revisarse en

10 Esto empieza a cambiar. Hay un creciente énfasis en la ACS como un elemento de la seguridad de la webapp
[Sar06]. Al proporcionar un mecanismo para rastrear y reportar todo cambio hecho a cada objeto Web, una he-
rramienta de administración del cambio puede proporcionar valiosa protección contra cambios maliciosos.

www.FreeLibros.me

22Pressman(501-525).indd 522 19/1/10 17:12:13


690 Capítulo 25 ■ Administración de la configuración

Codeline (A) Baseline - V1


A A1.1 A1.2 A1.3
A B1.2 C1.1

Codeline (B)
L1 L2 Ex1
B B1.1 B1.2 B1.3

Baseline - V2
Codeline (C)
C C1.1 C1.2 C1.3 A1.3 B1.2 C1.2

Figura 25.6 Líneas de L1 L2 Ex2


Librerías y componentes externos
código (codelines) y
L1 L2 Ex1 Ex2
líneas base (baselines) Mainline

2 5 .2 Gestión de versiones

La gestión de versiones (VM, por las siglas de version management) es el proceso de


hacer un seguimiento de las diferentes versiones de los componentes de software o ítems
de configuración, y los sistemas donde se usan dichos componentes. También incluye
asegurar que los cambios hechos a dichas versiones por los diferentes desarrolladores no
interfieran unos con otros. Por lo tanto, se puede considerar a la gestión de versiones como el
proceso de administrar líneas de código y líneas base.
La figura 25.6 ilustra las diferencias entre línea de código y línea base. En esencia,
una línea de código es una secuencia de versiones de código fuente con las versiones más
recientes en la secuencia derivadas de las versiones anteriores. Las líneas de código se
aplican regularmente a componentes de sistemas, de manera que existen diferentes ver-
siones de cada componente. Una línea base es una definición de un sistema específico.
Por consiguiente, la línea base especifica las versiones del componente que se incluyen
en el sistema más una especificación de las librerías usadas, archivos de configuración,
etcétera. En la figura 25.6 se observa que diferentes líneas base usan distintas versiones
de los componentes de cada línea de código. En el diagrama se sombrearon los recuadros
que representan componentes en la definición línea base para indicar que en realidad son
referencias a componentes en una línea de código. La línea principal es una secuencia de
versiones del sistema desarrolladas a partir de una línea base original.
Las líneas base pueden especificarse mediante un lenguaje de configuración, lo que
permite definir cuáles componentes se incluyen en una versión de un sistema particular.
Es posible especificar de manera explícita una versión de componente específica (X.1.2,
por ejemplo) o simplemente especificar el identificador del componente (X). Si usa
el identificador, esto significa que en la línea base debe usarse la versión más reciente
del componente.
Las líneas base son importantes porque muchas veces es necesario volver a crear una
versión específica de un sistema completo. Por ejemplo, una línea de producto puede
ejemplificarse de modo que existan versiones de sistema individuales para diferentes
clientes. Posiblemente se tenga que volver a crear la versión entregada a un cliente espe-
cífico si, por ejemplo, dicho cliente reporta bugs en su sistema que deban repararse.
Para soportar la gestión de versiones, siempre se deben usar herramientas de gestión
de versiones (llamadas en ocasiones sistemas de control de versiones o sistemas de control

M25_SOMMERVILLE_INGENIERIA_1ED_SE_681-704.indd 690 3/18/11 5:16:31 PM


25.2 ■ Gestión de versiones 691

Fecha de creación
Secuencia de versión

Versión Versión Versión Versión


1.0 1.1 1.2 1.3

Más reciente

Código
Figura 25.7 Gestión D1 D2 D3 fuente V1.3
de almacenamiento
con deltas Estructura de almacenamiento

de código fuente). Estas herramientas identifican, almacenan y controlan el acceso a


las diferentes versiones de los componentes. Se hallan disponibles muchos sistemas dife-
rentes de gestión de versiones, incluidos los sistemas de código abierto ampliamente
usados como CVS y Subversion (Pilato et al., 2004; Vesperman, 2003).
Los sistemas de gestión de versiones ofrecen a menudo varias características:

1. Identificación de versión y entrega (release) A las versiones gestionadas se les asig-


nan identificadores cuando se envían al sistema. Dichos identificadores se basan, por
lo general, en el nombre del ítem de configuración (por ejemplo, ButtonManager),
seguido por uno o más números. De esta manera, ButtonManager 1.3 significa la
tercera versión en codeline 1 del componente ButtonManager. Algunos sistemas
CM también permiten la asociación de atributos con versiones (por ejemplo, móvil,
pantalla pequeña), que también pueden usarse para identificación de la versión. Es
importante que el sistema de identificación sea consistente, ya que esto simplifica el
problema de definir configuraciones. Hace más sencillo el uso de referencias abre-
viadas (por ejemplo, *.V2, que significa la versión 2 de todos los componentes).
2. Gestión de almacenamiento Para reducir el espacio de almacenamiento requerido
por múltiples versiones de los componentes que difieren sólo ligeramente, los siste-
mas de gestión de versiones ofrecen, por lo general, facilidades de gestión de alma-
cenamiento. En vez de conservar una copia completa de cada versión, el sistema
almacena una lista de diferencias (deltas) entre una versión y otra. Al aplicar esto
a una versión fuente (por lo regular, la versión más reciente), puede recrearse una
versión objetivo. Esto se ilustra en la figura 25.7.
3. Registro del historial de cambios Todos los cambios realizados al código de un
sistema o componente se registran y enumeran. En algunos sistemas, dichos cam-
bios pueden usarse para seleccionar la versión de un sistema en particular. Esto
implica etiquetar componentes con palabras clave que describan los cambios reali-
zados. Entonces se pueden usar dichas etiquetas (tags) para seleccionar los compo-
nentes a incluir en una línea base.
4. Desarrollo independiente Es posible que diferentes desarrolladores trabajen en el
mismo componente al mismo tiempo. El sistema de gestión de versiones hace un
seguimiento de los componentes que se marcaron para la edición y se asegura de que
no interfieran los cambios hechos a un componente por diferentes desarrolladores.
5. Soporte de proyecto Un sistema de gestión de versiones puede soportar el desarro-
llo de varios proyectos que comparten componentes. En los sistemas de soporte de

M25_SOMMERVILLE_INGENIERIA_1ED_SE_681-704.indd 691 3/18/11 5:16:31 PM


692 Capítulo 25 ■ Administración de la configuración

Espacio de trabajo (U1) Espacio de trabajo (U2)

A B X Y

C C
Alice Bob

ingreso salida ingreso salida


(check_in) (check_out) (check_in) (check_out)

A1.1 B1.1 C1.1 Y P Q

Figura 25.8 Ingreso y A B C Z X R


salida de un repositorio
de versión Sistema de gestión de versiones

proyecto, como CVS (Vesperman, 2003), es posible ingresar (chek in) y sacar (check
out) todos los archivos asociados con un proyecto en lugar de tener que trabajar a la
vez con un archivo o directorio.

Cuando se desarrollaron por primera vez los sistemas de gestión de versiones, la gestión
del almacenamiento fue una de sus funciones más importantes. Las características de ges-
tión de almacenamiento en un sistema de control de versiones reduce el espacio de disco
requerido para mantener todas las versiones del sistema. Cuando se crea una nueva ver-
sión, el sistema simplemente almacena una delta (una lista de diferencias) entre la nueva
versión y la anterior que se usó para crear esa nueva versión (lo que se ilustra en la parte
inferior de la figura 25.7). En esta misma figura, los recuadros sombreados representan
versiones anteriores de un componente que se recrean automáticamente a partir de la ver-
sión de componente más reciente. Por lo general, las deltas se almacenan como listas de
líneas que cambiaron y, al aplicarlas automáticamente, puede crearse una versión de un
componente a partir de otro. Como es más probable que se use la versión más reciente de
un componente, la mayoría de los sistemas almacenan completa dicha versión. Entonces,
las deltas definen cómo recrear versiones anteriores del sistema.
La mayor parte del desarrollo de software es una actividad grupal, de modo que con
frecuencia surgen situaciones en las que diferentes miembros del equipo trabajan paralela-
mente en el mismo componente. Por ejemplo, suponga que Alicia hace algunos cambios a
un sistema, lo que implica cambiar los componentes A, B y C. Al mismo tiempo, Roberto
trabaja en cambios que requieren modificar los componentes X, Y y C. Entonces, tanto
Alicia como Roberto cambian C. Es importante evitar que estos cambios interfieran entre
sí, es decir, que los cambios de Roberto a C sobrescriban en los de Alicia o viceversa.
Para apoyar el desarrollo independiente sin interferencia, los sistemas de gestión de
versiones usan el concepto de repositorio público y un espacio de trabajo privado. Los
desarrolladores sacan componentes del repositorio público hacia su espacio de trabajo
privado y pueden cambiarlos como deseen en su mismo espacio. Cuando sus cambios
están completos, ingresan los componentes al repositorio. Esto se ilustra en la figura
25.8. Si dos o más personas trabajan en un componente al mismo tiempo, cada uno debe
sacar el componente del repositorio. Si se extrae un componente, el sistema de gestión
de versiones por lo general advierte a otros usuarios que quieren sacar dicho componente
que alguien más lo está usando. El sistema también garantizará que, al ingresar los

M25_SOMMERVILLE_INGENIERIA_1ED_SE_681-704.indd 692 3/18/11 5:16:31 PM


25.3 ■ Construcción del sistema 693

Codeline 2.1
<ramificación>
V2.1.1 V2.1.2
Codeline 2
<combinación>
V2.0 V2.1 V2.4

V2.2 V2.3
Figura 25.9 <ramificación>
Ramificación
(branching) y V1.0 V1.1 V1.2
combinación
(merging) Codeline 1

componentes modificados a las distintas versiones, se les asignen diferentes identificado-


res de versión y se almacenen por separado.
Una consecuencia del desarrollo independiente del mismo componente es que las
líneas de código pueden ramificarse (branch). En vez de una secuencia lineal de versio-
nes que refleje los cambios al componente con el paso del tiempo, puede haber varias
secuencias independientes, como se muestra en la figura 25.9. Esto es normal en el desa-
rrollo de sistemas, en el que los diferentes desarrolladores trabajan de manera indepen-
diente en distintas versiones del código fuente y lo cambian en diversas formas.
En alguna etapa, tal vez sea necesario combinar ramificaciones de líneas de código
para crear una nueva versión de un componente que incluya todos los cambios realizados.
Esto también se muestra en la figura 25.9, donde las versiones 2.1.2 y 2.3 del compo-
nente se combinan para crear la versión 2.4. Si los cambios realizados involucran partes
completamente diferentes del código, las versiones del componente pueden combinarse
automáticamente mediante el sistema de gestión de versiones, al combinar las deltas que
se aplican al código. Con más frecuencia, existen traslapes entre los cambios realizados
que además interfieren entre sí. Un desarrollador debe verificar los conflictos y modificar
los cambios de manera que sean compatibles.

2 5 . 3 Construcción del sistema

La construcción del sistema es el proceso de crear un sistema ejecutable y completo al


compilar y vincular los componentes del sistema, librerías externas, archivos de con-
figuración, etcétera. Las herramientas de construcción del sistema y las de gestión de
versiones deben comunicarse, pues el proceso de construcción implica extraer versiones
del componente del repositorio administrado por el sistema de gestión de versiones. La
descripción de configuración que se usa para identificar una línea base utiliza también la
herramienta de construcción del sistema.
Construir es un proceso complejo, que potencialmente es proclive al error, pues tres
diferentes plataformas de sistema pueden estar implicadas (figura 25.10):

1. El sistema de desarrollo, que incluye herramientas de desarrollo, como los compi-


ladores, editores de código fuente, etcétera. Los desarrolladores sacan código del
sistema de gestión de versiones hacia un espacio de trabajo privado antes de hacer

M25_SOMMERVILLE_INGENIERIA_1ED_SE_681-704.indd 693 3/18/11 5:16:31 PM


COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA
CONFIGURACIÓN
COMPARISON OF CONFIGURATION MANAGEMENT TOOLS
Enrique Carbonell Muela1, Ana María García Pérez2

1 DATYS, Cuba, enrique.carbonel@datys.cu, Máximo Gómez #65 Norte e/Tirso Marín y Calderón, Sancti Spíritus, Sancti
Spíritus, Cuba, CP 10600
2 DESOFT, Cuba, anamaria.garcia@vcl.desoft.cu

RESUMEN: Las herramientas de gestión de la configuración (CMT) en esencia permiten la automatización de


la instalación, configuración y actualización de software en un sistema. La variedad de estas herramientas
disponibles en el mercado hace difícil la selección de la adecuada, acorde a las necesidades de los clientes
cuando no se cuenta con expertos en el área para consultar. El propósito de este trabajo es seleccionar las
características para establecer un marco de comparación y aplicarlo a cuatro de las CMT más populares. Para
la selección se tuvieron en cuenta algunos criterios de comparación de estudios previos que de conjunto con los
aportados en este trabajo dan lugar a un sencillo marco de comparación para las CMT. Las herramientas
seleccionadas por su popularidad fueron: CFEngine, Puppet, Ansible y Salt. El estudio aporta una tabla
resumen donde se evidencian las características seleccionadas y su evaluación en cada una de las
herramientas.

Palabras Claves: herramientas de gestión de la configuración; marco de comparación; CFEngine; Puppet;


Ansible; Salt

ABSTRACT: The configuration management tools (CMT) essentially allow automation of installation,
configuration and update of system’s software. The variety of these tools available in the market makes it difficult
the right selection according to the needs of clients when you do not have consultant experts. The purpose of
this work is select the features to build a comparative framework and apply it to four of the most popular CMT. In
order to select some CMT we take into account some benchmarks of previous studies and join with others
proposed here to obtain a simple comparative framework. The tools selected by popularity went: CFEngine,
Puppet, Ansible and Salt. This work provides a summary table where the selected features are evaluated in
each of analyzed tools.

KeyWords: configuration management tools; comparison framework; CFEngine; Puppet; Ansible; Salt

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

1. INTRODUCCIÓN Las CMT emplean las especificaciones de entrada


para modelar el estado deseado de la
Cada día las personas se relacionan con configuración, incluyendo la interdependencia entre
aplicaciones de software, tanto en el ámbito los parámetros de configuración.
personal como son las redes sociales para
comunicarnos con amistades, así como en el Algunos trabajos se han realizado en el área de las
ámbito profesional con servicios para la gestión de pruebas de las especificaciones de entrada para
los clientes de una organización. Estas aplicaciones garantizar la consistencia de la configuración [1]-[4].
pueden estar alojadas en host físicos, entornos En la actualidad existen en el mercado varios
virtualizados o incluso en la nube y a su vez estar sistemas reconocidos que se pueden utilizar, sin
interconectadas para crear sistemas distribuidos de embargo como toda aplicación de software, la
gran escala. Para que funcione, el software adopción de uno específico implica una inversión
necesita ser puesto en marcha. Esto significa grande de tiempo y dinero. Por lo que hacer una
instalar, configurar y mantener los recursos elección bien fundamentada sobre la base de
necesarios para su explotación en producción. criterios objetivos es lo mejor para asegurarse que
Mientras estas acciones se ejecuten manualmente, la empresa va a adquirir la herramienta justa para
siempre se corre el riesgo de generar complejidad su entorno.
innecesaria en el sistema, haciendo el Pero, ¿cuáles pudieran ser estos criterios objetivos
mantenimiento difícil y costoso. Siendo agravado en ausencia de expertos en el tema?
cuando se necesita escalar los servicios o hay que El objetivo de este trabajo consiste en seleccionar
mantener diferentes ecosistemas para el desarrollo esos criterios estableciendo un marco de
y pruebas de software. Desafortunadamente las comparación y aplicarlo a cuatro de las CMT más
aplicaciones de software suelen fallar y el costo del referenciados y populares [5]-[9]: CFEngine,
tiempo fuera de servicio aumenta con cada Puppet, Ansible y Salt.
segundo. Estos errores frecuentemente son El marco propuesto es un ajuste y actualización de
causados por problemas de configuración y cuando varios estudios previos sobre el tema.
se manejan sistemas distribuidos donde existen
dependencias entre los servicios, la probabilidad de El resultado del trabajo es útil para los
error aumenta drásticamente. profesionales en la selección rápida de una CMT y
dando a conocer las características actualizadas de
La configuración de las aplicaciones, está formada cada una de ellas, sobre todo en el contexto
por diversos parámetros que deben ser cubano con una limitada adopción de este tipo de
consistentes en toda la configuración: desde los herramientas, aun cuando constituyen una mejora
parámetros de la aplicación final de usuarios hasta sobre la continua explotación del scripting ad-hoc
los de configuración de red de la infraestructura. que se ha empleado en las últimas dos décadas.
Asimismo debe garantizarse que luego de cada
actualización de las configuraciones, estos
parámetros queden consistentes en aras de evitar 2. CONTENIDO
futuras fallas en el funcionamiento de las
aplicaciones. En los últimos tiempos con la popularidad de las
redes sociales, blog y demás plataformas de
Las herramientas de gestión de la configuración comunicación, se suele realizar una búsqueda
(CMT) como Puppet y Chef fueron diseñadas para rápida de los pros y contras para evaluar un
resolver estas tareas de forma consistente y producto de software. Sin embargo estos resultados
confiable, haciendo el software fácil de configurar e suelen estar influenciados por los requerimientos y
instalar, preparándolo para su modificación o experiencias individuales de los redactores quienes,
expansión. en determinados momentos pueden llegar a
Estas herramientas simplifican las tareas de gestión contradecirse entre sí. Por lo que no es
de grandes y complejos despliegues manteniendo recomendable tomar decisiones definitivas basadas
los sistemas actualizados, reduciendo los costos de en estos resultados parciales.
operación. Su objetivo fundamental es la Se hace necesario establecer las características a
automatización de la instalación, configuración, considerar y cómo evaluarlas. En el ámbito de los
actualización de software en un entorno dado. proyectos de código abierto podemos encontrarnos
Adicionalmente, pueden mantener un seguimiento con varios trabajos que proponen y analizan
del estado y brindar una descripción del software metodologías de evaluación para estos tipos de
instalado.

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

proyectos [10][11] Pero como ningún método es servidores, teléfonos inteligentes, equipamiento de
perfecto, frecuentemente sus criterios están siendo red, etc. Es por ello que considerar las plataformas
revisados y actualizados. y dispositivos soportados aportan elementos para
Para la selección de los criterios específicos del evaluar cuán flexible es la CMT y cuántos sistemas
campo de aplicación tratado, se tuvieron en cuenta diferentes se pueden gestionar con el software
en primera instancia estudios comparativos previos [14][15].
[12], trabajos que introducen y caracterizan Propiedades de gestión
diferentes alternativas de CMS [8][13],
presentaciones en eventos, documentaciones
oficiales de los productos, criterios de la comunidad
(blog, IRC, redes sociales, etc. ), entre otras fuentes
disponibles de los últimos cinco años. De igual
forma se tuvo en cuenta que en Cuba no se cuenta
con grandes compañías que empleen estos
sistemas, por lo que el reducido nivel de expertos
en el área llevó a descartar cualquier criterio
previamente empleado que dependa de la
validación por el criterio de expertos.

2.1 Criterios de comparación


Propiedades de la especificación
Figura 1 Arquitectura general de los CMT.
Algunos trabajos basados en la opinión de la
comunidad plantean como elementos esenciales a De los elementos para valorar la usabilidad
tener en consideración el lenguaje para usar el solamente se tienen en cuenta: si la herramienta
software [14] y si este es declarativo o imperativo brinda soporte para probar las especificaciones
[15]. Adicionalmente se tiene en cuenta si la introducidas y si la herramienta provee algún
herramienta brinda una interfaz de usuario para la sistema o si cuenta con algún mecanismo para
gestión de los recursos. monitorear el estado de la infraestructura actual.
Un elemento a considerar es si la herramienta La integración con el entorno ilustra la habilidad de
provee de un mecanismo de modularización que la herramienta de permitir a la especificación
permita la reutilización del código escrito por los creada utilizar información proveniente del entorno
desarrolladores y que este pueda ser empleado en de trabajo, por ejemplo adquirir los usuarios a partir
futuras tareas (por ejemplo: las recetas de Chef o de un servidor LDAP.
los roles de Ansible) y si cuenta con un repositorio Durante el empleo de estas herramientas suelen
de estos elementos para socializar el conocimiento presentarse conflictos en las definiciones como:
(como Galaxy en Ansible). conflictos específicos de aplicación (ejemplo:
Propiedades del despliegue cuando se declaran varios servicios con el mismo
Delaet, Joosen y Vanbrabant [15] se refieren a la puerto en un host), conflictos de modalidad que son
escalabilidad como la habilidad de la CMT de contradicciones en la especificación de la
adaptarse a los cambios en el crecimiento de la configuración.
infraestructura. La herramienta debe ser capaz de El versionado de las especificaciones es un
proveer la especificación de configuración elemento deseable en los sistemas que trabajan la
necesaria para estos grandes y complejos infraestructura como código, mediante el empleo de
entornos. sistemas de control de versiones (CVS). Estos
Aunque la mayoría de las herramientas analizadas posibilitan el restablecimiento de los sistemas ante
en el estudio comparten elementos de la fallos, así como el seguimiento de la evolución de
arquitectura de despliegues típica Figura 1, las especificaciones.
consideramos necesario incluir este elemento en la Las especificaciones para la configuración de las
comparación, analizando: la arquitectura de los infraestructuras usualmente son desarrolladas por
agentes de traducción y la tecnología empleada diferentes personas, por lo que es necesario tener
para distribuir las especificaciones (push o pull). un control de acceso a los recursos que cada cual
Es común encontrar variedad de plataformas en las puede configurar. Por esto se analizó la presencia
infraestructuras actuales: Windows/Unix/Mac OS X de mecanismos de autenticación y autorización.
servers; de igual forma podemos hallar la Soporte
necesidad de gestionar diversos dispositivos: Una característica del soporte es la documentación

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

disponible y dentro de esta, la documentación de son las compañías de referencia que emplean el
instalación; evaluando los prerrequisitos o cantidad producto. Estos elementos muestran su
de elementos necesario a instalar para que generalización en las diferentes organizaciones y si
funcione, así como las formas de instalación sirve para grandes escenarios de despliegue
pueden dar una idea de cuán rápido pudiera ser la [14][16]. No obstante es difícil medir exactamente el
puesta en marcha del nuevo sistema. número de usuarios y despliegues, por lo que se
Un elemento deseable para viabilizar la evaluación emplean otros criterios aproximados como el
de un producto de software es que se provean número de usuarios en la lista de distribución y las
recursos para el mismo de forma tal que se organizaciones que emplean el producto.
minimicen los esfuerzos de instalación y Adicionalmente se analizó la presencia en las redes
configuración que en etapas de exploración sociales teniendo en cuenta su actividad.
pudiesen incurrir en gasto de tiempo por la falta de Licencias
familiarización con los productos, para ello es Aunque todos los CMT que se evalúan en este
frecuente encontrar demos online, recursos de trabajo tienen una distribución de código abierto, es
Vagrant, recursos para un despliegue limitado en interesante conocer bajo qué licencia específica se
un proveedor de servicios en la nube o máquinas distribuyen: MIT, GPL, LGPL, etc., criterio que ha
virtuales con los componentes instalados para sido empleado por Torberntsson y Rydin [14].
probar localmente.
Precio
Constar con una versión comercial del producto
El precio constituye un factor determinante en todo
usualmente brinda mayor confianza a la hora
producto a adquirir que usualmente varía en
seleccionar una alternativa, pues generalmente
dependencia de la cantidad de nodos a gestionar y
estas vienen asociadas con un alto compromiso de
el soporte contratado, por lo que se tuvo en cuenta
soporte técnico por parte de los creadores y
el precio anual más bajo para 100 instancias con la
funcionalidades que no podemos encontrarnos en
versión Empresarial, similar al trabajo de
las versiones de la comunidad. Adicionamos
Torberntsson y Rydin [14].
entonces al análisis la presencia de versiones
comerciales del producto y sus funcionalidades Lenguaje de desarrollo
adicionales en comparación con la de la El lenguaje de desarrollo de un software puede
comunidad. afectar elementos como la comunidad y el
La estabilidad de un proyecto depende de muchos desempeño. Es común considerar que un software
factores difíciles de medir cuando estamos desarrollado en un lenguaje muy popular tenga
iniciándonos en un producto; sin embargo podemos mayor cantidad de contribuidores y seguidores. De
investigar sobre su política y frecuencia de igual forma sucede con un software desarrollado en
liberación para tener una idea al respecto. C, debe tener mejor rendimiento que otro
desarrollado en un lenguaje a más alto nivel. Por
Comunidad
estas razones se agregó al estudio el lenguaje con
Un elemento importante que buscamos en que es desarrollada la CMT.
productos de software es la comunidad que tiene
A modo de resumen la Figura 1 muestra las
un proyecto. En presencia de una comunidad
características que fueron seleccionadas para
grande es fácil resolver problemas, encontrar las
conformar el marco de comparación.
mejores prácticas, casos de uso exitoso de las
herramientas, etc. Por lo que se adicionó la Requerimientos de hardware
evaluación de la comunidad teniendo en Para tener una idea de las prestaciones básicas
consideración: la cantidad de usuarios necesarias en la explotación de las CMT se
contribuyentes del proyecto, la cantidad de incluyeron los requerimientos de hardware mínimos
proyectos relacionados y los canales de para el despliegue más básico de la distribución
comunicación (blog, redes sociales, salas de chat, empresarial.
foros) donde usualmente se publica información al
respecto.
2.2 Evaluaciones
Actualización
Para medir la actividad de actualización se tuvo en 2.2.1 CFEngine
cuenta: el tiempo transcurrido desde la última CFEngine es una CMT que permite gestionar de
actualización del producto y la cantidad de issues forma segura las infraestructuras de IT. Los
resueltos en el primer semestre del año. escenarios de usos son disimiles entre los que
Popularidad podemos encontrar: verificación del contenido y la
Usualmente cuando evaluamos un producto de integridad de archivos, despliegue de aplicaciones y
software buscamos la cantidad de usuarios y cuáles actualizaciones de sistemas.

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

Su Design Center (DC) es ofrecido como el contactan al servidor de políticas que son los
repositorio público donde los miembros de su responsables de la distribución de las políticas. Una
comunidad pueden compartir código y patrones de política no es más que un conjunto de promesas
diseño. En la versión Empresarial se cuenta con el que a su vez son empleadas para describir el
Design Center UI que permite a los ingenieros de estado deseado de un sistema.
infraestructura autorizados configurar, desplegar y Cuando el servidor de políticas ha publicado una
monitorear plantillas de políticas. El DC se promesa los clientes pueden actualizarse
encuentra público en Github pero según las automáticamente. Cada nodo en una red de
estadísticas del repositorio no cuenta con mucha CFEngine son actores independientes y trabajan de
actividad y en los últimos 6 meses ha estado forma oportunista que significa que incluso si un
prácticamente inerte. servidor de políticas desaparece, se mantendrá en
funcionamiento haciendo lo que puede con la
información que tiene almacenada.
No está documentado el uso de herramientas
complementarias para la ejecución de pruebas de
las especificaciones, solo aparece una referencia
sobre la necesidad de hacer test de las políticas
antes de liberarlas en producción. No obstante
como parte del mecanismo de distribución de los
estados deseados, los agentes locales siempre
ejecutan una comprobación de sintaxis antes de
aplicar los cambios [17].
Soporta la gestión de conflictos detectando
conflictos de modalidad, como una configuración
inestable que no converge [12][18].
CFEngine cuenta dos versiones del producto: la
Empresarial recomendada para producción y la de
la Comunidad que fue la pionera en 1993.
Valoramos la actividad del proyecto cfengine/core
analizando los 12K commits, 210 releases y la
cantidad de issues resueltos cuya mayor actividad
se enmarca entre 2013 y finales del 2014, por lo
que se valoró como activo.
Su presencia en las redes sociales se mantiene
activa, con actividad en: Google+ con casi 100
seguidores y más de 13K visitas, junto a su canal
de YouTube que desde 2010 ha compartido más de
100 videos para sus 300 suscriptores. En el caso
de LinkedIn se puede encontrar junto a su sitio
oficial varios grupos que garantizan la constante
actualización de temáticas relacionadas con sus
Figura 1: Criterios aplicados para el análisis de CMT. funcionalidades y mejores prácticas. De igual forma
la actividad se mantiene en el caso de Twitter con
De forma general si está preparado para grandes valores que superan los 2K tweet y 1K seguidores.
despliegues incluso manteniendo la alta Por estas razones de clasifico como activo.
disponibilidad de servicio mediante un pull de
servidores de políticas (configuraciones). 2.2.2 Puppet
La arquitectura empleada es distribuida con el Puppet Labs es uno de los líderes en la
énfasis en los agentes que se ejecutan en cada automatización de IT desde sus inicios en 2005,
host gestionado. El servidor central solo se emplea facilitando la automatización y gestión de los host y
para coordinar la distribución de las políticas. sus softwares tanto en máquinas físicas como
Los clientes de CFEngine pueden trabajar como virtuales en servidores dedicados o integrándose
clientes o como una estructura multinodo. Cuando con servicios en la nube. Puppet aparece como
se opera como una estructura multinodo, algunos proyecto de código abierto y a partir de este se
clientes pueden ser configurados como servidor de distribuye Puppet Enterprise (PE). PE es una
políticas y otros como simples clientes. Los clientes extensión de Puppet que incluye soporte
profesional, un stack de Puppet listo para

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

producción, una consola web para analizar reportes versiones ya se soporta el sistema operativo Cisco
y controlar las infraestructuras, funcionalidades de NX-OS como plataforma para correr los agentes en
orquestación y herramientas para provisionar en la los switches de red. Inclusive algunos socios como
nube. Huawei ya han incluido nativamente el soporte de
El ecosistema de Puppet incluye decenas de los agentes en sus dispositivos de red.
proyectos de código abierto que se emplean tanto Puppet fue de los pioneros en facilitar el trabajo de
en la versión de la Comunidad como en la la Infraestructura como Código (IaC) y tiene
Empresarial. Dentro de estos podemos encontrar experiencia aplicando test sobre las infraestructuras
Geppeto que es un IDE para facilitar el desarrollo [7]. Por ejemplo para que un módulo de Forge esté
en Puppet. Adicionalmente provee una interfaz: listo para producción es requerido su verificación en
Forge para crear proyectos desde módulos PE asegurando el estilo de la sintaxis con Puppet-
preexistentes y facilitar su socialización en la lint, pasar los test unitarios con rspec-puppet y
comunidad. realizar test de aceptación con Beaker framework.
Considerando estos elementos junto a la facilidad
En la versión PE se incluye una interfaz web
para trabajar varios entornos podemos decir que
llamada Console que permite analizar los
tiene soporte para test de especificaciones.
elementos de la infraestructura de forma
centralizada, ofreciendo una forma sencilla para Para la integración con un CVS hay algunas
desplegar configuraciones y aplicaciones a los referencias donde abordan como emplear Git para
servidores y dispositivos de red. trabajar con Puppet, incluso el IDE Geppeto permite
Adicionalmente Puppet cuenta con un repositorio trabajar con los módulos de la comunidad e
de módulos escritos por la comunidad llamado integrarlos con Git para su provisionamiento en PE.
Forge. Al publicarse un módulo, este puede ser Para valorar actividad del proyecto
revisado y clasificación según su popularidad, puppetlabs/Puppet se contó con los 20K commits,
originalidad entre otros elementos aportados por la 301 releases y la cantidad de issues resueltos que
comunidad. Como resultado el modulo se etiqueta se ha mantenido bastante alta desde finales del
estableciendo su estabilidad y confiabilidad para el 2011, por lo que es un proyecto muy activo.
empleo en producción. Mantiene cuentas en las redes sociales como
Puppet está diseñado para funcionar en una Google+ con más de 2K seguidores y 60K visitas,
arquitectura cliente/servidor o de forma junto a su canal de YouTube creado en el 2011 con
independiente. En la primera todos los ficheros de +500 videos compartidos para más de 7K
configuración con las “recetas” escritas en el suscriptores. En el caso de LinkedIn se puede
lenguaje declarativo son almacenados en el nodo encontrar junto a su sitio oficial varios grupos en los
servidor denominado “Puppet Master”. Este nodo que se comparten experiencias de desarrollo y
central se encarga de muchas de las tareas como administración. Esta actividad se mantiene en
analizar las recetas y compilarlas para generar Twitter con valores que superan los 8K tweet y
catálogos. Estos catálogos son conjuntos de 53.6K seguidores. Por estas razones se clasificó
ficheros XML que serán recogidos por los clientes o como muy activo.
agentes. Los clientes solo se encargan de 2.2.3 Ansible
implementar la funcionalidad requerida al comparar
los catálogos almacenados en su cache local con Ansible es una de las más recientes herramientas
los del servidor y finalmente reporta al servidor los de automatización de IT, dentro de sus uso
cambios realizados. El Master también puede podemos encontrar la automatización del
enviar notificaciones a los clientes en caso de que aprovisionamiento en la nube, la gestión de la
los ficheros de configuración hayan cambiado para configuración, el despliegue de aplicaciones y la
hacer que el cliente obtenga los nuevos catálogos. orquestación de servicios y sus interdependencias.
En la arquitectura independiente los nodos Ansible Tower es su distribución comercial
administrados contienen la copia completa de su recomendada para el contexto empresarial. Es una
información de configuración y compilan su propio interfaz web que permite centralizar y controlar las
catalogo para luego en demanda o por un proceso infraestructuras incluyendo: un dashboard, control
planificado aplicarlos. de acceso basado en roles, planificación de
Trabaja con gran variedad de plataformas, trabajos y la gestión visual de los inventarios;
anunciando para próximas entregas la ampliación simplificando la creación de nuevos entornos,
del soporte de los agentes en Mac OS, AIX, Solaris, permitiendo a desarrolladores establecer fácilmente
etc. sus entornos para QA y Test amend de la
intervención del personal de Ops. Incluso el propio
Se emplea para gestionar servidores pero es capaz personal comercial podría establecer en demanda
de trabajar sobre cualquier sistema que soporte la entornos para demos.
instalación de los agentes. En las recientes

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

Cuenta con roles y playbook. Los roles son la soporte en el tiempo de atención, las vías de
agrupación de un conjunto de tareas, variables, comunicación y el tiempo de respuesta según el
plantillas para lograr un fin específico y los playbook tipo de problema reportado.
son los que permiten representar el conjunto de La actividad del proyecto ansible/ansible se
pasos o roles a seguir/aplicar en la infraestructura evidencia con los 16K commits, 81 releases y la
gestionada con Ansible. cantidad de issues resueltos que se ha mantenido
Los roles en Ansible son construidos en aras de alta desde principios del 2013, por lo que se valora
incluir ficheros y combinarlos de forma clara, como muy activo.
reusable que nos permitan abstraernos y Mantiene cuentas en las redes sociales como
enfocarnos en la idea general y solo profundizar en Google+ con más de 625 seguidores y más de 42K
los detalles de implementación cuando sea vistas, junto a su canal de YouTube con muy pocos
necesario. videos compartidos para alrededor de 600
Los roles pueden ser compartidos a la comunidad suscriptores. En el caso de LinkedIn se puede
mediante Galaxy que es el sitio web para compartir encontrar junto a su sitio oficial varios grupos en
roles o herramientas de línea de comandos creadas diferentes localidades. Pero donde se evidencia
para ayudar a trabajar con los roles. una gran actividad es en Twitter con cifras
Ansible trabaja sin contar con un agente instalado superiores a los 6K tweet y 12K seguidores. Por
en cada host, evitando la necesidad de mantener estas razones de clasificó como activo.
actualizado estos agentes y pudiendo resolver el 2.2.4 Salt
impedimento de gestionar host donde no existen los
agentes instalados. Ansible es descentralizado SaltStack es una de las herramientas para
delegando el control de acceso a las credenciales desplegar y orquestar infraestructuras de nube,
del OS a administrar o integrándose a sistemas de optimizar la configuración de sistemas y controlar
gestión centralizada de usuarios. una vasta cantidad de entornos como: VMware,
OpenStack, Google Compute Engine, AWS,
Su versatilidad le permite su aplicación en gran Docker, etc.
variedad de dispositivos, incluso dentro de sus
socios hay proveedores de dispositivos de red SaltStack es comúnmente empleado para
como CISCO y Juniper Networks. desplegar, gestionar y automatizar infraestructuras
y aplicaciones para big data, IoT, storages
Ansible está diseñado para ser fail-fast, sin dinámicos, redes definidas por software, servidores
embargo se plantea que existen diferentes formas de seguridad, etc.
de plantear test con su sintaxis. Aplicando estos
mecanismos de pruebas en las diferentes etapas Ha sido acreedora de varios premios en los últimos
de desarrollo local, QA y producción podemos años en competencias y eventos relacionados con
reducir los riesgos en los entornos reales de la gestión de virtualización, entornos de nube y big
producción. Existen diferentes formas de trabajo data, siendo un referente en las mejores prácticas
para los test, pero la esencia es siempre ejecutar de DevOps y herramienta de gestión de la nube.
los mismos playbook en desarrollo, QA y En la próxima versión empresarial han anunciado la
producción. incorporación de una GUI siguiendo los pasos de
Usualmente se liberan nuevas versiones cada dos su competencia.
meses. La aplicación principal se desarrolla Para la modularización cuenta con módulos y
conservadoramente valorando la simplicidad en el fórmulas que permiten representar la configuración,
diseño del lenguaje y la configuración. Sin despliegue y orquestación de los host.
embargo, el desarrollo de la comunidad alrededor Adicionalmente mantiene público en github una
de nuevos módulos y plugins ocurre rápidamente, colección de fórmulas y además cuenta con un
añadiendo 20 o más módulos en cada entrega. gestor de fórmulas Salt Package Manager (SPM)
Cuenta con un servicio de consultoría y que permite construir y desplegarlas de forma
entrenamiento, mediante el que especialistas sencilla y análoga a los sistemas de empaquetado
pueden revisar los contenidos y configuraciones de como Yum o RPM.
Ansible y Tower instalados haciendo Una de sus ventajas es que soporta ambos
recomendaciones para futuros proyectos; ayudando mecanismos de distribución (push y pull) según
en el proceso de migración desde otros CMT o sean las necesidades del cliente. Cuenta con
soluciones locales. También cuenta con un sitio diferentes componentes desde los que podemos
destinado al soporte en el que se organizan las ejecutar las acciones remotamente sobre los nodos
respuestas a preguntas frecuentes. administrados o distribuir los cambios mediante
Tower se ofrece en diferentes ediciones: Básica, aplicaciones instaladas previamente en los nodos a
Empresarial y Premium diferenciándose respecto al gestionar.

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

Salt emplea dos enfoques de prueba: pruebas de servicio de certificación.


integración y pruebas unitarias, para las que provee Los requerimientos de hardware no aparecen
bibliotecas en aras de minimizar las pruebas oficialmente, no obstante se menciona que requiere
manuales. pocos recursos y deben ser afinados en
Salt permite trabajar por entornos de trabajo dependencia de la cantidad de nodos y tareas
quedando agrupados sus archivos por estos concurrentes que se quiera realizar.
entornos. Esta estructura de archivos puede La actividad del proyecto saltstack/salt se evidencia
integrarse con diferentes CVS para que los minions con más de 50K commits, 101 releases y la
(agentes instalados en los host) los empleen como cantidad de issues resueltos desde los inicios que
código fuente. ha ido en ascenso, por lo que lo estimamos como
Cuenta con una detallada guía para probar las muy activo.
funcionalidades básicas de las herramientas de su Mantiene cuentas en las redes sociales como
arquitectura, incluyendo para ello un proyecto en Google+ con más de 600 seguidores y más de
github con el Vagrantfile necesario para probar el 115K visitas, junto a su canal de YouTube con 82
despliegue de un master y 2 minions. videos compartidos para alrededor de 115K
La licencia de la versión Empresarial se basa en la suscriptores. En el caso de LinkedIn se puede
cantidad de nodos y la suscripción del soporte en encontrar junto a su sitio oficial algunos grupos
dependencia del entorno y la infraestructura. relacionados. La actividad en Twitter se mantiene
Brindando siempre un soporte exclusivo y activa con cifra superiores a los 2K tweet y 6K
priorizado con expertos. Adicionalmente cuenta con seguidores. Por estas razones se clasificó como
servicios de consulta y entrenamiento que pueden muy activo.
ser incluidos en el contrato de soporte e incluso un
Tabla I: Comparación de las CMT seleccionadas
CFEngine Puppet Ansible Salt
Propiedades de la especificación
Tipo de lenguaje declarativo declarativo, imperativo declarativo declarativo
Interfaz de usuario CLI, Web CLI, Web CLI, Web CLI
Mecanismo de modularización si/Design Center si/Forge si/Galaxy si
Propiedades del despliegue
pequeños-medios-
Escalabilidad medios-grandes medios-grandes pequeños-medios
grandes
Agentes de
Arquitectura Gestión distribuida Gestión centralizada Gestión centralizada Gestión centralizada
traducción
de
Mecanismo de
despliegue pull pull push push, pull
distribución
Red Hat Enterprise
Linux, CentOS, Oracle Plataformas Unix con
CentOS, Debian, Plataformas con Python
Servidores Linux, Scientific Linux, Python 2.6 o superior e
RHEL, Ubuntu 2.6 o 2.7 (no Windows).
SUSE Linux Enterprise inferior a 3.0
Plataformas

Server, Ubuntu
Flexibilidad

Red Hat Enterprise


AIX, CentOS, Debian, Linux, CentOS, Oracle
Plataformas con Python
UP-UX, RHEL, SLES, Linux, Scientific Linux, plataformas Unix o
Clientes 2.4 o superior e
Solaris, Ubuntu, SUSE Linux Enterprise Windows
inferiores a 3.0
Windows Server, Ubuntu, Debian,
Windows
Dispositivos host host, dispositivos de red host, dispositivos de red host, dispositivos de red
Propiedades de gestión
Puppet-lint, rspec- Manual, componentes
Usabilidad

Soporte para test de Manual, comprobación Manual, comprobación


puppet, Beaker para test de integración
especificación de sintaxis de sintaxis
framework y unitario
Monitoreo de la
si si si si
infraestructura
Integración con el entorno Características de los host administrados durante la ejecución
Resolución de conflictos Conflictos de modalidad Conflictos de modalidad NE NE
Soporte para CVS si/Repositorio externo
Control de acceso Autenticación integrable con recursos externos y Autorización

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

CFEngine Puppet Ansible Salt


Soporte
Documentación disponible documentación, referencias, tutoriales, presentaciones, videos
Documentación de instalación web web web + pdf(para Tower) Web + pdf
repo, script, manual o repo, manual, script
Formas de instalación repo, script, manual repo, manual, script
Vagrant wizard para Tower
python-simplejson, msgpack-python, YAML,
Puppet Master,
Instalador del servidor Ansible Core, Ansible Jinja2, MarkupSafe,
PuppetDB y
Elementos para instalación de políticas y el de los Tower, libselinux- apache-libcloud,
PostgreSQL, Console,
clientes. python(si está habilitado Requests, ZeroMQ o
Agents
SELinux) RAET
Hasta 25 nodos versión máquina virtual de
Tower con Vagrant y Vagrant para prueba de
Recursos para evaluar producto Empresarial con prueba hasta 10 nodos,
recursos para AWS un master con 2 nodos
Vagrant cursos online
Frecuencia/ Política de
2 x año/LTS NE cada 2 meses NE
liberación
Funcionalidades adicionales de
GUI con dashboards para monitoreo de estado de los host, alertas, inventario y planificación de tareas.
la versión comercial

Comunidad
Contribuidores 73 398 1156 1248
Proyectos relacionados <10 >2116 <15 <40
Actividad del proyecto activo muy activo muy activo muy activo
Redes sociales, IRC,
Redes sociales, IRC, Redes sociales, IRC,
Redes sociales, IRC, Newsletter, RSS,
Newsletter, RSS, Newsletter, RSS,
Canales de comunicación Newsletter, RSS, Youtube, grupos de
Youtube, grupos de grupos de google,
Youtube google, Puppet Ask,
google Youtube, Reddit
Reddit,
Actualización
Tiempo desde la última entrega <6 meses <6 meses <6 meses <6 meses
Issues resueltos 1er semestre 211 de 238 729 de 763 926 de 1290 1441 de 2730
Año de creación 1993 2005 2012 2011
Popularidad
Usuarios/Temas de la lista de
712/6070 8181/14527 5234/7070 3234/5252
distribución
LinkedIn, NASA JPL,
SONY, redhat, Twitter, Departamento de
Intel, Linkedin, Evernote, Universidad
SUN Oracle, Motorola, Defensa de los E.U,
Clientes SAMSUNG,Chevron, de Hardvard, Verizon,
Empresas de WMWare, github, Intel, Universidades de
Comcast, DIRECTV Twitter
referencia at&t, NESTLE Columbia y Hardvard,
Rakspace, Salesforce
IBM, Cisco, Amazon, VMWare, redhat, redhat,VMWare, Cisco,
Socios NE
Microsoft, HP, VMWare RackSpace, mas de 50 HP
Presencia en redes sociales Activo Muy Activo Activo Muy activo
Tipo de Licencia GPL v3,0 Apache License v2.0 GPL v3,0 Apache License v2.0
Precio Negociar con proveedor $10500 $5000 Negociar con proveedor
Lenguaje de desarrollo C 95% Ruby 97% Python 89,4% Python 97.6%
12núcleos, 2GRAM, 4 núcleos, 16GB RAM,
Servidor 4GB RAM, 20G Disco NE
100MB Disco x agente 142G Disco
Requerimientos
256MB RAM, 100MB
de hardware
Cliente Disco o 1G para NE NE NE
Windows
NE: no especificado oficialmente.

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


Carbonell, E.; García, A. | “COMPARACIÓN DE HERRAMIENTAS DE GESTIÓN DE LA CONFIGURACIÓN”

3. CONCLUSIONES Horizons”, pp. 389-394, 2010


12. J. Rahman: “Investigating Configuration
Este trabajo permitió conformar un marco de Management Tools Usage in Large Infrastructure”,
comparación basado en un conjunto de Tesis de maestría en la Universidad de OSLO,
características aplicables a las CMT, para de forma 2012
sencilla y rápida poder conformar una descripción
general que caracterice este tipo de productos en 13. M. Caballer Fernández: “Gestión de
ausencia de expertos en el tema. El marco infraestructuras virtuales configuradas
establece una comparación entre cuatro de las dinámicamente”, Tesis doctoral en la Universidad
CMT más populares permitiendo a un usuario no Politécnica de Valencia, 2014.
experto tomar en consideración los aspectos 14. K. Torberntsson y Y. Rydin: “A Study of
planteados en el mismo para seleccionar la Configuration Management Systems: Solutions for
herramienta que sea la más adecuada a las Deployment and Configuration of Software in a
necesidades de empresas e instituciones de Cloud Environment”, 2014.
pequeña, media y gran escala. 15. T. Delaet, W. Joosen, y B. Vanbrabant: “A
survey of system configuration tools”, 2010.
4. REFERENCIAS BIBLIOGRÁFICAS 16. S. Pandey: “Investigating Community,
Reliability and Usability of CFEngine, Chef and
1. W. Hummer, F. Rosenberg, F. Oliveira, and Puppet”, Tesis en la Universidad de Oslo, 2012.
T. Eilam: “Testing idempotence for infrastructure as
17. A. Chandrasekar y G. Gibson: “A
code,” en Middleware 2013, Springer, 2013, pp.
Comparative Study of Baremetal Provisioning
368–388.
Frameworks”, 2014.
2. S. Nelson-Smith: “Test Driven Infrastructure
18. B. Vanbrabant: “A framework for integrated
with Chef”, Segunda Edición, O’Reilly Media Inc.,
configuration management of distributed systems”,
2014.
Tesis doctoral en Universidad de KU Leuven, 2014.
3. M. Burgess: “Testable system
administration,” Communications of the ACM, Vol.
54, No. 3, pp. 44 - 49, 2011. 5. SÍNTESIS CURRICULARES DE LOS
4. B. Siebert, M. van Eekelen, y J. Visser: AUTORES
“Evaluating the testing quality of software defined Enrique Carbonell Muela. Licenciado en Ciencias de la
infrastructures”, Thesis, Radboud University Computación, graduado con honores en la Universidad Central de
Nijmegen, 2014. Las Villas (UCLV, 2010). Se incorporó a trabajar en DATYS en
septiembre del 2010 donde ha trabajado en diferentes roles:
5. J. Humble y D. Farley: “Continuous delivery: desarrollador de software, líder de un equipo de desarrollo y
reliable software releases through build, test, and actualmente se desempeña como DevOps Engineer en el equipo
de infraestructura y operaciones. Es miembro de la Unión de
deployment automation”, 2010.
Informáticos de Cuba y estudiante de la Maestría en Ciencias de La
6. “Sysadmin & Security Salary and Skill Report”, Computación de la UCLV en su 11na edición.
2015. Ana María García Pérez. Licenciada en Cibernética-Matemática de
la Universidad Central de Las Villas (UCLV, 1982). Profesora Titular.
7. M. Hüttermann: “DevOps for developers: Doctora en Ciencias Técnicas del Instituto Superior Politécnico
integrate development and operations, the agile José Antonio Echevarría (CUJAE, 1997). Miembro del Comité
way”, 2012. Académico de la Maestría en Ciencia de la Computación de la
UCLV y del Comité Académico de la Maestría en Gestión de
8. C. Delettre: “Plateforme ouverte, évolutive, Proyectos de la Universidad de las Ciencias Informáticas (UCI).
sécurisée et orientée utilisateur pour l’e-commerce,” Jefe de la Carrera Ciencia de la Computación de la UCLV (1995–
Universidad Nice Sophia Antipolis. Escuela Doctoral 2009). Ha dictado pre y postgrado como profesora invitada en
de Ciencias y Tecnologías de la Información y la varias universidades latinoamericanas, entre ellas: Universidad de
Antioquia de Medellín, Colombia, UPC de Lima, Perú, Universidad
Comunicación (STIC), 2014. de Guadalajara, México, Centro Universitario de la Ciénega de
9. D. Spinellis: “Don’t Install Software by Hand”, Ocotlán, Jalisco, México, Universidad Católica de Santa María de
Arequipa, Perú y la Universidad de Managua, Nicaragua. Jefe del
IEE Computer Society, 2012.
Grupo Científico de Programación e Ingeniería de Software del
10. D. A. Wheeler, “How to evaluate open Centro de Estudios de Informática de la UCLV (2000 – 2008).
source software/free software (OSS/FS) programs”, Miembro del Comité de Editores de la Revista Cubana de Ciencias
Informáticas (RCCI). Revisora de la revista ACIMED, Revista
[Online]: Cubana de Investigaciones en Ciencias de la Salud. Pertenece al
http://www.dwheeler.com/oss_fs_eval.html, 2011 CTN 18 de la ONN de Cuba para las normas cubanas del software
11. K. Stol y M. Ali Babar: “A Comparison siendo coautora de 4 normas ya registradas. Actualmente es Sub
Directora Comercial de la División Territorial DESOFT Villa Clara.
Framework for Open Source Software Evaluation
Methods”, Libro: “Open Source Software: New

“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”


“IV Taller Internacional Las TIC en la Gestión de las Organizaciones”

También podría gustarte