Dev & AM

¿CUÁL ES LA FUNCIÓN DE UN ARQUITECTO DE SOFTWARE?

arquitecturasoftwareMientras en la industria el término Desarrollador de Software está bastante claro, el término Arquitecto de Software sigue bastante difuso y muchas empresas se preguntan si necesitan o no a alguien que desempeñe dicho rol.

El Arquitecto de Software debe ser una persona con amplios conocimientos técnicos, gran experiencia en programación, liderazgo y que ejerza las siguientes funciones:

  • Gestión de los requisitos no funcionales y definición de la Arquitectura de Software
  • Selección de la Tecnología
  • Mejora continua de la Arquitectura
  • Facilitador
  • Líder y Formador
  • Aseguramiento de la Calidad
Gestión de los requisitos no funcionales y definición de la Arquitectura de Software

En muchos proyectos de software se suele preguntar a los usuarios qué características desean en el producto a desarrollar, pero muchas veces se pasan por alto los requisitos no funcionales, o cualidades del sistema, que se necesitan.

Los requerimientos no funcionales tienen que ser específicos, medibles, alcanzables y comprobables, para poder satisfacerlos (no basta con algo subjetivo como: «el sistema debe ser rápido»), y además hay que saber priorizarlos de manera que todos sean tomados en cuenta.

Características como el rendimiento, la escalabilidad, la disponibilidad, auditoría, etc., son requisitos no funcionales que deben ser definidos e incluso cuestionados cuando se considere oportuno y es el Arquitecto de Software quien debe asumir estas funciones.

Una vez obtenido el conjunto completo de requisitos no funcionales, el siguiente paso es pensar en cómo se resolverán los problemas expuestos y definir la arquitectura.

La definición de la arquitectura se trata de la introducción de la estructura, directrices, principios y liderazgo de los aspectos técnicos de un proyecto de software. Por lo tanto se requiere de una figura dedicada a pensar en estos aspectos, es decir, alguien tiene que asumir la propiedad del proceso de definición de la arquitectura y esto es sin duda, parte de las competencias del Arquitecto de Software.

An architect should have an idea of how to implement his or her architecture, but should be «prepared to accept any other way that meets the objectives as well.» – Frederick P. Brooks, Jr

Selección de la Tecnología

La selección de la tecnología suele ser un ejercicio con una serie de desafíos interesantes y en el cual se debe tomar en cuenta un universo de factores como el coste, las licencias, la relación con los proveedores, la estrategia de la tecnología, la compatibilidad e interoperabilidad, política de actualizaciones, etc.

Adicionalmente hay que conocer si las tecnologías funcionan realmente y se adaptan o no a los requerimientos del software.

El Arquitecto de Software debe asumir la propiedad del proceso de selección de la tecnología y por tanto es responsable del riesgo técnico.

Mejora continua de la Arquitectura

Hoy en día es imposible pensar en el desarrollo de software sin tomar en cuenta procesos de evaluación y feedback que permitan conocer si el software satisface las expectativas del usuario.

De igual manera es necesario someter a la arquitectura de software a dichos procesos, para demostrar que funciona, que efectivamente resuelve los requisitos no funcionales y por tanto reducir el riesgo general de fracaso del proyecto.

El Arquitecto de Software debe encargarse de la mejora continua de la Arquitectura y a su vez estar abierto a modificarla utilizando las sugerencias o feedback que se pueda obtener de otros miembros del equipo.

An architect should «listen to the builder’s suggestions for architecture improvements.» – Frederick P. Brooks, Jr

Facilitador

La arquitectura del software debe ser conocida y entendida no solo por el equipo de desarrollo sino también por otras áreas como seguridad informática, base de datos, operaciones, el equipo de mantenimiento, etc.

Es función del Arquitecto de Software servir de facilitador para la colaboración entre estos grupos de interés de manera de garantizar que la arquitectura se integrará con éxito en el entorno empresarial.

Líder y Formador

El Arquitecto de Software debe asumir la dirección técnica, para asegurar que todos los aspectos de la arquitectura se estén implementando de manera correcta.

 An architect «suggests» («not dictates») implementation because the programmer/coder/builder has the «inventive and creative responsibility.»-Frederick P. Brooks, Jr

De igual manera el Arquitecto de Software debe proporcionar orientación técnica y dar apoyo al equipo de desarrollo; debe estar preparado para entrenar al equipo en las tecnologías seleccionadas (Formador) y también debe estar abierto a sugerencias.

 An architect should be «ready to forego credit for suggested improvements.»- Frederick P. Brooks, Jr

Aseguramiento de la Calidad

Garantizar la calidad es parte fundamental del rol de un Arquitecto de Software, el cual debe apoyarse en procesos de integración continua que utilicen herramientas automatizadas de análisis de código fuente, pruebas unitarias y cobertura de código, para asegurar el cumplimiento de las normas, políticas y mejores prácticas establecidas.

 An architect should strive for work to be «spare and clean,» avoiding «functional ornamentation»… – Frederick P. Brooks, Jr

Más información:

Carlos-MendibleCarlos Mendible con más de 14 años de experiencia diseñando e implementado soluciones de software, comenzó su carrera en Venezuela, donde en 1999 obtuvo su primera certificación Microsoft. Actualmente está certificado como CISA, ITILF, MCSD, MCT, MCTS y MCP. Trabaja desde 2012 como Arquitecto Senior de Soluciones Microsoft en Sogeti España colaborando también como evangelista tecnológico, formador e ingeniero de pre-venta.

Para más información: carlos-fernando.mendible-porras@sogeti.com

14 comments on “¿CUÁL ES LA FUNCIÓN DE UN ARQUITECTO DE SOFTWARE?

  1. Eduardo Rivera

    Hola, excelente articulo me fue de gran ayuda, sin embargo me quede con una duda, a que área dentro de la organización es a la cual pertenece laboralmente.

    Me gusta

Deja un comentario