introduccion a la ing.de software

70
Ing. CIP. Eddy Iván Quispe Ing. CIP. Eddy Iván Quispe Soto Soto Facultad de Ingeniería Facultad de Ingeniería EAP. Ingeniería de Sistemas EAP. Ingeniería de Sistemas

Upload: richard-ws

Post on 13-Apr-2017

42 views

Category:

Software


0 download

TRANSCRIPT

Page 1: introduccion a la ing.de software

Ing. CIP. Eddy Iván Quispe SotoIng. CIP. Eddy Iván Quispe Soto

Facultad de IngenieríaFacultad de IngenieríaEAP. Ingeniería de SistemasEAP. Ingeniería de Sistemas

Page 2: introduccion a la ing.de software

ContenidoContenido

Introducción a la Ingeniería de Introducción a la Ingeniería de softwaresoftwareConceptos generales sobre programa, Conceptos generales sobre programa, software e ingeniería de softwaresoftware e ingeniería de softwareEtapas y procesos de la Ingeniería de Etapas y procesos de la Ingeniería de SoftwareSoftwareParadigmas de la Ingeniería de Paradigmas de la Ingeniería de softwaresoftwareEnfoques para el desarrollo de Enfoques para el desarrollo de softwaresoftware..

Page 3: introduccion a la ing.de software

El SoftwareEl Software¿Que es?¿Que es?

El software de computadora es el El software de computadora es el productoproducto que los ingenieros de que los ingenieros de software construyen y brindan software construyen y brindan mantenimientomantenimiento en el largo plazo. en el largo plazo.Incluye Incluye programasprogramas que se ejecutan que se ejecutan dentro de la computadora de cualquier dentro de la computadora de cualquier tamaño y arquitectura, el contenido que tamaño y arquitectura, el contenido que se presenta conforme los programas se se presenta conforme los programas se ejecutan y los documentos, tanto físicos ejecutan y los documentos, tanto físicos como virtuales, que engloban todas las como virtuales, que engloban todas las formas de medios electrónicos.formas de medios electrónicos.

(Pressman 2006) Cap. 1. Pag. 1

Page 4: introduccion a la ing.de software

……El SoftwareEl Software

¿Quién lo hace?¿Quién lo hace?Los Los profesionalesprofesionales ligados a la ligados a la construcción de construcción de soluciones soluciones con con perfil perfil TICTIC lo construyen y brindan lo construyen y brindan mantenimiento, y casi todos en el mantenimiento, y casi todos en el mundo industrializado y mundo industrializado y automatizado usan de manera automatizado usan de manera indirecta ó indirectaindirecta ó indirecta

Page 5: introduccion a la ing.de software

……El SoftwareEl Software

¿Por qué es importante?¿Por qué es importante?Por que afecta de forma muy Por que afecta de forma muy cercana todos los aspectos de cercana todos los aspectos de nuestras vidas y se ha vuelto nuestras vidas y se ha vuelto omnipresente en el comercio, la omnipresente en el comercio, la cultura y las actividades cotidianas.cultura y las actividades cotidianas.

Page 6: introduccion a la ing.de software

……El SoftwareEl Software

¿Cuáles son los pasos?¿Cuáles son los pasos?El software de computadora se El software de computadora se construyeconstruye de la misma forma que de la misma forma que cualquier cualquier productoproducto de éxito: de éxito: mediante la aplicación de un mediante la aplicación de un procesoproceso que conduzca a un resultado de alta que conduzca a un resultado de alta calidad que satisfaga los calidad que satisfaga los requerimientos de la gente que usará requerimientos de la gente que usará el producto.el producto.Se aplica el enfoque de Ingeniería de Se aplica el enfoque de Ingeniería de software.software.

Page 7: introduccion a la ing.de software

… … El SoftwareEl Software

¿Cuál es el producto obtenido?¿Cuál es el producto obtenido?Desde el punto de vista del Desde el punto de vista del ingeniero de software, el ingeniero de software, el productoproducto obtenido lo forman los obtenido lo forman los programasprogramas, , el contenido (datos) y los el contenido (datos) y los documentosdocumentos que constituyen el que constituyen el software.software.Pero desde el enfoque del usuario, el Pero desde el enfoque del usuario, el producto obtenido es producto obtenido es la la información resultanteinformación resultante que de que de alguna manera mejora el mundo del alguna manera mejora el mundo del usuario.usuario.

Page 8: introduccion a la ing.de software

Características del softwareCaracterísticas del software

Se desarrolla o construye; no se Se desarrolla o construye; no se manufactura en el sentido clásico.manufactura en el sentido clásico.

No se desgasta, pero se deteriora.No se desgasta, pero se deteriora.

La mayoría del software aún se La mayoría del software aún se construye a la medida, a pesar de que construye a la medida, a pesar de que la industria tiene una tendencia hacia la la industria tiene una tendencia hacia la construcción por componentes.construcción por componentes.

Page 9: introduccion a la ing.de software

……Características del Características del softwaresoftwareSon confiables: No debe causar daños Son confiables: No debe causar daños

físicos o económicos en el caso de fallos.físicos o económicos en el caso de fallos.

Eficiencia: El software no debe desperdiciar Eficiencia: El software no debe desperdiciar los recursos del Sistema.los recursos del Sistema.

Tienen Mantenimiento: Debe ser posible Tienen Mantenimiento: Debe ser posible que el software evolucione y que siga que el software evolucione y que siga cumpliendo con sus especificaciones.cumpliendo con sus especificaciones.

Utilización Adecuada: Debe contar con una Utilización Adecuada: Debe contar con una interfaz de usuario adecuada y interfaz de usuario adecuada y documentación legible. documentación legible.

Page 10: introduccion a la ing.de software

……Características del Características del softwaresoftware

Productos genéricos: Son producidos Productos genéricos: Son producidos por una organización para ser vendidos por una organización para ser vendidos al mercado.al mercado.

Productos hechos a la medida. Sistemas Productos hechos a la medida. Sistemas que son desarrollados bajo pedido a un que son desarrollados bajo pedido a un desarrollador en específico.desarrollador en específico.

Page 11: introduccion a la ing.de software

SoftwareSoftware

Técnicamente:

“Software es la suma total de los programas de computadora, procedimientos, reglas, documentación asociada y los datos que pertenecen a un sistema de cómputo".

“Un producto de software es un producto diseñado para un usuario"

Ingeniero: Capaz de Construir un Producto de Alta calidad usando Componentes ya elaborados e integrándolos bajo restricciones de tiempo y presupuestos.

Page 12: introduccion a la ing.de software

Ingeniería de SoftwareIngeniería de SoftwareFritz BauerFritz Bauer

La Ingeniería de Software es el La Ingeniería de Software es el establecimiento y uso de principios establecimiento y uso de principios sólidos de la ingeniería para obtener sólidos de la ingeniería para obtener económicamente un software confiable y económicamente un software confiable y que funcione de modo eficiente en que funcione de modo eficiente en maquinas realesmaquinas reales..

IEEE [IEE93] IEEE [IEE93] La Ingeniería de Software es la aplicación La Ingeniería de Software es la aplicación de un enfoque sistemático, disciplinado y de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y cuantificable al desarrollo, operación y mantenimiento del software.mantenimiento del software. Es decir Es decir la aplicación de la Ingeniería al softwarela aplicación de la Ingeniería al software

Page 13: introduccion a la ing.de software

……Ingeniería de SoftwareIngeniería de SoftwareEs el estudio de los principios y metodologías Es el estudio de los principios y metodologías para el desarrollo y mantenimiento de para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978) .sistemas software (Zelkovitz, 1978) .

Es la aplicación práctica del conocimiento Es la aplicación práctica del conocimiento científico al diseño y construcción de científico al diseño y construcción de programas de computadora y a la programas de computadora y a la documentación asociada requerida para documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce desarrollar, operar y mantenerlos. Se conoce también como Desarrollo de Software o también como Desarrollo de Software o Producción de Software (Bohem, 1976). Producción de Software (Bohem, 1976).

Trata del establecimiento de los principios y Trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972). trabaje en máquinas reales (Bauer, 1972).

Page 14: introduccion a la ing.de software

……Ingeniería de SoftwareIngeniería de SoftwareTécnicamente:Técnicamente:

Ingeniería de softwareIngeniería de software es la es la disciplina o área de la informática que disciplina o área de la informática que ofrece métodos y/o técnicas para ofrece métodos y/o técnicas para desarrollar y mantener Software de desarrollar y mantener Software de calidad.calidad.

Page 15: introduccion a la ing.de software

Roles de la Ingeniería de Roles de la Ingeniería de Software Software

Negociadores (Staske Holders): Negociadores (Staske Holders): Usuarios finales, compradores, ect.Usuarios finales, compradores, ect.

Desarrolladores (Developers): Analistas, Desarrolladores (Developers): Analistas, Diseñadores, Administradores de Diseñadores, Administradores de proyectos, etc.proyectos, etc.

Page 16: introduccion a la ing.de software

Ingeniería de SoftwareIngeniería de SoftwareInformación = Uno de los principales activos

Desarrollo de SI

ArtesanalDisciplina de Ingeniería

Calidad

Herramientas

Gestión de proyectosDavis (1974), “información son datos procesados en forma

significativa, para el receptor, con valor real y perceptible para decisiones presentes o futuras”.

Page 17: introduccion a la ing.de software

“ “ Es tener conocimiento de lo que está Es tener conocimiento de lo que está sucediendo en el momento que ocurre “sucediendo en el momento que ocurre “

Concepto (pensamiento) Concepto (pensamiento) Sistémico:Sistémico:

El cuerpo humano es una El cuerpo humano es una buena analogía en lo que buena analogía en lo que respecta al Concepto respecta al Concepto Sistémico.Sistémico.Así como, cuando una Así como, cuando una persona se pincha un dedo persona se pincha un dedo y se da cuenta de y se da cuenta de inmediato, también el inmediato, también el gerente se debe enterar de gerente se debe enterar de lo que sucede en la lo que sucede en la empresa.empresa.

OUCH!!

Page 18: introduccion a la ing.de software

La crisis del SoftwareLa crisis del SoftwareSe identificó por primera vez en 1968, año en el que la organización NATO desarrolló la primera conferencia sobre desarrollo de software, y en la que se acuñaron los términos “crisis del software” para definir a los problemas que surgían en el desarrollo de software, e “ingeniería del software” para describir el conjunto de conocimientos que existían en aquel estado inicial.

Page 19: introduccion a la ing.de software

……La crisis del La crisis del SoftwareSoftwareCausas:Causas:

El incremento de la complejidad y de los errores del software.El registro de aplicaciones pendientes.

Avances del software no van a la par con la ganancia de productividad del hardware.Necesidades de administración, procedimientos y políticas.

La crisis del software es parte de un problema sobre análisis de sistemas, diseño e implantación.Necesidad de aseguramiento de la calidad en el software.

Costo.Mantenimiento.Metodologías de Desarrollo.

Page 20: introduccion a la ing.de software

……La crisis del La crisis del SoftwareSoftware

Page 21: introduccion a la ing.de software

2000

1998

1995

1994

28%23% 49%

26%28% 46%

27%40% 33%

16%31% 53%

ÉxitoProblemáticoFracaso

El proyecto se aborta o el software no se llega a utilizarDesbordamiento de agendas o costes. Las funcionalidades no cubren las expectativas. Problemas funcionalesProyecto realizado en el tiempo previsto, con los costes previstos, con la funcionalidad esperada y ofreciendo un funcionamiento correcto.

Fuente: Standish Group Survey,

Proyectos para el desarrollo de Software

2003

2006

29%19% 53%

32%10% 58%

……La crisis del SoftwareLa crisis del Software

Page 22: introduccion a la ing.de software

Ingeniería de Software

1. Lo que el director desea.

2. Como lo define el director de

proyecto.

3. Como se diseña el Sistema.

4. Como lo desarrolla el

programador.

5. Como se ha realizado la

instalación.

6. Lo que el usuario quería.

Page 23: introduccion a la ing.de software

Ingeniería de SoftwareIngeniería de Software

Page 24: introduccion a la ing.de software

Ingeniería de Ingeniería de Software Software

0

20

40

60

80

100

60 70 80

Hardware

Software

Porcentaje del coste total del sistema

años

Page 25: introduccion a la ing.de software

Mitos del SoftwareMitos del Software

• Mitos de los administradoresMitos de los administradores• Mitos de los ClientesMitos de los Clientes• Mitos de los DesarrolladoresMitos de los Desarrolladores

En la actualidad, la mayoría de los profesionales reconocidos en la ingeniería del software identifican los mitos en su real dimensión: actitudes equivocadas que han causado problemas serios a los administradores y al personal técnico por igual. Sin embargo, las antiguas actitudes y viejos hábitos son difíciles de modificar, por lo que aún subsisten creencias falsas sobre el software.

Page 26: introduccion a la ing.de software

Mitos de los Mitos de los administradoresadministradoresMito 1. Mito 1. Ya se tiene un libro lleno de estándares y procedimientos

para la construcción de software. ¿Esto proporcionará a mi gente todo el conocimiento necesario?

Mito 2. Si se está atrasado en el itinerario es posible contratar más programadores para así terminar a tiempo.

Mito 3. Si decido subcontratar el proyecto de software a un tercero, puedo relajarme y dejar que esa compañía lo construya.

Page 27: introduccion a la ing.de software

Mitos de los ClientesMitos de los Clientes

Mito 1. Mito 1. Un enunciado general de los objetivos es suficiente para comenzar a escribir programas; los detalles se pueden afinar después.

Mito 2. Los requerimientos del proyecto cambian de manera continua, pero el cambio puede ajustarse con facilidad porque el software es flexible.

Page 28: introduccion a la ing.de software

Mitos de los DesarrolladoresMitos de los Desarrolladores

Mito 1. Una vez que el programa ha sido escrito y puesto a funcionar, el trabajo está terminado.

Mito 2. Mientras el programa no se esté ejecutando, no existe forma de evaluar su calidad.

Mito 3. El único producto del trabajo que puede entregarse para tener un proyecto exitoso es el programa en funcionamiento.

Mito 4. La Ing de Sw obligará a emprender la creación de una documentación voluminosa e innecesaria y de manera invariable tornará más lento el proceso.

Page 29: introduccion a la ing.de software

Ingeniería de Ingeniería de Software Software

Tiempo parasalir al mercado

Inversión de relación de costo entre HW y SW

Desktop computing

Interconexiónen Redes

Tecnología de Objetos

Problemas con Modelos

Interfaces Gráficas

CAMBIOS EN CAMBIOS EN INGENIERIA DE INGENIERIA DE

SOFTWARESOFTWARE

Page 30: introduccion a la ing.de software

Historia del Desarrollo de Historia del Desarrollo de SoftwareSoftware

Page 31: introduccion a la ing.de software

Historia del Desarrollo de Historia del Desarrollo de SoftwareSoftware

Page 32: introduccion a la ing.de software

Etapas y procesos de la Etapas y procesos de la Ingeniería de SoftwareIngeniería de Software

Está formada por:Está formada por:FasesFases

ActividadesActividadesTareasTareas

RequerimientosRequerimientosAnálisisAnálisisDiseñoDiseñoConstrucciónConstrucciónPruebasPruebasPuesta en MarchaPuesta en Marcha

Page 33: introduccion a la ing.de software
Page 34: introduccion a la ing.de software

Modelos del ciclo de vida Modelos del ciclo de vida del software. Bibliografíadel software. Bibliografía

(Pressman 2006) Cap. 3. Aptdos. 3.3-3.6(Pressman 2006) Cap. 3. Aptdos. 3.3-3.6(Piattini et al. 04) Cap. 3. Aptdo. 3.6(Piattini et al. 04) Cap. 3. Aptdo. 3.6(Piattini et al. 96) Cap. 3. Aptdos. 3.3-3.6(Piattini et al. 96) Cap. 3. Aptdos. 3.3-3.6(Balzer et al. 83) (Balzer et al. 83) Balzer, R., T.E. Cheatham, and Balzer, R., T.E. Cheatham, and C.C. Green, C.C. Green, Software Technology in the 1990's: Software Technology in the 1990's: Using a New Paradigm.Using a New Paradigm. Computer, 1983. 16(11): Computer, 1983. 16(11): pppp. 39-45.. 39-45.

Page 35: introduccion a la ing.de software

El Ciclo de Vida del Desarrollo El Ciclo de Vida del Desarrollo Etapas:Etapas:

Investigación preliminarDeterminación de requerimientos Desarrollo del sistema prototipoDiseño del sistema Desarrollo del softwarePrueba de los sistemasPuesta en marcha y evaluación

Page 36: introduccion a la ing.de software

Investigación preliminarInvestigación preliminar

Esta actividad se inicia al formularse formularse un requerimientoun requerimiento, tiene tres partes: - Aclaración del requerimiento,- Aclaración del requerimiento,- Estudio de factibilidad (Factibilidad - Estudio de factibilidad (Factibilidad técnicatécnica, operativa y económica, operativa y económica), ), - Aprobación del requerimiento. - Aprobación del requerimiento.

Page 37: introduccion a la ing.de software

……Investigación preliminarInvestigación preliminar

Aclaración del requerimiento. Aclaración del requerimiento. La clarificación del problema en este caso es mucho más difícil; en cualquier caso, antes de poder llegar a otro paso, el requerimiento del requerimiento del proyecto debe estar claramente proyecto debe estar claramente establecidoestablecido.

Page 38: introduccion a la ing.de software

……Investigación preliminarInvestigación preliminar

Estudio de factibilidadEstudio de factibilidad Factibilidad técnica. ¿Puede realizarse el trabajo para el proyecto con el equipo actual, tecnología de software y el personal disponible? Si se se requiere nueva tecnologíarequiere nueva tecnología, ¿qué probabilidades hay de que pueda desarrollarse?.

Page 39: introduccion a la ing.de software

……Investigación preliminarInvestigación preliminar

Estudio de factibilidadEstudio de factibilidad Factibilidad económica. ¿Existen suficientes beneficiosbeneficios en la creación del sistema para hacer que los costos costos sean aceptablessean aceptables? O, en forma inversa, ¿son tan altos los costos costos como para que el proyecto no deba llevarse a cabo?.

Page 40: introduccion a la ing.de software

……Investigador preliminarInvestigador preliminar

Estudio de factibilidadEstudio de factibilidad Factibilidad operativa. ¿Se utilizará el software? ¿Si se desarrolla y se pone en marcha? Habrá resistencia de Habrá resistencia de los usuarioslos usuarios, los posibles beneficios.

Page 41: introduccion a la ing.de software

Determinación de Los Determinación de Los RequerimientosRequerimientosAdquirir un conocimiento detallado de

las facetas importantes de la parte de la empresa (a menudo esta actividad se conoce como investigación detallada). Los analistas, deben estudiar el proceso que actualmente se efectúa. Preguntas claves.¿¿Qué es lo que se hace?Qué es lo que se hace?¿Cómo se hace?¿Cómo se hace?¿Qué tan frecuentemente ocurre?¿Qué tan frecuentemente ocurre?¿Qué tan grande es el volumen de ¿Qué tan grande es el volumen de transacciones o decisiones?transacciones o decisiones?¿Qué tan eficiente se lleva a cabo la tarea?¿Qué tan eficiente se lleva a cabo la tarea?¿Existe algún problema?¿Existe algún problema?Si el problema existe ¿qué tan serio es?Si el problema existe ¿qué tan serio es?Si el problema existe ¿cual es la causa Si el problema existe ¿cual es la causa principal?principal?

Page 42: introduccion a la ing.de software

Desarrollo del Desarrollo del SistemaSistema PrototipoPrototipo Proporciona información preliminar en

cuanto a la factibilidad del concepto. Se seleccionan como prototipo situaciones únicas, de las cuales las personas que desarrollan el sistema no tienen ninguna información ni experiencia.También se evalúan situaciones de alto costo y alto riesgo, en donde el diseño propuesto es nuevo y no ha sido probado a través del prototipo.Obsérvese que el prototipo (a veces llamado versión Beta del software) es realmente un piloto o una prueba.

Page 43: introduccion a la ing.de software

Diseño de SistemasDiseño de Sistemas Los diseñadores son responsables de proporcionar a los programadores las especificaciones completas y escritas con claridad, que establezcan lo que debe hacer el software. Los diseñadores están pendientes para contestar preguntas, esclarecer ideas confusas y manejar los problemas que confronten los programadores cuando utilicen las especificaciones de destino.

Page 44: introduccion a la ing.de software

Desarrollo del SoftwareDesarrollo del SoftwareEn esta actividad se realiza la codificación de los programas nuevos o algunas modificaciones que estos necesiten.Los programadores son también responsables de documentar el programa e incluir los comentarios que expliquen tanto el cómo y porqué se utilizó cierto procedimiento. La documentación es esencial para probar el programa y darle mantenimiento una vez que la aplicación se ha puesto en marcha.

Page 45: introduccion a la ing.de software

Prueba de los SistemasPrueba de los Sistemas El software se utiliza en forma experimental para asegurar que el software no falle; que ejecutará de acuerdo con sus especificaciones y a la manera en la que los usuarios esperan que lo haga.Se examinan datos especiales de prueba como entrada y los resultados para localizar algunos problemas inesperados. En ocasiones es recomendable que esta actividad sea realizada por terceras personas lo cual asegura una mayor y más completa prueba, además de ser imparcial, lo que da un software más confiable.

Page 46: introduccion a la ing.de software

Puesta en Marcha y Puesta en Marcha y EvaluaciónEvaluación Cuando el personal de sistemas

verifica y pone en uso el nuevo equipo, entrena al personal usuario, instala la nueva aplicación y construye los archivos de datos que se necesiten entonces se dice que el sofware se ha puesto en marcha.La evaluación de un sistema se lleva a cabo para identificar puntos débiles y fuertes.

Page 47: introduccion a la ing.de software

……Puesta en Marcha y Puesta en Marcha y EvaluaciónEvaluación Evaluación operacional. Evaluación operacional. Valoración, Valoración,

como funciona el sistema, incluyendo su como funciona el sistema, incluyendo su facilidad de uso, tiempo de respuesta, lo facilidad de uso, tiempo de respuesta, lo adecuado de los formatos de información, adecuado de los formatos de información, confiabilidad global y nivel de utilización.confiabilidad global y nivel de utilización.Impacto organizacional Impacto organizacional Identificación y Identificación y medición de los beneficios para la medición de los beneficios para la organización, eficiencia operacional e organización, eficiencia operacional e impacto competitivo.impacto competitivo.Opinión de los administradores Opinión de los administradores Evaluación de las actitudes de directivos y Evaluación de las actitudes de directivos y administradores, así como de los usuarios administradores, así como de los usuarios finales.finales.Desempeño del desarrollo Desempeño del desarrollo La evaluación La evaluación del proceso de desarrollo (tiempo y del proceso de desarrollo (tiempo y esfuerzo de desarrollo), concuerdan con esfuerzo de desarrollo), concuerdan con presupuestos y estándares, ect. Incluye la presupuestos y estándares, ect. Incluye la valoración de los métodos y herramientas valoración de los métodos y herramientas utilizados en el desarrollo.utilizados en el desarrollo.

Page 48: introduccion a la ing.de software

¿Qué es un Proceso de ¿Qué es un Proceso de Desarrollo de SW? Desarrollo de SW?

Requisitos nuevoso modificados

Sistema nuevoo modificado

Proceso de Desarrollo de Software

DefineDefine QuiénQuién debedebe hacerhacer QuéQué,, CuándoCuándo yy CómoCómo debedebe hacerlohacerlo

No existe un proceso de software No existe un proceso de software universal. universal. Las características de cada Las características de cada proyecto (equipo de desarrollo, recursos, proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea etc.) exigen que el proceso sea configurableconfigurable

Page 49: introduccion a la ing.de software

¿Qué es un modelo del ciclo ¿Qué es un modelo del ciclo de vida del software?de vida del software?

Es una descripción de un proceso de Es una descripción de un proceso de software que se presenta desde una software que se presenta desde una perspectiva particular.perspectiva particular.

Es una abstracción de un proceso Es una abstracción de un proceso real.real.

Existe una gran variedad de Existe una gran variedad de modelos diferentes “genéricos” o modelos diferentes “genéricos” o paradigmas de desarrollo de paradigmas de desarrollo de software.software.

Page 50: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclo de vida para el desarrolloLos conceptos de partida son definidos y normalizados en el estándar 12207: Ciclo de vida del software: El periodo de tiempo comprendido desde la definición de los

requisitos hasta el fin del su uso. Procesos: Actividades y tareas implicadas en el desarrollo operación y mantenimiento de un

sistema de software.Los procesos, en desarrollo, mantenimiento y operación del software, se dibuja a través de “patrones fijos” que configuran la situación, relación y continuidad entre procesos, actividades y tareas.

En la etapa de desarrollo los patrones básicos son: Desarrollo en cascada. (o variante secuencial) Desarrollo en espiral.

Una vez desarrollada la primera versión, el ciclo de vida del sistema discurre en cada momento según uno de los siguientes patrones.

Desarrollo incremental del sistema. Desarrollo evolutivo del sistema.

Sobre estos patrones básicos, en las diferentes etapas del ciclo de vida pueden intervenir como modificadores los siguientes factores:

Prototipado. Concurrencia. Componentes comerciales y reutilización.

Generando la riqueza de modelos y sub-modelos de patrones que algunos textos clasifican de forma lineal y agrupada como “modelos de ciclos de vida”.

Page 51: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de vida

SECUENCIAL

CASCADAESPIRAL

MODELOSCICLOS DESARROLLO

MODELOS CICLOS DEVIDA DE SISTEMAS

INCREMENTAL

EVOLUTIVOCASCADA

CONCURRENCIA

COMPONENTES COMERCIALES Y REUTILIZAZIÓN

PROTOTIPADO

MO

DIF

ICAD

ORE

S

Page 52: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de desarrollo

Lineal o secuencial

Requisitos

Diseño

Codificación

Pruebas

Integración

Operación y mantenimiento

- Proyectos no muy complejos- Metódico y ordenado- Dirigido por documentos- Discontinuas- Esta identificado el producto- Proporciona requerimientos anhelados- Minimiza gastos de la planificación- Personal poco cualificado y experto

También denominado:“ciclo de vida clásico” o “paradigma clásico”“orientado a fases”

Page 53: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclo de desarrollo Lineal o secuencial

Este modelo refleja un desarrollo marcado por la sucesión escalonada de las etapas que lo componen : requisitos, diseño, codificación, pruebas e integración.Es necesario terminar por completo cada etapa para pasar a la siguiente.Este modelo, identificado ya a principios de la década de los 50, resulta muy rígido porque cada fase requiere como elemento de entrada el resultado completo de la anterior.Al aplicarlo en situaciones reales su rigidez genera problemas, porque muchas veces resulta difícil poder disponer de requisitos completos o del diseño pormenorizado del sistema en las fases iniciales, creando una barrera que impide avanzar.Resulta apropiado para: Desarrollar nuevas versiones de sistemas ya veteranos en los que el

desconocimiento de las necesidades de los usuarios, o del entorno de operación no plantea riesgos.

Sistemas pequeños, sin previsión de evolución a corto plazo.

Page 54: introduccion a la ing.de software

Ciclo de vida del Ciclo de vida del softwaresoftware

Modelos de ciclo de desarrollo Cascada

En 1970 Winston Royce definió flujos de retorno sobre el modelo secuencial.El modelo en cascada refleja la necesidad impuesta por la realidad de retornar con frecuencia desde una fase hacia las anteriores con la información generada al avanzar el desarrollo.Este modelo, reconoce la importancia de disponer de requisitos y un diseño previo antes de comenzar con la codificación del sistema, pero al mismo tiempo se enfrenta al hecho de que en la realidad la dificultad que supone disponer de documentación elaborada de requisitos y diseño antes de empezar a codificar puede actuar como una barrera que bloquee el comienzo de la siguiente fase.Por estas razones el modelo no se ha hecho muy popular, y los equipos que lo aplican pueden caer en la tentación de comenzar con el diseño o incluso con la codificación, sin tener un conocimiento suficiente de los requisitos.Resulta apropiado para: Desarrollar nuevas versiones de sistemas ya veteranos en los que el

desconocimiento de las necesidades de los usuarios, o del entorno de operación no plantean riesgos.

Sistemas pequeños, sin previsión de evolución a corto plazo.

Page 55: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de desarrollo

Cascada

Requisitos

Diseño

Codificación

Pruebas

Integración

Operación y mantenimiento

Algunos textos llaman “cascada” al modelo lineal, y “cascada modificada” al modelo de cascada

Page 56: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de desarrollo

Cascada

Page 57: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclo de desarrollo Espiral

Boehm en 1988, presenta un desarrollo evolutivo, en contraste a la linealidad de los anteriores. También introduce como elemento distintivo la actividad de “análisis de riego” para guiar la evolución del proceso de desarrollo.El ciclo de iteración de este modelo evolutivo se convierte en una espiral, que al representarse sobre ejes cartesianos muestra en cada cuadrante una clase particular de actividad: Planificación, Análisis de riesgo, Ingeniería y Evaluación, que se suceden de forma consecutiva a lo largo del ciclo de vida del desarrollo. La dimensión angular representa el avance relativo en el desarrollo de las actividades de cada cuadrante. En la planificación de cada vuelta se establece el contexto del desarrollo y se decide qué parte del mismo se abordará en el ciclo siguiente.Las actividades de análisis de riesgo evalúan las alternativas posibles para la ejecución de la siguiente parte del desarrollo, seleccionando la más ventajosa y previendo los riesgos.Las actividades de ingeniería corresponden a las indicadas en los modelos lineales (secuencial y cascada): análisis, diseño, codificación, etc. Las actividades de evaluación analizan los resultados de la fase de ingeniería, tomando el resultado de la evaluación como punto de partida para el análisis de la siguiente fase.Permite múltiples combinaciones ya que en la planificación de cada ciclo se determina el avance que se va a ejecutar durante la vuelta. Éste puede consistir en la obtención y validación de requisitos, o en el desarrollo del diseño, o el diseño junto con la codificación, o en la obtención de un subsistema completo.

Page 58: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclo de desarrollo

EspiralEn función de las combinaciones empleadas se podría argumentar que un desarrollo en espiral puede acabar siendo idéntico a otro modelo. Así por ejemplo si cada vuelta realizase exactamente una de las fases del modelo en cascada, al final se podría argumentar que se ha seguido una cascada. Si por el contrario en cada vuelta se desarrollara una parte del sistema global, se podría decir que se ha seguido no un modelo de ciclo de desarrollo, sino de ciclo de vida, y concretamente el modelo incremental.Aunque a primera vista puede parecer cierto, en realidad no lo es.Si al comenzar el desarrollo se tiene decidido que se van a abordar las fases de una cascada de forma secuencial, indudablemente se va a seguir un modelo en cascada.Si se determina ir elaborando partes del sistema, se opta por un ciclo de vida incremental.Si sólo se determina dar un pequeño paso, y después de conseguido, evaluar el resultado y planificar el siguiente paso, y antes de cada ejecución se analizan los riesgos, en ese caso, el modelo seguido es un modelo en espiral

Page 59: introduccion a la ing.de software

Ciclo de vida del SoftwareCiclo de vida del SoftwareModelos de ciclo de desarrollo

Espiral

- Control de riesgos- De pequeño a complejo.- Dividido en 4 cuadrantes- Tiene 6 fases- Extremadamente complejo.

Hacia el final del sistema

Planificación Análisis de riesgo

Evaluación del cliente Ingeniería

Análisis de riesgo basado en los requisitos iniciales

Análisis de riesgo basado en la reacción del cliente

Recolección de requisitos y planificación del proyecto iniciales

Planificación basada en los comentarios del cliente

Evaluación del cliente

Prototipo inicial del software

Prototipos de siguiente nivel

- Reduce riesgos - Cada iteración mas costoso. - Combinable con otros modelos. - Adaptable cualquier fase y cuadrante.

Page 60: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de evolución

Incremental

REQ

UIS

ITO

S Diseño Codificación Pruebas Integración OperaciónMantenim. Sub-sistema

Diseño Codificación Pruebas Integración OperaciónMantenim. Sub-sistema

Diseño Codificación Pruebas …

SISTEMA

El modelo incremental mitiga la rigidez del modelo en cascada, descomponiendo el desarrollo de un sistema en partes; para cada una de las cuales se aplica un ciclo de desarrollo (en cascada en la representación gráfica siguiente).Las ventajas que ofrece son:

El usuario dispone de pequeños subsistemas operativos que ayudan a perfilar mejor las necesidades reales del sistema en su conjunto.

El modelo produce entregas parciales en periodos cortos de tiempo, comparados con el tiempo necesario para la construcción del sistema en su conjunto, y permite la incorporación de nuevos requisitos que pueden no estar disponibles o no ser conocidos al iniciar el desarrollo.

Page 61: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de evoluciónIncremental

Aunque en la representación gráfica de la figura anterior, los desarrollos de cada subsistema se solapan en el tiempo, en su aplicación real, el segundo y siguientes subsistemas pueden comenzar una vez concluido el anterior.Resulta apropiado:Desarrollo de sistemas en los que el cliente necesita disponer de parte de la funcionalidad antes de lo que costaría desarrollar el sistema completo.Desarrollo de sistemas en los que por razones del contexto interesa realizar la obtención de los requisitos de forma escalonada a través de subsistemas.

Page 62: introduccion a la ing.de software

MSFMSF RUPRUP

Page 63: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de evolución

Evolutivo

Diseño Codificación Pruebas Integración OperaciónMantenim. Sistema

Este modelo está compuesto por varios ciclos de desarrollo. Cada uno de ellos produce un sistema completo con el que se operará en el entorno de operación.La información acumulada en el desarrollo de cada sistema, y durante su fase de operación sirve para mejorar o ampliar los requisitos y el diseño del siguiente.En realidad es un ciclo de vida común a todos los sistemas desarrollados que se mejoran a través de versiones sucesivas.

Requisitos

Diseño Codificación Pruebas Integración OperaciónMantenim. SistemaRequisitos

Diseño …Requisitos

Page 64: introduccion a la ing.de software

Ciclo de vida del softwareCiclo de vida del softwareModelos de ciclos de evolución

Evolutivo

Las circunstancias en las que este modelo puede resultar apropiado son Desconocimiento inicial de todas las necesidades operativas que

serán precisas, generalmente por tratarse del desarrollo de un sistema que operará en un entorno nuevo sin experiencia previa.

Necesidad de que el sistema entre en operación en tiempos inferiores a los que serían necesarios para diseñarlo y elaborarlo de forma exhaustiva.

Necesidad de desarrollar sistemas en entornos cambiantes (sujetos a normas legislativas, mejora continua del producto para hacer frente a desarrollos de la competencia, etc.).

Aunque en su concepción inicial contempla desarrollos internos en cascada, también podría plantearse, por ejemplo, un ciclo de vida evolutivo con desarrollos internos en espiral.

Page 65: introduccion a la ing.de software

Entrega EvolutivaEntrega Evolutiva

- Cuando se estima que sobra el tiempo.

- Hasta que se acabe el presupuesto.

- Combinación del modelo entrega por etapas y prototipos evolutivos.

- Cuando el cliente agrega solicitudes, dentro de los previstos.

Page 66: introduccion a la ing.de software

Entrega por EtapasEntrega por Etapas- Permite entregar una

funcionalidad útil del proyecto al cliente

- No funciona sin una planificación técnica ni de gestión.

- No se espera al final para entregar el proyecto.

- Adecuado para proyecto a largo plazo con tiempos dados.

- Cubre defectos del cascada.

- Personal de gestión con experiencia.

- Mucha documentación?.

Page 67: introduccion a la ing.de software

Ciclo de vida OOCiclo de vida OOBooch 94 (Macroproceso)Booch 94 (Macroproceso)

Establecer requisitos básicos

(conceptualización)

Desarrollar un modelo del

comportamiento deseado (análisis)

Crear una arquitectura (diseño)

Desplegar la implementación

(evolución)

Gestionar la evolución tras

la entrega (mantenimient

o)

(Prototipo desechable)

Interesa a la dirección técnica

Page 68: introduccion a la ing.de software

Ciclo de vida OOCiclo de vida OOBooch 94 (Microproceso)Booch 94 (Microproceso)

Especificar interfaces e

implantación de clases y objetos

Identificar clases y objetos

Identificar la semántica de

clases y objetos

Identificar relaciones entre clases y objetos

Interesa al Interesa al programadorprogramador

Page 69: introduccion a la ing.de software

Ciclo de vida 00 - Proceso Ciclo de vida 00 - Proceso UnificadoUnificado (Jacobson, Booch y (Jacobson, Booch y Rumbaugh 99)Rumbaugh 99)

Soporte al estándar del OMG UML Soporte al estándar del OMG UML (Lenguaje Unificado de Modelado)(Lenguaje Unificado de Modelado)Entre otros, integra los métodosEntre otros, integra los métodos

Grady Booch - Booch MethodGrady Booch - Booch MethodJames Rumbaugh - Object Modeling Technique James Rumbaugh - Object Modeling Technique (OMT)(OMT)Ivar Jacobson - Object Oriented Software Ivar Jacobson - Object Oriented Software Engineering (OOSE)Engineering (OOSE)

Características principales:Características principales:Dirigido por casos de usoDirigido por casos de usoCentrado en la arquitecturaCentrado en la arquitecturaIterativo e incrementalIterativo e incremental

Page 70: introduccion a la ing.de software

Ing. CIP. Eddy Iván Quispe SotoIng. CIP. Eddy Iván Quispe Soto

Facultad de IngenieríaFacultad de IngenieríaEAP. Ingeniería de SistemasEAP. Ingeniería de Sistemas