miércoles, 10 de abril de 2013

El modelo 4 + 1 vistas como guía de los workshops de ingeniería de software

[Post Anterior: Re-aprendiendo como enseñar ingeniería de software]

Antes de iniciar con las reseñas de cada una de las actividades, es necesario que quienes quieren ser instructores de este tipo de actividades tengan en cuenta que deben prepararse al menos de manera básica en algunos aspectos. Yo personalmente uso estos Workshops para enseñar Arquitectura de Software a principiantes, existen otros tipos de Workshop más enfocados a Ingeniería de Requisitos y que no cubriré en mis post.

Ahora bien, independiente de las metodologías que usemos es importante recordar que hay algunos principios básicos y hasta sencillos que ayudarían a muchos proyectos y a muchas personas en proceso de aprendizaje, a involucrarse más coherentemente en las actividades que se desarrollan durante el proceso de desarrollo de software. Algunos de esos principios en la Arquitectura de Software se explican de forma genérica en el Modelo 4+1 vistas.

Dando una idea corta de lo que el significa, es un conjunto de perspectivas para afrontar un proceso de desarrollo, esas perspectivas entendidas en sus conceptos generales, pueden ser usadas para expresar y modelar los aspectos principales de nuestros proyectos, dirigiéndonos en cada vista especificamente a algunos participantes en el proceso (ver imagen). Hay otras aproximaciones  esta es una de las más fáciles de comunicar y que les recomiendo leer, tengan en cuenta que el Modelo 4+1 no define que UML es la forma de modelar las distintas vistas, sin embargo, al hacer el símil con los diferentes diagramas es posible materializarlas usando diagramas UML específicos.

Los workshops, no están enfocados a cubrir UML, lo que hago es usar algunos conceptos principales, pero es importante no olvidar que las sesiones buscan crear la sensibilización y ayudar a despertar las habilidades a los asistentes con respecto a los temas a considerar en las diferentes vistas o perspectivas. El trabajo más teórico y detallado de UML requiere de las sesiones de teoría y práctica que no son el objetivo ni de estos post ni de los workshops.

Antes de empezar con el workshop, es necesario socializar con todo el equipo el alcance del problema a resolver, claramente al no partir desde requisitos detallados la actividad no buscará un alto nivel de precisión, sin embargo si cumplir con lo que se pacte en la socialización, para que el producto final pueda ser revisado en el proceso y al terminar la actividad. De acuerdo al Modelo 4+1 lo que se converse en este tiempo serían los escenarios que todos van a cumplir en las 4 vistas adicionales.

Una de mis recomendaciones es que si hace este ejercicio en una empresa, no lo haga con una aplicación real, las personas terminan disipándose en sus problemas del día a día, elija algo sencillo, y que permita usar altas dosis de sentido común para ser resuelto.

Para la etapa de socialización he usado 3 técnicas distintas:

1. Enunciado detallado: Se entrega a todos los participantes un enunciado detallado del software que se va a construir y se hace una sesión de dudas para que todos puedan preguntar y aclarar inquietudes. Es muy importante que si se llegan a pactos o se hacen observaciones en la sesión de dudas el instructor las tenga presentes para asegurarse que en las diferentes vistas todos estuvieron pendientes no solo del enunciado si no de los acuerdos realizados. Confieso que en la parte de preguntas justamente intento introducir algún criterio de alto valor, con el ánimo de llamar la atención sobre que el cliente pidió algo y nadie estuvo atento a lo que pidió, en caso de que olviden implementarlo.

2. Historias de usuario: El instructor prepara las historias de usuario que cubren todos los escenarios de la aplicación a realizar. Esto me pareció muy adecuado y creo que es la que más repetiría en escenarios fuera de un salón de clase, la razón es que te ayuda a llegar más rápidamente al Worskhop de Arquitectura, y las historias de usuario se convierten en la herramientas que todos usan como referencia.

Con ellas se puede realizar una actividad de identificar metas, restricciones y supuestos arquitectónicos. Además en uno de los equipos hicimos la identificación de las calidades sistemicas de ISO 9126, esto depende más del nivel de los participantes. En un salón de clase de primer nivel de ingeniería recomiendo más el enunciado inicial, a menos que ya se cuente con requisitos detallados abordados en la materia o por que no, historias de usuario detalladas.

3. Workshop previo de Ingeniería de Requisitos: Según el foco y la disponibilidad de tiempo, antes de inicial el Workshop de arquitectura, puede realizarse una actividad de identificación de requisitos. Esto es una buena experiencia ya que se logra involucrar a las personas desde el inicio, sin embargo el instructor debe hacer además en algunos momentos escenas actuadas tratado de ser mas el cliente que el instructor, con el animo justamente de poner algunos tropiezos y llevar a los futuros arquitectos a buscar y no solo quedarse en consideraciones técnicas, si no entender realmente su rol, en el cual los objetivos de negocio son tan importantes como las buenas arquitecturas.

Aquí podría generar otra serie de post al respecto, más adelante espero animarme a hacerlo, ya que se pueden hacer bastantes actividades como generación de historias de usuario, prototipos, requisitos formales, etc, todo de una manera bastante lúdica.

Vistas estas 3 maneras de iniciar con el workshop, les dejo algunas recomendaciones generales.

Recomendaciones:
Como les aconsejaba antes es bueno que el instructor tenga una aplicación que conozca lo suficientemente bien, pero que siempre este dispuesto a dejar que propuestas diferentes salgan en el transcurso, conocer el proyecto es más una manera de dar ideas ante una situación donde los participantes no sepan que hacer.

Generalmente abordo he abordado esta actividad en grupos de 10 o más personas, la idea es que el grupo se divide el equipo en equipos y se les encarga a cada equipo de una de las vistas.

Recomiendo que minimamente antes de empezar se haga una socialización del Modelo 4+1 vistas, esta puede realizarse con las notas breves del Modelo 4+1 de Javier Garzas.

Asignación de participantes:
Si el docente o instructor conoce las personas en la actividad, es bueno que inicialmente asigne al menos una persona con conocimientos en cada vista. En la vista logica un analista funcional, en la vista fisica alguien que le guste y conozca temas de IT y redes y en las vistas de implementación y procesos a quienes sepa que son más buenos en el ámbito del desarrollo de software.

La idea consiste en hacer sesiones de 15 minutos, cada quince minutos uno de los integrantes del equipo o más en caso de ser muchos, giran a otra de las vistas, la dinámica se da hasta que todos hayan pasado por todas las vistas. Cada que alguien nuevo llega a un equipo, debe ser puesto en contexto de lo que se está trabajando. La parte genial que da la dinámica de girar es que cuando alguien gira, debe ayudar a que la otra vista sea consecuente con la vista en la que estaba participando antes, de hecho esto se da por defecto, pero si no debe ser indicado por el instructor.

El instructor debe estar pendiente además de los equipos que enfocan mal el sentido de las vistas o que no avanzan por que sienten algún bloqueo.


Espacio de trabajo: 
Trate de buscar un espacio amplio donde la gente pueda desplazarse, no permita que se usen computadoras o dispositivos moviles en el transcurso de la sesión, que todos estén involucrados trabajando.

Necesitará trabajar en las paredes, así que asegúrese de que todos los materiales que usan no maltratan las mismas. Algunos diagramas necesitan además escribir y borrar, para esos necesita un tablero para marcadores borrables o muchas hojas de papel periódico.


Estrategia:
Como preparación al Workshop, defina las reglas de cada una de las vistas. Elija un modelo para hacer en la sesión en cada una y defina una cada de herramientas, esto se convertirá en la guia de las actividades de cada uno de los equipos.

En adelante generaré 4 post con cada una de las vistas y mis aprendizajes en ellas, en cada una les diré que reglas o caja de herramientas uso, y espero recibir sus comentarios.

Los veo en la siguiente entrega.

Sorey

sábado, 6 de abril de 2013

Re-aprendiendo como enseñar ingeniería de software

Hace algún tiempo, en mis post de ingeniería de software de este blog, en mis artículos y conferencias por ahí, vengo hablando de lo mucho que me preocupa el tema de la falta de sensibilización que se hace a los profesionales en formación respecto a la calidad y la ética profesional, pero además de eso, la preocupación un poco más común del hecho de que los jóvenes salen de las universidades vagamente preparados para enfrentarse al mundo real, que a veces no les da tiempo ni de reaccionar frente a los conocimientos que adquieren.

Ante esta problemática, un día me cansé de hablar de mis preocupaciones e intentar llevar a mis estudiantes del salón de clase y sumergirlos en una experiencia diferente, sin dejar de lado el aprendizaje de algunos de los conceptos teóricos más importantes, pero haciendo especial enfasis en la calidad, la ética y las habilidades humanas que como individuos ayudan tanto en nuestros equipos de trabajo cuando hablamos de desarrollar software.

Es así que hoy inicio una serie de post, contándoles sobre un conjunto de aventuras que he tenido, tratando de salirme de la acartonada forma de explicar ingeniería de software únicamente descargando montones de conceptos teóricos en las personas.

Las herramientas, sencillas:
  • Post it de formas y colores diferentes
  • Papeles de colores tijeras
  • Cintas de enmascarar de colores
  • Paredes, tableros
  • Marcadores borrables y permanentes pequeños
Pero sobre todo muy buena energía y una sensibilización previa sobre la importancia de la calidad y la ética en la ingeniería de software, además de dar bases y conceptos teóricos sobre ingeniería de requisitos y metodologías tradicionales y ágiles.

Los ejercicios van desde construcción manual de prototipos de acuerdo a los requisitos, hasta generación de historias de usuario, analisis de las perspectivas del modelo 4+1 vistas, y muchos más.

La ventajas que todo esto ha traido en mi salón de clase, difieren claramente de mis 6 años dictando esta materia. Todas las personas del salón están involucradas en la construcción de los diferentes diagramas, a veces se trabaja en equipos separados, a veces todos juntos.

En el camino se ve como cada persona va tomando las actividades y roles que más le gustan, casi como un entorno real, se eliminan las largas sesiones teorícas, y siempre van a compañadas de algún ejercicio práctico. Los estudiantes se distraen mucho menos con los equipos de computo, y tienen más experiencias de recordación.

Quienes son más técnicos ayudan a los demás a adquirir cierto nivel de comprensión en la solución de los problemas y quienes son más analíticos ayudan a los demás a concentrarse en no solo cosas técnicas, como es realmente la ingeniería de software. Lo muy importante es que todos ellos se enseñan entre sí mismos.

Claramente hay algunos riesgos o situaciones a tener en cuenta, es una actividad física más desgastante para todo el mundo, y el docente debe estar en capacidad de guiar coherentemente cada uno de los escenarios, mi recomendación sería que se elija una aplicación que conozca lo suficiente pero que siempre este abierto a las opiniones de mejora de los estudiantes. Con cada grupo, la interacción es distinta y a veces hasta hay resultados diferentes. Las aplicaciones móviles con background empresarial son excelentes referentes.

Para ir haciendo un seguimiento de manera ordenada y comunicarse todos, he usado Trello para llevar mis clases y ha sido un verdadero éxito. Siempre lleve mis clases a través de muchos medios, páginas web, herramientas para docentes, sin éxito alguno. Definitivamente una herramienta colaborativa fue lo mejor, les comparto una imagen de nuestro board a hoy y los invito a estar pendientes de cada uno de los post donde les contaré individualmente las dinámicas y las ventajas y desventajas o situaciones importantes que vivimos en cada una de ellas.

Creo que la repetición va a ir enseñandome cosas, de hecho he realizado varios talleres ya, con estudiantes, profesionales técnicos y clientes y cada uno de ellos me ha dejado variado aprendizaje.

Este es nuestro board de Trello en clase, espero que este primer post les de algunas ideas y por que no, que compartamos aprendizajes.


Saludos y hasta la próxima.

Sorey