IS Unidad 1A

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 71

Ingeniería de Software

(790464)
Unidad 1
Introducción a la Ingeniería de Software
(Producto y Proceso)

Prof. Víctor Valenzuela Ruz


Contenidos de la Unidad 1
• Introducción
• Definición de Ingeniería del software.
– Crisis del software.
– Evolución del software.
– Características del software.
– Mitos del software.
• Componentes del Software.
• Proceso, Métodos y Herramientas.
• Actividades protectoras (SQA, GCS).
• Construcción de prototipos
• Modelos de Desarrollo de Software
– Modelo Clásico o de Cascada
– Evolutivos
– Modelo Incremental
– Modelo de Espiral
• Técnicas de Cuarta Generación
• Modelo de Métodos Formales

Prof. Víctor 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 genéricas en el desarrollo de un Proyecto


de Software y su relación con los distintos modelos de
desarrollo.

4. Explicar los distintos Modelos de Procesos (Paradigmas de


desarrollo) de Software, reconociendo las características,
ventajas y desventajas de cada uno.

Prof. Víctor Valenzuela Ruz


Motivación

El reciente aumento de aplicaciones en donde se utiliza el


computador ha sido posible debido a la constante disminución en el
costo del hardware, por lo cual la demanda de software ha crecido
de forma exponencial. Esto implica que son necesarias técnicas y
tecnología eficientes de Ingeniería de Software para resolver los
múltiples problemas que se derivan de las aplicaciones en donde se
desarrollan sistemas de software de gran tamaño.

Este curso tiene como objetivo presentar al alumno el espectro de


técnicas de Ingeniería de Software que pueden ser aplicadas en
proyectos de software prácticos.

Prof. Víctor Valenzuela Ruz


Introducción (1/3)

La Ingeniería de Software tiene como principal objetivo servir como


base para la producción de software de calidad, lo cual se logra
definiendo el proceso del software, el cual comprende las actividades
involucradas en la producción del software.
La Ingeniería del Software se refiere a la producción de sistemas de
software desarrollados por grupos y no solo por individuos. Utiliza
distintos principios de Ingeniería en el desarrollo de estos sistemas e
incluye aspectos técnicos y no-técnicos.

Además de contemplar aspectos de computación, los Ingenieros de


Software deben ser capaces de comunicarse con otros miembros de
su grupo de desarrollo.

Prof. Víctor Valenzuela Ruz


Introducción (2/3)

Cada Ingeniero de Software debe comprender la importancia de la


gestión del proyecto y deben de apreciar los problemas que los
usuarios del software podrían 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 Ingeniería de Software implica seguir en cualquier proyecto de
software una metodología de desarrollo y la utilización de distintas
técnicas y herramientas. Los diferentes procedimientos a seguir en
cualquier proyecto de Ingeniería de software son: Definición de
requerimientos, Análisis, Diseño, Verificación y Validación (Pruebas de
Calidad del Software), Pruebas y Mantenimiento.
La Ingeniería de Software es una disciplina de la Ingeniería en donde
se resuelven problemas relacionados con el desarrollo de sistemas de
software. Esta disciplina no es solo programación ni computación.
6

Prof. Víctor Valenzuela Ruz


Introducción (3/3)

Los Ingenieros de Software deben de ser profesionales que deben de


utilizar la teoría de otras disciplinas y aplicarlas de forma efectiva en la
solución de problemas complejos de sistemas de software. El software
no solo significa "programas de computadora" asociados con una
aplicación o producto. Además de esto, implica la documentación
necesaria para dar seguimiento, la instalación, el uso y el
mantenimiento del software. En sistema complejos de gran tamaño, el
esfuerzo necesario para escribir esta documentación es a menudo
tanto como lo es el desarrollo del software.

No es posible presentar una solución global o precisa a todos los


problemas de la Ingeniería de Software o presentar una solución única
para resolver los problemas de la Ingeniería de Software. Cada
proyecto de software presenta distintos problemas en su desarrollo,
los cuales involucran personas, equipo, usuarios del software y
ambiente de la aplicación.
7

Prof. Víctor Valenzuela Ruz


Evolución del Software

1950 1960 1970 1980 1990 2000


Los primeros años La segunda era
• Orientación por lotes • Multiusuario
• Distribución limitada • Tiempo real
• Software a medida • Bases de datos
• Diseño implícito, s/docum. • Producto de software (mantenimiento)
La cuarta era
La tercera era
• Sist. Personales potentes
• Sistemas distribuidos • Cliente-servidor
• Incorporac. de inteligencia • Comput. en paralelo
(microcomp., PC) • Redes de computadores
• Hardware económico • Internet
• Impacto en el consumo • Tecnologías O-O
• Sistemas expertos
• Redes neuronales artificiales
8

Prof. Víctor Valenzuela Ruz


El Producto Software

• Definición de Software: (1) instrucciones de computador que


cuando se ejecutan proporcionan la función y el comportamiento
deseado, (2) estructuras de datos que facilitan a los programas
manipular adecuadamente la información, y (3) documentos que
describen la operación y el uso de los programas.

• Características:
– El software se desarrolla, no se fabrica en un sentido clásico.
– El software no se “Estropea”.
– La mayoría del software se construye a medida.
– Existe variedad de aplicaciones de software.

Prof. Víctor Valenzuela Ruz


Características del Hardware

• En el caso del hardware se tiene la llamada curva de bañera, 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. Víctor Valenzuela Ruz


Características del Software

• El software no es susceptible a los factores externos que hacen


que el hardware se estropee.

índice de fallo

tiempo

11

Prof. Víctor Valenzuela Ruz


Características del Software

• Podemos decir entonces que el software no se estropea, pero se


deteriora.
índice de fallo

tiempo

12

Prof. Víctor Valenzuela Ruz


Características del Software

• La mayoría del software se fabrica a medida, siendo la


reutilización muy baja.

• Reutilización del software.


– Módulos generales reutilizables.
– Técnicas orientadas a objetos.
– Bibliotecas de subrutinas científicas y de Ingeniería.

• En cualquier caso, es difícil establecer categorías genéricas


significativas para las aplicaciones del software.

• Conforme aumenta la complejidad del mismo se hace más


complicado establecer compartimentos nítidamente separados.

13

Prof. Víctor Valenzuela Ruz


Características del Software

Aplicaciones de Software

• Software de Sistemas
• Software de tiempo real
• Software de gestión
• Software de Ingeniería y científico
• Software empotrado
• Software de computadores personales
• Software basado en la Web
• Software de Inteligencia Artificial

14

Prof. Víctor 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 Ingeniería de Software concierne a un desarrollo efectivo en


cuanto a costes del software.

15

Prof. Víctor Valenzuela Ruz


Productos de Software

• Productos genéricos.
l Productos que son producidos por una organización para ser
vendidos al mercado.

• Productos hechos a medida.


l Sistemas que son desarrollados bajo pedido a un
desarrollador específico.

• La mayor parte del gasto del software es en productos


genéricos, pero hay más esfuerzo en el desarrollo de los
sistemas hechos a medida.

16

Prof. Víctor Valenzuela Ruz


Características 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 daños físicos o económicos en el
caso de fallos.

• Eficiencia
l El software no debe desperdiciar los recursos del sistema.

• Utilización adecuada
l El software debe contar con una interfaz de usuario
adecuada y su documentación.

17

Prof. Víctor Valenzuela Ruz


Importancia de las Características del Software
• La importancia relativa de las
características 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 críticos
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
característica.

18

Prof. Víctor Valenzuela Ruz


Crisis del Software

• La crisis que durante cierto tiempo ha afectado a la industria


informática tiene por raíz 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 práctica de la ingeniería de software
tiene por objeto la construcción de grandes y complejos
sistemas de una forma rentable. Por tanto, quizás no sea
exagerado sugerir que la prosperidad futura de los países
industrializados depende de una ingeniería de software efectiva.

• Hoy el problema está dado por el desafío de reducir el costo y


mejorar la calidad de las soluciones basadas en computadoras,
soluciones que se implementan con el software.

19

Prof. Víctor 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 después de modificaciones
• 2% fueron usados tal como se habían desarrollado
Causas de cancelación 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 requería
• 25% Requerimientos incorrectos
• 17% Cambios de requerimientos, ambiente de desarrollo de software,
ambiente de proceso de desarrollo
20

Prof. Víctor 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% más de lo presupuestado
– 16.2% culminaron a tiempo y dentro del costo
– 83.8% no cumplen los requerimientos

• Los ejecutivos piensan:


– 48% ahora hay más fallas
– 59% ahora está igual o peor que 5 años atrás
– 69% ahora está igual o peor que 10 años atrás

21

Prof. Víctor 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.

• Síntomas
1. Baja Calidad del Software.
2. Tiempo y Presupuesto Excedido.
3. Confiabilidad Cuestionable.
4. Altos Requerimientos de Personal para desarrollo y
mantenimiento.

22

Prof. Víctor Valenzuela Ruz


Sobre Ingeniería de Software

• Como respuesta a la “crisis del software” ha evolucionado un


conjunto de técnicas denominadas colectivamente Ingeniería de
Software.

• Hoy día existe consenso sobre la necesidad de un enfoque más


disciplinado para el desarrollo de sistemas de computación que
el que se ha utilizado hasta ahora. Este enfoque está
comprendido en la frase ”Ingeniería de Software”.

• La Ingeniería de Software se yergue hoy como una disciplina


por derecho propio. El ingeniero de software debe poder
evaluar y aplicar las técnicas de computación existentes de
manera rentable y fácil de usar.

23

Prof. Víctor Valenzuela Ruz


¿Qué es la Ingeniería del Software?

• La Ingeniería de Software es una disciplina


de la Ingeniería que concierne a todos los
aspectos de la producción de software.

• Los Ingenieros de Software adoptan un


enfoque sistemático para llevar a cabo su
trabajo y utilizan las herramientas y
técnicas necesarias para resolver el
problema planteado, de acuerdo a las
restricciones de desarrollo y recursos
disponibles.

24

Prof. Víctor Valenzuela Ruz


Diferencia entre Ingeniería de Software y Computación

• La computación concierne a la teoría y fundamentos de


cualquier sistema de computo, sea de hardware o de software.

• La Ingeniería de software concierne solo al desarrollo de


sistemas o productos de software.

• La Ingeniería de Software todavía esta lejos de ser una ciencia


como los son la Química, la Ingeniería Civil o la Electrónica.

25

Prof. Víctor Valenzuela Ruz


Ingeniería de Sistemas e Ingeniería de Software

• La Ingeniería de Sistemas concierne a todos los aspectos del


desarrollo de sistemas basados en cómputo, que incluyen
hardware, software y el proceso de Ingeniería.

• La Ingeniería de Software es solo parte de este proceso.

26

Prof. Víctor Valenzuela Ruz


Definición de Ingeniería de Software

• Se han propuesto varias definiciones de Ingeniería de Software,


las que tienen como elemento común que la ingeniería de
software trata de la construcción de sistemas utilizando
principios de ingeniería para el desarrollo de estos.

• “La Ingeniería de Software consiste en el establecimiento y uso


de principios de ingeniería robustos, orientados a obtener
software económico que sea fiable y funcione de manera
eficiente sobre máquinas reales”. (Fritz Bauer)

• “Es el conjunto de métodos, técnicas 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. Víctor Valenzuela Ruz


Definición de Ingeniería de Software

• La Ingeniería del 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 (R. Pressman).

• El IEEE [IEE93] ha desarrollado una definición completa:


Ingeniería del 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 de
Ingeniería al Software.
(2) El estudio de enfoques como en (1).

28

Prof. Víctor Valenzuela Ruz


Visión General de la Ingeniería de Software
• Ingeniería  Análisis
Diseño
Construcción
Verificación
Gestión
• Preguntas:
– ¿Cuál es el problema a resolver?
– Cuáles son las características de la entidad que se usa para resolver el
problema?
– ¿Cómo se realizará la entidad (y la solución)?
– ¿Cómo se construirá la entidad?
– ¿Qué enfoque se va a utilizar para no contemplar los errores que se
cometieron en el diseño y en la construcción de la entidad?
– ¿Cómo se apoyará la entidad cuando usuarios soliciten correcciones,
adaptaciones y mejoras de la entidad.?

29

Prof. Víctor Valenzuela Ruz


Visión General de la Ingeniería de Software

• El trabajo que se asocia a la Ingeniería del Software se puede


dividir en tres fases genéricas:

– La Fase de Definición  ¿Qué?

– La Fase de Desarrollo  ¿Cómo?

– La Fase de Mantenimiento  Cambio.


» Corrección
» Adaptación
» Mejora
» Prevención

30

Prof. Víctor Valenzuela Ruz


Mitos del Software

• Muchas de las causas de la crisis del software se pueden


encontrar en una mitología que surge durante los primeros años
de desarrollo.

• A diferencia de los mitos antiguos, que ofrecían a los hombres


lecciones dignas de tener en cuenta, los mitos del software
propagaron información errónea y confusión.

• Hoy la mayoría de los profesionales competentes consideran a


los mitos por lo que son : Actitudes erróneas que han causado
serios problemas tanto a los gestores como a los técnicos.

31

Prof. Víctor Valenzuela Ruz


Mitos del Software - GESTION

• Mito 1:
“Tenemos un libro lleno de estándares 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 prácticas
modernas de desarrollo de software? ¿es completo?, en muchos
casos las respuestas a estas preguntas es: NO!

32

Prof. Víctor Valenzuela Ruz


Mitos del Software - GESTION

• Mito 2:
“Mi gente dispone de las herramientas de desarrollo de
software más avanzadas, les compramos las computadoras
más modernas”.

REALIDAD: Se necesita mucho más que el último modelo de


computador o PC para hacer desarrollo de software de gran
calidad. Las herramientas CASE son más importantes que el
hardware para conseguir buena calidad y productividad.

33

Prof. Víctor Valenzuela Ruz


Mitos del Software - GESTION

• Mito 3:
“Si fallamos en la planificación, podemos añadir más
programadores y adelantar el tiempo perdido”.

REALIDAD: El desarrollo de software no es un proceso


mecánico como la fabricación.

“...añadir gente a un proyecto retrasado lo retrasa aún más”.


(Brooks).

34

Prof. Víctor Valenzuela Ruz


Mitos del Software - CLIENTE

• Mito 1:
“Una declaración general de los
objetivos es suficiente para 600 600

comenzar a escribir los programas 500

(podemos dar los detalles más 400

adelante)”.
300

REALIDAD: Una mala definición 200


150
inicial es la principal causa del 100
trabajo inútil en software. Es 10
esencial una descripción formal y 0
Definición Desarrollo Después de la
Entrega

detallada del ámbito de la


información. Es necesaria una
exhaustiva comunicación entre el
cliente y el analista.
35

Prof. Víctor Valenzuela Ruz


Mitos del Software - CLIENTE

• Mito 2:
“Los requisitos del proyecto cambian continuamente, pero
los cambios pueden acomodarse fácilmente ya que el
software es flexible”.

REALIDAD: Es verdad que los requisitos del software


cambian, pero el impacto del cambio varia según en el
momento que se presenten.
– Definición: 1x
– Desarrollo: 1,5 a 6x
– Después de la entrega: 60-100x

36

Prof. Víctor Valenzuela Ruz


Mitos del Software - DESARROLLADORES

• Mito 1:
“Una vez que escribimos el programa y
hacemos que funcione, nuestro trabajo ha
terminado”.

REALIDAD: .... “Cuando más pronto se


comience a escribir código, más se tardará
en terminarlo”.... Entre el 50% y el 70%
de todo el esfuerzo dedicado a un
programa se realizará después de que se
la haya entregado al cliente por primera
vez.

37

Prof. Víctor Valenzuela Ruz


Mitos del Software - DESARROLLADORES

• Mitos 2:
“Hasta que no tengo el programa
ejecutándose, no tengo forma de
comprobar su calidad”.

REALIDAD: Desde el principio del proyecto


se puede aplicar uno de los mecanismos más
efectivos para garantizar la calidad del
software: La revisión técnica formal. La
revisión 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. Víctor 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


sólo una parte de una configuración del
software que incluye programas,
documentos y datos. La documentación es
la base de un desarrollo y, lo que es más
importante, proporciona guías para la
tarea de mantenimiento del software.

39

Prof. Víctor Valenzuela Ruz


Comunicación Compleja

40

Prof. Víctor Valenzuela Ruz


Taller 1: Trabajo Grupal

1. El software es la característica diferenciadora de muchos


productos y sistemas informáticos. 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 están viniendo abajo


lentamente a medida que pasan los años, pero otros se están
haciendo lugar. Intente añadir dos o tres mitos nuevos a cada
categoría.

41

Prof. Víctor Valenzuela Ruz


Componentes de la Ingeniería de Software

• La ingeniería del Software está compuesta por una serie de


pasos que abarcan los métodos, las herramientas y los
procesos (sustentados en un enfoque hacia la calidad).

• Estos pasos se denominan frecuentemente paradigmas de la


ingeniería del Software.
• La elección de un paradigma para la Ingeniería del Software se
lleva a cabo de acuerdo con la naturaleza del proyecto y de la
aplicación, los métodos y las herramientas a usar y los controles
y entregas requeridos.

42

Prof. Víctor Valenzuela Ruz


43

Prof. Víctor Valenzuela Ruz


Definición de Proceso

• Procedimiento, política o estándar.

• Razones del ciclo de vida del software:


– Incremento de calidad del producto
– Facilidad de entendimiento humano y comunicación
– Mejora en los procesos de soporte
– Procesos automatizados
– Soporte en la gestión de procesos

44

Prof. Víctor Valenzuela Ruz


Procesos de Software

Un conjunto de actividades cuyo objetivo es el


desarrollo y evolución de Software.

Especificación – Desarrollo - Validación – Evolución

Un Conjunto Coherente de Actividades para


la Especificación, Diseño, Implementación y
Prueba de Sistemas de Software.

45

Prof. Víctor 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. Víctor Valenzuela Ruz


Marco de Trabajo o Framework

• En el desarrollo de software, un framework es una estructura


conceptual y tecnológica de soporte definida, normalmente con
artefactos o módulos 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 gestión, 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. Víctor 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 sistemáticas, 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 fabricación: desde el análisis de requerimientos hasta la
puesta en producción.

48

Prof. Víctor Valenzuela Ruz


Hitos y Entregas

• Los hitos que son señales que se colocan en un momento


específico 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. Víctor Valenzuela Ruz


Actividades Protectoras

• Las actividades protectoras son un complemento a las fases de un


modelo de desarrollo de software.
• La visión Genérica de la Ingeniería de Software, según Pressman
se complementa con un número de “Actividades Protectoras”:
– Seguimiento y control del software
– Revisión de técnicas formales
– Garantía de la calidad del software
– Gestión de configuración del software
– Preparación y producción de documentos
– Gestión de reutilización
– Gestión de riesgos

• Las actividades protectoras son independientes de cualquier


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

50

Prof. Víctor Valenzuela Ruz


Modelos de Procesos de Software

 Un modelo de proceso de software (MPS) es una


representación abstracta de un proceso.

 Se presenta un proceso desde un punto de vista particular.

 Esta estrategia de desarrollo acompaña al proceso, métodos


y herramientas.

 Un MPS se selecciona de acuerdo con el tipo de aplicación,


con los métodos que se desean utilizar en la construcción y
los informes requeridos, entre otros.

51

Prof. Víctor Valenzuela Ruz


Modelos Genéricos

 Modelo de Cascada
Distingue y separa las fases fundamentales de especificación y
desarrollo.
 Desarrollo Evolutivo
Las fases de especificación y desarrollo se intercalan.

 Desarrollo Formal de Sistemas


Se hace una transformación de implementación de un
modelo matemático que representa el sistema.

 Desarrollo basado en Reuso


El sistema es ensamblado usando componentes ya existentes.

 Desarrollo T4G (Técnicas de 4ta Generación)

52

Prof. Víctor 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


documentación de la fase anterior. Pero en la práctica las
fases se traslapan y se intercambian información.

53

Prof. Víctor Valenzuela Ruz


Modelo de Cascada

Definición de
Requerimientos

Diseño de Sistema
y de Software

Implementación y
Prueba de Unidades

Integración y
Prueba del
Sistema

Operación y
Mantenimiento

54

Prof. Víctor Valenzuela Ruz


Modelo de Cascada

 Aplicable en:
 Sistemas pequeños 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 drásticos en los


requerimientos de los clientes.

55

Prof. Víctor Valenzuela Ruz


Desarrollo Evolutivo
Desarrolla una implementación inicial exponiéndola según los comentarios
de los usuarios y refinándola a través 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 más confusos o complejos.

56

Prof. Víctor Valenzuela Ruz


Desarrollo Evolutivo

Actividades
Concurrentes
Versión
Especificación Inicial

Bosquejo de Versiones
Desarrollo
la descripción Intermedias

Validación Versión
Final

57

Prof. Víctor Valenzuela Ruz


Modelos Evolutivos

• Modelos flexibles que permiten la modificación del sistema


durante su proceso de desarrollo.
• Procesos iterativos que permiten a los desarrolladores construir
versiones del software cada vez más completas
• Ejemplos:
– Modelo Incremental.
– Modelo Espiral.
– Modelo Espiral WINWIN.
– Modelo de Desarrollo Concurrente.
– Modelo de Prototipos

58

Prof. Víctor 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. Víctor Valenzuela Ruz


Modelo Espiral

• Utilización de ciclos en lugar de sucesión de actividades.


• Facilita el desarrollo rápido de versiones incrementales de
software.

60

Prof. Víctor Valenzuela Ruz


Modelo Espiral WinWin

• Hace énfasis en la etapa Comunicación con el Cliente definiendo


un conjunto de actividades de negociación que se llevan a cabo
al principio de cada ciclo
• El proceso de negociación 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. Víctor Valenzuela Ruz


Modelo Concurrente

• Provee una meta descripción del proceso de software.


• Mientras que en el Espiral la principal contribución es que las
actividades del software ocurran repetidamente, en el
Concurrente es la capacidad de describir las múltiples
actividades del software que ocurren simultáneamente.
• Dado que los requerimientos cambian es muy probable que una
vez haya comenzado la fase de diseño, sea necesario incorporar
cambios. En estos casos No se debe detener el diseño, 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. Víctor Valenzuela Ruz


Modelo de Prototipos

• Los prototipos (cambiando de modelo), son una herramienta


muy eficaz para imaginar el software completo de una forma
rápida y sencilla. De esta forma, incluso observando el prototipo
podemos descubrir requerimientos del software en los que
antes no habíamos reparado

• El paradigma de construcción de prototipos tiene tres pasos:


1. Escuchar al cliente. Recolección de requisitos. Se encuentran y
definen los objetivos globales, se identifican los requisitos
conocidos y las áreas donde es obligatorio más definición.
2. Construir y revisar la maqueta (prototipo).
3. El cliente prueba la maqueta (prototipo) y lo utiliza para refinar los
requisitos del software.

63

Prof. Víctor Valenzuela Ruz


Modelo de Prototipos

• El ciclo de vida del modelo de construcción por prototipos es:

64

Prof. Víctor Valenzuela Ruz


Desarrollo Evolutivo

 Aplicable en:
 Sistemas interactivos pequeños o medianos

 Subsistemas de un gran sistema (Interfaz de Usuario)

 Sistemas de requerimientos volátiles

 Problemas por:
 Pérdida de visibilidad del proceso
 El sistema es a menudo pobremente estructurado
 Se requiere de habilidades especiales para mantener el
proyecto bajo control (desarrollo rápido, lenguajes,
herramientas, gestión)

65

Prof. Víctor Valenzuela Ruz


Desarrollo Formal de Sistemas

• Basados en la transformación de una especificación matemática


de un sistema en un programa ejecutable.

• En la transformación, la especificación del sistema se convierte


sistemáticamente en representaciones más detalladas, pero
matemáticamente correctas.

• Las transformaciones preservan la corrección y el programa


final esta de acuerdo con las especificaciones.

66

Prof. Víctor Valenzuela Ruz


Desarrollo Formal de Sistemas

 Aplicable en:

 Sistemas con requerimientos críticos, dónde se debe dar


garantías de cumplimiento 100%.

 Problemas por:
 Necesite de personal altamente especializado y con gran
entrenamiento en aplicación de la técnica.
 Dificultad en la formalización de especificación de ciertos
aspectos como la Interfaz de usuario un sistema.

67

Prof. Víctor Valenzuela Ruz


Desarrollo basado en Reuso

• Se basa en el reuso sistemático, donde los sistemas son


integrados desde componentes existentes o subsistemas
comerciales.

• Actualmente, este enfoque cobra mucha importancia, pero


todavía la experiencia es limitada.

68

Prof. Víctor Valenzuela Ruz


Técnicas de 4ta Generación (4TG)

• Se utilizan herramientas de software que facilitan las tareas de


desarrollo.

• La herramienta genera automáticamente el código fuente


basándose en la especificación.

• Estas técnicas se orientan hacia la habilidad de especificar


software a un nivel que sea más próximo al lenguaje natural.
• Facilita al ingeniero desarrollador del software la especificación
de las características del software a alto nivel, con el fin de
generar automáticamente el código a partir de allí.
• Existencia de herramientas CASE (Computer Aide Software
Engineering o Ingeniería de software asistida por computador).

69

Prof. Víctor Valenzuela Ruz


Algunos Métodos 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. Víctor Valenzuela Ruz


Resumen …

• La Ingeniería del Software es una disciplina que


integra procesos, métodos y herramientas para el
desarrollo del software de computadora.
• Se han propuesto varios modelos de procesos para la
Ingeniería del Software diferentes, cada uno
exhibiendo ventajas e inconvenientes pero todos
tienen una serie de fases genéricas en común.
• En el resto de este curso se consideran los principios,
conceptos y métodos que permiten llevar a cabo el
proceso que se llama Ingeniería del Software.

71

Prof. Víctor Valenzuela Ruz

También podría gustarte