SlideShare a Scribd company logo
1 of 121
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 1
22/10/2021
Modelos de proceso del
software
Unidad 2
Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo
para uso de los cursos de Introducción a la Ingeniería de Software
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 2
22/10/2021
Objetivo general de la Unidad 2
Identificar el ciclo de vida del software a través de
los estándares IEEE para diferenciar los modelos
de desarrollo de software
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 3
22/10/2021
3
En el desarrollo de software nos
encontramos con la siguiente situación
Ciclos de
Vida del
SOFTWARE
Metodologías de
Desarrollo del
SOFTWARE
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 4
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 5
22/10/2021
Contenido
• Proceso del software
– Definición de proceso de software
– Estándares relacionados con el proceso
software: IEEE/EIA (ISO/IEC) 12207,
SWEBOK, CMMI, PMBOK
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 6
22/10/2021
¿Que queremos decir con proceso de software?
Deseos,
necesidades,
Especificaciones,
…
Software
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 7
22/10/2021
¿Qué es el proceso del software?
• Proceso seguido por una organización para el
desarrollo del software
• Este proceso incluye todas las fases del ciclo de
vida clásico
• Este proceso se define de manera general para
todas las aplicaciones de una organización
• Igualmente se definen tareas especificas a cada
aplicación en particular
• No existe un proceso de software universal. Las
características de cada proyecto (equipo de
desarrollo, recursos, etc.) exigen que el proceso
sea configurable
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 8
22/10/2021
Definición del proceso de software
• Proceso: colección de actividades de trabajo, acciones y
tareas que se realizan cuando va a crearse algún producto
terminado.
– Cada una de las actividades, acciones y tareas se encuentra
dentro de una estructura o modelo que define su relación tanto
con el proceso como entre sí.
• Propósito del proceso de desarrollo de Software
– La producción eficaz y eficiente de un producto software que
reúna los requisitos del cliente.
– Este proceso es intensamente intelectual, afectado por la
creatividad y juicio de las personas involucradas.
Requisitos nuevos
o modificados
Sistema nuevo
o modificado
Proceso de Desarrollo
de Software
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 9
22/10/2021
Características de un proceso de
desarrollo de software
• Proporciona pautas para el
desarrollo eficiente de
software de calidad.
• Reduce el riesgo y aumenta la
previsibilidad
• Promueve una visión y una
cultura comunes
• Presenta las mejores
prácticas actuales
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 10
22/10/2021
¿Qué es un proceso de desarrollo de software?
Define
• Quién va a hacer qué
• Cuándo hacerlo, y
• Cómo alcanzar un objetivo determinado
Proceso de desarrollo de software
Requisitos nuevos o modificados
Sistema nuevo o modificado
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 11
22/10/2021
Elementos del proceso de desarrollo
▪ Quién: Las Personas participantes que
desempeñan uno o más Roles específicos.
▪ Qué: Un Artefacto es producido por un Rol en una
de sus Actividades. Estos se especifican utilizando
Notaciones específicas. Las Herramientas apoyan
la elaboración de los Artefactos.
▪ Cómo y Cuándo: Las Actividades son una serie
de pasos que lleva a cabo un Rol durante el
proceso de desarrollo. El avance del proyecto está
controlado mediante hitos que establecen un
determinado estado de terminación de ciertos
Artefactos.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 12
22/10/2021
Contenido
• Proceso del software
– Definición de proceso de software
– Estándares relacionados con el proceso
software: IEEE/EIA (ISO/IEC) 12207,
SWEBOK, CMMI, PMBOK
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 13
22/10/2021
Procesos Primarios del Ciclo de Vida
Adquisición
Mantenimiento
Operación
Desarrollo
Suministro
Procesos de Soporte al Ciclo de Vida
Documentación
Gestión de la Configuración
Aseguramiento de la Calidad
Verificación
Validación
Revisión Conjunta
Auditoría
Resolución de Problemas
Procesos Organizacionales del Ciclo de Vida
Administración/Gestión Infrastructura
Mejoramiento Capacitación
IEEE/EIA 12207
Software Life Cycle Processes
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 14
22/10/2021
SWEBOK Guide = 10 Knowledge Areas
Mapped TO ISO/IEC 12207:1995 processes
Calidad de Software
Herramientas y Métodos de la Ingeniería de Software
Proceso de Ingeniería de Software
Administración/Gestión del Software
Gestión de la Configuración del Software
Mantenimiento
Prueba
Construcción
Diseño
Requerimientos
Procesos
primarios
Procesos de Soporte
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 15
22/10/2021
Guide to the Software Engineering Body of Knowledge
2004 Version
Software
Construction
Software
Maintenance
Software Testing
Basic Concepts
of Construction
Managing
Construction
Software
Maintenance
Fundamentals
Key Issues in
Software
Maintenance
Techniques for
Maintenance
Sofware
Testing
Fundamentals
Test Levels
Test Techniques
Test Related
Measures
Test
Process
Software Design
Software Design
Fundamentals
Key Issues in
Software Design
Software Structure
and Architecture
Software Design
Quality Analysis
and Evaluation
Software Design
Notations
Software
Requirements
Software
Requirements
Fundamentals
Requirements
Process
Requirements
Elicitation
Requirements
Specification
Requirements
Validation
Requirements
Analysis
Software Design
Strategies and
Methods
Practical
Considerations
Practical
Considerations
Maintenance
Process
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 16
22/10/2021
Slide 16 of 146
CMMI Staged Representation - 5 Niveles de Madurez
Nivel 5
Inicial
Nivel 1
Los procesos son impredecibles, mal controlados, reactivos.
Repetible
Nivel 2
Los procesos se planifican, documentan, ejecutan,
supervisan y controlan a nivel de proyecto. Suele ser
reactivo (aparecen los problemas y se solucionan)
Definido
Nivel 3 Los procesos están bien caracterizados y
comprendidos. Los procesos, estándares,
procedimientos, herramientas, etc. se definen a nivel
organizacional (Organización X). Proactivo (se
identifican problemas potenciales y como mitigarlos)
Gestionado
Nivel 4
Los procesos se controlan mediante
técnicas estadísticas y otras técnicas
cuantitativas.
Optimizado
El rendimiento del proceso se
mejora continuamente a través
de mejoras tecnológicas
incrementales e innovadoras.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 17
22/10/2021
Maturity Level Project Managment Engineering Process Management Support
5
Optimizing
Organizational Innovation & Deployment Causal Analysis & Resolution
4
Quantitatively
Managed
Quantitative Project Mngt Organizational Process Performance
3
Defined
Integrated Project Mngt
Risk Management
Requirements Development
Technical Solution
Product Integration
Verification
Validation
Organizational Process Focus
Organizational Process Definition
Organizational Training
Decision Analysis & Resolution
2
Managed
Project Planning
Project Monitoring & Control
Supplier Agreement Mngt
Requirements Mngt Measurement & Analysis
Process & Product Quality Assurance
Configuration Mngt
1
Initial
CMMI Process Areas
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 18
22/10/2021
PMIBOK
Representative
Software
development
Life
Cycle
Prueba
Evaluación
Evaluación
Análisis
de riesgo
Modelo 1
Modelo 2
Modelo 3
Requerimiento
negocio
Requerimientos
sistema
Diseño
conceptual
Diseño
lógico
Diseño
físico
Diseño
final
Requerimientos
subsistemas
Requerimientos
de la unidad
Entregar
Operación y
mantenimiento
Evaluar
Construir Diseñar
Identificar
Modelo 4
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 19
22/10/2021
Overlap of Process Groups in a Phase
(PMBOK® Guide, 2000, p. 31)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 20
22/10/2021
Relationships Among Process Groups and
Knowledge Areas (PMBOK® Guide 2000, p. 38)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 21
22/10/2021
Relationships
Among
Process
Groups
and
Knowledge
Areas
(PMBOK®
Guide
2000,
p.
38)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 22
22/10/2021
PMBOK
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 23
22/10/2021
Exposiciones
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 24
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 25
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
– Definición y etapas
– Ámbito general de: Requerimientos, análisis,
diseño y pruebas de software
• Modelos de desarrollo: tradicionales vs
alternativos
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 26
22/10/2021
Ciclo de Vida del Software
• Consiste en determinar:
– las fases productivas de un proyecto,
– los objetivos de cada fase productiva, y
– los productos obtenidos en cada una de estas
fases así como sus características.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 27
22/10/2021
Ciclo de vida de un proyecto de Software
Gestión y
recursos
Inicio Terminación
Fase
inicial
Fase
final
Fase
implementación
La producción del sistema da inicio, se
concluyen las instalaciones y se estabiliza el
sistema. Se desarrollan las actividades
rutinarias de operación y mantenimiento
En la fase inicial se efectúa la identificación
de necesidades, problema u oportunidad.
Requiere de documentar y armar un
preproyecto. Se efectúan los análisis de
soluciones y se desarrolla un requerimiento
de cotización.
Se efectúan los análisis de propuestas,
diseño detallado, las negociaciones
convenientes y se da la contratación
Se inician los preparativos y la recepción de
la solución, se capacita al personal, se
efectúan pruebas piloto y pruebas de
aceptación
tiempo
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 28
22/10/2021
Fases de un proyecto de tecnología
100 %
Porcentaje
de
avance
Factibilidad
• Formulación de proyecto
• Estudio de factibilidad
• Diseño de estrategia
• Protocolo de aprobación
Planeación y diseño
• Plan de actividades
• Costo y programa de
implementación
• Términos contractuales
y condiciones
• Planeación detallada
Implementación
• Preparación
• Entrega
• Instalación
• Pruebas
Producción
• Afinación
• Mantenimiento
Puesta a punto
de operación
Contratación
Aprobación
Plena
disponibilidad
Preproyecto
Cierre
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 29
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
– Definición y etapas
– Ámbito general de: Requerimientos, análisis,
diseño y pruebas de software
• Modelos de desarrollo: tradicionales vs
alternativos
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 30
22/10/2021
Ingeniería de requerimientos
el cliente y los desarrolladores
definen el propósito y objetivos
del sistema
resultado: descripción del
sistema en términos de
participantes (actores) y
funciones (casos de uso)
actores: entidades externas
que interactúan con el
sistema (incluyen roles como
usuarios finales u otros
sistemas con los que
interactúa el sistema)
casos de uso: secuencias de
eventos que describen todas
las acciones posibles entre un
actor y el sistema para una
función específica.
se acuerdan requisitos no
funcionales. Por ejemplo:
el distribuidor de billetes
debe estar disponible al
menos un 95% del tiempo
el distribuidor de billetes
debe dar respuesta en menos
de un segundo después de
seleccionada la transacción
Nombre del caso de uso: CompraBillete
Actor participante: Iniciado por Viajero
Precondición:
1. El Viajero se para frente al distribuidor automático de billetes
Flujo de eventos:
2. El Viajero selecciona las estaciones de origen y destino
3. El DistribuidorDeBilletes muestra el precio del billete
4. El Viajero inserta una cantidad de dinero que, al menos, debe
ser igual que el precio del billete
5. El DistribuidorDeBilletes emite el billete especificado al Viajero y
devuelve el cambio si es necesario
Postcondición:
6. El Viajero coge el billete y el cambio
Requisitos especiales:
Si la transacción no ser termina después de un minuto de
inactividad, el DistribuidorDeBilletes devuelve todo el dinero
insertado
ReservaBilletes
CompraBillete
Viajero
Anulación reserva
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 31
22/10/2021
Análisis
• Se produce un modelo correcto, completo, consistente, claro,
realista y verificable
• Transformación de los casos de uso en un modelo que
describe por completo el sistema y que se usará en el diseño
• Descubrimiento y resolución con el cliente de ambigüedades
e inconsistencias en el modelo de casos de uso
Transacción
Moneda
BilleteTren
Zona
da como resultado
válido para
Saldo
cantidad pagada
Papel
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 32
22/10/2021
Diseño
• diseño del sistema
– definición de los objetivos de diseño
– descomposición del sistema en subsistemas
abordables por equipos
– selección de estrategias para la construcción
(plataformas hardware y software, almacenamiento
de datos persistentes, control de acceso,...)
– resultado: descripción de las estrategias,
descomposición en subsistema
• diseño de objetos:
– definición de objetos e interfaces de subsistemas,
reestructuración del modelo de objetos para lograr
los objetivos de diseño, optimización del modelo
para mejorar el rendimiento,...
– resultado: modelo de objetos detallado
• actividades del diseño
– diseño arquitectónico
– especificación de los subsistemas
– diseño de interfaz
– diseño de componentes
– diseño de la estructura de datos
– diseño procedimental (algoritmos)
Comprador
IU Solicitud
de pago
Gestor de
pedidos
Confirmación
de pedidos
Planificador
de pagos
Solicitud
de pago
Procesamiento de
solicitudes de pago
Procesamiento
de facturas
Factura
Gestión facturas
comprador
Gestión de planificación
de pagos
Gestión de
cuentas
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 33
22/10/2021
Validación
Usuarios
<<subsystem>>
Gestión Máquinas
Subgrupo
<<subsystem>>
Gestión
Subgrupos-Instalaciones
<<subsystem>>
Gestión Sistema
<<subsystem>>
Gestión
Instalaciones
<<subsystem>>
Mantenimientos
de Gestión
<<subsystem>>
Gestión Mantenimiento
Correctivo
<<subsystem>>
Gestión Trabajos
Externos
<<subsystem>>
Gestión Mantenimiento
Preventivo
<<subsystem>>
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 34
22/10/2021
Validación
Usuarios
<<subsystem>>
Gestión Máquinas
Subgrupo
<<subsystem>>
Gestión
Subgrupos-Instalaciones
<<subsystem>>
Gestión Sistema
<<subsystem>>
Gestión
Instalaciones
<<subsystem>>
Mantenimientos
de Gestión
<<subsystem>>
Gestión Mantenimiento
Correctivo
<<subsystem>>
Gestión Trabajos
Externos
<<subsystem>>
Gestión Mantenimiento
Preventivo
<<subsystem>>
Gestión
Máquinas
<<subsystem>>
Gestión Características
Máquinas
Gestión Tareas
Máquinas
Alta Instalaciones
Baja Instalaciones
Modificación Instalaciones
Operario
(from Validación Usuarios)
Administrador
(from Validación Usuarios)
Validar Usuario
(from Validación Usuarios)
<<include>>
<<include>>
<<include>>
Consulta Instalaciones
<<include>>
Alta Características-Maq
Baja Características-Maq
Modificación Características-Maq
Operario
(from Validación Usuarios)
Administrador
(from Validación Usuarios)
Validar Usuario
(from Validación Usuarios)
<<include>>
<<include>>
<<include>>
Consulta Características-Maq
<<include>>
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 35
22/10/2021
Alta Características-Maq
Baja Características-Maq
Modificación Características-Maq
Operario
(from Validación Usuarios)
Administrador
(from Validación Usuarios)
Validar Usuario
(from Validación Usuarios)
<<include>>
<<include>>
<<include>>
Consulta Características-Maq
<<include>>
Nombre Alta Características Máquina
Prioridad Media
Actor Administrador
Extends Ninguno
Includes Validar Usuario
Pre-Condiciones 1. El usuario está identificado.
2. El usuario selecciona la opción de altas en el
formulario.
Post-Condiciones 1. Los datos de la nueva característica quedan
guardados si el proceso finaliza correctamente.
2. Los datos de la nueva característica no quedan
guardados si se produce algún error durante el
proceso.
Descripción 1. El sistema muestra el formulario de altas.
2. El usuario introduce los datos.
3. El sistema realiza la validación de los datos.
4. Si la característica ya existe [A].
5. Si los datos no son correctos [B].
6. El usuario selecciona la opción de Guardar.
7. El sistema guarda los datos.
8. Si se guarda correctamente se visualiza un mensaje,
si hay algún problema el sistema avisa con un
mensaje de error.
Excepciones El proceso se puede cancelar en cualquier momento.
A. Si la característica ya existe se visualizan sus datos.
B. Datos incorrectos, ir a punto 2.
MENSAJES
: Administrador Opciones Frm
Cliente
CTRL Alta
Instalación
Form_Alta Validar Datos
INSTALACION
Resultado Alta
Visualizar Mensaje
Seleccionar
Crea()
Mostrar(Datos)
Introducir Datos()
Cubrir_Datos()
Comprobar()
Comprobar()
Obtener Datos
Crear_Alta()
Construir
Construir
Visualizar Resultado
Crea()
Si no Existe
Fin Si
Fin Si
Datos Correctos
...
Datos no Correctos
Mostrar
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 36
22/10/2021
Alta Características-Maq
Baja Características-Maq
Modificación Características-Maq
Operario
(from Validación Usuarios)
Administrador
(from Validación Usuarios)
Validar Usuario
(from Validación Usuarios)
<<include>>
<<include>>
<<include>>
Consulta Características-Maq
<<include>>
Nombre Alta Características Máquina
Prioridad Media
Actor Administrador
Extends Ninguno
Includes Validar Usuario
Pre-Condiciones 1. El usuario está identificado.
2. El usuario selecciona la opción de altas en el
formulario.
Post-Condiciones 1. Los datos de la nueva característica quedan
guardados si el proceso finaliza correctamente.
2. Los datos de la nueva característica no quedan
guardados si se produce algún error durante el
proceso.
Descripción 1. El sistema muestra el formulario de altas.
2. El usuario introduce los datos.
3. El sistema realiza la validación de los datos.
4. Si la característica ya existe [A].
5. Si los datos no son correctos [B].
6. El usuario selecciona la opción de Guardar.
7. El sistema guarda los datos.
8. Si se guarda correctamente se visualiza un mensaje,
si hay algún problema el sistema avisa con un
mensaje de error.
Excepciones El proceso se puede cancelar en cualquier momento.
A. Si la característica ya existe se visualizan sus datos.
B. Datos incorrectos, ir a punto 2.
Visualizar
Formulario
Comprobar
Datos
Mensaje "Error
Datos"
Comprobar Existencia
de la Instalación
Visualizar Datos
Instalación
Guardar Datos
Instalación
Mensaje
"Error"
Datos Incorrectos
Datos Correctos
Si Existe
Mensaje "Instalación
guardada"
Administrador Validado
Seleccionar
Formulario
Introducir
Datos
Seleccionar
Guardar
No Existe
Error al Guardar
Instalación Guardada
Administrador (from Alta Máquinas)
Sistema (from Validar Usuario)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 37
22/10/2021
Especificacion
DelProducto
descripción
precio
articuloID
CatalogoDe
Productos
1..n
1
Articulo
Encargado
LineaDeVenta
cantidad
1
n
1..n
0..1
Tienda
dirección
nombre
n
1
n
1
Pago
cantidad
Venta
fecha
hora
1
1..n
1
n
1
1
Cliente
1
1
Registro
1..n
1
1
1
1
1
Cajero
1
1
1
1
1
1
1
1
Pagada-mediante
1
1
Iniciada-por Registra-ventas-en
Iniciado-por
1..n
1
Alberga
Abastece
n
1
Capturada-en
1
1
1
n
Registra-completas
Contenida-en
1
1..n Utilizado-por
n
1
1..n
1
Contiene
Descrita-por
1
n
1..n
0..1
Registra-venta-de
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 38
22/10/2021
Servidor SGBD
Red Local Impresora
Cliente
Cliente
ODBC
TCP/IP
TCP/IP
TCP/IP
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 39
22/10/2021
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 40
22/10/2021
Implementación y Pruebas
• Implementación
– traducción del modelo de
diseño (por ejemplo, del
modelo de objetos) en
código fuente
– incluye:
• implementación de
atributos y métodos de
cada objeto
• integración de todos los
objetos para que
funcionen como un solo
sistema
• Pruebas
– pruebas de unidad:
comparación del modelo de
diseño con cada objeto y
subsistema
– pruebas de integración:
combinaciones de
subsistemas y comparación
con el modelo de diseño del
sistema
– pruebas del sistema:
ejecución de casos típicos y
excepcionales, y comparación
con el modelo de
requerimientos
– objetivo: descubrir la mayor
cantidad posible de errores
que se puedan reparar antes
de entregar el sistema
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 41
22/10/2021
Mantenimiento
• Mejoras en el sistema (nuevas funciones,
facilidad de uso,...)
• Corrección de errores
• Adaptación a cambios en el entorno
(hardware, software, legislación,...)
• Actividad más costosa del ciclo de vida de
un producto software
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 42
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 43
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
– Concepto de modelo de Desarrollo de software
– Modelos tradicionales: Cascada, prototipo y
espiral.
– Modelos ágiles: Scrum, Xp, Kanban, TDD(Test-
DrivenDesign)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 44
22/10/2021
Introducción a los modelos de desarrollo
• 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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 45
22/10/2021
Introducción a los modelos de desarrollo
• 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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 46
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
– Concepto de modelo de Desarrollo de software
– Modelos tradicionales: Cascada, prototipo y
espiral.
– Modelos ágiles: Scrum, Xp, Kanban, TDD(Test-
DrivenDesign)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 47
22/10/2021
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
1
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 48
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 49
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 50
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 51
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 52
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 53
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 54
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 55
22/10/2021
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)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 56
22/10/2021
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
2
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 57
22/10/2021
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.
3
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 58
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 59
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
– Concepto de modelo de Desarrollo de software
– Modelos tradicionales: Cascada, prototipo y
espiral.
– Modelos ágiles: Scrum, Xp, Kanban, TDD(Test-
DrivenDesign)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 60
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 61
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 62
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 63
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 64
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 65
22/10/2021
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.
1
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 66
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 67
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 68
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 69
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 70
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 71
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 72
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 73
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 74
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 75
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 76
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 77
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 78
22/10/2021
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
2
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 79
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 80
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 81
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 82
22/10/2021
eXtreme Programming
• Coraje:
– Diseñar y programar para hoy, no para
mañana
– Refactorizar cuando sea necesario
– Desechar código obsoleto o complejo
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 83
22/10/2021
eXtreme Programming
• Respeto:
– Propiedad colectiva del código
– Alta calidad
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 84
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 85
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 86
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 87
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 88
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 89
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 90
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 91
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 92
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 93
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 94
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 95
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 96
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 97
22/10/2021
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.
3
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 98
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 99
22/10/2021
Prácticas
1. Visualizar el flujo
de trabajo
2. Eliminar interrupciones. Limitar trabajo
WIP
3. Gestionar el flujo Flujo rápido e ininterrumpido
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 100
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 101
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 102
22/10/2021
Ejemplo
Fuente: http://metodokanbansoftwareagil.blogspot.com
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 103
22/10/2021
Herramientas: Trello
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 104
22/10/2021
Herramientas: Wekan (open source)
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 105
22/10/2021
Test Driven Development
Es una técnica de diseño e implementación de
software, que se centra primero en hacer pruebas
unitarias antes de comenzar a escribir el código.
Aunque involucra la palabra test…
TDD no es una técnica de pruebas.
4
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 106
22/10/2021
Test-driven development
(Desarrollo impulsado por pruebas)
• Las pruebas unitarias se pueden escribir después,
durante o incluso antes de la codificación.
– test-driven development: Escribe pruebas, luego
escribe código para aprobarlas.
• Imagina que nos gustaría agregar un método
subtractWeeks para una clase Date, que
desplaza una fecha hacia atrás en el tiempo por el
número dado de semanas.
• Escriba código para probar este método antes de
que se haya escrito el código del comportamiento.
– Luego, una vez que implemente el método, ud. sabrá si
funciona.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 107
22/10/2021
Test Driven Development
• Menos errores, menos depuración
• Más confianza, más productividad
• Mejor diseño
Objetivos
• Las pruebas dirigen el desarrollo
• Simplificar el diseño y desacoplar
• Escribir el código más simple que
pueda funcionar
Forma de pensar
en el desarrollo
software
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 108
22/10/2021
Ciclo de Desarrollo de TDD
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 109
22/10/2021
Ciclo de Desarrollo de TDD
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 110
22/10/2021
Las tres partes del test
• Escribir la
especificación del
requisito
convirtiéndolo en
test automático.
Arrange
(Preparar)
• Ejecutar la
funcionalidad a
probar.
Act
(Actuar) • Refactorizar
código.
Assert
(Afirmar)
La refactorización de código tiene el objetivo de que los métodos puedan
leerse de la manera más fácil posible.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 111
22/10/2021
public void PruebaMultiplicación()
{
assertEquals(6, FuncionesMatematicas.multiplicacion(2,3));
}
public class FuncionesMatematicas {
public static int multiplicacion (int a, int b) {
return 0;
}
}
public class FuncionesMatematicas {
public static int multiplicacion (int a, int b) {
return 6;
}
}
Arrange
Assert
Act
public class FuncionesMatematicas {
public static int multiplicacion (int a, int b) {
return a*b;
}
}
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 112
22/10/2021
Pruebas unitarias
• Propósito: Encontrar
defectos en un módulo o
función.
• Normalmente las pruebas
unitarias son hechas por
el programador del
módulo.
• Para probar una función
debes:
– Llamarla
– Tener subfunciones para
invocar
Test Driver
Your function
Stub Stub
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 113
22/10/2021
Pruebas Unitarias
• Descripción
– Su propósito es encontrar errores en la
lógica, datos o algoritmos en componentes o
subsistemas individuales
– Realizado por los desarrolladores del
componente
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 114
22/10/2021
Especificación de un prueba unitaria
Parámetro Valor
Parámetro1 Valor del parámetro 1
Parámetro2 Valor del parámetro 2
Parámetro3 Valor del parámetro 3
Retorno Valor retornado o bien ‘-’.
Estado Inicial Condiciones del estado inicial del sistema o bien ‘-’.
Excepción Excepción que se devuelve en este caso o bien ‘-’.
Efecto Efectos laterales para este caso o bien ‘-’.
Observación Qué sucedió?
Resultado No probado/Cumple/No Cumple
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 115
22/10/2021
Código CP-001
Caso de prueba Ingreso de usuarios
Responsable Desarrolladores
Descripción de la
prueba
• Se ingresan los siguientes parámetros:
Parámetro1 Valor del parámetro 1
Parámetro2 Valor del parámetro 2
Parámetro3 Valor del parámetro 3
• Hacer clic en el botón entrar.
Requisito previo Haber ingresado correctamente al sistema.
Resultado
esperado
El usuario será registrado en la aplicación.
Resultado
obtenido
Se ha ingresado correctamente el usuario.
Estado Exitoso
Observaciones
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 116
22/10/2021
Frameworks
• Ofrecen un conjunto de utilidades, motores
de ejecución para pruebas unitarias
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 117
22/10/2021
Contenido
• Proceso del software
• El ciclo de vida del Software
• Modelos de desarrollo: tradicionales vs
alternativos
Conclusiones
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 118
22/10/2021
Metodologías de desarrollo: Ágiles vs Tradicionales
Metodologías Ágiles Metodologías Tradicionales
Desarrollo iterativo Análisis, diseño, implementación y
pruebas
Ágil, dinámico y muy flexible.
Preparados para cambios durante el
proyecto
Estricto, rígido y con cierta resistencia a
cambios (toma de requisitos inicial)
Entre las principales: XP, SCRUM,
ICONIX , AUP, que son las más
aceptadas dentro de estas
metodologías
Dentro de estas metodologías las más
conocidos son Rational Unified Process
(RUP) y Microsoft Solution Framework
(MSF)
El cliente es parte del equipo de
desarrollo
El cliente interactúa con el equipo de
desarrollo mediante reuniones
Grupos pequeños (<10 integrantes) y
trabajando en el mismo sitio
Grupos grandes y posiblemente
distribuidos
Pocos artefactos Más artefactos
Pocos roles Más roles
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 119
22/10/2021
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
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 120
22/10/2021
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.
Introducción a la Ingeniería de Software Carrera de Software
Ph.D. Franklin Parrales 121
22/10/2021
Modelos de proceso del
software
Unidad 2
Final de la unidad

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
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
monik1002
 

What's hot (20)

AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosAD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
 
PSW Unidad 3: Implementación y seguridad del proceso de software
PSW Unidad 3: Implementación y seguridad del proceso de softwarePSW Unidad 3: Implementación y seguridad del proceso de software
PSW Unidad 3: Implementación y seguridad del proceso de software
 
Gestion de la configuracion del software
Gestion de la configuracion del softwareGestion de la configuracion del software
Gestion de la configuracion del software
 
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
 
IDR Unidad 2: Elicitación de requerimientos
IDR Unidad 2: Elicitación de requerimientosIDR Unidad 2: Elicitación de requerimientos
IDR Unidad 2: Elicitación de requerimientos
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
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
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
 
Fundamentos del diseño y Garantías de Calidad del Software
Fundamentos del diseño y Garantías de Calidad del SoftwareFundamentos del diseño y Garantías de Calidad del Software
Fundamentos del diseño y Garantías de Calidad del Software
 
IEEE 830 1998: Software Requirements Specification (Especificación de requisi...
IEEE 830 1998: Software Requirements Specification (Especificación de requisi...IEEE 830 1998: Software Requirements Specification (Especificación de requisi...
IEEE 830 1998: Software Requirements Specification (Especificación de requisi...
 
EP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraEP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestra
 
Unidad 2 Ingeniería de requerimientos
Unidad 2 Ingeniería de requerimientosUnidad 2 Ingeniería de requerimientos
Unidad 2 Ingeniería de requerimientos
 
MOD Unidad 1: Fundamentos de modelado
MOD Unidad 1: Fundamentos de modeladoMOD Unidad 1: Fundamentos de modelado
MOD Unidad 1: Fundamentos de modelado
 
4. Diseño e Implementación de Software
4. Diseño e Implementación de Software4. Diseño e Implementación de Software
4. Diseño e Implementación de Software
 
Sqa
SqaSqa
Sqa
 
Metricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccionMetricas del proyecto de Software - introduccion
Metricas del proyecto de Software - introduccion
 
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
 
Ingenieria requerimientos
Ingenieria requerimientosIngenieria requerimientos
Ingenieria requerimientos
 

Similar to IIS Unidad 2 Modelos de proceso del software

Similar to IIS Unidad 2 Modelos de proceso del software (20)

PSW Unidad 1 PROCESO DE SOFTWARE
PSW Unidad 1 PROCESO DE SOFTWAREPSW Unidad 1 PROCESO DE SOFTWARE
PSW Unidad 1 PROCESO DE SOFTWARE
 
2.1 proyecto software
2.1 proyecto software2.1 proyecto software
2.1 proyecto software
 
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
 
Temas Unidad 2
Temas Unidad 2Temas Unidad 2
Temas Unidad 2
 
Resumen swebok original
Resumen swebok originalResumen swebok original
Resumen swebok original
 
Estandares ieee
Estandares ieeeEstandares ieee
Estandares ieee
 
Proceso de desarrollo de sofware
Proceso de desarrollo de sofwareProceso de desarrollo de sofware
Proceso de desarrollo de sofware
 
Estandares ieee
Estandares ieeeEstandares ieee
Estandares ieee
 
Estandares ieee
Estandares ieeeEstandares ieee
Estandares ieee
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del software
 
2. El proceso del software
2. El proceso del software2. El proceso del software
2. El proceso del software
 
Sesión 2: El proceso del software
Sesión 2: El proceso del softwareSesión 2: El proceso del software
Sesión 2: El proceso 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
 
Estándares de calidad y normas iso
Estándares de calidad y normas isoEstándares de calidad y normas iso
Estándares de calidad y normas iso
 
Aseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software IIAseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software II
 
Proceso desarrollo software
Proceso desarrollo softwareProceso desarrollo software
Proceso desarrollo software
 
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
 
admon-proyectos-tenologicos-proceso
admon-proyectos-tenologicos-procesoadmon-proyectos-tenologicos-proceso
admon-proyectos-tenologicos-proceso
 
RMyA - Presentación Jornada ORT Estandar ISO IEC 29119 - 2011 v1.0
RMyA - Presentación Jornada ORT Estandar ISO IEC 29119 - 2011 v1.0RMyA - Presentación Jornada ORT Estandar ISO IEC 29119 - 2011 v1.0
RMyA - Presentación Jornada ORT Estandar ISO IEC 29119 - 2011 v1.0
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidad
 

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
 
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
 
SO Unidad 1: Introducción a los Sistemas Operativos
SO Unidad 1: Introducción a los Sistemas OperativosSO Unidad 1: Introducción a los Sistemas Operativos
SO Unidad 1: Introducción a los Sistemas Operativos
 
SO Unidad 3: Administración de memoria y sistemas de archivos
SO Unidad 3: Administración de memoria y sistemas de archivosSO Unidad 3: Administración de memoria y sistemas de archivos
SO Unidad 3: Administración de memoria y sistemas de archivos
 

Recently uploaded

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

Recently uploaded (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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
 
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
 
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
 
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
 
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 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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
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
 
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
 
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...
 

IIS Unidad 2 Modelos de proceso del software

  • 1. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 1 22/10/2021 Modelos de proceso del software Unidad 2 Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo para uso de los cursos de Introducción a la Ingeniería de Software
  • 2. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 2 22/10/2021 Objetivo general de la Unidad 2 Identificar el ciclo de vida del software a través de los estándares IEEE para diferenciar los modelos de desarrollo de software
  • 3. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 3 22/10/2021 3 En el desarrollo de software nos encontramos con la siguiente situación Ciclos de Vida del SOFTWARE Metodologías de Desarrollo del SOFTWARE
  • 4. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 4 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos
  • 5. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 5 22/10/2021 Contenido • Proceso del software – Definición de proceso de software – Estándares relacionados con el proceso software: IEEE/EIA (ISO/IEC) 12207, SWEBOK, CMMI, PMBOK • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos
  • 6. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 6 22/10/2021 ¿Que queremos decir con proceso de software? Deseos, necesidades, Especificaciones, … Software
  • 7. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 7 22/10/2021 ¿Qué es el proceso del software? • Proceso seguido por una organización para el desarrollo del software • Este proceso incluye todas las fases del ciclo de vida clásico • Este proceso se define de manera general para todas las aplicaciones de una organización • Igualmente se definen tareas especificas a cada aplicación en particular • No existe un proceso de software universal. Las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable
  • 8. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 8 22/10/2021 Definición del proceso de software • Proceso: colección de actividades de trabajo, acciones y tareas que se realizan cuando va a crearse algún producto terminado. – Cada una de las actividades, acciones y tareas se encuentra dentro de una estructura o modelo que define su relación tanto con el proceso como entre sí. • Propósito del proceso de desarrollo de Software – La producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. – Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas. Requisitos nuevos o modificados Sistema nuevo o modificado Proceso de Desarrollo de Software
  • 9. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 9 22/10/2021 Características de un proceso de desarrollo de software • Proporciona pautas para el desarrollo eficiente de software de calidad. • Reduce el riesgo y aumenta la previsibilidad • Promueve una visión y una cultura comunes • Presenta las mejores prácticas actuales
  • 10. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 10 22/10/2021 ¿Qué es un proceso de desarrollo de software? Define • Quién va a hacer qué • Cuándo hacerlo, y • Cómo alcanzar un objetivo determinado Proceso de desarrollo de software Requisitos nuevos o modificados Sistema nuevo o modificado
  • 11. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 11 22/10/2021 Elementos del proceso de desarrollo ▪ Quién: Las Personas participantes que desempeñan uno o más Roles específicos. ▪ Qué: Un Artefacto es producido por un Rol en una de sus Actividades. Estos se especifican utilizando Notaciones específicas. Las Herramientas apoyan la elaboración de los Artefactos. ▪ Cómo y Cuándo: Las Actividades son una serie de pasos que lleva a cabo un Rol durante el proceso de desarrollo. El avance del proyecto está controlado mediante hitos que establecen un determinado estado de terminación de ciertos Artefactos.
  • 12. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 12 22/10/2021 Contenido • Proceso del software – Definición de proceso de software – Estándares relacionados con el proceso software: IEEE/EIA (ISO/IEC) 12207, SWEBOK, CMMI, PMBOK • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos
  • 13. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 13 22/10/2021 Procesos Primarios del Ciclo de Vida Adquisición Mantenimiento Operación Desarrollo Suministro Procesos de Soporte al Ciclo de Vida Documentación Gestión de la Configuración Aseguramiento de la Calidad Verificación Validación Revisión Conjunta Auditoría Resolución de Problemas Procesos Organizacionales del Ciclo de Vida Administración/Gestión Infrastructura Mejoramiento Capacitación IEEE/EIA 12207 Software Life Cycle Processes
  • 14. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 14 22/10/2021 SWEBOK Guide = 10 Knowledge Areas Mapped TO ISO/IEC 12207:1995 processes Calidad de Software Herramientas y Métodos de la Ingeniería de Software Proceso de Ingeniería de Software Administración/Gestión del Software Gestión de la Configuración del Software Mantenimiento Prueba Construcción Diseño Requerimientos Procesos primarios Procesos de Soporte
  • 15. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 15 22/10/2021 Guide to the Software Engineering Body of Knowledge 2004 Version Software Construction Software Maintenance Software Testing Basic Concepts of Construction Managing Construction Software Maintenance Fundamentals Key Issues in Software Maintenance Techniques for Maintenance Sofware Testing Fundamentals Test Levels Test Techniques Test Related Measures Test Process Software Design Software Design Fundamentals Key Issues in Software Design Software Structure and Architecture Software Design Quality Analysis and Evaluation Software Design Notations Software Requirements Software Requirements Fundamentals Requirements Process Requirements Elicitation Requirements Specification Requirements Validation Requirements Analysis Software Design Strategies and Methods Practical Considerations Practical Considerations Maintenance Process
  • 16. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 16 22/10/2021 Slide 16 of 146 CMMI Staged Representation - 5 Niveles de Madurez Nivel 5 Inicial Nivel 1 Los procesos son impredecibles, mal controlados, reactivos. Repetible Nivel 2 Los procesos se planifican, documentan, ejecutan, supervisan y controlan a nivel de proyecto. Suele ser reactivo (aparecen los problemas y se solucionan) Definido Nivel 3 Los procesos están bien caracterizados y comprendidos. Los procesos, estándares, procedimientos, herramientas, etc. se definen a nivel organizacional (Organización X). Proactivo (se identifican problemas potenciales y como mitigarlos) Gestionado Nivel 4 Los procesos se controlan mediante técnicas estadísticas y otras técnicas cuantitativas. Optimizado El rendimiento del proceso se mejora continuamente a través de mejoras tecnológicas incrementales e innovadoras.
  • 17. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 17 22/10/2021 Maturity Level Project Managment Engineering Process Management Support 5 Optimizing Organizational Innovation & Deployment Causal Analysis & Resolution 4 Quantitatively Managed Quantitative Project Mngt Organizational Process Performance 3 Defined Integrated Project Mngt Risk Management Requirements Development Technical Solution Product Integration Verification Validation Organizational Process Focus Organizational Process Definition Organizational Training Decision Analysis & Resolution 2 Managed Project Planning Project Monitoring & Control Supplier Agreement Mngt Requirements Mngt Measurement & Analysis Process & Product Quality Assurance Configuration Mngt 1 Initial CMMI Process Areas
  • 18. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 18 22/10/2021 PMIBOK Representative Software development Life Cycle Prueba Evaluación Evaluación Análisis de riesgo Modelo 1 Modelo 2 Modelo 3 Requerimiento negocio Requerimientos sistema Diseño conceptual Diseño lógico Diseño físico Diseño final Requerimientos subsistemas Requerimientos de la unidad Entregar Operación y mantenimiento Evaluar Construir Diseñar Identificar Modelo 4
  • 19. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 19 22/10/2021 Overlap of Process Groups in a Phase (PMBOK® Guide, 2000, p. 31)
  • 20. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 20 22/10/2021 Relationships Among Process Groups and Knowledge Areas (PMBOK® Guide 2000, p. 38)
  • 21. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 21 22/10/2021 Relationships Among Process Groups and Knowledge Areas (PMBOK® Guide 2000, p. 38)
  • 22. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 22 22/10/2021 PMBOK
  • 23. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 23 22/10/2021 Exposiciones
  • 24. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 24 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos
  • 25. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 25 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software – Definición y etapas – Ámbito general de: Requerimientos, análisis, diseño y pruebas de software • Modelos de desarrollo: tradicionales vs alternativos
  • 26. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 26 22/10/2021 Ciclo de Vida del Software • Consiste en determinar: – las fases productivas de un proyecto, – los objetivos de cada fase productiva, y – los productos obtenidos en cada una de estas fases así como sus características.
  • 27. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 27 22/10/2021 Ciclo de vida de un proyecto de Software Gestión y recursos Inicio Terminación Fase inicial Fase final Fase implementación La producción del sistema da inicio, se concluyen las instalaciones y se estabiliza el sistema. Se desarrollan las actividades rutinarias de operación y mantenimiento En la fase inicial se efectúa la identificación de necesidades, problema u oportunidad. Requiere de documentar y armar un preproyecto. Se efectúan los análisis de soluciones y se desarrolla un requerimiento de cotización. Se efectúan los análisis de propuestas, diseño detallado, las negociaciones convenientes y se da la contratación Se inician los preparativos y la recepción de la solución, se capacita al personal, se efectúan pruebas piloto y pruebas de aceptación tiempo
  • 28. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 28 22/10/2021 Fases de un proyecto de tecnología 100 % Porcentaje de avance Factibilidad • Formulación de proyecto • Estudio de factibilidad • Diseño de estrategia • Protocolo de aprobación Planeación y diseño • Plan de actividades • Costo y programa de implementación • Términos contractuales y condiciones • Planeación detallada Implementación • Preparación • Entrega • Instalación • Pruebas Producción • Afinación • Mantenimiento Puesta a punto de operación Contratación Aprobación Plena disponibilidad Preproyecto Cierre
  • 29. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 29 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software – Definición y etapas – Ámbito general de: Requerimientos, análisis, diseño y pruebas de software • Modelos de desarrollo: tradicionales vs alternativos
  • 30. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 30 22/10/2021 Ingeniería de requerimientos el cliente y los desarrolladores definen el propósito y objetivos del sistema resultado: descripción del sistema en términos de participantes (actores) y funciones (casos de uso) actores: entidades externas que interactúan con el sistema (incluyen roles como usuarios finales u otros sistemas con los que interactúa el sistema) casos de uso: secuencias de eventos que describen todas las acciones posibles entre un actor y el sistema para una función específica. se acuerdan requisitos no funcionales. Por ejemplo: el distribuidor de billetes debe estar disponible al menos un 95% del tiempo el distribuidor de billetes debe dar respuesta en menos de un segundo después de seleccionada la transacción Nombre del caso de uso: CompraBillete Actor participante: Iniciado por Viajero Precondición: 1. El Viajero se para frente al distribuidor automático de billetes Flujo de eventos: 2. El Viajero selecciona las estaciones de origen y destino 3. El DistribuidorDeBilletes muestra el precio del billete 4. El Viajero inserta una cantidad de dinero que, al menos, debe ser igual que el precio del billete 5. El DistribuidorDeBilletes emite el billete especificado al Viajero y devuelve el cambio si es necesario Postcondición: 6. El Viajero coge el billete y el cambio Requisitos especiales: Si la transacción no ser termina después de un minuto de inactividad, el DistribuidorDeBilletes devuelve todo el dinero insertado ReservaBilletes CompraBillete Viajero Anulación reserva
  • 31. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 31 22/10/2021 Análisis • Se produce un modelo correcto, completo, consistente, claro, realista y verificable • Transformación de los casos de uso en un modelo que describe por completo el sistema y que se usará en el diseño • Descubrimiento y resolución con el cliente de ambigüedades e inconsistencias en el modelo de casos de uso Transacción Moneda BilleteTren Zona da como resultado válido para Saldo cantidad pagada Papel
  • 32. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 32 22/10/2021 Diseño • diseño del sistema – definición de los objetivos de diseño – descomposición del sistema en subsistemas abordables por equipos – selección de estrategias para la construcción (plataformas hardware y software, almacenamiento de datos persistentes, control de acceso,...) – resultado: descripción de las estrategias, descomposición en subsistema • diseño de objetos: – definición de objetos e interfaces de subsistemas, reestructuración del modelo de objetos para lograr los objetivos de diseño, optimización del modelo para mejorar el rendimiento,... – resultado: modelo de objetos detallado • actividades del diseño – diseño arquitectónico – especificación de los subsistemas – diseño de interfaz – diseño de componentes – diseño de la estructura de datos – diseño procedimental (algoritmos) Comprador IU Solicitud de pago Gestor de pedidos Confirmación de pedidos Planificador de pagos Solicitud de pago Procesamiento de solicitudes de pago Procesamiento de facturas Factura Gestión facturas comprador Gestión de planificación de pagos Gestión de cuentas
  • 33. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 33 22/10/2021 Validación Usuarios <<subsystem>> Gestión Máquinas Subgrupo <<subsystem>> Gestión Subgrupos-Instalaciones <<subsystem>> Gestión Sistema <<subsystem>> Gestión Instalaciones <<subsystem>> Mantenimientos de Gestión <<subsystem>> Gestión Mantenimiento Correctivo <<subsystem>> Gestión Trabajos Externos <<subsystem>> Gestión Mantenimiento Preventivo <<subsystem>>
  • 34. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 34 22/10/2021 Validación Usuarios <<subsystem>> Gestión Máquinas Subgrupo <<subsystem>> Gestión Subgrupos-Instalaciones <<subsystem>> Gestión Sistema <<subsystem>> Gestión Instalaciones <<subsystem>> Mantenimientos de Gestión <<subsystem>> Gestión Mantenimiento Correctivo <<subsystem>> Gestión Trabajos Externos <<subsystem>> Gestión Mantenimiento Preventivo <<subsystem>> Gestión Máquinas <<subsystem>> Gestión Características Máquinas Gestión Tareas Máquinas Alta Instalaciones Baja Instalaciones Modificación Instalaciones Operario (from Validación Usuarios) Administrador (from Validación Usuarios) Validar Usuario (from Validación Usuarios) <<include>> <<include>> <<include>> Consulta Instalaciones <<include>> Alta Características-Maq Baja Características-Maq Modificación Características-Maq Operario (from Validación Usuarios) Administrador (from Validación Usuarios) Validar Usuario (from Validación Usuarios) <<include>> <<include>> <<include>> Consulta Características-Maq <<include>>
  • 35. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 35 22/10/2021 Alta Características-Maq Baja Características-Maq Modificación Características-Maq Operario (from Validación Usuarios) Administrador (from Validación Usuarios) Validar Usuario (from Validación Usuarios) <<include>> <<include>> <<include>> Consulta Características-Maq <<include>> Nombre Alta Características Máquina Prioridad Media Actor Administrador Extends Ninguno Includes Validar Usuario Pre-Condiciones 1. El usuario está identificado. 2. El usuario selecciona la opción de altas en el formulario. Post-Condiciones 1. Los datos de la nueva característica quedan guardados si el proceso finaliza correctamente. 2. Los datos de la nueva característica no quedan guardados si se produce algún error durante el proceso. Descripción 1. El sistema muestra el formulario de altas. 2. El usuario introduce los datos. 3. El sistema realiza la validación de los datos. 4. Si la característica ya existe [A]. 5. Si los datos no son correctos [B]. 6. El usuario selecciona la opción de Guardar. 7. El sistema guarda los datos. 8. Si se guarda correctamente se visualiza un mensaje, si hay algún problema el sistema avisa con un mensaje de error. Excepciones El proceso se puede cancelar en cualquier momento. A. Si la característica ya existe se visualizan sus datos. B. Datos incorrectos, ir a punto 2. MENSAJES : Administrador Opciones Frm Cliente CTRL Alta Instalación Form_Alta Validar Datos INSTALACION Resultado Alta Visualizar Mensaje Seleccionar Crea() Mostrar(Datos) Introducir Datos() Cubrir_Datos() Comprobar() Comprobar() Obtener Datos Crear_Alta() Construir Construir Visualizar Resultado Crea() Si no Existe Fin Si Fin Si Datos Correctos ... Datos no Correctos Mostrar
  • 36. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 36 22/10/2021 Alta Características-Maq Baja Características-Maq Modificación Características-Maq Operario (from Validación Usuarios) Administrador (from Validación Usuarios) Validar Usuario (from Validación Usuarios) <<include>> <<include>> <<include>> Consulta Características-Maq <<include>> Nombre Alta Características Máquina Prioridad Media Actor Administrador Extends Ninguno Includes Validar Usuario Pre-Condiciones 1. El usuario está identificado. 2. El usuario selecciona la opción de altas en el formulario. Post-Condiciones 1. Los datos de la nueva característica quedan guardados si el proceso finaliza correctamente. 2. Los datos de la nueva característica no quedan guardados si se produce algún error durante el proceso. Descripción 1. El sistema muestra el formulario de altas. 2. El usuario introduce los datos. 3. El sistema realiza la validación de los datos. 4. Si la característica ya existe [A]. 5. Si los datos no son correctos [B]. 6. El usuario selecciona la opción de Guardar. 7. El sistema guarda los datos. 8. Si se guarda correctamente se visualiza un mensaje, si hay algún problema el sistema avisa con un mensaje de error. Excepciones El proceso se puede cancelar en cualquier momento. A. Si la característica ya existe se visualizan sus datos. B. Datos incorrectos, ir a punto 2. Visualizar Formulario Comprobar Datos Mensaje "Error Datos" Comprobar Existencia de la Instalación Visualizar Datos Instalación Guardar Datos Instalación Mensaje "Error" Datos Incorrectos Datos Correctos Si Existe Mensaje "Instalación guardada" Administrador Validado Seleccionar Formulario Introducir Datos Seleccionar Guardar No Existe Error al Guardar Instalación Guardada Administrador (from Alta Máquinas) Sistema (from Validar Usuario)
  • 37. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 37 22/10/2021 Especificacion DelProducto descripción precio articuloID CatalogoDe Productos 1..n 1 Articulo Encargado LineaDeVenta cantidad 1 n 1..n 0..1 Tienda dirección nombre n 1 n 1 Pago cantidad Venta fecha hora 1 1..n 1 n 1 1 Cliente 1 1 Registro 1..n 1 1 1 1 1 Cajero 1 1 1 1 1 1 1 1 Pagada-mediante 1 1 Iniciada-por Registra-ventas-en Iniciado-por 1..n 1 Alberga Abastece n 1 Capturada-en 1 1 1 n Registra-completas Contenida-en 1 1..n Utilizado-por n 1 1..n 1 Contiene Descrita-por 1 n 1..n 0..1 Registra-venta-de
  • 38. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 38 22/10/2021 Servidor SGBD Red Local Impresora Cliente Cliente ODBC TCP/IP TCP/IP TCP/IP
  • 39. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 39 22/10/2021
  • 40. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 40 22/10/2021 Implementación y Pruebas • Implementación – traducción del modelo de diseño (por ejemplo, del modelo de objetos) en código fuente – incluye: • implementación de atributos y métodos de cada objeto • integración de todos los objetos para que funcionen como un solo sistema • Pruebas – pruebas de unidad: comparación del modelo de diseño con cada objeto y subsistema – pruebas de integración: combinaciones de subsistemas y comparación con el modelo de diseño del sistema – pruebas del sistema: ejecución de casos típicos y excepcionales, y comparación con el modelo de requerimientos – objetivo: descubrir la mayor cantidad posible de errores que se puedan reparar antes de entregar el sistema
  • 41. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 41 22/10/2021 Mantenimiento • Mejoras en el sistema (nuevas funciones, facilidad de uso,...) • Corrección de errores • Adaptación a cambios en el entorno (hardware, software, legislación,...) • Actividad más costosa del ciclo de vida de un producto software
  • 42. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 42 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos
  • 43. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 43 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos – Concepto de modelo de Desarrollo de software – Modelos tradicionales: Cascada, prototipo y espiral. – Modelos ágiles: Scrum, Xp, Kanban, TDD(Test- DrivenDesign)
  • 44. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 44 22/10/2021 Introducción a los modelos de desarrollo • 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.
  • 45. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 45 22/10/2021 Introducción a los modelos de desarrollo • 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.
  • 46. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 46 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos – Concepto de modelo de Desarrollo de software – Modelos tradicionales: Cascada, prototipo y espiral. – Modelos ágiles: Scrum, Xp, Kanban, TDD(Test- DrivenDesign)
  • 47. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 47 22/10/2021 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 1
  • 48. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 48 22/10/2021 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
  • 49. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 49 22/10/2021 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
  • 50. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 50 22/10/2021 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
  • 51. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 51 22/10/2021 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
  • 52. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 52 22/10/2021 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
  • 53. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 53 22/10/2021 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
  • 54. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 54 22/10/2021 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.
  • 55. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 55 22/10/2021 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)
  • 56. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 56 22/10/2021 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 2
  • 57. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 57 22/10/2021 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. 3
  • 58. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 58 22/10/2021 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.
  • 59. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 59 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos – Concepto de modelo de Desarrollo de software – Modelos tradicionales: Cascada, prototipo y espiral. – Modelos ágiles: Scrum, Xp, Kanban, TDD(Test- DrivenDesign)
  • 60. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 60 22/10/2021 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
  • 61. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 61 22/10/2021 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
  • 62. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 62 22/10/2021 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.
  • 63. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 63 22/10/2021 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.
  • 64. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 64 22/10/2021 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.
  • 65. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 65 22/10/2021 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. 1
  • 66. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 66 22/10/2021 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
  • 67. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 67 22/10/2021 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.
  • 68. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 68 22/10/2021 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.
  • 69. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 69 22/10/2021 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
  • 70. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 70 22/10/2021 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.
  • 71. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 71 22/10/2021 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.
  • 72. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 72 22/10/2021 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
  • 73. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 73 22/10/2021 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
  • 74. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 74 22/10/2021 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
  • 75. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 75 22/10/2021 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
  • 76. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 76 22/10/2021 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
  • 77. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 77 22/10/2021 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
  • 78. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 78 22/10/2021 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 2
  • 79. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 79 22/10/2021 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.
  • 80. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 80 22/10/2021 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
  • 81. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 81 22/10/2021 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
  • 82. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 82 22/10/2021 eXtreme Programming • Coraje: – Diseñar y programar para hoy, no para mañana – Refactorizar cuando sea necesario – Desechar código obsoleto o complejo
  • 83. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 83 22/10/2021 eXtreme Programming • Respeto: – Propiedad colectiva del código – Alta calidad
  • 84. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 84 22/10/2021 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
  • 85. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 85 22/10/2021 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
  • 86. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 86 22/10/2021 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.
  • 87. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 87 22/10/2021 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
  • 88. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 88 22/10/2021 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
  • 89. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 89 22/10/2021 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
  • 90. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 90 22/10/2021 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
  • 91. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 91 22/10/2021 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
  • 92. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 92 22/10/2021 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
  • 93. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 93 22/10/2021 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.
  • 94. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 94 22/10/2021 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
  • 95. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 95 22/10/2021 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
  • 96. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 96 22/10/2021 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
  • 97. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 97 22/10/2021 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. 3
  • 98. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 98 22/10/2021 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.
  • 99. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 99 22/10/2021 Prácticas 1. Visualizar el flujo de trabajo 2. Eliminar interrupciones. Limitar trabajo WIP 3. Gestionar el flujo Flujo rápido e ininterrumpido
  • 100. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 100 22/10/2021 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
  • 101. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 101 22/10/2021 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.
  • 102. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 102 22/10/2021 Ejemplo Fuente: http://metodokanbansoftwareagil.blogspot.com
  • 103. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 103 22/10/2021 Herramientas: Trello
  • 104. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 104 22/10/2021 Herramientas: Wekan (open source)
  • 105. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 105 22/10/2021 Test Driven Development Es una técnica de diseño e implementación de software, que se centra primero en hacer pruebas unitarias antes de comenzar a escribir el código. Aunque involucra la palabra test… TDD no es una técnica de pruebas. 4
  • 106. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 106 22/10/2021 Test-driven development (Desarrollo impulsado por pruebas) • Las pruebas unitarias se pueden escribir después, durante o incluso antes de la codificación. – test-driven development: Escribe pruebas, luego escribe código para aprobarlas. • Imagina que nos gustaría agregar un método subtractWeeks para una clase Date, que desplaza una fecha hacia atrás en el tiempo por el número dado de semanas. • Escriba código para probar este método antes de que se haya escrito el código del comportamiento. – Luego, una vez que implemente el método, ud. sabrá si funciona.
  • 107. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 107 22/10/2021 Test Driven Development • Menos errores, menos depuración • Más confianza, más productividad • Mejor diseño Objetivos • Las pruebas dirigen el desarrollo • Simplificar el diseño y desacoplar • Escribir el código más simple que pueda funcionar Forma de pensar en el desarrollo software
  • 108. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 108 22/10/2021 Ciclo de Desarrollo de TDD
  • 109. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 109 22/10/2021 Ciclo de Desarrollo de TDD
  • 110. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 110 22/10/2021 Las tres partes del test • Escribir la especificación del requisito convirtiéndolo en test automático. Arrange (Preparar) • Ejecutar la funcionalidad a probar. Act (Actuar) • Refactorizar código. Assert (Afirmar) La refactorización de código tiene el objetivo de que los métodos puedan leerse de la manera más fácil posible.
  • 111. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 111 22/10/2021 public void PruebaMultiplicación() { assertEquals(6, FuncionesMatematicas.multiplicacion(2,3)); } public class FuncionesMatematicas { public static int multiplicacion (int a, int b) { return 0; } } public class FuncionesMatematicas { public static int multiplicacion (int a, int b) { return 6; } } Arrange Assert Act public class FuncionesMatematicas { public static int multiplicacion (int a, int b) { return a*b; } }
  • 112. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 112 22/10/2021 Pruebas unitarias • Propósito: Encontrar defectos en un módulo o función. • Normalmente las pruebas unitarias son hechas por el programador del módulo. • Para probar una función debes: – Llamarla – Tener subfunciones para invocar Test Driver Your function Stub Stub
  • 113. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 113 22/10/2021 Pruebas Unitarias • Descripción – Su propósito es encontrar errores en la lógica, datos o algoritmos en componentes o subsistemas individuales – Realizado por los desarrolladores del componente
  • 114. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 114 22/10/2021 Especificación de un prueba unitaria Parámetro Valor Parámetro1 Valor del parámetro 1 Parámetro2 Valor del parámetro 2 Parámetro3 Valor del parámetro 3 Retorno Valor retornado o bien ‘-’. Estado Inicial Condiciones del estado inicial del sistema o bien ‘-’. Excepción Excepción que se devuelve en este caso o bien ‘-’. Efecto Efectos laterales para este caso o bien ‘-’. Observación Qué sucedió? Resultado No probado/Cumple/No Cumple
  • 115. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 115 22/10/2021 Código CP-001 Caso de prueba Ingreso de usuarios Responsable Desarrolladores Descripción de la prueba • Se ingresan los siguientes parámetros: Parámetro1 Valor del parámetro 1 Parámetro2 Valor del parámetro 2 Parámetro3 Valor del parámetro 3 • Hacer clic en el botón entrar. Requisito previo Haber ingresado correctamente al sistema. Resultado esperado El usuario será registrado en la aplicación. Resultado obtenido Se ha ingresado correctamente el usuario. Estado Exitoso Observaciones
  • 116. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 116 22/10/2021 Frameworks • Ofrecen un conjunto de utilidades, motores de ejecución para pruebas unitarias
  • 117. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 117 22/10/2021 Contenido • Proceso del software • El ciclo de vida del Software • Modelos de desarrollo: tradicionales vs alternativos Conclusiones
  • 118. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 118 22/10/2021 Metodologías de desarrollo: Ágiles vs Tradicionales Metodologías Ágiles Metodologías Tradicionales Desarrollo iterativo Análisis, diseño, implementación y pruebas Ágil, dinámico y muy flexible. Preparados para cambios durante el proyecto Estricto, rígido y con cierta resistencia a cambios (toma de requisitos inicial) Entre las principales: XP, SCRUM, ICONIX , AUP, que son las más aceptadas dentro de estas metodologías Dentro de estas metodologías las más conocidos son Rational Unified Process (RUP) y Microsoft Solution Framework (MSF) El cliente es parte del equipo de desarrollo El cliente interactúa con el equipo de desarrollo mediante reuniones Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio Grupos grandes y posiblemente distribuidos Pocos artefactos Más artefactos Pocos roles Más roles
  • 119. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 119 22/10/2021 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
  • 120. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 120 22/10/2021 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.
  • 121. Introducción a la Ingeniería de Software Carrera de Software Ph.D. Franklin Parrales 121 22/10/2021 Modelos de proceso del software Unidad 2 Final de la unidad