El Arquitecto de Software: habilidades necesarias

Publicado en

El término “arquitectura de software” y el rol de “arquitecto de software” parecen estar cada día más de moda en nuestra industria. Sólo basta asomarnos a la trama de películas de ciencia ficción como The Matrix: Revolutions donde el arquitecto aparece como un Dios Todopoderoso, responsable de la creación de ese mundo virtual. De igual manera, existe una caricatura donde se hace la analogía entre un programador representando a un padawan (aprendiz de Jedi en la saga Star Wars) y un arquitecto de software representando a un maestro Jedi. El aprendiz no podía creer la cantidad de habilidades y conocimiento que requería para convertirse en un Jedi (o arquitecto según esta analogía), por lo que comenzaba a dudar si sería mejor irse por el lado oscuro de la fuerza.

Si el analista de sistemas es el responsable de identificar y especificar las necesidades y requerimientos del usuario, entonces el arquitecto es el responsable de tomar las decisiones más relevantes en cuanto a la forma más óptima en que se explotará la tecnología para implementar dichos requerimientos.

¿Qué es lo que se necesita para dominar los principios que pueden transformar a un desarrollador común en un arquitecto de software?

Influencia en los Proyectos. Es conveniente que domine la mayor cantidad de tecnologías de software para ser capaz de ofrecer las mejores recomendaciones tecnológicas en beneficio del proyecto. Sus decisiones tienen un impacto al corto, mediano y largo plazo. Características importantes que definen la calidad de la aplicación, como son el desempeño, reuso, robustez, portabilidad, flexibilidad, escalabilidad y mantenibilidad dependen en gran medida de las decisiones que tome. Incluso generan un impacto directo sobre la economía del proyecto, pues debería de ser capaz de sacarle el máximo provecho a la tecnología existente, en especial cuando ésta representa una restricción del proyecto, como ocurre cuando el cliente no se puede dar el lujo de invertir en nuevo equipo o tecnología adicional al que ya tiene.

Dominio. Sus decisiones sobre la estructura y dinámica de la aplicación son plasmadas en notación formal. Para hacer esto los arquitectos modernos requieren dominar UML, sobre todo si piensan usar nuevas tecnologías y en especial aquellas orientadas a objetos. A pesar de esto, no creerían la cantidad de alumnos que han llegado a nuestros cursos a aprender UML, creyendo ser “arquitectos de software”, cuando les falta algo tan básico como el dominio de dicha nomenclatura. Claro que no hay que culparlos, ya que existe un desconocimiento generalizado acerca del perfil de dicho rol. El conocimiento y experiencia del arquitecto moderno pueden resumirse en los siguientes puntos:

1. UML y el uso de por lo menos una herramienta de modelado.
2. Análisis, Diseño y Programación Orientada a Objetos.
3. Ventajas, desventajas y particularidades entre los principales lenguajes y tecnologías disponibles: Java, C#, .Net, J2EE, etc.
4. Bases de datos.
5. Desarrollo basado en componentes.
6. Patrones de diseño.
7. Patrones de arquitectura.
8. Estilos de arquitectura.
9. Frameworks.
10. Nuevas tecnologías y plataformas, incluyendo open source.
11. Conocimientos del hardware y sus capacidades.
12. Procesos de desarrollo de software modernos, como el Proceso Unificado.

Es importante notar que los arquitectos no construyen sus planos desde cero, sino que aprovechan el conocimiento y experiencia de otros, plasmado en patrones y frameworks.

Habilidades.- Además de este conocimiento, requiere contar con habilidades como las siguientes:
• Capacidad de abstracción, creatividad, liderazgo, comunicación oral y escrita; negociación, disciplina y ser autodidacta.

Si usted cumple con todos estos requisitos, probablemente ya es, o está muy cerca de convertirse en un arquitecto de software. Después de ver todo lo que se requiere, podemos entender porqué el programador se puede ver tentado a seguir “el lado oscuro de la fuerza” en lugar de seguir esta carrera.

Bio

Sergio Orozco es director general, consultor e instructor senior de Milestone Consulting, certificado en UML por la OMG. Carlos Macías es arquitecto en jefe, consultor e instructor senior de la misma empresa. Milestone Consulting es la primer empresa mexicana miembro de la OMG, especializada en servicios relacionados con UML: capacitación, consultoría y distribución de herramientas de modelado con dicho estándar. info@milestone.com.mx