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