SlideShare a Scribd company logo
1 of 152
Ph.D. Franklin Parrales 1
22/10/2021
Proceso de Software Carrera de Software
MODELOS DE PROCESO
Unidad 2
Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo
para uso de los cursos de Proceso de Software
Ph.D. Franklin Parrales 2
22/10/2021
Proceso de Software Carrera de Software
Objetivo general de la Unidad 2
Caracterizar el modelado de procesos identificando los
factores claves del proceso para definir el alcance de los
proyectos de software.
Ph.D. Franklin Parrales 3
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes.
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 4
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes.
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 5
22/10/2021
Proceso de Software Carrera de Software
Introducción a los modelos de proceso
• Los estándares establecen los diferentes procesos implicados
a la hora de desarrollar y mantener un sistema desde que
surge la idea o necesidad de desarrollar las aplicaciones
hasta que éstas se retiran de explotación.
– Sin embargo, ninguno impone un modelo de procesos concreto
(modelo de ciclo de vida) ni cómo realizar las diferentes actividades
incluidas en cada proceso, por lo que cada empresa deberá utilizar
los métodos, técnicas y herramientas que considere oportuno.
• Por su naturaleza, los modelos son simplificaciones; por lo
tanto, un modelo de procesos del software es una
simplificación o abstracción de un proceso real.
• Podemos definir un modelo de procesos del software como
una representación abstracta de alto nivel de un proceso
software.
Ph.D. Franklin Parrales 6
22/10/2021
Proceso de Software Carrera de Software
Introducción a los modelos de proceso
• Cada modelo es una descripción de un proceso software que
se presenta desde una perspectiva particular.
– Alternativamente, a veces se usan los términos ciclo de
vida y Modelo de ciclo de vida.
• Cada modelo describe una sucesión de fases y un
encadenamiento entre ellas.
– Según las fases y el modo en que se produzca este
encadenamiento, tenemos diferentes modelos de proceso.
• Un modelo es más adecuado que otro para desarrollar un
proyecto dependiendo de un conjunto de características de
éste.
• Existe una gran variedad de modelos diferentes entre los que
tenemos los que se estudiarán en esta unidad.
Ph.D. Franklin Parrales 7
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes.
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 8
22/10/2021
Proceso de Software Carrera de Software
Tipos de modelos
• Modelos tradicionales: Formados
por un conjunto de fases o
actividades en las que no tienen en
cuenta la naturaleza evolutiva del
software
– Clásico, lineal o en cascada
– Estructurado
– Basado en prototipos
– Desarrollo rápido de aplicaciones
(RAD)
• Modelos evolutivos: Son modelos
que se adaptan a la evolución que
sufren los requisitos del sistema en
función del tiempo
– En espiral
– Evolutivo
– Incremental
– Modelo de desarrollo concurrente
• Modelos orientados a la
reutilización
– Basado en componentes
– Proceso Unificado
• Procesos ágiles
– Programación extrema (XP)
– Desarrollo de software
adaptativo
– Scrum, Crystal …
Ph.D. Franklin Parrales 9
22/10/2021
Proceso de Software Carrera de Software
Modelo Codificar y corregir
▪ Este es el modelo básico
utilizado en los inicios del
desarrollo de software.
▪ Contiene dos pasos:
◼ Escribir código.
◼ Corregir problemas en el
código.
▪ Primero implementar algo
de código y luego pensar
acerca de requisitos,
diseño, validación, y
mantenimiento
Ph.D. Franklin Parrales 10
22/10/2021
Proceso de Software Carrera de Software
Modelo Poner la cola al burro
• Se coge a uno o varios
informáticos,
• Se les muestra más o
menos el problema,
• Se les deja solos en un
cuarto a oscuras,
• Transcurrido un tiempo
se abre la puerta.
Ph.D. Franklin Parrales 11
22/10/2021
Proceso de Software Carrera de Software
Lo sorprendente es que a veces funciona…
• Las empresas que desean obtener software económico y
rápidamente lo utilizan, con las siguientes mejoras:
– Se contrata a personas que no tengan experiencia
– Se les dan pocos recursos, son novatos y no saben exigir
– Se suele utilizar la técnica de desprecio:
• “siempre tarde y encima no hace lo que queremos”
» (imaginábamos qué haría, aunque no lo habíamos dicho)
• Los resultados son curiosos:
– Se suele subcontratar a cualquier precio con empresas
externas, “Seguro que ellos saben hacer las cosas”
• Cuando funciona existe mucha incertidumbre sobre el como o
por que ha funcionado.
– Parece claro que cuando funciona, los informáticos sabían que se
esperaba del producto, sabían que se debía hacer, estaban muy
motivados y les gusta el trabajo que están haciendo. Pero es difícil
prever que esto ocurrirá.
Ph.D. Franklin Parrales 12
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes.
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 13
22/10/2021
Proceso de Software Carrera de Software
Modelo en cascada
• Conocido también como modelo lineal o clásico
• Versión original se debe a W. W. Royce [Royce, 1970], apareciendo
después numerosos refinamientos
• Características
– Está compuesto por una serie de
fases que se ejecutan
secuencialmente
– Obtención de documentos como
criterio de finalización de fase
• Problemas de la progresión
secuencial
– Desconocimiento de las necesidades
por parte del cliente
– Inestabilidad de los requisitos
– No se ven resultados hasta muy
avanzado el proyecto
– Efecto big bang próximo a la entrega
Ph.D. Franklin Parrales 14
22/10/2021
Proceso de Software Carrera de Software
Modelo en cascada
Definición
Análisis
Diseño
Desarrollo
Pruebas
Mantenim.
Definición de requisitos:
• Las restricciones y metas del sistema se definen a partir de la
interacción con el interesado.
• Se comprende la naturaleza de la aplicación y el dominio de
información, así como su funcionalidad, rendimiento e interconexión
• Se reúnen todos los requisitos que debe cumplir el software
Ph.D. Franklin Parrales 15
22/10/2021
Proceso de Software Carrera de Software
Definición
Análisis
Diseño
Desarrollo
Pruebas
Mantenim.
Se concentra en cuatro características básicas:
Estructura de datos
Arquitectura del software
Representaciones de interfaz
Detalle procedimental (algoritmo)
Modelo en cascada
Ph.D. Franklin Parrales 16
22/10/2021
Proceso de Software Carrera de Software
Modelo en cascada
Definición
Análisis
Diseño
Desarrollo
Pruebas
Mantenim.
• Se llama también Implementación
• Generación de código entendible por la máquina
• Actualmente se investiga mucho sobre la manera
de generar código automáticamente
Ph.D. Franklin Parrales 17
22/10/2021
Proceso de Software Carrera de Software
Modelo en cascada
Definición
Análisis
Diseño
Desarrollo
Pruebas
Mantenim.
• Proceso de depuración de programas
• Chequear la validez de las sentencias
• Pruebas para detectar errores, asegurando que a
partir de los datos de entrada si se genere la salida
deseada
Ph.D. Franklin Parrales 18
22/10/2021
Proceso de Software Carrera de Software
Modelo en cascada
Definición
Análisis
Diseño
Desarrollo
Pruebas
Mantenim.
• Corrección de errores no detectados en la etapa de
pruebas
• Posibles mejoras funcionales debidas a nuevos
requerimientos del cliente
• En esta fase se vuelven a aplicar todas las etapas
anteriores sobre el software existente
Ph.D. Franklin Parrales 19
22/10/2021
Proceso de Software Carrera de Software
Desarrollo en Cascada (Sommerville)
[Ingeniería de Software. Sommerville I.., 2002]
Ph.D. Franklin Parrales 20
22/10/2021
Proceso de Software Carrera de Software
Modelo en cascada
Definición
Análisis
Diseño
Desarrollo
Pruebas
Mantenim.
LIMITACIONES
• En la realidad no estrictamente secuencial (se traslapan las
etapas)
• El interesado debería exponer los requisitos en la etapa inicial,
pero en realidad él lo hace a través de todo el proceso y esto
complica las cosas
• La primera versión del software llega al final del proceso, a veces
el afán del cliente hace que la aplicación final no cumpla con los
requerimientos
Ph.D. Franklin Parrales 21
22/10/2021
Proceso de Software Carrera de Software
Modelo en “V”
• Es una evolución del
anterior. En este, la
verificación se desglosa
en etapas de nivel de
abstracción creciente.
Análisis y
Definición de los
Requerimientos
Diseño de la
Arquitectura del
Sistema
Diseño Detallado Testeo de cada
unidad (unit test)
Instalación,
Operación y
Mantenimiento
Prueba de
Aceptación
Prueba de
Integración
Implementación de
cada unidad
Plan de Pruebas
para Cada Unidad
Plan de Pruebas
de Integración
Plan de Pruebas de
Aceptación
❑ En cada etapa de
diseño se crea un
plan de pruebas,
que es el que guía la
etapa de validación
que le corresponde.
Ph.D. Franklin Parrales 22
22/10/2021
Proceso de Software Carrera de Software
Modelos Waterfall y “V” en la Práctica
Análisis y
Definición de los
Requerimientos
Diseño de la
Arquitectura del
Sistema
Diseño Detallado
Implementación
Integración y
Verificación
Instalación,
Operación y
Mantenimiento
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Corregir
fallas
Cambiar un
requerimiento
Cambiar un
requerimiento
Cambiar un
requerimiento
Se acumulan correcciones hacia el final,
con la consiguiente incertidumbre
(ej., no se tiene certeza sobre cuánto
falta hacer, porque no se sabe
cuánto van a demandar
los bloques azules)
Ph.D. Franklin Parrales 23
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes.
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 24
22/10/2021
Proceso de Software Carrera de Software
Modelo Incremental
• Aplica el enfoque lineal secuencial
escalonadamente
• Incrementos parciales de la herramienta completa
(versiones)
• Cada incremento agrega funcionalidad adicional o
mejorada sobre el sistema
• Cada etapa debe cumplir con los requisitos de las
desarrolladas
Incremento 2
Incremento n
... ... ... ...
Análisis Diseño Código Pruebas
Análisis Diseño Código Pruebas
Análisis Diseño Código Pruebas
Incremento 1
Ph.D. Franklin Parrales 25
22/10/2021
Proceso de Software Carrera de Software
Modelo Incremental
• Ventajas:
– Los clientes no tienen que esperar hasta que el sistema se
entregue completamente para comenzar a hacer uso de él.
– Los clientes pueden usar los incrementos iniciales como
prototipo para precisar los requerimientos posteriores del
sistema.
– Minimización del riesgo de falla en el proyecto porque los
errores se van corrigiendo progresivamente.
• Problemas:
– Adaptación de los requisitos del cliente para lograr
incrementos pequeños (no mas de 20.000 líneas de
código) que añadan funcionalidad al sistema.
• Nota: Una evolución de este enfoque se conoce como
Programación Extrema (XP-Extreme Programming).
Ph.D. Franklin Parrales 26
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes.
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 27
22/10/2021
Proceso de Software Carrera de Software
Modelos evolutivos
• Los modelos
evolutivos son
iterativos.
• Se caracterizan por la
manera en la que
permiten desarrollar
versiones cada vez
más completas del
software.
Communicat ion
Quick plan
Const ruct ion
of
prot ot ype
Mode ling
Quick de sign
Delive ry
& Fe e dback
Deployment
comunicación
Plan
rápido
Modelado
Diseño
rápido
Construcción
del prototipo
Despliegue
Entrega y
Retroalimentación
Ph.D. Franklin Parrales 28
22/10/2021
Proceso de Software Carrera de Software
Recolección
y refinamiento de
requisitos
Diseño
rápido
Producto
Refinamiento
del prototipo
Evaluación del
prototipo por
el cliente
Construcción
del prototipo
• basado en:
– desarrollo de una implementación
inicial
– exposición a comentarios y crítica del
usuario
– refinamiento a través de diferentes
versiones hasta llegar a un sistema
adecuado
dos tipos:
prototipado evolutivo:
trabajo con cliente para explorar sus
requerimientos y entregar un sistema
final
evolución continua del prototipo
mediante la agregación de funciones
y características propuestas por el
cliente
prototipos desechables
comprensión de las necesidades del
cliente
desarrollo de una definición
mejorada de los requerimientos del
sistema
prototipos centrados en la
experimentación de requisitos poco
claros o complejos
problemas
prisas del cliente (utilización del prototipo
como sistema final
pasar elecciones debidas al prototipo a la
implementación final (entorno, sistema
operativo,...)
estructura deficiente
evolución del proceso difícil de gestionar
herramientas y técnicas especiales
poco adecuado para grandes sistemas
Ph.D. Franklin Parrales 29
22/10/2021
Proceso de Software Carrera de Software
Prototipado evolutivo
(ciclo de vida iterativo)
• Enfoque de desarrollo que se utiliza cuando no se conoce
con seguridad lo que se quiere construir
• Se comienza diseñando e implementando las partes más
destacadas del sistema
• La evaluación del prototipo proporciona la realimentación
necesaria para aumentar y refinar el prototipo
• El prototipo evoluciona y se transforma en el sistema final
Concepto
inicial
Diseño e
implementación
del prototipo
inicial
Refinar el prototipo
hasta que sea
aceptable
Completar y
entregar el
prototipo
Ph.D. Franklin Parrales 30
22/10/2021
Proceso de Software Carrera de Software
Modelo Espiral
• Fue propuesto inicialmente por B. Boehm [Boehm, 1986,
1988]
• Utilización de ciclos en lugar de sucesión de actividades.
• Facilita el desarrollo rápido de versiones incrementales
de software.
Ph.D. Franklin Parrales 31
22/10/2021
Proceso de Software Carrera de Software
Modelo Espiral
• Una de las principales ventajas de este modelo de desarrollo
es que considera directamente los riesgos técnicos en
todas las etapas del proyecto, reduciéndolos antes de que se
conviertan en problemáticos. Además, este modelo puede
adaptarse y aplicarse a lo largo de la vida del software.
• Los procesos que se llevan a cabo dentro de un modelo en
espiral son los siguientes:
– Comunicación con el cliente : Tareas para dinamizar la
interacción desarrollador – cliente.
– Planificación : Definición de recursos, tiempo y otra información
relacionada con el proyecto.
– Análisis de Riesgos : Evaluación de riesgos técnicos y de gestión.
– Ingeniería : Construcción de una o más representaciones de la
aplicación.
– Construcción y Adaptación : Tareas de construcción, pruebas e
instalación de la aplicación.
– Evaluación del Cliente : Reacción del cliente frente a la aplicación
obtenida a partir de la fase de ingeniería y de construcción.
Ph.D. Franklin Parrales 32
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 33
22/10/2021
Proceso de Software Carrera de Software
Modelos concurrentes
• Permite que un equipo de
software represente
elementos iterativos y
concurrentes de cualquiera
de los modelos de proceso
descritos en esta unidad.
• La figura muestra la
representación esquemática
de una actividad de
ingeniería de software
dentro de la actividad de
modelado con el uso del
enfoque de modelado
concurrente
Ph.D. Franklin Parrales 34
22/10/2021
Proceso de Software Carrera de Software
Modelos concurrentes
• El modelado concurrente define una serie de eventos que
desencadenan transiciones de un estado a otro para cada
una de las actividades, acciones o tareas de la ingeniería de
software.
• El modelado concurrente es aplicable a todos los tipos de
desarrollo de software y proporciona un panorama apropiado
del estado actual del proyecto.
• En lugar de confinar las actividades, acciones y tareas de la
ingeniería de software a una secuencia de eventos, define
una red del proceso.
• Cada actividad, acción o tarea de la red existe
simultáneamente con otras actividades, acciones o tareas.
• Los eventos generados en cierto punto de la red del proceso
desencadenan transiciones entre los estados.
Ph.D. Franklin Parrales 35
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 36
22/10/2021
Proceso de Software Carrera de Software
Desarrollo basado en componentes
• Configura aplicaciones a partir de componentes de software
preparados [Pressman, 2002]
• Enfoque iterativo y evolutivo [Nierstrasz, 1999]
• Se enmarca en un contexto más amplio: ingeniería del
software basada en componentes
Análisis de
riesgos
Planificación
Comunicación
con el cliente
Buscar
componentes
en bibliotecas
Construir la
iteración del
sistema
Extraer
componentes
disponibles
Poner nuevos
componentes
en biblioteca
Evaluación
del cliente
Construcción y
adaptación de la
ingeniería
Construir
componentes
no disponibles
Identificar
componentes
candidatos
Ph.D. Franklin Parrales 37
22/10/2021
Proceso de Software Carrera de Software
Desarrollo basado en componentes
• Un componente es una unidad ejecutable e independiente
• Los componentes publican su interfaz y todas las
interacciones son a través de ella
– Una interfaz que se suministra define los servicios que ofrece el
componente
– Una interfaz que se solicita especifica qué servicios deben estar
disponibles
• Para el desarrollo con reutilización:
– Debe ser posible encontrar los componentes reutilizables
apropiados
– Se debe confiar en que los componentes que se utilizan se
comportan conforme a lo especificado y son fiables
– Los componentes deben tener documentación asociada para
ayudar a comprenderlos y adaptarlos a una nueva aplicación
Ph.D. Franklin Parrales 38
22/10/2021
Proceso de Software Carrera de Software
Ingeniería del software basada en
componentes
Análisis del
Desarrollo de
la arquitectura
Desarrollo de
componentes
Ingeniería del dominio
dominio
del software
Modelo del
dominio
reutilizables
Modelo
estructural
Artefactos/
componentes
reutilizables
Desarrollo
basado en
de la reserva
Cualificación de
componentes
Actualización de
componentes
componentes
Diseño
arquitectónico
Análisis
Adaptación de
componentes
Composición de
Software de
aplicaciones
componentes
Ingeniería de
componentes Comprobación
El objetivo de la ingeniería del
dominio es identificar, construir,
catalogar y diseminar un
conjunto de componentes de
software que tienen aplicación
en el software actual y futuro
dentro de un dominio de
aplicación particular
[Presman, 2001]
➢ Ingeniería del dominio
➢ Desarrollo basado en
componentes
Ph.D. Franklin Parrales 39
22/10/2021
Proceso de Software Carrera de Software
Actividades de la ingeniería del
dominio
• Análisis del dominio:
– Definir el dominio a investigar
– Categorizar los elementos extraídos del dominio
– Recoger una muestra representativa de las aplicaciones del dominio
– Analizar cada aplicación de la muestra
– Desarrollar un modelo de análisis para los objetos
– Definir un lenguaje del dominio: hace posible la especificación y construcción
posterior de aplicaciones dentro del dominio
• Modelo del dominio: resultado de las actividades anteriores
• Modelado estructural: Enfoque de ingeniería basado en tramas que
opera efectuando la suposición consistente de que todo dominio de
aplicación posee tramas repetidas (de función, de datos y de
comportamiento) que tienen un potencial de reutilización
– Todo dominio de aplicación se puede caracterizar por un modelo estructural
– Un modelo estructural es un estilo arquitectónico reutilizable
– Punto de estructura: estructura bien diferenciada dentro de un modelo
estructural (genéricos: aplicaciones cliente, bases de datos, motores de cálculo,
función de reproducción de informes, editor de aplicaciones)
Ph.D. Franklin Parrales 40
22/10/2021
Proceso de Software Carrera de Software
Actividades del desarrollo basado en
componentes
• Cualificación de componentes: Asegura que un
componente candidato llevará a cabo la función necesaria,
encajará en el estilo arquitectónico del sistema y tendrá la
calidad requerida
• Adaptación de componentes: Elimina conflictos de
integración
– Enmascaramiento de caja blanca, gris o negra
• Composición de componentes: Ensambla componentes
cualificados, adaptados y diseñados para la arquitectura
establecida
• Ingeniería de componentes: Diseño de componentes para
su reutilización
• Actualización de componentes: El software actual se
reemplaza a medida que se dispone de nuevas versiones de
componentes
Ph.D. Franklin Parrales 41
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 42
22/10/2021
Proceso de Software Carrera de Software
Métodos Ágiles
• Surgen como una reacción frente a las
metodologías tradicionales
– Frente a la idea de que el desarrollo de
software es consistente, fiable, predecible y
medible
– Aceptar que no siempre es así y encontrar la
mejor manera de aceptar los cambios
• No proponen nuevas técnicas, sólo una
forma distinta de afrontar el desarrollo de
software
Ph.D. Franklin Parrales 43
22/10/2021
Proceso de Software Carrera de Software
Manifiesto Ágil
• Firmado por los principales críticos de las
metodologías tradicionales (y creadores de
algunos de los métodos ágiles más populares)
• 4 valores básicos:
– Individuos y su interacción frente a procesos y
herramientas
– Software que funciona frente a documentación
exhaustiva
– Colaboración con el cliente frente a contratos
– Respuesta al cambio frente a seguimiento de un plan
Ph.D. Franklin Parrales 44
22/10/2021
Proceso de Software Carrera de Software
Manifiesto Ágil: 12 principios
1. Nuestra mayor prioridad es satisfacer al cliente
mediante la entrega temprana y continua de software
con valor.
2. Aceptamos que los requisitos cambien, incluso en
etapas tardías del desarrollo. Los procesos Ágiles
aprovechan el cambio para proporcionar ventaja
competitiva al cliente.
3. Entregamos software funcional frecuentemente,
entre dos semanas y dos meses, con preferencia al
periodo de tiempo más corto posible.
4. Los responsables de negocio y los desarrolladores
trabajamos juntos de forma cotidiana durante todo el
proyecto.
Ph.D. Franklin Parrales 45
22/10/2021
Proceso de Software Carrera de Software
Manifiesto Ágil: 12 principios
5. Los proyectos se desarrollan en torno a individuos
motivados. Hay que darles el entorno y el apoyo que
necesitan, y confiarles la ejecución del trabajo.
6. El método más eficiente y efectivo de comunicar
información al equipo de desarrollo y entre sus
miembros es la conversación cara a cara.
7. El software funcionando es la medida principal de
progreso.
8. Los procesos Ágiles promueven el desarrollo
sostenible. Los promotores, desarrolladores y
usuarios debemos ser capaces de mantener un ritmo
constante de forma indefinida.
Ph.D. Franklin Parrales 46
22/10/2021
Proceso de Software Carrera de Software
Manifiesto Ágil: 12 principios
9. La atención continua a la excelencia técnica y al
buen diseño mejora la Agilidad.
10.La simplicidad, o el arte de maximizar la cantidad
de trabajo no realizado, es esencial.
11.Las mejores arquitecturas, requisitos y diseños
emergen de equipos auto-organizados.
12.A intervalos regulares el equipo reflexiona sobre
cómo ser más efectivo para a continuación
ajustar y perfeccionar su comportamiento en
consecuencia.
Ph.D. Franklin Parrales 47
22/10/2021
Proceso de Software Carrera de Software
Prácticas Básicas en Métodos Ágiles
(Cockburn)
• Entre 2 y 8 personas trabajando juntas
– Comunicación y comunidad
• Usuarios expertos junto al equipo de desarrollo
– Realimentación continua
• Iteraciones cortas
– Tres meses como mucho, para favorecer pruebas y
depuración
• Pruebas automáticas
– Las pruebas unitarias y funcionales estabilizan el
código y permiten mejorarlo
• Desarrolladores expertos
– Mejora la velocidad de desarrollo entre 2 y 10 veces
Ph.D. Franklin Parrales 48
22/10/2021
Proceso de Software Carrera de Software
Métodos ágiles más utilizados
• eXtreme Programming (XP)
• Scrum
• Crystal
• Lean Development
• Kanban
• Feature Driven Development
• Dynamic Systems Development Method
• Adaptive Software Development
• Pragmatic Programming
• RUP?
Ph.D. Franklin Parrales 49
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming (Beck)
• El más popular de los métodos ágiles
• Versiones con incrementos muy pequeños
• Evolución constante del código
• 5 valores:
– Simplicidad
– Comunicación
– Retroalimentación
– Coraje
– Respeto
Ph.D. Franklin Parrales 50
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming
• Simplicidad
– Se simplifica el diseño para agilizar el desarrollo
y facilitar el mantenimiento
– Para mantener la simplicidad es necesaria la
refactorización del código
– Simplicidad en la documentación: el código debe
comentarse en su justa medida
– Autoría colectiva del código y la programación
por parejas
La refactorización de código tiene el objetivo de que los métodos puedan
leerse de la manera más fácil posible.
En el mejor de los casos, los programadores externos que lean el código
deberían poder captar la lógica interna del método.
Ph.D. Franklin Parrales 51
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming
• Comunicación
– Para los programadores el código comunica
mejor cuanto más simple sea
– Las pruebas unitarias describen el diseño de
las clases y los métodos al mostrar ejemplos
concretos de cómo utilizar su funcionalidad
– Los programadores se comunican gracias a
la programación por parejas
– La comunicación con el cliente es fluida
porque forma parte del equipo de desarrollo
Ph.D. Franklin Parrales 52
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming
• Retroalimentación:
– La opinión del cliente se conoce en tiempo
real porque está integrado en el proyecto
– Los ciclos cortos muestran resultados
rápidamente
– El código y la programación por parejas
también son fuente de retroalimentación
Ph.D. Franklin Parrales 53
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming
• Coraje:
– Diseñar y programar para hoy, no para
mañana
– Refactorizar cuando sea necesario
– Desechar código obsoleto o complejo
Ph.D. Franklin Parrales 54
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming
• Respeto:
– Propiedad colectiva del código
– Alta calidad
Ph.D. Franklin Parrales 55
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming
• 12 reglas
1. El juego de la
planificación
2. Entregas pequeñas
3. Metáfora
4. Diseño simple
5. Pruebas
6. Refactorización
7. Programación en
parejas
8. Integración continua
9. Propiedad colectiva
del código
10. Cliente presente
11. Semanas de 40
horas
12. Espacios comunes
Ph.D. Franklin Parrales 56
22/10/2021
Proceso de Software Carrera de Software
eXtreme Programming
• Roles
– Programador: código simple, pruebas
– Cliente: historias, pruebas funcionales,
prioridades
– Tester: ayuda con las pruebas, mantiene pruebas
funcionales y analiza resultados
– Tracker: retroalimentación, estimaciones, evalúa
objetivos
– Coach: responsable del proceso
– Consultor: externo, conocimientos técnicos
– Manager: decisiones
Ph.D. Franklin Parrales 57
22/10/2021
Proceso de Software Carrera de Software
El Equipo XP (Programación Extrema)
• “Clientes”
– Definen el producto
– Incluyen un dueño del producto
• Que es el responsable de la visión del producto
• “Programadores”
– Escriben el código, diseñan la arquitectura, etc.
• Validadores
– “Investigan”, en busca de defectos
– Son “optativos”, porque los clientes y programadores
pueden cumplir sus funciones
• Entrenadores
– Un entrenador de programadores
• Programador experimentado, para atender consultas, liderar en
las decisiones importantes, y evaluar lo que hacen los otros
– Si hace falta, un administrador de proyecto
• No es imprescindible porque el equipo se auto-organiza
• Otros
– Si hacen falta: escritores, analistas ISO 9000, etc.
Ph.D. Franklin Parrales 58
22/10/2021
Proceso de Software Carrera de Software
Los “Clientes”
• Son los responsables de establecer los
requerimientos del sistema
– Utilizando las estimaciones de costo que les proveen
los “programadores”
• Entre los “clientes” pueden haber:
– Clientes reales de la empresa
– Expertos de dominio (ej., analistas de negocios,
científicos)
– Diseñadores de interfaces al usuario
• Proporción típica: 1 cada 3 programadores
– O los necesarios para mantener ocupados a los
programadores
El Equipo XP
Ph.D. Franklin Parrales 59
22/10/2021
Proceso de Software Carrera de Software
Plan del Release
• Release es cada “vendible” que se le entrega al
usuario final
• Se aconseja que demore unos tres meses como
máximo
• Empieza con una planificación, a cargo de los
“clientes”
– A cada requisito se le llama historia de usuario
• Ej.: Un usuario que necesita tal cosa, opera el producto de tal
manera, obtiene tal respuesta, etc. Casos puntuales y
concretos.
• …pero dejando los detalles para después
– Los “programadores” los asisten, estimando el esfuerzo (o
sea, tiempo) que demoraría cada historia
• Para que puedan decidir qué dejar para un próximo release
– Obtienen así el release plan
Programación Extrema
Ph.D. Franklin Parrales 60
22/10/2021
Proceso de Software Carrera de Software
Plan de la Iteración
• El release se divide en iteraciones
– Unas 1 a 3 semanas c/u
– Luego de cada iteración, se tiene un producto
demostrable
• …para ser evaluado por los “clientes” y verificado por los
validadores
• Al principio de cada iteración, los “clientes”
determinan qué historias se van a hacer en ella
– Empezando por las que son clave; la optimización va
al final
– Este plan puede ser modificado en base a las
estimaciones (de costo) de los programadores
• Queda así establecido lo que hace cada equipo
en el resto de la iteración:
– Los “programadores” implementan esas historias
– Los “clientes” seleccionan y detallan las de la próxima
iteración
• …y atienden consultas de los programadores
– O sea que los “clientes” reemplazan la documentación pesada
– Los validadores (si los hay) ponen a prueba los builds
que proveen los “programadores”
Programación Extrema
Ph.D. Franklin Parrales 61
22/10/2021
Proceso de Software Carrera de Software
Los “Programadores”
• Codifican en pares (pair programming)
– Habitualmente, en una PC compartida, con teclado y
mouse para c/u, más dos notebooks individuales
• Para averiguar más, googlear “pairing workstation”
– Es una alternativa a la técnica más tradicional:
revisión de código
– El objetivo es lograr un código confiable que pueda
ser comprendido por todos
• Antes de programar cualquier unidad, programan
su código de prueba
– Esto se llama Desarrollo Guíado por Pruebas (Test-
Driven Development, o TDD)
– Para estas pruebas automatizadas utilizan ejemplos
preparados por los “clientes”
– En C, el código de prueba de una unidad puede
consistir de muchas llamadas a ese módulo, con
diferentes parámetros, chequeándose las variables
retornadas
– Como las pruebas se automatizan, los proyectos
necesitan pocos o ningún validador
El Equipo XP
Ph.D. Franklin Parrales 62
22/10/2021
Proceso de Software Carrera de Software
Otras Técnicas Importantes
• Colaboración
– El ambiente de trabajo debe ser abierto
– …con varios pizarrones para intercambiar ideas
• Sugerencia: Sacarles fotos a los diagramas en el pizarrón
– Todo código es de todos
• Usar un sistema de control de versiones
• Métricas
– Como métrica de progreso del proyecto, se usa la suma del
esfuerzo de las historias ya implementadas y verificadas
• Y como métrica de lo que resta por hacerse, se usa la suma del
esfuerzo de la historias que faltan
– La cantidad de historias a hacer puede ser ajustada, en función
de la velocidad (o sea, progreso / tiempo) que está logrando el
equipo
• Y hay bastantes más prácticas en XP…
Programación Extrema
Ph.D. Franklin Parrales 63
22/10/2021
Proceso de Software Carrera de Software
El proceso de la programación extrema
historias del usuario
valores
criterios de pruebas de aceptación
plan de iteración
diseño simple
tarjetas CRC
prueba unitaria
integración continua
incremento de software
velocidad calculada del proyecto
soluciones en punta
prototipos
rediseño
programación por parejas
pruebas de aceptación
Lanzamiento
El diseño XP sigue
rigurosamente el
principio MS (mantenlo
sencillo).
Un diseño sencillo
siempre se prefiere
sobre una
representación más
compleja.
Se desalienta el diseño
de funcionalidad
adicional porque el
desarrollador supone
que se requerirá
después
Ph.D. Franklin Parrales 64
22/10/2021
Proceso de Software Carrera de Software
El diseño en la programación extrema
• XP estimula el uso de las tarjetas CRC como
un mecanismo eficaz para pensar en el
software en un contexto orientado a objetos.
• Las tarjetas CRC (clase-responsabilidad-
colaborador) identifican y organizan las
clases orientadas a objetos que son
relevantes para el incremento actual de
software.
• Las tarjetas CRC son el único producto del
trabajo de diseño que se genera como parte
del proceso XP.
Ph.D. Franklin Parrales 65
22/10/2021
Proceso de Software Carrera de Software
Tarjetas CRC
• Clase - el nombre
• Responsabilidades - lo que sabe y lo que hace
• Collaboraciones - quiénes le ayudan
Clase: Model
Colaboradores:
• View
• Controller
Responsabilidad:
• Proporciona el núcleo de funcionalidad
de la aplicación
• Registra los View y Controller
dependientes
• Notifica a los componentes
dependientes acerca de cambios en los
datos
Ph.D. Franklin Parrales 66
22/10/2021
Proceso de Software Carrera de Software
Tarjetas CRC
• Permiten una rápida visión de los
elementos esenciales de las clases al
encarar la descomposición
• Se usan como técnica de diseño con
participación de usuarios
– Cada uno desempeña el rol de una clase
– Cada uno describe lo que hace al “ejecutar”
un determinado escenario de cierto caso de
uso
Ph.D. Franklin Parrales 67
22/10/2021
Proceso de Software Carrera de Software
XP: eXtreme Programming
• Ventajas
– No es un producto de Microsoft.
– Es parte de un movimiento llamado “Agile Development”.
– Es una metodología ligera.
– Es una corriente en boga.
– Utiliza un modelo incrementar/Interactivo.
– Trabaja con el cliente en sitio.
– Control de cambios, es incremental.
– Se programa entre dos personas.
– Los requerimientos se construyen a través de experiencias.
– Una buena técnica para un buen desarrollador.
• Desventaja
– No funciona como industria.
– No funciona cuando se trabaja con equipos de trabajo grandes
Ph.D. Franklin Parrales 68
22/10/2021
Proceso de Software Carrera de Software
Métodos ágiles más utilizados
• eXtreme Programming (XP)
• Scrum
• Crystal
• Lean Development
• Kanban
• Feature Driven Development
• Dynamic Systems Development Method
• Adaptive Software Development
• Pragmatic Programming
• RUP?
Ph.D. Franklin Parrales 69
22/10/2021
Proceso de Software Carrera de Software
SCRUM (Ken Schwaber)
• Basado en el método de desarrollo de
Nonaka y Takeuchi
• El nombre se refiere a una práctica del rugby
en la que un balón que sale fuera se pone en
juego con la colaboración de todo el equipo
• No describe técnicas de desarrollo, sino
relaciones entre los miembros del equipo
• La idea básica es que el desarrollo de
software es tan complejo que es inevitable
que se produzcan cambios durante a lo largo
del proceso.
Ph.D. Franklin Parrales 70
22/10/2021
Proceso de Software Carrera de Software
SCRUM
• Tres fases:
– pre-juego: planificación y arquitectura
– desarrollo (o juego): sprints
– post-juego: lanzamiento
• Roles principales:
– Scrum Master
– Responsable de producto
– Equipo SCRUM
– Cliente
– Gestores
Ph.D. Franklin Parrales 71
22/10/2021
Proceso de Software Carrera de Software
SCRUM
• Los principios Scrum son congruentes con el
manifiesto ágil y se utilizan para guiar actividades de
desarrollo dentro de un proceso de análisis que
incorpora las siguientes actividades estructurales:
requerimientos, análisis, diseño, evolución y entrega.
• Dentro de cada actividad estructural, las tareas del
trabajo ocurren con un patrón del proceso llamado
sprint.
• El trabajo realizado dentro de un sprint se adapta al
problema en cuestión y se define —y con frecuencia
se modifica— en tiempo real por parte del equipo
Scrum.
Ph.D. Franklin Parrales 72
22/10/2021
Proceso de Software Carrera de Software
SCRUM
Desarrollo en sprints (ciclo de trabajo repetitivo)
• Desarrollar: Definición de los cambios necesarios para la
implementación de los requisitos del backlog en módulos, la
apertura de los módulos, análisis del dominio, diseño,
desarrollo, implementación, pruebas y documentación de los
cambios. El Desarrollo consiste en el microproceso de
descubrimiento, invención e implementación.
• Integrar: Cierre de los módulos, creación de una versión
ejecutable con los cambios que implementan los requisitos
del backlog.
• Revisar: Reunión de todos los equipos para presentar el
trabajo y revisar el progreso, identificando y resolviendo
posibles cuestiones y añadiendo nuevos elementos al
backlog. Se revisan los riesgos y las respuestas apropiadas.
• Ajustar: Consolidación de la información de la revisión de los
módulos afectados.
Ph.D. Franklin Parrales 73
22/10/2021
Proceso de Software Carrera de Software
SCRUM
30 días
SCRUM: reunión diaria de 15 minutos.
Los miembros del equipo responden a
preguntas básicas:
1) ¿Qué hiciste desde la última
reunión Scrum?
2)¿Tienes algún obstáculo?
3)¿Qué harás antes de la próxima
reunión?
Aspectos
con retraso
ampliados
por el
equipo
Al final del sprint
se demuestra la
nueva
funcionalidad
Cada
24
horas
Retraso del
sprint:
Característica(s)
asignadas para
el sprint
Retraso del producto
Características del producto
que desea el cliente con
prioridad
Ph.D. Franklin Parrales 74
22/10/2021
Proceso de Software Carrera de Software
SCRUM
• Retraso: lista de prioridades de los requerimientos o
características del proyecto que dan al cliente un valor
del negocio. Es posible agregar en cualquier momento
otros aspectos al retraso (ésta es la forma en la que
se introducen los cambios). El gerente del proyecto
evalúa el retraso y actualiza las prioridades según se
requiera.
• Sprints: consiste en unidades de trabajo que se
necesitan para alcanzar un requerimiento definido en
el retraso que debe ajustarse en una caja de tiempo14
predefinida (lo común son 30 días). Durante el sprint
no se introducen cambios (por ejemplo, aspectos del
trabajo retrasado). Así, el sprint permite a los
miembros del equipo trabajar en un ambiente de corto
plazo pero estable.
Ph.D. Franklin Parrales 75
22/10/2021
Proceso de Software Carrera de Software
SCRUM
• Reuniones Scrum: son reuniones breves (de 15 minutos, por
lo general) que el equipo Scrum efectúa a diario. Hay tres
preguntas clave que se pide que respondan todos los
miembros del equipo:
– ¿Qué hiciste desde la última reunión del equipo?
– ¿Qué obstáculos estás encontrando?
– ¿Qué planeas hacer mientras llega la siguiente reunión del
equipo?
• Un líder del equipo, llamado maestro Scrum, dirige la junta y
evalúa las respuestas de cada persona.
– La junta Scrum ayuda al equipo a descubrir los problemas
potenciales tan pronto como sea posible.
– Asimismo, estas juntas diarias llevan a la “socialización del
conocimiento”, con lo que se promueve una estructura de
equipo con organización propia.
Ph.D. Franklin Parrales 76
22/10/2021
Proceso de Software Carrera de Software
SCRUM
• Demostraciones preliminares: entregar el incremento
de software al cliente de modo que la funcionalidad que
se haya implementado pueda demostrarse al cliente y
éste pueda evaluarla.
• Es importante notar que las demostraciones
preliminares no contienen toda la funcionalidad
planeada, sino que éstas se entregarán dentro de la caja
de tiempo establecida
Ph.D. Franklin Parrales 77
22/10/2021
Proceso de Software Carrera de Software
Aspectos destacados de SCRUM
• Roles
– Product owner (PO) resposable de describir y priorizar los
requisitos.
– Team responsable de producir un "sprint" encuadrado en el
tiempo (iteración)
– Scrum master (SM) responsable de posibilitar las condiciones
de trabajo en equipo
• Prácticas
– Micro feedback, como reuniones scrum diarias, sprint backlog,
burn-down charts
– Macro feedback y priorización por parte del propietario del
producto en cada sprint,
• Product backlog
• Scrum no prescribe
– Soluciones técnicas, métodos de trabajo, planes de avance del
proyecto
– Estos son responsabilidad del equipo para descubrirlos y
adaptarlos según las necesidades.
• Adecuado para proyectos con objetivos inciertos u objetivos
móviles
– O donde no se conoce del todo el camino para llegar
Ph.D. Franklin Parrales 78
22/10/2021
Proceso de Software Carrera de Software
Prácticas de Scrum
• Cuadros de tiempo (time boxing)
– El valor incremental de una actividad disminuye con el tiempo.
– Beneficio 80/20 logrado dentro del cuadro de tiempo
• Resultados potencialmente instalables
– Tiempo de iteraciones ("sprints") encuadrado a 30 días (o
menos)
– Cada iteración ofrecerá valor personalizado y calidad de
producción.
• Reducir elaboración inicial (un día)
– Especifique "todos" los requisitos generales para la acumulación
de productos inicial
• Principales casos de uso con escenarios, alt. historias del usuario
• Roles de actores principales
• Priorizar y volver a priorizar
– Solo trabaje en lo que se pueda completar durante el próximo
sprint (iteración)
– Cuadro de tiempo de especificación y planificación: un día
Ph.D. Franklin Parrales 79
22/10/2021
Proceso de Software Carrera de Software
Concepción Elaboración Construcción Transición
Iteraciones Iter #1 #2 Iter #3 #4 #5 #6 Iter #7 #8
RUP: descripción general
(repaso para comparar con Scrum)
Fases
Disciplinas
Requerimientos
Análisis
Diseño y
Arquitectura
Implementación
Test
Ph.D. Franklin Parrales 80
22/10/2021
Proceso de Software Carrera de Software
Pre-project
Sprints #1 #2 #3 #4
Scrum - Descripción general
Disciplinas
Sprints
Requisitos
iniciales
Requerimientos
Análisis
Diseño y
Arquitectura
Implementación
Test
Ph.D. Franklin Parrales 81
22/10/2021
Proceso de Software Carrera de Software
Hitos importantes
• RUP
• Scrum
tiempo
Vision Baseline
Architecture
Initial
Capability
Product
Release
Concepción Elaboración Construcción Transición
2-6 weeks per iteration
~15 %
tiempo
Vision Initial, high-level
Product Backlog
Pre-project
Requirimientos
Iniciales
Sprints
Any number of
potential Product
Releases
1 day 30 days per sprint
Any number of
potential Product
Releases
Ph.D. Franklin Parrales 82
22/10/2021
Proceso de Software Carrera de Software
Métodos ágiles más utilizados
• eXtreme Programming (XP)
• Scrum
• Crystal
• Lean Development
• Kanban
• Feature Driven Development
• Dynamic Systems Development Method
• Adaptive Software Development
• Pragmatic Programming
• RUP?
Ph.D. Franklin Parrales 83
22/10/2021
Proceso de Software Carrera de Software
Crystal (Cockburn)
• Conjunto de métodos de desarrollo
• Incluye distintas metodologías que se
pueden elegir y adaptar en función del
proyecto
• Cada metodología se identifica con un color
que refleja su peso
• Se pueden utilizar otros métodos ágiles como
método de desarrollo
• Desarrollo incremental con muchas entregas
Ph.D. Franklin Parrales 84
22/10/2021
Proceso de Software Carrera de Software
Crystal
• Variantes más populares
– Crystal Clear: para proyectos pequeños
– Crystal Orange: para proyectos medianos
Ph.D. Franklin Parrales 85
22/10/2021
Proceso de Software Carrera de Software
Clear YellowOrange Red
Crystal es una familia de metodologías porque cada proyecto es
ligeramente diferente y necesita su propio método.
• Las tecnologías
cambian las
técnicas.
• Las culturas
cambian las
normas.
• Las distancias
cambian la
comunicación.
Cantidad de personas involucradas
Criticidad
(los
defectos
provocan
la
pérdida
de
...)
Comfort
(C)
Essential
money
(E)
Life
(L)
1 - 6 - 20 - 40 - 100 - 200
C6 C20 C40 C100 C200
D6 D20 D40 D100 D200
E6 E20 E40 E100 E200
L6 L20 L40 L100 L200
Discretionary
money
(D)
Ph.D. Franklin Parrales 86
22/10/2021
Proceso de Software Carrera de Software
Crystal Orange : alcance
• Para proyectos D40:
– Hasta 40 personas, mismo edificio
• Pérdida de dinero discrecional
– (puede extenderse hasta E50)
• No para proyectos muy grandes
– (sub equipo insuficiente)
• No para proyectos de vital
importancia
– (verificación insuficiente)
• (Described in Surviving OO Projects,
Cockburn, 1998, pp. 77-93)
Amber
C6 C20 C40 C80
D6 D20 D40 D80
E6 E20 E40 E80
L6 L20 L40 L80
Ph.D. Franklin Parrales 87
22/10/2021
Proceso de Software Carrera de Software
Roles y equipos de Crystal Orange para 45
personas
•Roles:
•Sponsor,
•Business expert,
•Usage expert,
•Technical facilitator,
•Business analyst/designer,
•Project Manager,
•Architect,
•Lead designer/programmer,
•Designer/programmer,
•UI designer,
•Design Mentor,
•Reuse Point,
•Writer,
•Tester
•Teams:
• System planning,
•Project monitoring,
•Architecture,
•Technology,
•Functions,
•Infrastructure,
•External test.
Ph.D. Franklin Parrales 88
22/10/2021
Proceso de Software Carrera de Software
C6 C10
D6 D10
E6 E10
Crystal Clear : scope
• Para proyectos D6:
– 3-6 personas, cerca o en la misma
habitación
– Pérdida de dinero discrecional
• (puede extenderse a: proyecto E8)
• No para grandes proyectos
– (coordinación de grupo insuficiente)
• No para proyectos de vital
importancia
– (verificación insuficiente)
• (Described in Crystal Clear, Cockburn, 2004 also in Agile
Software Development, Cockburn 2002)
Ph.D. Franklin Parrales 89
22/10/2021
Proceso de Software Carrera de Software
Crystal Clear roles y equipos para 3-8
personas
•Required Roles:
•sponsor,
•senior designer,
designer/programmer,
•user (part-time)
•Combined Roles:
•coordinator,
•business expert,
•requirements gatherer
•Teams:
• single team of designer-
programmers
•Seating:
•single big room, or adjacent
offices
Ph.D. Franklin Parrales 90
22/10/2021
Proceso de Software Carrera de Software
Centrarse en las primeras 3
propiedades
• ¡Debe hacer esto!
– 1. Entrega frecuente: cada mes o dos
– 2. Comunicación osmótica: sentarse uno al
lado del otro
– 3. Mejora reflexiva: hacer un taller de
reflexión mensualmente
Ph.D. Franklin Parrales 91
22/10/2021
Proceso de Software Carrera de Software
¡Simplemente comience a trabajar y manténgase
en comunicación de buen humor con sus
compañeros de equipo!
• ¡Agregue estos como pueda!
– 4. Seguridad personal: hable libremente sin temor a
ser castigados
– 5. Enfoque: sepa qué es lo más importante, tenga
tiempo para trabajar en ello
– 6. Fácil acceso a usuarios expertos
– 7. Entorno técnico con
• Integración frecuente: cada hora, diaria, 3 / semana
• Pruebas automatizadas: pruebas unitarias, pruebas de
aceptación
• Gestión de la configuración: check-in, versionado
Ph.D. Franklin Parrales 92
22/10/2021
Proceso de Software Carrera de Software
Richness (“temperature”) of communication channel
“cold” “hot”
Communication
Effectiveness
2 people at
whiteboard
2 people
on phone
2 people
on email
Videotape
Paper
Audiotape
Crystal
Principios de diseño
Ph.D. Franklin Parrales 93
22/10/2021
Proceso de Software Carrera de Software
Siete principios para el diseño
1. Prefiera la comunicación cara a cara
– La comunicación interactiva cara a cara es el canal más
barato y rápido para intercambiar información
2. El peso de la metodología es costoso
3. Use metodologías más pesadas para equipos más
grandes / distribuidos
4. Utilice más reuniones(ceremonias) para mayor
criticidad
5. Utilice más comentarios y comunicaciones, con
menos entregables intermedios
6. Disciplina, habilidades, comprensión del proceso
contrario, formalidad, documentación
7. La eficiencia es prescindible en actividades que no
supongan un cuello de botella.
Ph.D. Franklin Parrales 94
22/10/2021
Proceso de Software Carrera de Software
Los procesos ágiles son fáciles de describir y comprender
como ciclos anidados de diferentes duraciones.
Proyecto
Integración
Día/Semana
Iteración
Entregable
Ph.D. Franklin Parrales 95
22/10/2021
Proceso de Software Carrera de Software
Para comprender Crystal (o cualquier proceso
ágil), describa cada ciclo de forma independiente.
Proyecto
Entregable
Entregable
Iteración
Iteración
Iteraciones
Día/Semana
Integration Integration
Día/semana
Integrations
Días Días
Integrations Integrations
Ph.D. Franklin Parrales 96
22/10/2021
Proceso de Software Carrera de Software
Las actividades de cualquier día pueden
pertenecer a diferentes ciclos
Project Iteration Day Integration Episode
Charter
Plan
Daily standup
Design & Check-in
Design & Check-in
Build and test
Design & Check-in
Design & Check-in
Build and test
Daily standup
Design & Check-in
Design & Check-in
Build and test
Design & Check-in
Design & Check-in
Build and test
Deliver
Reflect and celebrate
Plan
(etc.)
Wrapup
Ph.D. Franklin Parrales 97
22/10/2021
Proceso de Software Carrera de Software
Métodos ágiles más utilizados
• eXtreme Programming (XP)
• Scrum
• Crystal
• Lean Development
• Kanban
• Feature Driven Development
• Dynamic Systems Development Method
• Adaptive Software Development
• Pragmatic Programming
• RUP?
Ph.D. Franklin Parrales 98
22/10/2021
Proceso de Software Carrera de Software
Lean Software Development (Charette)
• Proviene de la industria de la automoción
(Toyota)
• No pretende cambiar el proceso de
desarrollo, sino todo el funcionamiento de
la empresa
Ph.D. Franklin Parrales 99
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
Ph.D. Franklin Parrales 100
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
1) Ver y eliminar el waste-desperdicio
• Evitar definir requerimientos a detalle muy
temprano cuando se sabe que se van a solicitar muchos
cambios.
• Apurar el desarrollo aun sabiendo que el software no se va a
probar inmediatamente.
• Incorpora la calidad temprano
– Eliminar la mala de costumbre de no probar bien lo desarrollado
y dejarle el trabajo a QA que ya “nos informará si algo salió mal”.
– Automatizar pruebas y solucionar defectos apenas estos se
detecten y no dejarlos para después.
– Eliminar la causa raíz de los incidentes asegurando que estos
nunca más vuelvan a ocurrir.
Ph.D. Franklin Parrales 101
22/10/2021
Proceso de Software Carrera de Software
• Desperdicio es
– Cualquier cosa que interfiera con darles a los clientes lo que valoran
• En el momento y lugar donde proporcionará el mayor valor
1. Trabajo parcialmente terminado
– Documentación no codificada, código no sincronizado, no probado, no documentado o no
implementado
2. Características adicionales
– “Es mejor para los desarrolladores surfear que escribir código que no será necesario”
Jeff Sutherland, CTO PatientKeeper [YAGNI]
3. Reaprendizaje
– Benefíciese y conserve las experiencias, mejore el producto y el proceso
4. Cambiar de tarea
– Toma tiempo, distrae de los resultados, retrasa todas las tareas en la entrega de valor
5. Transferencias
– El conocimiento tácito se pierde en las transferencias. Como regalar una bicicleta y un libro de
instrucciones a alguien que no sepa montar. Utilice equipos integrados, experiencia y
conversación.
6. Retrasos
– Los desarrolladores toman decisiones críticas cada 15 minutos. Ponga la información a
disposición.
– Otros retrasos: aprobación de proyectos, personas, aprobación de cambios, funcionalidad,
pruebas.
7. Defectos
– La prueba es diseño. Haga que los defectos sean inusuales. Descubra los defectos a tiempo.
Pruebe de forma automática y manual, temprano y con frecuencia. La verificación final no debe
descubrir nuevos defectos de forma rutinaria
Lean Development – Evite los siete desperdicios
Ph.D. Franklin Parrales 102
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
2) Ampliar el aprendizaje
• Pretender tener un diseño definido a detalle asumiendo que
éste no va a cambiar no es realista. Sobre todo para un
sistema complejo y con mucha incertidumbre.
• Se sustituyen los requisitos por presentar las pantallas a los
usuarios.
• Herramientas:
– Tool 3: Feedback.
– Tool 4: Iteraciones.
– Tool 5: Sincronización (builds cada día del producto y tests
automatizados, comunica restricciones y deja la solución
emerger).
– Tool 6: Set-Based Development (converger con restricciones en
lugar de decisiones tempranas)
Ph.D. Franklin Parrales 103
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
3) Decidir lo más tarde posible
• Dejar las decisiones para el final introduciendo opciones en el
desarrollo, aunque cueste más desarrollar las opciones (la
reducción del riesgo lo compensa).
• Situación donde he visto que mi idea era mejor que otras pero
debido a que ésta no estaba contemplada en el plan inicial no fue
considerada. En este caso todos los requerimientos se definieron
muy temprano y no se consideró que a medida que se progresa se
gana más conocimiento y las ideas evolucionan en el proyecto.
• Herramientas:
– Tool 7: Options Thinking (retrasa decisiones importantes si hay
incertidumbre).
– Tool 8: El último momento responsable.
– Tool 9: Tomando decisiones, 2 aproximaciones depende del contexto,
depth-first para decisiones claras o un experto vs breadth first para
retrasar decisiones.
Ph.D. Franklin Parrales 104
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
4) Reaccionar/Liberar tan rápido como sea posible
• Liberar lo más rápido posible y con una buena velocidad
mejora el aprendizaje.
• Transparencia en el proceso.
• Herramientas:
– Tool 10: Sistemas Pull y planificaciones solo alto nivel
con Information Radiators, ver también Kanban.
– Tool 11: Teoría de colas, mirar tiempo de ciclo en lugar de
trabajo hecho, y hacer releases pequeñas para disminuir
tamaño de cola.
– Tool 12: Cost of Delay, hay que dar al equipo un modelo
económico (Trade-off triangle) para que tome sus propias
decisiones acorde a lo que la compañía persigue. Mejor si los 3
ejes tienen las mismas unidades de medida. Así se reducirán los
tiempos de ciclo y se respetarán las fechas.
Ph.D. Franklin Parrales 105
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
5) Potenciar el equipo
• Las organizaciones de software no pueden funcionar a pleno
rendimiento, hay que dejar un tiempo para invertir en formación,
reestructuración, y organizar recursos para crecer.
• Herramientas:
– Tool 13: Autodeterminación, el manager se convierte en empowerer y
facilitador del trabajo, introducir feedback loops, implementa basado en
principios y no en procesos.
– Tool 14: Motivacion, comunica el propósito de los proyectos, el objetivo
debe ser conseguible. Comunica a los developers con los clientes
directamente. Recibirás un mayor compromiso con el trabajo de las
iteraciones.
– Tool 15: El liderazgo dentro del equipo emerge, no se elige desde
arriba sino que es algo que se debe ganar.
– Tool 16: Experiencia, promueve las comunidades de expertos y los
estándares.
Ph.D. Franklin Parrales 106
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
6) Crear la integridad
• Integridad conceptual significa que los componentes separados del sistema
funcionan bien juntos, como en un todo, logrando equilibrio entre la
flexibilidad, mantenibilidad, eficiencia y capacidad de respuesta.
• Flujo de información entre lo que debe construir y la construcción debe ser
al mismo tiempo, no secuencialmente. No es válida la
documentación, mejor la comunicación cara a cara.
• Pruebas de aceptación para probar el todo.
• Herramientas:
– Tool 17: Integridad percibida, foco en el valor para el cliente, utilizar modelos en
lenguaje de negocio como contrato entre equipo y clientes.
– Tool 18: Integridad conceptual, la solución debe funcionar como un todo. La
comunicación debe ser efectiva sobre todo en la fase de diseño. Mejor si el diseño no
se basa en un documento de requerimientos sino hacer sesiones continuas de
diseño. Si algo ya funciona y lo puedes reaprovechar hazlo.
– Tool 19: Refactoring, la arquitectura debe mantenerse sana durante la evolución.
Simplicidad, claridad, mantenibilidad.
– Tool 20: Testing, deben probar que hace lo que debe, automatizar al máximo e
integrar en la construcción diaria.
Ph.D. Franklin Parrales 107
22/10/2021
Proceso de Software Carrera de Software
Siete principios
Lean Software Development
7) Véase todo el conjunto
• Piensa en grande, actúa en pequeño, equivócate
rápido; aprende con rapidez.
• Hay que ver el conjunto, no solo el producto o el
proceso, y siempre aplicando sentido común.
• Herramientas:
– Tool 21: Medidas, para mejorar y decidir hay que medir.
Medidas de información, no de rendimiento individual. Por
ejemplo asignar los defectos a features, no al
desarrollador.
– Tool 22: Contratos, se busca la colaboración, ser flexible
con el alcance. El cliente debe entender que si el riesgo
surge deberá incrementar el coste, no puede ser coste y
fecha fija.
Ph.D. Franklin Parrales 108
22/10/2021
Proceso de Software Carrera de Software
Métodos ágiles más utilizados
• eXtreme Programming (XP)
• Scrum
• Crystal
• Lean Development
• Kanban
• Feature Driven Development
• Dynamic Systems Development Method
• Adaptive Software Development
• Pragmatic Programming
• RUP?
Ph.D. Franklin Parrales 109
22/10/2021
Proceso de Software Carrera de Software
¿Qué es Kanban?
● Surgió en los años 40
● Sistema de producción de
Toyota
● Producción basada en la
demanda de los clientes.
● Centrada en el Servicio
● Kanban significa tarjeta
con signos o señal visual.
Ph.D. Franklin Parrales 110
22/10/2021
Proceso de Software Carrera de Software
Principios
● A) Comenzar con lo actual El método Kanban se inicia con las
funciones y procesos que ya se tienen y estimula cambios continuos,
incrementales y evolutivos al sistema.
● B) Aplicar cambios incrementales Todos deben estar de acuerdo en
que la manera de hacer mejoras en el sistema es el cambio continuo,
gradual y evolutivo. Los cambios fuertes pueden parecer más eficaces,
pero fracasan más debido a la resistencia y el miedo en la organización.
● C) Respetar lo establecido Para facilitar el cambio futuro conviene
respetar los roles, responsabilidades y cargos actuales, eliminando los
temores iniciales. Esto permite obtener un mayor apoyo a la iniciativa
Kanban.
● D) Liderazgo en todos los niveles Kanban promueve acciones de
liderazgo desde las personas de bajo rango hasta los gerentes.
Ph.D. Franklin Parrales 111
22/10/2021
Proceso de Software Carrera de Software
Prácticas
1. Visualizar el flujo
de trabajo
2. Eliminar interrupciones. Limitar trabajo
WIP
3. Gestionar el flujo Flujo rápido e ininterrumpido
Ph.D. Franklin Parrales 112
22/10/2021
Proceso de Software Carrera de Software
Prácticas
4. Hacer las políticas explícitas
○ Fomentar la visibilidad
5. Circuitos de retroalimentación
6. Mejorar colaborando
○ usando modelos y el método científico
Ph.D. Franklin Parrales 113
22/10/2021
Proceso de Software Carrera de Software
Beneficios
1. Estímulo del rendimiento: Análisis y estimación
para medir el rendimiento. Detección de
problemas y ajuste del trabajo. Flexibilidad.
2. Organización y colaboración: Enfoque visual.
Colaboración en tiempo real. Accesibilidad y
comunicación.
3. Distribución del trabajo: Visión rápida y ahorro de
tiempo. El flujo constante de tareas reduce el
tiempo perdido. Cada uno elige sus tareas.
Ph.D. Franklin Parrales 114
22/10/2021
Proceso de Software Carrera de Software
Ejemplo
Fuente: http://metodokanbansoftwareagil.blogspot.com
Ph.D. Franklin Parrales 115
22/10/2021
Proceso de Software Carrera de Software
Herramientas: Trello
Ph.D. Franklin Parrales 116
22/10/2021
Proceso de Software Carrera de Software
Herramientas: Wekan (open source)
Ph.D. Franklin Parrales 117
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 118
22/10/2021
Proceso de Software Carrera de Software
¿Que es un método formal?
• Modelo matemático para
– Diseñar.
– Especificar.
– Implementar.
– Verificar.
Sistemas informáticos.
aA, bA a+bA
Ph.D. Franklin Parrales 119
22/10/2021
Proceso de Software Carrera de Software
Métodos formales
• Los métodos formales son técnicas matemáticas, a menudo
soportadas por herramientas, para el desarrollo de sistemas
software y hardware.
• Su rigor matemático le permite a los ingenieros analizar y
verificar sus modelos en cualquier parte del ciclo de vida del
desarrollo.
• En la Ingeniería de Software los métodos formales se utilizan
para:
– Las políticas de los requisitos
– La especificación
– Las pruebas de correspondencia entre la especificación y los
requisitos
– Las pruebas de correspondencia entre el código fuente y la
especificación
– Pruebas de correspondencia entre el código máquina y el código
fuente
Ph.D. Franklin Parrales 120
22/10/2021
Proceso de Software Carrera de Software
Métodos formales
[Balzer R. A 15 Year Perspective on Automatic Programming. IEEE Transactions on Software Engineering,
vol.11, núm.11, páginas 1257-1268, Noviembre 1985 ]
Especificación
Tranformación
Interactiva
Transformación
Automática
Optimización
Validación de
Especificación
Mantenimiento
Especificación
de alto nivel
(prototipo)
Desarrollo
Formal
Desiciones
Especificación
de bajo nivel
Código
Fuente
Especificación
Informal
Ph.D. Franklin Parrales 121
22/10/2021
Proceso de Software Carrera de Software
Ventajas de los métodos formales
• Especificación
– La ingeniería de Software tiene problemas para la especificación
de comportamientos.
– La especificación formal proporciona una mayor precisión.
– Detección de ambigüedades y omisiones.
• Verificación
– “Se esta construyendo el producto correcto.”
– Con los métodos comunes a pesar de la generación de
manuales de pruebas rigurosos solo se logra eliminar los errores
más evidentes.
– Las técnicas de verificación formal dependen de
especificaciones matemáticas precisas.
• Validación
– “Se esta construyendo el producto correcto.”
– Utilizado principalmente para sistemas complejos como aquellos
de modelado y simulación.
Ph.D. Franklin Parrales 122
22/10/2021
Proceso de Software Carrera de Software
Ventajas de los métodos formales
• Se comprende mejor el sistema.
• La comunicación con el cliente mejora ya que se
dispone de una descripción clara y no ambigua de
los requisitos del usuario.
• El sistema se describe de manera más precisa.
• El sistema se asegura matemáticamente que es
correcto según las especificaciones.
• Mayor calidad software respecto al cumplimiento
de las especificaciones.
• Mayor productividad
Ph.D. Franklin Parrales 123
22/10/2021
Proceso de Software Carrera de Software
Desventajas de los métodos formales
• El desarrollo de herramientas que apoyen la
aplicación de métodos formales es complicado y
los programas resultantes son incómodos para los
usuarios.
• Los investigadores por lo general no conocen la
realidad industrial.
• Es escasa la colaboración entre la industria y el
mundo académico, que en ocasiones se muestra
demasiado dogmático.
• Se considera que la aplicación de métodos
formales encarece los productos y ralentiza su
desarrollo
Ph.D. Franklin Parrales 124
22/10/2021
Proceso de Software Carrera de Software
Los 10 mandamientos
(Bowen, Hinchley)
1. Seleccionarás la notación adecuada.
2. Formalizarás, pero no de más.
3. Estimarás los costes.
4. Poseerás un experto en métodos formales a tu
disposición.
5. No abandonarás tus métodos formales de desarrollo.
6. Documentarás suficientemente.
7. No comprometerás los estándares de calidad.
8. No serás dogmático.
9. Comprobarás, comprobarás y volverás a comprobar.
10. Reutilizarás cuanto puedas.
Ph.D. Franklin Parrales 125
22/10/2021
Proceso de Software Carrera de Software
Los 7 mitos de Hall
1. Los métodos formales pueden garantizar la
corrección del software
2. Todos los métodos formales se refieren a la
corrección de programas
3. Son de utilidad solamente para sistemas de altas
prestaciones/alta integridad (safety-critical)
4. Su uso requiere una alta cualificación o
entrenamiento matemático
5. Incrementan el coste de desarrollo
6. Son inadecuados y no serán aceptados por los
clientes
7. No se usan en la realidad en proyectos software de
gran escala
Ph.D. Franklin Parrales 126
22/10/2021
Proceso de Software Carrera de Software
Fracasos de la Aplicación de MF
• Algoritmo de división del procesador Pentium
(1993)
– Costo: 475 millones de dólares, credibilidad de Intel
• Explosión de la misión espacial Ariane 5 (1996)
– Costo: 500 millones de dólares
• Orbitador climático de Marte (1998)
– Costo: 125 millones de dólares
Ph.D. Franklin Parrales 127
22/10/2021
Proceso de Software Carrera de Software
Logros de la Aplicación de MF
• Metéor, Matra Transport, France:
– Herramienta: Atelier-B
– Resultado: No se encontró ningún error durante el
testing de 80000 líneas de código.
• SPOT 4, CS-CI, France:
– Herramienta: IFAD VDM-SL Toolbox
– Resultado: Se redujo un 38% menos de código
fuente y un 36% menos de esfuerzo total
Ph.D. Franklin Parrales 128
22/10/2021
Proceso de Software Carrera de Software
Métodos formales
OO
Conceptos
básicos
Fundamentos
matemáticos
básicos
Fundamentos
sobre OO
Proceso de
desarrollo de
software
Modelos
matemáticos
Lógica de primer
orden
Especificaciónes
algebraicas
Redes de Petri
Lógica temporal
Métodos semi-
formales
Métodos
generalistas
Métodos
orientados a
sistemas reactivos
Métodos
orientados a
componentes
Métodos formales
Métodos basados
en lógica de
primer orden
Métodos basados
en formalismos
algebraicos
Métodos basados
en redes de Petri
Métodos basados
en lógica temporal
Ph.D. Franklin Parrales 129
22/10/2021
Proceso de Software Carrera de Software
Clasificación de métodos Formales
La clasificación más común se realiza en base al modelo matemático
subyacente en cada método, de esta manera podrían clasificarse en:
• Especificaciones basadas en lógica de primer orden y teoría de
conjuntos: permiten especificar el sistema mediante un concepto
formal de estados y operaciones sobre estados. Los datos y
relaciones/funciones se describen en detalle y sus propiedades se
expresan en lógica de primer orden. La semántica de los lenguajes
está basada en la teoría de conjuntos. Los métodos de este tipo
más conocidos son: Z, VDM y B.
• Especificaciones algebraicas: proponen una descripción de
estructuras de datos estableciendo tipos y operaciones sobre esos
tipos. Para cada tipo se define un conjunto de valores y operaciones
sobre dichos valores. Las operaciones de un tipo se definen a
través de un conjunto de axiomas o ecuaciones que especifican las
restricciones que deben satisfacer las operaciones. Métodos más
conocidos: Larch, OBJ, TADs.
Ph.D. Franklin Parrales 130
22/10/2021
Proceso de Software Carrera de Software
Clasificación de métodos Formales
• Especificación de comportamiento:
– Métodos basados en álgebra de procesos: modelan la
interacción entre procesos concurrentes. Esto ha potenciado su
difusión en la especificación de sistemas de comunicación
(protocolos y servicios de telecomunicaciones) y de sistemas
distribuidos y concurrentes. Los más conocidos son: CCS,CSP y
LOTOS.
– Métodos basados en Redes de Petri: una red de petri es un
formalismo basado en autómatas, es decir, un modelo formal
basado en flujos de información. Permiten expresar eventos
concurrentes. Los formalismos basados en redes de petri
establecen la noción de estado de un sistema mediante lugares
que pueden contener marcas. Un conjunto de transiciones (con
pre y post condiciones) describe la evolución del sistema
entendida como la producción y consumo de marcas en varios
puntos de la red.
Ph.D. Franklin Parrales 131
22/10/2021
Proceso de Software Carrera de Software
Clasificación de métodos Formales
– Métodos basados en lógica temporal: se usan para
especificar sistemas concurrentes y reactivos. Los sistemas
reactivos son aquellos que mantienen una continua interacción
con su entorno respondiendo a los estímulos externos y
produciendo salidas en respuestas a los mismos, por lo tanto el
orden de los eventos en el sistema no es predecible y su
ejecución no tiene por qué terminar.
Ph.D. Franklin Parrales 132
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 133
22/10/2021
Proceso de Software Carrera de Software
¿Cuál es el más adecuado?
Modelo de
proceso
Desempeño
con requisitos
y arquitectura
no
predefinidos
Produce
software
altamente
fiable
Gestión de
riesgos
Permite
correcciones
sobre la
marcha
Visión del
progreso por
el Cliente y el
Jefe del
proyecto
Codificar y
corregir
Bajo Bajo Bajo Alto Medio
Desarrollo
En cascada
Bajo Alto Bajo Bajo Bajo
Desarrollo
Evolutivo
Alto Medio Medio Alto Alto
Desarrollo
formal de
sistemas
Bajo Alto Bajo a Medio Bajo Bajo
Desarrollo
basado en
reutilización
Medio Bajo a Alto Bajo a Medio Alto Alto
Desarrollo
Incremental
Bajo Alto Medio Bajo Bajo
Desarrollo
Espiral
Alto Alto Alto Medio Medio
Ph.D. Franklin Parrales 134
22/10/2021
Proceso de Software Carrera de Software
Metodología Tradicionales vs Ágiles
Metodologías Tradicionales Metodologías Agiles
Basadas en normas provenientes de
estándares seguidos por el entorno de
desarrollo
Basadas en heurísticas provenientes de
prácticas de producción de código
Cierta resistencia a los cambios Especialmente preparados para cambios
durante el proyecto
Impuestas externamente Impuestas internamente (por el equipo)
Proceso mucho más controlado, con
numerosas políticas/normas
Proceso menos controlado, con pocos
principios.
El cliente interactúa con el equipo de
desarrollo mediante reuniones
El cliente es parte del equipo de desarrollo
Más artefactos Pocos artefactos
Más roles Pocos roles
Grupos grandes y posiblemente distribuidos Grupos pequeños (<10 integrantes) y
trabajando en el mismo sitio
La arquitectura del software es esencial y se
expresa mediante modelos
Menos énfasis en la arquitectura del software
Existe un contrato prefijado No existe contrato tradicional o al menos es
bastante flexible
Ph.D. Franklin Parrales 135
22/10/2021
Proceso de Software Carrera de Software
Diferencias por las características del
Proyecto
Modelo de
Proceso
Tamaño del
Proceso
Tamaño del
Equipo
Complejidad
del Problema
RUP Medio /
Extenso
Medio /
Extenso
Medio / Alto
ICONIX Pequeño /
Medio
Pequeño /
Medio
Pequeño /
Medio
XP Pequeño /
Medio
Pequeño Medio / Alto
SCRUM Pequeño /
Medio
Pequeño Medio / Alto
Ph.D. Franklin Parrales 136
22/10/2021
Proceso de Software Carrera de Software
Cabe destacar:
• El retrasar las decisiones en un proyecto de
software permite potenciar el valor del producto
tanto para el cliente como al equipo o empresa
que desarrolla
• Para que un grupo de desarrollo adopte una
metodología ágil debe poseer
experiencia trabajando con metodologías
tradicionales, ya que la experiencia es la que
predomina en los mementos cruciales del
proyecto, además debe tener la capacidad de ser
equipos auto-gestionados, altamente motivados y
con gran innovación
Ph.D. Franklin Parrales 137
22/10/2021
Proceso de Software Carrera de Software
Cabe destacar:
• Las metodologías ágiles permiten disminuir
costos y brindar flexibilidad a los proyectos de
software donde la incertidumbre está presente
• El uso de metodologías tradicionales es
esencial al inicio en un equipo de desarrollo de
software
• Las metodologías ágiles se deberían aplicar en
proyectos donde exista mucha incertidumbre
donde el entorno es volátil, donde los requisitos
no se conocen con exactitud, mientras que las
metodologías tradicionales obligan al cliente a
tomar las decisiones al inicio del proyecto.
Ph.D. Franklin Parrales 138
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 139
22/10/2021
Proceso de Software Carrera de Software
Rational Unified Process (RUP)
• RUP es un proceso de desarrollo de software y
junto con el Lenguaje Unificado de Modelado
UML, constituye la metodología estándar más
utilizada para el análisis, implementación y
documentación de sistemas orientados a objetos
• RUP tiene 3 características importantes:
– Es un proceso dirigido por Casos de Uso (CU)
– Es un proceso Centrado en la Arquitectura
– Es un proceso Iterativo e Incremental
Ph.D. Franklin Parrales 140
22/10/2021
Proceso de Software Carrera de Software
¿Qué propone Rational Unified Process (RUP)?
• Indica
– Actividades
– Roles
– Workflow
– Artefactos
QUÉ tareas hacer
QUIÉN las hace
CUÁNDO se hace
QUÉ documentos entregar
Ph.D. Franklin Parrales 141
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 142
22/10/2021
Proceso de Software Carrera de Software
Rational Unified Process (RUP). Etapas
Ph.D. Franklin Parrales 143
22/10/2021
Proceso de Software Carrera de Software
Concepción Elaboración Construcción Transición
Iteraciones Iter #1 #2 Iter #3 #4 #5 #6 Iter #7 #8
RUP: descripción general
Fases
Disciplinas
Requerimientos
Análisis
Diseño y
Arquitectura
Implementación
Test
Ph.D. Franklin Parrales 144
22/10/2021
Proceso de Software Carrera de Software
Fases del RUP
• Concepción (inception)
– Establecer una visión y alcance empresarial
– Identificar la funcionalidad básica
• Elaboración
– Establecer requisitos de detalle y visión técnica
– Realizar análisis y diseño de alto nivel
– Identificar riesgos y crear un plan de desarrollo
• Construcción
– Crear iteraciones de software de calidad de
producción, probado e integrado
• Transición
– Prueba beta y capacita a los usuarios sobre el terreno
– Identificar y corregir deficiencias
• Todas las disciplinas se aplican en todas las fases.
– Requisitos, análisis, diseño, implementación,
prueba
Ph.D. Franklin Parrales 145
22/10/2021
Proceso de Software Carrera de Software
RUP: Organización de Modelos
▪ M. de Casos de Uso del Negocio (Business Use-
Case Model)
▪ M. de Objetos del Negocio (Business Object Model)
▪ M. de Casos de Uso (Use-Case Model)
▪ M. de Análisis (Analysis Model)
▪ M. de Diseño (Design Model)
▪ M. de Despliegue (Deployment Model)
▪ M. de Datos (Data Model)
▪ M. de Implementación (Implementation Model)
▪ M. de Pruebas (Test Model)
Ph.D. Franklin Parrales 146
22/10/2021
Proceso de Software Carrera de Software
Modelado de software
Construcción de Software
Ingeniería de requerimientos
Diseño
y
Arquitectura
de
Software
Ph.D. Franklin Parrales 147
22/10/2021
Proceso de Software Carrera de Software
Modelado de software
Modelo de
Casos de Uso
Modelo de
Análisis
Modelo de
Diseño
Modelo de
Despliegue
Modelo de
Implementación
Modelo de
Prueba
especificado por realizado por
distribuido por
implementado por
verificado por
Transición del MCU hacia el
MA
Ph.D. Franklin Parrales 148
22/10/2021
Proceso de Software Carrera de Software
Rational Unified Process
• Ventajas
– Desarrollo iterativo.
– Utilizan la metodologíaUML (Unified Modeling
Language).
– Produce artefactos (Componentes).
– Modelo de software visual.
– Proceso complejo.
– Conveniente para sistemas grandes.
• Desventaja
– No tener personal preparado en la metodología.
– Deber ir en consistencia con la gestión del proyecto
Ph.D. Franklin Parrales 149
22/10/2021
Proceso de Software Carrera de Software
Contenido
• Modelado de procesos
– Introducción a los modelos de proceso
• Tipos de modelos
– Cascada
– Incremental
– Evolutivo
– Concurrentes
– Desarrollo basado en componentes
– Otros Desarrollos de software (Agile)
– Métodos formales
• Proceso unificado
– Fases del proceso unificado
• Evaluación y mejora del proceso
Ph.D. Franklin Parrales 150
22/10/2021
Proceso de Software Carrera de Software
Evaluación y mejora del proceso
• La existencia de un proceso del
software no es garantía de que:
– el software se entregue a tiempo
– que satisfaga las necesidades de
los consumidores
– que tenga las características
técnicas que conducirán a
características de calidad de largo
plazo
• El proceso en sí debe evaluarse
para garantizar que cumple con
ciertos criterios de proceso
básicos que se haya demostrado
que son esenciales para el éxito
de la ingeniería de software
Ph.D. Franklin Parrales 151
22/10/2021
Proceso de Software Carrera de Software
Evaluación y mejora del proceso
• En las últimas décadas se han propuesto numerosos
enfoques para la evaluación y mejora de un proceso del
software:
– Método de evaluación del estándar CMMI para el proceso de mejora:
proporciona un modelo de cinco fases para evaluar el proceso: inicio,
diagnóstico, establecimiento, actuación y aprendizaje.
– Evaluación basada en CMM para la mejora del proceso interno:
proporciona una técnica de diagnóstico para evaluar la madurez relativa de
una organización de software; usa el SEI CMM como la base de la
evaluación.
– SPICE (ISO/IEC 15504): estándar que define un conjunto de
requerimientos para la evaluación del proceso del software. El objetivo del
estándar es ayudar a las organizaciones a desarrollar una evaluación
objetiva de cualquier proceso del software definido.
– ISO9001:2000 para software: estándar genérico que se aplica a cualquier
organización que desee mejorar la calidad general de los productos,
sistemas o servicios que proporciona. Por tanto, el estándar es
directamente aplicable a las organizaciones y compañías de software
Ph.D. Franklin Parrales 152
22/10/2021
Proceso de Software Carrera de Software
Final de la unidad
MODELOS DE PROCESO
Unidad 2

More Related Content

What's hot

Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del software
Johan Prevot R
 
Tabla comparativa- metodologías de desarrollo
Tabla comparativa-  metodologías de desarrolloTabla comparativa-  metodologías de desarrollo
Tabla comparativa- metodologías de desarrollo
itsarellano
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Sérgio Souza Costa
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
monik1002
 
Modelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareModelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de software
Uriel Ramos
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
Micky Jerzy
 
Qué es un documento de requerimientos
Qué es un documento de requerimientosQué es un documento de requerimientos
Qué es un documento de requerimientos
Carlos Alonso
 

What's hot (20)

IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientosIDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del software
 
AD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasAD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidas
 
IIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de SoftwareIIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de Software
 
Tabla comparativa- metodologías de desarrollo
Tabla comparativa-  metodologías de desarrolloTabla comparativa-  metodologías de desarrollo
Tabla comparativa- metodologías de desarrollo
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
ATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdf
ATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdfATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdf
ATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdf
 
Modelo de desarrollo concurrente
Modelo de desarrollo concurrenteModelo de desarrollo concurrente
Modelo de desarrollo concurrente
 
Modelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareModelos o Ciclos de vida de software
Modelos o Ciclos de vida de software
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
 
Documentación de Software
Documentación de Software Documentación de Software
Documentación de Software
 
Modelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareModelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de software
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Fundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresFundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y Estándares
 
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventosPOE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
 
MOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modeladoMOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modelado
 
EP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosEP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgos
 
Estándares y modelos de calidad del software
Estándares y modelos de calidad del softwareEstándares y modelos de calidad del software
Estándares y modelos de calidad del software
 
Modelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiralModelos evolutivos. incremental y espiral
Modelos evolutivos. incremental y espiral
 
Qué es un documento de requerimientos
Qué es un documento de requerimientosQué es un documento de requerimientos
Qué es un documento de requerimientos
 

Similar to PSW Unidad 2 MODELOS DE PROCESO

02 proceso ciclodevida
02 proceso ciclodevida02 proceso ciclodevida
02 proceso ciclodevida
claudiappaez
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
mat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
nelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
Marilupe
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
142918
 

Similar to PSW Unidad 2 MODELOS DE PROCESO (20)

PSW Unidad 1 PROCESO DE SOFTWARE
PSW Unidad 1 PROCESO DE SOFTWAREPSW Unidad 1 PROCESO DE SOFTWARE
PSW Unidad 1 PROCESO DE SOFTWARE
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
02 proceso ciclodevida
02 proceso ciclodevida02 proceso ciclodevida
02 proceso ciclodevida
 
Investigación de modelos
Investigación de modelos Investigación de modelos
Investigación de modelos
 
METODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxMETODOLOGIA RUP.pptx
METODOLOGIA RUP.pptx
 
Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6
 
Modelo Cascada!!
Modelo Cascada!!Modelo Cascada!!
Modelo Cascada!!
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Rup
RupRup
Rup
 
Modelos de software
Modelos de softwareModelos de software
Modelos de software
 
Desarrollo y diseño de software
Desarrollo y diseño de softwareDesarrollo y diseño de software
Desarrollo y diseño de software
 
Espoch
EspochEspoch
Espoch
 
Modelos del software
Modelos del softwareModelos del software
Modelos del software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 

More from Franklin Parrales Bravo

More from Franklin Parrales Bravo (20)

Presentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaPresentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en Cuenca
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería Web
 
IW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaIW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicua
 
IW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosIW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelos
 
MOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modeladoMOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modelado
 
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebIW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuida
 
AD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosAD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidos
 
EP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosEP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectos
 
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareGCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
 
GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilos
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a Objetos
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
RD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoRD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y Enrutamiento
 
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
 
RD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y RedesRD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y Redes
 
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
 
POE Unidad 1: Introducción a la programación visual y de eventos
POE Unidad 1: Introducción a la programación visual y de eventosPOE Unidad 1: Introducción a la programación visual y de eventos
POE Unidad 1: Introducción a la programación visual y de eventos
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Recently uploaded (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

PSW Unidad 2 MODELOS DE PROCESO

  • 1. Ph.D. Franklin Parrales 1 22/10/2021 Proceso de Software Carrera de Software MODELOS DE PROCESO Unidad 2 Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo para uso de los cursos de Proceso de Software
  • 2. Ph.D. Franklin Parrales 2 22/10/2021 Proceso de Software Carrera de Software Objetivo general de la Unidad 2 Caracterizar el modelado de procesos identificando los factores claves del proceso para definir el alcance de los proyectos de software.
  • 3. Ph.D. Franklin Parrales 3 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes. – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 4. Ph.D. Franklin Parrales 4 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes. – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 5. Ph.D. Franklin Parrales 5 22/10/2021 Proceso de Software Carrera de Software Introducción a los modelos de proceso • Los estándares establecen los diferentes procesos implicados a la hora de desarrollar y mantener un sistema desde que surge la idea o necesidad de desarrollar las aplicaciones hasta que éstas se retiran de explotación. – Sin embargo, ninguno impone un modelo de procesos concreto (modelo de ciclo de vida) ni cómo realizar las diferentes actividades incluidas en cada proceso, por lo que cada empresa deberá utilizar los métodos, técnicas y herramientas que considere oportuno. • Por su naturaleza, los modelos son simplificaciones; por lo tanto, un modelo de procesos del software es una simplificación o abstracción de un proceso real. • Podemos definir un modelo de procesos del software como una representación abstracta de alto nivel de un proceso software.
  • 6. Ph.D. Franklin Parrales 6 22/10/2021 Proceso de Software Carrera de Software Introducción a los modelos de proceso • Cada modelo es una descripción de un proceso software que se presenta desde una perspectiva particular. – Alternativamente, a veces se usan los términos ciclo de vida y Modelo de ciclo de vida. • Cada modelo describe una sucesión de fases y un encadenamiento entre ellas. – Según las fases y el modo en que se produzca este encadenamiento, tenemos diferentes modelos de proceso. • Un modelo es más adecuado que otro para desarrollar un proyecto dependiendo de un conjunto de características de éste. • Existe una gran variedad de modelos diferentes entre los que tenemos los que se estudiarán en esta unidad.
  • 7. Ph.D. Franklin Parrales 7 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes. – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 8. Ph.D. Franklin Parrales 8 22/10/2021 Proceso de Software Carrera de Software Tipos de modelos • Modelos tradicionales: Formados por un conjunto de fases o actividades en las que no tienen en cuenta la naturaleza evolutiva del software – Clásico, lineal o en cascada – Estructurado – Basado en prototipos – Desarrollo rápido de aplicaciones (RAD) • Modelos evolutivos: Son modelos que se adaptan a la evolución que sufren los requisitos del sistema en función del tiempo – En espiral – Evolutivo – Incremental – Modelo de desarrollo concurrente • Modelos orientados a la reutilización – Basado en componentes – Proceso Unificado • Procesos ágiles – Programación extrema (XP) – Desarrollo de software adaptativo – Scrum, Crystal …
  • 9. Ph.D. Franklin Parrales 9 22/10/2021 Proceso de Software Carrera de Software Modelo Codificar y corregir ▪ Este es el modelo básico utilizado en los inicios del desarrollo de software. ▪ Contiene dos pasos: ◼ Escribir código. ◼ Corregir problemas en el código. ▪ Primero implementar algo de código y luego pensar acerca de requisitos, diseño, validación, y mantenimiento
  • 10. Ph.D. Franklin Parrales 10 22/10/2021 Proceso de Software Carrera de Software Modelo Poner la cola al burro • Se coge a uno o varios informáticos, • Se les muestra más o menos el problema, • Se les deja solos en un cuarto a oscuras, • Transcurrido un tiempo se abre la puerta.
  • 11. Ph.D. Franklin Parrales 11 22/10/2021 Proceso de Software Carrera de Software Lo sorprendente es que a veces funciona… • Las empresas que desean obtener software económico y rápidamente lo utilizan, con las siguientes mejoras: – Se contrata a personas que no tengan experiencia – Se les dan pocos recursos, son novatos y no saben exigir – Se suele utilizar la técnica de desprecio: • “siempre tarde y encima no hace lo que queremos” » (imaginábamos qué haría, aunque no lo habíamos dicho) • Los resultados son curiosos: – Se suele subcontratar a cualquier precio con empresas externas, “Seguro que ellos saben hacer las cosas” • Cuando funciona existe mucha incertidumbre sobre el como o por que ha funcionado. – Parece claro que cuando funciona, los informáticos sabían que se esperaba del producto, sabían que se debía hacer, estaban muy motivados y les gusta el trabajo que están haciendo. Pero es difícil prever que esto ocurrirá.
  • 12. Ph.D. Franklin Parrales 12 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes. – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 13. Ph.D. Franklin Parrales 13 22/10/2021 Proceso de Software Carrera de Software Modelo en cascada • Conocido también como modelo lineal o clásico • Versión original se debe a W. W. Royce [Royce, 1970], apareciendo después numerosos refinamientos • Características – Está compuesto por una serie de fases que se ejecutan secuencialmente – Obtención de documentos como criterio de finalización de fase • Problemas de la progresión secuencial – Desconocimiento de las necesidades por parte del cliente – Inestabilidad de los requisitos – No se ven resultados hasta muy avanzado el proyecto – Efecto big bang próximo a la entrega
  • 14. Ph.D. Franklin Parrales 14 22/10/2021 Proceso de Software Carrera de Software Modelo en cascada Definición Análisis Diseño Desarrollo Pruebas Mantenim. Definición de requisitos: • Las restricciones y metas del sistema se definen a partir de la interacción con el interesado. • Se comprende la naturaleza de la aplicación y el dominio de información, así como su funcionalidad, rendimiento e interconexión • Se reúnen todos los requisitos que debe cumplir el software
  • 15. Ph.D. Franklin Parrales 15 22/10/2021 Proceso de Software Carrera de Software Definición Análisis Diseño Desarrollo Pruebas Mantenim. Se concentra en cuatro características básicas: Estructura de datos Arquitectura del software Representaciones de interfaz Detalle procedimental (algoritmo) Modelo en cascada
  • 16. Ph.D. Franklin Parrales 16 22/10/2021 Proceso de Software Carrera de Software Modelo en cascada Definición Análisis Diseño Desarrollo Pruebas Mantenim. • Se llama también Implementación • Generación de código entendible por la máquina • Actualmente se investiga mucho sobre la manera de generar código automáticamente
  • 17. Ph.D. Franklin Parrales 17 22/10/2021 Proceso de Software Carrera de Software Modelo en cascada Definición Análisis Diseño Desarrollo Pruebas Mantenim. • Proceso de depuración de programas • Chequear la validez de las sentencias • Pruebas para detectar errores, asegurando que a partir de los datos de entrada si se genere la salida deseada
  • 18. Ph.D. Franklin Parrales 18 22/10/2021 Proceso de Software Carrera de Software Modelo en cascada Definición Análisis Diseño Desarrollo Pruebas Mantenim. • Corrección de errores no detectados en la etapa de pruebas • Posibles mejoras funcionales debidas a nuevos requerimientos del cliente • En esta fase se vuelven a aplicar todas las etapas anteriores sobre el software existente
  • 19. Ph.D. Franklin Parrales 19 22/10/2021 Proceso de Software Carrera de Software Desarrollo en Cascada (Sommerville) [Ingeniería de Software. Sommerville I.., 2002]
  • 20. Ph.D. Franklin Parrales 20 22/10/2021 Proceso de Software Carrera de Software Modelo en cascada Definición Análisis Diseño Desarrollo Pruebas Mantenim. LIMITACIONES • En la realidad no estrictamente secuencial (se traslapan las etapas) • El interesado debería exponer los requisitos en la etapa inicial, pero en realidad él lo hace a través de todo el proceso y esto complica las cosas • La primera versión del software llega al final del proceso, a veces el afán del cliente hace que la aplicación final no cumpla con los requerimientos
  • 21. Ph.D. Franklin Parrales 21 22/10/2021 Proceso de Software Carrera de Software Modelo en “V” • Es una evolución del anterior. En este, la verificación se desglosa en etapas de nivel de abstracción creciente. Análisis y Definición de los Requerimientos Diseño de la Arquitectura del Sistema Diseño Detallado Testeo de cada unidad (unit test) Instalación, Operación y Mantenimiento Prueba de Aceptación Prueba de Integración Implementación de cada unidad Plan de Pruebas para Cada Unidad Plan de Pruebas de Integración Plan de Pruebas de Aceptación ❑ En cada etapa de diseño se crea un plan de pruebas, que es el que guía la etapa de validación que le corresponde.
  • 22. Ph.D. Franklin Parrales 22 22/10/2021 Proceso de Software Carrera de Software Modelos Waterfall y “V” en la Práctica Análisis y Definición de los Requerimientos Diseño de la Arquitectura del Sistema Diseño Detallado Implementación Integración y Verificación Instalación, Operación y Mantenimiento Corregir fallas Corregir fallas Corregir fallas Corregir fallas Corregir fallas Corregir fallas Corregir fallas Corregir fallas Corregir fallas Corregir fallas Corregir fallas Cambiar un requerimiento Cambiar un requerimiento Cambiar un requerimiento Se acumulan correcciones hacia el final, con la consiguiente incertidumbre (ej., no se tiene certeza sobre cuánto falta hacer, porque no se sabe cuánto van a demandar los bloques azules)
  • 23. Ph.D. Franklin Parrales 23 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes. – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 24. Ph.D. Franklin Parrales 24 22/10/2021 Proceso de Software Carrera de Software Modelo Incremental • Aplica el enfoque lineal secuencial escalonadamente • Incrementos parciales de la herramienta completa (versiones) • Cada incremento agrega funcionalidad adicional o mejorada sobre el sistema • Cada etapa debe cumplir con los requisitos de las desarrolladas Incremento 2 Incremento n ... ... ... ... Análisis Diseño Código Pruebas Análisis Diseño Código Pruebas Análisis Diseño Código Pruebas Incremento 1
  • 25. Ph.D. Franklin Parrales 25 22/10/2021 Proceso de Software Carrera de Software Modelo Incremental • Ventajas: – Los clientes no tienen que esperar hasta que el sistema se entregue completamente para comenzar a hacer uso de él. – Los clientes pueden usar los incrementos iniciales como prototipo para precisar los requerimientos posteriores del sistema. – Minimización del riesgo de falla en el proyecto porque los errores se van corrigiendo progresivamente. • Problemas: – Adaptación de los requisitos del cliente para lograr incrementos pequeños (no mas de 20.000 líneas de código) que añadan funcionalidad al sistema. • Nota: Una evolución de este enfoque se conoce como Programación Extrema (XP-Extreme Programming).
  • 26. Ph.D. Franklin Parrales 26 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes. – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 27. Ph.D. Franklin Parrales 27 22/10/2021 Proceso de Software Carrera de Software Modelos evolutivos • Los modelos evolutivos son iterativos. • Se caracterizan por la manera en la que permiten desarrollar versiones cada vez más completas del software. Communicat ion Quick plan Const ruct ion of prot ot ype Mode ling Quick de sign Delive ry & Fe e dback Deployment comunicación Plan rápido Modelado Diseño rápido Construcción del prototipo Despliegue Entrega y Retroalimentación
  • 28. Ph.D. Franklin Parrales 28 22/10/2021 Proceso de Software Carrera de Software Recolección y refinamiento de requisitos Diseño rápido Producto Refinamiento del prototipo Evaluación del prototipo por el cliente Construcción del prototipo • basado en: – desarrollo de una implementación inicial – exposición a comentarios y crítica del usuario – refinamiento a través de diferentes versiones hasta llegar a un sistema adecuado dos tipos: prototipado evolutivo: trabajo con cliente para explorar sus requerimientos y entregar un sistema final evolución continua del prototipo mediante la agregación de funciones y características propuestas por el cliente prototipos desechables comprensión de las necesidades del cliente desarrollo de una definición mejorada de los requerimientos del sistema prototipos centrados en la experimentación de requisitos poco claros o complejos problemas prisas del cliente (utilización del prototipo como sistema final pasar elecciones debidas al prototipo a la implementación final (entorno, sistema operativo,...) estructura deficiente evolución del proceso difícil de gestionar herramientas y técnicas especiales poco adecuado para grandes sistemas
  • 29. Ph.D. Franklin Parrales 29 22/10/2021 Proceso de Software Carrera de Software Prototipado evolutivo (ciclo de vida iterativo) • Enfoque de desarrollo que se utiliza cuando no se conoce con seguridad lo que se quiere construir • Se comienza diseñando e implementando las partes más destacadas del sistema • La evaluación del prototipo proporciona la realimentación necesaria para aumentar y refinar el prototipo • El prototipo evoluciona y se transforma en el sistema final Concepto inicial Diseño e implementación del prototipo inicial Refinar el prototipo hasta que sea aceptable Completar y entregar el prototipo
  • 30. Ph.D. Franklin Parrales 30 22/10/2021 Proceso de Software Carrera de Software Modelo Espiral • Fue propuesto inicialmente por B. Boehm [Boehm, 1986, 1988] • Utilización de ciclos en lugar de sucesión de actividades. • Facilita el desarrollo rápido de versiones incrementales de software.
  • 31. Ph.D. Franklin Parrales 31 22/10/2021 Proceso de Software Carrera de Software Modelo Espiral • Una de las principales ventajas de este modelo de desarrollo es que considera directamente los riesgos técnicos en todas las etapas del proyecto, reduciéndolos antes de que se conviertan en problemáticos. Además, este modelo puede adaptarse y aplicarse a lo largo de la vida del software. • Los procesos que se llevan a cabo dentro de un modelo en espiral son los siguientes: – Comunicación con el cliente : Tareas para dinamizar la interacción desarrollador – cliente. – Planificación : Definición de recursos, tiempo y otra información relacionada con el proyecto. – Análisis de Riesgos : Evaluación de riesgos técnicos y de gestión. – Ingeniería : Construcción de una o más representaciones de la aplicación. – Construcción y Adaptación : Tareas de construcción, pruebas e instalación de la aplicación. – Evaluación del Cliente : Reacción del cliente frente a la aplicación obtenida a partir de la fase de ingeniería y de construcción.
  • 32. Ph.D. Franklin Parrales 32 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 33. Ph.D. Franklin Parrales 33 22/10/2021 Proceso de Software Carrera de Software Modelos concurrentes • Permite que un equipo de software represente elementos iterativos y concurrentes de cualquiera de los modelos de proceso descritos en esta unidad. • La figura muestra la representación esquemática de una actividad de ingeniería de software dentro de la actividad de modelado con el uso del enfoque de modelado concurrente
  • 34. Ph.D. Franklin Parrales 34 22/10/2021 Proceso de Software Carrera de Software Modelos concurrentes • El modelado concurrente define una serie de eventos que desencadenan transiciones de un estado a otro para cada una de las actividades, acciones o tareas de la ingeniería de software. • El modelado concurrente es aplicable a todos los tipos de desarrollo de software y proporciona un panorama apropiado del estado actual del proyecto. • En lugar de confinar las actividades, acciones y tareas de la ingeniería de software a una secuencia de eventos, define una red del proceso. • Cada actividad, acción o tarea de la red existe simultáneamente con otras actividades, acciones o tareas. • Los eventos generados en cierto punto de la red del proceso desencadenan transiciones entre los estados.
  • 35. Ph.D. Franklin Parrales 35 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 36. Ph.D. Franklin Parrales 36 22/10/2021 Proceso de Software Carrera de Software Desarrollo basado en componentes • Configura aplicaciones a partir de componentes de software preparados [Pressman, 2002] • Enfoque iterativo y evolutivo [Nierstrasz, 1999] • Se enmarca en un contexto más amplio: ingeniería del software basada en componentes Análisis de riesgos Planificación Comunicación con el cliente Buscar componentes en bibliotecas Construir la iteración del sistema Extraer componentes disponibles Poner nuevos componentes en biblioteca Evaluación del cliente Construcción y adaptación de la ingeniería Construir componentes no disponibles Identificar componentes candidatos
  • 37. Ph.D. Franklin Parrales 37 22/10/2021 Proceso de Software Carrera de Software Desarrollo basado en componentes • Un componente es una unidad ejecutable e independiente • Los componentes publican su interfaz y todas las interacciones son a través de ella – Una interfaz que se suministra define los servicios que ofrece el componente – Una interfaz que se solicita especifica qué servicios deben estar disponibles • Para el desarrollo con reutilización: – Debe ser posible encontrar los componentes reutilizables apropiados – Se debe confiar en que los componentes que se utilizan se comportan conforme a lo especificado y son fiables – Los componentes deben tener documentación asociada para ayudar a comprenderlos y adaptarlos a una nueva aplicación
  • 38. Ph.D. Franklin Parrales 38 22/10/2021 Proceso de Software Carrera de Software Ingeniería del software basada en componentes Análisis del Desarrollo de la arquitectura Desarrollo de componentes Ingeniería del dominio dominio del software Modelo del dominio reutilizables Modelo estructural Artefactos/ componentes reutilizables Desarrollo basado en de la reserva Cualificación de componentes Actualización de componentes componentes Diseño arquitectónico Análisis Adaptación de componentes Composición de Software de aplicaciones componentes Ingeniería de componentes Comprobación El objetivo de la ingeniería del dominio es identificar, construir, catalogar y diseminar un conjunto de componentes de software que tienen aplicación en el software actual y futuro dentro de un dominio de aplicación particular [Presman, 2001] ➢ Ingeniería del dominio ➢ Desarrollo basado en componentes
  • 39. Ph.D. Franklin Parrales 39 22/10/2021 Proceso de Software Carrera de Software Actividades de la ingeniería del dominio • Análisis del dominio: – Definir el dominio a investigar – Categorizar los elementos extraídos del dominio – Recoger una muestra representativa de las aplicaciones del dominio – Analizar cada aplicación de la muestra – Desarrollar un modelo de análisis para los objetos – Definir un lenguaje del dominio: hace posible la especificación y construcción posterior de aplicaciones dentro del dominio • Modelo del dominio: resultado de las actividades anteriores • Modelado estructural: Enfoque de ingeniería basado en tramas que opera efectuando la suposición consistente de que todo dominio de aplicación posee tramas repetidas (de función, de datos y de comportamiento) que tienen un potencial de reutilización – Todo dominio de aplicación se puede caracterizar por un modelo estructural – Un modelo estructural es un estilo arquitectónico reutilizable – Punto de estructura: estructura bien diferenciada dentro de un modelo estructural (genéricos: aplicaciones cliente, bases de datos, motores de cálculo, función de reproducción de informes, editor de aplicaciones)
  • 40. Ph.D. Franklin Parrales 40 22/10/2021 Proceso de Software Carrera de Software Actividades del desarrollo basado en componentes • Cualificación de componentes: Asegura que un componente candidato llevará a cabo la función necesaria, encajará en el estilo arquitectónico del sistema y tendrá la calidad requerida • Adaptación de componentes: Elimina conflictos de integración – Enmascaramiento de caja blanca, gris o negra • Composición de componentes: Ensambla componentes cualificados, adaptados y diseñados para la arquitectura establecida • Ingeniería de componentes: Diseño de componentes para su reutilización • Actualización de componentes: El software actual se reemplaza a medida que se dispone de nuevas versiones de componentes
  • 41. Ph.D. Franklin Parrales 41 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 42. Ph.D. Franklin Parrales 42 22/10/2021 Proceso de Software Carrera de Software Métodos Ágiles • Surgen como una reacción frente a las metodologías tradicionales – Frente a la idea de que el desarrollo de software es consistente, fiable, predecible y medible – Aceptar que no siempre es así y encontrar la mejor manera de aceptar los cambios • No proponen nuevas técnicas, sólo una forma distinta de afrontar el desarrollo de software
  • 43. Ph.D. Franklin Parrales 43 22/10/2021 Proceso de Software Carrera de Software Manifiesto Ágil • Firmado por los principales críticos de las metodologías tradicionales (y creadores de algunos de los métodos ágiles más populares) • 4 valores básicos: – Individuos y su interacción frente a procesos y herramientas – Software que funciona frente a documentación exhaustiva – Colaboración con el cliente frente a contratos – Respuesta al cambio frente a seguimiento de un plan
  • 44. Ph.D. Franklin Parrales 44 22/10/2021 Proceso de Software Carrera de Software Manifiesto Ágil: 12 principios 1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor. 2. Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente. 3. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible. 4. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
  • 45. Ph.D. Franklin Parrales 45 22/10/2021 Proceso de Software Carrera de Software Manifiesto Ágil: 12 principios 5. Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo. 6. El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara. 7. El software funcionando es la medida principal de progreso. 8. Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
  • 46. Ph.D. Franklin Parrales 46 22/10/2021 Proceso de Software Carrera de Software Manifiesto Ágil: 12 principios 9. La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad. 10.La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial. 11.Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados. 12.A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.
  • 47. Ph.D. Franklin Parrales 47 22/10/2021 Proceso de Software Carrera de Software Prácticas Básicas en Métodos Ágiles (Cockburn) • Entre 2 y 8 personas trabajando juntas – Comunicación y comunidad • Usuarios expertos junto al equipo de desarrollo – Realimentación continua • Iteraciones cortas – Tres meses como mucho, para favorecer pruebas y depuración • Pruebas automáticas – Las pruebas unitarias y funcionales estabilizan el código y permiten mejorarlo • Desarrolladores expertos – Mejora la velocidad de desarrollo entre 2 y 10 veces
  • 48. Ph.D. Franklin Parrales 48 22/10/2021 Proceso de Software Carrera de Software Métodos ágiles más utilizados • eXtreme Programming (XP) • Scrum • Crystal • Lean Development • Kanban • Feature Driven Development • Dynamic Systems Development Method • Adaptive Software Development • Pragmatic Programming • RUP?
  • 49. Ph.D. Franklin Parrales 49 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming (Beck) • El más popular de los métodos ágiles • Versiones con incrementos muy pequeños • Evolución constante del código • 5 valores: – Simplicidad – Comunicación – Retroalimentación – Coraje – Respeto
  • 50. Ph.D. Franklin Parrales 50 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming • Simplicidad – Se simplifica el diseño para agilizar el desarrollo y facilitar el mantenimiento – Para mantener la simplicidad es necesaria la refactorización del código – Simplicidad en la documentación: el código debe comentarse en su justa medida – Autoría colectiva del código y la programación por parejas La refactorización de código tiene el objetivo de que los métodos puedan leerse de la manera más fácil posible. En el mejor de los casos, los programadores externos que lean el código deberían poder captar la lógica interna del método.
  • 51. Ph.D. Franklin Parrales 51 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming • Comunicación – Para los programadores el código comunica mejor cuanto más simple sea – Las pruebas unitarias describen el diseño de las clases y los métodos al mostrar ejemplos concretos de cómo utilizar su funcionalidad – Los programadores se comunican gracias a la programación por parejas – La comunicación con el cliente es fluida porque forma parte del equipo de desarrollo
  • 52. Ph.D. Franklin Parrales 52 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming • Retroalimentación: – La opinión del cliente se conoce en tiempo real porque está integrado en el proyecto – Los ciclos cortos muestran resultados rápidamente – El código y la programación por parejas también son fuente de retroalimentación
  • 53. Ph.D. Franklin Parrales 53 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming • Coraje: – Diseñar y programar para hoy, no para mañana – Refactorizar cuando sea necesario – Desechar código obsoleto o complejo
  • 54. Ph.D. Franklin Parrales 54 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming • Respeto: – Propiedad colectiva del código – Alta calidad
  • 55. Ph.D. Franklin Parrales 55 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming • 12 reglas 1. El juego de la planificación 2. Entregas pequeñas 3. Metáfora 4. Diseño simple 5. Pruebas 6. Refactorización 7. Programación en parejas 8. Integración continua 9. Propiedad colectiva del código 10. Cliente presente 11. Semanas de 40 horas 12. Espacios comunes
  • 56. Ph.D. Franklin Parrales 56 22/10/2021 Proceso de Software Carrera de Software eXtreme Programming • Roles – Programador: código simple, pruebas – Cliente: historias, pruebas funcionales, prioridades – Tester: ayuda con las pruebas, mantiene pruebas funcionales y analiza resultados – Tracker: retroalimentación, estimaciones, evalúa objetivos – Coach: responsable del proceso – Consultor: externo, conocimientos técnicos – Manager: decisiones
  • 57. Ph.D. Franklin Parrales 57 22/10/2021 Proceso de Software Carrera de Software El Equipo XP (Programación Extrema) • “Clientes” – Definen el producto – Incluyen un dueño del producto • Que es el responsable de la visión del producto • “Programadores” – Escriben el código, diseñan la arquitectura, etc. • Validadores – “Investigan”, en busca de defectos – Son “optativos”, porque los clientes y programadores pueden cumplir sus funciones • Entrenadores – Un entrenador de programadores • Programador experimentado, para atender consultas, liderar en las decisiones importantes, y evaluar lo que hacen los otros – Si hace falta, un administrador de proyecto • No es imprescindible porque el equipo se auto-organiza • Otros – Si hacen falta: escritores, analistas ISO 9000, etc.
  • 58. Ph.D. Franklin Parrales 58 22/10/2021 Proceso de Software Carrera de Software Los “Clientes” • Son los responsables de establecer los requerimientos del sistema – Utilizando las estimaciones de costo que les proveen los “programadores” • Entre los “clientes” pueden haber: – Clientes reales de la empresa – Expertos de dominio (ej., analistas de negocios, científicos) – Diseñadores de interfaces al usuario • Proporción típica: 1 cada 3 programadores – O los necesarios para mantener ocupados a los programadores El Equipo XP
  • 59. Ph.D. Franklin Parrales 59 22/10/2021 Proceso de Software Carrera de Software Plan del Release • Release es cada “vendible” que se le entrega al usuario final • Se aconseja que demore unos tres meses como máximo • Empieza con una planificación, a cargo de los “clientes” – A cada requisito se le llama historia de usuario • Ej.: Un usuario que necesita tal cosa, opera el producto de tal manera, obtiene tal respuesta, etc. Casos puntuales y concretos. • …pero dejando los detalles para después – Los “programadores” los asisten, estimando el esfuerzo (o sea, tiempo) que demoraría cada historia • Para que puedan decidir qué dejar para un próximo release – Obtienen así el release plan Programación Extrema
  • 60. Ph.D. Franklin Parrales 60 22/10/2021 Proceso de Software Carrera de Software Plan de la Iteración • El release se divide en iteraciones – Unas 1 a 3 semanas c/u – Luego de cada iteración, se tiene un producto demostrable • …para ser evaluado por los “clientes” y verificado por los validadores • Al principio de cada iteración, los “clientes” determinan qué historias se van a hacer en ella – Empezando por las que son clave; la optimización va al final – Este plan puede ser modificado en base a las estimaciones (de costo) de los programadores • Queda así establecido lo que hace cada equipo en el resto de la iteración: – Los “programadores” implementan esas historias – Los “clientes” seleccionan y detallan las de la próxima iteración • …y atienden consultas de los programadores – O sea que los “clientes” reemplazan la documentación pesada – Los validadores (si los hay) ponen a prueba los builds que proveen los “programadores” Programación Extrema
  • 61. Ph.D. Franklin Parrales 61 22/10/2021 Proceso de Software Carrera de Software Los “Programadores” • Codifican en pares (pair programming) – Habitualmente, en una PC compartida, con teclado y mouse para c/u, más dos notebooks individuales • Para averiguar más, googlear “pairing workstation” – Es una alternativa a la técnica más tradicional: revisión de código – El objetivo es lograr un código confiable que pueda ser comprendido por todos • Antes de programar cualquier unidad, programan su código de prueba – Esto se llama Desarrollo Guíado por Pruebas (Test- Driven Development, o TDD) – Para estas pruebas automatizadas utilizan ejemplos preparados por los “clientes” – En C, el código de prueba de una unidad puede consistir de muchas llamadas a ese módulo, con diferentes parámetros, chequeándose las variables retornadas – Como las pruebas se automatizan, los proyectos necesitan pocos o ningún validador El Equipo XP
  • 62. Ph.D. Franklin Parrales 62 22/10/2021 Proceso de Software Carrera de Software Otras Técnicas Importantes • Colaboración – El ambiente de trabajo debe ser abierto – …con varios pizarrones para intercambiar ideas • Sugerencia: Sacarles fotos a los diagramas en el pizarrón – Todo código es de todos • Usar un sistema de control de versiones • Métricas – Como métrica de progreso del proyecto, se usa la suma del esfuerzo de las historias ya implementadas y verificadas • Y como métrica de lo que resta por hacerse, se usa la suma del esfuerzo de la historias que faltan – La cantidad de historias a hacer puede ser ajustada, en función de la velocidad (o sea, progreso / tiempo) que está logrando el equipo • Y hay bastantes más prácticas en XP… Programación Extrema
  • 63. Ph.D. Franklin Parrales 63 22/10/2021 Proceso de Software Carrera de Software El proceso de la programación extrema historias del usuario valores criterios de pruebas de aceptación plan de iteración diseño simple tarjetas CRC prueba unitaria integración continua incremento de software velocidad calculada del proyecto soluciones en punta prototipos rediseño programación por parejas pruebas de aceptación Lanzamiento El diseño XP sigue rigurosamente el principio MS (mantenlo sencillo). Un diseño sencillo siempre se prefiere sobre una representación más compleja. Se desalienta el diseño de funcionalidad adicional porque el desarrollador supone que se requerirá después
  • 64. Ph.D. Franklin Parrales 64 22/10/2021 Proceso de Software Carrera de Software El diseño en la programación extrema • XP estimula el uso de las tarjetas CRC como un mecanismo eficaz para pensar en el software en un contexto orientado a objetos. • Las tarjetas CRC (clase-responsabilidad- colaborador) identifican y organizan las clases orientadas a objetos que son relevantes para el incremento actual de software. • Las tarjetas CRC son el único producto del trabajo de diseño que se genera como parte del proceso XP.
  • 65. Ph.D. Franklin Parrales 65 22/10/2021 Proceso de Software Carrera de Software Tarjetas CRC • Clase - el nombre • Responsabilidades - lo que sabe y lo que hace • Collaboraciones - quiénes le ayudan Clase: Model Colaboradores: • View • Controller Responsabilidad: • Proporciona el núcleo de funcionalidad de la aplicación • Registra los View y Controller dependientes • Notifica a los componentes dependientes acerca de cambios en los datos
  • 66. Ph.D. Franklin Parrales 66 22/10/2021 Proceso de Software Carrera de Software Tarjetas CRC • Permiten una rápida visión de los elementos esenciales de las clases al encarar la descomposición • Se usan como técnica de diseño con participación de usuarios – Cada uno desempeña el rol de una clase – Cada uno describe lo que hace al “ejecutar” un determinado escenario de cierto caso de uso
  • 67. Ph.D. Franklin Parrales 67 22/10/2021 Proceso de Software Carrera de Software XP: eXtreme Programming • Ventajas – No es un producto de Microsoft. – Es parte de un movimiento llamado “Agile Development”. – Es una metodología ligera. – Es una corriente en boga. – Utiliza un modelo incrementar/Interactivo. – Trabaja con el cliente en sitio. – Control de cambios, es incremental. – Se programa entre dos personas. – Los requerimientos se construyen a través de experiencias. – Una buena técnica para un buen desarrollador. • Desventaja – No funciona como industria. – No funciona cuando se trabaja con equipos de trabajo grandes
  • 68. Ph.D. Franklin Parrales 68 22/10/2021 Proceso de Software Carrera de Software Métodos ágiles más utilizados • eXtreme Programming (XP) • Scrum • Crystal • Lean Development • Kanban • Feature Driven Development • Dynamic Systems Development Method • Adaptive Software Development • Pragmatic Programming • RUP?
  • 69. Ph.D. Franklin Parrales 69 22/10/2021 Proceso de Software Carrera de Software SCRUM (Ken Schwaber) • Basado en el método de desarrollo de Nonaka y Takeuchi • El nombre se refiere a una práctica del rugby en la que un balón que sale fuera se pone en juego con la colaboración de todo el equipo • No describe técnicas de desarrollo, sino relaciones entre los miembros del equipo • La idea básica es que el desarrollo de software es tan complejo que es inevitable que se produzcan cambios durante a lo largo del proceso.
  • 70. Ph.D. Franklin Parrales 70 22/10/2021 Proceso de Software Carrera de Software SCRUM • Tres fases: – pre-juego: planificación y arquitectura – desarrollo (o juego): sprints – post-juego: lanzamiento • Roles principales: – Scrum Master – Responsable de producto – Equipo SCRUM – Cliente – Gestores
  • 71. Ph.D. Franklin Parrales 71 22/10/2021 Proceso de Software Carrera de Software SCRUM • Los principios Scrum son congruentes con el manifiesto ágil y se utilizan para guiar actividades de desarrollo dentro de un proceso de análisis que incorpora las siguientes actividades estructurales: requerimientos, análisis, diseño, evolución y entrega. • Dentro de cada actividad estructural, las tareas del trabajo ocurren con un patrón del proceso llamado sprint. • El trabajo realizado dentro de un sprint se adapta al problema en cuestión y se define —y con frecuencia se modifica— en tiempo real por parte del equipo Scrum.
  • 72. Ph.D. Franklin Parrales 72 22/10/2021 Proceso de Software Carrera de Software SCRUM Desarrollo en sprints (ciclo de trabajo repetitivo) • Desarrollar: Definición de los cambios necesarios para la implementación de los requisitos del backlog en módulos, la apertura de los módulos, análisis del dominio, diseño, desarrollo, implementación, pruebas y documentación de los cambios. El Desarrollo consiste en el microproceso de descubrimiento, invención e implementación. • Integrar: Cierre de los módulos, creación de una versión ejecutable con los cambios que implementan los requisitos del backlog. • Revisar: Reunión de todos los equipos para presentar el trabajo y revisar el progreso, identificando y resolviendo posibles cuestiones y añadiendo nuevos elementos al backlog. Se revisan los riesgos y las respuestas apropiadas. • Ajustar: Consolidación de la información de la revisión de los módulos afectados.
  • 73. Ph.D. Franklin Parrales 73 22/10/2021 Proceso de Software Carrera de Software SCRUM 30 días SCRUM: reunión diaria de 15 minutos. Los miembros del equipo responden a preguntas básicas: 1) ¿Qué hiciste desde la última reunión Scrum? 2)¿Tienes algún obstáculo? 3)¿Qué harás antes de la próxima reunión? Aspectos con retraso ampliados por el equipo Al final del sprint se demuestra la nueva funcionalidad Cada 24 horas Retraso del sprint: Característica(s) asignadas para el sprint Retraso del producto Características del producto que desea el cliente con prioridad
  • 74. Ph.D. Franklin Parrales 74 22/10/2021 Proceso de Software Carrera de Software SCRUM • Retraso: lista de prioridades de los requerimientos o características del proyecto que dan al cliente un valor del negocio. Es posible agregar en cualquier momento otros aspectos al retraso (ésta es la forma en la que se introducen los cambios). El gerente del proyecto evalúa el retraso y actualiza las prioridades según se requiera. • Sprints: consiste en unidades de trabajo que se necesitan para alcanzar un requerimiento definido en el retraso que debe ajustarse en una caja de tiempo14 predefinida (lo común son 30 días). Durante el sprint no se introducen cambios (por ejemplo, aspectos del trabajo retrasado). Así, el sprint permite a los miembros del equipo trabajar en un ambiente de corto plazo pero estable.
  • 75. Ph.D. Franklin Parrales 75 22/10/2021 Proceso de Software Carrera de Software SCRUM • Reuniones Scrum: son reuniones breves (de 15 minutos, por lo general) que el equipo Scrum efectúa a diario. Hay tres preguntas clave que se pide que respondan todos los miembros del equipo: – ¿Qué hiciste desde la última reunión del equipo? – ¿Qué obstáculos estás encontrando? – ¿Qué planeas hacer mientras llega la siguiente reunión del equipo? • Un líder del equipo, llamado maestro Scrum, dirige la junta y evalúa las respuestas de cada persona. – La junta Scrum ayuda al equipo a descubrir los problemas potenciales tan pronto como sea posible. – Asimismo, estas juntas diarias llevan a la “socialización del conocimiento”, con lo que se promueve una estructura de equipo con organización propia.
  • 76. Ph.D. Franklin Parrales 76 22/10/2021 Proceso de Software Carrera de Software SCRUM • Demostraciones preliminares: entregar el incremento de software al cliente de modo que la funcionalidad que se haya implementado pueda demostrarse al cliente y éste pueda evaluarla. • Es importante notar que las demostraciones preliminares no contienen toda la funcionalidad planeada, sino que éstas se entregarán dentro de la caja de tiempo establecida
  • 77. Ph.D. Franklin Parrales 77 22/10/2021 Proceso de Software Carrera de Software Aspectos destacados de SCRUM • Roles – Product owner (PO) resposable de describir y priorizar los requisitos. – Team responsable de producir un "sprint" encuadrado en el tiempo (iteración) – Scrum master (SM) responsable de posibilitar las condiciones de trabajo en equipo • Prácticas – Micro feedback, como reuniones scrum diarias, sprint backlog, burn-down charts – Macro feedback y priorización por parte del propietario del producto en cada sprint, • Product backlog • Scrum no prescribe – Soluciones técnicas, métodos de trabajo, planes de avance del proyecto – Estos son responsabilidad del equipo para descubrirlos y adaptarlos según las necesidades. • Adecuado para proyectos con objetivos inciertos u objetivos móviles – O donde no se conoce del todo el camino para llegar
  • 78. Ph.D. Franklin Parrales 78 22/10/2021 Proceso de Software Carrera de Software Prácticas de Scrum • Cuadros de tiempo (time boxing) – El valor incremental de una actividad disminuye con el tiempo. – Beneficio 80/20 logrado dentro del cuadro de tiempo • Resultados potencialmente instalables – Tiempo de iteraciones ("sprints") encuadrado a 30 días (o menos) – Cada iteración ofrecerá valor personalizado y calidad de producción. • Reducir elaboración inicial (un día) – Especifique "todos" los requisitos generales para la acumulación de productos inicial • Principales casos de uso con escenarios, alt. historias del usuario • Roles de actores principales • Priorizar y volver a priorizar – Solo trabaje en lo que se pueda completar durante el próximo sprint (iteración) – Cuadro de tiempo de especificación y planificación: un día
  • 79. Ph.D. Franklin Parrales 79 22/10/2021 Proceso de Software Carrera de Software Concepción Elaboración Construcción Transición Iteraciones Iter #1 #2 Iter #3 #4 #5 #6 Iter #7 #8 RUP: descripción general (repaso para comparar con Scrum) Fases Disciplinas Requerimientos Análisis Diseño y Arquitectura Implementación Test
  • 80. Ph.D. Franklin Parrales 80 22/10/2021 Proceso de Software Carrera de Software Pre-project Sprints #1 #2 #3 #4 Scrum - Descripción general Disciplinas Sprints Requisitos iniciales Requerimientos Análisis Diseño y Arquitectura Implementación Test
  • 81. Ph.D. Franklin Parrales 81 22/10/2021 Proceso de Software Carrera de Software Hitos importantes • RUP • Scrum tiempo Vision Baseline Architecture Initial Capability Product Release Concepción Elaboración Construcción Transición 2-6 weeks per iteration ~15 % tiempo Vision Initial, high-level Product Backlog Pre-project Requirimientos Iniciales Sprints Any number of potential Product Releases 1 day 30 days per sprint Any number of potential Product Releases
  • 82. Ph.D. Franklin Parrales 82 22/10/2021 Proceso de Software Carrera de Software Métodos ágiles más utilizados • eXtreme Programming (XP) • Scrum • Crystal • Lean Development • Kanban • Feature Driven Development • Dynamic Systems Development Method • Adaptive Software Development • Pragmatic Programming • RUP?
  • 83. Ph.D. Franklin Parrales 83 22/10/2021 Proceso de Software Carrera de Software Crystal (Cockburn) • Conjunto de métodos de desarrollo • Incluye distintas metodologías que se pueden elegir y adaptar en función del proyecto • Cada metodología se identifica con un color que refleja su peso • Se pueden utilizar otros métodos ágiles como método de desarrollo • Desarrollo incremental con muchas entregas
  • 84. Ph.D. Franklin Parrales 84 22/10/2021 Proceso de Software Carrera de Software Crystal • Variantes más populares – Crystal Clear: para proyectos pequeños – Crystal Orange: para proyectos medianos
  • 85. Ph.D. Franklin Parrales 85 22/10/2021 Proceso de Software Carrera de Software Clear YellowOrange Red Crystal es una familia de metodologías porque cada proyecto es ligeramente diferente y necesita su propio método. • Las tecnologías cambian las técnicas. • Las culturas cambian las normas. • Las distancias cambian la comunicación. Cantidad de personas involucradas Criticidad (los defectos provocan la pérdida de ...) Comfort (C) Essential money (E) Life (L) 1 - 6 - 20 - 40 - 100 - 200 C6 C20 C40 C100 C200 D6 D20 D40 D100 D200 E6 E20 E40 E100 E200 L6 L20 L40 L100 L200 Discretionary money (D)
  • 86. Ph.D. Franklin Parrales 86 22/10/2021 Proceso de Software Carrera de Software Crystal Orange : alcance • Para proyectos D40: – Hasta 40 personas, mismo edificio • Pérdida de dinero discrecional – (puede extenderse hasta E50) • No para proyectos muy grandes – (sub equipo insuficiente) • No para proyectos de vital importancia – (verificación insuficiente) • (Described in Surviving OO Projects, Cockburn, 1998, pp. 77-93) Amber C6 C20 C40 C80 D6 D20 D40 D80 E6 E20 E40 E80 L6 L20 L40 L80
  • 87. Ph.D. Franklin Parrales 87 22/10/2021 Proceso de Software Carrera de Software Roles y equipos de Crystal Orange para 45 personas •Roles: •Sponsor, •Business expert, •Usage expert, •Technical facilitator, •Business analyst/designer, •Project Manager, •Architect, •Lead designer/programmer, •Designer/programmer, •UI designer, •Design Mentor, •Reuse Point, •Writer, •Tester •Teams: • System planning, •Project monitoring, •Architecture, •Technology, •Functions, •Infrastructure, •External test.
  • 88. Ph.D. Franklin Parrales 88 22/10/2021 Proceso de Software Carrera de Software C6 C10 D6 D10 E6 E10 Crystal Clear : scope • Para proyectos D6: – 3-6 personas, cerca o en la misma habitación – Pérdida de dinero discrecional • (puede extenderse a: proyecto E8) • No para grandes proyectos – (coordinación de grupo insuficiente) • No para proyectos de vital importancia – (verificación insuficiente) • (Described in Crystal Clear, Cockburn, 2004 also in Agile Software Development, Cockburn 2002)
  • 89. Ph.D. Franklin Parrales 89 22/10/2021 Proceso de Software Carrera de Software Crystal Clear roles y equipos para 3-8 personas •Required Roles: •sponsor, •senior designer, designer/programmer, •user (part-time) •Combined Roles: •coordinator, •business expert, •requirements gatherer •Teams: • single team of designer- programmers •Seating: •single big room, or adjacent offices
  • 90. Ph.D. Franklin Parrales 90 22/10/2021 Proceso de Software Carrera de Software Centrarse en las primeras 3 propiedades • ¡Debe hacer esto! – 1. Entrega frecuente: cada mes o dos – 2. Comunicación osmótica: sentarse uno al lado del otro – 3. Mejora reflexiva: hacer un taller de reflexión mensualmente
  • 91. Ph.D. Franklin Parrales 91 22/10/2021 Proceso de Software Carrera de Software ¡Simplemente comience a trabajar y manténgase en comunicación de buen humor con sus compañeros de equipo! • ¡Agregue estos como pueda! – 4. Seguridad personal: hable libremente sin temor a ser castigados – 5. Enfoque: sepa qué es lo más importante, tenga tiempo para trabajar en ello – 6. Fácil acceso a usuarios expertos – 7. Entorno técnico con • Integración frecuente: cada hora, diaria, 3 / semana • Pruebas automatizadas: pruebas unitarias, pruebas de aceptación • Gestión de la configuración: check-in, versionado
  • 92. Ph.D. Franklin Parrales 92 22/10/2021 Proceso de Software Carrera de Software Richness (“temperature”) of communication channel “cold” “hot” Communication Effectiveness 2 people at whiteboard 2 people on phone 2 people on email Videotape Paper Audiotape Crystal Principios de diseño
  • 93. Ph.D. Franklin Parrales 93 22/10/2021 Proceso de Software Carrera de Software Siete principios para el diseño 1. Prefiera la comunicación cara a cara – La comunicación interactiva cara a cara es el canal más barato y rápido para intercambiar información 2. El peso de la metodología es costoso 3. Use metodologías más pesadas para equipos más grandes / distribuidos 4. Utilice más reuniones(ceremonias) para mayor criticidad 5. Utilice más comentarios y comunicaciones, con menos entregables intermedios 6. Disciplina, habilidades, comprensión del proceso contrario, formalidad, documentación 7. La eficiencia es prescindible en actividades que no supongan un cuello de botella.
  • 94. Ph.D. Franklin Parrales 94 22/10/2021 Proceso de Software Carrera de Software Los procesos ágiles son fáciles de describir y comprender como ciclos anidados de diferentes duraciones. Proyecto Integración Día/Semana Iteración Entregable
  • 95. Ph.D. Franklin Parrales 95 22/10/2021 Proceso de Software Carrera de Software Para comprender Crystal (o cualquier proceso ágil), describa cada ciclo de forma independiente. Proyecto Entregable Entregable Iteración Iteración Iteraciones Día/Semana Integration Integration Día/semana Integrations Días Días Integrations Integrations
  • 96. Ph.D. Franklin Parrales 96 22/10/2021 Proceso de Software Carrera de Software Las actividades de cualquier día pueden pertenecer a diferentes ciclos Project Iteration Day Integration Episode Charter Plan Daily standup Design & Check-in Design & Check-in Build and test Design & Check-in Design & Check-in Build and test Daily standup Design & Check-in Design & Check-in Build and test Design & Check-in Design & Check-in Build and test Deliver Reflect and celebrate Plan (etc.) Wrapup
  • 97. Ph.D. Franklin Parrales 97 22/10/2021 Proceso de Software Carrera de Software Métodos ágiles más utilizados • eXtreme Programming (XP) • Scrum • Crystal • Lean Development • Kanban • Feature Driven Development • Dynamic Systems Development Method • Adaptive Software Development • Pragmatic Programming • RUP?
  • 98. Ph.D. Franklin Parrales 98 22/10/2021 Proceso de Software Carrera de Software Lean Software Development (Charette) • Proviene de la industria de la automoción (Toyota) • No pretende cambiar el proceso de desarrollo, sino todo el funcionamiento de la empresa
  • 99. Ph.D. Franklin Parrales 99 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development
  • 100. Ph.D. Franklin Parrales 100 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development 1) Ver y eliminar el waste-desperdicio • Evitar definir requerimientos a detalle muy temprano cuando se sabe que se van a solicitar muchos cambios. • Apurar el desarrollo aun sabiendo que el software no se va a probar inmediatamente. • Incorpora la calidad temprano – Eliminar la mala de costumbre de no probar bien lo desarrollado y dejarle el trabajo a QA que ya “nos informará si algo salió mal”. – Automatizar pruebas y solucionar defectos apenas estos se detecten y no dejarlos para después. – Eliminar la causa raíz de los incidentes asegurando que estos nunca más vuelvan a ocurrir.
  • 101. Ph.D. Franklin Parrales 101 22/10/2021 Proceso de Software Carrera de Software • Desperdicio es – Cualquier cosa que interfiera con darles a los clientes lo que valoran • En el momento y lugar donde proporcionará el mayor valor 1. Trabajo parcialmente terminado – Documentación no codificada, código no sincronizado, no probado, no documentado o no implementado 2. Características adicionales – “Es mejor para los desarrolladores surfear que escribir código que no será necesario” Jeff Sutherland, CTO PatientKeeper [YAGNI] 3. Reaprendizaje – Benefíciese y conserve las experiencias, mejore el producto y el proceso 4. Cambiar de tarea – Toma tiempo, distrae de los resultados, retrasa todas las tareas en la entrega de valor 5. Transferencias – El conocimiento tácito se pierde en las transferencias. Como regalar una bicicleta y un libro de instrucciones a alguien que no sepa montar. Utilice equipos integrados, experiencia y conversación. 6. Retrasos – Los desarrolladores toman decisiones críticas cada 15 minutos. Ponga la información a disposición. – Otros retrasos: aprobación de proyectos, personas, aprobación de cambios, funcionalidad, pruebas. 7. Defectos – La prueba es diseño. Haga que los defectos sean inusuales. Descubra los defectos a tiempo. Pruebe de forma automática y manual, temprano y con frecuencia. La verificación final no debe descubrir nuevos defectos de forma rutinaria Lean Development – Evite los siete desperdicios
  • 102. Ph.D. Franklin Parrales 102 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development 2) Ampliar el aprendizaje • Pretender tener un diseño definido a detalle asumiendo que éste no va a cambiar no es realista. Sobre todo para un sistema complejo y con mucha incertidumbre. • Se sustituyen los requisitos por presentar las pantallas a los usuarios. • Herramientas: – Tool 3: Feedback. – Tool 4: Iteraciones. – Tool 5: Sincronización (builds cada día del producto y tests automatizados, comunica restricciones y deja la solución emerger). – Tool 6: Set-Based Development (converger con restricciones en lugar de decisiones tempranas)
  • 103. Ph.D. Franklin Parrales 103 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development 3) Decidir lo más tarde posible • Dejar las decisiones para el final introduciendo opciones en el desarrollo, aunque cueste más desarrollar las opciones (la reducción del riesgo lo compensa). • Situación donde he visto que mi idea era mejor que otras pero debido a que ésta no estaba contemplada en el plan inicial no fue considerada. En este caso todos los requerimientos se definieron muy temprano y no se consideró que a medida que se progresa se gana más conocimiento y las ideas evolucionan en el proyecto. • Herramientas: – Tool 7: Options Thinking (retrasa decisiones importantes si hay incertidumbre). – Tool 8: El último momento responsable. – Tool 9: Tomando decisiones, 2 aproximaciones depende del contexto, depth-first para decisiones claras o un experto vs breadth first para retrasar decisiones.
  • 104. Ph.D. Franklin Parrales 104 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development 4) Reaccionar/Liberar tan rápido como sea posible • Liberar lo más rápido posible y con una buena velocidad mejora el aprendizaje. • Transparencia en el proceso. • Herramientas: – Tool 10: Sistemas Pull y planificaciones solo alto nivel con Information Radiators, ver también Kanban. – Tool 11: Teoría de colas, mirar tiempo de ciclo en lugar de trabajo hecho, y hacer releases pequeñas para disminuir tamaño de cola. – Tool 12: Cost of Delay, hay que dar al equipo un modelo económico (Trade-off triangle) para que tome sus propias decisiones acorde a lo que la compañía persigue. Mejor si los 3 ejes tienen las mismas unidades de medida. Así se reducirán los tiempos de ciclo y se respetarán las fechas.
  • 105. Ph.D. Franklin Parrales 105 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development 5) Potenciar el equipo • Las organizaciones de software no pueden funcionar a pleno rendimiento, hay que dejar un tiempo para invertir en formación, reestructuración, y organizar recursos para crecer. • Herramientas: – Tool 13: Autodeterminación, el manager se convierte en empowerer y facilitador del trabajo, introducir feedback loops, implementa basado en principios y no en procesos. – Tool 14: Motivacion, comunica el propósito de los proyectos, el objetivo debe ser conseguible. Comunica a los developers con los clientes directamente. Recibirás un mayor compromiso con el trabajo de las iteraciones. – Tool 15: El liderazgo dentro del equipo emerge, no se elige desde arriba sino que es algo que se debe ganar. – Tool 16: Experiencia, promueve las comunidades de expertos y los estándares.
  • 106. Ph.D. Franklin Parrales 106 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development 6) Crear la integridad • Integridad conceptual significa que los componentes separados del sistema funcionan bien juntos, como en un todo, logrando equilibrio entre la flexibilidad, mantenibilidad, eficiencia y capacidad de respuesta. • Flujo de información entre lo que debe construir y la construcción debe ser al mismo tiempo, no secuencialmente. No es válida la documentación, mejor la comunicación cara a cara. • Pruebas de aceptación para probar el todo. • Herramientas: – Tool 17: Integridad percibida, foco en el valor para el cliente, utilizar modelos en lenguaje de negocio como contrato entre equipo y clientes. – Tool 18: Integridad conceptual, la solución debe funcionar como un todo. La comunicación debe ser efectiva sobre todo en la fase de diseño. Mejor si el diseño no se basa en un documento de requerimientos sino hacer sesiones continuas de diseño. Si algo ya funciona y lo puedes reaprovechar hazlo. – Tool 19: Refactoring, la arquitectura debe mantenerse sana durante la evolución. Simplicidad, claridad, mantenibilidad. – Tool 20: Testing, deben probar que hace lo que debe, automatizar al máximo e integrar en la construcción diaria.
  • 107. Ph.D. Franklin Parrales 107 22/10/2021 Proceso de Software Carrera de Software Siete principios Lean Software Development 7) Véase todo el conjunto • Piensa en grande, actúa en pequeño, equivócate rápido; aprende con rapidez. • Hay que ver el conjunto, no solo el producto o el proceso, y siempre aplicando sentido común. • Herramientas: – Tool 21: Medidas, para mejorar y decidir hay que medir. Medidas de información, no de rendimiento individual. Por ejemplo asignar los defectos a features, no al desarrollador. – Tool 22: Contratos, se busca la colaboración, ser flexible con el alcance. El cliente debe entender que si el riesgo surge deberá incrementar el coste, no puede ser coste y fecha fija.
  • 108. Ph.D. Franklin Parrales 108 22/10/2021 Proceso de Software Carrera de Software Métodos ágiles más utilizados • eXtreme Programming (XP) • Scrum • Crystal • Lean Development • Kanban • Feature Driven Development • Dynamic Systems Development Method • Adaptive Software Development • Pragmatic Programming • RUP?
  • 109. Ph.D. Franklin Parrales 109 22/10/2021 Proceso de Software Carrera de Software ¿Qué es Kanban? ● Surgió en los años 40 ● Sistema de producción de Toyota ● Producción basada en la demanda de los clientes. ● Centrada en el Servicio ● Kanban significa tarjeta con signos o señal visual.
  • 110. Ph.D. Franklin Parrales 110 22/10/2021 Proceso de Software Carrera de Software Principios ● A) Comenzar con lo actual El método Kanban se inicia con las funciones y procesos que ya se tienen y estimula cambios continuos, incrementales y evolutivos al sistema. ● B) Aplicar cambios incrementales Todos deben estar de acuerdo en que la manera de hacer mejoras en el sistema es el cambio continuo, gradual y evolutivo. Los cambios fuertes pueden parecer más eficaces, pero fracasan más debido a la resistencia y el miedo en la organización. ● C) Respetar lo establecido Para facilitar el cambio futuro conviene respetar los roles, responsabilidades y cargos actuales, eliminando los temores iniciales. Esto permite obtener un mayor apoyo a la iniciativa Kanban. ● D) Liderazgo en todos los niveles Kanban promueve acciones de liderazgo desde las personas de bajo rango hasta los gerentes.
  • 111. Ph.D. Franklin Parrales 111 22/10/2021 Proceso de Software Carrera de Software Prácticas 1. Visualizar el flujo de trabajo 2. Eliminar interrupciones. Limitar trabajo WIP 3. Gestionar el flujo Flujo rápido e ininterrumpido
  • 112. Ph.D. Franklin Parrales 112 22/10/2021 Proceso de Software Carrera de Software Prácticas 4. Hacer las políticas explícitas ○ Fomentar la visibilidad 5. Circuitos de retroalimentación 6. Mejorar colaborando ○ usando modelos y el método científico
  • 113. Ph.D. Franklin Parrales 113 22/10/2021 Proceso de Software Carrera de Software Beneficios 1. Estímulo del rendimiento: Análisis y estimación para medir el rendimiento. Detección de problemas y ajuste del trabajo. Flexibilidad. 2. Organización y colaboración: Enfoque visual. Colaboración en tiempo real. Accesibilidad y comunicación. 3. Distribución del trabajo: Visión rápida y ahorro de tiempo. El flujo constante de tareas reduce el tiempo perdido. Cada uno elige sus tareas.
  • 114. Ph.D. Franklin Parrales 114 22/10/2021 Proceso de Software Carrera de Software Ejemplo Fuente: http://metodokanbansoftwareagil.blogspot.com
  • 115. Ph.D. Franklin Parrales 115 22/10/2021 Proceso de Software Carrera de Software Herramientas: Trello
  • 116. Ph.D. Franklin Parrales 116 22/10/2021 Proceso de Software Carrera de Software Herramientas: Wekan (open source)
  • 117. Ph.D. Franklin Parrales 117 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 118. Ph.D. Franklin Parrales 118 22/10/2021 Proceso de Software Carrera de Software ¿Que es un método formal? • Modelo matemático para – Diseñar. – Especificar. – Implementar. – Verificar. Sistemas informáticos. aA, bA a+bA
  • 119. Ph.D. Franklin Parrales 119 22/10/2021 Proceso de Software Carrera de Software Métodos formales • Los métodos formales son técnicas matemáticas, a menudo soportadas por herramientas, para el desarrollo de sistemas software y hardware. • Su rigor matemático le permite a los ingenieros analizar y verificar sus modelos en cualquier parte del ciclo de vida del desarrollo. • En la Ingeniería de Software los métodos formales se utilizan para: – Las políticas de los requisitos – La especificación – Las pruebas de correspondencia entre la especificación y los requisitos – Las pruebas de correspondencia entre el código fuente y la especificación – Pruebas de correspondencia entre el código máquina y el código fuente
  • 120. Ph.D. Franklin Parrales 120 22/10/2021 Proceso de Software Carrera de Software Métodos formales [Balzer R. A 15 Year Perspective on Automatic Programming. IEEE Transactions on Software Engineering, vol.11, núm.11, páginas 1257-1268, Noviembre 1985 ] Especificación Tranformación Interactiva Transformación Automática Optimización Validación de Especificación Mantenimiento Especificación de alto nivel (prototipo) Desarrollo Formal Desiciones Especificación de bajo nivel Código Fuente Especificación Informal
  • 121. Ph.D. Franklin Parrales 121 22/10/2021 Proceso de Software Carrera de Software Ventajas de los métodos formales • Especificación – La ingeniería de Software tiene problemas para la especificación de comportamientos. – La especificación formal proporciona una mayor precisión. – Detección de ambigüedades y omisiones. • Verificación – “Se esta construyendo el producto correcto.” – Con los métodos comunes a pesar de la generación de manuales de pruebas rigurosos solo se logra eliminar los errores más evidentes. – Las técnicas de verificación formal dependen de especificaciones matemáticas precisas. • Validación – “Se esta construyendo el producto correcto.” – Utilizado principalmente para sistemas complejos como aquellos de modelado y simulación.
  • 122. Ph.D. Franklin Parrales 122 22/10/2021 Proceso de Software Carrera de Software Ventajas de los métodos formales • Se comprende mejor el sistema. • La comunicación con el cliente mejora ya que se dispone de una descripción clara y no ambigua de los requisitos del usuario. • El sistema se describe de manera más precisa. • El sistema se asegura matemáticamente que es correcto según las especificaciones. • Mayor calidad software respecto al cumplimiento de las especificaciones. • Mayor productividad
  • 123. Ph.D. Franklin Parrales 123 22/10/2021 Proceso de Software Carrera de Software Desventajas de los métodos formales • El desarrollo de herramientas que apoyen la aplicación de métodos formales es complicado y los programas resultantes son incómodos para los usuarios. • Los investigadores por lo general no conocen la realidad industrial. • Es escasa la colaboración entre la industria y el mundo académico, que en ocasiones se muestra demasiado dogmático. • Se considera que la aplicación de métodos formales encarece los productos y ralentiza su desarrollo
  • 124. Ph.D. Franklin Parrales 124 22/10/2021 Proceso de Software Carrera de Software Los 10 mandamientos (Bowen, Hinchley) 1. Seleccionarás la notación adecuada. 2. Formalizarás, pero no de más. 3. Estimarás los costes. 4. Poseerás un experto en métodos formales a tu disposición. 5. No abandonarás tus métodos formales de desarrollo. 6. Documentarás suficientemente. 7. No comprometerás los estándares de calidad. 8. No serás dogmático. 9. Comprobarás, comprobarás y volverás a comprobar. 10. Reutilizarás cuanto puedas.
  • 125. Ph.D. Franklin Parrales 125 22/10/2021 Proceso de Software Carrera de Software Los 7 mitos de Hall 1. Los métodos formales pueden garantizar la corrección del software 2. Todos los métodos formales se refieren a la corrección de programas 3. Son de utilidad solamente para sistemas de altas prestaciones/alta integridad (safety-critical) 4. Su uso requiere una alta cualificación o entrenamiento matemático 5. Incrementan el coste de desarrollo 6. Son inadecuados y no serán aceptados por los clientes 7. No se usan en la realidad en proyectos software de gran escala
  • 126. Ph.D. Franklin Parrales 126 22/10/2021 Proceso de Software Carrera de Software Fracasos de la Aplicación de MF • Algoritmo de división del procesador Pentium (1993) – Costo: 475 millones de dólares, credibilidad de Intel • Explosión de la misión espacial Ariane 5 (1996) – Costo: 500 millones de dólares • Orbitador climático de Marte (1998) – Costo: 125 millones de dólares
  • 127. Ph.D. Franklin Parrales 127 22/10/2021 Proceso de Software Carrera de Software Logros de la Aplicación de MF • Metéor, Matra Transport, France: – Herramienta: Atelier-B – Resultado: No se encontró ningún error durante el testing de 80000 líneas de código. • SPOT 4, CS-CI, France: – Herramienta: IFAD VDM-SL Toolbox – Resultado: Se redujo un 38% menos de código fuente y un 36% menos de esfuerzo total
  • 128. Ph.D. Franklin Parrales 128 22/10/2021 Proceso de Software Carrera de Software Métodos formales OO Conceptos básicos Fundamentos matemáticos básicos Fundamentos sobre OO Proceso de desarrollo de software Modelos matemáticos Lógica de primer orden Especificaciónes algebraicas Redes de Petri Lógica temporal Métodos semi- formales Métodos generalistas Métodos orientados a sistemas reactivos Métodos orientados a componentes Métodos formales Métodos basados en lógica de primer orden Métodos basados en formalismos algebraicos Métodos basados en redes de Petri Métodos basados en lógica temporal
  • 129. Ph.D. Franklin Parrales 129 22/10/2021 Proceso de Software Carrera de Software Clasificación de métodos Formales La clasificación más común se realiza en base al modelo matemático subyacente en cada método, de esta manera podrían clasificarse en: • Especificaciones basadas en lógica de primer orden y teoría de conjuntos: permiten especificar el sistema mediante un concepto formal de estados y operaciones sobre estados. Los datos y relaciones/funciones se describen en detalle y sus propiedades se expresan en lógica de primer orden. La semántica de los lenguajes está basada en la teoría de conjuntos. Los métodos de este tipo más conocidos son: Z, VDM y B. • Especificaciones algebraicas: proponen una descripción de estructuras de datos estableciendo tipos y operaciones sobre esos tipos. Para cada tipo se define un conjunto de valores y operaciones sobre dichos valores. Las operaciones de un tipo se definen a través de un conjunto de axiomas o ecuaciones que especifican las restricciones que deben satisfacer las operaciones. Métodos más conocidos: Larch, OBJ, TADs.
  • 130. Ph.D. Franklin Parrales 130 22/10/2021 Proceso de Software Carrera de Software Clasificación de métodos Formales • Especificación de comportamiento: – Métodos basados en álgebra de procesos: modelan la interacción entre procesos concurrentes. Esto ha potenciado su difusión en la especificación de sistemas de comunicación (protocolos y servicios de telecomunicaciones) y de sistemas distribuidos y concurrentes. Los más conocidos son: CCS,CSP y LOTOS. – Métodos basados en Redes de Petri: una red de petri es un formalismo basado en autómatas, es decir, un modelo formal basado en flujos de información. Permiten expresar eventos concurrentes. Los formalismos basados en redes de petri establecen la noción de estado de un sistema mediante lugares que pueden contener marcas. Un conjunto de transiciones (con pre y post condiciones) describe la evolución del sistema entendida como la producción y consumo de marcas en varios puntos de la red.
  • 131. Ph.D. Franklin Parrales 131 22/10/2021 Proceso de Software Carrera de Software Clasificación de métodos Formales – Métodos basados en lógica temporal: se usan para especificar sistemas concurrentes y reactivos. Los sistemas reactivos son aquellos que mantienen una continua interacción con su entorno respondiendo a los estímulos externos y produciendo salidas en respuestas a los mismos, por lo tanto el orden de los eventos en el sistema no es predecible y su ejecución no tiene por qué terminar.
  • 132. Ph.D. Franklin Parrales 132 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 133. Ph.D. Franklin Parrales 133 22/10/2021 Proceso de Software Carrera de Software ¿Cuál es el más adecuado? Modelo de proceso Desempeño con requisitos y arquitectura no predefinidos Produce software altamente fiable Gestión de riesgos Permite correcciones sobre la marcha Visión del progreso por el Cliente y el Jefe del proyecto Codificar y corregir Bajo Bajo Bajo Alto Medio Desarrollo En cascada Bajo Alto Bajo Bajo Bajo Desarrollo Evolutivo Alto Medio Medio Alto Alto Desarrollo formal de sistemas Bajo Alto Bajo a Medio Bajo Bajo Desarrollo basado en reutilización Medio Bajo a Alto Bajo a Medio Alto Alto Desarrollo Incremental Bajo Alto Medio Bajo Bajo Desarrollo Espiral Alto Alto Alto Medio Medio
  • 134. Ph.D. Franklin Parrales 134 22/10/2021 Proceso de Software Carrera de Software Metodología Tradicionales vs Ágiles Metodologías Tradicionales Metodologías Agiles Basadas en normas provenientes de estándares seguidos por el entorno de desarrollo Basadas en heurísticas provenientes de prácticas de producción de código Cierta resistencia a los cambios Especialmente preparados para cambios durante el proyecto Impuestas externamente Impuestas internamente (por el equipo) Proceso mucho más controlado, con numerosas políticas/normas Proceso menos controlado, con pocos principios. El cliente interactúa con el equipo de desarrollo mediante reuniones El cliente es parte del equipo de desarrollo Más artefactos Pocos artefactos Más roles Pocos roles Grupos grandes y posiblemente distribuidos Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio La arquitectura del software es esencial y se expresa mediante modelos Menos énfasis en la arquitectura del software Existe un contrato prefijado No existe contrato tradicional o al menos es bastante flexible
  • 135. Ph.D. Franklin Parrales 135 22/10/2021 Proceso de Software Carrera de Software Diferencias por las características del Proyecto Modelo de Proceso Tamaño del Proceso Tamaño del Equipo Complejidad del Problema RUP Medio / Extenso Medio / Extenso Medio / Alto ICONIX Pequeño / Medio Pequeño / Medio Pequeño / Medio XP Pequeño / Medio Pequeño Medio / Alto SCRUM Pequeño / Medio Pequeño Medio / Alto
  • 136. Ph.D. Franklin Parrales 136 22/10/2021 Proceso de Software Carrera de Software Cabe destacar: • El retrasar las decisiones en un proyecto de software permite potenciar el valor del producto tanto para el cliente como al equipo o empresa que desarrolla • Para que un grupo de desarrollo adopte una metodología ágil debe poseer experiencia trabajando con metodologías tradicionales, ya que la experiencia es la que predomina en los mementos cruciales del proyecto, además debe tener la capacidad de ser equipos auto-gestionados, altamente motivados y con gran innovación
  • 137. Ph.D. Franklin Parrales 137 22/10/2021 Proceso de Software Carrera de Software Cabe destacar: • Las metodologías ágiles permiten disminuir costos y brindar flexibilidad a los proyectos de software donde la incertidumbre está presente • El uso de metodologías tradicionales es esencial al inicio en un equipo de desarrollo de software • Las metodologías ágiles se deberían aplicar en proyectos donde exista mucha incertidumbre donde el entorno es volátil, donde los requisitos no se conocen con exactitud, mientras que las metodologías tradicionales obligan al cliente a tomar las decisiones al inicio del proyecto.
  • 138. Ph.D. Franklin Parrales 138 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 139. Ph.D. Franklin Parrales 139 22/10/2021 Proceso de Software Carrera de Software Rational Unified Process (RUP) • RUP es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos • RUP tiene 3 características importantes: – Es un proceso dirigido por Casos de Uso (CU) – Es un proceso Centrado en la Arquitectura – Es un proceso Iterativo e Incremental
  • 140. Ph.D. Franklin Parrales 140 22/10/2021 Proceso de Software Carrera de Software ¿Qué propone Rational Unified Process (RUP)? • Indica – Actividades – Roles – Workflow – Artefactos QUÉ tareas hacer QUIÉN las hace CUÁNDO se hace QUÉ documentos entregar
  • 141. Ph.D. Franklin Parrales 141 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 142. Ph.D. Franklin Parrales 142 22/10/2021 Proceso de Software Carrera de Software Rational Unified Process (RUP). Etapas
  • 143. Ph.D. Franklin Parrales 143 22/10/2021 Proceso de Software Carrera de Software Concepción Elaboración Construcción Transición Iteraciones Iter #1 #2 Iter #3 #4 #5 #6 Iter #7 #8 RUP: descripción general Fases Disciplinas Requerimientos Análisis Diseño y Arquitectura Implementación Test
  • 144. Ph.D. Franklin Parrales 144 22/10/2021 Proceso de Software Carrera de Software Fases del RUP • Concepción (inception) – Establecer una visión y alcance empresarial – Identificar la funcionalidad básica • Elaboración – Establecer requisitos de detalle y visión técnica – Realizar análisis y diseño de alto nivel – Identificar riesgos y crear un plan de desarrollo • Construcción – Crear iteraciones de software de calidad de producción, probado e integrado • Transición – Prueba beta y capacita a los usuarios sobre el terreno – Identificar y corregir deficiencias • Todas las disciplinas se aplican en todas las fases. – Requisitos, análisis, diseño, implementación, prueba
  • 145. Ph.D. Franklin Parrales 145 22/10/2021 Proceso de Software Carrera de Software RUP: Organización de Modelos ▪ M. de Casos de Uso del Negocio (Business Use- Case Model) ▪ M. de Objetos del Negocio (Business Object Model) ▪ M. de Casos de Uso (Use-Case Model) ▪ M. de Análisis (Analysis Model) ▪ M. de Diseño (Design Model) ▪ M. de Despliegue (Deployment Model) ▪ M. de Datos (Data Model) ▪ M. de Implementación (Implementation Model) ▪ M. de Pruebas (Test Model)
  • 146. Ph.D. Franklin Parrales 146 22/10/2021 Proceso de Software Carrera de Software Modelado de software Construcción de Software Ingeniería de requerimientos Diseño y Arquitectura de Software
  • 147. Ph.D. Franklin Parrales 147 22/10/2021 Proceso de Software Carrera de Software Modelado de software Modelo de Casos de Uso Modelo de Análisis Modelo de Diseño Modelo de Despliegue Modelo de Implementación Modelo de Prueba especificado por realizado por distribuido por implementado por verificado por Transición del MCU hacia el MA
  • 148. Ph.D. Franklin Parrales 148 22/10/2021 Proceso de Software Carrera de Software Rational Unified Process • Ventajas – Desarrollo iterativo. – Utilizan la metodologíaUML (Unified Modeling Language). – Produce artefactos (Componentes). – Modelo de software visual. – Proceso complejo. – Conveniente para sistemas grandes. • Desventaja – No tener personal preparado en la metodología. – Deber ir en consistencia con la gestión del proyecto
  • 149. Ph.D. Franklin Parrales 149 22/10/2021 Proceso de Software Carrera de Software Contenido • Modelado de procesos – Introducción a los modelos de proceso • Tipos de modelos – Cascada – Incremental – Evolutivo – Concurrentes – Desarrollo basado en componentes – Otros Desarrollos de software (Agile) – Métodos formales • Proceso unificado – Fases del proceso unificado • Evaluación y mejora del proceso
  • 150. Ph.D. Franklin Parrales 150 22/10/2021 Proceso de Software Carrera de Software Evaluación y mejora del proceso • La existencia de un proceso del software no es garantía de que: – el software se entregue a tiempo – que satisfaga las necesidades de los consumidores – que tenga las características técnicas que conducirán a características de calidad de largo plazo • El proceso en sí debe evaluarse para garantizar que cumple con ciertos criterios de proceso básicos que se haya demostrado que son esenciales para el éxito de la ingeniería de software
  • 151. Ph.D. Franklin Parrales 151 22/10/2021 Proceso de Software Carrera de Software Evaluación y mejora del proceso • En las últimas décadas se han propuesto numerosos enfoques para la evaluación y mejora de un proceso del software: – Método de evaluación del estándar CMMI para el proceso de mejora: proporciona un modelo de cinco fases para evaluar el proceso: inicio, diagnóstico, establecimiento, actuación y aprendizaje. – Evaluación basada en CMM para la mejora del proceso interno: proporciona una técnica de diagnóstico para evaluar la madurez relativa de una organización de software; usa el SEI CMM como la base de la evaluación. – SPICE (ISO/IEC 15504): estándar que define un conjunto de requerimientos para la evaluación del proceso del software. El objetivo del estándar es ayudar a las organizaciones a desarrollar una evaluación objetiva de cualquier proceso del software definido. – ISO9001:2000 para software: estándar genérico que se aplica a cualquier organización que desee mejorar la calidad general de los productos, sistemas o servicios que proporciona. Por tanto, el estándar es directamente aplicable a las organizaciones y compañías de software
  • 152. Ph.D. Franklin Parrales 152 22/10/2021 Proceso de Software Carrera de Software Final de la unidad MODELOS DE PROCESO Unidad 2