TopCoder.com publica semanalmente varios retos relacionados con distintos aspectos de la ingeniería del software. Retan a los ingenieros informáticos de todo el mundo a ofrecer soluciones de diseño de aplicaciones, diseño de componentes, ensamblado de componentes, programación de dichos diseños, programación de algoritmos,… Todos (o casi todos) los retos vienen acompañados de recompensas económicas. Lo más importante, en mi opinión, es que todo el material que se genera en esos retos suele publicarse (a veces sólo durante la fase de revisión pública, como algunos diseños), de tal forma que si te has atascado en algún reto o bien quieres ver cómo han solucionado otros informáticos el problema, puedes hacerlo. Me resulta especialmente interesante ver y estudiar el código de los problemas de algoritmos más duros, así como los diagramas UML de algunos diseños, de los cuales, se aprende todos los días algo jugoso. Una gran web y un gran recurso formativo.
Hecha la presentación de TopCoder me gustaría hablaros ahora de una herramienta que, a pesar de llevar ya algún tiempo publicada, no ha sido hasta hace unas semanas cuando TopCoder ha decidido publicar su código fuente: se trata de la aplicación TopCoder UML Tool, una herramienta que permite generar distintos diagramas UML: diagramas de clase, de secuencia, de casos de uso, …
Hasta la aparición de TopCoder UML, los diseñadores debían de usar Poseidon para generar los diagramas UML solicitados. Gran herramienta, basada originalmente en ArgoUML, ésta última software libre (y que participó el año pasado en el Google Summer Of Code para añadirle algunas funcionalidades que no poseía, como la posibilidad de realizar diagramas de secuencia).
Lo bueno de la ‘liberación’ de TopCoder UML no sólo es que han publicado el código fuente, sino que en el esfuerzo han abierto para la comunidad toda la documentación generada en su proceso de construcción: casos de uso, diagramas de actividad, documento de especificación de requerimientos, prototipos, plan de gestión de la calidad, diagramas de secuencia, diagramas de componentes, diagramas de interfaces, especificación de componentes, … Estudiar esta documentación nos puede servir para hacernos una idea muy concreta de lo que supone construir una aplicación moderna, hoy en día, siguiendo una metodología, es decir, justo lo que interesa a cualquier alumno de ingeniería del software. Eso sí, hay que tomárselo con calma y mucho café al lado, dado que hay mucho material 😉