Alexander A. E.

Procesos de software y prácticas ágiles I

Estoy llevando una especialización en Coursera llamada Software Product Management. A modo de resumen dicha especialización revisa las principales metodologías y prácticas de desarrollo ágil con el fin de que estemos en la capacidad de liderar a un equipo de desarrollo.

Sin mayor preámbulo, adjunto mis apuntes de la primera semana:

Semana 1 - Lección 1: Introducción

Objetivos de un mejor software:

  1. tener el producto correcto
  2. bien hecho
  3. bien administrado

¿cómo conectar objetivos y personas? : por medio de procesos y prácticas

Semana 1 - Lección 1: Procesos y prácticas

Proceso -> organiza el desarrollo de un producto de software en diferentes etapas. comprende desde el inicio de la idea hasta el retiro del producto (de ser necesario).

las fases pueden darse en serie o paralelo, algunas pueden ser:

  • especificación -> concepción de la idea + listado de requerimientos
  • diseño e implementación
  • verificación y validación

Un proceso agrupa varias fases o etapas, las cuales a su vez comprenden un conjunto de actividades. las actividades contienen las tareas.

proceso > fases > actividades > tareas

  • las tareas pueden depender de otras tareas (implica orden)
  • un rol es un deber u obligación que una persona toma o desempeña: desarrollador, tester, CEO, cliente o product manager
  • "work product": diseños, requerimientos, código fuente, casos de test, documentación interna..
  • una tarea puede dar como resultado o requerir como entrada un "work product"
  • una tarea requiere recursos para ser completada: dinero, tiempo, tecnología, conocimiento o personal.

Las prácticas son tácticas que el SPM (software product manager) usa para hacer que los procesos se ejecuten fácilmente. Proveen guías en aspectos del desarrollo como : asignar fechas y organizar tareas, prevenir el desperdicio de recursos y monitorear el desarrollo del producto de trabajo. por ejemplo:

  • planear qué características van en cada lanzamiento
  • estimar la duración de las tareas
  • mantener reuniones breves diarias

Las prácticas se reúnen frecuentemente en una metodología.

Una metodología es un conjunto de prácticas. (por ejemplo scrum)

El manifiesto ágil provee una filosofía. Y una metodología ágil provee un conjunto de lineamientos y reglas. Independientemente de las prácticas que uses. Ellas están destinadas a proveer una estructura para lo que involucre el proyecto. Esta estructura puede ayudar a planear efectivamente un proyecto, completar fechas límites, mejorar la comunicación, seguir el progreso y finalmente, entregar un mejor software.

Por ejemplo, en la fase de especificación, tenemos muchas prácticas que describen cómo obtener y expresar requerimientos de los clientes.

Muchas metodologías promueven y facilitan la comunicación abierta entre clientes, SPM y desarrolladores.

Tener una comunicación abierta entre desarrolladores permite un desarrollo eficiente ya que las expectaciones son claras y todos conocen lo que todos están haciendo.

Un planeamiento y documentación efectiva previene que los trabajos sean completados por más de una persona. También previene que los desarrolladores produzcan una característica que tal vez no sea exactamente a lo que el cliente solicita.

Esto ayuda a mantener el proyecto en los tiempos planeados lo que ayuda a su vez a mantenerlo dentro del presupuesto.

Las prácticas y procesos son flexibles. Es posible tomar aspectos de varios procesos y prácticas para crear algo que cumpla todas tus necesidades. También pueden ser mejoradas y desarrolladas a través del tiempo.

Aprendiendo múltiples procesos y prácticas uno será capaz de generar o seleccionar un proceso o un conjunto de prácticas que funcione mejor para tu equipo.


Semana 1 - Lección 2:

Una actividad en ingeniería de software es un grupo de tareas relacionadas en el desarrollo de software. Cada actividad tiene como entrada y salida, productos de trabajo.

Actividades de ingeniería de software

  • Un equipo debe decidir algunos aspectos del desarrollo, como convenciones de código, niveles de documentación, estrategias de testing y la definición de terminado.

  • Cualquier parte del proyecto que podría ir mal en algún modo sería la entrada para la actividad de gestión de riesgos. La salida es un plan de riesgos que delinea los riesgos potenciales y sus respectivos planes de mitigación.

  • Los tiempos de desarrollo están basados en estimados de cuánto tiempo tomará completar las tareas. Cuando los estimados están muy lejos, el cronograma se compromete. La entrada es una lista de tareas que necesitan ser completadas. La salida son los cronogramas.

  • La actividad de asignación de recursos incluye planeamiento y programación del cronograma de recursos de personal. Esto significa descomponer el horario de trabajo y asignar tareas.

  • Hacer mediciones es otra actividad que envuelve tareas como la definición, cálculo y análisis de métricas. Las métricas son usadas para realizar seguimiento y evaluar el producto y/o proceso. Las métricas pueden medir la densidad de defectos del producto, la velocidad a la que el equipo completa las tareas, el número de funciones completadas.

Algunas de las fases del desarrollo de software pueden ser:

Fase de especificación

Corresponde a la identificación de ideas y necesidades: sin una idea no hay producto a desarrollar.

Fase de implementación

Verificación y validación

Es donde validamos si el producto hace lo que está destinado a hacer y que cumpla las necesidades del cliente.

Las retrospectivas ayudan a identificar las áreas en las que se pueden mejorar la siguiente vez.


Nota:

El curso incluye material en formato PDF que se puede descargar desde la página de recursos del mismo o desde aquí

Comentarios !

comments powered byDisqus