lunes, 9 de junio de 2014

Estilos Arquitectónicos



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