Proceso de AprendizajeEl 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.
¿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.
Actividades EstructuralesUna 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.
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.
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.
Flujo del Proceso Paralelo.
Un flujo de proceso paralelo ejecuta una o más actividades en paralelo con otras.
Patrones de SW.Los mejores diseñadores en cualquier campo tienenuna habilidad extraña para reconocer patrones quecaracterizan 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.
¿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.
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.
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.
Modelo en CascadaDesventajas
➔ 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.
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 linealesen forma escalonada a medida que avanza el
calendario de actividades”.
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.
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.
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.
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.
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.
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.
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.
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.
¿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.
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.
Recommended