Bloque I

Del problema al producto

Taller Integrador de Especialización

Facultad de Informática Culiacán
Universidad Autónoma de Sinaloa

UAS - Taller Integrador de Especialización

Al terminar este bloque vas a poder

RA1.1 Entender el taller

Explicar el propósito del proyecto integrador y su dinámica de trabajo

RA1.2 Reconocer un proyecto profesional

Identificar qué implica desarrollar software como producto o servicio

RA1.3 Definir el problema

Delimitar el problema los usuarios y el alcance inicial

RA1.4 Organizar el equipo

Establecer responsabilidades y estrategias de colaboración

RA1.5 Trabajar con Scrum

Comprender roles artefactos eventos y principios del marco de trabajo

RA1.6 Escribir historias de usuario

Convertir necesidades en historias verificables

UAS - Taller Integrador de Especialización

Antes de empezar

Alguna vez comenzaste un trabajo en equipo sin tener claro

qué problema estaban resolviendo

quién debía hacer qué

qué tenían que construir primero

Este bloque existe para evitar comenzar el proyecto de esa manera

UAS - Taller Integrador de Especialización

Dónde estamos dentro del taller

Bloque I    Del problema al producto        ← estás aquí
Bloque II   Colaboración y arquitectura
Bloque III  Construcción del sistema
Bloque IV   Contenedores despliegue y escalabilidad
Bloque V    Integración y presentación final

El proyecto comienza a organizarse desde este bloque.

No esperaremos hasta el final del semestre para descubrir qué debemos construir.

UAS - Taller Integrador de Especialización

1.1

El desarrollo profesional de software

UAS - Taller Integrador de Especialización

Un sistema no es solamente código

Producto

Una solución de software creada para entregar valor a sus usuarios

Servicio

Una solución que continúa operando y entregando valor a sus usuarios

En ambos casos el software debe responder a una necesidad real.

La diferencia importa porque cambia la forma en que pensamos su operación evolución y mantenimiento.

UAS - Taller Integrador de Especialización

Producto y servicio

Producto

El usuario recibe una solución que utiliza

Las versiones pueden distribuirse de diferentes formas

Servicio

El equipo responsable mantiene la solución operando

Los cambios pueden afectar directamente a los usuarios

Tu proyecto integrador debe pensarse como una solución profesional que entrega valor.

No solamente como una aplicación que funciona en la computadora del desarrollador.

UAS - Taller Integrador de Especialización

Desarrollo profesional

Valor

El software debe resolver una necesidad

Calidad

El resultado debe poder mantenerse y evolucionar

Responsabilidad

El equipo responde por lo que construye

El desarrollo profesional implica tomar decisiones pensando más allá del código inmediato.

Referencia de contexto: Hunt y Thomas The Pragmatic Programmer 2019

UAS - Taller Integrador de Especialización

Desarrollo a escala

Un sistema profesional puede crecer en

Usuarios

Más personas utilizando el sistema

Datos

Más información que almacenar y procesar

Operación

Más situaciones que atender y controlar

No necesitamos resolver todavía la escalabilidad técnica.

Primero necesitamos entender que nuestro sistema debe pensarse más allá del escenario de una sola computadora.

UAS - Taller Integrador de Especialización

El proyecto integrador

Tu proyecto no es una tarea aislada.

Es una oportunidad para trabajar como un equipo que desarrolla una solución de software profesional.

Problema

Qué necesidad resolvemos

Usuarios

Para quién construimos

Alcance

Qué construiremos

Valor

Qué beneficio entregamos

UAS - Taller Integrador de Especialización

Un ejemplo para entenderlo

ReservaFIC

Sistema ilustrativo para gestionar el préstamo de equipo de laboratorio

El estudiante solicita un equipo

El administrador gestiona las solicitudes

El sistema debe evitar conflictos de horario

Este ejemplo solamente sirve para comprender los conceptos

Tu proyecto utiliza su propio dominio

UAS - Taller Integrador de Especialización

El problema no es la solución

Problema

Qué situación genera una dificultad real

Solución

Qué proponemos construir para atenderla

Ejemplo

Situación actual
Los estudiantes necesitan acudir personalmente al área responsable para saber si un equipo está disponible.

Problema
No existe un medio centralizado para consultar en tiempo real qué equipos están disponibles, ocupados o en mantenimiento.

Consecuencia
Los estudiantes realizan traslados y consultas innecesarias y pueden retrasar sus actividades.

Necesidad
Contar con información actualizada sobre la disponibilidad de los equipos.

Solución posible
Un sistema web que permita consultar la disponibilidad de los equipos y enviar solicitudes de préstamo.

Primero entendemos el problema

Después definimos la solución

UAS - Taller Integrador de Especialización

Problema · necesidad · solución

SITUACIÓN ACTUAL ¿Qué está ocurriendo?
PROBLEMA ¿Qué situación requiere atención?
NECESIDAD ¿Qué se necesita resolver?
SOLUCIÓN ¿Qué alternativa puede atender la necesidad?

Evita comenzar por la tecnología. Una solución técnicamente interesante no necesariamente resuelve un problema real.

UAS - Taller Integrador de Especialización

Usuarios y partes interesadas

Usuario

Interactúa directamente con el sistema

Parte interesada

Tiene interés en el resultado del proyecto

Un sistema puede tener usuarios que realizan operaciones y otras personas que necesitan información resultados o beneficios sin utilizarlo directamente.

Identificar ambos ayuda a comprender mejor el problema

UAS - Taller Integrador de Especialización

El proyecto debe tener límites

Incluido

Lo que sí construiremos

Excluido

Lo que no construiremos por ahora

Restricciones

Condiciones que limitan nuestras decisiones

Definir límites también es una decisión profesional

UAS - Taller Integrador de Especialización

Actividad A1

Diagnóstico inicial

Reflexiona individualmente

¿Qué esperas de un proyecto profesional de software?

¿Qué dudas tienes antes de comenzar?

¿Qué diferencia un proyecto académico de un proyecto profesional?

UAS - Taller Integrador de Especialización

Actividad A2

Producto y servicio

Selecciona una aplicación o sistema que utilices frecuentemente

Explica

Qué hace
Quién lo utiliza
Qué necesidad atiende
Si funciona principalmente como producto o servicio
Por qué

Consulta las instrucciones completas en

Actividades del Bloque I — A2

UAS - Taller Integrador de Especialización

1.2

Organización del equipo

UAS - Taller Integrador de Especialización

Tu equipo ya existe

  • El objetivo ahora no es formar nuevos equipos

  • El objetivo es organizar profesionalmente el equipo que ya tienes

UAS - Taller Integrador de Especialización

Responsabilidad individual y colectiva

Responsabilidad individual

Cada integrante cumple las responsabilidades que asume

Responsabilidad colectiva

El equipo responde por el resultado del producto

La colaboración no significa que todos hagan todo

Significa que todos entienden cómo su trabajo contribuye al resultado

UAS - Taller Integrador de Especialización

Cómo colaborar

Comunicar

Compartir avances problemas y decisiones

Coordinar

Evitar trabajo duplicado y bloqueos

Integrar

Trabajar para que las partes formen un solo producto

Las herramientas técnicas para colaboración se trabajarán posteriormente

UAS - Taller Integrador de Especialización

Actividad A3

Organización del equipo

Trabajen con el equipo que ya tienen asignado

Definan

Responsabilidades iniciales

Forma de comunicación

Forma de tomar decisiones

Forma de reportar avances

Forma de solicitar ayuda ante un bloqueo

UAS - Taller Integrador de Especialización

1.3

Introducción a Scrum

UAS - Taller Integrador de Especialización

¿Por qué Scrum?

  • Un proyecto de software cambia mientras se desarrolla

  • Aparecen nuevas necesidades

  • Se descubren problemas

  • Se obtiene retroalimentación

  • Cambian las prioridades

  • Scrum proporciona un marco para trabajar de manera iterativa y adaptativa

Fuente principal: Schwaber y Sutherland The Scrum Guide 2020

UAS - Taller Integrador de Especialización

La idea central

01 · PLANEAR Definir qué construir
02 · CONSTRUIR Crear un incremento
03 · REVISAR Observar el resultado
04 · APRENDER Incorporar lo aprendido
05 · ADAPTAR Ajustar el siguiente paso
06 · NUEVO INCREMENTO Construir nuevamente
UAS - Taller Integrador de Especialización

Scrum en una frase

  • Scrum se basa en ciclos de trabajo y aprendizaje

  • No es simplemente una lista de reuniones

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Los pilares de Scrum

Transparencia

El trabajo y su estado deben ser visibles

Inspección

El progreso y los resultados deben revisarse

Adaptación

El trabajo se ajusta cuando es necesario

Estos pilares sostienen el enfoque empírico de Scrum

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Los valores de Scrum

Compromiso

Trabajar hacia los objetivos del equipo

Enfoque

Concentrarse en el trabajo y los objetivos del Sprint

Apertura

Ser transparentes sobre el trabajo y los desafíos

Respeto

Reconocer las capacidades y responsabilidades de los demás

Coraje

Hacer lo correcto y enfrentar problemas difíciles

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Los tres tipos de responsabilidades

Product Owner

Responsable de maximizar el valor del producto

Scrum Master

Responsable de establecer Scrum y ayudar a que sea comprendido y aplicado

Scrum Team

Responsables de crear un incremento utilizable en cada Sprint

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Product Owner

Su responsabilidad central es maximizar el valor del producto

Entre sus responsabilidades se encuentra

  1. Desarrollar y comunicar el objetivo del producto

  2. Crear y comunicar los elementos del Product Backlog

  3. Ordenar los elementos del Product Backlog

  4. Asegurar que el Product Backlog sea transparente y comprendido

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Scrum Master

Su responsabilidad central es ayudar a que Scrum se establezca y sea efectivo.

  1. Ayuda al equipo a comprender Scrum

  2. Facilita la eliminación de impedimentos

  3. Ayuda a mantener el enfoque en generar incrementos de valor

El Scrum Master no es el jefe del equipo

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Scrum Team

Son las personas que crean el incremento

  1. Crean el plan para el Sprint

  2. Incorporan calidad mediante la Definition of Done

  3. Adaptan su plan diariamente hacia el Sprint Goal

  4. Se responsabilizan mutuamente como profesionales

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Los artefactos de Scrum

Product Backlog

Lista ordenada y emergente de lo necesario para mejorar el producto

Sprint Backlog

Objetivo del Sprint elementos seleccionados y plan para entregar el incremento

Incremento

Resultado utilizable que cumple la Definition of Done

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Cada artefacto tiene un compromiso

ARTEFACTO

Product Backlog

COMPROMISO

Product Goal

ARTEFACTO

Sprint Backlog

COMPROMISO

Sprint Goal

ARTEFACTO

Incremento

COMPROMISO

Definition of Done

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Los eventos de Scrum

SPRINT

Contiene todos los demás eventos

Sprint Planning Planear el Sprint
Daily Scrum Inspeccionar el progreso
Sprint Review Inspeccionar el resultado
Sprint Retrospective Mejorar la forma de trabajo

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Sprint Planning

El equipo establece

Por qué

Objetivo del Sprint

Qué

Qué trabajo se seleccionará

Cómo

Cómo se realizará el trabajo

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Daily Scrum

  • Es una oportunidad para que el Scrum Team inspeccionen el progreso hacia el Sprint Goal

  • Debe ayudar a identificar la necesidad de adaptar el Sprint Backlog

  • No es un reporte al profesor

  • No es una reunión para demostrar quién trabajó más

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Sprint Review

  • El equipo inspecciona el resultado del Sprint junto con las partes interesadas

  • Se analiza qué se consiguió

  • Se revisa qué cambió

  • Se decide qué adaptar posteriormente

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Sprint Retrospective

El equipo analiza cómo trabajó

Personas

Cómo colaboramos

Proceso

Cómo trabajamos

Herramientas

Qué nos ayudó o dificultó

Después identifica mejoras que puede aplicar

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

¿Y el Sprint 0?

Sprint 0 · Etapa académica de preparación

No es un evento ni un elemento definido por la Scrum Guide.

01 Organizar

Preparar el proyecto y las responsabilidades.

02 Preparar

Construir el backlog inicial.

03 Configurar

Preparar el repositorio y el entorno.

04 Iniciar

Dejar una primera funcionalidad funcionando.

Nota: “Sprint 0” se utiliza en este curso como convención académica, no como parte del marco Scrum.

UAS - Taller Integrador de Especialización

Sprint 0 no significa construir todo

01 Proyecto definido
02 Equipo organizado
03 Backlog inicial
04 Repositorio
05 Aplicación funcionando
06 Primer incremento
07 Sprints de desarrollo

No buscamos terminar el producto.

Buscamos dejar preparada una base funcional que permita continuar construyendo, inspeccionando y adaptando mediante Sprints.

UAS - Taller Integrador de Especialización

Historias de usuario

Una historia de usuario expresa una necesidad desde la perspectiva de quien obtiene el beneficio.

UAS - Taller Integrador de Especialización

Ejemplo

Como estudiante

quiero solicitar el préstamo de un equipo disponible

para poder utilizarlo en mi práctica de laboratorio

  • La historia de usuario no describe cómo se programará

  • Describe qué necesita el usuario y para qué

UAS - Taller Integrador de Especialización

Una historia debe poder verificarse

La historia debe acompañarse de criterios de aceptación

Ejemplo

El sistema no permite solicitar un equipo que ya tiene una reserva activa
en el mismo horario

El criterio permite determinar si el comportamiento esperado se cumple

UAS - Taller Integrador de Especialización

Una historia no es una tarea técnica

No

Crear tabla de usuarios

Programar API

Crear formulario

Como usuario quiero registrarme para poder acceder al sistema

La tarea técnica aparecerá después como parte del trabajo necesario para implementar la historia de usuario.

UAS - Taller Integrador de Especialización

Priorizar historias

No todo puede construirse al mismo tiempo

Alta

Necesaria para entregar el valor principal

Media

Importante para completar el servicio

Baja

Útil pero puede esperar

La prioridad debe responder al valor y a las necesidades del producto

UAS - Taller Integrador de Especialización

Estimar no significa adivinar horas

La estimación inicial permite comparar el tamaño relativo de las historias

1   muy pequeña
2   pequeña
3   media
5   grande
8   muy grande

La estimación puede cambiar conforme el equipo aprende más sobre el producto

UAS - Taller Integrador de Especialización

Actividad A4

Scrum en acción

Relaciona

Roles
Artefactos
Eventos
Compromisos

Analiza cómo se conectan durante un Sprint

UAS - Taller Integrador de Especialización

1.4

Definición del proyecto

UAS - Taller Integrador de Especialización

Tres preguntas antes de construir

Problema

Qué necesidad real queremos resolver

Usuarios

Quién necesita la solución

Alcance

Qué construiremos y qué dejaremos fuera

Estas decisiones serán la base del Product Backlog

UAS - Taller Integrador de Especialización

El alcance también dice que NO

Un proyecto profesional necesita límites

Dentro

Registro de solicitudes

Consulta de solicitudes

Seguimiento de solicitudes

Fuera

Aplicación móvil nativa

Integraciones externas no requeridas

Funciones que no aporten al objetivo inicial

El alcance puede evolucionar

Pero debe existir una referencia inicial

UAS - Taller Integrador de Especialización

El Product Backlog

El Product Backlog representa todo lo que el producto necesita para mejorar

Es

  1. ordenado

  2. emergente

  3. visible

  4. evolutivo

  • No necesitamos conocer absolutamente todo desde el primer día

  • Necesitamos suficiente claridad para comenzar

Fuente: The Scrum Guide 2020

UAS - Taller Integrador de Especialización

Del problema al Product Backlog

01 Problema
02 Usuarios
03 Necesidades
04 Historias de usuario
05 Criterios de aceptación
06 Prioridad
07 Estimación
08 Product Backlog

Las historias de usuario y los criterios de aceptación son prácticas complementarias para trabajar los elementos del Product Backlog.

UAS - Taller Integrador de Especialización

Actividad A5

Ficha de planteamiento del proyecto

Trabaja sobre el proyecto que tu equipo ya tiene asignado

Define

Problema

Usuarios

Necesidad

Alcance

Elementos fuera de alcance

Restricciones

UAS - Taller Integrador de Especialización

Laboratorios

Del concepto a la práctica

UAS - Taller Integrador de Especialización

LAB-01

Primer contacto con Laravel desde cero

El objetivo es familiarizarte con el entorno de desarrollo

Vas a aprender a

Crear una aplicación Laravel
        ↓
Ejecutarla
        ↓
Reconocer su estructura
        ↓
Modificar una ruta
        ↓
Obtener una respuesta

No necesitas conocimientos previos de Laravel

UAS - Taller Integrador de Especialización

LAB-02

Primer CRUD con Laravel desde cero

Ahora pasarás de una aplicación que responde a una aplicación que maneja
información

Ruta
 ↓
Controlador
 ↓
Modelo
 ↓
Base de datos
 ↓
Vista

El objetivo es comprender el recorrido de una operación completa

El CRUD es un ejercicio técnico

No significa que todas las funcionalidades del proyecto deban diseñarse
como CRUD

UAS - Taller Integrador de Especialización

LAB-03

De la necesidad a las historias de usuario

Ahora dejamos temporalmente el código

Trabajaremos con el problema real de nuestro proyecto

Usuario
   ↓
Necesidad
   ↓
Historia de usuario
   ↓
Criterios de aceptación
   ↓
Prioridad
   ↓
Estimación

El resultado será nuestro Product Backlog inicial

UAS - Taller Integrador de Especialización

LAB-04

Sprint 0

Aquí integramos lo trabajado

El objetivo es dejar el proyecto listo para comenzar los Sprints de
desarrollo

UAS - Taller Integrador de Especialización

Sprint 0 — ¿Qué debemos tener?

Proyecto

Problema alcance usuarios y restricciones

Equipo

Responsabilidades y forma de colaboración

Backlog

Historias priorizadas y estimadas

Repositorio

Proyecto disponible para el equipo

Aplicación

Laravel funcionando

Incremento

Una primera funcionalidad demostrable

UAS - Taller Integrador de Especialización

Definition of Done inicial

Para este primer incremento utilizaremos una definición sencilla

☐ Está implementado
☐ Puede ejecutarse
☐ Cumple los criterios de aceptación
☐ No presenta errores evidentes
☐ Está incorporado al repositorio

Esta definición evolucionará conforme avance el proyecto

UAS - Taller Integrador de Especialización

La conexión entre todo

Problema
   ↓
Necesidad
   ↓
Historia
   ↓
Product Backlog
   ↓
Sprint
   ↓
Trabajo del equipo
   ↓
Incremento
   ↓
Inspección
   ↓
Adaptación
   ↓
Nuevo Sprint

Esta será la dinámica general del proyecto integrador

UAS - Taller Integrador de Especialización

Lo que NO haremos todavía

En este bloque no profundizaremos en

Git avanzado
Arquitectura
Patrones de diseño
APIs
Seguridad técnica
Pruebas automatizadas
Docker
CI/CD
Observabilidad
Escalabilidad técnica

Esos contenidos aparecerán progresivamente en los siguientes bloques

Primero necesitamos saber qué construir

Después aprenderemos cómo construirlo profesionalmente

UAS - Taller Integrador de Especialización

Una última revisión

Al terminar este bloque deberías poder explicar

El proyecto

Qué problema resuelve

Para quién

Con qué alcance

El trabajo

Cómo se organiza el equipo

Cómo funciona Scrum

Qué se construirá primero

UAS - Taller Integrador de Especialización

El proyecto ya debe tener dirección

Antes

Tenemos un proyecto

Ahora

Tenemos un problema definido
        ↓
Tenemos usuarios identificados
        ↓
Tenemos un alcance
        ↓
Tenemos historias
        ↓
Tenemos un Product Backlog
        ↓
Tenemos un equipo organizado
        ↓
Tenemos una primera funcionalidad
UAS - Taller Integrador de Especialización

¿Qué sigue?

Construir profesionalmente

Ya sabemos

qué problema resolver

para quién

qué construiremos primero

cómo organizar el trabajo

Ahora necesitamos aprender a construir de manera colaborativa

UAS - Taller Integrador de Especialización

Referencias principales

Scrum

Schwaber, Ken; Sutherland, Jeff

The Scrum Guide
2020

Fuente principal para

  • Scrum
  • Roles
  • Artefactos
  • Eventos
  • Valores
  • Pilares
  • Product Backlog
  • Incremento
  • Definition of Done
UAS - Taller Integrador de Especialización

Referencias complementarias

Desarrollo profesional

Hunt, Andrew; Thomas, David

The Pragmatic Programmer
2019

Apoya la reflexión sobre prácticas y responsabilidad profesional en el
desarrollo de software

Recurso pedagógico complementario

SCRUMstudy

SBOK Guide 5th Edition

Se utiliza como material complementario para reforzar conceptos de Scrum

No sustituye a la Scrum Guide como fuente principal

UAS - Taller Integrador de Especialización

Recursos técnicos del laboratorio

Para los laboratorios se utilizará la documentación oficial de las
tecnologías seleccionadas

En este bloque Laravel se utiliza como medio para comenzar a construir

La documentación técnica no sustituye las referencias conceptuales del
bloque

UAS - Taller Integrador de Especialización

Cierre

Bloque I — Del problema al producto

UAS - Taller Integrador de Especialización

estado: BORRADOR fuentes: - bloque01/CONTEXTO_UNIDAD.md - bloque01/material/bloque01_manual_estudiante.md - bloque01/material/bloque01_actividades.md - bloque01/laboratorios/bloque01_lab01_laravel_desde_cero.md - bloque01/laboratorios/bloque01_lab02_crud_laravel_desde_cero.md - bloque01/laboratorios/bloque01_practica01_historias_usuario.md - bloque01/laboratorios/bloque01_lab03_sprint0_desde_cero.md - bloque01/referencias/bloque01_materiales_referencias.md propósito: Presentación de apoyo docente y estudiante del Bloque I criterios: - lenguaje humano y directo - sin punto final ni comas en el cuerpo de las diapositivas - no introducir contenidos técnicos propios de Bloques II a V - el proyecto del estudiante es el centro del bloque - ReservaFIC es únicamente un ejemplo ilustrativo - Scrum Guide 2020 es la fuente principal para Scrum - The Pragmatic Programmer aporta contexto sobre desarrollo profesional - SBOK 5th Edition se utiliza como recurso complementario - Laravel aparece únicamente como contexto de los laboratorios - no asignar ponderaciones de evaluación no validadas