Evento
Los modelos nos ayudan a razonar de manera más sencilla cierto aspecto de un sistema. Dibujar dos rectángulos sobre una hoja de papel unidos por una línea es una herramienta poderosa, ya que al introducir una abstracción nos ayuda a razonar sin necesidad de tanto detalle y a comunicar sin necesidad de tantas palabras. En el mundo del software, los modelos que gran cantidad de desarrolladores utilizamos se limitan a los existentes en UML o similares. Pero hay un problema: cuando el objetivo es diseñar o analizar estructuras grandes y complejas, estos modelos a menudo resultan incomprensibles. ¿Qué hacer? Buscar otro tipo de modelos.
La matriz de estructura de diseño (DSM, por sus siglas en inglés) es una representación compacta de la estructura de un sistema, la cual es susceptible a análisis visual e interactivo, pero también a la aplicación de algoritmos provenientes en su mayoría de la teoría de grafos. Estos algoritmos pueden, por ejemplo:
* Encontrar la arquitectura en capas real del sistema (y no lo que está planteada en un documento).
* Encontrar los submódulos "naturales" de un sistema.
* Encontrar dependencias no deseadas entre módulos.
* Sugerir re-agrupaciones de módulos para simplificar la estructura.
Las DSM's no solo se utilizan para modelar software, también se utilizan para modelar sistemas de ingeniería, productos y características, procesos, organizaciones e incluso interacciones entre dominios distintos.
En esta plática introduciré los conceptos y técnicas básicas para comenzar a utilizar las DSM's y presentaré algunos ejemplos en vivo con algunas herramientas.
Agustín es un profesional de desarrollo de software con 10 años de experiencia en la industria. Nominalmente ha trabajado como programador, líder técnico, arquitecto y couch en el desarrollo de servicios estratégicos y familias de productos para organizaciones de clase mundial, principalmente en los mercados del entretenimiento, salud y seguridad. Impulsor de las tecnologías abiertas, el código limpio y la metáfora del artesano como una descripción más adecuada de nuestra profesión. Gusta de refactorizar diseños, código, ideas y equipos de desarrollo por igual.