jueves, 7 de junio de 2012




Las computadoras afectan nuestras vidas nos guste o no. Utilizamos computadoras en nuestra vida diaria, la mayor parte del tiempo sin reconocer conscientemente que estamos haciéndolo.  Las utilizamos en aplicaciones domésticas como microondas, televisión, vídeo casseteras o fuera de nuestras casas en máquinas
para tarjetas de crédito, por ejemplo. La verdad es que no podemos escapar de las computadoras. El rápido incremento en performance de las computadoras junto al dramático decremento en tamaño y costo, dio como resultado una explosión de tecnología, generándose una larga variedad de aplicaciones que éstas pueden soportar. Desde el inicio de la escritura de software, ha existido un conocimiento de la necesidad de herramientas automatizadas para ayudar al diseñador del software. Inicialmente, la concentración estaba en herramientas de apoyo a programas como traductores, recopiladores, ensambladores, procesadores de macros, y montadores y cargadores. Este conjunto de aplicaciones que pueden informatizarse, aumentó dramáticamente en un breve espacio de tiempo, causando una gran demanda por nuevo software a desarrollar.  A medida que se escribía nuevo software, habían ya en existencia millones y millones de líneas de código que necesitaban se mantenidas y actualizadas.

QUE SON LAS HERRAMIENTAS

Se puede definir a las Herramientas CASE como un 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 se define también como:

 Conjunto de métodos, utilidades y técnicas que facilitan la automatización del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.

 La sigla genérica para una serie de programas y una filosofía de desarrollo de software que ayuda a automatizar el ciclo de vida de desarrollo de los sistemas. Una innovación en la organización, un concepto avanzado en la evolución de tecnología con un potencial efecto profundo en la organización. Se puede ver al
CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.

Variaciones en el significado de

La realización de un nuevo software requiere que las tareas sean organizadas y completadas en forma correcta y eficiente. Las Herramientas CASE fueron desarrolladas para automatizar esos 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. También permite a las compañías competir más efectivamente usando estos sistemas desarrollados nuevamente para compararlos con sus necesidades de negocio actuales.  En un mercado altamente competitivo, esto puede hacer la diferencia entre el éxito y el fracaso. 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 introducción de CASE integradas está comenzando a tener un impacto significativo en los negocios y sistemas de información de las organizaciones.
Con un CASE integrado, las organizaciones pueden desarrollar rápidamente sistemas de mejor calidad para soportar procesos críticos del negocio y asistir en el desarrollo y promoción intensiva de la información de productos y servicios. Estas herramientas pueden proveer muchos beneficios en todas las etapas del proceso de  desarrollo de software, algunas de ellas son:

♦ Verificar el uso de todos los elementos en el sistema diseñado.
♦ Automatizar el dibujo de diagramas.
♦ Ayudar en la documentación del sistema.
♦ Ayudar en la creación de relaciones en la Base de Datos.
♦ Generar estructuras de código.

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. Para conseguir estos dos objetivos es conveniente contar con una organización y una metodología de trabajo, además de la propia herramienta. 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. 

CLASIFICACION DE LAS HERRAMIENTAS CASE

No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:
• Las plataformas que soportan.
• Las fases del ciclo de vida del desarrollo de sistemas que cubren.
• La arquitectura de las aplicaciones que producen.
• Su funcionalidad. 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.

2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o
front-end, orientadas a 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.

4. 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

 Integra el ciclo de vida.
 Permite lograr importantes mejoras de productividad a mediano plazo.
Permite un eficiente soporte al mantenimiento de sistemas.
Mantiene la consistencia de los sistemas a nivel corporativo.
No es tan eficiente para soluciones simples, sino para soluciones complejas.
Depende del Hardware y del Software. 
Es costoso. Upper Case
Se utiliza en plataforma PC, es aplicable a diferentes entornos,
Menor costo
Permite mejorar la calidad de los sistemas, pero no mejora la productividad.
No permite la integración del ciclo de vida. Lower Case
Permite lograr importantes mejoras de productividad a corto plazo.
Permite un eficiente soporte al mantenimiento de sistemas.
No garantiza la consistencia de los resultados a nivel corporativo.
No garantiza la eficiencia del Análisis y Diseño.
No permite la integración del ciclo de vida.

El CASE se concibe como el conjunto de cuatro herramientas que tocan las disciplinas que van desde la estrategia de la empresa, y la concepción del sistema de información, hasta el análisis, diseño y la generación de los mismos programas. Las herramientas I-CASE se basan en una metodología. Tienen un repositorio y
aportan técnicas estructuradas para todas las fases del ciclo de vida. Estas son las características que les confieren su mayor ventaja: una mejora de la calidad de los desarrollos.
Beneficios Case:
Desarrollo Tradicional Case 
Enfasis en la codificación y pruebas de programas.
Enfasis en análisis y diseño.
Enfasis en el modelamiento empresarial.
Especificaciones basadas en papel.
Especificaciones basadas en diagramas automatizados.
Especificaciones basadas en diagramas automatizados y perfectamente integrados a través de las diferentes etapas de desarrollo.
Codificación manual de programas.
Generación automática de códigos, programas fuente.
Generación automática de códigos y totalmente integrada con la estación de trabajo de diseño representación gráfica de las estructuras de códigos.
Documentación manual. Generación automática de documentación .
Generación automática de documentación .
Mantenimiento de programas fuentes.
Mantenimiento de especificaciones de diseño y regeneración de códigos 
Mantenimiento de  especificaciones de diseño y regeneración de códigos 
Uso de una enciclopedia (coordinador de conocimientos) para concentrar toda la información de las diferentes estaciones  de trabajo en forma integrada.
Juego de Herramientas o Tools
Están formadas por un conjunto de herramientas orientadas cada una de ellas a resolver una determinada fase del desarrollo. El ensamblaje de las mismas se efectúa por medio de una serie de interfaces que adaptan las salidas producidas por cada una de ellas de forma que sirva como entrada en la siguiente. En el mercado actual se pueden citar, entre otras, algunas herramientas distribuidas por fases de desarrollo como para:
Análisis y Diseño 
Prokit Workbench de McDonnell-Douglas
Desing Aid Nastec
Analyst/Designer Tolkit de Yourdon
Excelerator de Index Technology
Pose de Computer System Advisers
Diseño de Archivos y Base de Datos
Chen Toolkit de Chen & Associates
IDMS/Architec de Cullinet Software
Autmate Plus de LBMS
Case Designer de Oracle
Synon
Oracle
Informix
Programación
APS de Sage Software
Tranforms de Transform Logic
Telon Pansophic System
Decase de DEC COBOL 2/ Worbench de Micro Focus
Snap CASE para AS/400
Otra posible 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.

Otra clasificación, diferencia las funciones CASE en cinco grupos:
Repositorio.
Funcionan en torno a un repositorio central, siendo éste el núcleo fundamental que contiene todas las definiciones de objeto y sus relaciones. Los objetos pueden ser especificaciones del sistema en forma de diagramas de flujo de datos, diagramas entidad-relación, esquemas de bases de datos, diseños de pantallas, etc. El repositorio es un concepto más amplio que el de diccionario de datos y soporta a los demás grupos de funciones. No es fácil encontrar en el mercado productos Case con funcionalidades estrictamente a las de repositorio, ya que, a pesar de su innegable importancia, tienen un carácter auxiliar de los demás grupos de funciones. Cualquier sistema Case poseerá un repositorio propio o bien, trabajará sobre un repositorio suministrado por otro fabricante o vendedor. Re-ingeniería. Los sistemas Case permiten establecer una relación estrecha y fuertemente formalizable entre los productos generados a lo largo de distintas fases del ciclo de vida, permitiendo actuar en el sentido especificaciones-código (ingeniería "directa") y también en el contrario (ingeniería "inversa"). Ello facilita la realización de modificaciones en la fase más adecuada en cada caso y su traslado a las demás. Al conjunto de facilidades proporcionadas por la ingeniería «directa» e "inversa" se le denomina "re-ingeniería"." Soporte del ciclo de vida. El ciclo de vida de una aplicación o de un sistema de información se compone de varias etapas, que van desde la planificación de su desarrollo hasta su implantación, mantenimiento y actualización. Aunque el número de fases puede ser variable en función del nivel de detalle que se adopte, pueden de modo simplificado, identificarse las siguientes:
• Planeamiento.
• Análisis y Diseño.
• Implantación (programación y pruebas).
• Mantenimiento y actualización.
Los sistemas Case pueden cubrir la totalidad de estas fases o bien especializarse en algunas de ellas. En este último caso se pueden distinguir sistemas de "alto nivel" ("Upper Case"), orientados a la autonomía y soporte de las actividades correspondientes a las dos primeras fases y, sistemas de "bajo nivel" ("Lower Case"), dirigidos hacia las dos últimas. Los sistemas de "alto nivel" pueden soportar un número más o menos amplio de metodologías de desarrollo. 

Soporte de proyecto.

Este tipo de funciones hace referencia al soporte de actividades que se producen durante el desarrollo, derivadas fundamentalmente del trabajo en grupos, tales como facilidades de comunicación, soporte a la creación, modificación e intercambio de documentación, herramientas personales, controles de seguridad, etc. Los sistemas Case pueden conceder a estas cuestiones una importancia variable por lo cual el soporte de proyecto constituye un factor de diferenciación. Mejora continua de calidad. Aunque frecuentemente se asocia a los sistemas Case con la mejora de la productividad en el desarrollo de aplicaciones, debe tenerse en cuenta que una de las principales ventajas estriba también, en la mejora de la calidad de los desarrollos realizados. Determinados sistemas Case enfatizan más sobre este punto que sobre el anterior, introduciendo herramientas que permiten ejercer un control intenso de garantía de calidad del software desarrollado desde las primeras fases de su ciclo de vida.




COMPONENETES 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.
Que no existan datos autodefinidos (datos que se emplean en una definición pero que no han sido definidos previamente).
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.

INTEGRANTES
RENDON MARTINEZ PABLO RAFAEL
PAZ FLORES ARMANDO
FARFAN LOPEZ SILVINO
MEJIA LOZANO JULIO CESAR