Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Fundamentos de ingenieria de software
1. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
INGENIERÍA DE SOFTWARE
El proceso de desarrollo de software puede definirse como un conjunto de herramientas,
métodos y prácticas que se emplean para producir software. Como cualquier otra
organización, las dedicadas al desarrollo de software mantienen entre sus principales fines,
la producción de software de acuerdo con la planificación inicial realizada, además de una
constante mejora con el fin de lograr los tres objetivos últimos de cualquier proceso de
producción: alta calidad y bajo coste, en el mínimo tiempo.
DEFINICIÓN DE SOFTWARE
El software es la suma total de los programas de computadora, procedimientos, reglas, la
documentación asociada y los datos que pertenecen a un sistema de cómputo.
En esta contexto, la ingeniería de Software (SE, del inglés Software Engineering) es un
enfoque sistemático del desarrollo, operación, mantenimiento y retiro del software, se
considera que “la Ingeniería de Software es la rama de la ingeniería que aplica los
principios de la ciencia de la computación y las matemáticas para lograr soluciones
costo-efectivas (eficaces en costo o económicas) a los problemas de desarrollo de
software", es decir, "permite elaborar consistentemente productos correctos, utilizables y
costo-efectivos".
El proceso de ingeniería de software se define como "un conjunto de etapas parcialmente
ordenadas con la intención de logra un objetivo, en este caso, la obtención de un producto
de software de calidad”. El proceso de desarrollo de software "es aquel en que las
necesidades del usuario son traducidas en requerimientos de software, estos requerimientos
transformados en diseño y el diseño implementado en código, el código es probado,
documentado y certificado para su uso operativo".
INGENIERÍA DEL SOFTWARE
"Software es la suma total de los programas de computadora, procedimientos, reglas, la
documentación asociada y los datos que pertenecen a un sistema de cómputo".1 En este
contexto, la Ingeniería de Software (SE del inglés Software Engineering) es un enfoque
sistemático del desarrollo, operación, mantenimiento y retiro del software.
Se considera que "la Ingeniería de Software es la rama de la ingeniería que aplica los
principios de la ciencia de la computación y las matemáticas para lograr soluciones
costo-efectivas (eficaces en costo o económicas) a los problemas de desarrollo de software,
permite elaborar consistentemente productos correctos, utilizables y costo-efectivos".
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 1 de 15
2. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
“La ingeniería de software es una disciplina de la ingeniería a la que le conciernen todos
los aspectos de la producción del software, no solo el proceso técnico del desarrollo, sino
también la administración del proyecto y el desarrollo de herramientas, entre otras cosas
que involucra la producción de software” (Sommerville, 2011).
El proceso de ingeniería de software se define como "un conjunto de etapas parcialmente
ordenadas con la intención de logra un objetivo, en este caso, la obtención de un producto
de software de calidad". El proceso de desarrollo de software "es aquel en que las
necesidades del usuario son traducidas en requerimientos de software, estos requerimientos
transformados en diseño y el diseño implementado en código, el código es probado,
documentado y certificado para su uso operativo".
El proceso de desarrollo de software requiere por un lado un conjunto de conceptos, una
metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del
software.
EL PAPEL EVOLUTIVO DEL SOFTWARE
El software es tanto un producto como el vehículo para su entrega. Es el transformador de
la información. El papel del software de computadora ha experimentado un cambio
significativo en un periodo un poco mayor a 50 años.
Las mejorías sustanciales en el desempeño del hardware, los cambios profundos en las
arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y
almacenamiento, y la amplia variedad de opciones de salida y de entrada han propiciado el
surgimiento de sistemas más elaborados y complejos basados en computadoras.
Nadie sabe en realidad el futuro de los sistemas que día a día se construyen, más sin
embargo sin importar el lugar en el que resida el software, ya sea en un celular o dentro de
una computadora central, el software realiza la producción, el manejo, la adquisición, la
modificación, el despliegue o la transmisión de la información que puede ser tan simple
como un solo bit o tan compleja como una presentación multimedia. En su papel de
vehículo para la entrega de un producto, el software actúa como la base para el control de la
computadora (sistemas operativos), la comunicación de información (redes) y la creación y
el control de otros programas (utilerías de software y ambientes).
El software entrega el producto más importante de nuestro tiempo: información.
Transforma los datos personales, por ejemplo las transacciones financieras de un individuo,
de modo que los datos sean más útiles en un contexto local. Maneja información de negocio
para mejorar la competitividad, proporciona una vía para las redes de información
alrededor del mundo (Internet) y proporciona los medios para adquirir información en todas
sus formas (páginas web).
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 2 de 15
3. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
LA NATURALEZA CAMBIANTE DEL SOFTWARE
En la actualidad existen siete grandes categorías del software de computadora que
presentan retos continuos para los ingenieros de software.
Software de sistemas: colección de programas escritos para servir a otros
programas. Ejemplo: los compiladores, editores y utilerías para la administración de
archivos, los cuales procesar estructuras de información complejas pero
determinadas. Otras aplicaciones de sistemas como los componentes del sistema
operativo, controladores, software de red, procesadores para telecomunicaciones,
procesan datos indeterminados.
Software de aplicación: son programas independientes que resuelven una
necesidad de negocios específica. Ejemplo: el procesamiento de transacciones en
los puntos de venta.
Software científico y de ingeniería: se caracteriza por algoritmos. Abarca desde la
astronomía hasta la vulcanología, desde el análisis de la tensión automotriz hasta la
dinámica orbital de los transbordadores espaciales, y desde la biología molecular
hasta la manufactura automatizada. Diseño asistido por computadora.
Software empotrado o incrustado o embebido: reside en la memoria de solo
lectura del sistema y con él se implementan y controlan características y funciones
para el usuario final y el sistema mismo. Ejemplo: control del teclado de un horno
microondas, las funciones digitales de un automóvil, como el control de
combustible, los sistemas de frenado, entre otros.
Software de línea de productos: diseñado para proporcionar una capacidad
específica y la utilización de muchos clientes diferentes, se puede enfocar en un
nicho de mercado limitado. Ejemplo: productos para el control de inventarios, hojas
de cálculos, multimedia, entretenimiento, manejo de BD, administración de
personal y finanzas en los negocios.
Aplicación basada en Web: las “WebApps” engloban un espectro amplio de
aplicaciones. En su forma más simple, las WebApps son apenas un poco más que
un conjunto de archivos de hipertexto ligados que presentan información mediante
texto y algunas gráficas. Actualmente estas aplicaciones están integradas con base
de datos y aplicaciones de negocios, ya que proporcionan características que les
permite evolucionar hacia ambientes computacionales sofisticados.
Software de inteligencia: utiliza algoritmos no numéricos en la resolución de
problemas complejos que es imposible abordar por medio de un análisis directo.
Incluye la robótica, el reconocimiento de patrones (imagen y voz), los juegos de
computadoras, entre otros.
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 3 de 15
4. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
Existen otras dos categorías de software que engloban todas las anteriores de una forma
más sencilla:
Software genérico o de paquete: este tipo busca crear software que sea utilizado
tal cual fue creado. Un ejemplo es la suite de Microsoft Office o bien los productos
de Macromedia.
Software personalizado o a la medida: este tipo busca crear software que cumpla
las necesidades específicas de la empresa que lo necesita. Un ejemplo sería una
universidad que desarrolla su propio sistema de inscripciones.
ETAPAS DEL SOFTWARE
El proceso de desarrollo de software requiere por un lado un conjunto de conceptos, una
metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del
software que comprende cuatro grandes fases:
Concepción
Elaboración
Construcción y
Transición.
La concepción define el alcance del proyecto y desarrolla un caso de negocio. La
elaboración define un plan del proyecto, especifica las características y fundamenta la
arquitectura. La construcción crea el producto y la transición transfiere el producto a los
usuarios.
En la siguiente figura se muestra la estructura del proceso Unificado:
Figura 1. Estructura del proceso unificado
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 4 de 15
5. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
EL CICLO DE VIDA
Todo proyecto de ingeniería tiene unos fines ligados a la obtención de un producto, proceso
o servicio que es necesario generar a través de diversas actividades. Al conjunto de las fases
empleadas se le denomina “ciclo de vida”.
La definición de un ciclo de vida facilita el control sobre los tiempos en que es necesario
aplicar recursos de todo tipo (personal, equipos, suministros, etc.) al proyecto.
Un ciclo de vida para un proyecto se compone de fases sucesivas compuestas por tareas
planificables.
Figura 2: Fases del ciclo de vida
A continuación se muestran los distintos elementos que integran un ciclo de vida:
Fases. Una fase es un conjunto de actividades relacionadas con un objetivo en el
desarrollo del proyecto. Se construye agrupando tareas (actividades elementales)
que pueden compartir un tramo determinado del tiempo de vida de un proyecto.
Cuanto más grande y complejo sea un proyecto, mayor detalle se necesitará en la
definición de las fases para que el contenido de cada una siga siendo manejable.
Entregables. Son los productos intermedios que generan las fases. Los entregables
permiten evaluar la marcha del proyecto mediante comprobaciones de su
adecuación o no a los requisitos funcionales y de condiciones de realización
previamente establecidos. Cada una de estas evaluaciones puede servir, además,
para la toma de decisiones a lo largo del desarrollo del proyecto.
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 5 de 15
6. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
Figura 3: Esquema general de operación de una fase
MODELOS DE CICLO DE VIDA
El alcance dependiendo de hasta dónde llegue el proyecto correspondiente. Un
proyecto puede comprender un simple estudio de viabilidad del desarrollo de un
producto, o su desarrollo completo o, llevando la cosa al extremo, toda la historia
del producto con su desarrollo, fabricación, y modificaciones posteriores hasta su
retirada del mercado.
Las características de las fases en que dividen el ciclo. Esto puede depender del
propio tema al que se refiere el proyecto, o de la organización.
La estructura de la sucesión de las fases que puede ser lineal, con prototipado, en
espiral.
TECNOLOGÍAS DE SOFTWARE
En la presente sección pasaremos revista a dos grandes grupos de tecnologías de software
analizando las principales características de sus componentes en el momento actual y
señalando las tendencias observadas. Las tecnologías identificadas son:
a) Tecnologías de desarrollo estructurado.
b) Tecnologías orientadas a objetos.
TECNOLOGÍAS DE DESARROLLO ESTRUCTURADO
Las tecnologías de desarrollo estructurado son las más convencionales de las empleadas
hoy día. Han surgido de la evolución de las ideas de programación estructurada (hace más
de veinticinco años) hacia las fases iniciales del ciclo de vida.
En su formulación actual, las notaciones empleadas en las primeras fases del ciclo de vida
(especificación de requisitos de usuario y sistema) suelen estar constituidas por lenguajes
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 6 de 15
7. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
gráficos que permiten: identificar el sistema y el entorno; representar el flujo de
información entre los elementos; y, describir los datos y las actividades del sistema.
La idea base de esta tecnología es que es posible estructurar el modelo de un sistema de
software en base a funciones que procesan información que reciben de otras funciones (o
del exterior) y dirigen la información procesada a otros módulos funcionales (o al exterior).
El enfoque seguido, por tanto, es el de pensar en las funciones del sistema necesarias
(extraídas de los requisitos del sistema) y luego en los datos que requieren.
Entre las más utilizadas para análisis y especificación de requisitos se encuentra SA/RT
(Análisis Estructurado con extensiones para tiempo real). Surgió como un lenguaje gráfico
capaz de representar las actividades que deberá realizar el sistema, los intercambios de
información entre ellos, etc. La descripción del comportamiento se realiza mediante
diagramas de transición de estados.
Existen otras notaciones basadas en conceptos muy similares y el utilizar una u otra es más
bien un problema de gusto. Las diferencias entre ellos provienen más de la forma de usarla
que de la potencia expresiva del lenguaje.
Como evolución de las técnicas de análisis estructurado, en la fase de diseño se han
utilizado variantes de SA/RT: SD/RT (Diseño Estructurado con extensiones para Tiempo
Real). Al igual que SA/RT consta de un lenguaje gráfico no ejecutable e incorporan
conceptos tales como: tarea, procesador, colas de mensajes, mecanismos de sincronización
entre tareas, etc. que son conceptos necesarios en la fase de diseño.
En una línea diferente y para evitar los problemas de la explosión de estados se definieron
por Harel [14] los «statecharts» (variante de los diagramas de estado). Con ellos, se lograba
compactar el espacio de estados que resultaba al describir sistemas de gran complejidad al
permitir jerarquización de estados y descomposición en componentes. En base a ellos se ha
desarrollado una tecnología estructurada adaptada a sistemas de control denominada
Statemate.
Para la fase de análisis y especificación de requisitos, las herramientas están asociadas a la
construcción de modelos del sistema (modelos lógicos con diagramas de estado asociados).
Estas herramientas no son genéricas sino que soportan métodos concretos. Suelen constar
de:
A. Editores gráfico-textuales de la notación asociada a un método (tanto para describir
las funciones como para describir el comportamiento mediante diagramas de
estado).
B. Comprobadores de consistencia en la información relativa a refinamientos del
modelo (nombres, tipos, uso, etc. de los elementos definidos en los diagramas).
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 7 de 15
8. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
C. Sistema de gestión de la información almacenada (en ocasiones basada en bases de
datos relacionales u orientadas a objetos para gestionar el acceso a la información).
D. Generadores de prototipos (normalmente de interfaz gráfica) con objeto de evaluar
los modelos lógicos o de diseño.
En las fases de diseño del sistema se dispone del mismo tipo de herramientas aunque en
este caso se suele disponer también de: analizadores temporales y estimadores de tiempos
de ejecución, generadores de código (más o menos completos) o facilidades para la
utilización de componentes genéricos contenidos en bibliotecas menos comunes pero cada
vez más conocidas son herramientas como las de animación gráfica de modelos. Estas
herramientas aparecen como extensión de las que permiten editar y validar modelos de
especificación y diseño estructurado de sistemas de software.
Finalmente, las herramientas que soportan la fase de implementación son las más conocidas
dado que han estado en su mayor parte presentes desde los comienzos de la programación:
editores (conociendo la sintaxis del lenguaje en algunos casos), compiladores e intérpretes,
generadores/optimizadores de código, ejecutores de casos de prueba, depuradores
simbólicos, etc.
Figura 4. Componentes de la tecnología de software estructurada
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 8 de 15
9. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
TECNOLOGÍAS ORIENTADAS A OBJETOS
Las tecnologías de desarrollo estructurado han demostrado sus limitaciones a la hora de
organizar y facilitar la evolución de sistemas de software complejos. La descomposición en
funciones hace difícil al diseñador mantener la relación con los objetos del mundo real
sobre los que se modifican generalmente los requisitos del usuario.
Los métodos de descomposición orientada a objetos constituyen la tendencia más
influyente observada en la ingeniería de sistemas de software en los últimos años. Con ellos
nos referimos a un conjunto de métodos (aún en fase de desarrollo o evolución) que
permiten al analista y diseñador concebir su sistema identificando clases de objetos,
operaciones permitidas y relaciones entre ellos como base para la estructura del sistema a
diseñar.
En ellas, un objeto es un conjunto de datos y funciones de manipulación de los mismos
encapsulados en una unidad que es posible tratar como un todo (crear, copiar, destruir,
etc.). Un objeto posee unas operaciones visibles a otros objetos aunque éstos no conocen
cómo están implementadas. El diseñador reconoce inicialmente clases de objetos de las que
se derivan los objetos concretos que utilizará en el diseño.
Un objeto puede construirse jerárquicamente empleando, a su vez, a otros objetos más
simples. Una clase implica una generalización del concepto de objeto (identificando
similitudes entre objetos similares) y constituye la base a partir de las cuales se construye el
sistema.
Existen varias tecnologías orientadas a objetos que, aunque similares en su potencia
expresiva, ofrecen algunas diferencias que las hacen más adecuadas para algún tipo
concreto de sistemas.
Podemos mencionar como una de las más representativas a OMT. OMT está soportada por
muchas herramientas CASE comerciales. Corresponde a una notación gráfica que permite
representar las clases de objetos, sus relaciones y la creación de ejemplares de los mismos.
Aunque básicamente empleada para la fase de análisis de requisitos del sistema puede
también emplearse para las primeras fases del diseño.
La descripción del comportamiento se realiza generalmente asociando a los objetos
diagramas de transición de estados similares a los empleados en las tecnologías de software
estructuradas (con los mismos problemas de la explosión de estados). En Booch puede
verse una idea general de su tecnología orientada a objetos. Los métodos de diseño
orientados a objetos suelen facilitar el desarrollo de una implementación en un lenguaje de
programación orientado a objetos (C++, Ada95 o Eiffel). No obstante, la elección del
lenguaje de implementación no es realmente importante y esta elección está condicionada
por muchas otras razones.
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 9 de 15
10. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
Justo es reconocer, sin embargo, que ha sido la Programación Orientada a Objetos la que ha
impulsado también la difusión de estas técnicas.
Las herramientas que acompañan a las tecnologías orientadas a objetos y disponibles en
sistemas CASE comerciales no se diferencian en esencia de las que aparecen en las
tecnologías estructuradas. El único aspecto destacable es la proliferación de catálogos de
clases para aplicaciones determinadas y los mecanismos de recuperación y personalización
asociados.
Figura 5. Componentes de una Tecnología Orientada a Objetos
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 10 de 15
11. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
¿QUÉ SON LAS HERRAMIENTAS CASE?
Definición de las Herramientas CASE: 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 son: Investigación Preliminar,
Análisis, Diseño, Implementación e Instalación.
CASE (Computer Aided Software Engineering) 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.
HISTORIA DE LAS HERRAMIENTAS CASE
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 paquetes 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.
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 11 de 15
12. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
Como un paso final, la verificación de errores y generadores de casos de pruebas fueron
incluidos para validar el diseño del software. Todos estos procesos pueden saberse
integrados en una simple herramienta CASE que soporta todo el ciclo de desarrollo.
La primera herramienta comercial se remonta a 1982, aunque algunos especialistas indican
que algunos ejemplos de herramientas para diagramación ya existían.
No fue sino hasta 1985 en que las herramientas CASE se volvieron realmente importantes
en el proceso de desarrollo de software. Los proveedores prometieron a la Industria que
muchas actividades serían beneficiadas por la ayuda de las CASE. Estos beneficios
consistían, por ejemplo, en el aumento en la productividad. El objetivo en 1985 para
muchos vendedores era producir software más rápidamente. Las herramientas del CASE
serían una familia de métodos favorablemente estructurados para planeamiento, análisis y
diseño. Esto llevaría a la generación automática de código para desarrollo de software vía
una especificación formalmente diseñada. Esto traería como beneficio:
Una mejora en la calidad, fiabilidad, utilidad y rendimiento.
El entorno de producción de documentación para software mejora la comunicación,
mantenimiento y actualización.
Hace el trabajo de diseño de software más fácil y agradable.
La promesa futura de reemplazar realmente a los ingenieros de software
especializados.
Reducción del costo de producción de software.
Con estos objetivos en mente, la industria destinó millones en producción de Herramientas
CASE.
Así como esta enorme suma de dinero fue gastada en Herramientas CASE, hubo también
trabajo de investigación a nivel mundial en diferentes instituciones como Universidades,
Instituciones Gubernamentales y de Defensa. La industria de Herramientas CASE está
creciendo y está tomando cada vez mayor importancia.
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.
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 12 de 15
13. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
CLASIFICACIÓN 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 CASE Toolkits: 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 orientadas a la fase de mantenimiento.
Ventajas y Desventajas
Tipo de
Ventajas Desventajas
Case
I – Case Integra el ciclo de vida. No es tan eficiente para soluciones
Permite lograr importantes simples, sino para soluciones
mejoras de productividad a complejas.
mediano plazo. Depende del Hardware y del
Permite un eficiente soporte al Software.
mantenimiento de sistemas. Es costoso.
Mantiene la consistencia de los
sistemas a nivel corporativo.
Upper Case Se utiliza en plataforma PC, es Permite mejorar la calidad de los
aplicable a diferentes entornos, sistemas, pero no mejora la
Menor costo productividad.
No permite la integración del ciclo
de vida.
Lower Case Permite lograr importantes No garantiza la consistencia de los
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 13 de 15
14. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
mejoras de productividad a corto resultados a nivel corporativo.
plazo. No garantiza la eficiencia del
Permite un eficiente soporte al Análisis y Diseño.
mantenimiento de sistemas. No permite la integración del ciclo
de vida.
GLOSARIO DE DEFINICIONES BÁSICAS DE CASE
CASE: Ayuda por Computadora a la Ingeniería de Software.
TECNOLOGÍA CASE: Una tecnología del software que mantiene una disciplina
de la ingeniería automatizada para el desarrollo de software, mantenimiento y
dirección de proyecto, incluye metodologías estructuradas automatizadas y
herramientas automatizadas.
HERRAMIENTA CASE: Una herramienta del software que automatiza (por lo
menos en parte) una parte del ciclo de desarrollo de software.
SISTEMA CASE: Un conjunto de herramientas CASE integradas que comparten
una interface del usuario común y corren en un ambiente computacional común.
KIT 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.
METODOLOGÍA 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.
PUESTO 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.
PLATAFORMA 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.
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 14 de 15
15. INSTITUTO TECNOLÓGICO SUPERIOR DE GUASAVE.
FUNDAMENTOS DE INGENIERÍA DE SOFTWARE. UNIDAD 1.
LITERATURA CONSULTADA
1 Lewis G. “What is Software Engineering?” DataPro (4015). Febrero 1994
2 Cota A. 1994 “Ingenieria de Software”. Soluciones Avanzadas. Julio 1994.
3 Jacobson, I. 1998. “Applying UML in the Unified Process” Presentation. Rational
Software.
4 León G. Ingeniería de Sistemas de Software. Isdefe. España. Mayo 1996. E-book.
Consulta en: http://es.scribd.com/doc/454427/39/Tecnologias-de-desarrollo-
estructurado
Material de Lectura Desarrollado por MSI. José Antonio Sandoval Acosta
Página 15 de 15