¿Qué es un Arquitecto Software?

No es fácil encontrar una definición exacta sobre el rol de los arquitectos software (y con la llegada de las metodologías ágiles aún menos).

En general el rol depende del contexto de la organización sobre la que se ejerce el trabajo.

Como existen varias tendencias, lo que vais a leer a continuación es lo que más comparto de todo lo que he leído :), ahí va:

1. ¿QUÉ ES UN ARQUITECTO SOFTWARE?

Según Rational Unified Process:

El Arquitecto es responsable de:

· Liderar el proceso de arquitectura.

· Producir los artefactos necesarios: Documento de descripción de arquitectura

· Modelos y prototipos de arquitectura.

Según SunTone AM:

El arquitecto:

• Visualiza el comportamiento del sistema.

• Crea los planos del sistema.

• Define la forma en la cual los elementos del sistema trabajan en conjunto.

• Responsable de integrar los requerimientos no-funcionales (NRFs) en el sistema.

Generalizando:

El rol de los arquitectos suele comprender estas labores:

· Definición de las vistas de la arquitectura de una aplicación

· Dar soporte técnico-tecnológico a desarrolladores, clientes y expertos en negocio

· Conceptualizar y experimentar con distintos enfoques arquitectónicos

· Crear documentos de modelos y componentes y especificaciones de interfaces

· Validar la arquitectura contra requerimientos, experiencias,…

Y esta no compartida por todos:

· Aportar una dosis de estrategia y política (consultor)

Diferencia entre Arquitecto y Diseñador:

Arquitectura Diseño
Nivel de abstracción Alto nivel Bajo nivel

Enfoque en detalles

Entregables – Subsistemas

– Interfaces con sistemas externos

– Servicios horizontales

– Frameworks

– Componentes reutilizables

– Prototipo arquitectónico

– Diseño detallado componentes

– Especificaciones de codificación

Áreas de enfoque – Selección de tecnologías

– Requerimientos no funcionales (QoS),

– Manejo de riesgos

– Requerimientos funcionales

2. DOMINIO DE UN ARQUITECTO

Un Arquitecto debe dominar diversas áreas:

· A nivel tecnológico:

o enfocado más en los objetivos de la organización que en las decisiones técnicas

o creación de modelos problema/solución

o exploración de alternativas de soluciones

o preparación de documentos

o convencer y comunicar de la factibilidad de las decisiones técnicas a los sponsors y stakeholders

· A nivel estratégico:

o conocimiento de la estrategia de negocio de la organización, de los ciclos de planificación, proceso de toma de decisiones

o conocimiento del contexto de la organización (competencia, productos,…)

· A nivel de liderazgo:

o tener una visión del contexto

o toma de decisiones

o selección y creación equipos

o motivador

o tener carisma y credibilidad

o compromiso y dedicación

o evangelización tecnológica

o puente entre desarrolladores, PM’s y expertos de negocio.

3.DENTRO DEL PROCESO DE DESARROLLO

Los arquitectos también forman parte del proceso de desarrollo de un proyecto:

· Análisis:

o entender el alcance del proyecto

o entender en detalle los requerimientos del cliente

o entender los puntos más importantes del diseño: validar y manejar requerimientos y expectativas del cliente

o crear bocetos de los comportamientos deseados del sistema

· Diseño esquemático:

o definir el look&feel

o si es necesario, construir prototipos

· Diseño:

o ampliar los detalles y refinar el diseño para llegar al diseño final

o finalizar todos los diseños

· Coaching:

o soporte a desarrolladores: lidiar con problemas concretos, revisión de código para controlar la calidad, ver cómo funcionan (o no) las cosas

o definir el proceso de desarrollo, los roles de los miembros del equipo y la secuencia de construcción de la aplicación

o especificar metodologías y tecnologías.

o definir todos los detalles necesarios para todos aquellos que construirán la aplicación

· Contratación o staffing:

o seleccionar desarrolladores

· Construcción:

o asegurar que la visión del cliente sea mantenida y respetada durante el desarrollo

o revisar y validar los diseños de nivel de construcción si la complejidad de los mismos lo amerita

o diseñar modificaciones pedidas por el cliente.

o participar en los tests y aceptación de las funcionalidades

· Postconstrucción:

o Asistencia a la migración al sistema nuevo

o Gestionar formación usuarios de la aplicación

o Definir procesos de mantenimiento

4.8 FORMAS DE RECONOCER A UN ARQUITECTO

Je,je! Quizás sea una exageración, pero ahí van 8 actitudes/características que permiten reconocer a un buen Arquitecto:

1. Visionario: saber identificar las oportunidades que se le presentan. Crear y mantener una visión del modelo de la solución.

2. Analítico: comprensión y validación de especificaciones y modelos.

3. Comunicativo: frecuentemente "puente" entre distintos jugadores de la organización.

4. Decisivo: toma de decisiones críticas.

5. Responsable: actitud ejemplar en el equipo de trabajo. Comprometido con "su creación".

6. Orientado a aprender: para cumplir con una de las metas: la evangelización. Es imprescindible la actualización y capacitación constantes en todas las área que le competen (management, tecnología, metodologías, etc.)

7. Jugador de equipo: predisposición para cooperar y convivir con distintos perfiles.

8. "Bien hablado": correcto uso del lenguaje, por la necesidad constante de comunicar de forma eficiente.

¿Cuántas cumplís vosotros? 🙂

5.OTRAS LECTURAS INTERESANTES

What Does it Mean to be a Software Architect?

What Does it Mean to be a Software Architect? – Part III

El rol de la arquitectura de software en las metodologías ágiles

Un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s