Informática
Control de Cambios del Software
PROCESO DE CONTROL DE CAMBIOS GUIADO POR LA ARQUITECTURA DEL SOFTWARE
Keywords: Software Architecture, Software Configuration Management, Change Control Software Product Management
RESUMEN
En los últimos años ha habido grandes avances en disciplinas de apoyo al desarrollo de software, tal es el caso de la Arquitectura de Software y la Administración de Configuraciones
Estas disciplinas hacen grandes aportes al control de los proyectos y de los productos de software, a lo largo de su ciclo de vida, pero cada uno ataca una dimensión diferente del producto.
Dentro de las actividades de desarrollo, aparece la elaboración de la Arquitectura del Software como un paso inicial del Diseño que ofrece una vista global del sistema, de su estructura interna y de la forma como interactúan sus componentes. Este modelo es deshechado una vez se inicia la construcción del sistema y no es actualizada para reflejar los cambios hechos al software.
Para el control de la integridad y consistencia del código se utilizan herramientas de Administración de Configuraciones, las cuales obligan al usuario (desarrollador) a manejar el producto en términos de la representación interna de la herramienta y dejar de lado el mundo del problema.
Este artículo presenta una propuesta innovadora para la administración de proyectos de software, desde el punto de vista de administración del producto de software. Es la convergencia de dos disciplinas de apoyo al desarrollo y mantenimiento de software, la Arquitectura de Software y el Manejo de Configuraciones.
INTRODUCCIÓN
La Arquitectura del Software es un concepto que define el producto de software como un agregado de componentes (funcionales o estructurales). Este concepto es utilizado en la construcción de software como base para el desarrollo, en la fase de diseño de alto nivel, se construye un modelo del producto, llamado Arquitectura del software, el cual es utilizado como base para el diseño detallado.
Los sistemas de software enfrentan largas vidas útiles, durante las cuales el entorno de la organización y las condiciones de los requisitos iniciales varían constantemente. Para que tales sistemas respondan a los requisitos operativos para los que fueron desarrollados y que además se ajusten a las nuevas condiciones, se hace necesario mantener el software.
En general los sistemas de software son complejos y su tamaño crece a medida que le son adicionadas nuevas funcionalidades. Las actividades de mantenimiento realizadas para ajustar el software a los nuevos requisitos lo deterioran en su estructura, de manera que en el tiempo el software ya no corresponde a la arquitectura considerada para su desarrollo, el código no corresponde a la documentación y cada vez es más difícil entender el sistema.
La administración de configuraciones de software es una disciplina que apoya directamente el desarrollo y mantenimiento del software, mediante la conservación de la integridad del producto antes y después de su puesta en producción.
Las herramientas de manejo de configuraciones existentes se basan en mecanismos de bajo nivel que administran el producto como un agregado de archivos que evolucionan independientemente, obligando a los usuarios (desarrolladores) a manejar externamente los conceptos de configuración y baseline del software.
La unión de la Arquitectura del Software y la Administración de Configuraciones en un Ambiente Guiado por Procesos resulta en la capacidad de administrar la evolución de las partes basado en un concepto de alto nivel que agrupa el producto de software como un agregado de partes. Esta unión permite cubrir las falencias de las herramientas de manejo de configuraciones.
El objetivo de este artículo es justificar la necesidad de una herramienta que se base en la arquitectura del producto a construir, y que además controle su evolución para evitar su desestructuración a lo largo de su vida útil.
Este artículo se divide en cinco secciones. En la sección 1 se hace una breve reseña del proceso de Administración de Configuraciones y de la forma como es soportado por algunas herramientas automáticas.
La sección 2 define un concepto emergente en la ingeniería de software: La Arquitectura del Software y muestra el importante papel que juega en el desarrollo de software.
A partir del estado del arte presentado, el aparte 3 contiene la propuesta de investigación de este documento orientada a mejorar el desarrollo y mantenimiento del software.
La sección 4 presenta las principales conclusiones del proyecto y la última sección enuncia los trabajos futuros que soportan la continuidad del trabajo de investigación.
SOFTWARE CONFIGURATION MANAGEMENT (SCM)
La Administración de Configuraciones (SCM) es una disciplina para manejar la evolución de los productos de software a lo largo de su vida, desde las etapas del desarrollo, hasta que el producto sale del ambiente de explotación. [ISPI], [FEI92], [HUM92]
El diccionario de términos IEEE en [PIA96], define Administración de Configuraciones como el proceso de identificar y definir los ítems de configuración en un sistema, controlando la entrega y el cambio de estos elementos a través del ciclo de vida del sistema, almacenando el estado de los ítems de configuración y de las solicitudes de cambio, y verificando la completitud con respecto a los requerimientos especificados.
Las actividades de Administración de Configuraciones se presentan en dos dimensiones: Una dimensión de soporte al grupo de desarrollo y a sus necesidades de manipulación del producto y una dimensión administrativa, que considera las necesidades de gestión y reporte del cambio.
El CMM [CMM] es un modelo de calidad de software, el cual se refiere a la dimensión administrativa de SCM. Este modelo establece el propósito SCM como: Establecer y mantener la integridad de los productos de software a lo largo de su ciclo de vida.
La norma ISO 10007 [ISO 10007], define el objetivo principal de SCM como: Documentar y proveer visibilidad de los productos de software y del estado de progreso en la satisfacción de los requerimientos funcionales y físicos.
En general los distintos estándares de SCM coinciden en definir su racionalidad en la necesidad de controlar la mutabilidad del software a lo largo del ciclo de vida, lo que considera las etapas de construcción y el tiempo que el producto permanece en el ambiente de producción.
Existen actualmente varias herramientas de soporte a SCM, como PVCS, CVS; RCS, Clear Case, ADELE, pero la mayoría de ellas se concentran en el soporte a las actividades de apoyo al desarrollo y dejan de lado las actividades administrativas, es decir, el proceso.
Estas herramientas en ningún caso manejan una descripción del producto en términos de los servicios que ofrece o de su descomposición estructural, sino que usan la composición física del producto terminado, es decir el conjunto de archivos que componen el software.
Además soportan la construcción del producto, mediante establecimiento de baselines y versionamiento de archivos, pero no consideran las actividades de manejo del producto una vez éste ha sido liberado al ambiente de producción.
SOFTWARE ARCHITECTURE
La Arquitectura del software es una disciplina emergente que define una representación estructural del producto, en términos de una descomposición del sistema en subsistemas, módulos, componentes, hasta alcanzar el nivel de granularidad deseado. Tiene como objetivo disminuir la complejidad de manejo del producto, esquematizándolo en un árbol estructural [SHAW].
La Arquitectura del software es un concepto de alto nivel que no ha sido involucrado en las herramientas automáticas de soporte a la construcción de software. Este concepto es utilizado dentro de las metodologías de desarrollo, en las etapas tempranas del diseño, en las cuales se construye un modelo estructural del producto, el cual es utilizado como guía para la construcción del producto.
La arquitectura de software ha tenido gran acogida por las metodologías de desarrollo, las cuales ven en ella un modelo que puede ser usado para guiar las actividades de la construcción del software.
Un asunto que aún no ha sido direccionado es el mantenimiento de la arquitectura, a medida que el software evoluciona en su vida útil, la arquitectura no es actualizada, por lo cual pierde vigencia y termina por no representar el software en el ambiente de producción.
No se ha explotado aún todo el potencial del concepto de la arquitectura, las herramientas de soporte a la construcción de software en ningún caso utilizan el diagrama de la arquitectura como base para la creación, manipulación y recuperación del producto y tampoco es utilizada como base para los análisis de impacto de un cambio al producto terminado.
Existe un gran vacío entre la representación lógica del software, expresada en su arquitectura, y en la composición física del producto en términos de archivos, las herramientas existentes no guardan una correspondencia entre los niveles de abstracción de los modelos del producto.
PROPUESTA
La propuesta de este proyecto presenta un enfoque de administración del producto de software basado en la arquitectura, permitiendo que el equipo de desarrollo manipule el producto desde el modelo abstracto y puedan analizar el producto en términos de su estructura y funcionalidad, ya que ésta es la forma natural en que ellos lo conciben.
Se apoya en una herramienta de manejo de configuraciones, la cual manipula los conceptos de evolución de archivos, de manera que se aprovecha todo lo que se ha avanzado en esta disciplina, pero este manejo de la vista física del producto es transparente para el usuario.
Para unir la abstracción del producto de software con la representación física del producto define representaciones intermedias de conceptos de alto nivel de Manejo de Configuraciones, tales como Baseline, Objetos Generadores, etc. y los hace corresponder con los conceptos de archivos de las herramientas de manejo de configuraciones.
La propuesta consiste en la aplicación de una administración del producto de software, basados en el mantenimiento de la arquitectura de software, a lo largo del ciclo de vida del producto. Esto implica que el desarrollo sea guiado por un diseño de alto nivel o arquitectura y que el proceso de control de cambios involucre las actividades de actualización de ese modelo para asegurar la correspondencia entre el software y su arquitectura.
CONCLUSIONES
Es sabido que el éxito del mantenimiento de software radica en el entendimiento que se logre del sistema y más aún de su propósito (requerimientos iniciales). También es cierto que los mayores obstáculos son la desestructuración que sufre el sistema a lo largo de su evolución y la carencia de la documentación adecuada o su desactualización respecto del software.
La Administración de Configuraciones se encarga de mantener la calidad del software y la capacidad de duplicar el producto en el tiempo, usando un conjunto de procedimientos formales de control de cambios, un registro del estado de cada uno de los ítems de configuración y de las solicitudes de cambio.
La Arquitectura de Software es una disciplina emergente que surge con gran fuerza e importancia para los desarrolladores de software. Pero no se ha explotado aún todo el potencial de este concepto, las herramientas de soporte a la construcción de software en ningún caso utilizan el diagrama de la arquitectura como base para la creación, manipulación y recuperación del producto y tampoco es utilizada como base para los análisis de impacto de un cambio al producto.
Cualquier intento de automatización de este proceso hará más eficiente el Proceso de Administración de Configuraciones, aumentando el soporte al grupo de desarrollo y liberando al grupo de Configuraciones de tareas tediosas, aumentando su productividad.
TRABAJOS FUTUROS
Esta propuesta de investigación se inscribe dentro de un proyecto del área de Construcción de Software del Departamento de Ingeniería de Sistemas y Computación, de la Universidad de los Andes, en el cual se pretende construir un ambiente guiado por procesos AVEMA(Arquitectura Variación Evolución MAnufactura).
Los siguientes pasos son:
Construir un núcleo del ambiente guiado por procesos, el cual sea expandible con el tiempo, para lo cual la herramienta debe estar basada en los conceptos del proceso más que en las tareas o en la tecnología usada para automatizarlas.
Incluir en el modelo de AVEMA, el servicio de Reingeniería, que reconstruya la arquitectura a partir de un conjunto de archivos.
Definir lenguajes de descripción de arquitecturas que permitan especificar todos los aspectos de una Arquitectura de Software.
Adicionar a la herramienta, la parte del proceso de software, que guíe las actividades de desarrollo.
REFERENCIAS
libros
[BER92] BERLACK, H. Ronald. Software Configuration Management. John Wiley & Sons, 1992. ISBN 0-471-53049-2
[DYM95] DYMOND, Kenneth M. A Guide to the CMM. Process Inc US, 1995. ISBN 0-9646008-0-3
[EVA89] EVANS, Michael W. The Software Factory: A Fourth Generation Software Engineering Environment. John Wiley & Sons, 1989. ISBN 0-471-01192-4
[HUM92] HUMPHREY, Watts. Managing the Software Process. Prentice-Hall, 1992. ISBN 0-471-53049-2
[CMM95] PAULK, Mark C.; WEBER, Charles V; CURTIS, Bill y CHRISSIS, Mary Beth. The Capability Maturity Model: Guidelines for Improving the Software Process. Addison - Wesley, 1995. ISBN 0-201-54664-7
[PIA96] PIATINI, Mario G; CALVO-MANZANO, Villalon; CERVERA, Joaquín y FERNÁNDEZ, Luis. Análisis y Diseño detallado de aplicaciones informáticas de gestión. RAMA, 1996. ISBN 84-7897—233-1
[PIA95] PIATINI, Mario G y DARYANANI, Sunil N. Elementos y Herramientas en el desarrollo de sistemas de información. RAMA, 1995. ISBN 0-201-87894-1
[RAT] Rational Software Corporation. A Rational Approach to Software Development Using Rose 4.0. Rational Software Corporation, 1996.
[SHAW] SHAW, Mary y GARLAN, David. Software Architecture: Perspectives on an emerging discipline. Prentice Hall, 1996. ISBN 0-13-182957-2
Artículos
[CMM] PAULK, Mark; WEBER, Charles V.; GARCIA, Suzanne M.; CHRISSIS, Mary Beth; BUSH, Marilyn. Key Practices of the Capability Maturity Model, Version 1.1. SEI-93-TR-025
[DAR92] DART, Susan A. The Past, Present and Future of Configuration Management. Technical Report CMU/ SEI -92.
[FAV] FAVRE, J.M. Reverse - Engineering- in - The - Large: origin, taxonomy, goals and difficulties. University of Grenoble.
[FEI91] FEILER, Peter H. Configuration Management Models in Commercial Environments. Technical Report CMU/ SEI -91.
[HOEK] VAN DER HOEK, André; HEIMBIGNER, Dennis y WOLF, Alexander L. Software Architecture, Configuration Management and Configuration Distributed Systems: A Ménage a Trois. Technical Report CU-CS-849-98.
[ISO-9003] ICONTEC, NTC - ISO 9003. Quality Management and Quality Assurance Standards. Part 3: Guidelines for the Application of ISO 9001, to the Development Supply and Maintenance of Software. ISO 9003, 1994.
[ISO-10007] ISO. Quality Management - Guidelines For Configuration Management. ISO 10007, 1995.
[ISPI] ISPI. SCM Concepts - Draft, 1997
[MED] MEDVIDOVIC, Neno. A Classification and Comparison Framework for Software Architecture Description Languages. Technical Report UCI-ICS-97-02.
[PRO] TRYGGESETH, Eirik; GULLA, Bjorn; CONRADI, Reidar. Modelling Systems with Variability using PROTEUS Configuration Language.
[SPM] FINKELSTEIN, Anthony; KRAMER, Jeff; NUSEIBEH, Bashar. Software Process Modelling and Technology, Versión 3.2,Draft.
[UML] RATIONAL SOFTWARE CORPORATION. UML Summary, UML Sintaxis y UML Sintactics., Versión 1.0.
[WAL91] WALLNAU, Kurt C. y FEILER, Peter H. Tool Integration and Environment Architectures. Technical Report CMU/ SEI -91-TR-11.
WEB pages
[ACME] www.cs.cmu.edu/~able/paper_abstracts/acme_esec97.html
[DARWIN] www-dse.doc.ic.ac.uk/research/darwin/darwin.html
[MENAGE] www.cs.colorado.edu/users/serl/arch/menage.html
[RAPIDE] pavg.standford.edu/rapide/language.html
[SADL] www.csl.sri.com/dsa/sadl-main.html
[UNICON] www.cs.cmu.edu/~Vit/afs/cs/project/Vit/www/unicon.html
[WRIGHT] www.cs.cmu.edu/afs/cs/project/able/www/able/papers_bib.html
Fuentes Dinámicas
Curso de Calidad del Software para Universidad de los Andes, dictado por José G. Rivera.
Curso de Calidad del Software para Universidad de los Andes, dictado por Martín A. Soto.
Videos del curso de Calidad de Software para Citibank, dictado por José G. Rivera.
Curso de Introducción a CMM para Citibank, dictado por Pablo Henríquez (Citibank - Chile).
Curso de Reingeniería de Software para Universidad de los Andes, dictado por J. M. Favre.
Curso de Administración de Configuraciones para Citibank, dictado por Ruby Casallas.
Descargar
Enviado por: | Vicente Casanova |
Idioma: | castellano |
País: | España |