El
tópico más urgente y exitoso en arquitectura de software en los
últimos cuatro o cinco años es, sin duda, el de los patrones (
patterns ), tanto en lo que concierne a los patrones de diseño como
a los de arquitectura. Inmediatamente después, en una relación a
veces de complementariedad, otras de oposición, se encuentra la
sistematización de los llamados estilos arquitectónicos.
Habrá
que admitir desde el vamos que ambos asuntos preocupan y tienen como
destinatarios a distintas clases de profesionales, o diferentes
stakeholders, como ahora se recomienda llamar: quienes trabajan con
estilos favorecen un tratamiento estructural que concierne más bien
a la teoría, la investigación académica y la arquitectura en el
nivel de abstracción más elevado, mientras que quienes se ocupan de
patrones se ocupan de cuestiones que están más cerca del diseño,
la práctica, la implementación, el proceso, el refinamiento, el
código.
Desde
los inicios de la arquitectura de software, se observó que en la
práctica del diseño y la implementación ciertas regularidades de
configuración aparecían una y otra vez como respuesta a similares
demandas. El número de esas formas no parecía ser muy grande. Muy
pronto se las llamó estilos, por analogía con el uso del término
en arquitectura de edificios.
Como
conceptos, los estilos fueron formulados por primera vez cuando el
escenario tecnológico era sustancialmente distinto del que se
manifiesta hoy en día. Es por eso que en este estudio se analizarán
las definiciones de los estilos arquitectónicos que se han
propuesto, así como su posición en el campo de las vistas de
arquitectura, su lugar en la metodología y su relación con los
patrones, tomando en consideración las innovaciones experimentadas
por el campo de los estilos desde su formulación inicial. Desde que
surgieran tanto la disciplina como los estilos no sólo se han
generalizado arquitecturas de cliente-servidor, sino que
experimentaron su auge primero las configuraciones en varias capas y
luego las basadas en componentes, en recursos (la Web) y en servicios
(los Web services).
Las
primeras definiciones explícitas y auto conscientes de estilo
parecen haber sido propuestas por Dewayne Perry de AT&T Bell
Laboratories de New Jersey y Alexander Wolf de la Universidad de
Colorado. En octubre de 1992, estos autores profetizan que la década
de 1990 habría de ser la de la arquitectura de software, y definen
esa arquitectura en contraste con la idea de diseño. Leído hoy, y
aunque el acontecimiento es más reciente de lo que parece, su
llamamiento resulta profético y fundacional hasta lo inverosímil;
en él, la arquitectura y los estilos se inauguran simbólicamente en
una misma frase definitoria:
La
década de 1990, creemos, será la década de la arquitectura de
software. Usamos el término “arquitectura”, en contraste con
“diseño”, para evocar nociones de codificación, de abstracción,
de estándares, de entrenamiento formal (de arquitectos de software).
Advierten,
además, que curiosamente no existen arquitecturas que tengan un
nombre, como no sea en relación con estructuras de hardware. Por
analogía con la arquitectura de edificios, establecen que una
arquitectura se define mediante este modelo:
Arquitectura
de Software = { Elementos, Forma, Razón }
Algunos
años más tarde Mary Shaw y Paul Clements [SC96] identifican los
estilos arquitectónicos como un conjunto de reglas de diseño que
identifica las clases de componentes y conectores que se pueden
utilizar para componer en sistema o subsistema, junto con las
restricciones locales o globales de la forma en que la composición
se lleva a cabo.
El
análisis de la metodología de objetos, está muy cerca del
requerimiento y la percepción de un usuario o cliente técnicamente
agnóstico, un protagonista que en el terreno de los estilos no juega
ningún papel. En arquitectura de software, los estilos surgen de la
experiencia que el arquitecto posee; de ningún modo vienen impuestos
de manera explícita en lo que el cliente le pide.
Los
paradigmas como la arquitectura orientada a objetos (p.ej. CORBA), a
componentes(COM, JavaBeans, EJB, CORBA Component Model) o a
servicios, se relacionan con tecnologías particulares de
implementación, un elemento de juicio que en el campo de los estilos
se trata a un nivel más genérico y distante, si es que se llega a
tratar alguna vez. Dependiendo de la clasificación que se trate,
estos paradigmas tipifican más bien como subestilos de estilos más
englobantes (peer-to-peer, distribuidos, etc) o encarnan la forma de
implementación de otros estilos cualesquiera.
Los
patrones arquitectónicos, por su parte, se han materializado con
referencia a lenguajes y paradigmas también específicos de
desarrollo, mientras que ningún estilo presupone o establece
preceptivas al respecto. Si hay algún código en las inmediaciones
de un estilo, será código del lenguaje de descripción
arquitectónica o del lenguaje de modelado; de ninguna manera será
código de lenguaje de programación. Lo mismo en cuanto a las
representaciones visuales: los estilos se describen mediante simples
cajas y líneas, mientras que los patrones suelen representarse en
UML.
No hay comentarios:
Publicar un comentario