Anda di halaman 1dari 25

El Rol del Arquitecto de Software

Profesor:
Ral de Villa Cano

Preparado por:
Ivis Rosa Vsquez Sierra Pablo Andrs Carrillo Sorey Bibiana Garca Zapata

Cohorte 10

Especializacin en Desarrollo de Software


Departamento de Informtica y Sistemas UNIVERSIDAD EAFIT Medelln 2008

Universidad EAFIT Especializacin en Desarrollo de Software

1 Tabla de Contenido
1 Tabla de Contenido............................................................................. .....................2 2 Introduccin....................................................................................................... ......3 3 El Arquitecto de Software........................................................................................5 4 Mapa Conceptual........................................................................................ .............9 5 Caractersticas de un Arquitecto de Software, por Peter Eeles de IBM..................10 6 El Rol del Arquitecto de Software segn el Software Engineering Institute ..........11 7 El Rol del Arquitecto de Software segn Rational Unified Process - RUP................13 8 El Rol del Arquitecto segn SUN SL-425................................................................15 9 El Rol del Arquitecto Microsoft...............................................................................16 10 El Papel del Arquitecto segn Bredemeyer Consulting........................................21 11 Conclusiones........................................................................................................ 24 12 Bibliografa .........................................................................................................25

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

2 Introduccin

Hay quienes objetan vehementemente el uso de los trminos "arquitecto" y "arquitectura" en el dominio del software. Hoy en da, este trmino es utilizado para sistemas, productos, negocios y otros trminos informticos. As como no tiene sentido ver una casa como un puado de madera, clavos y ladrillos, tampoco tiene sentido ver el software como un puado de bits o incluso lneas de cdigo, tenemos que ver estructuras ms grandes, los cuartos, el flujo de las personas entre ellos, las columnas, el techo. Si podemos entender el sistema segn sus partes, podremos modelar sistemas cada vez ms grandes. De la misma manera que ocurre con la Arquitectura de Software, existen mltiples definiciones sobre el rol de los arquitectos de software. Se podra incluso citar una definicin por autor. En general esto puede ser causado porque se ubica a los arquitectos en el contexto de una organizacin en particular, con las propias necesidades y requerimientos de esa organizacin. La realidad parece indicar que es poco probable que se pueda dar una definicin de arquitecto transversal a cualquier organizacin, y definir un estereotipo de arquitecto que especifique cules son sus responsabilidades y habilidades necesarias dentro de un proyecto. Lo que s es posible es definir prototipos de arquitectos a muy grandes rasgos y aplicar cada uno de estos arquetipos en una situacin 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 existan 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 etimolgico. La palabra Arquitecto nos llega de los griegos, quienes bautizaron tal papel con la palabra (architcton) que define al director de una construccin. Esta palabra proviene de la unin de dos races muy fuertes (archs), que significa gua y (tcton) que significa constructor. Pero al espaol lleg gracias a los romanos que llamaron Architectus, a los grandes guas 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 asociacin?. Este trabajo presenta un conjunto de definiciones provenientes de las fuentes mas representativas en el mbito del software y Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software algunas de ellas recomendadas como punto de referencia especficamente para el tema de arquitectura de software.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

3 El Arquitecto de Software

Los arquitectos disean 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 contina siendo el mismo. Los arquitectos estn la mayora del tiempo escuchando los clientes, entendiendo a profundidad sus necesidades y recursos, investigando y documentando ordenadamente, creando una visin 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 visin del resultado entre la tempestad de los cambios en el diseo, las crisis y las ambigedades. 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 diseo en un aspecto de eleccin libre de cualquier atadura. Un arquitecto deja de ser un verdadero apoyo al cliente si se encuentra atado a un conjunto de tecnologas, herramientas o metodologas, restringiendo as las soluciones disponibles al cliente. Los estilos arquitectnicos 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 lmites de la educacin 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 convertrsele en roca. Las palabras significan cosas. Un arquitecto es un Arquitecto, no un ingeniero, no un programador, no un cientfico, no un webmaster o un director de proyecto. La palabra Arquitecto es distinta en el negocio de la construccin. En la construccin de software, muchos se apropian de la importancia del ttulo, pero fallan en representar bien el rol. El arquitecto construye no desarrolla. Los edificios no son desarrollados. Desarrollar es hacer crecer, evolucionar y descubrir. Los arquitectos ven en perspectiva la construccin, no guan el desarrollo. Tericamente, el desarrollo es infinito y esa es un leccin que ya deberamos haber aprendido. Presentar la profesin del Arquitecto de software implica definir una actividad, pero sin limitarla. Los programadores, ingenieros, diseadores y en general todos los profesionales de la construccin tendrn roles muy diversos y sus esfuerzos efectos mayores. De igual forma que los arquitectos/constructores en el negocio de la construccin, los arquitectos de software pueden interpretar un papel doble, cada uno con tareas claras y expectativas concretas. Esta claridad permite investigaciones, libros, herramientas y metodologas que puedan ser Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software enfocadas a un proceso arquitectnico especfico. Los clientes entendern cada vez ms los roles y la secuencia en la que aparecen durante la construccin de software, llegarn incluso a tener los planos del sistema.

Las siguientes fases definen el papel del arquitecto en el proceso de construccin de software, conceptualmente siguiendo las fases de la construccin y los servicios arquitectnicos descritos por el Documento del Instituto Americano de Arquitectura B163 (AIA por sus siglas en ingls). Estas fases aplican a todos los proyectos de construccin de software, incluyendo aquellos que usan mtodos iterativos o incrementales. Muchos profesionales de software han sacado una analoga de la construccin de edificios para describir su proceso, ya que ella es una analoga verdadera entendible por los clientes. Esta analoga primaria encierra la respuesta a las crisis en la construccin de software y le dar forma a su futuro. Prediseo En esta fase el Arquitecto escucha y entiende el alcance del proyecto, los puntos claves del diseo segn el cliente, los requisitos y las expectativas. El arquitecto tambin 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 tecnologa y cambios organizacionales, administrativos o de producto. Con la interaccin del cliente y el arquitecto, comienza a tomar forma una direccin administrativa refinando su entendimiento hasta que una visin compartida emerge. Luego un presupuesto y cronograma general son definidos. Anlisis del Dominio El arquitecto se sumerge profundamente en el contexto y documenta el dominio para el cual el sistema ser construido, y aprende el detalle de cada uno de los requisitos del cliente. Los comportamientos deseados del sistema son definidos. El arquitecto determina el entorno tecnolgico del cliente y alcance de las interacciones que requiere realizar. El glosario y los conceptos claves del dominio son adecuadamente definidos. Diseo Esquemtico El arquitecto prepara diseos de tipo arquitectnico que muestran las caractersticas del dominio y la estructura tecnolgica. Se definen los puntos claves de la interfaz grfica (la apariencia y sensacin del sistema). En este punto se construyen prototipos si son necesarios. Se estiman los riesgos de la migracin. Desarrollo del Diseo El arquitecto contina con la profundizacin el detalle del tipo de solucin a generar y refina cada vez ms los artefactos. Todos los documentos, glosarios Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software y diseos generados son finalizados en esta etapa, esto implica la muy importante validacin del cliente. Documentacin del Proyecto El arquitecto se concentra en los requisitos que se construirn el sistema. Se documenta el tipo de proceso de construccin a desarrollar, los roles de los miembros del equipo y las secuencias de trabajo a realizar. Se escribe la gua de construccin y la gua de pruebas. El arquitecto especifica las herramientas y las metodologas si es necesario. Todos estos y otros detalles que se necesiten por aquellos que van a construir el sistema, son definidos en esta parte. Seleccin y Contratacin (staffing) El arquitecto acompaa la identificacin y seleccin de los constructores o desarrolladores concretos del sistema. Para proyectos que son subcontratados, se solicitan ofertas a los contratistas y potenciales participantes, el arquitecto toma parte activa en la eleccin de los oferentes. Los detalles de los costos del proyecto, las secuencias de trabajo y la firma de los contratos, tambin son asistidos por el arquitecto. Construccin La supervisin del arquitecto durante la construccin del producto asegura que la visin del cliente sea entendida y ejecutada correctamente. El arquitecto revisa los diseos detallados de la construccin, analiza problemas, evala nuevos requisitos y plantea modificaciones cuando son necesarias. El arquitecto disea los cambios aceptados, calcula el impacto global en diseo 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. PostConstruccin El arquitecto acompaa al cliente con la puesta en produccin y la migracin al nuevo sistema. El arquitecto puede, si as lo desea, vincularse con la capacitacin de los operadores y usuarios del nuevo sistema. Posterior a esto, el arquitecto asiste al cliente en temas relacionados con garantas y aplicacin de procedimientos de mantenimiento. Y cuando todo ha finalizado el arquitecto y el cliente se renen para recordar las dificultades y los triunfos; hacen una gran fiesta en un restaurante Mexicano, cantan con el mariachi para todos los desarrolladores, empleados, clientes y directivos vinculados al proyecto, para as rerse en frente de todos aquellos que constantemente dijeron que no poda hacerse y ahora permanecen mudos entre los invitados sorbiendo sus margaritas1.

Worldwide Institute of Software Architects

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

Arquitectura de Software
Docente: Ral de Villa Cano.

4 Mapa Conceptual

5 Caractersticas de un Arquitecto de Software, por Peter Eeles de IBM


El Arquitecto es una persona, equipo u organizacin responsable por la arquitectura del sistema (IEEE 1471) . Es un lder tcnico. El arquitecto tiene competencias tcnicas y de liderazgo, debe tener la autoridad para tomar decisiones tcnicas, ayuda a armar el equipo y a organizar el trabajo, adems constantemente comunica el valor de lo que se est haciendo. El rol puede ser llenado por un equipo con un lder claro. No siempre una persona tiene todas las competencias. Un Equipo es un pequeo grupo de gente con competencias complementarias y comprometidos con el propsito, y con enfoques comunes por los que son mutuamente responsables. El arquitecto entiende el proceso de desarrollo de software. El arquitecto debera tener conocimiento del proceso de desarrollo, ya que este garantiza que todos los miembros del equipo trabajen de manera coordinada. Un buen proceso define las funciones claramente. Dado que el arquitecto participa a diario con muchos de los miembros del equipo, es importante para el arquitecto entienda sus funciones y responsabilidades. A diario los desarrolladores apoyan su trabajo en el arquitecto preguntando cmo hacer tal cosa, por lo tanto, existe una clara coincidencia entre el papel del arquitecto y el papel de gestor del proyecto. Entiende el dominio del negocio. Un dominio es un rea de conocimiento o actividad caracterizada por un conjunto de conceptos y terminologa entendida por los profesionales del rea y permite imaginar requisitos probables y anticipar cambios. Tiene conocimiento tecnolgico, pero no necesariamente experticia profunda. Dado que la tecnologa cambia con cierta frecuencia, es esencial que el arquitecto se mantenga actualizado con los cambios tecnolgicos. Tiene competencias de diseo. Tiene suficiente competencia de desarrollo como para comunicarse con el equipo. Es un buen comunicador. Toma decisiones. Entiende la poltica de la empresa.

Universidad EAFIT Especializacin en Desarrollo de Software Es un negociador, debe explicar a stakeholders del proyecto las consecuencias de sus opciones o alternativas de arquitectura.

6 El Rol del Arquitecto de Software segn el Software Engineering Institute


Cuales son las responsabilidades, competencias y conocimientos de un Arquitecto de Software?. Para responder a esta pregunta, desde hace unos cuantos aos 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 ms comnmente citados (todas las respuestas individuales y sus autores pueden ser consultadas en el sitio web del SEI) y que a continuacin enumeramos: Elaborar la arquitectura necesidades del cliente. correcta para solucionar el problema o

Definir y documentar la solucin elaborada. Asegurarse que todos los involucrados la estn utilizando y la estn utilizando bien. Asegurarse que se aplica en etapas de manera coordinada de tal forma que toda la organizacin pueda apropiarse de ella antes de que sea completada. Asegurarse de que la arquitectura de software sea acorde con el sistema deseado. Actuar como el embajador de la propuesta arquitectnica. Hacer que la gerencia la entienda hasta el nivel necesario. Asegurarse de que el modelamiento sea correctamente realizado. Conocer cuales cualidades sistmicas, como el rendimiento, deben alcanzarse y en que medida. Responder sobre las inquietudes relacionadas con la seleccin de herramientas y ambientes de desarrollo. Identificar e interactuar con los interesados en el proyecto para asegurarse que sus necesidades son satisfechas.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software Asegurarse que la arquitectura no es solamente la correcta para la operacin del sistema, sino que adems es la correcta para su soporte y evolucin. Resolver conflictos y ayudar a generar acuerdos. Solucionar problemas de tipo tcnico. Mantener la moral, tanto en el interior del grupo de arquitectura como al exterior. Esto ltimo es realizado proponiendo un diseo compacto cuando se requiera y entregando presentaciones y materiales que le permitan a todas las personas en la organizacin saber que se encuentran en el camino correcto. Entender y planear las rutas de evolucin del sistema, disear un plan que gue la adopcin de nueva tecnologa. Gerenciar las estrategias de identificacin y mitigacin de los riesgos asociados con la arquitectura.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

7 El Rol del Arquitecto de Software segn Rational Unified Process - RUP


El arquitecto de software tiene la responsabilidad general de conducir las principales decisiones tcnicas, expresadas como la arquitectura de software. Por lo general, esto incluye la identificacin y documentacin de la arquitectura de los aspectos importantes del sistema, incluidos los requisitos, diseo, implementacin y despliegue, es decir, las vistas del sistema. El arquitecto se encarga tambin de proporcionar la justificacin de estas decisiones, buscar el equilibrio entre los stakeHolders participantes, haciendo disminuir los riesgos tcnicos, y garantizando que las decisiones sean comunicadas, validadas y adoptadas efectivamente. El Arquitecto de Software debe poseer la madurez, visin y la experiencia que permite comprender los problemas de manera rpida y tener un juicio crtico cuando existe informacin incompleta, por ejemplo. Ms concretamente, el arquitecto de software, o miembros del equipo de arquitectura, deben combinar estas capacidades: Experiencia en el dominio del problema, a travs de una profunda comprensin de los requisitos, y el dominio de la ingeniera de software. Si hay un equipo, estas cualidades se pueden propagar a travs de los miembros del equipo, pero al menos un arquitecto de software debe tener la visin global del proyecto. Liderazgo con el fin de gestionar el esfuerzo tcnico a travs de los diversos equipos, y tomar las decisiones acordes aun bajo presin. Para ser eficaz, el arquitecto de software y el jefe de proyecto debe trabajar en estrecha colaboracin. El arquitecto de software debe tener la autoridad para tomar decisiones tcnicas. Comunicacin para ganar confianza, para persuadir, motivar, y guiar. El arquitecto de software no puede conducir por decreto, slo con el consentimiento del resto del equipo del proyecto. El arquitecto de Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software software debe ganarse el respeto del equipo del proyecto, del director del proyecto, del cliente, y la comunidad de usuarios, as como el equipo de gestin. Orientacin por objetivos y pro-actividad con un implacable enfoque en los resultados. El arquitecto de software es la fuerza impulsora detrs del proyecto, no un soador o visionario. La carrera de un exitoso arquitecto de software es una larga serie de optimas decisiones adoptadas en la incertidumbre y bajo presin. Slo los que puede centrarse en hacer lo que hay que hacer tendrn xito en este entorno del proyecto. Desde el punto de vista de expertos, el arquitecto de software tambin debe abarcar el Papel de Diseador, sin embargo, a diferencia del diseador, el arquitecto de software: Tiende a ser un generalista en lugar de un especialista, a sabiendas de muchas tecnologas de alto nivel en lugar del nivel de detalle. Hace ms amplias las decisiones tcnicas en el dominio de la solucin, y por lo tanto, debe tener amplio conocimiento y experiencia, as como la comunicacin y habilidades de liderazgo, son fundamentales. El Arquitecto de software es un rol en un proyecto de desarrollo de software, el cual se realizan varias actividades y se tienen responsabilidades como se muestra en el siguiente grfico.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

8 El Rol del Arquitecto segn SUN SL-425


El arquitecto de software, segn SUN Microsystems Architecting and Designing J2EE Applications SL-425, debe cumplir con las siguientes caractersticas y roles. Visualiza el comportamiento del sistema. Crea los planos para el sistema. Define el modo en que los elementos del sistema trabajan en conjunto. Distingue entre los requisitos funcionales y no funcionales del sistema. Se encarga de la integracin de los requisitos no funcionales en el sistema. El arquitecto comunica el diseo del sistema a otros miembros del equipo. El arquitecto es un miembro de un equipo de desarrollo.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

Una de las definiciones de la arquitectura de software considera que la arquitectura es un proceso creativo, como tal puede tener aspectos positivos y negativos. Los Arquitectos deben tratar de equilibrar la creatividad con la ciencia en forma de modelos, marcos, y patrones. Para construir una arquitectura, el arquitecto utiliza lo siguiente: Fundamentos de Arquitectura. Experiencia: Las mejores prcticas, Marcos, patrones y (Expresiones Idiomticas)Idioms. Un arquitecto crea una arquitectura con los siguientes objetivos en mente. Modularidad. La proteccin y la exposicin. Componentes Extensibles. Funciones y responsabilidades. Contratos. Comportamiento Adaptable.

9 El Rol del Arquitecto Microsoft


Microsoft clasifica los arquitectos de la siguiente forma: Enterprise Architect/Chief Architect: El arquitecto Empresarial es el responsable de la ejecucin de la visin del CIO y la estrategia de TI. Incluye la definicin de programas estratgicos, la seleccin de plataformas tecnolgicas adecuadas, y proporcionar orientacin para las implementaciones. El arquitecto Empresarial ayuda al CIO a asegurar que las inversiones en TI estn alineados a la estrategia de negocio, y a proporcionar ventaja competitiva para la organizacin. La persona tambin es responsable para definir las normas y directrices, y los Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software lineamientos de gestin para adaptar la aplicacin a las normas definidas y directrices. En algunas organizaciones, esta tarea se fusiona con la del CIO. Solution Architect: El arquitecto de Soluciones es el responsable de la ejecucin de un programa estratgico de TI. Esto incluye la definicin de la solucin arquitectnica para el programa, la seleccin de plataformas tecnolgicas acordes a la estrategia de la empresa, comunicacin con el equipo de trabajo, y la toma de decisiones sobre cuestiones tcnicas durante la ejecucin del proyecto. Generalmente tiene que mediar entre las empresas y equipos de tecnologa y otros grupos. En algunas organizaciones, este papel se define simplemente como "arquitecto". El puesto de alto nivel tiene el ttulo de "Arquitecto Lder. Technical Architect: El arquitecto tcnico es por lo general un especialista en una tecnologa particular. Esta persona tiene conocimiento experto de la tecnologa y las funciones de la misma, los componentes que la integran, y comprende los puntos fuertes y las limitaciones de la tecnologa. Esta persona es responsable de determinar la aplicabilidad de la tecnologa, para definir la mejor arquitectura posible utilizando una tecnologa en particular, y tambin para guiar al equipo en la aplicacin de la solucin. En general, del arquitecto tcnico se espera conocer las distintas herramientas de proveedores en el mbito de la tecnologa, las ltimas tendencias en el mercado, de arquitectura y diversas alternativas para aplicar la solucin. La siguientes grfica muestra la relacin entre estos tres roles con la tecnologa y la estrategia de la organizacin.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

Adems existen los, Infrastructure architects. El arquitecto de Infraestructura es responsable de las decisiones del rea de infraestructura, de mantener el entorno de TI y los usuarios finales, y de comunicarse constantemente con los ingenieros que mantienen reas especficas de la infraestructura. Se encargan de crear una arquitectura que cumple con los acuerdos de niveles de servicio de las necesidades de los empresarios y apoya las aplicaciones y soluciones que se requieren para operar en el da a da de las empresas. Microsoft en su programa de Arquitecto Microsoft considera algunas caractersticas comunes a todos los arquitectos independientes del tipo de arquitecto. Algunas de estas caractersticas son: Poseer fuerte visin para los negocios: Consiste en entender los costos de capital operacional y considerar cada uno de estos mientras se crea la solucin. Leer estados financieros, tener conversaciones con funcionarios financieros y tener una comunicacin acertada con los dueos de negocios para justificar los proyectos y calcular el rendimiento de un proyecto. Pensamiento visionario: Durante la participacin en un proyecto, el arquitecto debe considerar y proyectar la tecnologa en el futuro, visionando los cambios que se producen en los negocios de los clientes, y la mejor manera de aprovechar las ventajas de la solucin tecnolgica actual en el futuro. Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software Investigar nuevas tecnologas: El arquitecto debe estar en continua investigacin de nuevas tendencias en tecnologa, arquitectura de TI y las aplicaciones empresariales. Comprender Frameworks arquitectnicos y las mejores prcticas: Los arquitectos entienden cules son los Frameworks de arquitectura y empresariales y su valor en un proyecto. Los arquitectos seleccionan y usan metodologas en los proyectos, entienden el funcionamiento de Frameworks y cmo la solucin ser desarrollada, y el comportamiento antes y despus del despliegue. Entienden el ciclo de vida de un proyecto y de una solucin. Seguir y divergir a la vez: Cuando se trabaja en un entorno particular o en un proyecto especifico, los arquitectos deben tener la capacidad de personalizar o modificar Frameworks y/o las metodologas utilizadas para lograr una solucin a un problema o requisito de negocio. Poder para desarrollar rpidamente profundo conocimiento en una tecnologa: Ganando profundidad en mltiples tecnologas anteriores, el arquitecto puede asociar o transferir la capacidad de aprender otros mtodos para investigar y para ganar rpidamente experiencia en nuevas tecnologas. Pueden trabajar con ambigua o incompleta informacin: Los Arquitectos deben colaborar en el proceso de indagacin de la informacin para llegar a una solucin, pero pueden empezar a trabajar con informacin limitada y conforme el proyecto progresa, tomar decisiones de compensacin o equilibrio con el fin de mantener una solucin 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 informacin limitada puede empezar a trabajar sin poner en riesgo el proyecto mas adelante por cambios drsticos o si el proyecto debe suspenderse antes de recopilar informacin mnima para empezar las tareas, es importante el trabajo conjunto de todo el equipo de proyecto en este aspecto. Microsoft posee un programa de certificacin de Arquitectos (Microsoft Certified Architect Program), el cual sirve para identificar a los mayores expertos en Arquitectura TI del sector. Se trata de arquitectos que pueden utilizar mltiples tecnologas para resolver problemas empresariales y ofrecer cifras y parmetros a los negocios para ayudarles a determinar el xito o el fracaso de los proyectos que dirigen. A continuacin presentamos tambin las Competencias de un arquitecto segn Microsoft .

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

En esta pirmide, la experiencia y cualidades de liderazgo constituyen los pilares fundamentales del rol del arquitecto. Tambin se necesita perspicacia tcnica, buenas habilidades de comunicacin, entender el dominio del problema antes de disear una solucin y la capacidad de gestin. El arquitecto de software debe tener una mentalidad estratgica, es decir, la habilidad de ver las cosas a 50.000 pies de altura, a un nivel estratgico, abstraerse de la complejidad operativa. Se trata de adoptar una visin ms amplia. Muchos recursos educativos y las certificaciones estn disponibles para alcanzarlas. Adems los arquitectos con experiencia, son otra fuente importante de recursos, ya que la informacin 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 profesin, sino que tiene determinacin y una buena planificacin para desarrollar plenamente sus habilidades y madurar en el papel.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

10 El Papel del Arquitecto segn 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 visin arquitectnica con las necesidades del cliente, conceptualizar y experimentar con diferentes estrategias arquitectnicas; crear modelos, componentes y documentos de especificacin de interfaces. Sin embargo, cualquier arquitecto experimentado sabe que el papel no solo encierra estas tareas de tipo tcnico, sino que existen otras de un carcter ms diplomtico y estratgico por un lado y por otro lado tareas de consultora y asesora. Un sentido coherente del negocio y una adecuada estrategia tecnolgica son necesarias para vislumbrar la arquitectura que solucionar los problemas del cliente, dados los objetivos y restricciones al arquitecto en la organizacin. 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 tambin crear mapas tecnolgicos y estrategias de diferenciacin, a la par con la realizacin de afirmaciones sobre tendencias tecnolgicas y sus consecuencias en la estrategia tcnica del proyecto y la arquitectura planteada. El arquitecto (o equipo de arquitectura) necesita tener empata 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 participacin con la necesidad de tomar en cuenta las mltiples opiniones de su equipo de trabajo. Mientras ms amplio horizonte tenga la arquitectura, ms ajustada ser a la ptima. El arquitecto tiene que pasar por encima de muchas "Polticas 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 estn vinculados con su implementacin necesitan entenderla. Los documentos tipo "ladrillo" son famosos por ser excelentes "recogedores de polvo". La participacin temprana de los desarrolladores ms experimentados trae buenas ideas en el proceso de definicin de la arquitectura y tambin crea un amplio entendimiento de los deseos de los desarrolladores y el costo de su implementacin. Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software 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 construccin es necesario realizar ajustes.

El arquitecto tambin es un mentor y un entrenador, trabajando con los desarrolladores para motivarlos cuando los retos aparecen, sobretodo cuando tienen un amplio impacto o son crticos para el xito del sistema. Ms all, el arquitecto no slo debe liderar su equipo y la comunidad de desarrolladores sino que debe liderar y motivar la organizacin completa en la direccin tcnica adecuada. Quien es adecuado entonces para el papel de Arquitecto?, pues, muy frecuentemente el convertirse en "Arquitecto" es una promocin ofrecida a los desarrolladores muy hbiles en un esfuerzo por retenerlos. Desafortunadamente no todos los tcnicos superdotados tienen el talento y las competencias que los hacen buenos arquitectos. An as, el ttulo genera expectativas, en el "arquitecto" y en el resto de la organizacin, de las responsabilidades asociadas con el cargo. Esto puede generar un montn de conflictos para una persona fuertemente orientada a la parte tcnica, que repentinamente se ve enfrentada con polticas empresariales y exigencias de una comunicacin efectiva y fluida. Los mejores arquitectos entonces, son expertos en tecnologa que infunden respeto en la comunidad tcnica, tambin son buenos estrategas, excelente diplomticos, consultores, asesores y lderes. Para desarrollar en 1995 un taller en Hewlett-Packard sobre arquitectura, Bredemeyer Consulting estudi muchos proyectos arquitectnicos, revis literatura al respecto e incluso estudi el proceso la Arquitectura de edificios. Tal sera el inicio de una larga relacin con cientos de arquitectos de diferentes campos de la industria que le han permitido a esta empresa consultora un entendimiento profundo de la arquitectura y del proceso Arquitectnico como tal. Basados en este entendimiento, y mirando las tendencias actuales de la arquitectura, se ha podido establecer un Marco de Trabajo se han identificado varias reas de actividad criticas o dominios de competencia, que aparecen definidamente en el papel de arquitecto. Estos son Tecnologa, Estrategia Organizacional, Poltica Empresarial, Asesora y Liderazgo. Cada uno de ellos tiene sus propios elementos de conocimiento, actividades y caractersticas personales que hacen de un arquitecto ser exitoso en cada uno de dichos aspectos. Estos elementos pueden ser agrupados segn apunten a las competencias del Saber, del Saber Hacer y del Saber Ser. El siguiente cuadro muestra como se relacionan entre si estos elementos. Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

11 Conclusiones
El trmino Arquitecto de Software se ha convertido en el ttulo de moda en toda empresa de sistemas o con un rea propia de sistemas, aunque es comn que muchas de las tareas relevantes de un proyecto puedan ser perfectamente resueltos con desarrolladores experimentados, sin tener la necesidad de contratar un arquitecto. Muy frecuentemente se tiende a confundir estos dos perfiles, que son abismalmente diferentes. Tambin es importante notar la diferencia entre los gures tecnolgicos y los verdaderos arquitectos. Estas cuestiones aumentan la confusin existente sobre qu es un arquitecto y cules se supone tendran que ser sus responsabilidades. El rol del arquitecto es un rol crtico en los proyectos, se focaliza en la calidad de servicio y lidera el proceso de definicin y la implementacin de la arquitectura. El arquitecto reutiliza implementaciones de arquitecturas exitosas, frameworks y patrones de diseo y no es un diseador en un proyecto. Un Arquitecto es un facilitador, no toma decisiones unilaterales, irracionales, evita riesgos en los proyectos y agrega valor. A diferencia de un programador, el Arquitecto de Software debe dominar la mayor cantidad de tecnologas de software y prcticas de diseo, para as poder tomar decisiones adecuadas para garantizar el mejor desempeo, reuso, robustez, portabilidad, flexibilidad, escalabilidad y mantenibilidad de las aplicaciones. Estas decisiones sobre la estructura y dinmica de la aplicacin son plasmadas en una notacin formal estandarizada como lo es UML. Como base, el rol de los arquitectos suele comprender las tareas de: definicin de las vistas de la arquitectura de una aplicacin, dar soporte tcnicotecnolgico a desarrolladores, clientes y expertos en negocios, conceptualizar y experimentar con distintos enfoques arquitectnicos, crear documentos de modelos y componentes y especificaciones de interfaces, validar la arquitectura contra requerimientos, suposiciones y adems tener una dosis de estrategia y poltica, o sea, ser, en parte, un consultor.

Arquitectura de Software
Docente: Ral de Villa Cano.

Universidad EAFIT Especializacin en Desarrollo de Software

12 Bibliografa
WORLDWIDE INSTITUTE OF SOFTWARE ARCHITECTS. Role of the Software Architect [en lnea] <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 lnea] <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 lnea] <http://www.microsoft.com/learning/mcp/architect/specialties/default.mspx> [citado en 11 de Julio de 2007] IBM SOFTWARE GROUP. Characteristics of a Software Architect [en lnea] <http://www.ibm.com/developerworks/rational/library/mar06/eeles/> [citado en 15 Marzo 2006] BREDEMEYER. Architect Competency Framework [en lnea] <http://www.bredemeyer.com/pdf_files/ArchitectCompetencyFramework.PDF> [citado en 16 de Junio de 2008] 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.

Arquitectura de Software
Docente: Ral de Villa Cano.