Menú Cerrar

Katas de arquitectura de software

¿Cómo puedes convertirte en un gran arquitecto de software?

Esa es una pregunta que nos surge a muchos cuando queremos llevar nuestra carrera en tecnología por ese emocionante camino. Evidentemente necesitamos estudiar varios temas (te recomiendo empezar por aquí), pero también necesitamos practicar. Y es ahí donde viene el reto más interesante.

En la vida real, se dice, nos vemos involucrados en el diseño de una nueva aplicación unas 12 veces o quizá menos. Recordemos que al inicio de una aplicación es donde se toman las decisiones más importantes: tecnologías a usar, patrones de arquitectura, atributos de calidad, entre otros. Después de esto, viene el desarrollo y mantenimiento de la aplicación. También la aparición de nuevos módulos, pero estos suelen tener un impacto más pequeño.

Ante este reto de tener proyectos reales para practicar es que surgen las katas de arquitectura de software.

¿Qué es una kata de arquitectura?

Es una actividad definida por Ted Neward donde se busca diseñar la arquitectura de un sistema cercano a la realidad.

La actividad suele realizarse en equipos, donde a cada uno se le asigna una ejercicio que se debe resolver en un tiempo determinado.

Existe una persona con el rol de moderador, y que hace las veces de cliente, gerente de proyectos, usuario final, entre otros. Tiene la tarea de aclarar las inquietudes que surjan en la kata.

Fases de las katas de arquitectura

Preparación. Se conforman equipos de 3 a 5 personas y se les asigna un ejercicio. Si hay personas de distintas empresas, lo ideal es que compañeros de trabajo no estén en el mismo equipo.

Discusión. Durante esta fase, que suele durar unos 45 minutos (o el tiempo que defina el moderador, es donde se define la arquitectura del ejercicio. Aquí se deben hacer supuestos sobre las tecnologías a usar si no se conocen bien, se hacen preguntas a los moderadores, y en general, se resuelve el ejercicio asignado.

Presentación. Se definen 1 o 2 representantes por equipo para que expliquen tanto el problema como la solución propuesta.

Votación. El resto de equipos vota a partir de la presentación:

  • ¡Muy buen trabajo! (pulgar hacia arriba ?). Esto indica que el ejercicio se resolvió a cabalidad, la solución es coherente y se seleccionaron tecnologías razonables.
  • Mal trabajo (pulgar hacia abajo ?). Se hicieron supuestos importantes sin ninguna validez.
  • Pudo hacer sido mejor (mano neutral u horizontal). No se tiene una visión clara del proyecto y se olvidaron aspectos importantes.

Listado de ejercicios para katas de arquitectura

Ted Neward definió un listado inicial de ejercicios para katas de arquitectura, el cual puedes encontrar en el sitio web architecturalkatas.com. Allí puedes pedirle a la página que te seleccione aleatoriamente una kata para que la trabajes.

Dado que las katas se definieron de manera abierta, quise traducirlas al español para que sean de fácil acceso y uso en nuestro idioma. A continuación encuentras algunas de esas katas traducidas. En algunos casos, me apoyé del material de Neal Ford, otro gran arquitecto, quien también puso las katas en su sitio web, las formateó un poco y complementó algunos detalles. También hice algunas adaptaciones a nuestro contexto hispanohablante.

El guerrero del camino ✈️

Una importante agencia de viajes quiere construir un panel de administración de viajes de próxima generación, que le permita a los viajeros ver todas sus reservas existentes, organizadas por viaje, ya sea en línea o a través de un dispositivo móvil.

Usuarios
– Más de 10,000 usuarios registrados a nivel mundial.

Requerimientos
– Debe conectarse al sistema existente de la agencia para aerolíneas, hoteles y alquiler de vehículos. La conexión debe permitir cargar automáticamente reservas a través de cuentas de viajero frecuente, cuentas de puntos de hoteles y cuentas de recompensa de alquiler de vehículos.
– Los clientes pueden añadir manualmente reservas existentes.
– Los ítems en el panel se pueden agrupar por viaje, y una vez un viaje esté completado, los ítems se remueven automáticamente del panel.
– Los usuarios también pueden compartir su información de viaje a través de redes sociales.
– Interfaz de usuario lo más rica posible a través de todas las plataformas.

Contexto adicional
– Debe integrarse de manera transparente con sistemas de viaje existentes.
– Se están negociando alianzas para que existan proveedores “favorecidos”.
– Debe funcionar a nivel internacional.

Cuarto con vista ?

Una gran compañía de reservas de hotel quiere construir un sistema de próxima generación para administración y reservas de hotel, diseñado específicamente para resorts de lujo y spas donde los huéspedes pueden ver y reservar cuartos específicos.

Usuarios
– Cientos de huéspedes.
– Empleados del hotel (menos de 20).

Requerimientos
– Las reservas se pueden hacer a través de la web, móvil, llamada telefónica o directamente en la recepción.
– Los huéspedes pueden reservar ya sea un tipo de habitación (estándar, de lujo, o suite) o escoger un cuarto específico mirando las fotos de este y su ubicación en el hotel.
– El sistema debe gestionar tanto el estado de la habitación (reservada, disponible, lista para limpieza, etc) como la fecha en que será necesitada próximamente.
– Debe tener funcionalidades de punta para administrar la limpieza, de forma que el personal de mantenimiento y limpieza pueda ser dirigido a diferentes cuartos dependiendo de la prioridad y las reservas. Para esto, el personal usará dispositivos provistos por la compañía de reservas, y que estarán pegados a los carros de limpieza.
– Las funcionalidades normales de reservas (como pagos, información de registro, etc) serán manejadas por el sistema de reservas existente.
– El sistema será web y estará hosteado por la compañía de reservas.

Contexto adicional
– ¡La temporada alta se acerca, así que el sistema tiene que estar listo pronto, o se tendrá que esperar hasta el próximo año!
– La compañía también está invirtiendo en tecnología de punta como cerraduras inteligentes para cuartos que se abren desde el celular.
– Solo hay interés en el mercado de lujo.
– El personal de ventas tiene muchísima influencia en la organización.
– La gente a veces tiene problemas cumpliendo las cosas que promete.

No hay comercio como el comercio electrónico ?

Nombre original: There’s No Business Like E-Business

Una empresa desea construir una herramienta/framework/”lo que sea” para crear portales de comercio electrónico para que pequeños negocios (clientes) puedan vender a sus clientes (usuarios).

Usuarios
– (Potencialmente) Millones de usuarios por cliente.
– (Potencialmente) Miles de clientes.

Requerimientos
– Todos los requerimientos usuales de un paquete de comercio electrónico (confiabilidad, manejo de usuarios, intercambio de dinero (tarjetas de crédito, cheques, ¿otros?), etc).
– Hosting “invisible” para el cliente.
– Administración mínima por parte del cliente.
– Internacionalización obligatoria.

Servidor de tiquetes ?️

Nombre original: Ticket to serve

Algunas veces es mejor ser el intermediario. Tu objetivo es proveer un API de tiquetes (boletos o tickets) para que cada vendedor de tiquetes lo use en su sistema.

Necesitas proveer diferentes funcionalidades para ayudar a tu cliente a manejar el evento y vender sus tiquetes, pero también hay muchas funcionalidades que podrían estar por encima del alcance.

Usuarios
– Unos pocos miles de revendendores.
– Miles a millones de usuarios por revendedor.

Requerimientos
– Ofrecer a tu cliente una funcionalidad para obtener la lista de tiquetes disponibles para un evento y poder comprarlos.
– El usuario desea ser notificado cuando un tiquete que está mirando acaba de ser comprado.
– Debes asegurarte por completo que un tiquete no sea comprado dos veces.
– Deseas construir una interfaz administrativa para ti mismo, en la cual puedas ayudar al soporte para revendendores con tareas específicas.
– Deberías pensar en implementar un sistema de comisión por cada tiquete vendido.
– Deseas proveer una interfaz de eventos para notificar a los revendedores. Por ejemplo, cuando un pago es detectado como fraudulento días después que fue hecho.
– Necesitas proveer un sistema con suficiente información para que un revendedor sepa cuánto dinero va a hacer.

Contexto adicional
– Quizá quieras proveer algún tipo de hosting a los revendedores para disminuir su carga técnica.
– Dado que algunos países tienen leyes restrictivas, quieres tener en mente la posibilidad de separar completamente tu base de clientes o usuarios para legislaciones específicas.

Alcanzando la nota ?

Nombre original: Making The Grade

El ministerio de educación de un país desea un nuevo sistema para estandarizar las pruebas de todos los colegios.

Usuarios
– Más de 40,000 estudiantes.
– 2,000 calificadores.
– 50 administradores.

Requerimientos
– Los estudiantes solo podrán usar la aplicación dentro de los centros de prueba en el país. La mayoría de los centros estarán en los colegios, aunque no todos.
– Los estudiantes hacen una prueba y los resultados son eventualmente consolidados en una única ubicación, representando los puntajes de todo el país (por colegio, profesor y estudiante).
– Las pruebas tendrán preguntas de selección múltiple, de respuesta corta y ensayos.
– El sistema debería tener un módulo de reportes para saber qué estudiantes han hecho la prueba y qué puntaje obtuvieron.
– Las preguntas de respuesta corta y ensayos serán calificadas manualmente por profesores, que tendrán que ingresar las notas al sistema.

Contexto adicional
– Para cambiar la forma como las notas se almacenan, se requiere un proceso de aprobación que involucra 3 entidades gubernamentales. Esto se hace por seguridad.
– El país no posee su propio centro de hosting, pero lo delega a un tercero.
– El proyecto debe defender tu presupuesto cada año fiscal.

¿Quién es tu papá? ?

Nombre original: Who’s Your Daddy?

Una empresa desea construir el árbol genealógico más grande de la historia.

Usuarios
– Millones de usuarios.
– Cientos/miles de aplicaciones de terceros.

Requerimientos
– Los datos tienen forma de grafo, sin límites fijos, y debe ser visible y buscable en distintas plataformas (web, móvil, etc).
– El API debe dar acceso a terceros a todos los datos.
– Integración con Facebook.
– Los registros históricos son recolectados por personas, y estos incluyen censos, certificados de matrimonio y de muerte, y registros parroquiales. Cada registro debe ser verificado, transcrito y escaneado dos veces.

Revisa tu tarea ?

Nombre original: Check Your Work

Una universidad ha expandido de forma importante sus cursos de ciencias de la computación, y quiere automatizar la calificación de tareas de programación sencillas.

Usuarios
– Más de 300 estudiantes por año.
– Profesores.
– Personal administrativo.

Requerimientos
– Los estudiantes deben poder subir su código fuente, el cual será ejecutado y calificado.
– Las ejecuciones y las calificaciones deben ser persistentes y auditables.
– Se requiere un sistema de detección de plagio, el cual debe comparar con otras tareas enviadas. Además, también hay que apoyarse en un servicio web externo (TurnItIn).
– La integración con el sistema de administración del aprendizaje (LMS) de la universidad es requerida.
– Los profesores definen una fecha y hora límite, después de la cual los envíos son rechazados.
– Los estudiantes pueden enviar tantos intentos como deseen, para mejorar su nota.
– Los profesores determinan los criterios de calificación, los cuales pueden incluir métricas o pruebas.

Contexto adicional
– El sistema de aprendizaje de la universidad (LMS) funciona sobre un mainframe, y es difícil hacerle cambios.
– Las notas son auditadas cada año por entidades estatales.
– La universidad tiene un presupuesto muy bajo para el departamento de sistemas, ya que está construyendo nuevos escenarios deportivos.
– La universidad tiene el récord de los mejores egresados de ingeniería de sistemas del país.

Más ecológico ☘️

Nombre original: Going Green

Una tienda grande de tecnología desea entrar al negocio de reciclaje de equipos electrónicos y necesita un nuevo sistema para soportarlo. Los clientes pueden enviar sus equipos personales pequeños o llevarlos a un local en la tienda. Posiblemente, pueden recibir algo de dinero por los equipos usados si estos están en buena condición.

Usuarios
– Cientos. Ojalá sean miles o millones.

Requerimientos
– Los clientes obtienen una cotización por su equipo personal usado (teléfonos, cámaras, etc), a través de la web o un local en la tienda.
– Los clientes reciben una caja por correo, envían el equipo, y si está en buena condición y funcionando, se les envía un cheque.
– Una vez se recibe el equipo, se revisa y determina si puede ser reciclado (destruido de forma segura) o vendido (en eBay o Mercado Libre, por ejemplo).
– La empresa anticipa que añadirá cada mes, de 5 a 10 tipos de electrónicos nuevos que serán aceptados.
– Cada tipo de equipo electrónico tiene sus propias reglas para cotización y evaluación.

Contexto adicional
– Es un negocio muy competitivo y también es una nueva línea de negocio para la empresa.
– Si no se ha recibido un equipo electrónico en un año, este será removido del sistema.
– Se necesita mantener una lista de equipos electrónicos dispuestos a aceptar, ya que esta cambia frecuentemente.
– Cada equipo tiene sus propias reglas de evaluación.
– Se puede cambiar la cotización original dada al cliente si el producto recibido no está en la condición indicada.

Un sándwich con salsa de tomate ?

Nombre original: I’ll Have the BLT

Una empresa a nivel nacional de venta de sándwiches quiere habilitar un servicio para ordenar a través de internet. Esto es adicional a su servicio para ordenar directamente en los locales.

Usuarios
– Miles. Quizá algún día, millones.

Requerimientos
– Los usuarios hacen su pedido y se les da una hora para recoger el sándwich e instrucciones para llegar al local. Esto último debe integrarse con múltiples servicios externos de geolocalización, que incluyen información de tráfico.
– Si el local ofrece servicio a domicilio, se envía al repartidor para que lleve el sándwich al usuario.
– El sistema se debe poder acceder a través de dispositivos móviles.
– Se deben poder soportar promociones o eventos especiales diarios a nivel nacional.
– Se deben poder soportar promociones o eventos especiales diarios en el local.
– Se aceptan pagos en línea o pagos contra entrega.

Contexto adicional
– Los locales funcionan como franquicias, donde cada uno tiene un dueño diferente.
– La compañía tiene planes en el futuro cercano de expandirse a nivel internacional.
– Una meta corporativa es contratar mano de obra barata para maximizar las ganancias.

Vendido a la 1, a las 2, a las 3 ?

Nombre original: Going…Going…Gone!

Una compañía de subastas quiere llevar sus subastas en línea a nivel nacional. Los clientes escogen la subasta en que quieren participar, esperan a que empiece, y luego hacen ofertas durante la subasta en vivo.

Usuarios
Llegan a cientos de participantes por subasta. Potencialmente miles de participantes, y tantas sesiones simultáneas como sean posible.

Requerimientos
– Los participantes pueden ver una vídeo sesión en vivo de la subasta, y ver todas las ofertas en la medida que van ocurriendo.
– Las subastas tienen ocurrir en tiempo real (tanto como sea posible).
– Tanto las ofertas en línea como las ofertas presenciales deben ser recibidas en el orden que son hechas.
– Los participantes se registran con tarjeta de crédito. El sistema automáticamente cobra de la tarjeta de crédito si el participante gana.
– A los participantes se les hace seguimiento a través de un índice de reputación.

Contexto adicional
– La compañía se está expandiendo agresivamente, comprando competidores pequeños.
– Si la subastas a nivel nacional son exitosas, el plan es llevar el modelo a nivel internacional.
– El presupuesto no está restringido. Esta es una decisión estratégica.
– La compañía recién salió de un pleito legal, donde se le acusaba de fraude.

Espero que con este artículo tengas lo mínimo necesario para empezar a practicar las katas de arquitectura.

Si deseas tener estos ejercicios para utilizarlos de manera offline, he preparado un documento para que las descargues.

Descargar katas de arquitectura en español.

Cualquier pregunta, nos vemos en los comentarios.

Un saludo geek,

Manuel Zapata


Suscríbete a mi lista de correo.

Te avisaré de nuevo material que te ayude a ser un mejor desarrollador o arquitecto.
Publicado en Arquitectura de software