Está en la página 1de 6

3.3 CONSTRUCCIÓN DEL SISTEMA.

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


completo al compilar y vincular los componentes del sistema, librerías externas,
archivos de configuración, etcétera.
Las herramientas de este y las de gestión diversiones deben comunicarse, puesto
que 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.

La construcción es un proceso complejo, donde suelen ocurrir errores, ya que hay


tres diferentes plataformas de sistema que pueden estar implicadas:

1. Sistema de desarrollo: incluye herramientas de desarrollo, como los


compiladores, 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 mucho antes de hacer cambios al sistema. Tal vez quieran construir
una versión del sistema para probarla en su entorno de desarrollo antes de
aplicar los cambios que hicieron ante el sistema de gestión de versiones.
Esto supone usar herramientas de construcción locales que usan versiones
de componentes sacadas en el espacio de trabajo privado.
2. Servidor de construcción: usado para construir versiones ejecutables
definitivas del sistema. Éste interactúa estrechamente con el sistema de
gestión de versiones. Los desarrolladores ingresan código a este sistema
antes de que se construya. La elaboración del sistema puede depender de
librerías externas que no se incluyen en el sistema de gestión de versiones.
3. Entorno objetivo: plataforma donde se ejecuta el sistema. Éste puede ser
el mismo tipo de computadora que se usó para los sistemas de desarrollo y
construcción. Sin embargo, para sistemas embebidos y de tiempo real, el
entorno objetivo con frecuencia es más pequeño y sencillo que el entorno de
desarrollo. Para sistemas grandes, el entorno objetivo puede incluir bases de
datos y otros sistemas COTS que no pueden instalarse en máquinas
desarrollo. En ambos casos, no es posible construir y probar el sistema en la
computadora de desarrollo o en el servidor de construcción.

Para sistemas embebidos puede instalarse un entorno de simulación en el entorno


de desarrollo para pruebas, en vez de usar la plataforma de sistema embebido real.
Dichos simuladores pueden ofrecer mejor soporte de depuración que el disponible
en un sistema embebido. Sin embargo, es muy difícil simular el comportamiento de
un sistema embebido en todos los aspectos. Por lo tanto, las pruebas del sistema
se deben realizar en la plataforma real donde se ejecutará el sistema, así como en
el simulador del sistema.

La construcción del sistema implica ensamblar una gran cantidad de información


acerca del software y su entorno operacional. Entonces, para cualquier sistema
aparte de los pequeños, siempre tiene sentido usar una herramienta de construcción
automatizada para crear una construcción del sistema.

Puede observar que no sólo necesita los archivos del codigo fuente implicado
en la construcción, sino tal vez se deban vincular dichos archivos, archivos
de datos (como un archivo de mensajes de error) y archivos de configuración
proporcionados externamente que definan la instalación objetivo.

Existe una gran cantidad de herramientas de construcción disponibles, y un sistema


de construcción ofrece algunas características o todas ellas:

1. Generación de rutinas (scripts) de construcción: Si es necesario, el


sistema de construcción debe analizar el programa en construcción,
identificar los componentes dependientes y generar automáticamente una
rutina de construcción (llamado algunas veces archivo de configuración).
2. Integración del sistema de gestión de versiones: El sistema de
construcción debe sacar las versiones de componentes requeridas del
sistema de gestión de versiones.
3. Recopilación mínima: El sistema de construcción debe establecer qué
código fuente necesita volver a compilarse y establecer las compilaciones si
así se requiere.
4. Creación de sistema ejecutable: El sistema de construcción debe vincular
los archivos de código de objeto compilado entre sí y con otros archivos
requeridos, como las librerías y los archivos de configuración, para crear un
sistema ejecutable.
5. Automatización de pruebas: Algunos sistemas de construcción pueden
efectuar pruebas automatizadas utilizando herramientas de automatización
de pruebas como JUnit. Éstas comprueban que la construcción no se haya
“roto” por los cambios.
6. Informes: El sistema de construcción debe ofrecer informes sobre el éxito o
fracaso de la construcción y las pruebas que se efectuaron.
7. Generación de documentación: El sistema de construcción puede generar
notas referentes a las páginas de ayuda de la construcción y del sistema.

La rutina de construcción incluye la especificación de la configuración, de manera


que el lenguaje de escritura de rutinas utilizado generalmente es el mismo que el
lenguaje de descripción de la configuración. El lenguaje de configuración incluye
sentencias para describir los componentes del sistema a incluir en la construcción
y sus dependencias.
Puesto que la compilación es un proceso de cómputo intensivo, las herramientas
para soportar la construcción de sistemas se diseñan por lo general para minimizar
la cantidad de compilación que se requiere. Esto se hace comprobando si está
disponible una versión compilada de un componente. De ser así, no hay necesidad
de volver a compilar dicho componente.
La forma en que se hace esto es asociar una firma única con cada archivo donde
se almacene un componente del código fuente. El código objeto correspondiente,
que se compiló a partir del código fuente, tiene una firma relacionada que identifica
cada versión del código fuente y cambia cuando éste se edita. Al comparar las
firmas en los archivos de código fuente y objeto, es posible decidir si el componente
del código fuente se usó para generar el componente de código objeto.

Hay dos tipos de firmas que pueden usarse:


1. Modificación de marca de tiempo (timestamp0:) La firma en el archivo del
código fuente es la fecha y hora de cuándo éste se modificó. Si el archivo del
código fuente de un componente se modifica después del archivo del código
objeto relacionado, entonces el sistema supone que se requiere
“recopilación” para crear un nuevo archivo del código objeto.
2. Sumas de verificación (checksums) de código fuente: La firma en el
archivo del código fuente es una suma de verificación calculada a partir de
datos en el archivo. Una función checksum calcula un número único usando
el texto fuente como entrada. Si se modifica el código fuente (incluso por un
carácter), esto generará una suma diferente. La suma de verificación se
asigna al código fuente justo antes de la compilación e identifica de manera
exclusiva el archivo fuente. Entonces el sistema de construcción etiqueta el
archivo de código objeto generado con la firma checksum. Si no hay archivo
de código objeto con la misma firma que el archivo de código fuente a incluir
en un sistema, entonces es necesario recompilar el código fuente.

El enfoque checksum tiene la ventaja de permitir muchas versiones diferentes del


código objeto de un componente para mantenerse al mismo tiempo. La firma es el
vínculo entre el código fuente y objeto. Los archivos de código fuente y de código
objeto tienen la misma firma. Por lo tanto, cuando se recompila un componente, no
sobrescribe el código objeto, como sería normalmente el caso cuando se usa
timestamp. En vez de ello, genera un nuevo archivo de código objeto y lo etiqueta
con la firma del código fuente.

Los métodos ágiles recomiendan que los componentes de sistema muy frecuentes
deben realizarse con pruebas automatizadas (pruebas de humo) para descubrir
problemas del software. Los componentes frecuentes pueden ser parte de un
proceso de integración continua:

Pasos de la integración continua:

1. Sacar la línea principal del sistema de gestión de versiones hacia el espacio


de trabajo privado del desarrollador.
2. Construir el sistema y efectúe pruebas automatizadas para garantizar que el
sistema construido pasa todas las pruebas. Si no lo hace, la construcción se
descompone y hay que informar a quienquiera que ingrese al último sistema
línea base (baseline). Ellos son responsables de reparar el problema.
3. Realizar los cambios a los componentes del sistema.
4. Construir el sistema en el espacio de trabajo privado y vuelva a efectuar las
pruebas del sistema. Si las pruebas fallan, continúe la edición.
5. Una vez que el sistema pasa sus pruebas, ingresar en el sistema de
construcción, pero no confirme como una línea base nueva del sistema.
6. Construir el sistema en el servidor de construcción y efectúe las pruebas.
Necesita hacer esto en caso de que otros hayan modificado componentes
luego de que usted los sacó del sistema. Si éste es el caso, saque el
componente que falló y edítelo de modo que las pruebas pasen en su espacio
de trabajo privado.
7. Si el sistema pasa sus pruebas en el sistema de construcción, confirmar
entonces los cambios que hizo como una nueva línea base en la línea
principal del sistema.

El sistema más reciente en la línea principal es el sistema funcional definitivo. Sin


embargo, aunque la integración continua es una buena idea, no siempre es posible
implementar este enfoque a la construcción del sistema.

Las razones para esto son:

1. Si el sistema es muy grande, puede tardar mucho tiempo construir y probar.


Por lo tanto, no es práctico construir muchas veces al día dicho sistema.
2. Si la plataforma de desarrollo es diferente de la plataforma objetivo, tal vez
no sea posible efectuar pruebas del sistema en el espacio de trabajo privado.
Puede haber diferencias en el hardware, el sistema operativo o el software
instalado. Por consiguiente, se requiere más tiempo para probar el sistema.

Para sistemas grandes o sistemas donde la plataforma de ejecución no es la misma


que la plataforma de desarrollo, la integración continua quizá no sea práctica. Ante
tales circunstancias se puede usar un sistema que se construya diariamente.

Características de esto:
1. La organización de desarrollo establece un tiempo de entrega (por ejemplo,
2 P.M.) para los componentes del sistema. Si los desarrolladores tienen
nuevas versiones de los componentes que escriben, deben entregarlas en
ese plazo. Los componentes pueden estar incompletos, pero deben ofrecer
alguna funcionalidad básica que pueda ponerse a prueba.
2. A partir de dichos componentes se crea una nueva versión del sistema al
compilarlos y vincularlos para formar un sistema completo.
3. Entonces este sistema se entrega al equipo de pruebas, que realiza un
conjunto de pruebas de sistema predefinidas. Al mismo tiempo, los
desarrolladores todavía trabajan en sus componentes, añaden funcionalidad
y reparan las fallas descubiertas en pruebas anteriores.
4. Las fallas que se descubren durante las pruebas del sistema se documentan
y regresan a los desarrolladores del sistema, quienes reparan dichas fallas
en una versión posterior del componente.

Las ventajas de usar componentes frecuentes de software son que aumentan las
posibilidades de descubrir de manera oportuna durante el proceso los problemas
que surgen a partir de las interacciones de los componentes.

Libro: ingeniería de software 9 edicion. Ian Sommerville


Libro: Ingernieria de software Sexta edición. Roger. Pressman

También podría gustarte