Está en la página 1de 10

Contenido

1.
2.

INGENIERIA DE SOFTWARE
Tema 1: Introduccin a la Ingeniera de Software

3.
4.
5
5.
6.

Presenta: David Martnez Torres

7.

Universidad Tecnolgica de la Mixteca

8.

Importancia del Software


Evolucin y caractersticas del software
Tipos de software
La crisis del software
Definicin de Ingeniera de Software
Paradigmas de ciclos de vida de la Ingeniera de software
Herramientas CASE
Referencias

dtorres@mixteco.utm.mx
Cubo 37
1

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.

Los primeros aos (50 - 60)

Ej. Transportes, mdicos, telecomunicaciones, militares,


procesos industriales, entretenimiento, productos de oficina,
educacin, ingeniera gentica, etc.

Sw como producto: entrega de potencia informtica del


hw informtico.

2. Evolucin y caractersticas del software

La Segunda era (70)

Genricos
Hechos a medida

Orientacin Batch (por lotes)


Distribucin limitada
Software 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)

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
productos
d t
(Firmware)
Redes y HW de bajo
costo
Microprocesadores
Consumo masivo

2. Evolucin y caractersticas del Software

La Cuarta era (90 a


la fecha)

Caractersticas del sw como producto

Mantenibles

PCs potentes
Tecnologa O-O
Sistemas expertos
Redes neuronales
Computacin
paralela
Redes de
informacin

Confiabilidad

No debe causar daos fsicos o econmicos en el


caso de fallos

Eficiencia

Utilizacin adecuada

Que evolucione y que siga cumpliendo con sus


especificaciones

No debe desperdiciar los recursos del sistema


Debe contar con una interfaz de usuario adecuada y
su documentacin
6

2. Evolucin y caractersticas

2. Evolucin y caractersticas

Caractersticas del Sw vs. Hw

se estropea: desgaste de
materiales

Producto lgico, no fsico


Se desarrolla, no se fabrica
No se estropea (ver siguientes diapositivas)
Construccin a medida.
Mantenimiento complicado

Tasa de
e fallas

Curvas de fallas del Hardware

Mortalidad Infantil

Tiempo

2. Evolucin y caractersticas

2. Evolucin y caractersticas

Curvas de fallas del Software

Curvas de fallas de Sw mas real


Incremento de la tasa de fallas
por efectos laterales

Tassa de fallas

Tasa de
e fallas

Fallas
Fallas por obsolescencia
obsolescencia
Puesta en marcha

Cambio

Curva Real
Se mantiene nivel hasta la obsolescencia
Curva idealizada
Tiempo
Tiempo
9

3. Tipos de Sw

10

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
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.

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.

11

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.

12

4. Crisis del Sw

4. Crisis del Sw

Constatacin en una conferencia de la OTAN en 1968


Razones:

Miles de lneas de cdigo


Incumplimiento de tiempos de desarrollo
Mantenimiento desbordado

Propuesta de solucin:
Encapsulamiento de datos y procesos. Ejemplo:
construccin de interfaces.
Programacin estructurada
Desarrollo masivo de componentes software
Reutilizacin de componentes. Bibliotecas de
subrutinas (slo algoritmos).

13

5. Definicin de Ingeniera de Sw

14

5. Definicin de Ingeniera de Sw

[Somerville] Es una disciplina de ingeniera que


comprende todos los aspectos de la produccin de
software.

[[Pressman]] Disciplina
l
o rea

de
d la
l informtica
f

o
ciencias de la computacin que ofrece mtodos y
tcnicas para desarrollar y mantener software de
calidad que resuelven problemas de todo tipo.

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
La aplicacin de un enfoque sistemtico, disciplinado
y cuantificable hacia el desarrollo, operacin y
mantenimiento del SW

15

5.1 Porque aplicar Ingeniera de Sw?

16

Actividades bsicas de Ingeniera de Software

17

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

Las cuatro P de la Ingeniera de Software

Personas

Unified Process Matrix


Jacobson et al: USDP

Inception Elaboration
Prelim.
iterations

Proceso

Personas

Iter.
#1

.. Iter.
#n

Construction
Iter.
#n+1

..

Transition

Iter.
#m

Iter.
#m+1

..

Iter.
#k

Requirements

Analysis
Design
Implementation
Test

(la manera

(quin lo hace)

en que se hace)

Proyecto

Producto

(la realizacin)

(la aplicacin de artefactos)

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
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.

Reeditado de Ingeniera de Software: Una perspectiva Orientada a Objetos por Eric J. Braude (Wiley 2003)

Proceso

Desarrollo de secuencias:

Conjunto de actividades realizadas


para producir una aplicacin
Unified Process Matrix
Jacobson et al: USDP

Inception Elaboration
Prelim.
iterations

Cascada
Iterativo

Construction

Iter. .. Iter. Iter.


#1
#n #n+1

..

Iter.
#m

Transition
Iter. ..
#m+1

Iter.
#k

Analysis
Design

Implementation
Test

Personall Software
P
S f
P
Process
Team Software Process
Capability Maturity Model
(para organizaciones)

Institute of Electrical and Electronic Engineers (IEEE)


International Standards Organization (ISO)

Producto

Explica qu debe ser el producto

Arquitectura de software

Diseo detallado

Implementacin

Usa el lenguaje de Patrones de diseo

Diseo del
modelo

Resalta los estndares


Emplea mtodos formales seleccionados

Artefactos de prueba

Mejoras o uso del sistema


existente

6. Paradigmas o Modelos
del proceso de desarrollo de software
Ingeniera de Sistemas

Anlisis

Usa la clasificacin de Garlan and Shaw

Artefactos
Especificacin
de requerimientos
de software

Requerimientos

La aplicacin y los
artefactos asociados
e incluidos

LLenguaje
j de
d modelado
d l d
unificado: notacin de diseo

Sistemas heredados: puntos de


inicio comunes

Estndares:

Flujo del trabajo

Estructurados
Orientacin a Objetos:
paradigma til

personas

Mtodos:

Requirements

Marco de trabajo de los procesos:

Conjunto de actividades para


producir los artefactos requeridos

Proyecto

Diseo

Cdigo

Pruebas

Modelo
Secuencial
(ciclo de
vida bsico
o modelo en
cascada)

Mantencin
Anlisis
Diseo
Cdigo

Cdigos fuente
Y objeto
r

Procedimientos de prueba; casos de


pruebas

Pruebas
Mantencin
24

Modelo Secuencial

1.

Actividades:
Ingeniera y modelado de Sistemas/Informacin

2.

Actividades: (Continuacin)
Generacin de cdigo o Implementacin

4.

Ubicacin del software en el mbito donde va a funcionar.

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

de los algoritmos
algoritmos.
De Caja Negra: Anlisis de los procesos externos funcionales.

Mantenimiento

6.

Diseo

Puede automatizarse si el diseo est bien detallado.

Pruebas

De Caja Blanca: Anlisis de los distintos caminos de ejecucin

5.

Anlisis de los requisitos del software

3.

Modelo Secuencial

Gestin de cambios en el software debidos a:

Arquitectura del software


Estructura del programa
Representaciones de la Interfaz
Detalle Procedimental (algoritmo)

25

6. Modelos de proceso de software

Errores durante el desarrollo.


Adaptacin a nuevos entornos. Ej. Sistema Operativo
Mejoras funcionales o de Rendimiento.

26

6. Modelos de proceso de software

Modelo Prototipo

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
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.

27

6. Diferentes Modelos de proceso de software:


EVOLUTIVOS

Modelo DRA

Slo puede aplicarse cuando se cumplen una serie de


condiciones:

28

Necesidad: El software, al igual que el resto de


sistemas evoluciona con el tiempo. Necesidad de
procedimientos que permitan una evolucin del
software.

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 interaccin
La
i t
i del
d l software
ft
con ell nuevo sistema
i t
no es
complicada o se utilizan nuevas tecnologas que son
dominadas por el equipo de desarrollo.

Modelo Incremental

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.
29

30

6.1 Diferentes paradigmas de ciclos de vida:


EVOLUTIVOS

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
Fcil
l adaptacin
d
a requerimientos temporales
l de
d
entrega.
Este modelo es til cuando la dotacin de personal no
est disponible para una implementacin completa.

Modelo en Espiral

Combina el modelo lineal


secuencial y el de
construccin de prototipos
El sw se desarrolla en una
serie de
d versiones
incrementales

31

32

Modelo en Espiral [2]

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
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).

33

Mtodos formales

6.1 El ciclo de vida para software empotrado


1.

2.

Especificacin del
producto
Divisin Hw y Sw

3.

Diseo hw

34

4.
5.

Iteracin
e
implementacin
Diseo detallado Hw y Sw
Integracin
de
componentes Hw y Sw

Diseo sw

6.
7.

Prueba del producto


Mantenimiento y
actualizacin

35

Busca la especificacin
matemtica del Sw.
Buen manejo de la ambigedad,
inconsistencia y lo incompleto.
Se utiliza en forma p
parcial en
diseo de sistemas de alta
seguridad (aviacin, medicina,
control de procesos).
Se obtienen algoritmos bien
estructurados.
Lenguaje Z, C2
36

6.1 Diferentes paradigmas de ciclos de vida:


EVOLUTIVOS

RUP: Clasificacin de Iteraciones

RUP (Rational Unified Process), 1999.

Iteracin de concepcin:
iteracin preliminar con los
interesados
Cliente preliminar
Usuarios
Inversionistas financieros,
,
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

Jacobson-Metodologa Objectory
Booch-Metodologa Booch
Rumbaugh-OMT (Tcnica de Modelado de Objetos)

37

RUP: seis modelos o vistas de la aplicacin

Matriz del Proceso Unificado


Jacobson et al: USDP

Concepcin Elaboracin
Iteraciones Iter.

Prelim

Construccin

.. Iter. Iter.
n
n+1

..

Iter.
m

Transicin
Iter.
m+1

..

A li i
Anlisis
Diseo
Implementacin
Prueba

La ms destacada de los procesos giles.


Adaptabilidad contra previsibilidad.
Los cambios de requisitos sobre la
marcha son un aspecto natural
natural, inevitable
e incluso deseable del desarrollo de
proyectos.

39

Programacin Extrema o eXtreme Programming (XP)

40

Programacin Extrema o eXtreme Programming (XP)

Caractersticas fundamentales

38

Programacin Extrema o eXtreme Programming (XP)

Iter.
k

Requerimientos

Desarrollo iterativo e incremental.


Pruebas unitarias continuas
pruebas de regresin
regresin.
Junit, Dunit.
Programacin en parejas
Frecuente interaccin del equipo de programacin
con el cliente o usuario

41

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

Problemas y Riesgos con los Modelos

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
sistema, menos tendr que
comunicar sobre este, lo que lleva a una
comunicacin ms completa, especialmente si se
puede reducir el equipo de programadores.

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.
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.

43

Modelos de Procesos Hbridos

44

Visibilidad de Procesos

Los sistemas grandes estn hechos usualmente de


varios subsistemas.
No es necesario utilizar el mismo modelo de proceso
para todos los subsistemas.
Ell prototipado
d es recomendado
d d cuando
d existen
especificaciones de alto riesgo.
El modelo de cascada es utilizado en desarrollos bien
comprendidos.

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
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.

45

Documentos del Modelo de Cascada

46

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
A

S
E
47

Computer
Aided
Assisted
Automated
Software
Systems
Engineering
48

1.2 Actividades que se pueden automatizar con


herramientas CASE

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
proyecto
y
durante una o ms fases
software o administrador de p
del desarrollo de software (o mantenimiento).

El desarrollo de modelos grficos del sistema como parte de la


especificacin de requerimientos o del diseo del software;
La comprensin del diseo utilizando un diccionario de datos el
cual tiene informacin sobre las entidades y relaciones del diseo;
La generacin de interfaces de usuario a partir de la descripcin
grfica de la interfaz
interfaz, la cual es elaborada de forma interactiva
por el usuario.
La depuracin de programas por medio de la previsin de la
informacin, proporcionada por los programas en ejecucin.
La conversin automtica de programas de una versin anterior
de un lenguaje de programacin, como COBOL, a una versin
mas reciente.

1.

2.

3.

En The CASE Experience, Carma McClure, BYTE Abril 1989


p.235:

4.

Una combinacin de herramientas de software y metodologas


de desarrollo

5.

49

1.3 Impacto de la tecnologa CASE

2. Clasificacin 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
g
desarrolladores de tecnologa

Los sistemas CASE pueden clasificarse desde 3


perspectivas:

Varios problemas desarrollados en software no son


disponibles de automatizar:

50

Funcional
De proceso
De Integracin

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
51

Clases de herramientas funcionales


TIPOS DE HERRAMIENTAS
De planeacin
De edicin
De construccin de prototipos
De Procesamiento de lenguajes
De prueba
De depuracin
De reingeniera

52

8. Conclusiones

EJEMPLOS
Herramientas PERT, herramientas de
estimacin, hojas de clculo
Editores de texto, editores de diagramas,
procesadores de palabra
Entornos de desarrollo,
desarrollo generadores de
interface de usuario
Compiladores, intrpretes

Generadores de pruebas de datos,


Comparadores de archivos
Sistemas de depuracin interactiva
Sistemas de referencias cruzadas, sistemas de
reestructuracin de programas,

53

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
productos son:
documentacin. Los atributos de los p
mantenibilidad, confiabilidad, eficiencia y utilizacin
adecuada (usabilidad).
El proceso de software consiste en aquellas
actividades involucradas en el desarrollo de software.

54

8. Conclusiones

9. Referencias

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
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.
55

Preguntas?
Gracias!

57

1.

2.

3.

4.

Pressman, S Roger (1998) Ingeniera del


Software: Un enfoque prctico, 4a edicin

McGraw-Hill.
Somerville, Ian (2002) Ingeniera de software.
6a edicin. Addison Wesley.
Braude Eric J. (2003) Ingeniera de Software
Una perspectiva orientada a objetos, Alfaomega
Berger, A. (2002) Embedded Systems Design.
An Introduction to Process, Tools and
Techniques CMP Books.
56

También podría gustarte