1 INTRODUCCIÓN 1.1 Antecedentes Con el surgimiento y maduración de la ingeniería de software, nace una necesidad nueva: el desarrollo de herramientas que faciliten la construcción y documentación de los proyectos de desarrollo de software. Es común referirse a este tipo de herramientas con el nombre CASE (Computer Aided Software Engineering) que significa ingeniería de software asistida por computadora. Existe una lista amplia de herramientas comerciales que apoyan el proceso de desarrollo de software. Sin embargo, la mayoría de estas herramientas sólo apoyan una pequeña parte del proceso de desarrollo de software. Por ejemplo, algunas herramientas sirven únicamente para capturar los requisitos de un sistema, otras para mejorar la productividad en la programación utilizando algún lenguaje, etc. Sería conveniente poder combinar muchas de estas herramientas con la finalidad de crear un ambiente integrado de desarrollo de software. El desarrollo de un proyecto de software grande involucra la participación de un gran número de personas que se agrupan comúnmente de acuerdo a una funcionalidad. Por ejemplo, analistas, diseñadores, programadores, un grupo de pruebas, líderes de proyecto y arquitectos de software. Todos ellos colaboran para cumplir el objetivo común de terminar el proyecto. Las herramientas CASE comerciales son monousuario, esto implica que cada participante del grupo de desarrollo de software debe tener su propia herramienta CASE y el trabajo se debe mezclar para obtener el producto final, o bien, seguir un enfoque orientado a fases (es decir, primero se termina con el análisis para poder empezar el diseño, posteriormente, hay que terminar el diseño para seguir con la programación y así sucesivamente). El problema consiste en desarrollar una herramienta CASE que soporte todas las etapas del ciclo de vida del software y que además facilite y promueva el trabajo cooperativo. 4 La motivación más importante para la solución de este problema es aumentar la productividad en el desarrollo de proyectos complejos de software. El desarrollo de un proyecto de software grande involucra inherentemente el trabajo cooperativo. Una tendencia actual, en el desarrollo de herramientas CASE, es el soporte del trabajo cooperativo. 1.2 Objetivo de la Tesis El objetivo de esta tesis consiste en describir los principios para el desarrollo de un sistema de transacciones cooperativas que se requiere para dar el soporte a una herramienta CASE cooperativa. 1.3 Alcances de la Tesis Describir los fundamentos para el diseño y desarrollo de un sistema de transacciones cooperativas. Desarrollo y programación de un componente del sistema de transacciones cooperativas denominado “Especificador de Criterios de Consistencia para un Sistema de Transacciones Cooperativas”. 1.4 Organización de la Tesis En el capítulo dos se definen algunos conceptos fundamentales de las bases de datos, los ambientes de CASE y el ambiente cooperativo. Se describen las características fundamentales de las transacciones tradicionales y las transacciones avanzadas. Se explican resumidamente algunos de los modelos de transacciones avanzadas más utilizados. En el capítulo tres se describen los conceptos fundamentales de la programación orientada a objetos y el lenguaje utilizado para construir, visualizar, especificar y documentar el sistema de software desarrollado en esta tesis. 5 En el capítulo cuatro se efectúa la descripción detallada del Sistema de Transacciones Cooperativas, ilustrando su arquitectura. Se efectúa también una descripción de la arquitectura del Sistema Especificador de Criterios de Consistencia para el Sistema de Transacciones Cooperativas. En el capítulo cinco se describe el diseño e implantación del sistema objeto de esta tesis, ilustrando y describiendo cada uno de sus módulos. En el capítulo seis se describen las cualidades representativas, que se tomaron en cuenta, para obtener la calidad en el desarrollo del sistema. Se describen también las perspectivas del trabajo futuro. Por último, se describen las conclusiones en base a la evaluación de resultados. 6