Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 1
Introduccin a la Ingeniera de
Software
Ingeniera en Computacin
Ingeniera de Software 1617B
Unidad 1
Contenido
Software
Importancia
Evolucin
Caractersticas
Dominios de aplicacin
La crisis del software
Causas
Consecuencias por fallas del software
Definiciones de la ingeniera de software
Paradigmas de ciclos de vida de la ingeniera de software
Modelos convencionales
Modelos recientes
Metodologas de desarrollo de software
Metodologas estructuradas
Metodologas orientadas a objetos
Herramientas CASE
La prctica de la ingeniera de software
Ingeniera de software
QU ES EL SOFTWARE?
Unidad 1
Software
Qu es el software?
La suma total de los programas de cmputo,
procedimientos, reglas de documentacin y datos
asociados que forman parte de las operaciones de un
sistema de cmputo [IEEE Computer Society Press, 1993].
Es un producto que disean y construyen los ingenieros
de software. Esto abarca programas que se ejecutan
dentro de una computadora de cualquier tamao y
arquitectura, documentos que comprenden formularios
virtuales e impresos y datos que combinan nmeros y
texto y tambin incluyen representaciones de la
informacin de audio, vdeo e imgenes [Pressman, 2002].
Ingeniera de software
Software
Instrucciones que al codificarse y ejecutarse
proporcionan las caractersticas, funcin y
desempeo buscados
Estructuras de datos que permiten que los
programas manipulen en forma adecuada la
informacin
Informacin descriptiva tanto en papel como
en formas virtuales que describen la
operacin y uso de los programas
LA IMPORTANCIA DEL
SOFTWARE
Importancia del software
Las economas de los pases desarrollados
dependen en gran parte del software.
Ms y ms sistemas son actualmente controlados
por software
El software marca la diferencia. Lo que diferencia
una compaa de otra es la suficiencia, exactitud y
oportunidad de la informacin dada por el software.
Afecta casi todos los aspectos de nuestras vidas ha
invadido nuestro comercio, cultura y actividades
cotidianas
Nos permite construir sistemas complejos en
un tiempo razonable y con alta calidad
Importancia del software
Ejemplo:
Dos consultorios dentales, ambos cuentan con los ltimos
modelos de computadora personal y destinadas a apoyar
las tareas y actividades relacionadas con el consultorio.
Pero uno de ellos cuenta con un dispositivo especial
conectado a la computadora y un SOFTWARE para
obtener radiografas de piezas dentales por computadora,
en un par de minutos la muestra radiogrfica est en
pantalla y el mdico puede obtener diferentes vistas de la
placa usando el software. Adems puede establecer una
conexin a travs de internet o va modem para enviar el
archivo de la radiografa a otro colega experto con el fin de
consultar y apoyar el diagnstico, todo esto en la misma
cita. En la forma tradicional la placa radiogrfica esta lista
en un par de das.
Importancia del software
Es una tecnologa indispensable en los negocios,
ciencias e ingeniera que dio paso a la creacin de
nuevas ramas de investigacin como la nanotecnologa
y la Ing. Gentica.
El boom de stas se di con la inmersin del Internet a
nuestra vidas, fue el conducto idneo para
promocionarla
Ahora las podemos encontrar incrustadas en Ej.
Transportes, mdicos, telecomunicaciones, militares,
procesos industriales, entretenimiento, productos de
oficina, educacin, ingeniera gentica, etc.
Importancia del software
Conforme aumenta su importancia, la comunidad de
programadores ha tratado de desarrollar tecnologas
que hagan mas fcil, rpida y barata la elaboracin de
programas de cmputo de alta calidad
El software tiene un papel dual:
Como producto: brinda el potencial de cmputo incorporado
en el hw de cmputo o redes, ya sea trabajando en un mvil o
en una computadora; es un transformador de informacin
Genricos
Hechos a la medida
Como vehculo: distribuye el producto, acta como la base
de control de la PC (SOs), la comunicacin de informacin
(redes) y la creacin y control de otros programas
(herramientas sw y entornos).
Importancia del software
El software distribuye INFORMACIN
Sus capacidades de desarrollo y
caractersticas para contextos particulares no
ha encontrado lmites, pues es gracias al
avance tecnolgico que es capaz de
mejorarse da a dia.
El que posee la informacin y el
conocimiento y hace mejor uso de l, es
el que tiene el poder.
Evolucin del software
Unidad 1
Ingeniera de software
Unidad 1
Ingeniera de software
Unidad 1
ndice de fallos
sentido clsico.
El desarrollo y fabricacin 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 mayora del software se
construye a la medida.
Esta situacin esta cambiando con el uso ms Tiempo
extendido de la programacin orientada a Curvas de fallos real e
objetos. Idealizado del software
Ingeniera de software
Caractersticas del software
NO SE ESTROPEA!!
Caractersticas del software
Cuando un componente hw se desgasta es sustituido
por una refaccin, en cambio NO HAY REFACCIONES
PARA SW
Cada falla de este indica un error en el diseo o en el
proceso que tradujo el diseo a cdigo ejecutable por la
mquina
Entonces, las tareas de mantenimiento del software, que
incluyen la satisfaccin de peticiones de cambios,
involucran una complejidad considerablemente mayor
que el mantenimiento del HW
Unidad 1
Ingeniera de software
Unidad 1
Ingeniera de software
Unidad 1
1, 5-6x
Despus
1x de la
Desarrollo entrega
Definicin
Ingeniera de software
Impacto del cambio
Unidad 1
Ingeniera de software
Unidad 1
Ingeniera de software
Unidad 1
Reflexin
Si no hacen anlisis, hay tabla
Si no disean antes de programar, hay tabla
Si programan sin hacer pruebas, hay tabla
Si no comentan el cdigo, hay tabla
Si no emplean los estndares, hay tabla
Si cuelgan una aplicacin por un ciclo infinito, hay
tabla
Si reportan el mismo error dos veces, hay tabla
Si los casos de uso no estn 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
Ingeniera de software
Unidad 1
Definiciones de ingeniera de
software
La ingeniera de software es el establecimiento y uso de principios
robustos de la ingeniera a fin de obtener econmicamente
software que sea fiable y que funcione eficientemente sobre
mquinas reales [Bauer, 1972].
Ingeniera del software es la aplicacin prctica del conocimiento
cientfico en el diseo y construccin de programas de
computadora y la documentacin asociada requerida para
desarrollar, operar y mantenerlos. Se conoce tambin como
desarrollo de software o produccin de software [Bohem, 1976].
La ingeniera de software es el estudio de los principios y
metodologas para desarrollo y mantenimiento de sistemas de
software [Zelkovitz, 1978].
Ingeniera de software: (1) La aplicacin de un enfoque
sistemtico, disciplinado y cuantificable hacia el desarrollo,
operacin y mantenimiento del software; es decir, la aplicacin la
de la ingeniera al software. (2) El estudio de enfoques como en (1)
[IEEE, 1993].
La Ingeniera de Software es una disciplina de la Ingeniera que
concierne a todos los aspectos de la produccin de software
[Sommerville, 1995].
Ingeniera de software
Unidad 1
Ingeniera de software
Unidad 1
Ingeniera de software
Unidad 1
VERIFICACIN
VALIDACIN
EXPLOTACIN
REVISIN CONJUNTA
DESARROLLO
AUDITORIA
MANTENIMIENTO
RESOLUCIN DE PROBLEMAS
PROCESOS DE LA ORGANIZACIN
GESTIN INFRAESTRUCTURA
MEJORA FORMACIN
Ingeniera de software
Unidad 1
Ingeniera de
sistemas de informacin
Ingeniera de software
Unidad 1
Anlisis de
Requisitos
del Sistema
Anlisis de
Requisitos
del Software
Diseo
Preliminar
Diseo
Detallado
Codificacin
y Pruebas
Explotacin
y
Mantenimiento
Ingeniera de software
Unidad 1
Construir/revisar
la maqueta
Escuchar
al cliente
El cliente
prueba
la maqueta
Ingeniera de software
Unidad 1
Incremento 2 Codificacin
y Pruebas
Diseo Explotacin
Detallado y
Codificacin
Mantenimiento
Incremento n y Pruebas
Explotacin
y
Mantenimiento
Ingeniera de software
Unidad 1
Ingeniera de software
Unidad 1
Construir Buscar
la Iteracin componentes en
del sistema la biblioteca
Comunicacin
con el cliente
Poner nuevos Extraer
componentes en componentes
la biblioteca si estn
disponibles
Extraer
componentes
Evaluacin si no estn
del cliente disponibles
Construccin y
adaptacin de la ingeniera
Ingeniera de software
Unidad 1
todo el ciclo de vida, sin embargo a Iteracin B.1 Iteracin B.2 Iteracin B.3
veces un workflow predomina ms de losWorkflow
requisitos
sobre los otros cuatro.
Workflow
Las iteraciones se dan dentro de los del anlisis
incrementos, el nmero de estas Workflow
varia dependiendo del incremento, y del diseo
en cada iteracin tambin se deben
repetir los cinco workflow. Workflow de la
Implementacin
Workflow
de pruebas
Ingeniera de software
Tiempo
Unidad 1
Metodologas de desarrollo de
software
Considerando una metodologa como un conjunto
de pasos y procedimientos que deben seguirse para
desarrollar software, entre otras, se tienen:
Metodologas estructuradas
Proponen la creacin de modelos del sistema que
representen a los procesos, los flujos y las estructuras de
los datos de una manera descendente.
Metodologas orientadas a objetos
Trata a los procesos y los datos de forma conjunta,
agrupando as tanto la informacin como el procesamiento
(objetos).
Metodologas para sistemas de tiempo real
La informacin se procesa, ms orientada al control que a
los datos, en funcin del tiempo.
Ingeniera de software
Unidad 1
Metodologas estructuradas
Pasan de una visin general del problema (abstraccin cercana a las
personas) hasta llegar a un nivel de abstraccin ms sencillo
(abstraccin cercana al hardware).
Esta visin se puede enfocar en las funciones del sistema, estructura
de los datos o ambos, lo que da lugar a las siguientes metodologas:
Orientadas a los procesos
Se centra en la transformacin de los datos de entrada para generar la salida
esperada.
Orientadas a los datos
Estructuras de datos jerrquicas
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 jerrquicas
Los tipos de datos son el corazn del sistema ya que son ms estables que los
procesos.
Mixtas
Se enfocan tanto en el proceso como en los datos tomando desde diversos
puntos de vista.
Ingeniera de software
Unidad 1
Metodologas estructuradas
(2)
Existen diversas metodologas estructuradas:
Orientadas a procesos:
De Marco.
Gane y Sarson
Yourdon/Constantine
Orientadas a datos jerrquicos
JSP y JSD
LCP
Orientadas a datos no jerrquicos
IE
Metodologas mixtas
Merise
SSADM
Mtrica
Las especificaciones estructuradas utilizan:
DFD (Diagramas de flujo de datos, Dataflow Diagram)
Diagramas E-R (Entidad-Relacin), o alternativamente DED (Diagramas de Estructura de Datos)
Diagramas HVE (Historia de vida de las entidades)
Diagramas de transicin de estados (STD, State Transition Diagram)
Diccionario de datos
Especificacin de procesos
Lenguaje estructurado
Pre y post condiciones
Tablas y rboles de decisin
Diagramas de estructura
Ingeniera de software
Unidad 1
Metodologas orientadas a
objetos
De forma general:
El dominio del problema se caracteriza mediante un conjunto de objetos con
atributos y comportamientos especficos.
Los objetos son manipulados mediante una coleccin de mtodos y se
comunican mediante un protocolo de mensaje.
Los objetos son clasificados en clases y subclases.
Se retoman muchas de las ideas de las metodologas estructuradas
pero con el apoyo de lenguajes orientados a objetos.
En los 90s haba diversos enfoques orientados a objetos:
Booch
Rumbaugh
Jacobson
Otros ms (Shaler y Mellor, Coleman)
En el 95 comienza el mtodo unificado (Booch, Rumbaugh).
El mismo ao se une Jacobson
Nace Rational Rose
De ah surge UML aceptado por el OMG
(Object Management Group) en el 97
Ingeniera de software
Unidad 1
Metodologas orientadas a
objetos (2)
Actualmente las especificaciones orientadas a objetos utilizan el lenguaje
estndar 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 grficamente las partes de un modelo son:
Ingeniera de software
Herramientas CASE
CASE
Computer Aided Software Engineering
Ingeniera de software asistida por computadora