lunes, 3 de diciembre de 2012

Herramientas CASE

-->
¿Qué son las Herramientas CASE?

Son conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.

CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora)

Las Herramientas CASE fueron desarrolladas para automatizar procesos y facilitar las tareas de coordinación de los eventos que necesitan ser mejorados en el ciclo de desarrollo de software. La mejor razón para la creación de estas herramientas fue el incremento en la velocidad de desarrollo de los sistemas. Por esto, las compañías pudieron desarrollar sistemas sin encarar el problema de tener cambios en las necesidades del negocio, antes de finalizar el proceso de desarrollo.

Las herramientas CASE también permiten a los analistas tener más tiempo para el análisis y diseño y minimizar el tiempo para codificar y probar.

La principal ventaja de la utilización de una herramienta CASE, es la mejora de la calidad de los desarrollos realizados y, en segundo término, el aumento de la productividad. La mejora de calidad se consigue reduciendo sustancialmente muchos de los problemas de análisis y diseño, inherentes a los proyectos de mediano y gran tamaño (lógica del diseño, coherencia, consolidación, etc.). La mejora de productividad se consigue a través de la automatización de determinadas tareas, como la generación de código y la reutilización de objetos o módulos.

Evolución de las Herramientas CASE

A inicios de los 80’s : Ayuda en la documentación por computadora.
Diagramación asistida por computadora.
Herramientas de análisis y diseño.

A mediados de los 80’s : Diseño automático de análisis y pruebas.
Repositorios automáticos de información de sistemas.

Al final de los 80’s : Generación automática de código desde
especificaciones de diseño.

A inicios de los 90’s : Metodología Inteligente.
Interface de Usuario reusable como una
metodología de desarrollo.

Las herramientas CASE, en función de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:

  1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.

    1. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end, orientadas la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas
a las últimas fases del desarrollo: construcción e implantación.
    1. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE.
      Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.

Tipo de
Case
Ventajas
Desventajas



I - CASE
  1. Integra el ciclo de vida.
  2. Permite lograr importantes mejoras de productividad a mediano no plazo.
  3. Permite eficiente soporte al mantenimiento de sistemas.
  4. Mantiene la consistencia de los sistemas a nivel corporativo.
1. No es tan eficiente para soluciones simples, sino para soluciones complejas.
2. Depende del hardware y del software.
3. Es costoso
UPPER CASE
1. Se utiliza en plataforma PC, es aplicable a diferentes entornos.
2. Meno costo.
1. Permite mejorar la calidad de los sistemas, pero no mejora la productividad.
2. No permite la integración del ciclo de vida.
LOWER CASE
1. Permite lograr importantes mejoras de productividad a corto plazo.
2. Permite un eficiente soporte al mantenimiento de sistemas.
1. No garantiza la consistencia de los resultado a nivel corporativo.
2. No garantiza la eficiencia del análisis y diseño.
3. No permite la integración del ciclo de vida.

clasificación, utilizando la funcionalidad como criterio principal, es la
siguiente:

♦ Herramientas de planificación de sistemas de gestión. Sirven para modelizar los requisitos de información estratégica de una organización. Proporcionan un "metamodelo" del cual se pueden obtener sistemas de información específicos. Su objetivo principal es ayudar a comprender mejor cómo se mueve la información entre las distintas unidades organizativas. Estas herramientas proporcionan una ayuda importante cuando se diseñan nuevas estrategias para los sistemas de información y cuando los métodos y sistemas actuales no satisfacen las necesidades de la organización. 

♦ Herramientas de análisis y diseño. Permiten al desarrollador crear un modelo del sistema que se va a construir y también la evaluación de la validez y consistencia de este modelo. Proporcionan un grado de confianza en la representación del análisis y ayudan a eliminar errores con anticipación.
    • Herramientas de análisis y diseño (Modelamiento).
    • Herramientas de creación de prototipos y de simulación.
    • Herramientas para el diseño y desarrollo de interfaces.
    • Máquinas de análisis y diseño (Modelamiento). 

♦ Herramientas de programación. Se engloban aquí los compiladores, los editores y los depuradores de los lenguajes de programación convencionales. Ejemplos de estas herramientas son:
    • Herramientas de codificación convencionales.
    • Herramientas de codificación de cuarta generación.
    • Herramientas de programación orientadas a los objetos. 

♦ Herramientas de integración y prueba: Sirven de ayuda a la adquisición, medición, simulación y prueba de los equipos lógicos desarrollados. Entre las más utilizadas están:
    • Herramientas de análisis estático.
    • Herramientas de codificación de cuarta generación.
    • Herramientas de programación orientadas a los objetos. 

♦ Herramientas de gestión de prototipos. Los prototipos son utilizados ampliamente en el desarrollo de aplicaciones, para la evaluación de especificaciones de un sistema de información, o para un mejor entendimiento de cómo los requisitos de un sistema de información se ajustan a los objetivos
perseguidos.
♦ Herramientas de mantenimiento: La categoría de herramientas de mantenimiento se puede subdividir en:
    • Herramientas de ingeniería inversa.
    • Herramientas de reestructuración y análisis de código.
    • Herramientas de reingeniería. 

♦ Herramientas de gestión de proyectos. La mayoría de las herramientas CASE de gestión de proyectos se centran en un elemento específico de la gestión del proyecto, en lugar de proporcionar un soporte global para la actividad de gestión. Utilizando un conjunto seleccionado de las mismas se puede: realizar estimaciones de esfuerzo, coste y duración, hacer un seguimiento continuo del proyecto, estimar la productividad y la calidad, etc.

Existen también herramientas que permiten al comprador del desarrollo de un sistema, hacer un seguimiento que va desde los requisitos del pliego de prescripciones técnicas inicial, hasta el trabajo de desarrollo que convierte estos requisitos en un producto final. Se incluyen dentro de las herramientas de control de proyectos las siguientes:
    • Herramientas de planificación de proyectos.
    • Herramientas de seguimiento de requisitos.
    • Herramientas de gestión y medida.
♦ Herramientas de soporte. Se engloban en esta categoría las herramientas que recogen las actividades aplicables en todo el proceso de desarrollo, como las que se relacionan a continuación:
    • Herramientas de documentación.
    • Herramientas para software de sistemas.
    • Herramientas de control de calidad.
    • Herramientas de bases de datos.

Componentes y funcionalidades de una herramienta CASE
A continuación se describen los principales componentes de una herramienta CASE
y sus funcionalidades.

Repositorio
Base de datos central de una herramienta CASE. El repositorio amplía el concepto de diccionario de datos para incluir toda la información que se va generando a lo largo del ciclo de vida del sistema, como por ejemplo: componentes de análisis y diseño (diagramas de flujo de datos, diagramas entidad-relación, esquemas de bases de datos, diseños de pantallas), estructuras de programas, algoritmos, etc. En algunas referencias se le denomina Diccionario de Recursos de Información. La mayoría de herramientas CASE poseen un repositorio propio o bien trabajan sobre un repositorio suministrado por otro fabricante o vendedor. Apoyándose en la existencia del repositorio se efectúan comprobaciones de integridad y consistencia: Que no existan datos no definidos.

1) Que no existan datos autodefinidos (datos que se emplean en una definición pero que no han sido definidos previamente).
2) Que todos los alias (referencias a un mismo dato empleando nombres distintos) sean correctos y estén actualizados. 

Las características más importantes de un repositorio son:
   • Tipo de información. Que contiene alguna metodología concreta, datos, gráficos, procesos, informes, modelos o reglas.
   • Tipo de controles. Si incorpora algún módulo de gestión de cambios, de mantenimiento de versiones, de acceso por clave, de redundancia de la información.
La gestión de cambios y el mantenimiento de versiones, ayudarán en el caso de que convivan diferentes versiones de la misma aplicación, o se tengan que realizar cambios en la versión en producción y en la de desarrollo, simultáneamente.
   • Tipo de actualización. Si los cambios en los elementos de análisis o diseño se ven reflejados en el repositorio en tiempo real o mediante un proceso por lotes (batch). Esto será importante en función a la necesidad de que los cambios sean visibles por todos los usuarios, en el acto.
   • Reutilización de módulos para otros diseños. El repositorio es la clave para identificar, localizar y extraer código para su reutilización.
  • Posibilidad de exportación e importación para extraer información del repositorio y tratarla con otra herramienta (formateo de documentos, mejora de presentación) o incorporar al repositorio, información generada por otros medios.
   • Interfases automáticas con otros repositorios o bases de datos externos.

Módulos de diagramación y modelización
Algunos de los diagramas y modelos utilizados con mayor frecuencia son:
  • Diagrama de flujo de datos.
  • Modelo entidad - interrelación.
  • Historia de la vida de las entidades.
  • Diagrama Estructura de datos.
  • Diagrama Estructura de cuadros.
  • Técnicas matriciales.

Algunas características referentes a los diagramas son:
   • Número máximo de niveles para poder soportar diseños complejos.
  • Número máximo de objetos que se pueden incluir para no encontrarse limitado en el diseño de grandes aplicaciones.
   • Número de diagramas distintos en pantalla o al mismo tiempo en diferentes
ventanas.
   • Dibujos en formato libre con la finalidad de añadir comentarios, dibujos,
información adicional para aclarar algún punto concreto del diseño.
   • Actualización del repositorio por cambios en los diagramas. Siempre resulta más
fácil modificar de forma gráfica un diseño y que los cambios queden reflejados
en el repositorio.

  • Control sobre el tamaño, fuente y emplazamiento de los textos en el diagrama.
   • Comparaciones entre gráficos de distintas versiones. De esta forma será más
fácil identificar qué diferencias existen entre las versiones.
   • Inclusión de pseudocódigo, que servirá de base a los programadores para
completar el desarrollo de la aplicación.
  • Posibilidad de deshacer el último cambio, facilitando que un error no conlleve
perder el trabajo realizado

Herramienta de prototipado
El objetivo principal de esta herramienta es poder mostrar al usuario, desde los momentos iniciales del diseño, el aspecto que tendrá la aplicación una vez desarrollada. Ello facilitará la aplicación de los cambios que se consideren necesarios, todavía en la fase de diseño. La herramienta será tanto más útil, cuanto más rápidamente permita la construcción del prototipo y por tanto antes, se consiga la implicación del usuario final en el diseño de la aplicación. Asimismo, es importante poder aprovechar como base el prototipo para la construcción del resto de la aplicación. Actualmente, es imprescindible utilizar productos que incorporen esta funcionalidad por la cambiante tecnología y
necesidades de los usuarios. Los prototipos han sido utilizados ampliamente en el desarrollo de sistemas tradicionales, ya que proporcionan una realimentación inmediata, que ayudan a determinar los requisitos del sistema. Las herramientas CASE están bien dotadas, en general, para crear prototipos con rapidez y seguridad.
Generador de código
Normalmente se suele utilizar sobre ordenadores personales o estaciones de trabajo, por lo que el paso posterior del código al host puede traer problemas, al tener que compilar en ambos entornos. 

Las características más importantes de los generadores de código son:
   • Lenguaje generado. Si se trata de un lenguaje estándar o un lenguaje
propietario.
  • Portabilidad del código generado. Capacidad para poder ejecutarlo en diferentes
plataformas físicas y/o lógicas.
  • Generación del esqueleto del programa o del programa completo. Si únicamente
genera el esqueleto será necesario completar el resto mediante programación.
  • Posibilidad de modificación del código generado. Suele ser necesario acceder
directamente al código generado para optimizarlo o completarlo.
  • Generación del código asociado a las pantallas e informes de la aplicación.
Mediante esta característica se obtendrá la interfase de usuario de la aplicación.

Módulo generador de documentación
El módulo generador de la documentación se alimenta del repositorio para transcribir las especificaciones allí contenidas. 

Algunas características de los generadores de documentación son:
  • Generación automática a partir de los datos del repositorio, sin necesidad de un esfuerzo adicional.
  • Combinación de información textual y gráfica, lo que hace más fácil su
comprensión.
  • Generación de referencias cruzadas. Con ello se podrá localizar fácilmente en qué partes de la aplicación se encuentra un determinado objeto o elemento, con el fin de analizar el impacto de un cambio o identificar los módulos afectados por un determinado error.
  • Ayuda de tratamiento de textos. Facilidad para la introducción de textos
complementarios a la documentación que se genera de forma automática.
  • Interfase con otras herramientas: procesadores de textos, editores gráficos, etc.

Ejemplos de Herramientas Case más
utilizadas.

ERwin
PLATINUM ERwin es una herramienta de diseño de base de datos. Brinda productividad en diseño, generación, y mantenimiento de aplicaciones. Desde un modelo lógico de los requerimientos de información, hasta el modelo físico perfeccionado para las características específicas de la base de datos diseñada, ERwin permite visualizar la estructura, los elementos importantes, y optimizar el diseño de la base de datos. Genera automáticamente las tablas y miles de líneas de stored procedure y triggers para los principales tipos de base de datos.

EasyCASE
EasyCASE Profesional - el centro de productos para procesos, modelamiento de datos y eventos, e Ingeniería de Base de Datos- es un producto para la generación de esquemas de base de datos e ingeniería reversa - trabaja para proveer una solución comprensible para el diseño, consistencia y documentación del sistema en conjunto. Esta herramienta permite automatizar las fases de análisis y diseño dentro del desarrollo de una aplicación, para poder crear las aplicaciones eficazmente - desde
procesamiento de transacciones a la aplicación de bases de datos de cliente/servidor, así como sistemas de tiempo real.

Oracle Designer
Oracle Designer es un juego de herramientas para guardar las definiciones que necesita el usuario y automatizar la construcción rápida de aplicaciones cliente/servidor flexibles y gráficas. Integrado con Oracle Developer, Oracle Designer provee una solución para desarrollar sistemas empresariales cliente/servidor de segunda generación. Sofisticadas aplicaciones cliente/servidor pueden ser 100% generadas usando la lógica de la aplicación y el módulo de componentes reusables. Oracle Designer también habilita la captura del diseño de sistemas existentes, salvaguardando la versión actual. Todos los datos ingresados por cualquier herramienta de Oracle Designer, en cualquier fase de desarrollo, se guardan en un repositorio central, habilitando el trabajo fácil del equipo y la dirección del proyecto. En el lado del Servidor, Oracle Designer soporta la definición, generación y captura de diseño de los siguientes tipos de bases de datos, por conexión nativa de Oracle y por conectividad ODBC :
• Oracle8, Oracle7
• Personal Oracle Lite
• Rdb
• ANSI 92
• DB2/2 and MVS
• Microsoft SQL Server
• Sybase