¿Qué define a un arquitecto de software?
Henry Edmar López Cardona
Estudiante de Ingeniería en Ciencias y Sistemas - USAC
Palabras Clave:
Software, Arquitecto, Gestión, Habilidad, Experiencia, Proceso.
Un arquitecto de software es a menudo, considerado como un experto técnico en un determinado conjunto de tecnologías de desarrollo. Y quizás esta percepción no sorprenda, debido al tipo de decisiones que debe tomar.
No obstante, un rasgo identificativo consiste en su capacidad de entender y guiar un proyecto de manera intuitiva, poseer un marco de conocimientos y experiencias que respalden sus decisiones. Pensar un problema en diferentes maneras, analizar el diseño e interacción de los sistemas involucrados y las partes interesadas.
Todo lo anterior representa parte de la esencia de un arquitecto de software. La amplitud y profundidad de sus responsabilidades conlleva expresar su liderazgo a través de la interacción dinámica con los miembros del equipo, debe mostrar confianza al establecer la dirección del proyecto, motivar y fomentar la creatividad e innovación de aquellos que desarrollan el producto y/o servicio.
El tipo de actividades que le corresponden al arquitecto determinan las destrezas y competencias que necesita desarrollar para tener éxito. Los principios fundamentales detrás de las decisiones arquitectónicas pueden resumirse en el siguiente apartado.
Amplia experiencia
Convertirse en arquitecto de aplicaciones es un proceso evolutivo, en el que progresivamente se gana la experiencia y confianza necesarias para asumir las obligaciones que ello supone. Afrontar proyectos ambiciosos y conocer el problema son factores que deben equilibrarse. [1]
Tomar decisiones en relación con el diseño del sistema utilizando información incompleta, en una etapa temprana del desarrollo, es un escenario que frecuentemente se presenta. Ello requiere una gran cantidad de experiencia y comprensión tanto del dominio del problema como de las tecnologías involucradas en la solución.
Como experto en soluciones, el arquitecto debe ir más allá de las limitaciones e imaginar lo que es posible, teniendo en cuenta las restricciones de tiempo y presupuesto impuestas.
Gestionar la complejidad
Lidiar con la complejidad inherente, tanto del problema como de la solución, es un elemento esencial de la arquitectura que el arquitecto debe administrar para entregar el sistema esperado. Definir un enfoque de alto nivel es una técnica estratégica que estos emplean para dominar la complejidad de forma técnica y no técnica por igual. [2]
La recopilación de requerimientos, separar el sistema en capas lógicas y definir una interfaz adecuada son algunas de las tácticas de las que se dispone. El entorno de la solución a nivel del sistema no es fácil de dominar, y si no existe la gestión del arquitecto de software, cualquier intento de solución fracasará en la mayoría de los casos.
Importancia de los requerimientos
El inicio de un proyecto comienza con la obtención de los requerimientos funcionales: las necesidades del problema para declarar el diseño de la solución. Si bien el arquitecto no debe ser necesariamente un experto en la toma de requerimientos.
Este debe poder comprender dicha información de manera efectiva para dominar el problema desde el inicio. Los requerimientos no funcionales son aquellas expectativas sobre lo que los interesados esperan como solución, y también deben identificarse y registrarse. [3]
Además, es recomendable que se consideren nuevos enfoques, basados en proyectos antiguos, y que esto signifique agregar o eliminar requerimientos para ofrecer una solución óptima.
Habilidad de comunicar
Los distintos involucrados en la organización, sea dentro o fuera del ámbito del proceso de desarrollo, poseen distintos tipos de conocimiento y experiencia en software. El arquitecto pasa una importante cantidad de tiempo interactuando con ellos.
Por ello, tener habilidades de comunicación verbal y escrita, escuchar los inconvenientes, capacidad de convencimiento y poder explicar la arquitectura de la manera adecuada, es parte del repertorio de destrezas que debe incluir un arquitecto.
Liderazgo
El liderazgo empleado por los arquitectos debe basarse en conocimiento y logros, no simplemente en decisiones administrativas. Liderazgo no es lo mismo que gestión. Este implica una variedad de habilidades incluida la preocupación por los integrantes del equipo, su capacidad de motivar, persuadir e inspirar.
Los arquitectos experimentados siempre buscan el consejo de las partes involucradas: administradores de proyecto, desarrolladores, diseñadores y los clientes clave. No quiere decir que el arquitecto huya de tomar decisiones; al contrario, disponer de una solución conlleva recopilar información constante y relevante de distintas fuentes, esto amplía el marco de elección de ideas y le permite sintetizar aquellas al equipo hacia una solución exitosa.
Conclusiones
Los arquitectos deben ser capaces de abordar la complejidad del proceso de creación de software, aplicar su experiencia y conocimientos comprobados, y lidiar con los problemas en distintos aspectos relacionados con los involucrados.
Las distintas responsabilidades del arquitecto incluyen poseer nociones técnicas y no técnicas, capacidad de liderazgo y compromiso con el rol que desempeñan en distintas áreas.
Referencias
[1] Philippe Kruchten, «Springer Link», The Software Architect and the Software Architecture Team, 1999. [En línea]. Disponible en: http://bit.ly/2n6KRm1. [Último acceso: 30 septiembre 2019].
[2] Nikolay Ashanin, «Medium», The Path to Becoming a Software Architect, 1 octubre 2017. [En línea]. Disponible en: http://bit.ly/2oxIokV. [Último acceso: 30 septiembre 2019].
[3] Simon Brown, «InfoQ», Are you a Software Architect?, 09 febrero 2015. [En línea]. Disponible en: http://bit.ly/2oBzumG. [Último acceso: 30 septiembre 2019].