Instituto Nacional de Tecnologías de la Comunicación GUÍA PARA LA INTEGRACIÓN DE SOFTWARE Departamento/Proyecto/ Subtítulo Mes 2008 Instituto Nacional de Tecnologías de la Comunicación HISTÓRICO DE CAMBIOS Fecha Versión Descripción Autor Departamento/Proyecto/ Subtítulo 2 Instituto Nacional de Tecnologías de la Comunicación Departamento/Proyecto/ Subtítulo 3 Instituto Nacional de Tecnologías de la Comunicación ÍNDICE 1. INTRODUCCIÓN 5 2. ALCANCE 6 3. ESTRATEGIAS DE INTEGRACIÓN INCREMENTAL 7 3.1. Integración Top-Down 7 3.2. Integración Bottom-Up 8 3.3. Integración Sandwich 8 3.4. Integración orientada a riesgos 9 3.5. Integración orientada a funcionalidades 9 4. BUENAS PRÁCTICAS 10 5. REFERENCIAS 11 Departamento/Proyecto/ Subtítulo 4 Instituto Nacional de Tecnologías de la Comunicación 1. INTRODUCCIÓN El término integración se refiere a las actividades de desarrollo de producto software donde se combinan componentes de software separados en un único sistema. El esfuerzo destinado a la integración de producto puede oscilar entre unas horas y varios meses, dependiendo del tamaño del producto. La integración conlleva la prueba del componente integrado como un todo y la corrección de los defectos encontrados. La integración mediante el ensamblado de todos los componentes del producto a la vez al final de las fases de diseño y construcción se llama “Integración Big Bang”. Es muy difícil aislar las causas de los errores encontrados en las pruebas si un producto se integra utilizando este enfoque. Además, la “Integración Big Bang” no puede comenzar hasta un momento avanzado del proyecto porque requiere que todos los módulos o sub-módulos del producto hayan sido desarrollados y probados de forma unitaria. Por tanto, excepto cuando se trate de un producto integrado muy pequeño, no se recomienda seguir este enfoque. La integración incremental es un enfoque donde el producto se construye y se prueba en segmentos pequeños, donde los errores son más fáciles de aislar y corregir; las interfaces se pueden probar de forma completa, y se puede aplicar un enfoque de pruebas sistemáticas. Departamento/Proyecto/ Subtítulo 5 Instituto Nacional de Tecnologías de la Comunicación 2. ALCANCE El propósito de estas pruebas es descubrir los defectos de las interconexiones y de la interacción entre sistemas o componentes integrados. Puede haber más de un nivel de integración y las pruebas pueden realizarse sobre objetos de tamaño variable. Por ejemplo: - Las pruebas de integración de componentes prueban la interconexión entre componentes de software, y se ejecutan después de las pruebas unitarias. Este tipo de pruebas de integración las realizan los desarrolladores. - Las pruebas de integración de sistemas prueban la interconexión entre distintos sistemas y se ejecutan después de las pruebas de sistema de cada sistema individual. Este tipo de pruebas de integración las realizan técnicos de pruebas. Departamento/Proyecto/ Subtítulo 6 Instituto Nacional de Tecnologías de la Comunicación 3. ESTRATEGIAS DE INTEGRACIÓN INCREMENTAL Antes de realizar cualquier prueba de integración, es necesario establecer una estrategia y decidir cómo unir las distintas partes de un sistema. La integración incremental requiere una buena planificación de la secuencia de integración. La mayoría de los sistemas integran unos componentes antes que otros. La planificación de esta integración también afecta a la planificación de la construcción (desarrollo); el orden en que se construyen los componentes tiene que soportar el orden en que se van a integrar. A continuación, se describen algunas de las estrategias estándar para la integración incremental: 3.1. INTEGRACIÓN TOP-DOWN El sistema se construye por fases empezando por los componentes que llaman a otros componentes. Figura 1.Integración Top-Down 1 2 4 3 5 6 7 Módulo reemplazado por un stub Stub A medida que se integran los módulos, se realizan pruebas de regresión para capturar y corregir nuevos errores. Ventajas La lógica de control del sistema se prueba relativamente pronto. Los grandes problemas conceptuales de diseño se identifican rápidamente. Se puede obtener un sistema que funcione parcialmente en un momento temprano del proyecto. La codificación puede comenzar antes de que los detalles de diseño a bajo nivel estén completos. Inconvenientes Los problemas de interfaces a bajo nivel se detectan tarde. Departamento/Proyecto/ Subtítulo 7 Instituto Nacional de Tecnologías de la Comunicación 3.2. Gran número de stubs1 a mantener. No se puede aplicar en diseños orientados a objetos y sistemas interactivos. INTEGRACIÓN BOTTOM-UP Los componentes se integran en el sentido contrario al caso anterior, primero los componentes que son llamados por otros. Figura 2.Integración Bottom-Up Módulo reemplazado por un driver 1 Driver 2 4 3 5 6 7 Ventajas Ejecuta interfaces a bajo nivel potencialmente problemáticas en un momento temprano Inconvenientes 3.3. Problemas conceptuales de diseño a alto nivel se detectan tarde. Corregir esos problemas puede implicar desechar o realizar mucho re-trabajo en módulos a bajo nivel. Requiere que el diseño de todo el sistema esté completo antes de comenzar la integración. INTEGRACIÓN SANDWICH Primero, se integran los módulos de alto nivel y de control. Después, los módulos de bajo nivel. La integración de los módulos de nivel intermedio se hace al final. Ventajas Evita la rigidez de las integraciones top-down y bottom-up. Integra los módulos más problemáticos primero y permite minimizar los drivers2 y stubs. Implementación esquemática o con un propósito especial de un componente software, usado para desarrollar o probar un componente que llama o depende de él. Reemplaza al componente llamado 1 Departamento/Proyecto/ Subtítulo 8 Instituto Nacional de Tecnologías de la Comunicación 3.4. INTEGRACIÓN ORIENTADA A RIESGOS Se identifica el nivel de riesgo asociado a cada módulo. Los módulos de riesgo alto se integran primero y los módulos de menor riesgo se integran más tarde. Ventajas 3.5. Evita la rigidez de las integraciones top-down y bottom-up. Integra los módulos más problemáticos primero y permite minimizar los drivers y stubs. INTEGRACIÓN ORIENTADA A FUNCIONALIDADES Los módulos se integran en grupos que constituyen una funcionalidad identificada. Ventajas Minimiza el uso de drivers y stubs. Cada grupo nuevo integrado proporciona un incremento en funcionalidad. Funciona bien para sistemas orientados a objetos. Componente software o herramienta de prueba que reemplaza un componente que se encarga del control y/o de la llamada a un componente o sistema 2 Departamento/Proyecto/ Subtítulo 9 Instituto Nacional de Tecnologías de la Comunicación 4. BUENAS PRÁCTICAS La secuencia y número de pasos requeridos en la integración dependen de la ubicación de las interconexiones de alto riesgos dentro de la arquitectura. La mejor opción es empezar la integración por aquellas conexiones que se espera que causen mayores problemas. De esta forma, se evitan encontrar los mayores defectos al final de la etapa de pruebas de integración. Con el objetivo de reducir este riesgo es aconsejable no usar la integración Bigbang. También se recomienda que las personas que lleven a cabo las pruebas entiendan la arquitectura y realicen una buena planificación. Departamento/Proyecto/ Subtítulo 10 Instituto Nacional de Tecnologías de la Comunicación 5. REFERENCIAS Es importante que se haga unos buenos planes de integración del software y de pruebas de integración. Para ello la organización puede contar con plantillas para realizar dichos planes como pueden ser las plantillas: - Plan de integración del software: plantilla para generar el plan de integración del software, describiendo el alcance y la estrategia que se va a seguir para integrar los distintos módulos o componentes. - Plan de pruebas de integración: plantilla para generar el plan de las pruebas de integración del software, especificando el entorno a utilizar, casos de prueba, criterios de salida, estrategias entre otros aspectos. Departamento/Proyecto/ Subtítulo 11