Unidad I Fundamentos Ingeniería de Software

12
Unidad 1: Fundamentos Ingeniería de Software UNIDAD 1 Fundamentos Ingeniería de software 1.1. Conceptos básicos Durante las primeras tres décadas de la informática, el principal desafío era el desarrollo del hardware de las computadoras, de forma que se redujera el costo de procesamiento y almacenamiento de datos. A lo largo de la década de los ochenta, los avances de microelectrónica han dado como resultado una mayor potencia de cálculo a la vez que una reducción del costo. Hoy el problema es diferente. El principal desafío es mejorar la calidad y reducir el costo de las soluciones basadas en computadora. Para controlar los costos del hardware, los gestores instituyeron controles formales y estándares técnicos. Exigían un análisis y diseño completo antes de que algo se construyera. Medían el proceso para determinar dónde podían hacer mejoras. Dicho sencillamente, aplicaban los controles, métodos y herramientas que reconocemos como ingeniería del hardware. Mientras que desgraciadamente el software no era más que un añadido. En los primeros días, para la programación existían pocos métodos formales y pocas personas los usaban. El programador aprendía normalmente su oficio mediante prueba y error. El mundo del software era bastante indisciplinado. Por lo que muchos aprendices técnicos se hacían las siguientes preguntas: ¿Por qué lleva tanto tiempo terminar los programas? ¿Por qué es tan elevado el costo? ¿Por qué no podemos encontrar todos los errores antes de entregar el software a nuestros clientes? Estas y muchas preguntas son manifestación del carácter del software y de la forma en que se desarrolla. Problema que ha llevado a la adopción de la Ingeniería de Software. La potencia de las grandes computadoras de la era de los ochenta está hoy disponible en una computadora personal. Las enormes capacidades de procesamiento y almacenamiento del hardware moderno representan un gran potencial de cálculo. El software es el que nos facilita utilizar y explotar este potencial. Actualmente el software ha superado al hardware como clave del éxito de muchos sistemas basados en computadora. Tanto si se utiliza la computadora para llevar un negocio, controlar o manufacturar un producto, monitorear un paciente, dirigir un satélite espacial, etc., el software es factor que marca la diferencia. La diferencia entre una compañía y su competidora es la suficiencia y oportunidad con que maneja su información. Y el software es la herramienta especialmente indicada para esto. 1

description

Materia Fundamentos de Ingeniería de Software

Transcript of Unidad I Fundamentos Ingeniería de Software

Page 1: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

UNIDAD 1 Fundamentos Ingeniería de software

1.1. Conceptos básicos

Durante las primeras tres décadas de la informática, el principal desafío era el desarrollo del hardware de las computadoras, de forma que se redujera el costo de procesamiento y almacenamiento de datos. A lo largo de la década de los ochenta, los avances de microelectrónica han dado como resultado una mayor potencia de cálculo a la vez que una reducción del costo. Hoy el problema es diferente. El principal desafío es mejorar la calidad y reducir el costo de las soluciones basadas en computadora.

Para controlar los costos del hardware, los gestores instituyeron controles formales y estándares técnicos. Exigían un análisis y diseño completo antes de que algo se construyera. Medían el proceso para determinar dónde podían hacer mejoras. Dicho sencillamente, aplicaban los controles, métodos y herramientas que reconocemos como ingeniería del hardware. Mientras que desgraciadamente el software no era más que un añadido.

En los primeros días, para la programación existían pocos métodos formales y pocas personas los usaban. El programador aprendía normalmente su oficio mediante prueba y error. El mundo del software era bastante indisciplinado. Por lo que muchos aprendices técnicos se hacían las siguientes preguntas:

¿Por qué lleva tanto tiempo terminar los programas?¿Por qué es tan elevado el costo?¿Por qué no podemos encontrar todos los errores antes de entregar el software a

nuestros clientes?

Estas y muchas preguntas son manifestación del carácter del software y de la forma en que se desarrolla. Problema que ha llevado a la adopción de la Ingeniería de Software.

La potencia de las grandes computadoras de la era de los ochenta está hoy disponible en una computadora personal. Las enormes capacidades de procesamiento y almacenamiento del hardware moderno representan un gran potencial de cálculo. El software es el que nos facilita utilizar y explotar este potencial.

Actualmente el software ha superado al hardware como clave del éxito de muchos sistemas basados en computadora. Tanto si se utiliza la computadora para llevar un negocio, controlar o manufacturar un producto, monitorear un paciente, dirigir un satélite espacial, etc., el software es factor que marca la diferencia. La diferencia entre una compañía y su competidora es la suficiencia y oportunidad con que maneja su información. Y el software es la herramienta especialmente indicada para esto.

El diseño de un producto de software “amigable al usuario” es la diferencia entre productos competidores que tengan funciones similares.

Crisis Del Software

Los problemas del desarrollo del software se caracterizan por los siguientes aspectos:

La planificación y estimación de costos son frecuentemente muy imprecisas. La “productividad” de la comunidad dedicada al desarrollo de software no

corresponde con la demanda de sus servicios y La calidad de la Ingeniería de software no llega a ser a veces ni aceptable.

Tales problemas son sólo las manifestaciones más visibles de otras dificultades del software:

No tenemos tiempo de recoger datos sobre el proceso de desarrollo de software. Sin datos históricos como guía, la estimación no ha sido buena y los resultados previstos muy pobres.

1

Page 2: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

La insatisfacción del cliente con el sistema “terminado” se produce frecuentemente. Los proyectos se desarrollan sólo con una vaga indicación de los requisitos del cliente. La comunicación entre el cliente y el que desarrolla el software es muy escasa.

La calidad es normalmente escasa. El software existente puede ser muy difícil de mantener. Criterio muy

importante en la aceptación del software.

Sin embargo todos estos problemas pueden corregirse, la clave está en dar un enfoque de Ingeniería al Desarrollo de Software.

Definición de ingeniería de software.

Para considerar el creciente problema de la tecnología del Ingeniería de software, se convocó en 1968 a una reunión de trabajo en Alemania Oriental; en esa junta y en la siguiente en Italia, se estimuló el interés general hacia los aspectos técnicos y administrativos utilizados en el desarrollo y mantenimiento de productos de Ingeniería de software. El término Ingeniería del software fue usado por primera vez en dicha reuniones.

Una de las primeras definiciones de ingeniería de software fue la propuesta en la primera conferencia importante dedicada al tema.

“El establecimiento y uso de principios de ingeniería, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales”. (Fritz Bauer)

Más definiciones:

La Ingeniería del Software es la aplicación práctica y sistemática del conocimiento científico a: (Boehm)

la producción de programas correctos, que se desarrollan a tiempo y dentro de las estimaciones de presupuesto,

y a la correspondiente documentación para desarrollarlos, usarlos y mantenerlos.

“Una disciplina que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza”. (Sommerville 2002)

Aunque se han propuesto muchas definiciones, todas refuerzan la importancia de una disciplina de ingeniería para el desarrollo de software.

Ya que esta ingeniería tiene alto consumo de recursos humanos requiere de habilidades técnicas y de un gran consumo administrativo.

La Ingeniería del Software se fundamenta en técnicas relacionadas con:

Ciencia de la computación, programación, ingeniería, administración, matemáticas, economía,...

La ciencia de la administración asigna los fundamentos para la administración del proyecto. Los sistemas deben desarrollado y mantenidos en tiempo y dentro de un régimen de estimación de costos; la economía, por su parte, brinda los fundamentos para la estimación de recursos y el costo del control.

1.2. El papel evolutivo del software

Historia de la ingeniería de software.

a) Primera Era.

2

Page 3: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

Durante los primeros años de desarrollo de las computadoras, el hardware sufrió muchos cambios, mientras que el software se contemplaba como un añadido. Para la programación existían pocos métodos sistemáticos. El desarrollo de software se realizaba sin ninguna planificación. La mayor parte del hardware se dedicaba a la ejecución de un único programa que, a su vez, se dedicaba a una aplicación especial. Se utilizaba en la mayoría de los sistemas una orientación por lotes. El software como producto (programas desarrollados para ser vendidos) estaba en su infancia. La mayoría del software se desarrollaba y se utilizaba por la misma persona u organización. La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba.

Debido a este entorno personalizado del software, el diseño era un proceso implícito, realizado en la mente de alguien, y la documentación normalmente no existía.

b) Segunda Era.

Los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre máquina. Los sistemas de tiempo real podían recoger, analizar y transforma datos de múltiples fuentes, controlando así los procesos y produciendo salidas en milisegundos en lugar de minutos. Los avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de base de datos.

El software se caracterizó también como producto y surgen “las casas de software”. El software se desarrollaba para tener una amplia distribución en el mercado.

c) Tercera Era.

Se caracterizó por la llegada y el amplio uso de los microprocesadores y las computadoras personales, las cuales han sido el catalizador del gran crecimiento de muchas compañías de software.

Mientras que las ventas de computadoras personales se estabilizaron hacia la mitad de los ochentas, las ventas de productos de software han continuado creciendo.

d) Cuarta Era.

En la que nos encontramos ahora. Las técnicas orientadas a los objetos están desplazando rápidamente a enfoques más convencionales en muchas áreas de aplicación. Las técnicas de cuarta generación para el desarrollo de software están cambiando la forma en que algunos segmentos de la comunidad informática construyen los programas de computadora.

PRIMERA ERA SEGUNDA ERAOrientación por lotes Multiusuario Software a medida Base de datosDistribución limitada Software como producto

Tiempo real Tabla 1: Resumen de la primera y segunda era del software

TERCERA ERA CUARTA ERAHardware de bajo costo Tecnologías orientadas a los objetosIncorporación de inteligencia Sistemas expertosImpacto en el consumo Redes neuronales

Tabla 2: Resumen de tercera y cuarta era del software

1.3. Etapas del desarrollo software

3

Page 4: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

Es un enfoque por fases para el análisis y diseño cuya premisa principal consiste en que los sistemas se desarrollan mejor utilizando un ciclo específico de actividades del analista y el usuario

Planificación y gestión del proyecto.

En esta primera fase del ciclo de vida del desarrollo de sistemas, el analista se ocupa de identificar problemas, oportunidades y objetivos. Los usuarios, los analistas y los administradores de sistemas son los involucrados en esta fase. Las actividades consisten en entrevistar a los encargados de coordinar a los usuarios, sintetizar el conocimiento obtenido, estimar el alcance del proyecto y documentar los resultados.

El resultado es un informe de viabilidad que incluye una definición del problema y un resumen de los objetivos. A continuación la administración debe decidir si se sigue adelante con el proyecto propuesto. Si el grupo de usuarios no cuenta con fondos suficientes, si desea atar problemas distintos, o si la solución a estos no amerita un sistema de cómputo, se podría sugerir una solución diferente y el proyecto de sistemas se cancelaría.

Determinación de requerimientos.

Entre las herramientas que se utilizan para determinar requerimientos de información de un negocio se encuentran métodos interactivos como las entrevistas, los muestreos, la investigación de datos impresos y la aplicación de cuestionarios; métodos que no interfieren con el usuario como la observación del comportamiento de los encargados de tomar las decisiones y sus entornos de oficina, al igual que métodos de amplio alcance como la elaboración de prototipos.

En esta fase los implicados son el analista y los usuarios, por o general trabajadores y gerentes de áreas de operaciones. El analista se esfuerza por comprender la información que necesitan los usuarios para llevar a cabo sus actividades por lo que necesita conocer los detalles de las funciones del sistema actual: el quién ( la gente involucrada), el qué (la actividad del negocio), el dónde (el entorno donde se desarrollan las actividades), el cuándo (el momento oportuno) y el cómo (la manera en que se realizan los procedimientos actuales) del negocio que se estudia.

Al término de esta fase el analista debe conocer el funcionamiento del negocio y poseer información muy completa acerca de la gente, los objetivos, los datos y los procedimientos implicados.

Análisis y diseño.

Análisis

Para analizar las necesidades del sistema el analista hace uso de diagramas de flujo de datos para graficar las entradas, los procesos y las salidas de las funciones del negocio. A partir de estos se desarrollan diccionarios de datos que enlistan todos los datos utilizados en el sistema, así como sus respectivas especificaciones.

Existen otros métodos para el análisis de decisiones como son: español estructurado, tablas y árboles de decisión.

En este punto del ciclo de vida del desarrollo de sistemas, el analista prepara una propuesta de sistemas que sintetiza sus hallazgos, proporciona un análisis de costo/beneficio de las alternativas y ofrece, en su caso, recomendaciones sobre lo que se debe hacer. Si la administración de la empresa considera factible laguna de las recomendaciones, el analista sigue adelante. Cada problema de sistemas es único, y nunca existe sólo una solución correcta. La manera de formular una recomendación o solución depende de las cualidades y la preparación profesional de cada analista.

Diseño

4

Page 5: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

En la fase de diseño del ciclo de vida del desarrollo de sistemas, el analista utiliza la información recopilada en las primeras fases para realizar el diseño lógico del sistema de información. El analista diseña procedimientos precisos para la captura de los datos que aseguran que ingresen al sistema de forma correcta.

Además, el analista facilita la entrada eficiente de datos al sistema de información mediante técnicas adecuadas de diseño de formularios.

Esta fase incluye también el diseño de la interfaz del usuario, de archivos o bases de datos que almacenaran gran parte de los datos indispensables para los encargados de tomar las decisiones en la organización. Es muy importante que el analista interactúe con los usuarios para diseñar la salida que satisfaga sus las necesidades de información.

Finalmente debe diseñar controles y procedimientos de respaldo que protejan al sistema y a los datos, y producir paquetes de especificaciones de programa para los programadores.

Programación.

El analista trabaja de manera conjunta con los programadores para desarrollar cualquier software original necesario. Entre las técnicas estructuradas para diseñar y documentar software se encuentran los diagramas de estructuras, los diagramas de Nassi-Shneiderman y el seudocódigo. El analista se vale de una o más de estas herramientas para comunicar al programador lo que requiere programar.

Pruebas e implantación.

Pruebas

Antes de poner el sistema en funcionamiento es necesario probarlo. Es mucho menos costoso encontrar los problemas antes de que se entregue a los usuarios. Una parte de las pruebas las realizan los programadores solos, y otra la llevan a cabo de manera conjunta con los analistas de sistemas. Primero se realizan una serie de pruebas con datos de muestra para determinar con precisión cuáles son los problemas y posteriormente se realiza otra con datos reales del sistema actual.

Implantación

En esta fase se capacita a los usuarios en el manejo del sistema, además el analista tiene que planear una conversión de archivos de formatos anteriores a los nuevos, o la construcción de una base de datos, la instalación de equipo y la puesta en producción del nuevo sistema.

(Kendall y Kendall y 6°. ed.)

5

Page 6: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

1.4. Clasificación de la tecnología en el desarrollo de software (Tecnología Estructurada y Orientada a Objetos)

Tecnología orientada a objetos

Hoy en día la tecnología orientada a objetos ya no se aplica solamente a los lenguajes de programación, además se viene aplicando en el análisis y diseño con mucho éxito, al igual que en las bases de datos. Es que para hacer una buena programación orientada a objetos hay que desarrollar todo el sistema aplicando esta tecnología, de ahí la importancia del análisis y el diseño orientado a objetos.

La programación orientada a objetos es una de las formas más populares de programar y viene teniendo gran acogida en el desarrollo de proyectos de software desde los últimos años. Esta acogida se debe a sus grandes capacidades y ventajas frente a las antiguas formas de programar.

Una Perspectiva HistóricaTradicionalmente, la programación fue hecha en una manera secuencial o lineal, es decir una

serie de pasos consecutivos con estructuras consecutivas y bifurcaciones.Los lenguajes basados en esta forma de programación ofrecían ventajas al principio, pero el

problema ocurre cuando los sistemas se vuelven complejos. Estos programas escritos al estilo “espaguetti” no ofrecen flexibilidad y el mantener una gran cantidad de líneas de código en sólo bloque se vuelve una tarea complicada.

Frente a esta dificultad aparecieron los lenguajes basados en la programación estructurada. La idea principal de esta forma de programación es separar las partes complejas del programa en módulos o segmentos que sean ejecutados conforme se requieran. De esta manera tenemos un diseño modular, compuesto por módulos independientes que puedan comunicarse entre sí. Poco a poco este estilo de programación fue reemplazando al estilo “espaguetti” impuesto por la programación lineal.

Entonces, vemos que la evolución que se fue dando en la programación se orientaba siempre a ir descomponiendo más el programa. Este tipo de descomposición conduce directamente a la programación orientada a objetos.

Pues la creciente tendencia de crear programas cada vez más grandes y complejos llevó a los desarrolladores a crear una nueva forma de programar que les permita crear sistemas de niveles empresariales y con reglas de negocios muy complejas. Para estas necesidades ya no bastaba la programación estructurada ni mucho menos la programación lineal. Es así como aparece la programación orientada a objetos (POO). La POO viene de la evolución de la programación estructurada; básicamente la POO simplifica la programación con la nueva filosofía y nuevos conceptos que tiene. La POO se basa en la dividir el programa en pequeñas unidades lógicas de código. A estas pequeñas unidades lógicas de código se les llama objetos. Los objetos son unidades independientes que se comunican entre ellos mediante mensajes. Veamos con mayor detenimiento este tema.

¿Cuáles son las ventajas de un lenguaje orientado a objetos?·    Fomenta la reutilización y extensión del código.·    Permite crear sistemas más complejos.·    Relacionar el sistema al mundo real.·    Facilita la creación de programas visuales.·    Construcción de prototipos·    Agiliza el desarrollo de software·    Facilita el trabajo en equipo·    Facilita el mantenimiento del softwareLo interesante de la POO es que proporciona conceptos y herramientas con las cuales se

modela y representa el mundo real tan fielmente como sea posible.  CONCEPTO DE PROGRAMACIÓN ESTRUCTURADAEL creciente empleo de los computadores ha conducido a buscar un abaratamiento del

desarrollo des software, paralelo a la reducción del costo del hardware obtenido gracias a los avances tecnológicos. Los altos costos del mantenimiento de las aplicaciones en producción normal también han urgido la necesidad de mejorar la productividad del personal de programación.

6

Page 7: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

En la década del sesenta salieron a la luz pública los principios de lo que más tarde se llamo Programación Estructurada, posteriormente se libero el conjunto de las llamadas "Técnicas para mejoramiento de la productividad en programación" (en ingles Improved Programming Technologies, abreviado IPTs), siendo la Programación Estructurada una de ellas.

Los programas computarizados pueden ser escritos con un alto grado de estructuración, lo cual les permite ser más fácilmente comprensibles en actividades tales como pruebas, mantenimiento y modificación de los mismos. Mediante la programación Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificación del mismo desde su inicio hasta su terminación en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lógica establecida por el programador, como es la situación habitual con codificaciones desarrolladas bajo otras técnicas.

EN programación Estructurada los programadores deben profundizar mas que lo usual al procederá realizar el diseño original del programa, pero el resultado final es más fácil de leer y comprender, el objetivo de u programador profesional al escribir programas de una manera estructurada, es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados.

EL resultado de aplicar la sistemática y disciplinada manera de elaboración de programas establecida por la Programación Estructurada es una programación de alta precisión como nunca antes había sido lograda. Las pruebas de los programas, desarrollados utilizando este método, se acoplan mas rápidamente y el resultado final con programas que pueden ser leídos, mantenidos y modificados por otros programadores con mucho mayor facilidad.

DEFINICIONESProgramación Estructurada es una técnica en la cual la estructura de un programa, esto es, la

interpelación de sus partes realiza tan claramente cómo es posible mediante el uso de tres estructuras lógicas de control:

·  Secuencia: Sucesión simple de dos o más operaciones.·  Selección: bifurcación condicional de una o más operaciones.·  Interacción: Repetición de una operación mientras se cumple una condición.Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir

programas que manejen cualquier tarea de procesamiento de información.Un programa estructurado está compuesto de segmentos, los cuales puedan estar constituidos

por unas pocas instrucciones o por una página o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamás se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un programa propio.

La programación Estructurada está basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.

Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en

su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea.

VENTAJAS POTENCIALESUn programa escrito de acuerdo a estos principios no solamente tendrá una estructura, sino

también una excelente presentación.Un programa escrito de esta forma tiende a ser mucho más fácil de comprender que programas

escritos en otros estilos.La facilidad de comprensión del contenido de un programa puede facilitar el chequeo de la

codificación y reducir el tiempo de prueba y depuración de programas. Esto ultimo es cierto parcialmente, debido a que la programación estructurada concentra los errores en uno de los factores más generador de fallas en programación: la lógica.

7

Page 8: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

Un programa que es fácil para leer y el cual está compuesto de segmentos bien definidos tiende a ser simple, rápido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el programa tenga una extensión significativa, en documentación tiende siempre a estar al día, esto no suele suceder con los métodos convencionales de programación.

La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.

TEOREMA DE LA ESTRUCTURAEl teorema de la estructura establece que un programa propio puede ser escrito utilizando

solamente las siguientes estructuras lógicas de control: secuencia, selección e iteración.Un programa de define como propio si cumple con los dos requerimientos siguientes:Tiene exactamente una entrada y una salida para control del programa.Existen caminos seguibles desde la entrada hasta la salida que conducen por cada parte del

programa, es decir, no existen lazos infinitos ni instrucciones que no se ejecutan.

1.5. Definición e historia de las herramientas CASE

CASE (Computer Assisted Software Engineering)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: 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 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.

1.6. Clasificación de las herramientas CASE

8

Page 9: Unidad I Fundamentos Ingeniería de Software

Unidad 1: Fundamentos Ingeniería de Software

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) ofront-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) oback-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.

9