Professional Documents
Culture Documents
INGENIERIA DE SOFTWARE
Tema 1: Introduccin a la Ingeniera de Software
1
Presenta: David Martnez Torres
Universidad Tecnolgica de la Mixteca
dtorres@mixteco.utm.mx
Cubo 37
Contenido
1. Importancia del Software
2. Evolucin y caractersticas del software
3. Tipos de software
4. La crisis del software
5 Definicin de Ingeniera de Software
2
5. Definicin de Ingeniera de Software
6. Paradigmas de ciclos de vida de la Ingeniera de software
7. Herramientas CASE
8. Referencias
1. Importancia de Software
Las economas de los pases desarrollados dependen en
gran parte del software.
Mas y ms sistemas son actualmente controlados por
software.
Ej. Transportes, mdicos, telecomunicaciones, militares,
procesos industriales, entretenimiento, productos de oficina,
3
educacin, ingeniera gentica, etc.
Sw como producto: entrega de potencia informtica del
hw informtico.
Genricos
Hechos a medida
Sw como vehculo: acta como la base de control de la PC
(SOs), la comunicacin de info (redes) y la creacin y
control de otros programas (herramientas sw y entornos)
2. Evolucin y caractersticas del software
Los primeros aos (50 - 60)
Orientacin Batch (por lotes)
Distribucin limitada
Software a medida
4
La Segunda era (70)
Ambiente multiusuario y tecnologa de
multiprogramacin
Tiempo Real / Bases de datos / productos de software
(Casas de software)
2. Evolucin y caractersticas del software
La Tercera era (80)
Sistemas distribuidos
Incorporacin de
inteligencia a
d t
La Cuarta era (90 a
la fecha)
PCs potentes
Tecnologa O-O
5
productos
(Firmware)
Redes y HW de bajo
costo
Microprocesadores
Consumo masivo
Sistemas expertos
Redes neuronales
Computacin
paralela
Redes de
informacin
2. Evolucin y caractersticas del Software
Caractersticas del sw como producto
Mantenibles
Que evolucione y que siga cumpliendo con sus
especificaciones
Confiabilidad
No debe causar daos fsicos o econmicos en el
6
No debe causar daos fsicos o econmicos en el
caso de fallos
Eficiencia
No debe desperdiciar los recursos del sistema
Utilizacin adecuada
Debe contar con una interfaz de usuario adecuada y
su documentacin
2
2. Evolucin y caractersticas
Caractersticas del Sw vs. Hw
Producto lgico, no fsico
Se desarrolla, no se fabrica
7
No se estropea (ver siguientes diapositivas)
Construccin a medida.
Mantenimiento complicado
2. Evolucin y caractersticas
Curvas de fallas del Hardware
MortalidadInfantil
se estropea: desgaste de
materiales
T
a
s
a
d
e
8
Tiempo
e
f
a
lla
s
2. Evolucin y caractersticas
Curvas de fallas del Software
Fallas por obsolescencia
T
a
s
a
d
e
9
Puesta en marcha
Fallas por obsolescencia
Tiempo
e
f
a
lla
s
Se mantiene nivel hasta la obsolescencia
2. Evolucin y caractersticas
Curvas de fallas de Sw mas real
Incremento de la tasa de fallas
por efectos laterales
T
a
s
10
Cambio
Tiempo
s
a
d
e
f
a
lla
s
Curva idealizada
Curva Real
3. Tipos de Sw
Software de sistemas : Sistemas
operativos, editores, compiladores,
utilitarios de bajo nivel, cercano al
Hardware.
Software de Tiempo Real : Control de
p ocesos fsicos Altas limitaciones en
11
procesos fsicos. Altas limitaciones en
Tiempo-Respuesta, CAM.
Software de Gestin : Aplicaciones
administrativas, comerciales, contables,
SIG, inventarios, SAP/R3, etc.
Software de Ingeniera y Cientfico : Alto
uso de CPU, Ciencias (ej. Astronoma,
fsica, vulcanologa...), CAD.
3. Tipos de Sw
Software empotrado (Firmware) : Control del
funcionamiento en dispositivos electromecnicos.
Software de PC : Procesamiento de textos, hojas de clculo,
multimedia, juegos, aplicaciones personales en bases de datos,
comercio, contabilidad, etc.
12
comercio, contabilidad, etc.
Software de Inteligencia Artificial : Usa algoritmos no
numricos para resolver problemas complejos en que no son
adecuados el clculo o el anlisis directo. Reconocimiento de
imgenes, voz, smbolos (escritura), en general, situaciones en
que la entrada al sistema es compleja y aleatoria.
3
4. Crisis del Sw
Constatacin en una conferencia de la OTAN en 1968
Razones:
Miles de lneas de cdigo
Incumplimiento de tiempos de desarrollo
13
Mantenimiento desbordado
4. Crisis del Sw
Propuesta de solucin:
Encapsulamiento de datos y procesos. Ejemplo:
construccin de interfaces.
Programacin estructurada
14
Desarrollo masivo de componentes software
Reutilizacin de componentes. Bibliotecas de
subrutinas (slo algoritmos).
5. Definicin de Ingeniera de Sw
[Somerville] Es una disciplina de ingeniera que
comprende todos los aspectos de la produccin de
software.
[ ] l d l f
15
[Pressman] Disciplina o rea de la informtica o
ciencias de la computacin que ofrece mtodos y
tcnicas para desarrollar y mantener software de
calidad que resuelven problemas de todo tipo.
5. Definicin de Ingeniera de Sw
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
16
La aplicacin de un enfoque sistemtico, disciplinado
y cuantificable hacia el desarrollo, operacin y
mantenimiento del SW
5.1 Porque aplicar Ingeniera de Sw?
17
Actividades bsicas de Ingeniera de Software
Definicin del proceso de desarrollo de software que
se usar
Administracin del proyecto de desarrollo
Descripcin del producto de software que se desea
Diseo del producto
Implementacin del producto (programacin)
Prueba de las partes del producto
Integracin de las partes del producto y pruebas del
producto completo
Mantenimiento del producto
4
Las cuatro P de la Ingeniera de Software
Personas
(quin lo hace)
Proceso
(la manera
en que se hace)
Elaboration
Unified Process Matrix
Inception Construction Transition
Requirements
Analysis
Jacobson et al: USDP
Prelim.
iterations
Iter.
#1
Iter.
#n
Iter.
#n+1
Iter.
#m
Iter.
#m+1
Iter.
#k .. ..
Design
Implemen-
tation
Test
..
Reeditado de Ingeniera de Software: Una perspectiva Orientada a Objetos por Eric J . Braude (Wiley 2003)
Proyecto
(la realizacin)
Producto
(la aplicacin de artefactos)
Personas
Las interacciones entre las personas involucradas en un
proyecto de software tienen un efecto profundo en su
xito.
Los equipos trabajan mejor cuando tienen conocimiento
de lo que se supone que deben hacer y cuando los de lo que se supone que deben hacer y cuando los
miembros tienen papeles especficos.
Revisar PSP, TSP y CMM, MOPROSOFT
Ver archivo Una manera de decidir los aspectos iniciales
del equipo.docx
Otro elemento del factor personas se refiere a los
interesados en el proyecto: personas que ganan o pierden
algo con los resultados del proyecto.
Proceso
Desarrollo de secuencias:
Cascada
Iterativo
Marco de trabajo de los procesos:
P l S f P
Conjunto de actividades realizadas
para producir una aplicacin
Elaboration
Unified Process Matrix
Inception Construction Transition
Requirements
Analysis
Jacobson et al: USDP
Prelim.
iterations
Iter.
#1
Iter.
#n
Iter.
#n+1
Iter.
#m
Iter.
#m+1
Iter.
#k
.. ..
Design
Implemen-
tation
Test
..
Personal Software Process
Team Software Process
Capability Maturity Model
(para organizaciones)
Estndares:
Institute of Electrical and Electronic Engineers (IEEE)
International Standards Organization (ISO)
Proyecto
Mtodos:
Estructurados
Orientacin a Objetos:
paradigma til
L j d d l d
Conjunto de actividades para
producir los artefactos requeridos
personas Flujo del trabajo
Lenguaje de modelado
unificado: notacin de diseo
Sistemas heredados: puntos de
inicio comunes
Mejoras o uso del sistema
existente
Producto
Requerimientos
Explica qu debe ser el producto
Arquitectura de software
Usa la clasificacin de Garlan and Shaw
Diseo detallado
La aplicacin y los
artefactos asociados
e incluidos
Especificacin
de requerimientos
de software
Artefactos
Usa el lenguaje de Patrones de diseo
Implementacin
Resalta los estndares
Emplea mtodos formales seleccionados
Artefactos de prueba Cdigos fuente
Y objeto
Diseo del
modelo
r
Procedimientos de prueba; casos de
pruebas
r
6. Paradigmas o Modelos
del proceso de desarrollo de software
Modelo
Secuencial
(ciclo de
vida bsico
o modelo en
cascada)
Anlisis Diseo Cdigo Pruebas
Ingeniera de Sistemas
24
Mantencin
Anlisis
Diseo
Cdigo
Pruebas
Mantencin
5
Modelo Secuencial
Actividades:
1. Ingeniera y modelado de Sistemas/Informacin
Ubicacin del software en el mbito donde va a funcionar.
2. Anlisis de los requisitos del software
Se deben conocer los aspectos relacionados con la informacin
25
Se deben conocer los aspectos relacionados con la informacin
a tratar, la funcin requerida, comportamiento, rendimiento, etc
del software.
El cliente debe dar el visto bueno
3. Diseo
Arquitectura del software
Estructura del programa
Representaciones de la Interfaz
Detalle Procedimental (algoritmo)
Modelo Secuencial
Actividades: (Continuacin)
4. Generacin de cdigo o Implementacin
Puede automatizarse si el diseo est bien detallado.
5. Pruebas
De Caja Blanca: Anlisis de los distintos caminos de ejecucin
de los algoritmos
26
de los algoritmos.
De Caja Negra: Anlisis de los procesos externos funcionales.
6. Mantenimiento
Gestin de cambios en el software debidos a:
Errores durante el desarrollo.
Adaptacin a nuevos entornos. Ej. Sistema Operativo
Mejoras funcionales o de Rendimiento.
6. Modelos de proceso de software
Modelo Prototipo
27
6. Modelos de proceso de software
Modelo DRA(Desarrollo Rpido de Aplicaciones)
Es una adaptacin a alta velocidad del modelo lineal
secuencial en el que se logra el desarrollo rpido
utilizando un enfoque de construccin basado en
componentes.
Puede permitir el desarrollo de un sistema
28
Puede permitir el desarrollo de un sistema
completamente funcional en periodos cortos de tiempo
(de 60 a 90 das).
Los componentes que se desarrollen se pueden
reutilizar en posteriores proyectos. Repositorio de
componentes.
El sistema se descompone en un conjunto de bloques
que se pueden desarrollar de manera independiente
por distintos equipos de desarrollo.
Modelo DRA
Slo puede aplicarse cuando se cumplen una serie de
condiciones:
Se comprenden muy bien los requisitos del sistema a
desarrollar. Ya sea porque los conoce el propio desarrollador
o porque se tiene una experiencia previa en un sistema
similar.
Se delimita muy bien el mbito del problema.
L i t i d l ft l i t
29
La interaccin del software con el nuevo sistema no es
complicada o se utilizan nuevas tecnologas que son
dominadas por el equipo de desarrollo.
Inconvenientes
Debe haber un compromiso por parte del equipo de
desarrollo y del cliente en el desarrollo rpido de
actividades.
Requiere recursos suficientes para crear el nmero de
equipos necesarios.
6. Diferentes Modelos de proceso de software:
EVOLUTIVOS
Necesidad: El software, al igual que el resto de
sistemas evoluciona con el tiempo. Necesidad de
procedimientos que permitan una evolucin del
software.
Modelo Incremental
30
Modelo Incremental
6
Modelo Incremental
Combina elementos del modelo lineal secuencial con
la filosofa interactiva de construccin de prototipos.
Se centra en la entrega de un producto operacional
con cada incremento
l d l d
31
Fcil adaptacin a requerimientos temporales de
entrega.
Este modelo es til cuando la dotacin de personal no
est disponible para una implementacin completa.
6.1 Diferentes paradigmas de ciclos de vida:
EVOLUTIVOS
Modelo en Espiral
Combina el modelo lineal
secuencial y el de
construccin de prototipos
El sw se desarrolla en una
d
32
serie de versiones
incrementales
Modelo en Espiral [2]
33
Modelo de ensamblaje de componentes
Modelos anteriores, pero con uso de
bibliotecas de rutinas (tradicional) o
clases (orientacin a objetos).
Ms rpido.
Menores costos de desarrollo
34
Menores costos de desarrollo.
Programadores ms experimentados.
Menor dependencia de las personas que
participaron en el proyecto.
Desarrollo para reutilizar y desarrollo con
reutilizacion.
Uso de COTS (Commercial Off-The-Shelf)
y de Outsourcing (subcontratacin).
6.1 El ciclo de vida para software empotrado
1. Especificacin del
producto
2. Divisin Hw y Sw
Diseo hw
3. Iteracin e
implementacin
4. Diseo detallado Hwy Sw
35
Diseo sw
6. Prueba del producto
7. Mantenimiento y
actualizacin
4. Diseo detallado Hwy Sw
5. Integracin de
componentes Hwy Sw
Mtodos formales
Busca la especificacin
matemtica del Sw.
Buen manejo de la ambigedad,
inconsistencia y lo incompleto.
Se utiliza en forma parcial en
36
p
diseo de sistemas de alta
seguridad (aviacin, medicina,
control de procesos).
Se obtienen algoritmos bien
estructurados.
Lenguaje Z, C2
7
6.1 Diferentes paradigmas de ciclos de vida:
EVOLUTIVOS
RUP (Rational Unified Process), 1999.
J acobson-Metodologa Objectory
Booch-Metodologa Booch
Rumbaugh-OMT (Tcnica de Modelado de Objetos)
37
RUP: Clasificacin de Iteraciones
Iteracin de concepcin:
iteracin preliminar con los
interesados
Cliente preliminar
Usuarios
Inversionistas financieros,
Elaboracin
Matriz del Proceso Unificado
Concepcin Construccin Transicin
Requerimientos
A li i
Jacobson et al: USDP
Iteraciones
Prelim
Iter.
1
Iter.
n
Iter.
n+1
Iter.
m
Iter.
m+1
Iter.
k
.. .. ..
38
,
etc.
Iteracin de elaboracin:
finalizacin de qu se desea y
necesita; establecer la base de
la arquitectura
Iteracin de construccin: dan
como resultado la capacidad
iterativa (producto bsico)
Iteracin de transicin: terminar
la liberacin del producto
Anlisis
Diseo
Implemen-
tacin
Prueba
RUP: seis modelos o vistas de la aplicacin
39
Programacin Extrema o eXtreme Programming (XP)
La ms destacada de los procesos giles.
Adaptabilidad contra previsibilidad.
Los cambios de requisitos sobre la
marcha son un aspecto natural inevitable
40
marcha son un aspecto natural, inevitable
e incluso deseable del desarrollo de
proyectos.
Programacin Extrema o eXtreme Programming (XP)
Caractersticas fundamentales
Desarrollo iterativo e incremental.
Pruebas unitarias continuas
pruebas de regresin
41
pruebas de regresin.
J unit, Dunit.
Programacin en parejas
Frecuente interaccin del equipo de programacin
con el cliente o usuario
Programacin Extrema o eXtreme Programming (XP)
Correccin de todos los errores antes de aadir
nueva funcionalidad. Hacer entregas frecuentes.
Refactorizacin del cdigo
Propiedad del cdigo compartida
Simplicidad en el cdigo
42
Simplicidad en el cdigo
8
Programacin Extrema o eXtreme Programming (XP)
La simplicidad y la comunicacin son
extraordinariamente complementarias. Con ms
comunicacin resulta ms fcil identificar qu se debe
y qu no se debe hacer.
Mientras ms simple es el sistema menos tendr que
43
Mientras ms simple es el sistema, menos tendr que
comunicar sobre este, lo que lleva a una
comunicacin ms completa, especialmente si se
puede reducir el equipo de programadores.
Problemas y Riesgos con los Modelos
Cascada.
Alto riesgo en sistemas nuevos debido a problemas en
las especificaciones y en el diseo.
Bajo riesgo para desarrollos bien comprendidos utilizando
tecnologa conocida.
Prototipado.
44
Prototipado.
Bajo riesgo para nuevas aplicaciones debido a que las
especificaciones y el diseo se llevan a cabo paso a paso.
Alto riesgo debido a falta de visibilidad
Evolutivo
Alto riesgo debido a la necesidad de tecnologa avanzada
y habilidades del grupo desarrollador.
Modelos de Procesos Hbridos
Los sistemas grandes estn hechos usualmente de
varios subsistemas.
No es necesario utilizar el mismo modelo de proceso
para todos los subsistemas.
l d d d d
45
El prototipado es recomendado cuando existen
especificaciones de alto riesgo.
El modelo de cascada es utilizado en desarrollos bien
comprendidos.
Visibilidad de Procesos
Los sistemas de software son intangibles por lo que los
administradores necesitan documentacin para identificar
el progreso en el desarrollo.
Esto puede causar problemas
El tiempo planeado para entrega de resultados puede
no coincidir con el tiempo necesario para completar
46
no coincidir con el tiempo necesario para completar
una actividad
La necesidad de producir documentos restringe la
iteracin entre procesos.
El tiempo para revisar y aprobar documentos es
significativo.
El modelo de cascada es an el modelo con resultados
ms utilizado.
Documentos del Modelo de Cascada
47
7. Herramientas CASE
CASE es un acrnimo para Computer-Aided Software
Engineering, aunque existen algunas variaciones para lo que
actualmente se entiende por CASE:
C Computer
48
A Aided
Assisted
Automated
S Software
Systems
E Engineering
9
1.1 Qu es una CASE?
En Terminology for Software Engineering and Computer-aided
Software Engineering, B.Terry & D.Logee, Software
Engineering Notes, Abril 1990, CASE es definido como:
Herramientas individuales para ayudar al desarrollador de
software o administrador de proyecto durante una o ms fases
49
p y
del desarrollo de software (o mantenimiento).
En The CASE Experience, Carma McClure, BYTE Abril 1989
p.235:
Una combinacin de herramientas de software y metodologas
de desarrollo
1.2 Actividades que se pueden automatizar con
herramientas CASE
1. El desarrollo de modelos grficos del sistema como parte de la
especificacin de requerimientos o del diseo del software;
2. La comprensin del diseo utilizando un diccionario de datos el
cual tiene informacin sobre las entidades y relaciones del diseo;
3. La generacin de interfaces de usuario a partir de la descripcin
grfica de la interfaz la cual es elaborada de forma interactiva
50
grfica de la interfaz, la cual es elaborada de forma interactiva
por el usuario.
4. La depuracin de programas por medio de la previsin de la
informacin, proporcionada por los programas en ejecucin.
5. La conversin automtica de programas de una versin anterior
de un lenguaje de programacin, como COBOL, a una versin
mas reciente.
1.3 Impacto de la tecnologa CASE
La tecnologa CASE ha provocado mejoras
significativas en la calidad y productividad
Sin embargo, la adaptacin de esas mejoras fue
menor a la predicha inicialmente por los
desarrolladores de tecnologa
51
g
Varios problemas desarrollados en software no son
disponibles de automatizar:
El diseo y la comunicacin.
Los sistemas CASE no son integrados
Los adaptadores de tecnologa CASE subestiman el
entrenamiento y el costo de los procesos de adaptacin
2. Clasificacin CASE
Los sistemas CASE pueden clasificarse desde 3
perspectivas:
Funcional
De proceso
52
De Integracin
Clases de herramientas funcionales
TIPOS DE HERRAMIENTAS EJ EMPLOS
Deplaneacin Herramientas PERT, herramientas de
estimacin, hojas declculo
Deedicin Editores detexto, editores dediagramas,
procesadores depalabra
Deconstruccindeprototipos Entornosdedesarrollo generadoresde
53
Deconstruccin deprototipos Entornos dedesarrollo, generadores de
interfacedeusuario
DeProcesamiento delenguajes Compiladores, intrpretes
Deprueba Generadores depruebas dedatos,
Comparadores dearchivos
Dedepuracin Sistemas dedepuracin interactiva
Dereingeniera Sistemas dereferencias cruzadas, sistemas de
reestructuracin deprogramas,
8. Conclusiones
La Ingeniera de software concierne a las teoras,
mtodos y herramientas para el desarrollo,
administracin y evolucin de productos de software
Los productos de software consisten de programas y
documentacin. Los atributos de los productos son:
54
p
mantenibilidad, confiabilidad, eficiencia y utilizacin
adecuada (usabilidad).
El proceso de software consiste en aquellas
actividades involucradas en el desarrollo de software.
10
8. Conclusiones
Una vez conocido el proceso a automatizar en sw, se debe
elegir el modelo ms apropiado de desarrollo de sw.
El modelo de cascada considera cada actividad del proceso
como una actividad discreta.
El modelo de desarrollo evolutivo considera actividades del
55
proceso en forma concurrente.
El modelo de espiral se basa en anlisis de riesgos.
La visibilidad del proceso involucra la creacin de documentos
o resultados de las actividades.
Los Ingenieros de software deben tener responsabilidades
ticas, sociales y profesionales.
9. Referencias
1. Pressman, S Roger (1998) Ingeniera del
Software: Un enfoque prctico, 4a edicin
McGraw-Hill.
2. Somerville, Ian (2002) Ingeniera de software.
6a edicin. Addison Wesley.
56
6a edicin. Addison Wesley.
3. Braude Eric J . (2003) Ingeniera de Software
Una perspectiva orientada a objetos, Alfaomega
4. Berger, A. (2002) Embedded Systems Design.
An Introduction to Process, Tools and
Techniques CMP Books.
Preguntas?
Gracias!
57