Pontificia Universidad Javeriana Ingeniería de Software...

Post on 26-Jun-2019

219 views 0 download

Transcript of Pontificia Universidad Javeriana Ingeniería de Software...

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad JaverianaIngeniería de Software

Profesora: Olga Roa

Cali

2007

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Agenda Software e Ingeniería de Software Modelos de ciclo de vida de

desarrollo Cascada Evolutivo

Prototipos Espiral

Modelo en V Fases genéricas del proceso de

desarrollo

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Software

Software es un producto intangible Maneja Productos, administración de información

y transmisión de la misma. Funcionalidades del Software

Soporta y provee funcionalidades a otros sistemas Controla otros programas (por ej. Un sistema

operativo) Ayuda en las comunicaciones (ej., networking

software) Ayuda a construir otro software (ej., herramientas

de desarrollo y diseño)

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Software es un juego de item´s u objetos que forman una configuración, esta incluye:

• programas • documentos • datos ...

¿Qué es Software?

El software es complejo, porque inicialmente se concibe como algo abstracto

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Clases de Software

system software application software engineering/scientific software embedded software product-line software WebApps (Web applications) AI software

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Ingeniería de Software“La ingeniería de software es una disciplina que integra

métodos, herramientas y procedimientos para el desarrollo de software.”[1]

Desde la década del sesenta ha existido un movimiento tendiente a cambiar la programación de computadores de un estado artesanal a una disciplina similar a la ingeniería. El campo de la ingeniería de software surgió con el objetivo de introducir una técnica disciplinada al desarrollo de software.

[1] PRESSMAN, Roger S. Ingeniería de Software : Un enfoque práctico. 6a edición. McGraw-Hill. España. 1993

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Ingeniería de SoftwareFritz Bauer estableció una de las primeras definiciones de

ingeniería de software en 1969: “Ingeniería de Software es el establecimiento y uso de principios robustos de ingeniería, orientados a obtener software que sea fiable y funcione de manera eficiente sobre máquinas reales”.[2]

Los puntos claves de esta definición pueden observarse en todas las disciplinas de ingeniería : principios robustos y productos económicos y confiables.

[2] Cita de BAUER, Fritz tomada de NAUR, P y RANDELL, B (editores). Software Engineering: A report on a Conference sponsored by the NATO Science Comittee/ NATO. 1969 citada en MARTIN, James y McCLURE, Carma. Structured Techniques for Computing. Prentice-Hall. Englewood Cliffs, NJ, EE.UU. 1985

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Ingeniería de Software

La ingeniería de software, al igual que otras ingenierías, debe trabajar con elementos gerenciales y humanos, además de los elementos técnicos propios. Sin embargo, a diferencia de las otras ingenierías, su producto, el software, es inmaterial. El desarrollo de software no puede, por tanto, ser manejado y controlado como otros procesos para productos físicos. El desarrollo de software es una actividad compleja por naturaleza.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

La complejidad del Software

La complejidad del desarrollo de software se ve agravada por el constante y acelerado avance tecnológico de la industria electrónica. Cada día los fabricantes son capaces de producir máquinas más económicas y poderosas. Esto posibilita desarrollar actualmente aplicaciones que no podrían realizarse cinco o diez años atrás. Las necesidades del usuario, el software en sí mismo y el proceso de desarrollo de software son cada vez más complejos.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Historia de Ingeniería de Software

La ingeniería de software surgió de una serie de investigaciones en la década de los sesenta. Las primeras investigaciones al respecto buscaban hallar mejores mecanismos para escribir programas. Trabajos posteriores, como el análisis y diseño estructurado, comenzaron a presentar un visión más amplia del proceso. La disciplina se ha enriquecido con muchas investigaciones y avances tecnológicos desde esa época.

La ingeniería de software, durante toda su vida, ha estado “marcada” por tres enfoques o paradigmas principales :- Los métodos orientados a procesos- Los métodos orientados a la información- Los métodos orientados a objetos

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Modelos de ciclo de vida de desarrollo

El mantenimiento como el 80-20 Costo beneficio de dar de baja Vs.

construir nuevo software?

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Ciclo de Vida del Software

idealized curve

change

actual curve

Failurerate

Time

increased failurerate due to side effects

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Características del Software software se debe adaptar a las necesidades de

un nuevo ambiente de computo ó tecnología. software debe poder implementar nuevos

requerimientos del negocio software se debe extender y ser compatible con

otros versiones de software más actualizadas y diferentes bases de datos.

software se debe poder configurar facilmente para trabajar en ambientes de red.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de cascada Uno de los primeros modelos de ciclo de vida

del desarrollo. Fue establecido por W. Royce en 1970.

El primero en establecer el proceso de desarrollo como la ejecución de un conjunto de actividades.

Cada actividad genera como salidas productos y modelos que son utilizados como entradas para el proceso subsiguiente.

Una actividad debe terminarse (por lo menos, en algún grado) para empezar la siguiente.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de cascada El modelo presenta una situación ideal para el

proceso de desarrollo: un proceso con progresos ordenados y coherentes. NO ES REALISTA!

Enfoque secuencial no permite el tratamiento de fenómenos reales!

Se cometen errores en las diferentes etapas. En términos generales el modelo en cascada:

Asume que todo va en una dirección No hay sobre-posición ni iteraciones entre las fases Implica una entrega al completar cada una de las

fases Asume que el conocimiento y requerimientos

obtenidos en las fases iniciales del proyecto no cambia significativamente durante la vida del mismo.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de cascada

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Modelo Evolutivo

Desarrollo exploratorio El objetivo es trabajar con clientes y

evolucionar un sistema final iniciando en una especificación. Los requerimientos deben estar claros.

Usando prototipos El objetivo es entender los requerimientos

del sistema. Los requerimientos se van refinando

Espiral...

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de espiral

Barry Boehm -1976 Busca manejar los riesgos asociados al

modelo de cascada. El modelo en espiral es, esencialmente,

un desarrollo completo en cascada en cada iteración.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de espiral

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de espiralEn cada una de la iteraciones, se deben

cumplir cuatro actividades principales (una en cada cuadrante) :

Planeación : determinación de los objetivos, alternativas y restricciones

Análisis de riesgo : análisis de alternativas e identificación/resolución de riesgos

Ingeniería : desarrollo del producto hasta “el siguiente nivel”.

Evaluación : valoración por parte del cliente de los resultados obtenidos.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de espiral Se van construyendo versiones sucesivas del

software, cada vez más completas. Se introducen las actividades de análisis de

los riesgos asociados al desarrollo y a la evaluación por parte del cliente de los resultados del software.

Maneja el concepto de versiones del sistema de software.

Este modelo es similar al manejo de productos comerciales que liberan versiones, cada vez más completas y complejas.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de prototipos Variación del modelo en espiral. Construcción incremental de prototipos. NO del

sistema completo. Desarrollo rápido de aplicaciones o RAD (DuPont Co. 1985) El proceso iterativo de construcción de

prototipos debe estar precedido por una fase de análisis y construcción del modelo conceptual. Posteriormente, cada una de las iteraciones deberá contar con una fase rápida de análisis y con la confrontación permanente de las necesidades del usuario.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

El modelo de prototipos

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Modelo en V (Alan Davis)Énfasis en revisiones y pruebas de los proyectos.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Modelo en V

Requirementsspecification

Systemspecification

Systemdesign

Detaileddesign

Module andunit codeand tess

Sub-systemintegrationtest plan

Systemintegrationtest plan

Acceptancetest plan

ServiceAcceptance

testSystem

integration testSub-system

integration test

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

FASES GENÉRICAS DEL PROCESO DE DESARROLLO

Pasos genéricos que caracterizan el desarrollo de software

Independiente del método o el esquema de ciclo de vida utilizado. Modelo de cinco fases genéricas Modelo de tres fases genéricas

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

FASES GENÉRICAS DEL PROCESO DE DESARROLLO

MODELO DE CINCO FASES GENÉRICAS

1. Análisis (Qué)2. Diseño (Cómo)3. Implementación (Construcción)4. Pruebas y corrección de defectos

(Encontrar defectos. Pruebas de: unidad, integración, sistema)

5. Operación y mantenimiento (configuración, operación dentro del entorno. NO se deben construir funcionalidades completas)

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

FASES GENÉRICAS DEL PROCESO DE DESARROLLO

MODELO DE TRES FASES GENÉRICAS (Pressman) Definición

Análisis del sistema. Planificación del proyecto de software. Análisis de requerimientos (requisitos).

Desarrollo Diseño del software Codificación Prueba del software

Mantenimiento (cambios) Correctivos, tendientes a corregir defectos y errores. Adaptativos, tendiente a adaptar el software a los cambios

del entorno. De Mejoramiento, tendiente a incorporar nuevas

funcionalidades al software.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

“… el proceso de construcción de software en el país (Colombia) es artesanal, poco disciplinado, y depende en gran medida de las personas que participan en él”. Iván Cifuentes Uniandes - Opus Ingeniería

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

“La industria de software es el mejor camino para entrar de lleno a la economía digital y cerrar la brecha del desarrollo. Alrededor de estas empresas crecen sectores complementarios y de un importante valor estratégico, como la educación especializada. (…) Esta puede ser la última oportunidad” Jorge Aramburo PSL Ltda.

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Industria de Software en Colombia

En nuestro país ¿Cómo se desempeña la industria? ¿Qué expectativas existen?

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Industria de Software en Colombia

Según Fedesoft… El mercado local de software…

$57.391 millones para 1992 $88.227 millones para 1993 $202.507 millones para 1997 $474.000 millones para 1999

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Definición de un Proceso para trabajar en grupo

TSPi – Team Software Process

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa

Pontificia Universidad Javeriana Ingeniería de Software Olga Lucía Roa