SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Contenu connexe

Tendances

Categorías de software
Categorías de softwareCategorías de software
Categorías de softwarekitzia3
 
Victoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftwareVictoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftwareVictoria_isabel
 
Unidad 1 (1.3) Fundamentos de ingeniería de software
Unidad 1 (1.3) Fundamentos de ingeniería de software Unidad 1 (1.3) Fundamentos de ingeniería de software
Unidad 1 (1.3) Fundamentos de ingeniería de software Selins Cassiel
 
Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Yaskelly Yedra
 
Categorias del software
Categorias del softwareCategorias del software
Categorias del softwaredagny25
 
Iswi t01 - romero prado , gyno (2)
Iswi   t01 - romero prado , gyno (2)Iswi   t01 - romero prado , gyno (2)
Iswi t01 - romero prado , gyno (2)Gyno Romero Prado
 
Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...
Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...
Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...Rosa Arellano
 
Ensayo software
Ensayo softwareEnsayo software
Ensayo softwarehitwinenze
 
Tipos de software y su desarrollo
Tipos de software y su desarrolloTipos de software y su desarrollo
Tipos de software y su desarrollopool123454
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwareIngryd Cobain
 
Presentación tic software
Presentación tic softwarePresentación tic software
Presentación tic softwarerosarioavitua
 

Tendances (17)

Categorías de software
Categorías de softwareCategorías de software
Categorías de software
 
David valdiviezo ing.pdf
David valdiviezo ing.pdfDavid valdiviezo ing.pdf
David valdiviezo ing.pdf
 
Niebla sortillon jesus francisco actividad1.1 si5 1
Niebla sortillon jesus francisco actividad1.1 si5 1Niebla sortillon jesus francisco actividad1.1 si5 1
Niebla sortillon jesus francisco actividad1.1 si5 1
 
Victoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftwareVictoria_Isabel_DiseñoDeSoftware
Victoria_Isabel_DiseñoDeSoftware
 
Unidad 1 (1.3) Fundamentos de ingeniería de software
Unidad 1 (1.3) Fundamentos de ingeniería de software Unidad 1 (1.3) Fundamentos de ingeniería de software
Unidad 1 (1.3) Fundamentos de ingeniería de software
 
Categorias del Software
Categorias del SoftwareCategorias del Software
Categorias del Software
 
Ensayo (El Software)
Ensayo (El Software)Ensayo (El Software)
Ensayo (El Software)
 
Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)
 
Categorias del software
Categorias del softwareCategorias del software
Categorias del software
 
Iswi t01 - romero prado , gyno (2)
Iswi   t01 - romero prado , gyno (2)Iswi   t01 - romero prado , gyno (2)
Iswi t01 - romero prado , gyno (2)
 
Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...
Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...
Presentacion ing software ciclo_de_vida_ metodo_clasico_metodo_analisis_estru...
 
El sofware
El sofwareEl sofware
El sofware
 
Ensayo software
Ensayo softwareEnsayo software
Ensayo software
 
Tema Introducción IS
Tema Introducción ISTema Introducción IS
Tema Introducción IS
 
Tipos de software y su desarrollo
Tipos de software y su desarrolloTipos de software y su desarrollo
Tipos de software y su desarrollo
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Presentación tic software
Presentación tic softwarePresentación tic software
Presentación tic software
 

Similaire à Fundamentos de ingenieria de software

Similaire à Fundamentos de ingenieria de software (20)

El producto y el proceso
El producto y el procesoEl producto y el proceso
El producto y el proceso
 
6. is construcción del software
6. is construcción del software6. is construcción del software
6. is construcción del software
 
Software
SoftwareSoftware
Software
 
Tipos de software
Tipos de softwareTipos de software
Tipos de software
 
Que es el software
Que es el softwareQue es el software
Que es el software
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Jesus acosta ing.pdf
Jesus acosta ing.pdfJesus acosta ing.pdf
Jesus acosta ing.pdf
 
sofwuare
sofwuaresofwuare
sofwuare
 
Tarea semana 1
Tarea semana 1Tarea semana 1
Tarea semana 1
 
Tareasemana1
Tareasemana1Tareasemana1
Tareasemana1
 
Software
SoftwareSoftware
Software
 
Omar,luis,daniel
Omar,luis,danielOmar,luis,daniel
Omar,luis,daniel
 
Emmanuelcastañedaensayo
EmmanuelcastañedaensayoEmmanuelcastañedaensayo
Emmanuelcastañedaensayo
 
ingeneria del software
ingeneria del softwareingeneria del software
ingeneria del software
 
Soportes logicos
Soportes logicosSoportes logicos
Soportes logicos
 
Anddre (2)
Anddre (2)Anddre (2)
Anddre (2)
 
Victoria_Isabel_DiseñoDeSoftware2014
Victoria_Isabel_DiseñoDeSoftware2014Victoria_Isabel_DiseñoDeSoftware2014
Victoria_Isabel_DiseñoDeSoftware2014
 
software
softwaresoftware
software
 
Tendencias actuales del desarrollo de software
Tendencias actuales del desarrollo de softwareTendencias actuales del desarrollo de software
Tendencias actuales del desarrollo de software
 
Taller powerpoint
Taller powerpointTaller powerpoint
Taller powerpoint
 

Dernier

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Dernier (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

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