Professional Documents
Culture Documents
El Rol Del Arquitecto de Software
El Rol Del Arquitecto de Software
1 Tabla de Contenido
De la misma manera que ocurre con la Arquitectura de Software, existen múltiples definiciones
sobre el rol de los arquitectos de software. Se podría incluso citar una definición por autor. En
general esto puede ser causado porque se ubica a los arquitectos en el contexto de una
organización en particular, con las propias necesidades y requerimientos de esa organización. La
realidad parece indicar que es poco probable que se pueda dar una definición de arquitecto
transversal a cualquier organización, y definir un estereotipo de arquitecto que especifique cuáles
son sus responsabilidades y habilidades necesarias dentro de un proyecto. Lo que sí es posible es
defiŶiƌ pƌototipos de aƌƋuiteĐtos ͞a ŵuy gƌaŶdes ƌasgos͟ y apliĐaƌ Đada uŶo de estos aƌƋuetipos eŶ
una situación en particular, dependiendo del contexto de la empresa, del proyecto y del equipo de
trabajo.
El papel del arquitecto ha estado presente desde el inicio de la vida del hombre en la tierra, desde
la prehistoria existían los Arquitectos, aunque no hubieran sido llamados de esa manera, y es que
para hablar de un Arquitecto tenemos que necesariamente hacer referencia a su significado
etimológico. La palabra Arquitecto nos llega de los griegos, quienes bautizaron tal papel con la
palabra ἀǏχLjτέljτων(architécton) que define al director de una construcción. Esta palabra proviene
de la unión de dos raíces muy fuertes ἀǏχόǐ(archós), que significa guía y τέljτων(técton) que
significa constructor. Pero al español llegó gracias a los romanos que llamaron Architectus, a los
grandes guías de las impresionantes y avanzadas obras civiles del imperio mas grande del mundo
antiguo.
¿Cual es pues el papel del Arquitecto de Software que ha heredado el honor de tan noble
asociación?. Este trabajo presenta un conjunto de definiciones provenientes de las fuentes mas
representativas en el ámbito del software y algunas de ellas recomendadas como punto de
referencia específicamente para el tema de arquitectura de software.
3 El Arquitecto de Software
Los arquitectos diseñan estructuras que encajen con las necesidades humanas. Las estructuras
pueden ser ensambladas con palos y piedras o software de computadora y hardware, pero el rol
del arquitecto continúa siendo el mismo. Los arquitectos están la mayoría del tiempo escuchando
los clientes, entendiendo a profundidad sus necesidades y recursos, investigando y documentando
ordenadamente, creando una visión practica de una estructura y creando un mapa de la misma. Así
como se construye una estructura, el arquitecto interviene en favor del cliente, asegurando que el
resultado sea fiel al plan y guiando la visión del resultado entre la tempestad de los cambios en el
diseño, las crisis y las ambigüedades.
Abogar por el cliente es la piedra angular del rol del arquitecto. Para lograr el rol de un verdadero
abogado, el arquitecto necesita un extenso repertorio de elementos de diseño en un aspecto de
elección libre de cualquier atadura. Un arquitecto deja de ser un verdadero apoyo al cliente si se
encuentra atado a un conjunto de tecnologías, herramientas o metodologías, restringiendo así las
soluciones disponibles al cliente. Los estilos arquitectónicos individuales y las preferencias emergen
y son impuestas, como siempre han sido, por el cliente, pero estas deben corresponder a los
refinamientos y discernimiento de una mente entrenada, no las elecciones forzadas por los límites
de la educación o la experiencia. Quien ha sido constructor toda su vida, no importa que talentoso
sea, no necesariamente tiene el perfil de un arquitecto. Al que tiene un cincel en la mano, todo
parece convertírsele en roca.
Presentar la profesión del Arquitecto de software implica definir una actividad, pero sin limitarla.
Los programadores, ingenieros, diseñadores y en general todos los profesionales de la construcción
tendrán roles muy diversos y sus esfuerzos efectos mayores. De igual forma que los
arquitectos/constructores en el negocio de la construcción, los arquitectos de software pueden
interpretar un papel doble, cada uno con tareas claras y expectativas concretas. Esta claridad
permite investigaciones, libros, herramientas y metodologías que puedan ser enfocadas a un
proceso arquitectónico específico. Los clientes entenderán cada vez más los roles y la secuencia en
la que aparecen durante la construcción de software, llegarán incluso a tener los planos del
sistema.
Las siguientes fases definen el papel del arquitecto en el proceso de construcción de software,
conceptualmente siguiendo las fases de la construcción y los servicios arquitectónicos descritos por
el Documento del Instituto Americano de Arquitectura B163 (AIA por sus siglas en inglés). Estas
fases aplican a todos los proyectos de construcción de software, incluyendo aquellos que usan
métodos iterativos o incrementales. Muchos profesionales de software han sacado una analogía de
la construcción de edificios para describir su proceso, ya que ella es una analogía verdadera
entendible por los clientes. Esta analogía primaria encierra la respuesta a las crisis en la
construcción de software y le dará forma a su futuro.
Prediseño
En esta fase el Arquitecto escucha y entiende el alcance del proyecto, los puntos claves del
diseño según el cliente, los requisitos y las expectativas. El arquitecto también estudia el
contexto del proyecto -la empresa entera de la que hace parte el proyecto-. Los recursos del
cliente son determinados (los financieros y los intelectuales), y los problemas y necesidades que
el cliente desea resolver. El arquitecto identifica las posibles soluciones disponibles usando
tecnología y cambios organizacionales, administrativos o de producto. Con la interacción del
cliente y el arquitecto, comienza a tomar forma una dirección administrativa refinando su
entendimiento hasta que una visión compartida emerge. Luego un presupuesto y cronograma
general son definidos.
Diseño Esquemático
El arquitecto prepara diseños de tipo arquitectónico que muestran las características del
dominio y la estructura tecnológica. Se definen los puntos claves de la interfaz gráfica (la
apariencia y sensación del sistema). En este punto se construyen prototipos si son necesarios.
Se estiman los riesgos de la migración.
El arquitecto continúa con la profundización el detalle del tipo de solución a generar y refina
cada vez más los artefactos. Todos los documentos, glosarios y diseños generados son
finalizados en esta etapa, esto implica la muy importante validación del cliente.
Construcción
La supervisión del arquitecto durante la construcción del producto asegura que la visión del
cliente sea entendida y ejecutada correctamente. El arquitecto revisa los diseños detallados de
la construcción, analiza problemas, evalúa nuevos requisitos y plantea modificaciones cuando
son necesarias. El arquitecto diseña los cambios aceptados, calcula el impacto global en diseño y
costo, y define la secuencia de cambios que tienen que ser generados, para luego participar en
las actividades de pruebas y revisiones de usuario final para asegurarse que cumplan con la
expectativas del cliente.
PostConstrucción
1
Worldwide Institute of Software Architects
4. Mapa conceptual
5 Características de un Arquitecto de Software, por Peter Eeles de IBM
El rol puede ser llenado por un equipo con un líder claro. No siempre una persona tiene todas
las ĐoŵpeteŶĐias. UŶ ͞EƋuipo es uŶ peƋueño gƌupo de geŶte ĐoŶ ĐoŵpeteŶĐias complementarias
y comprometidos con el propósito, y con enfoques comunes por los que soŶ ŵutuaŵeŶte
ƌespoŶsaďles͟.
Es un buen comunicador.
Toma decisiones.
Para responder a esta pregunta, desde hace unos cuantos años el SEI (Software Engineering
Institute) ha estado recopilando comentarios de las personas sobre las responsabilidades de un
arquitecto de software. Este es un compendio, en el que se resaltan los aspectos más comúnmente
citados (todas las respuestas individuales y sus autores pueden ser consultadas en el sitio web del
SEI) y que a continuación enumeramos:
Definir y documentar la solución elaborada. Asegurarse que todos los involucrados la estén
utilizando y la estén utilizando bien.
Asegurarse que se aplica en etapas de manera coordinada de tal forma que toda la
organización pueda apropiarse de ella antes de que sea completada.
Identificar e interactuar con los interesados en el proyecto para asegurarse que sus
necesidades son satisfechas.
Mantener la moral, tanto en el interior del grupo de arquitectura como al exterior. Esto
último es realizado proponiendo un diseño compacto cuando se requiera y entregando
presentaciones y materiales que le permitan a todas las personas en la organización saber
que se encuentran en el camino correcto.
Entender y planear las rutas de evolución del sistema, diseñar un plan que guíe la adopción
de nueva tecnología.
El Arquitecto de Software debe poseer la madurez, visión y la experiencia que permite comprender
los problemas de manera rápida y tener un juicio crítico cuando existe información incompleta, por
ejemplo. Más concretamente, el arquitecto de software, o miembros del equipo de arquitectura,
deben combinar estas capacidades:
Liderazgo con el fin de gestionar el esfuerzo técnico a través de los diversos equipos, y
tomar las decisiones acordes aun bajo presión. Para ser eficaz, el arquitecto de software y el
jefe de proyecto debe trabajar en estrecha colaboración. El arquitecto de software debe
tener la autoridad para tomar decisiones técnicas.
Desde el punto de vista de expertos, el arquitecto de software también debe abarcar el Papel de
Diseñador, sin embargo, a diferencia del diseñador, el arquitecto de
software:
El aƌƋuiteĐto de softǁaƌe, segúŶ “UN MiĐƌosysteŵs ͞AƌĐhiteĐting and Designing J2EE Applications
SL-ϰ2ϱ͟, deďe Đuŵpliƌ ĐoŶ las siguieŶtes ĐaƌaĐteƌístiĐas y ƌoles.
Fundamentos de Arquitectura.
Experiencia: Las mejores prácticas, Marcos, patrones y (Expresiones Idiomáticas)Idioms.
La siguientes gráfica muestra la relación entre estos tres roles con la tecnología y la estrategia de
la organización.
Además existen los,
Poseer fuerte visión para los negocios: Consiste en entender los costos de capital operacional y
considerar cada uno de estos mientras se crea la solución. Leer estados financieros, tener
conversaciones con funcionarios financieros y tener una comunicación acertada con los dueños
de negocios para justificar los proyectos y calcular el rendimiento de un proyecto.
Pueden trabajar con ambigua o incompleta información: Los Arquitectos deben colaborar en el
proceso de indagación de la información para llegar a una solución, pero pueden empezar a
trabajar con información limitada y conforme el proyecto progresa, tomar decisiones de
compensación o equilibrio con el fin de mantener una solución que cumpla con los objetivos, y
continuar satisfaciendo las exigencias de negocio que al principio fueron identificadas. Sin
embargo el arquitecto debe saber claramente si con la información limitada puede empezar a
trabajar sin poner en riesgo el proyecto mas adelante por cambios drásticos o si el proyecto
debe suspenderse antes de recopilar información mínima para empezar las tareas, es
importante el trabajo conjunto de todo el equipo de proyecto en este aspecto.
El arquitecto de software debe tener una mentalidad estratégica, es decir, la habilidad de ver las
cosas a 50.000 pies de altura, a un nivel estratégico, abstraerse de la complejidad operativa. Se
trata de adoptar una visión más amplia.
Muchos recursos educativos y las certificaciones están disponibles para alcanzarlas. Además los
arquitectos con experiencia, son otra fuente importante de recursos, ya que la información por sí
sola es insuficiente para el desarrollo de muchas habilidades necesarias. Los aspirantes a los
arquitectos deben considerar muchos factores a la hora de hacer carrera, desde los tipos de
proyectos para el acceso a los mentores o expertos. La arquitectura es exigente pero gratificante
profesión, sino que tiene determinación y una buena planificación para desarrollar plenamente sus
habilidades y madurar en el papel.
10 El Papel del Arquitecto según Bredemeyer Consulting
Pude definirse de manera simplona que un Arquitecto es aquel que hace Arquitecturas y sus
responsabilidades se restringen a hacer bien su trabajo. Esto pude incluir articular la visión
arquitectónica con las necesidades del cliente, conceptualizar y experimentar con diferentes
estrategias arquitectónicas; crear modelos, componentes y documentos de especificación de
interfaces.
Sin embargo, cualquier arquitecto experimentado sabe que el papel no solo encierra estas tareas
de tipo técnico, sino que existen otras de un carácter más diplomático y estratégico por un lado y
por otro lado tareas de consultoría y asesoría. Un sentido coherente del negocio y una adecuada
estrategia tecnológica son necesarias para vislumbrar la arquitectura que solucionará los
problemas del cliente, dados los objetivos y restricciones al arquitecto en la organización. Las
actividades en esta área incluyen la escucha activa a los interesados del proyecto para entender de
manera profunda sus intereses y las metas a satisfacer, implica también crear mapas tecnológicos y
estrategias de diferenciación, a la par con la realización de afirmaciones sobre tendencias
tecnológicas y sus consecuencias en la estrategia técnica del proyecto y la arquitectura planteada.
El arquitecto (o equipo de arquitectura) necesita tener empatía con una variedad de grupos de
interesados en el proyecto, incluyendo la gerencia a diferentes niveles, analistas de negocio o de
ventas y sobre todo los desarrolladores. El arquitecto necesita balancear su participación con la
necesidad de tomar en cuenta las múltiples opiniones de su equipo de trabajo. Mientras más
amplio horizonte tenga la arquitectura, mas ajustada será a la optima. El arquitecto tiene que pasar
por encima de muchas "Políticas Organizacional" para lograr convencer a muchos interesados en el
proyecto, para comunicar extensivamente y trabajar con diversas redes de personas que influyen
en el éxito de la arquitectura.
Pero lograr "vender" la arquitectura no es suficiente. Todos los que estén vinculados con su
implementación necesitan entenderla. Los documentos tipo "ladrillo" son famosos por ser
excelentes "recogedores de polvo". La participación temprana de los desarrolladores más
experimentados trae buenas ideas en el proceso de definición de la arquitectura y también crea un
amplio entendimiento de los deseos de los desarrolladores y el costo de su implementación.
Adicionalmente para proyectos grandes, puede ser bastante útil crear tutoriales que expliquen
cuales fueron las decisiones que llevaron a proponer la arquitectura objetivo, ya que durante los
diversos ciclos de construcción es necesario realizar ajustes.
El arquitecto también es un mentor y un entrenador, trabajando con los desarrolladores para
motivarlos cuando los retos aparecen, sobretodo cuando tienen un amplio impacto o son críticos
para el éxito del sistema. Más allá, el arquitecto no sólo debe liderar su equipo y la comunidad de
desarrolladores sino que debe liderar y motivar la organización completa en la dirección técnica
adecuada.
-"
.:J Help devtlopers se@ the va\beot the sawy
it.....h...,. ;: nrt t;:II'V{ hrl\\
" use ilsuccessMy
A good mentor.teacher
"'
YCMoompet icn(procructs strategies
9 l 1Jnrt,.r<.b,rt Nl<1. n"""';: nrt
anO prooesws:
tl! m;:rk..r trends
¡¡; YCM company'business practx:es
Capbncustomer.ot9.)niza.tona!
and businessrequiremerrs on the
architectu'e
Wto the key pbyers are inthe Corrwnuncae.oomi'I'U'1icate. 00!'1· AJñ to se@ fron and se1te I'I'Mt':pi le
"o Otga· municae viewpoi'tls
' niz.aton
thWit, t lti:1\Yclllo,, illfÁ.PI:I-..:"" Cv1 fAA:I II ...1111 <l
V\l' "'l U III:')' W<lll., W.h lAbilo"".tiiU
penonal Sel the ViSion.kHP he uldt.o:. AmbW.ous and
visionave
ro driven Pa-:ient and
¡; Take andre1ake the pusl eof all
no1
cri&:almuenoers ofihe
architedUre grd..ect Res3tn1
·e
Sensifve o wh re the powr6 and
g Yoorself Se ! eamoone:xt
hoY. 1flows¡,yourorganizlion
Ch;;risma&:and a-edíb.'.e
deciisions (s1ick)
Yoube!ei ve ij c n and shodd be
8uicf teans don:.and thai 'JOU canlead the
a. Mnt v;: t,:.
ef.ott
:E
You are oommited.de<fcaled. p-
"; as- siorate
¡';
11 Conclusiones
El rol del arquitecto es un rol crítico en los proyectos, se focaliza en la calidad de servicio y lidera el
proceso de definición y la implementación de la arquitectura. El arquitecto reutiliza
implementaciones de arquitecturas exitosas, frameworks y patrones de diseño y no es un
diseñador en un proyecto. Un Arquitecto es un facilitador, no toma decisiones unilaterales,
irracionales, evita riesgos en los proyectos y agrega valor.
Como base, el rol de los arquitectos suele comprender las tareas de: definición de las vistas de la
arquitectura de una aplicación, dar soporte técnico-tecnológico a desarrolladores, clientes y
expertos en negocios, conceptualizar y experimentar con distintos enfoques arquitectónicos, crear
documentos de modelos y componentes y especificaciones de interfaces, validar la arquitectura
contra requerimientos, suposiciones y además tener una dosis de estrategia y política, o sea, ser,
en parte, un consultor.
12 Bibliografía
WORLDWIDE INSTITUTE OF SOFTWARE ARCHITECTS. Role of the Software Architect [en línea]
<http://www.wwisa.org/wwisamain/role.htm> [citado en 15 de Junio de 2008]
CARNEGIE MELLON UNIVERSITY. What Are the Duties, Skills, and Knowledge of a Software Architect?
[en línea] <http://www.sei.cmu.edu/architecture/arch_duties.html> [citado en 16 de Junio de 2008]
MICROSOFT CORPORATION. What Architect Job Roles Are Recognized By the Microsoft Certified
Architect Program? [en línea]
<http://www.microsoft.com/learning/mcp/architect/specialties/default.mspx> [citado en 11 de Julio de
2007]
Architecting and Designing J2EE Applications (SL-425), Training Courses, Sun Education Services
pdf. The Role of an Architect, the Architecture Journal by Amit Unde, Edicion #15. Page 7-9.
Role: Software Architect, Documentation Rational Unified Process Version 7.0, Copyright (C)
IBM Corporation 1987, 2005.