PROCESOS DE SOFTWARE
Alumno: Acosta Matías Gonzalo
Materia: Ingeniería de Software
PROCESOS DE SOFTWARE
Una serie de actividades que conducen a la
elaboración de un producto de software.
¿Qué tipo de producción se observa hoy en día?
1- Producción artesanal.
- 2- Transformar el desarrollo de software en
una disciplina de ingeniería.
ENTONCES . . .
CICLO DE VIDA DE DESARROLLO DE SISTEMAS,
METODOLOGÍAS, HERRAMIENTAS.
ACTIVIDADES FUNDAMENTALES
Especificación
Diseño e implementación
Validación
Evolución
ACTIVIDADES DE SOPORTE
Documentación
Manejo de configuraciones de software
PROCESOS DE SOFTWARE
LOS PROCESOS TAMBIÉN DEBEN INCLUIR . . .
Producto, Roles, Precondiciones y Postcondiciones.
CLASIFICACIÓN DE PROCESOS
Las actividades del
proceso se planean por
anticipado.
La planeación es
incremental.
Dirigidos por un plan Ágiles
¿CUÁL CONVIENE? O ¿CUÁL ES MEJOR?
- Sistema Empresarial -> Es probable que sea mejor un
proceso menos formal y flexible.
- Sistema Crítico -> Se requiere un proceso muy
estructurado.
Por Ejemplo:
ENTONCES . . .
Por lo general, se necesita encontrar un equilibrio entre
procesos dirigidos por un plan y procesos ágiles.
CONTENIDO
Modelos de proceso de software
Actividades del proceso
Como enfrentar el cambio
El Proceso Unificado Racional
MODELO DE PROCESO
Representación simplificada de este proceso.
Información parcial.
Abstracciones del proceso, para explicar diferentes
enfoques de desarrollo de software.
LOS MODELOS QUE VAMOS A VER SON:
Modelo en cascada (The waterfall model).
Desarrollo incremental.
Ingeniería de software orientada a la reutilización.
MODELO EN CASCADA
CARACTERÍSTICAS:
Las actividades principales se toman como fases
de proceso separadas.
La siguiente fase no comienza hasta que se
termina la fase previa.
ETAPAS:
Análisis y definición de requerimientos.
Diseño del sistema y del software.
Implementación y prueba de unidad.
Integración y prueba de sistema.
Operación y mantenimiento.
CONTRAS
Debido a los costos de producción y aprobación de documentos -> las iteraciones pueden ser onerosas e implicar un rediseño significativo.
Entonces . .
Es normal detener algunas partes del desarrollo y continuar con etapas posteriores.
¿Tendrá alguna consecuencia esto?
Es posible que el sistema no haga lo que el usuario desea.
Implica también una mala estructuración del sistema.
Tienen que establecerse un compromiso en etapa temprana del proceso.
VENTAJAS
Cada etapa produce una documentación que logra hacer
visible el proceso.
ENTONCES... ¿CUÁNDO USAR ESTE
MODELO?
Cuando los requerimientos se entiendan bien.
Cuando sea improbable un cambio radical durante
el desarrollo.
EXISTE UNA VARIANTE DE ESTE MODELO
Desarrollo de sistemas formales -> se crea un modelo matemático para especificar el sistema. Y luego se corrige este modelo mediante transformaciones matemáticas que preservan su consistencia.
¿Cuándo es útil esto? . . .
Cuando los requerimientos de seguridad, fiabilidad o protección son rigurosos.
DESARROLLO INCREMENTAL
CARACTERÍSTICAS
Las actividades están entrelazadas.
Desarrollo del software de manera incremental.
Los primeros incrementos incluyen la función mas
importante o urgente.
VENTAJAS CON RESPECTO AL MODELO EN
CASCADA
Se reduce el costo de adaptar requerimientos
cambiantes del cliente.
Mas fácil obtener retroalimentación del cliente
sobre el desarrollo.
Rápida entrega de un software útil.
INCONVENIENTES, DESDE LA
PERSPECTIVA ADMINISTRATIVA.
El proceso no es visible.
La estructura del sistema tiende a degradarse.
Parecen pocos
inconvenientes . . .
SI EL SISTEMA FUERA:
Grande
Complejo
De larga duración
Con diversos equipos de trabajo
Parecen pocos inconvenientes, pero . . .
El inconveniente se incrementa.!!!
INGENIERÍA DE SOFTWARE ORIENTADA A
LA REUTILIZACIÓN
CARACTERÍSTICAS
Basado en una cantidad significativa de
componentes reutilizables.
También puede haber reutilización informal.
ETAPAS
Análisis de componentes.
Modificación de requerimientos.
Diseño de sistema con reutilización.
Desarrollo e integración
TIPOS DE COMPONENTES QUE SE PUEDEN
REUTILIZAR
Servicios web
Colección de objetos desarrollados como un paquete
para ser integrados como framework de componentes.
Sistemas hechos a medida (stand-alone).
VENTAJAS DE ÉSTE PROCESO
Reduce: Software desarrollado, costo y riesgo.
Conduce a una entrega mas rápida del software.
¿Y LAS DESVENTAJAS?
No cubrir necesidades reales de los clientes.
Se pierde el control de la evolución del sistema.
ACTIVIDADES DEL PROCESO
Especificación del software
Definición de requerimientos.
Identificación de restricciones.
ESPECIFICACIÓN DEL SOFTWARE
Actividades principales:
Estudio de factibilidad.
Obtención y análisis de requerimientos.
Especificación de requerimientos.
Validación de requerimientos.
¿Éstas actividades siguen una secuencia estricta.?
No necesariamente, el análisis de requerimientos
continua en las siguientes actividades, dado que pueden
surgir nuevos requerimientos.
ACTIVIDADES DEL PROCESO
Diseño e implementación del software.
Descripción de la estructura del software.
Convertir la descripción en un ejecutable.
DISEÑO E IMPLEMENTACIÓN DEL
SOFTWARE
Actividades principales:
Diseño arquitectónico.
Diseño de interfaz.
Diseño de componentes.
Diseño de base de datos.
Las actividades del proceso de diseño están vinculadas,
es inevitable la retroalimentación de una actividad a otra.
ACTIVIDADES DEL PROCESO
Validación del software
Verificar que el sistema cumple con sus
especificaciones y las expectativas del cliente.
VALIDACIÓN DE SOFTWARE
Un plan de prueba. Aplicable, por ejemplo, a un
sistema crítico.
ACTIVIDADES DEL PROCESO
Evolución del software
Flexibilidad
La ingeniería de software como proceso evolutivo.
CÓMO ENFRENTAR EL CAMBIO
El cambio es inevitable en proyectos grandes de
software.
El sistema responde a presiones externas cambiantes.
Nuevos requerimientos.
Nuevas tecnologías.
Nuevas posibilidades de diseño e implementación.
Existen dos enfoques para reducir costos de rehacer:
Evitar el cambio -> Prototipo de sistema.
Tolerancia al cambio -> Entrega incremental.
CÓMO ENFRENTAR EL CAMBIO
Creación del prototipo
Características
Demuestra conceptos.
Permite encontrar mas sobre el problema y soluciones.
CÓMO ENFRENTAR EL CAMBIO
Etapas de creación del prototipo
Establecimiento de objetivos del prototipo.
De lo contrario los administradores o usuarios finales
pueden malinterpretar la función del mismo.
Definición de la funcionalidad del prototipo.
Decidir que poner y que dejar fuera, para reducir costos
y acelerar entrega.
Desarrollo del prototipo.
Evaluación del prototipo.
Capacitación del usuario.
Inconvenientes
Que el prototipo no se utilice igual que el sistema final.
Que el revisor talvez no sea el usuario final.
Que el prototipo sea lento -> no se prueba completo.
CÓMO ENFRENTAR EL CAMBIO
Otras consideraciones.
Si se entrega un prototipo en lugar de la versión final:
Puede ser imposible corregir el prototipo para cubrir
requerimientos no funcionales.(rendimiento, seguridad,
robustez y fiabilidad).
El prototipo no tiene la misma documentación que el
sistema final.
Será difícil y costoso mantener.
Se hacen mas flexibles los estándares de calidad de la
organización.
CÓMO ENFRENTAR EL CAMBIO
Entrega incremental
Características
Cada incremento proporciona un subconjunto de la funcionalidad del sistema.
Experimentar con el sistema ayuda a clarificar requerimientos, para posteriores incrementos.
CÓMO ENFRENTAR EL CAMBIO
Ventajas
Los clientes utilizan los primeros incrementos como prototipos -> adquieren experiencia.
Los clientes no tienen esperar hasta la entrega completa del sistema para ganar valor del mismo.
Se mantiene el beneficio del desarrollo incremental.
Los servicios mas importantes reciben mayores pruebas -> menores fallas en partes significativas.
Inconvenientes
Requerimientos no definidos en detalle -> Difícil identificar recursos que necesiten todos los requerimientos.
Desarrollo iterativo complicado cuando se diseña un sistema de reemplazo.
Algunos clientes requieren toda la especificación de antemano.
CÓMO ENFRENTAR EL CAMBIO
Modelo en espiral de Boehm
CÓMO ENFRENTAR EL CAMBIO
Características
Cada ciclo representa una fase del proceso de software.
Combina evitar el cambio, con la tolerancia al cambio.
Supone que los cambios son resultados de los riesgos.
Sectores
Establecimiento de objetivos.
Valoración y reducción del riesgo.
Desarrollo y validación.
Planeación.
La diferencia principal con otros modelos es el
reconocimiento explicito del riesgo.
REPASO
Procesos de
software
Actividades
principalesTienen
• Especificación
• Diseño e implementación
• Validación
• Evolución
Modelos de procesos
de software
Pueden representarse
como
• Modelo en cascada
• Desarrollo incremental
• Orientado a reutilización
Enfrentar el cambio
Deben
Enfoques
• Evitar el cambio -> Prototipos
• Tolerar el cambio -> Desarrollo incremental
Modelos
generales
Modelo en espiral de Boehm
PROCESO UNIFICADO RACIONAL
Características
Combina elementos de todos los procesos genéricos.
Buenas practicas en especificación y diseño.
Apoya creación de prototipos y entrega incremental.
Se describe desde tres perspectivas:
Dinámica -> muestra fases a través del tiempo.
Estática -> presenta actividades (disciplinas) del proceso.
Práctica -> sugiere buenas prácticas durante el proceso.
Fases
Concepción.
Elaboración.
Construcción.
Transición.
PROCESO UNIFICADO RACIONAL
Cada fase puede desarrollarse incrementalmente.
Todo el conjunto de fases puede expresarse de manera
incremental.
Visión dinámica:
PROCESO UNIFICADO RACIONAL
Visión estática
Flujos de trabajo de proceso centrales (Disciplinas)
Modelado del negocio -> casos de uso de la empresa
Requerimientos -> casos de uso para requerimientos
Análisis y diseño -> modelos arquitectónicos, de componentes,
de objetos y de secuencias
Implementación -> generación de código a partir de modelos
Pruebas
Despliegue -> instalación
Flujos de trabajo de apoyo
Administración de la configuración y del cambio -> gestión de
cambios
Administración del proyecto -> gestión de desarrollo
Entorno -> pone a disposición del equipo las herramientas
adecuadas
PROCESO UNIFICADO RACIONAL
Visión estática y dinámica
PROCESO UNIFICADO RACIONAL
Aclaraciones
Cada ciclo constituye una versión del sistema
Cada ciclo consta de cuatro fases
Cada fase se divide en iteraciones
Cada iteración desarrolla en secuencia un conjunto de
flujos de trabajo
El proceso unificado consiste en una serie de
flujos de trabajo que van desde los requisitos
hasta las pruebas.
PROCESO UNIFICADO RACIONAL
Buenas prácticas
Desarrollo de software de manera iterativa
Gestión de requerimientos
Usar arquitecturas basadas en componentes
Visualizar el software a partir de modelos
Verificar la calidad del software
Controlar los cambios del software