2. Proceso de Aprendizaje
El desarrollo es un proceso de aprendizaje humano:
➔ Es un diálogo entre personas, en el que el
conocimiento se convierte en software.
➔ Se genera interacción entre usuarios, diseñadores y
herramientas en evolución.
➔ Es un proceso que se repite y en el que la
herramienta que evoluciona sirve por sí misma como
medio para la comunicación: con cada nueva ronda
del diálogo se genera más conocimiento útil.
3. ¿Qué es un proceso del SW?
➔ Es una estructura para las actividades, acciones y
tareas que se requieren a fin de construir software
de alta calidad.
➔ El resultado es la reunión de conocimiento
recabado, depurado y organizado.
4. Actividades Estructurales
Una estructura general para la ingeniería de software
define cinco actividades estructurales:
1. Comunicación.
2. Planeación.
3. Modelado.
4. Construcción.
5. Despliegue.
Además, a lo largo del proceso se aplica: seguimiento
del proyecto, administración de riesgos,
aseguramiento de la calidad, configuración, revisiones
técnicas, entre otras.
5. Flujo del Proceso:
Lineal vs Iterativo
➔ Un flujo de proceso lineal ejecuta cada una
de las cinco actividades en secuencia.
➔ Un flujo de proceso iterativo puede repetir las
actividades antes de pasar a la siguiente.
6. Flujo del Proceso Evolutivo
➔ Un flujo de proceso evolutivo realiza las actividades
en forma “circular”.
➔ A través de las cinco actividades, cada circuito lleva
a una versión más completa del software.
7. Flujo del Proceso Paralelo.
Un flujo de proceso paralelo ejecuta una o más
actividades en paralelo con otras.
8. Patrones de SW.
Los mejores diseñadores en cualquier campo tienen
una habilidad extraña para reconocer patrones que
caracterizan un problema, y asociarlos a una solución.
Un ingeniero del software debe observar cada
oportunidad en la que puedan reutilizar patrones de
diseño existentes, en vez
de crear otros nuevos.
9. ¿Qué es un patrón de SW?
➔ Son la base para la búsqueda de soluciones a
problemas comunes del desarrollo de software.
➔ Proporcionan elementos reusables.
➔ Estos deben ser utilizados sólo si poseemos el mismo
problema o similar que el patrón pueda solucionar.
10. Patrones del Proceso.
➔ Cada equipo de software se enfrenta a problemas
conforme avanza el proyecto.
➔ Si se demostrara que existen soluciones fáciles
para dichos problemas, sería útil para el equipo
abordarlos y resolverlos rápidamente.
➔ Un patrón del proceso: describe un problema, y
sugiere una o más soluciones para el mismo.
➔ Al combinar patrones, un equipo resuelve
problemas y construye el proceso que mejor
satisfaga las necesidades.
11. Modelo en Cascada.
➔ Tenemos la tendencia de pensar que el orden
es el estado ideal de la naturaleza.
➔ El modelo de la cascada, sugiere un enfoque
secuencial, que comienza con la especificación de
los requerimientos y avanza hasta concluir con el
software terminado .
➔ El progreso fluye de arriba hacía abajo, como una
cascada.
13. Modelo en Cascada
Desventajas
➔ Es raro que un proyecto real sigan el flujo
secuencial propuesto por el modelo.
➔ A menudo, es difícil para el cliente enunciar al
principio todos los requerimientos.
➔ El cliente debe tener paciencia:
No se tendrá una versión funcional hasta que el
proyecto está avanzado.
14. El Modelo Incremental.
➔ En muchas situaciones existe una necesidad
de dar rápidamente cierta funcionalidad de software
a los usuarios y aumentarla en las entregas
posteriores.
➔ En tales casos, se elige un modelo de proceso
diseñado para producir el software en incrementos.
“El modelo incremental aplica secuencias lineales
en forma escalonada a medida que avanza el
calendario de actividades”.
15. El Modelo Incremental.
Cada secuencia lineal produce “incrementos” de
software susceptibles de entregarse. (versiones)
Ejemplo: Un procesador de textos:
➔ En el primer incremento tendrá las funciones
básicas de administración de archivos y edición
➔ En el segundo dará herramientas más sofisticadas
de edición y producción de documentos
➔ En el tercero habrá separación de palabras y
revisión de la ortografía.
16.
17. Modelos Evolutivos.
➔ El software, como todos los sistemas
complejos, evolucionan en el tiempo.
➔ Los plazos apretados del mercado hacen que sea
imposible la terminación de un software perfecto.
➔ Muchas veces la competencia obliga a lanzar una
versión funcional.
➔ En esta situación se necesita un modelo diseñado
para adaptarse a un producto que evoluciona con
el tiempo.
19. El Prototipo.
➔ Es frecuente que un cliente defina algunos
objetivos, pero sin estar seguro de los detalles del
sistema.
➔ En estas situaciones, el paradigma de hacer
prototipos ofrece un enfoque efectivo.
Ventajas:
1. Ayuda a mejorar la comprensión de lo que hay que
elaborar cuando los requerimientos no están claros.
2. Permite acelerar el proceso a partir de un prototipo
funcional.
20. El Prototipo.
➔ El prototipo permite tener el primer contacto con el
producto.
➔ La mayoría de los prototipos se construyen para
ser desechados una vez que el producto esté listo.
➔ En cambio otros pueden ser evolutivos: finalmente
se transforman en el sistema final.
➔ En muchas ocasiones trae beneficios: los usuarios
y desarrolladores interactúan y conocen mejor al
proyecto a crear.
21. El Prototipo. Desventajas.
➔ Los usuarios ven una versión funcional del
software, sin darse cuenta que no se tuvieron en
cuenta las recomendaciones de calidad,
rendimiento, mantenimiento, etc.
➔ El prototipo puede no satisfacer al cliente: es una
situación que debe ser manejada con
profesionalismo de forma a entender que el
producto final será distinto.
22. El modelo espiral.
➔ Las actividades se ordenan en una espiral, en la
que cada bucle representa un conjunto de
actividades.
➔ Consiste en una serie de ciclos que se repiten en
forma de espiral, comenzando desde el centro.
➔ Permite hacer un desarrollo rápido de versiones.
23.
24. El modelo espiral.
Desventajas.
El modelo espiral puede adaptarse para aplicarse a
lo largo de toda la vida del software.
Al igual que otros paradigmas, no es perfecto, y
posee desventajas:
1. Incertidumbre en el número de vueltas necesarias.
2. Es difícil convencer a los clientes.
3. Demanda mucha experiencia en la evaluación del
riesgo y se basa en ella para llegar al éxito.
4. Habrá problemas si algún riesgo importante no se
descubre y administra a tiempo.
25. Ingeniería del Software
Basada en Componentes
➔ Los programadores han reutilizado ideas,
abstracciones y procesos desde los comienzos.
➔ Hoy en día, los sistemas complejos y de alta
calidad basados en computadora se deben
construir en períodos cortos, situación que se
mitiga con un enfoque de reutilización más
organizado.
26. ¿Qué es la ISBC?
Es un proceso que se centra en el diseño y
construcción de sistemas utilizando componentes
de software reutilizables.
Objetivos de la ISBC:
➔ Desarrollar sistemas a partir de componentes ya
construidos en el pasado.
➔ Desarrollar nuevos componentes como entidades
reusables.
➔ Mantener y evolucionar el sistema a partir de la
adaptación y reemplazo de sus componentes.
27. Resumen y Conclusiones
➔ El desarrollo es un proceso de aprendizaje
humano, en donde las personas se comunican y
transforman el conocimiento en software.
➔ Un proceso del SW es una estructura para las
actividades, acciones y tareas que se requieren a
fin de construir software de alta calidad.
➔ El software de una empresa, y todos los sistemas
complejos, tienden a evolucionar en el tiempo.