Documente Academic
Documente Profesional
Documente Cultură
Unidad 1
Introducción a la Ingeniería de
Software
Unidad 1
Contenido
Software
Evolución
Características
Dominios de aplicación
La crisis del software
Causas
Consecuencias por fallas del software
Definiciones de la ingeniería de software
Paradigmas de ciclos de vida de la ingeniería de software
Modelos convencionales
Modelos recientes
Metodologías de desarrollo de software
Metodologías estructuradas
Metodologías orientadas a objetos
Herramientas CASE
La práctica de la ingeniería de software
Ingeniería de software
Unidad 1
Software
¿Qué es el software?
La suma total de los programas de cómputo,
procedimientos, reglas de documentación y datos
asociados que forman parte de las operaciones de un
sistema de cómputo [IEEE Computer Society Press, 1993].
Es un producto que diseñan y construyen los ingenieros
de software. Esto abarca programas que se ejecutan
dentro de una computadora de cualquier tamaño y
arquitectura, documentos que comprenden formularios
virtuales e impresos y datos que combinan números y
texto y también incluyen representaciones de la
información de audio, vídeo e imágenes [Pressman, 2002].
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Índice de fallos
sentido clásico.
El desarrollo y fabricación generan un producto
pero desde enfoques diferentes.
El software no se estropea; pero se deteriora. Curva de fallos del hardware
Tiempo
Índice de fallos
Aunque la industria tiende a ensamblar
componentes, la mayoría del software se
construye a la medida.
Esta situación esta cambiando con el uso más Tiempo
extendido de la programación orientada a Curvas de fallos real e
objetos. Idealizado del software
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
1, 5-6x
Después
1x de la
Desarrollo entrega
Definición
Ingeniería de software
Impacto del cambio
Unidad 1
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Reflexión
Si no hacen análisis, hay tabla
Si no diseñan antes de programar, hay tabla
Si programan si hacer pruebas, hay tabla
Si no comentan el código, hay tabla
Si no emplean los estándares, hay tabla
Si cuelgan una aplicación por un ciclo infinito, hay
tabla
Si reportan el mismo error dos veces, hay tabla
Si los casos de uso no están bien escritos, hay tabla
Si no planean, hay tabla
Si no gestionan proactivamente los riesgos, hay
tabla
Si no versionan, hay tabla
Si preguntan por que todo esto, hay tabla
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
xxx
Ingeniería de software
Unidad 1
Definiciones de ingeniería de
software
La ingeniería de software es el establecimiento y uso de principios
robustos de la ingeniería a fin de obtener económicamente
software que sea fiable y que funcione eficientemente sobre
máquinas reales [Bauer, 1972].
Ingeniería del software es la aplicación práctica del conocimiento
científico en el diseño y construcción de programas de
computadora y la documentación asociada requerida para
desarrollar, operar y mantenerlos. Se conoce también como
desarrollo de software o producción de software [Bohem, 1976].
La ingeniería de software es el estudio de los principios y
metodologías para desarrollo y mantenimiento de sistemas de
software [Zelkovitz, 1978].
Ingeniería de software: (1) La aplicación de un enfoque
sistemático, disciplinado y cuantificable hacia el desarrollo,
operación y mantenimiento del software; es decir, la aplicación la
de la ingeniería al software. (2) El estudio de enfoques como en (1)
[IEEE, 1993].
La Ingeniería de Software es una disciplina de la Ingeniería que
concierne a todos los aspectos de la producción de software
[Sommerville, 1995].
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
VERIFICACIÓN
VALIDACIÓN
EXPLOTACIÓN
REVISIÓN CONJUNTA
DESARROLLO
AUDITORIA
MANTENIMIENTO
RESOLUCIÓN DE PROBLEMAS
PROCESOS DE LA ORGANIZACIÓN
GESTIÓN INFRAESTRUCTURA
MEJORA FORMACIÓN
Ingeniería de software
Unidad 1
Ingeniería de
sistemas de información
Ingeniería de software
Unidad 1
Análisis de
Requisitos
del Sistema
Análisis de
Requisitos
del Software
Diseño
Preliminar
Diseño
Detallado
Codificación
y Pruebas
Explotación
y
Mantenimiento
Ingeniería de software
Unidad 1
Construir/revisar
la maqueta
Escuchar
al cliente
El cliente
prueba
la maqueta
Ingeniería de software
Unidad 1
Incremento 2 Codificación
y Pruebas
Diseño Explotación
Detallado y
… Codificación
Mantenimiento
Incremento n y Pruebas
Explotación
y
Mantenimiento
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Modelos recientes
Técnicas de cuarta generación (T4G)
Se orientan hacia la posibilidad de especificar el software utilizando formas de lenguaje
especializado, o notaciones gráficas que describan el problema a resolver en los términos que el
cliente entienda.
Las herramientas de 4G facilitan la especificación de algunas características de alto nivel del
software; luego traducen directamente dichas especificaciones a código fuente.
Un entorno de desarrollo T4G debería tener herramientas como:
Lenguajes no procedimentales de consulta a bases de datos
Generación de informes
Manejo de datos
Interacción y definición de pantallas
Generación de códigos con capacidades gráficas de alto nivel
Capacidades de hoja de cálculo
Al igual que los modelos anteriores las T4G inician con la recolección de requisitos; idealmente la
descripción de requisitos debería traducirse a un prototipo operativo. Sin embargo es importante
hacer un mayor esfuerzo en la estrategia de diseño para evitar consecuencias como: poca calidad,
mantenimiento pobre y poca aceptación por parte del cliente.
Se pueden identificar ventajas y desventajas de las T4G
Ventajas: (1) Reducción drástica del tiempo de desarrollo y (2) Mayor productividad en la gente que
construye el software.
Desventajas: (1) Las T4G no son más fáciles de utilizar que los lenguajes de programación, (2) El
código fuente producido generalmente es ineficiente y (3) El mantenimiento es cuestionable
CUIDADO Cliente RECOMENDADO T4G
Cliente T4G
Traducción Traducción
Descripción Directa Descripción Directa
Prototipo Diseño en Prototipo
de de
Operativo Términos T4G Operativo
Requisitos Requisitos
Ingeniería de software
Unidad 1
Ingeniería de software
Unidad 1
Construir Buscar
la Iteración componentes en
del sistema la biblioteca
Comunicación
con el cliente
Poner nuevos Extraer
componentes en componentes
la biblioteca si están
disponibles
Extraer
componentes
Evaluación si no están
del cliente disponibles
Construcción y
adaptación de la ingeniería
Ingeniería de software
Unidad 1
todo el ciclo de vida, sin embargo a Iteración B.1 Iteración B.2 Iteración B.3
veces un workflow predomina más de losWorkflow
requisitos
sobre los otros cuatro.
Workflow
Las iteraciones se dan dentro de los del análisis
incrementos, el número de estas Workflow
varia dependiendo del incremento, y del diseño
en cada iteración también se deben
repetir los cinco workflow. Workflow de la
Implementación
Workflow
de pruebas
Ingeniería de software
Tiempo
Unidad 1
Metodologías de desarrollo de
software
Considerando una “metodología” como un conjunto
de pasos y procedimientos que deben seguirse para
desarrollar software, entre otras, se tienen:
Metodologías estructuradas
Proponen la creación de modelos del sistema que
representen a los procesos, los flujos y las estructuras de
los datos de una manera descendente.
Metodologías orientadas a objetos
Trata a los procesos y los datos de forma conjunta,
agrupando así tanto la información como el procesamiento
(objetos).
Metodologías para sistemas de tiempo real
La información se procesa, más orientada al control que a
los datos, en función del tiempo.
Ingeniería de software
Unidad 1
Metodologías estructuradas
Pasan de una visión general del problema (abstracción cercana a las
personas) hasta llegar a un nivel de abstracción más sencillo
(abstracción cercana al hardware).
Esta visión se puede enfocar en las funciones del sistema, estructura
de los datos o ambos, lo que da lugar a las siguientes metodologías:
Orientadas a los procesos
Se centra en la transformación de los datos de entrada para generar la salida
esperada.
Orientadas a los datos
Estructuras de datos jerárquicas
Se centran en las entradas y salidas; primero se definen las estructuras de datos y, a
partir de éstas, se derivan los componentes procedimentales.
Estructuras de datos no jerárquicas
Los tipos de datos son el corazón del sistema ya que son más estables que los
procesos.
Mixtas
Se enfocan tanto en el proceso como en los datos tomando desde diversos
puntos de vista.
Ingeniería de software
Unidad 1
Metodologías estructuradas …
(2)
Existen diversas metodologías estructuradas:
Orientadas a procesos:
De Marco.
Gane y Sarson
Yourdon/Constantine
Orientadas a datos jerárquicos
JSP y JSD
LCP
Orientadas a datos no jerárquicos
IE
Metodologías mixtas
Merise
SSADM
Métrica
Las especificaciones estructuradas utilizan:
DFD (Diagramas de flujo de datos, Dataflow Diagram)
Diagramas E-R (Entidad-Relación), o alternativamente DED (Diagramas de Estructura de Datos)
Diagramas HVE (Historia de vida de las entidades)
Diagramas de transición de estados (STD, State Transition Diagram)
Diccionario de datos
Especificación de procesos
Lenguaje estructurado
Pre y post condiciones
Tablas y árboles de decisión
Diagramas de estructura
Ingeniería de software
Unidad 1
Metodologías orientadas a
objetos
De forma general:
El dominio del problema se caracteriza mediante un conjunto de objetos con
atributos y comportamientos específicos.
Los objetos son manipulados mediante una colección de métodos y se
comunican mediante un protocolo de mensaje.
Los objetos son clasificados en clases y subclases.
Se retoman muchas de las ideas de las metodologías estructuradas
pero con el apoyo de lenguajes orientados a objetos.
En los 90’s había diversos enfoques orientados a objetos:
Booch
Rumbaugh
Jacobson
Otros más (Shaler y Mellor, Coleman)
En el 95 comienza el método unificado (Booch, Rumbaugh).
El mismo año se une Jacobson
Nace Rational Rose
De ahí surge UML aceptado por el OMG
(Object Management Group) en el 97
Ingeniería de software
Unidad 1
Metodologías orientadas a
objetos … (2)
Actualmente las especificaciones orientadas a objetos utilizan el lenguaje
estándar predominante UML (Unified Modeling Lenguage) el cual combina
notaciones provenientes desde:
Modelado orientado a objetos
Modelado de datos
Modelado de componentes
Modelado de flujos de trabajo (workflows)
Los diagramas que expresan gráficamente las partes de un modelo son:
Ingeniería de software
Herramientas CASE
CASE
Computer Aided Software Engineering
Ingeniería de software asistida por computadora
Sistema de software que intenta proporcionar ayuda
automatizada a las actividades del proceso de
software en el marco de un ciclo de vida en
particular [Wikipedia].
Proporcionan la posibilidad de automatizar
actividades manuales de la ingeniería de software
ayudando a garantizar que la calidad sea diseñada
antes de construir el producto [Pressman].
Herramientas CASE … (2)
Este enfoque de construir software persigue mejorar
la calidad y la productividad planteando los
siguientes objetivos [Piattini]:
Aplicación práctica de metodologías de desarrollo de
software
Facilitar la realización de prototipos y y el desarrollo
conjunto de aplicaciones
Simplificar el mantenimiento de los programas
Mejorar y estandarizar la documentación
Aumentar la portabilidad de las aplicaciones
Facilitar la reutilización de componentes software
Desarrollo y refinamiento visual utilizando gráficos
Herramientas CASE … (3)