You are on page 1of 71

Ingeniera de Software

(790464)
Unidad 1
Introduccin a la Ingeniera de Software
(Producto y Proceso)

Prof. Vctor Valenzuela Ruz

Contenidos de la Unidad 1

Introduccin
Definicin de Ingeniera del software.
Crisis del software.
Evolucin del software.
Caractersticas del software.
Mitos del software.
Componentes del Software.
Proceso, Mtodos y Herramientas.
Actividades protectoras (SQA, GCS).
Construccin de prototipos
Modelos de Desarrollo de Software
Modelo Clsico o de Cascada
Evolutivos
Modelo Incremental
Modelo de Espiral
Tcnicas de Cuarta Generacin
Modelo de Mtodos Formales
2

Prof. Vctor Valenzuela Ruz

Aprendizajes Esperados
Objetivos:
1. Reconocer la importancia y los componentes asociados al
software.
2. Identificar el proceso involucrado en el desarrollo de software.
3. Reconocer las etapas genricas en el desarrollo de un Proyecto
de Software y su relacin con los distintos modelos de
desarrollo.
4. Explicar los distintos Modelos de Procesos (Paradigmas de
desarrollo) de Software, reconociendo las caractersticas,
ventajas y desventajas de cada uno.

Prof. Vctor Valenzuela Ruz

Motivacin
El reciente aumento de aplicaciones en donde se utiliza el
computador ha sido posible debido a la constante disminucin en el
costo del hardware, por lo cual la demanda de software ha crecido
de forma exponencial. Esto implica que son necesarias tcnicas y
tecnologa eficientes de Ingeniera de Software para resolver los
mltiples problemas que se derivan de las aplicaciones en donde se
desarrollan sistemas de software de gran tamao.
Este curso tiene como objetivo presentar al alumno el espectro de
tcnicas de Ingeniera de Software que pueden ser aplicadas en
proyectos de software prcticos.

Prof. Vctor Valenzuela Ruz

Introduccin

(1/3)

La Ingeniera de Software tiene como principal objetivo servir como


base para la produccin de software de calidad, lo cual se logra
definiendo el proceso del software, el cual comprende las actividades
involucradas en la produccin del software.
La Ingeniera del Software se refiere a la produccin de sistemas de
software desarrollados por grupos y no solo por individuos. Utiliza
distintos principios de Ingeniera en el desarrollo de estos sistemas e
incluye aspectos tcnicos y no-tcnicos.
Adems de contemplar aspectos de computacin, los Ingenieros de
Software deben ser capaces de comunicarse con otros miembros de
su grupo de desarrollo.

Prof. Vctor Valenzuela Ruz

Introduccin

(2/3)

Cada Ingeniero de Software debe comprender la importancia de la


gestin del proyecto y deben de apreciar los problemas que los
usuarios del software podran encontrar en su uso. De la misma
forma, se debe tener en cuenta la calidad del software y su
confiabilidad, ya que no es igual producir software para un sistema de
nominas, que un sistema de software para el control de un reactor
nuclear.
La Ingeniera de Software implica seguir en cualquier proyecto de
software una metodologa de desarrollo y la utilizacin de distintas
tcnicas y herramientas. Los diferentes procedimientos a seguir en
cualquier proyecto de Ingeniera de software son: Definicin de
requerimientos, Anlisis, Diseo, Verificacin y Validacin (Pruebas de
Calidad del Software), Pruebas y Mantenimiento.
La Ingeniera de Software es una disciplina de la Ingeniera en donde
se resuelven problemas relacionados con el desarrollo de sistemas de
software. Esta disciplina no es solo programacin ni computacin.
6

Prof. Vctor Valenzuela Ruz

Introduccin

(3/3)

Los Ingenieros de Software deben de ser profesionales que deben de


utilizar la teora de otras disciplinas y aplicarlas de forma efectiva en la
solucin de problemas complejos de sistemas de software. El software
no solo significa "programas de computadora" asociados con una
aplicacin o producto. Adems de esto, implica la documentacin
necesaria para dar seguimiento, la instalacin, el uso y el
mantenimiento del software. En sistema complejos de gran tamao, el
esfuerzo necesario para escribir esta documentacin es a menudo
tanto como lo es el desarrollo del software.
No es posible presentar una solucin global o precisa a todos los
problemas de la Ingeniera de Software o presentar una solucin nica
para resolver los problemas de la Ingeniera de Software. Cada
proyecto de software presenta distintos problemas en su desarrollo,
los cuales involucran personas, equipo, usuarios del software y
ambiente de la aplicacin.
7

Prof. Vctor Valenzuela Ruz

Evolucin del Software

1950

1960

Los primeros aos


Orientacin por lotes

Distribucin limitada
Software a medida
Diseo implcito, s/docum.

La tercera era
Sistemas distribuidos

Incorporac. de inteligencia
(microcomp., PC)
Hardware econmico
Impacto en el consumo

1970

1980

1990

2000

La segunda era
Multiusuario
Tiempo real
Bases de datos
Producto de software (mantenimiento)

La cuarta era
Sist. Personales potentes

Cliente-servidor
Comput. en paralelo
Redes de computadores
Internet
Tecnologas O-O
Sistemas expertos
Redes neuronales artificiales
8

Prof. Vctor Valenzuela Ruz

El Producto Software
Definicin de Software: (1) instrucciones de computador que
cuando se ejecutan proporcionan la funcin y el comportamiento
deseado, (2) estructuras de datos que facilitan a los programas
manipular adecuadamente la informacin, y (3) documentos que
describen la operacin y el uso de los programas.
Caractersticas:
El software se desarrolla, no se fabrica en un sentido clsico.
El software no se Estropea.
La mayora del software se construye a medida.
Existe variedad de aplicaciones de software.

Prof. Vctor Valenzuela Ruz

Caractersticas del Hardware


En el caso del hardware se tiene la llamada curva de baera, que
indica que el hardware presenta relativamente muchos fallos al
principio de su vida. Posteriormente son corregidos y se mantiene
as por mucho tiempo.
ndice de fallo

tiempo

10

Prof. Vctor Valenzuela Ruz

Caractersticas del Software


El software no es susceptible a los factores externos que hacen
que el hardware se estropee.
ndice de fallo

tiempo

11

Prof. Vctor Valenzuela Ruz

Caractersticas del Software


Podemos decir entonces que el software no se estropea, pero se
deteriora.
ndice de fallo

tiempo

12

Prof. Vctor Valenzuela Ruz

Caractersticas del Software


La mayora del software se fabrica a medida, siendo la
reutilizacin muy baja.
Reutilizacin del software.
Mdulos generales reutilizables.
Tcnicas orientadas a objetos.
Bibliotecas de subrutinas cientficas y de Ingeniera.
En cualquier caso, es difcil establecer categoras genricas
significativas para las aplicaciones del software.
Conforme aumenta la complejidad del mismo se hace ms
complicado establecer compartimentos ntidamente separados.

13

Prof. Vctor Valenzuela Ruz

Caractersticas del Software


Aplicaciones de Software

Software
Software
Software
Software
Software
Software
Software
Software

de Sistemas
de tiempo real
de gestin
de Ingeniera y cientfico
empotrado
de computadores personales
basado en la Web
de Inteligencia Artificial

14

Prof. Vctor Valenzuela Ruz

Costos del Software


Los costos del software a menudo dominan al costo del sistema.
El costo del software en un PC es a menudo mas caro que la
PC.
Cuesta mas mantener el software que desarrollarlo. Para
sistemas con una larga vida, este costo se multiplica.
La Ingeniera de Software concierne a un desarrollo efectivo en
cuanto a costes del software.

15

Prof. Vctor Valenzuela Ruz

Productos de Software
Productos genricos.
l Productos que son producidos por una organizacin para ser
vendidos al mercado.
Productos hechos a medida.
l Sistemas que son desarrollados bajo pedido a un
desarrollador especfico.
La mayor parte del gasto del software es en productos
genricos, pero hay ms esfuerzo en el desarrollo de los
sistemas hechos a medida.

16

Prof. Vctor Valenzuela Ruz

Caractersticas del Software


Mantenibles
l Debe ser posible que el software evolucione y que siga
cumpliendo con sus especificaciones.
Confiabilidad
l El software no debe causar daos fsicos o econmicos en el
caso de fallos.
Eficiencia
l El software no debe desperdiciar los recursos del sistema.
Utilizacin adecuada
l El software debe contar con una interfaz de usuario
adecuada y su documentacin.
17

Prof. Vctor Valenzuela Ruz

Importancia de las Caractersticas del Software


La importancia relativa de las
caractersticas depende en el tipo
de producto y en el ambiente en el
que ser utilizado.
En
algunos
casos,
algunos
atributos pueden dominar.
En sistemas de seguridad crticos
de tiempo real, los atributos clave
pueden ser la confiabilidad y la
eficiencia.

Los costos tienden a crecer


exponencialmente
si
son
requeridos altos niveles de alguna
caracterstica.
18

Prof. Vctor Valenzuela Ruz

Crisis del Software


La crisis que durante cierto tiempo ha afectado a la industria
informtica tiene por raz el desarrollo del software. Esta crisis
fue el resultado directo del desarrollo del hardware.
Lamentablemente, los costos del software no han disminuido
con los del hardware. La prctica de la ingeniera de software
tiene por objeto la construccin de grandes y complejos
sistemas de una forma rentable. Por tanto, quizs no sea
exagerado sugerir que la prosperidad futura de los pases
industrializados depende de una ingeniera de software efectiva.
Hoy el problema est dado por el desafo de reducir el costo y
mejorar la calidad de las soluciones basadas en computadoras,
soluciones que se implementan con el software.

19

Prof. Vctor Valenzuela Ruz

Crisis del Software


Resultados en el desarrollo de software armamentista:
(ACM, Sigsoft Software Engineering Notes, 1985, Vol 10, No.5)

47% fueron pagados pero no fueron desarrollados


29% fueron pagados pero no fueron usados
19% fueron abandonados
3% fueron usados despus de modificaciones
2% fueron usados tal como se haban desarrollado
Causas de cancelacin de proyectos:

(Johnson, J. Chaos: The Dollar Drain of IT Projects Failures,


Application Development Trends, January, 1995)

13% Requerimientos incompletos


12% Falta de compromiso del usuario
9% Cambios de requerimientos y especificaciones
8% No se requera
25% Requerimientos incorrectos
17% Cambios de requerimientos, ambiente de desarrollo de software,
ambiente de proceso de desarrollo
20

Prof. Vctor Valenzuela Ruz

Crisis del Software


Resultados en base a encuesta a 365 empresas
norteamericanas:
US$ 250 billones en desarrollo

31% son cancelados (parados)


52.7% costaron 189% ms de lo presupuestado
16.2% culminaron a tiempo y dentro del costo
83.8% no cumplen los requerimientos

Los ejecutivos piensan:


48% ahora hay ms fallas
59% ahora est igual o peor que 5 aos atrs
69% ahora est igual o peor que 10 aos atrs
21

Prof. Vctor Valenzuela Ruz

Crisis del Software


La industria del software no ha podido satisfacer la demanda.
La complejidad del software producido y demandado se
incrementa constantemente.
Sntomas
1. Baja Calidad del Software.
2. Tiempo y Presupuesto Excedido.
3. Confiabilidad Cuestionable.
4. Altos Requerimientos de Personal
mantenimiento.

para

desarrollo

22

Prof. Vctor Valenzuela Ruz

Sobre Ingeniera de Software


Como respuesta a la crisis del software ha evolucionado un
conjunto de tcnicas denominadas colectivamente Ingeniera de
Software.
Hoy da existe consenso sobre la necesidad de un enfoque ms
disciplinado para el desarrollo de sistemas de computacin que
el que se ha utilizado hasta ahora. Este enfoque est
comprendido en la frase Ingeniera de Software.
La Ingeniera de Software se yergue hoy como una disciplina
por derecho propio. El ingeniero de software debe poder
evaluar y aplicar las tcnicas de computacin existentes de
manera rentable y fcil de usar.
23

Prof. Vctor Valenzuela Ruz

Qu es la Ingeniera del Software?


La Ingeniera de Software es una disciplina
de la Ingeniera que concierne a todos los
aspectos de la produccin de software.
Los Ingenieros de Software adoptan un
enfoque sistemtico para llevar a cabo su
trabajo y utilizan las herramientas y
tcnicas necesarias para resolver el
problema planteado, de acuerdo a las
restricciones de desarrollo y recursos
disponibles.

24

Prof. Vctor Valenzuela Ruz

Diferencia entre Ingeniera de Software y Computacin


La computacin concierne a la teora y fundamentos de
cualquier sistema de computo, sea de hardware o de software.
La Ingeniera de software concierne solo al desarrollo de
sistemas o productos de software.
La Ingeniera de Software todava esta lejos de ser una ciencia
como los son la Qumica, la Ingeniera Civil o la Electrnica.

25

Prof. Vctor Valenzuela Ruz

Ingeniera de Sistemas e Ingeniera de Software


La Ingeniera de Sistemas concierne a todos los aspectos del
desarrollo de sistemas basados en cmputo, que incluyen
hardware, software y el proceso de Ingeniera.
La Ingeniera de Software es solo parte de este proceso.

26

Prof. Vctor Valenzuela Ruz

Definicin de Ingeniera de Software


Se han propuesto varias definiciones de Ingeniera de Software,
las que tienen como elemento comn que la ingeniera de
software trata de la construccin de sistemas utilizando
principios de ingeniera para el desarrollo de estos.
La Ingeniera de Software consiste en el establecimiento y uso

de principios de ingeniera robustos, orientados a obtener


software econmico que sea fiable y funcione de manera
eficiente sobre mquinas reales. (Fritz Bauer)

Es el conjunto de mtodos, tcnicas y herramientas que

controlan el proceso integral del desarrollo de software y


suministra las bases para construir software de calidad de forma
eficiente en los plazos adecuados. (wikipedia)

27

Prof. Vctor Valenzuela Ruz

Definicin de Ingeniera de Software


La Ingeniera del 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 (R. Pressman).
El IEEE [IEE93] ha desarrollado una definicin completa:
Ingeniera del software:
(1) La aplicacin de un enfoque sistemtico, disciplinado y
cuantificable
hacia
el
desarrollo,
operacin
y
mantenimiento del software; es decir, la aplicacin de
Ingeniera al Software.
(2) El estudio de enfoques como en (1).

28

Prof. Vctor Valenzuela Ruz

Visin General de la Ingeniera de Software


Ingeniera Anlisis
Diseo
Construccin
Verificacin
Gestin
Preguntas:
Cul es el problema a resolver?
Cules son las caractersticas de la entidad que se usa para resolver el
problema?
Cmo se realizar la entidad (y la solucin)?
Cmo se construir la entidad?
Qu enfoque se va a utilizar para no contemplar los errores que se
cometieron en el diseo y en la construccin de la entidad?
Cmo se apoyar la entidad cuando usuarios soliciten correcciones,
adaptaciones y mejoras de la entidad.?
29

Prof. Vctor Valenzuela Ruz

Visin General de la Ingeniera de Software


El trabajo que se asocia a la Ingeniera del Software se puede
dividir en tres fases genricas:
La Fase de Definicin Qu?
La Fase de Desarrollo Cmo?
La Fase de Mantenimiento Cambio.
Correccin
Adaptacin
Mejora
Prevencin
30

Prof. Vctor Valenzuela Ruz

Mitos del Software


Muchas de las causas de la crisis del software se pueden
encontrar en una mitologa que surge durante los primeros aos
de desarrollo.
A diferencia de los mitos antiguos, que ofrecan a los hombres
lecciones dignas de tener en cuenta, los mitos del software
propagaron informacin errnea y confusin.
Hoy la mayora de los profesionales competentes consideran a
los mitos por lo que son : Actitudes errneas que han causado
serios problemas tanto a los gestores como a los tcnicos.

31

Prof. Vctor Valenzuela Ruz

Mitos del Software - GESTION


Mito 1:
Tenemos un libro lleno de estndares y procedimientos
para construir el software, no le proporciona ya a mi gente
todo lo que debe saber?
REALIDAD: Esta bien que el libro exista, pero se usa?
conocen los trabajadores su existencia? refleja las prcticas
modernas de desarrollo de software? es completo?, en muchos
casos las respuestas a estas preguntas es: NO!

32

Prof. Vctor Valenzuela Ruz

Mitos del Software - GESTION


Mito 2:
Mi gente dispone de las herramientas de desarrollo de
software ms avanzadas, les compramos las computadoras
ms modernas.
REALIDAD: Se necesita mucho ms que el ltimo modelo de
computador o PC para hacer desarrollo de software de gran
calidad. Las herramientas CASE son ms importantes que el
hardware para conseguir buena calidad y productividad.

33

Prof. Vctor Valenzuela Ruz

Mitos del Software - GESTION


Mito 3:
Si fallamos en la planificacin, podemos aadir ms
programadores y adelantar el tiempo perdido.
REALIDAD: El desarrollo de software no es un proceso
mecnico como la fabricacin.

...aadir gente a un proyecto retrasado lo retrasa an ms.

(Brooks).

34

Prof. Vctor Valenzuela Ruz

Mitos del Software - CLIENTE


Mito 1:
Una declaracin general de los
objetivos es suficiente para
comenzar a escribir los programas
(podemos dar los detalles ms
adelante).
REALIDAD: Una mala definicin
inicial es la principal causa del
trabajo intil en software. Es
esencial una descripcin formal y
detallada del mbito de la
informacin. Es necesaria una
exhaustiva comunicacin entre el
cliente y el analista.

600

600
500
400
300
200

150

100
0

10
Definicin

Desarrollo

Despus de la
Entrega

35

Prof. Vctor Valenzuela Ruz

Mitos del Software - CLIENTE


Mito 2:
Los requisitos del proyecto cambian continuamente, pero
los cambios pueden acomodarse fcilmente ya que el
software es flexible.
REALIDAD: Es verdad que los requisitos del software
cambian, pero el impacto del cambio varia segn en el
momento que se presenten.
Definicin: 1x
Desarrollo: 1,5 a 6x
Despus de la entrega: 60-100x

36

Prof. Vctor Valenzuela Ruz

Mitos del Software - DESARROLLADORES


Mito 1:
Una vez que escribimos el programa y
hacemos que funcione, nuestro trabajo ha
terminado.
REALIDAD: .... Cuando ms pronto se
comience a escribir cdigo, ms se tardar
en terminarlo.... Entre el 50% y el 70%
de todo el esfuerzo dedicado a un
programa se realizar despus de que se
la haya entregado al cliente por primera
vez.

37

Prof. Vctor Valenzuela Ruz

Mitos del Software - DESARROLLADORES


Mitos 2:
Hasta que no tengo el programa
ejecutndose, no tengo forma de
comprobar su calidad.
REALIDAD: Desde el principio del proyecto
se puede aplicar uno de los mecanismos ms
efectivos para garantizar la calidad del
software: La revisin tcnica formal. La
revisin del software es un filtro de calidad
que se ha comprobado que es mas efectivo
que la prueba, para encontrar ciertas clases
de defectos de software.

38

Prof. Vctor Valenzuela Ruz

Mitos del Software - DESARROLLADORES


Mitos 3:
Lo nico que se entrega al final del
proyecto es el programa funcionando.
REALIDAD: Un programa que funciona es
slo una parte de una configuracin del
software
que
incluye
programas,
documentos y datos. La documentacin es
la base de un desarrollo y, lo que es ms
importante, proporciona guas para la
tarea de mantenimiento del software.

39

Prof. Vctor Valenzuela Ruz

Comunicacin Compleja

40

Prof. Vctor Valenzuela Ruz

Taller 1: Trabajo Grupal


1. El software es la caracterstica diferenciadora de muchos
productos y sistemas informticos. D ejemplos de tres
productos y d, al menos un sistema en que el software y no el
hardware, sea el elemento diferenciador.
2. Los mitos destacados anteriormente se estn viniendo abajo
lentamente a medida que pasan los aos, pero otros se estn
haciendo lugar. Intente aadir dos o tres mitos nuevos a cada
categora.

41

Prof. Vctor Valenzuela Ruz

Componentes de la Ingeniera de Software


La ingeniera del Software est compuesta por una serie de
pasos que abarcan los mtodos, las herramientas y los
procesos (sustentados en un enfoque hacia la calidad).
Estos pasos se denominan frecuentemente paradigmas de la

ingeniera del Software.

La eleccin de un paradigma para la Ingeniera del Software se


lleva a cabo de acuerdo con la naturaleza del proyecto y de la
aplicacin, los mtodos y las herramientas a usar y los controles
y entregas requeridos.

42

Prof. Vctor Valenzuela Ruz

43

Prof. Vctor Valenzuela Ruz

Definicin de Proceso
Procedimiento, poltica o estndar.
Razones del ciclo de vida del software:
Incremento de calidad del producto
Facilidad de entendimiento humano y comunicacin
Mejora en los procesos de soporte
Procesos automatizados
Soporte en la gestin de procesos

44

Prof. Vctor Valenzuela Ruz

Procesos de Software
Un conjunto de actividades cuyo objetivo es el
desarrollo y evolucin de Software.
Especificacin Desarrollo - Validacin Evolucin

Un Conjunto Coherente de Actividades para


la Especificacin, Diseo, Implementacin y
Prueba de Sistemas de Software.
45

Prof. Vctor Valenzuela Ruz

Procesos de Software
Un proceso de software proporciona el marco de trabajo o
framework desde el cual se puede establecer un plan detallado
para el desarrollo del software.

46

Prof. Vctor Valenzuela Ruz

Marco de Trabajo o Framework


En el desarrollo de software, un framework es una estructura
conceptual y tecnolgica de soporte definida, normalmente con
artefactos o mdulos de software concretos, con base en la cual
otro proyecto de software puede ser organizado y desarrollado.

Base para un proceso de software completo.


Son aplicables a lo largo del proceso del software
Su objetivo es la gestin, el rastreo y el control de proyecto.
Permite garantizar la calidad del software.
Las actividades del marco de trabajo son aplicables a todos los
proyectos.

47

Prof. Vctor Valenzuela Ruz

SQA
SQA es Software Quality Assurance o Aseguramiento de la
Calidad del Software.
En cuanto al Aseguramiento de la calidad (QA), ... es el
conjunto de actividades sistemticas, desarrolladas dentro del
Sistema de Calidad, para garantizar que el proyecto va a
satisfacer las Normas de Calidad. [PMBOK-2004]
Por tanto, SQA es el proceso de asegurar la calidad, aplicado al
software, que debe realizarse a lo largo de todos los procesos
de fabricacin: desde el anlisis de requerimientos hasta la
puesta en produccin.

48

Prof. Vctor Valenzuela Ruz

Hitos y Entregas
Los hitos que son seales que se colocan en un momento
especfico del proceso y que coinciden con la entrega de un
resultado concreto y los puntos SQA (Software Quality
Assurance o Aseguramiento de la Calidad del Software).
Es el punto de control de objetivo intermedio antes de que el
proyecto finalice.

49

Prof. Vctor Valenzuela Ruz

Actividades Protectoras
Las actividades protectoras son un complemento a las fases de un
modelo de desarrollo de software.
La visin Genrica de la Ingeniera de Software, segn Pressman
se complementa con un nmero de Actividades Protectoras:
Seguimiento y control del software

Revisin de tcnicas formales


Garanta de la calidad del software
Gestin de configuracin del software
Preparacin y produccin de documentos
Gestin de reutilizacin
Gestin de riesgos

Las actividades protectoras son independientes de cualquier


actividad del marco de trabajo y ocurren durante todo el proceso.
50

Prof. Vctor Valenzuela Ruz

Modelos de Procesos de Software

Un modelo de proceso de software


representacin abstracta de un proceso.

Se presenta un proceso desde un punto de vista particular.

Esta estrategia de desarrollo acompaa al proceso, mtodos


y herramientas.

Un MPS se selecciona de acuerdo con el tipo de aplicacin,


con los mtodos que se desean utilizar en la construccin y
los informes requeridos, entre otros.

(MPS)

es

una

51

Prof. Vctor Valenzuela Ruz

Modelos Genricos
Modelo de Cascada

Distingue y separa las fases fundamentales de especificacin y


desarrollo.

Desarrollo Evolutivo
Las fases de especificacin y desarrollo se intercalan.

Desarrollo Formal de Sistemas


Se hace una transformacin de implementacin
modelo matemtico que representa el sistema.

de

un

Desarrollo basado en Reuso


El sistema es ensamblado usando componentes ya existentes.

Desarrollo T4G (Tcnicas de 4ta Generacin)


52

Prof. Vctor Valenzuela Ruz

Modelo de Cascada

Es el primer modelo de proceso de desarrollo de software que


se public y toma las actividades fundamentales de este
proceso y las separa en cinco fases.

En principio una fase comienza con la entrega de la


documentacin de la fase anterior. Pero en la prctica las
fases se traslapan y se intercambian informacin.

53

Prof. Vctor Valenzuela Ruz

Modelo de Cascada
Definicin de
Requerimientos
Diseo de Sistema
y de Software
Implementacin y
Prueba de Unidades
Integracin y
Prueba del
Sistema
Operacin y
Mantenimiento

54

Prof. Vctor Valenzuela Ruz

Modelo de Cascada
Aplicable en:
Sistemas pequeos con requerimientos bien entendidos
Sistemas grandes con requerimientos muy estables.

Problemas por:
Escasa flexibilidad al particionar el proyecto en estas
distintas etapas secuenciales.
Dificultad para dar respuesta a cambios drsticos en los
requerimientos de los clientes.

55

Prof. Vctor Valenzuela Ruz

Desarrollo Evolutivo
Desarrolla una implementacin inicial exponindola segn los comentarios
de los usuarios y refinndola a travs de diferentes versiones.
1. Desarrollo Exploratorio
El objetivo es trabajar con el cliente para explorar sus requerimientos y evolucionar
al sistema final. El desarrollo comienza con las partes del sistema mejor
comprendidas.

2. Prototipos Desechables
El objetivo es entender los requerimientos del cliente y cumplido el objetivo se
descarta el prototipo y se construye el sistema. El prototipo se centra en
experimentar con los requerimientos del cliente ms confusos o complejos.

56

Prof. Vctor Valenzuela Ruz

Desarrollo Evolutivo

Actividades
Concurrentes

Bosquejo de
la descripcin

Especificacin

Versin
Inicial

Desarrollo

Versiones
Intermedias

Validacin

Versin
Final

57

Prof. Vctor Valenzuela Ruz

Modelos Evolutivos
Modelos flexibles que permiten la modificacin del sistema
durante su proceso de desarrollo.
Procesos iterativos que permiten a los desarrolladores construir
versiones del software cada vez ms completas
Ejemplos:
Modelo Incremental.
Modelo Espiral.
Modelo Espiral WINWIN.
Modelo de Desarrollo Concurrente.
Modelo de Prototipos

58

Prof. Vctor Valenzuela Ruz

Modelo Incremental
Aplica el enfoque lineal secuencial (cascada) escalonadamente.
Incrementos parciales de la herramienta completa (versiones).
Cada incremento agrega funcionalidad adicional o mejorada
sobre el sistema.
Cada etapa debe cumplir con los requisitos de las desarrolladas.

59

Prof. Vctor Valenzuela Ruz

Modelo Espiral
Utilizacin de ciclos en lugar de sucesin de actividades.
Facilita el desarrollo rpido de versiones incrementales de
software.

60

Prof. Vctor Valenzuela Ruz

Modelo Espiral WinWin


Hace nfasis en la etapa Comunicacin con el Cliente definiendo
un conjunto de actividades de negociacin que se llevan a cabo
al principio de cada ciclo
El proceso de negociacin busca que ambos ganen, tanto
cliente como analista:
el cliente obtiene el producto que satisface gran parte de sus
necesidades y
el desarrollador intenta obtener requisitos que le permitan
cumplir con tiempos de entrega realistas

61

Prof. Vctor Valenzuela Ruz

Modelo Concurrente
Provee una meta descripcin del proceso de software.
Mientras que en el Espiral la principal contribucin es que las
actividades del software ocurran repetidamente, en el
Concurrente es la capacidad de describir las mltiples
actividades del software que ocurren simultneamente.
Dado que los requerimientos cambian es muy probable que una
vez haya comenzado la fase de diseo, sea necesario incorporar
cambios. En estos casos No se debe detener el diseo, sino que
se debe continuar si es posible al mismo tiempo que se
modifican los requerimientos.
Por lo tanto en este modelo, diversas actividades pueden estar
ocurriendo concurrentemente.
Posibilita el conocimiento del verdadero estado del proyecto.

62

Prof. Vctor Valenzuela Ruz

Modelo de Prototipos
Los prototipos (cambiando de modelo), son una herramienta
muy eficaz para imaginar el software completo de una forma
rpida y sencilla. De esta forma, incluso observando el prototipo
podemos descubrir requerimientos del software en los que
antes no habamos reparado
El paradigma de construccin de prototipos tiene tres pasos:
1.

2.
3.

Escuchar al cliente. Recoleccin de requisitos. Se encuentran y


definen los objetivos globales, se identifican los requisitos
conocidos y las reas donde es obligatorio ms definicin.
Construir y revisar la maqueta (prototipo).
El cliente prueba la maqueta (prototipo) y lo utiliza para refinar los
requisitos del software.

63

Prof. Vctor Valenzuela Ruz

Modelo de Prototipos
El ciclo de vida del modelo de construccin por prototipos es:

64

Prof. Vctor Valenzuela Ruz

Desarrollo Evolutivo
Aplicable en:
Sistemas interactivos pequeos o medianos
Subsistemas de un gran sistema (Interfaz de Usuario)
Sistemas de requerimientos voltiles

Problemas por:
Prdida de visibilidad del proceso
El sistema es a menudo pobremente estructurado
Se requiere de habilidades especiales para mantener el
proyecto bajo control (desarrollo rpido, lenguajes,
herramientas, gestin)

65

Prof. Vctor Valenzuela Ruz

Desarrollo Formal de Sistemas


Basados en la transformacin de una especificacin matemtica
de un sistema en un programa ejecutable.
En la transformacin, la especificacin del sistema se convierte
sistemticamente en representaciones ms detalladas, pero
matemticamente correctas.
Las transformaciones preservan la correccin y el programa
final esta de acuerdo con las especificaciones.

66

Prof. Vctor Valenzuela Ruz

Desarrollo Formal de Sistemas


Aplicable en:
Sistemas con requerimientos crticos, dnde se debe dar
garantas de cumplimiento 100%.
Problemas por:
Necesite de personal altamente especializado y con gran
entrenamiento en aplicacin de la tcnica.
Dificultad en la formalizacin de especificacin de ciertos
aspectos como la Interfaz de usuario un sistema.

67

Prof. Vctor Valenzuela Ruz

Desarrollo basado en Reuso


Se basa en el reuso sistemtico, donde los sistemas son
integrados desde componentes existentes o subsistemas
comerciales.

Actualmente, este enfoque cobra mucha importancia, pero


todava la experiencia es limitada.
68

Prof. Vctor Valenzuela Ruz

Tcnicas de 4ta Generacin (4TG)


Se utilizan herramientas de software que facilitan las tareas de
desarrollo.
La herramienta genera automticamente el cdigo fuente
basndose en la especificacin.
Estas tcnicas se orientan hacia la habilidad de especificar
software a un nivel que sea ms prximo al lenguaje natural.
Facilita al ingeniero desarrollador del software la especificacin
de las caractersticas del software a alto nivel, con el fin de
generar automticamente el cdigo a partir de all.
Existencia de herramientas CASE (Computer Aide Software
Engineering o Ingeniera de software asistida por computador).

69

Prof. Vctor Valenzuela Ruz

Algunos Mtodos de Desarrollo de Software

RUP (Rational Unified Process)


CDM (Custom Development Method)
FDD (Feature Driven Development)
ASD (Adaptive Software Development )
DSDM (Dynamic Software Development Method )
RAD (Rapid Application Development)
Scrum
XP (Extreme Programming)

70

Prof. Vctor Valenzuela Ruz

Resumen
La Ingeniera del Software es una disciplina que
integra procesos, mtodos y herramientas para el
desarrollo del software de computadora.
Se han propuesto varios modelos de procesos para la
Ingeniera del Software diferentes, cada uno
exhibiendo ventajas e inconvenientes pero todos
tienen una serie de fases genricas en comn.
En el resto de este curso se consideran los principios,
conceptos y mtodos que permiten llevar a cabo el
proceso que se llama Ingeniera del Software.

71

Prof. Vctor Valenzuela Ruz

You might also like