El origen...
El pensum actual del Programa de Ingeniería de Sistemas de la UFPS rige desde el año 2012 (o un poco después). Una novedad en este pensum es una asignatura de noveno (9) semestre llamada Arquitectura de Software. Antes de ese año nunca existió una asignatura específica sobre ese tópico. Posteriormente, en el segundo semestre del año 2016, se impartió el primer curso de Arquitectura de Software. Me correspondió a mi la responsabilidad de impartirlo. Yo estaba recién llegado a la UFPS, después de un concurso docente, justo para ese perfil de arquitectura. Yo venía de trabajar más de diez (10) años en el mundo profesional, en el mundo de verdad, que tiene diferencias con el contexto de la Universidad.
En mis estudios de maestría yo había recibido cursos de Desarrollo de Aplicaciones Empresariales, Ingeniería de Software Avanzada y Tópicos Avanzados de Sistemas de Información. Aunque en varios de esos cursos aparece transversalmente la Arquitectura de Software, yo jamás había recibido ni impartido un curso específico sobre ese tópico, aunque si tenía varias lecturas y referencias al respecto. De hecho había estudiado más (soy bastante autodidacta) sobre Arquitectura Empresarial que sobre Arquitectura de Software. Pero mi rol en el mundo profesional fue básicamente el de arquitecto de software.
Mi visión en ese momento no ha cambiado mucho con corte a hoy, casi cinco años después. Considero que gran parte de lo que es la arquitectura de software debe reflejarse en cursos de niveles inferiores, en especial los aspectos más técnicos y los detalles de diseño como patrones y buenas prácticas de programación. Además, la arquitectura de software debe ser mixta entre lo que llaman habilidades blandas y habilidades técnicas y las primeras deben abordarse en cursos de seminarios y de gerencia, pero requieren de una experiencia real, de una práctica profesional. Hay una brecha considerable entre la realidad profesional y la academia. Sin embargo eso aún no sucede, pese a que el mundo sigue cambiando y nos demanda hacer cambios en nuestros currículos. Algún día llegarán los cambios.
Regresando a la historia sobre el origen de la asignatura, en agosto de 2016 asumí el reto de estructurar un curso mixto, que de alguna manera reflejara mi visión de equilibrio entre el rigor académico y la relevancia práctica, de equilibrio entre las habilidades blandas y técnicas, de equilibrio entre el conservadurismo rígido, lento, burocrático, autocrático y averso a los cambios y la postura liberal, flexible, ágil, libre y de evolución permanente.
En ese proceso de preparar el curso, recurrí a la Biblioteca Eduardo Cote Lámus de la UFPS para seleccionar material bibliográfico. En Internet se pueden encontrar excelentes textos y cursos, pero necesitaba usar lo que la UFPS ofrecía, pues es lo que está más al alcance de los estudiantes. Seleccioné tres textos de la biblioteca e incluí un cuarto texto que suele considerarse autoridad en el mundo del software. Ojalá los estudiantes leyeran completos los cuatro textos, pero no hay tiempo suficiente para eso, sobre todo en el mundo de hoy. De manera que seleccioné de esos textos las lecturas que consideré apropiadas y estructuré las unidades del curso de acuerdo a esas lecturas.
El primer texto se titula The Process of Software Architecting de Peter Eeles y Peter Cripps, que permite enfocarse en los conceptos fundamentales, el proceso y las habilidades y prácticas propias de un arquitecto de software. La idea del proceso ayuda a mantener la línea de los cursos previos de Análisis y Diseño de Sistemas e Ingeniería del Software y los cursos de gerencia de proyectos.
El segundo texto se titula Software Architecture and Design Illuminated de Kai Qian y otros, que permite conocer los diferentes y más relevantes estilos de arquitectura, sus ventajas, desventajas y mecanismos para evaluar y tomar decisiones de arquitectura. Esto es lo que debería ser un curso de Arquitectura de Software y lo demás se podría asumir en cursos anteriores.
El tercer texto se titula 12 Essential Skills for Software Architects de Dave Hendricksen y se enfoca en las habilidades blandas, algo que bien podría tratarse en cursos de seminario. Es necesario saber, saber, hacer y saber ser. De manera que este libro nos ayuda con el saber, para manejar un vocabulario común, unos conceptos comunes, una visión común.
Finalmente agregué el libro Software Architecture in Practice de Len Bass, Paul Clements y Rick Kazman y que se enfoca en la práctica de la arquitectura y su evaluación desde un punto de vista de la calidad del software. Junto al segundo libro, esto es propiamente arquitectura de software. Este libro es muy completo y amplio que se complementa muy bien con el segundo, pero no está en la biblioteca de la UFPS.
A estos textos agregué el glosario de la Universidad Carnegie Mellon, el capítulo de las 4P del libro de Jacobson, Booch y Rumbaugh sobre el proceso unificado y UML y un artículo sobre la evolución de la arquitectura de software. Son textos cortos de referencia y cuya lectura ayudan mucho para que los estudiantes tengan un entendimiento y una visión más global de lo que significa e implica hacer software.
Después de ocho (8) semestres con este curso, a juzgar por la calificación que recibo como profesor cada semestre, la propuesta ha sido aceptada por los estudiantes. Sin embargo yo no estoy del todo conforme e insisto en los cambios. Procuro hacerlos cada semestre y es de lo que más hablo en clase presencial, hoy por hoy virtual sincrónica. Comienzo este blog pensando en escribir varias ideas que posiblemente nos ayuden después a realizar cambios... Bienvenidos los comentarios, críticas y aportes...
Comentarios
Publicar un comentario