Me han preguntado recientemente cuales son las funciones de un Arquitecto de Software, termino que me suele hacer reír y que siempre digo que en menor y mayor medida casi todos somos un poco Arquitectos de Software, yo he recopilado estas funciones:
- Arquitectura: Definición de arquitectura de los sistemas, vista física, vista lógica, principios de arquitectura, seguridad, etc.
- Selección de Software: Pilas de aplicaciones, bases de datos, librerías, frameworks, estándares tecnológicos, etc.
- Selección de Infraestructura: Sistemas Operativos, hardware, redes, sistemas de recuperación, etc.
- Requisitos no Funcionales: Rendimiento, escalabilidad, seguridad, etc.
- Liderazgo: Liderazgo Técnico, responsabilidad y autoridad, dirección de equipos, etc.
- Coaching y Mentoring: Ayuda sobre problemas técnicos, ayuda en la evolución profesional, etc.
- Metodología de Proyectos: Estructura de Proyectos, Metodologías (Waterfall, Scrum, RUP, XP...).
- Procesos de Desarrollo: Control de versiones de código fuente, procesos de construcción, integración continua, automatización de pruebas y otros procesos y herramientas de desarrollo.
- Prácticas y Estándares: Estándares de codificación y libros blancos, selección de herramientas, etc.
- Diseño, Desarrollo y Pruebas: Diagramas UML, codificación, pruebas unitarias, etc.
- Experiencia: Conocimiento sobre tecnologías y arquitecturas.
- Estar al día en cuanto a tendencias tecnológicas: Agile, Web 2.0, SOA, Lightweight Java EE, etc.