1.¿Qué es la Arquitectura de Software?
Este es quizás uno de los interrogantes más reiterados en el fuero interno de cada programador, desarrollador, líder de proyecto y hasta “pseudo-arquitecto” de Software en la actualidad.
Si bien el término se utiliza en la industria desde mediados de los años 90 (1992) y el concepto, sin ser llamado Arquitectura existía desde 1984, no fue sino hasta el año 2000 que se estandarizó (IEEE Std. 1471-2000) en la comunidad académica y profesional como lo conocemos en la actualidad.
Para evitar la simple “definición de manual” o un análisis exhaustivo de la historia de la Arquitectura de Software (AS de aquí en adelante), ensayaremos un estudio comprensivo de los términos, para entender de qué se trata el concepto general.

Visión Abstracta
La palabra Arquitectura, dentro del término de “Arquitectura de Software” denota el nivel de Abstracción de la disciplina (es decir, la capacidad de considerar un aspecto separado de los otros con los que se da en la realidad).
A diferencia de la Ingeniería de Software, que busca cubrir todo el proceso de desarrollo / ciclo de vida de un sistema, la AS busca representar todas las estructuras que componen a un sistema (incluyendo sus relaciones) y a su vez registrar todas las decisiones tomadas, respecto al Diseño Arquitectónico del mismo.
La Abstracción consiste en extraer las propiedades esenciales, o identificar los aspectos importantes, o examinar selectivamente ciertos aspectos de un problema, posponiendo o ignorando los detalles menos sustanciales, distractivos o irrelevantes
El Objetivo
El principal objetivo de la AS es proporcionar uno o varios modelos mentales (que pueden ser o no representados de forma gráfica) que permitan comprender el funcionamiento de un sistema, analizando los componentes (no necesariamente son de código) involucrados y sus relaciones.
La Definición
A efectos de este curso, tomaremos entonces una definición sencilla, que fue adoptada por Microsoft y otras empresas en el estándar antes mencionado.
La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.
¿Qué NO ES la AS?
La Arquitectura de Software no es Diseño de Software. Si bien, existe una línea muy delgada entre los conceptos de Diseño de Software y Arquitectura de Software, es necesario establecer una diferencia fundamental entre ambas: el nivel de Abstracción.
La siguiente tabla, nos permite ver claras diferencias entre el Diseño y la Arquitectura en sí, a pesar de tener algunos puntos en común.
| | Arquitectura | Diseño |
Nivel de Abstracción | Alto (Componentes, Conectores) | Bajo (Clases, Módulos, Funciones) |
Visión del Sistema | Macro (interacción con el entorno) Interna(organización de los componentes) | Interna, detallada (relación entre clases por ejemplo) |
Áreas | Riesgos, Atributos de Calidad, Requerimientos No Funcionales, Decisiones de Diseño. | Solucionar problemas de Negocio, Requerimientos Funcionales, Complejidad del Dominio. |
Documentos | Modelos Arquitectónicos, Documentación de las Decisiones, Documento de Análisis de Riesgos. | Diagramas de Clases, Diagramas de Secuencia, Otros diagramas UML. |
Metodología | Proceso de Evaluación de Arquitectura, Análisis de Arquitectura, Diseño Basado en Atributos de Calidad. | Patrones de Diseño, Diseño Orientado a Objetos, Diseño Ágil, Diseño Basado en el Dominio. |

2.¿Qué es un Arquitecto de Software?
El problema de la terminología
En la actualidad, existe un gran número de profesionales que, por decisión propia o bien por una simple tendencia de “moda” se dan a conocer con títulos como “Arquitecto Web” o “Arquitecto en .Net” e incluso “Arquitecto J2EE” y la lista continúa…
Podemos distinguir al menos cinco tipos de “Arquitectos de Software”:
- El “Arquitecto por Experiencia”: es una persona que luego de una gran cantidad de años trabajando, ha adquirido muchos conocimientos de un particular negocio o tecnología y decide que tiene suficiente experiencia para llamarse a sí mismo “Arquitecto”. Pero así como una enfermera no se convierte en cirujana tan solo con ejercer la enfermería durante 20 años, un desarrollador/programador/analista no se convierte en Arquitecto de Software únicamente con años de experiencia.
- El “Arquitecto Certificado”: es alguien que ha conseguido una o más certificaciones (en próximas entregas hablaremos sobre cuáles son las certificaciones de AS en la actualidad) que pueden ser o no de Arquitectura, pero contienen el término “Arquitecto” o “Senior Developer” en algún lado. Esto equivale a decir, que uno logra convertirse en Cirujano luego de hacer 2 o 3 cursos sobre operaciones humanas. Como verán también es un concepto erróneo.
- El “Arquitecto por Contexto”: en muchas ocasiones, un desarrollador solo posee una extremada “Experiencia Relativa” dentro de su entorno o hábito de trabajo, y esto lo lleva a veces a auto-proclamarse como Arquitecto dentro de su empresa o grupo profesional. Siguiendo con la analogía, podemos decir que el mejor Pediatra en una hospital infantil NO es claramente un Cirujano calificado, a pesar de ser el mejor en su área, no posee los conocimientos para otra completamente distinta.
- El “Arquitecto Programador”: conocido también como el Programador que Diseña, es tal vez uno de los casos más comunes. Un Experto en algún lenguaje de programación (o tecnología) considera que es lo suficientemente capaz para resolver situaciones o proyectos y siente que su “titulo” de programador/diseñador de software no es “suficiente”, entonces decide llamarse a sí mismo “Arquitecto en XXXX” (reemplazar las XX por la tecnología favorita).
- El verdadero “Arquitecto de Software”: se caracteriza principalmente por no considerarse a sí mismo (ni mucho menos hacerse llamar) Arquitecto de Software. Conoce (y puede trabajar) con una amplia variedad de tecnologías, y nunca deja de lado la documentación “de causa” de un proyecto. Posee conocimientos tanto académicos como profesionales sobre el tema, y puede aplicar su criterio en cualquier escenario. Más adelante, en este curso, veremos las principales características de un verdadero Arquitecto de Software con más detalle.
Esta variedad lleva a una gran confusión, sobre todo para aquellos que desean iniciarse en el área y no tienen en claro cuáles son los pasos a seguir para lograr ser un Arquitecto de Software hecho y derecho. Como podemos convertirnos en Arquitectos sin un Modelo a Seguir? O peor aún, como saber cuál de todos los Modelos hay que seguir?
Si bien no existe una receta mágica para convertirnos, intentaremos definir las características principales que debe reunir un Arquitecto de Software para ser considerado como tal, sin depender de un entorno particular, certificación o tecnología específica.
Referencias de esta entrega
- Introducción a la Arquitectura de Software – Carlos Billy Reynoso. Online
- Ingenieria de Software, un enfóque practico, Roger Pressman. Libro
- Software Architect Bootcamp, Raphael Malveau. Libro
- Software Architecture in Practice 2nd ed, Len Bass. Libro
Es todo por hoy, en la próxima entrega veremos:
- Que es Un Arquitecto de Software
- Que conocimientos debería poseer
- Como es el camino hacia convertirnos en uno.
Saludos desde Argentina!
Ignacio Raffa