domingo, 3 de abril de 2011

Introduccion.


CASE es un acrónimo para Computer-Aided Software Engineering (Ingenieria de Software Asistida por Computadora).

Esencialmente, un CASE es una herramienta que ayuda al ingeniero de software a
desarrollar y mantener software. A continuación se presentan algunas definiciones
dadas para el término CASE.

En Terminology for Software Engineering and Computer-aided Software Engineering
by B.Terry & D.Logee, Software Engineering Notes, Abril 1990, CASE es definido
como:

“Herramientas individuales para ayudar al desarrollador de software o
administrador de proyecto durante una o más fases del desarrollo de
software (o mantenimiento).”

En The CASE Experience, Carma McClure, BYTE Abril 1989 p.235 se ofrece la
siguiente definición:

“Una combinación de herramientas de software y metodologías de
desarrollo”

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.

Origenes.

Las Herramientas CASE tienen su inicio con el simple procesador de palabras que fue usado para crear y manipular documentación. Los setentas vieron la introducción de técnicas gráficas y diagramas de flujo de estructuras de datos. Sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios.

La introducción de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fácilmente creados y modificados, mejorando la calidad de los diseños de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los procesos dentro de un sistema, son el resultado directo de la llegada del diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las Herramientas CASE.
 

Pronto se reemplazaron los paquete gráficos por paquetes especializados que habilitan la edición, actualización e impresión en múltiples versiones de diseño. Eventualmente, las herramientas gráficas integradas con diccionarios de base de datos para producir poderosos diseños y desarrollar herramientas, podrían sostener ciclos completos de diseño de documentos.

Contenido.


Definicion:
 
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 software.
 
Objetivos: 
  • lMejorar la productividad en el desarrollo y mantenimiento del software.
  • lAumentar la calidad del software.
  • lReducir el tiempo y coste de desarrollo y mantenimiento de los sistemas informáticos.
  • lMejorar la planificación de un proyecto
  • lAumentar la biblioteca de conocimiento informático de una empresa ayudando a la búsqueda de soluciones para los requisitos.
  • lAutomatizar el desarrollo del software, la documentación, la generación de código, las pruebas de errores y la gestión del proyecto.
  • lAyuda a la reutilización del software, portabilidad y estandarización de la documentación
  • lGestión global en todas las fases de desarrollo de software con una misma herramienta.
  • lFacilitar el uso de las distintas metodologías propias de la ingeniería del software. 
 
 

Elementos:
 
  • lTECNOLOGIA CASE: Una tecnología del software que mantiene una disciplina de la ingeniería automatizada para el desarrollo de software, mantenimiento y dirección deproyecto, incluye metodologías estructuradas automatizadas y herramientas automatizadas.
  • lHERRAMIENTA CASE: Una herramienta del software que automatiza (por lo menos en parte) una parte del ciclo de desarrollo de software.
  • lSISTEMA CASE: Un conjunto de herramientas CASE integradas que comparten una interface del usuario común y corren en un ambiente computacional común.
  • lKIT de HERRAMIENTAS CASE: Un conjunto de herramientas CASE integradas que se han diseñado para trabajar juntas y automatizar (o proveer ayuda automatizada al ciclo de desarrollo de software, incluyendo el análisis, diseño, codificación y pruebas.
  • lMETODOLOGIA CASE: Un automatizable metodología estructurada que define una disciplina e ingeniería como un acercamiento a todos o algunos aspectos del desarrollo y mantenimiento de software.
  • lPUESTO DE TRABAJO para CASE: Una estación de trabajo técnica, diseñada a 32 bits o computadora personal equipada con Herramientas Case que automatiza varias funciones del ciclo.
  • lPLATAFORMA de HARDWARE para CASE: Una arquitectura de hardware con uno, dos o tres sistemas puestos en línea, que proveen una plataforma operativa para las Herramientas Case.
 
Clasificacion: 
 
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.
 
 
Principales usuarios:

Permiten a los analistas tener mas tiempo para el analisis, diseño y minimizar el tiempo para codificar y probar. Los principales usuarios son: Analistas, desarrolladores, programadores....

Ventajas y desventajas:
 

Caracteristicas:

Una herramienta CASE cliente/servidor provee modelo de datos, generación de código, registro del ciclo de vida de los proyectos, múlliples repositorios de usuarios, comunicación entre distintos ingenieros. Las principales herramientas son Knowledgeware's Application Development Wotkbench, TI's Information Engineering Facilhy (IEF), and Andersen Consulting's Foundation for Cooperative Processing.
 
Por otra parte, una herramienta CASE Cliente/Servidor debe ofrecer:
Proporcionar topologías de aplicación flexibles. La herramienta debe proporóionar facilidades de construcción que permita separar la aplicación (en muchos puntos diferentes) entre el cliente, el servidor y más importante, entre servidores.
  
Criterios de eleccion: 
 
 
El propósito de este proceso es identificar las herramientas CASE más adecuadas, que sean las candidatas y aseguren que las herramientas recomendadas cumplirán con los objetivos de la organización. 
 
Este proceso está compuesto por:
  • lIniciación: Define los objetivos y requerimientos para la evaluación de las herramientas CASE.
  • lEstructuración: Elaborar un conjunto de requerimientos basados en cada herramienta CASE.
  • l Evaluación: Producir reportes de evaluación técnica.
  • l Selección: Identificar las más adecuadas herramientas entre todas las candidatas.



Herramientas CASE estructuradas:
 
Utilizan como herramienta principal el modelado y el diseño, esta implementacion mejora el entendimiento de la estructura.
 
Herramientas CASE orientadas a objetos:
 
 
Muchos de los beneficios son alcanzados únicamente cuando el Análisis y Diseño son utilizados con herramientas CASE Orientadas a Objetos, basados en repositorios que generan códigos. 
 
  • lFomenta la reutilización y extensión del código.
  • lPermite crear sistemas más complejos.
  • lRelacionar el sistema al mundo real.
  • lFacilita la creación de programas visuales.
  • lConstrucción de prototipos
  • lAgiliza el desarrollo de software
  • lFacilita el trabajo en equipo
  • lFacilita el mantenimiento del software

Ejemplos de Herramientas CASE:
 
Uso libre
 
    * StarUML
    * Umbrello UML Modeller
    * Dia
    * ArgoUML
    * Eclipse UML
    * AndroMDA
    * fabFORCE
    * UMLet
    * BOUML
    * NetBeans
    * JDeveloper 
 
Comerciales 
 
    * Together
    * Rational 
 
 
Estructura de costos:

Las empresas desarrolladoras, al decidir adoptar una herramienta CASE, asimilan una serie de costos tangibles e intangibles que afectan el proceso de desarrollo de las futuras aplicaciones Cliente/Servidor. Dichos costos podemos diferenciarlos en 3 tipos, a saber: 
 
  • lPrecio de Venta.
l
 Las herramientas CASE, por su complejidad de desarrollo y su alto nivel de especialización, son muy costosas. En la tabla que aparece en la bibliografía anexa1, vemos que los precios oscilan entre los 1000$ y los 25,000$, y existen herramientas aún más costosas (de más de un millón de dólares). Sin embargo, las herramientas más caras resultan más baratas para la empresa desarrolladora si ésta posee una gran cantidad de recursos humanos destinados a proyectos. La razón es que la licencia de las herramientas costosas es única, en cambio, la de las otras herramientas es por máquina instalada. Esta variación en el precio incide, lógicamente, en la toma de decisión de la Alta Gerencia en relación a cuál herramienta debe elegir para un proyecto determinado.
  • lCosto de Entrenamiento de Personal.
 La gran complejidad que poseen las herramientas CASE también se traduce en un aumento de los costos de desarrollo de sistemas, debido a los costos generados por la curva de aprendizaje del personal y los costos por entrenamiento. Este incremento se aminora con el tiempo, a medida que los desarrolladores adquieran más destreza en el uso de la herramienta y sean, por tanto, más productivos. Esto se evidencia en la siguiente gráfica:
  • lCosto de Adopción de la Metodología Asociada a la Herramienta CASE.
Sabiendo que toda herramienta CASE posee una metodología de trabajo asociada, y muy específica; es posible que se genere un costo de desarrollo adicional por adoptar una herramienta cuya metodología sea diferente a la imperante en la empresa. Ello puede generar, a su vez, brotes de hostilidad del personal hacia la herramienta. La implementación de las herramientas CASE integradas en una organización puede ser muy bien recibida por el personal deseoso para su utilización, bien educado en un fondo teórico, y ser apaciblemente introducido en la mecánica de la herramienta a través de un excelente entrenamiento y soporte durante el mismo. La misma herramienta en otro lugar puede ser recibida con hostilidad, con el personal sintiendo que ha sido obligado por la Gerencia. Uno de los errores más comunes es el de elegir una herramienta CASE que soporte un método que no sea familiar a los desarrolladores.

Conclusion.
 
Las Herramientas CASE son importantes para la presencia global de la ingenieria de software, ayudando a los desarrolladores a aplicar los medios necesarios para obtener un proyecto y una planeacion con una posibilidad maxima de tener exito.
 
 
Cuestionario.

  • Cual es la definicion de las Herramientas CASE?
  • Cual es el beneficio que se obtiene de su utilizacion?
  • Cual es la clasificacion de las Herramientas CASE?
  • Quienes utilizan las Herramientas CASE?
  • Menciona 4 ejemplos de Herramientas CASE.
Videos.
 
 
 
Enlaces.
 
 
http://www.uppuebla.edu.mx/Profesores/INFORMATICA/PRODUCCION_CIENTIFICA/REBECA/Ingsoftware_II/Apuntes/6.CASE.pdf


Ejemplos.
 
Netbeans:
 
Es un entorno de desarrollo hecho para el lenguaje Java. Es un proyecto de codigo abierto. Sun MicroSystems fundo el proyecto en el año 2000 y continua siendo el patrocinador principal de los proyectos.
 
Metodologia: 

Permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software.
 
Manual:

 
 
JDeveloper:
 
Es un ambiente de desarrollo integrado sin costo, ofrecido por la compañia Oracle. Ofrece herramientas para el desarrollo en Java, XML, SQL, HTML, JavaScript, BPEL y PHP.
 
Metodologia: 

Cubre el desarrollo completo de el ciclo de vida de un proyecto desde el diseño hasta el codigo, depuracion, optimizacion y la creacion de perfiles hasta el lanzamiento.
 
Manual: 

 
 
Eclipse:
 
Es un entorno de desarrollo integrado de codigo abierto multiplataforma para desarrollar "Aplicaciones de Cliente Enriquecido". La plataforma Eclipse es tipicamente usada para desarrollar IDEs.
 
Metodologia: 

Eclipse emplea plug-ins para poder proveer de toda su funcionalidad incluyendo el sistema de ejecucion, en contraste con otras aplicaciones donde la su funcion es tipicamente insertada en el codigo fuente.
 
Manual: 

No hay comentarios: