Title:
1Qué es la 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 la IngenierÃa al software. - (2) El estudio de enfoques como (1).
- IEEE, 1993
2Aspectos clave en la IS
- Escala del problema
- Calidad y productividad
- Consistencia
- Manejo del cambio
- DesafÃo Lograr consistentemente alta calidad y
productividad en problemas cuya escala puede ser
grande y donde pueden ocurrir cambios
continuamente es el principal desafÃo de la
IngenierÃa del Software.
3Qué es el Software?
- Producto que construyen y diseñan los Ingenieros
de Software. - Comprende
- Programas
- Datos (texto, números, imágenes, sonidos, video)
- Documentación.
4CaracterÃsticas del Software
- Producto y vehÃculo.
- Lógico, no fÃsico.
- Se desarrolla, no se fabrica.
- No se desgasta, se deteriora.
- MayorÃa hecho a medida, tendencia a reusar.
5Aplicaciones del Software
- SW de Sistemas
- SW de Tiempo Real
- SW de Negocio o Gestión
- SW de IngenierÃa o CientÃfico
- SW Embebido o Empotrado
- SW de PC
- SW de IA
- SW basado en la Web
6Mitos del Software
- Propagaron confusión e información errónea.
Del administrador del proyecto Mitos del SW
Del usuario final o cliente Del desarrollador
7Mitos del Administrador
- Los estándares y procedimientos son toda la guÃa
que los Ing. de software necesitan. - Si contamos con la última generación de
computadoras tenemos todas las herramientas
necesarias. - Si fallamos en la planificación, podemos añadir
más programadores y adelantar el tiempo perdido.
8Mitos del Cliente
- Una declaración general de los objetivos del
cliente es todo lo necesario para empezar a
programar. - Los requisitos cambian continuamente, pero los
cambios pueden acomodarse fácilmente porque el
software es flexible.
9Mitos del Desarrollador
- Una vez que se escribió el programa y se lo hizo
funcionar, el trabajo del Ing. de software está
terminado. - No hay forma de comprobar la calidad del software
hasta no poder ejecutarlo en alguna máquina. - Lo único que se entrega al terminar el proyecto
es el programa funcionando.
10El Proceso de Desarrollo de Software
- Qué es?
- Marco de trabajo de tareas a realizar para
desarrollar SW de alta calidad. - Es sinónimo de IngenierÃa de Software?
- Define un enfoque para desarrollar software en
forma ingenieril pero la Ing. de Soft. comprende,
además, Métodos y Herramientas. -
11 Qué es la IngenierÃa del Software?
- TecnologÃa multicapa (Pressman)
Herramientas
Métodos
Capa fundamental
Proceso
Un enfoque de calidad
12El Proceso Visión Genérica
Ing. Sistemas Planificación Análisis de req.
Definición (QUE)
Desarrollo (COMO)
Diseño G. de Código Prueba
Mant. Correctivo Mant. Adaptativo Mant.
Perfectivo Mant. Preventivo o ReingenierÃa del
Software
Soporte (CAMBIOS)
13Modelo Lineal Secuencial
- Ciclo de vida clásico, modelo en cascada
- antiguo, usado
- Enfoque sistemático secuencial
14Modelo Lineal Secuencial
- CrÃticas
- Proyectos reales raras veces se ajustan al
modelo. - Raras veces cliente expone todos los req. de
entrada. - Producto operativo al final
- Paciencia (cliente) alta.
- Todo o nada.
- Consejo
- Usar cuando todos los requerimientos han sido
establecidos claramente de entrada o la
organización está familiarizada con el dominio.
15Modelo de Construcción de Prototipos
- No están claros de entrada los requisitos.
- Sistemas nuevos, poco conocimiento del dominio
- Reduce el riesgo.
- Iterativo. Hasta cuando se itera?
- Working prototype, desechar y empezar con
desarrollo de sistema.
16Modelo de Construcción de Prototipos
- CrÃticas
- Producto de mala calidad. Cliente cree que es el
sistema. - Peligro de familiarización con malas elecciones
iniciales (quick and dirty). - Consejo
- Usar cuando inicialmente no están claros los
requisitos. - Definir claramente al inicio las reglas de juego
con el cliente. - No ceder a presión del cliente.
17Modelo de Desarrollo Rápido de Aplicaciones (DRA)
- Lineal secuencial con ciclo extremadamente corto.
- Candidatos sistemas que se pueden modularizar gt
equipos de desarrollo paralelos. - Basado en el uso de componentes y T4G.
18Modelo DRA
Qué información? Quién la genera? A dónde va?
Identificación de objetos y relaciones
Descripciones de procesos de negocio para ABM de
objetos de MD
T4G Reusabilidad de Componentes
Prueba de componentes nuevos e interfaces.
Tiempo
lt-------------------------------60-90
dÃas------------------------gt
19Modelo DRA
- CrÃticas
- Proyectos grandes gt gran nro. de personas.
- Alto compromiso en tiempo.
- No apto para todo tipo de sistema (ej. no
modularizable, bajo reuso de componentes). - Desaconsejable cuando existen riesgos
tecnológicos altos.
20Modelos Evolutivos
- Se adaptan más fácilmente a los cambios
introducidos a lo largo del desarrollo. - Iterativos
- En cada iteración se obtienen versiones más
completas del SW. - Modelos Evolutivos
- Modelo Incremental
- Modelo en Espiral
- Modelo de Desarrollo Basado en Componentes
21Modelo Incremental
- Combina lineal secuencial (aplicado
repetidamente) con filosofÃa interactiva de
construcción de prototipos. - Cada iteración devuelve un Incremento o versión
operativa. - Útil cuando no se está seguro de cumplir con
plazos de tiempo o se tiene una fecha imposible
de cambiar.
22Modelo Incremental
23Modelo en Espiral
24Modelo en Espiral
- Permite usar el prototipado en todas las etapas
de la evolución para reducir el riesgo. - Mantiene el enfoque sistemático de los pasos
sugeridos por el lineal secuencial, pero lo
incorpora dentro de un marco iterativo más real. - CrÃticas
- DifÃcil de convencer a los clientes de que es
controlable. - Requiere mucha habilidad para el análisis de
riesgos y de esta habilidad depende su éxito.
25Desarrollo Basado en Componentes
- Basado en modelo en Espiral (evolutivo e
iterativo) TecnologÃas de Objetos. - Enfatiza la Reusabilidad.
26Modelo de Métodos Formales
- Usan notación rigurosa.
- Especificaciones sin ambigüedades.
- Útiles para sistemas crÃticos.
- Demostraciones formales de propiedades.
- Dificulta validación con cliente gt combinación
con otras técnicas semi-formales. - Buen nivel de manejo de Lógica y Algebra.
27Técnicas de Cuarta Generación (T4G)
- Herramientas que facilitan la realización de
especificaciones a alto nivel ? código fuente. - Basadas en Lenguajes de 4ta Generación (L4G).
- Ventajas Reducción en tiempo de desarrollo.
28Técnicas de Cuarta Generación (T4G)
- CrÃticas
- Código ineficiente.
- No mas fáciles de usar que L3G.
- Mantenimiento cuestionable.
- Consejo En sistemas grandes, aunque se usen T4G
se debe hacer análisis, diseño y pruebas.
29(No Transcript)
30El Proceso Modelo de Madurez de Capacidad
(CMM) http//www.sei.cmu.edu
- Nivel 1 Inicial
- Nivel 2 Repetible
- Nivel 3 Definido
- Nivel 4 Gestionado
- Nivel 5 Optimizado