# Herramientas CASE
## Introducción

¿Qué son las herramientas CASE? CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Ordenador) hace referencia a la aplicación de un conjunto de herramientas y métodos para incrementar la productividad del desarrollo software y reducir costes de tiempo y dinero, obteniendo un software de alta calidad, sin defectos y mantenible.
Estas herramientas ayudan en todos los estados del ciclo de vida de desarrollo software, tareas como el proceso de diseño del proyecto, cálculo de costos, implementación de parte del código, compilación automática, documentación o detección de errores.

## Tipos, ventajas y desventajas
### Clasificación

Las herramientas no posee una unica clasificación y es difícil determinarle en una clase y suelen ser clasificadas de acuerdo a los siguientes factores:
* Las plataformas que soportan.
* Las fases del ciclo de vida del desarrollo de sistemas que cubren.
* La arquitectura de aplicaciones que producen.
* Su funcionalidad.
Una primera clasificación del CASE es considerando su amplitud:
* TOOLKIT : Es una colección de herramientas integradas que permiten automatizar un conjunto de tareas de algunas de las fases del ciclo de vida del sistema informático: Planificación estratégica, Análisis, Diseño, Generación de programas.
* WORKBENCH : Son conjuntos integrados de herramientas que dan soporte a la automatización del proceso completo de desarrollo del sistema informático. Permiten cubrir el ciclo de vida completo. El producto final aportado por ellas es un sistema en código ejecutable y su documentación.
La siguiente clasificación es la más habitual basada en las fases del ciclo de desarrollo que cubren:
* Upper CASE (U-CASE): herramientas que ayudan en las fases de planificación, análisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas UML.
* Middle CASE (M-CASE): herramientas para automatizar tareas en el análisis y diseño de la aplicación.
* Lower CASE (L-CASE): herramientas que semi-automatizan la generación de código, crean programas de detección de errores, soportan depuración de programas y pruebas. Además automatizan la documentación completa de la aplicación. En esta parte podemos incluir las herramientas de Desarrollo rápido de aplicaciones.

### Ventajas y Desventajas

Entre las más significativos de las herramientas CASE se enumeran los siguientes:
* Facilidad para la revisión de aplicaciones La experiencia muestra que una vez que las aplicaciones se implementan, se emplean por mucho tiempo. Las herramientas CASE proporcionan un beneficio substancial para las organizaciones al facilitar la revisión de las aplicaciones. Contar con un depósito central agiliza el proceso de revisión ya que éste proporciona bases para las definiciones y estándares para los datos. Las capacidades de generación interna, si se encuentran presentes, contribuyen a modificar el sistema por medio de las especificaciones más que por los ajustes al código fuente.
* Soporte para el desarrollo de prototipos de sistemasSe suelen desarrollar diseños para pantallas y reportes con la finalidad de mostrar la organización y composición de los datos, encabezados y mensajes. Los ajustes necesarios al diseño se hacen con rapidez para alterar la presentación y las características de la interface. Sin embargo, no se prepara el código fuente, de naturaleza orientada hacia procedimientos, como una parte del prototipo. Como disyuntiva, el desarrollo de prototipos puede producir un sistema que funcione. Las características de entrada y salida son desarrolladas junto con el código orientado hacia los procedimientos y archivos de datos.
* Generación de código La ventaja más visible de esta característica es la disminución del tiempo necesario para preparar un programa. Sin embargo, la generación del código también asegura una estructura estándar y consistente para el programa (lo que tiene gran influencia en el mantenimiento) y disminuye la ocurrencia de varios tipos de errores, mejorando de esta manera la calidad. Las características de la generación del código permiten volver a utilizar el software y las estructuras estándares para generar dicho código, así como el cambio de una especificación modular, lo que significa volver a generar el código y los enlaces con otros módulos.
* Mejora en la habilidad para satisfacer los requerimientos del usuarioEs bien conocida la importancia de satisfacer los requerimientos del usuario, ya que esto guarda relación con el éxito del sistema. De manera similar, tener los requerimientos correctos mejora la calidad de las prácticas de desarrollo. Las herramientas CASE disminuyen el tiempo de desarrollo, una característica que es importante para los usuarios. Las herramientas afectan la naturaleza y cantidad de interacción entre los encargados del desarrollo y el usuario. Las descripciones gráficas y los diagramas, así como los prototipos de reportes y la composición de las pantallas, contribuyen a un intercambio de ideas más efectivo.
* Soporte interactivo para el proceso de desarrollo La experiencia ha demostrado que el desarrollo de sistemas es un proceso interactivo. Las herramientas CASE soportan pasos interactivos al eliminar el tedio manual de dibujar diagramas, elaborar catálogos y clasificar. Como resultado de esto, se anticipa que los analistas repasarán y revisarán los detalles del sistema con mayor frecuencia y en forma más consistente.
En las desventajas podemos conseguir:
* Confiabilidad en los métodos estructuradosLa mayoria de las herramientas CASE se construyen teniendo como base la metodologia del analisis estructurado y el ciclo de vida de desarrolo de sistemas. Por si sola la esta caracteristica se convierte en limitante ya que no todas las empresas emplean los metodos de analisis estructurado.
* Falta de niveles estándar para el soporte de la metodologíaAún no aparece un conjunto “estándar” de herramientas CASE. Por tanto, debe tener precaución al seleccionar una herramienta de este tipo. Existen dos significados para las palabras “soporte de la metodología”. Una herramienta puede: (1) dar soporte a los diagramas que emplea una metodología o (2) soportarlos e imponer la metodología, sus reglas y procesos. Las herramientas que son independientes de la metodología, no pueden fomentar el uso de las reglas y estándares de la misma. Estas herramientas quizá proporcionen los componentes de una metodología (por ejemplo: diagramas de flujos de datos, un diccionario de datos y facilidades para la descripción de procesos), pero no el marco de referencia, reglas y procedimientos que en realidad constituyen el núcleo de la metodología. Estas herramientas mejoran la productividad al efectuar tareas tediosas y de documentación, aunque ellas no puedan asegurar buenos resultados. Desde el punto de vista funcional, las capacidades que brindan para garantizar la calidad son mínimas.
* Conflictos en el uso de los diagramasLas herramientas difieren en el uso que hacen los diagramas. Algunas son herramientas exclusivamente para gráficas, que se abocan al dibujo de diagramas para el análisis de entrada y salida de datos. Este tipo de herramientas puede restringir ya sea el proceso de desarrollo normal seguido por una organización o el estilo particular de trabajo de los analistas.
* Diagramas no utilizadosEn general, las herramientas CASE se emplean para generar graficas, informes y modelar el analisis y estructurar el desarrollo. Sin embargo, muchos profesionales en informatica no hacen uso correcto de herramientas gráficas en el desarrollo de software; más bien las emplean para automatizar la producción de informes y documentación del sistema, como los diagramas de flujo utilizados por los programadores para documentar un programa una vez terminado.
* Función limitadaAunque una herramienta puede apoyar varias fases del ciclo de vida de desarrollo de sistemas o adaptarse a diferentes metodologías de desarrollo, por lo general su enfoque primario está dirigido hacia una fase o método especifico. Muchas herramientas para la fase de desarrollo recalcan el mantenimiento y la reestructuración del código, pero ofrecen un soporte débil durante la fase de análisis para la determinación y especificación de requerimientos.
* Alcance limitadoAunque muchas herramientas basadas en computadoras incluyen la capacidad de verificar las especificaciones para determinar su complementes o consistencia, virtualmente no llevan a cabo ningún análisis de los requerimientos de la aplicación. Por tanto, el alcance de las actividades de desarrollo asociado con las herramientas existentes es bastante limitado.La mayor parte de productos CASE describe (documenta) pero no analiza. De poca ayuda es proporcionar una regla de inclusión en los mejores enfoques y una regla de exclusión para los que son poco satisfactorios. No ofrecen o evalúan, soluciones potenciales para los problemas relacionados con sistemas. Y tampoco existe una garantía clara para que dos analistas que utilicen los mismos métodos aplicados a información idéntica, formulen recomendaciones igualmente aceptables.

## Ejemplos de Herramientas CASE
### Microsoft Project

Microsoft Project es un software de gestión de proyectos, desarrollado y comercializado por Microsoft, que está diseñado para ayudar a un administrador de proyectos en el desarrollo de planes, la asignación de recursos a tareas, el seguimiento de los progresos, la gestión del presupuesto, y el análisis de las cargas de trabajo.
Microsoft Project fue la tercera aplicación basada en Microsoft Windows de la compañía, y en un par de años desde su introducción se convirtió en el software de gestión de proyectos basado en PC dominante.
Aunque este software ha sido etiquetado como miembro de la familia Microsoft Office hasta el momento no ha sido incluido en ninguna de las ediciones de Office. Actualmente está disponible en dos ediciones, Standard y Professional. El formato de archivo propietario de Microsoft Project es .mpp.
Microsoft Project y Microsoft Project Server son piedras angulares del producto Microsoft Office Enterprise Project Management (EPM).

#### Características de Microsoft Project

Microsoft Project crea presupuestos basados en el asignación de trabajo y las tasas de recursos. Como los recursos son asignados a las tareas y el trabajo de asignación estimados, el programa calcula el coste, igual a la tasa de los tiempos de trabajo, que llega hasta el nivel de tarea y luego a las tareas de resumen y, finalmente, al nivel de proyecto. Las definiciones de recursos se pueden compartir entre proyectos utilizando un fondo de recursos compartidos. Cada recurso puede tener su propio calendario, que define qué días un recurso está disponible. Las tasas de recursos se utilizan para calcular los costos de asignación de recursos que estan resumidos en el nivel de recursos. Cada recurso puede estar asignado a múltiples tareas en múltiples planes y a cada tarea se le puede asignar múltiples recursos, y el trabajo de tareas horarios de aplicación en base a la disponibilidad de recursos como se define en los calendarios de recursos. Todos los recursos se pueden definir en la etiqueta sin límite. Por lo tanto, no se puede determinar cuantos productos acabados se pueden producir con una cantidad dada de materias primas. Esto hace que Microsoft Project no sea adecuado para solucionar los problemas de los materiales disponibles limitados de producción. El software adicional es necesario para administrar una instalación compleja que produce bienes físicos.
La aplicación crea calendarios de ruta crítica, además de cadenas críticas y metodología de eventos en cadena disponibles como add-ons de terceros. Los calendarios pueden ser resource leveled, y las gráficas visualizadas en una Gráfica de Gantt. Además, Microsoft Project puede reconocer diferentes clases de usuarios, los cuales pueden contar con distintos niveles de acceso a proyectos, vistas y otros datos. Los objetos personalizables como calendarios, vistas, tablas, filtros y campos, se almacenan en un servidor que comparte la información con todos los usuarios.

### Visual Paradigm for UML

Visual Paradigm es una herramienta CASE: (Ingeniería de Software Asistida por Computación). La misma propicia un conjunto de ayudas para el desarrollo de programas informáticos, desde la planificación, pasando por el análisis y el diseño, hasta la generación del código fuente de los programas y la documentación.
La herramienta esta diseñada para un amplio rango de usuarios, incluyendo ingenieros de software, analistas de sistema, analistas de negocio, arquitectos de sistemas y cualquiera que este interesado en construir un sistema confiable a gran escala a traves del usuio de el enfoque orientado a objetos. VP-UML da soporte a los ultimos estandares de Java y notacion UML y provee a la industria una gran variedad de codigo autogenerado y soporte para Java para realizar ingenieria inversa. Ademas, VP-UML permite una integración completa con herramientas de desarrollo como Eclipse, Borland, Netbeans para dar soporte en la etapa de implementacion del software. La transicion del analisis al diseño y luego a la implementación se realiza sin percanses con este tipo de herramienta CASE, por lo que disminuye significantemente el esfuerzo empleado en todas las etapas del ciclo de vida del desarrollo.

### ArgoUML

Herramienta que contiene funciones avanzadas en las etapas de diseño y modelación de software. Presenta licencia comercial.
Como características fundamentales:
* Es modular y extensible.
* Soporta todas las especificaciones UML.
* Integrado con la WEB.
* Brinda una excelente ayuda.

### Poseidon

Es una herramienta para modelar cualquier clase de sistema, relacionado o no con programación por computadoras. Se presenta en dos ediciones: Community Edition y Professional Edition.
Sus características fundamentales son:
* Soporta diagramas UML.
* Permite Generación de código para Java y exportación como HTML.
* Fácil de instalar y actualizar.
* Compatibilidad entre ediciones.
* Opciones avanzadas de impresión.
* Soporta gráficos en la mayoría de los formatos.
* Varios idiomas.
* Permite acciones simultaneas.

### Modelio

Modelio tiene una versión de pago y otra de código abierto mantenido por la comunidad que no tiene ningún costo.
* Soporta diagramas UML, entre otras funcionalidades.

## Enlaces Externos

* Computer-aided software engineering - Wikipedia(ingles)

## Participantes activos

* Paloma Galván
* Juan Zamorano