Está en la página 1de 14

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

1. Identifica y describe los diferentes lenguajes descriptores de arquitectura y agrega la utilidad que tiene.

Lenguajes descriptores de arquitectura ADL


Lenguaje
ACME

Descripcin

Caractersticas

Se define como una herramienta


capaz de soportar el mapeo de
especificaciones
arquitectnicas
entre diferentes ADL

AESOP

Su objetivo es explorar las bases


formales de la arquitectura de
software, el desarrollo del concepto
de estilo arquitectnico y la
produccin de herramientas tiles a
la arquitectura.

ARTEK

Se lo conoce tambin como


ARDEC/Teknowledge
Architecture
Description Language.

ADML

El propsito de ADML (Architecture


Description Markup Language) es
estandarizar la descripcin de
arquitecturas en base a XML, de
modo que pueda ser leda por
cualquier parser de XML.

CHAM

Proporciona la base para la


Descripcin de una arquitectura
debido a su capacidad de componer
especificaciones para las partes y
describir explcitamente las reglas de
composicin.

1.
2.
3.
1.

Intercambio arquitectural
Plataforma extensible de herramientas de
arquitectura
Descripcin de arquitecturas

Se describe mediante la definicin de subtipos de los tipos arquitectnicos bsicos:


Componente, Conector,
Puerto, Rol,
Configuracin y Binding
2. Los puntos de interfaz se llaman puertos
(ports).
3. Slo
soporta
nativamente
desarrollos
realizados en C++.
4. Genera cdigo C++.
1. Tiene la capacidad de modelar ciertos aspectos
de una arquitectura.
2. Puede generarse un modelo a partir de una
instancia particular de uso.
Permite definir vnculos con
objetos
externos
a
la
arquitectura
(fundamentacin racional, diseos, componentes,
etc.), as como interactuar con diversos
repositorios de industria, tales como las
especificaciones de OASIS relativas a esquemas
para SWIFT, IFX, OFX/OFE, BIPS, OTP, OMF, HL7,
RosettaNet o similares.
1. CHAM es un modelo de mquina abstracta
independiente de plataforma y del lenguaje o
paradigma de programacin que se vaya a
utilizar en el sistema que se modela.

Fecha de
aparicin
1995

Desarrolladores

Utilidad

Monroe
&
Garlan
(CMU), Wile (USC)

Sirve como lenguaje de


intercambio
de
arquitectura.

1994

Garlan (CMU)

Es una herramienta para


construir ambientes de
diseo
de
software
basada en principios de
arquitectura.

1994

Terry,
Hayes-Roth,
Erman
(Teknowledge, DSSA)

Lenguaje especfico de
dominio - No es ADL

2000

The
Open
Architectural
Framework

Vincular descripciones
arquitectnicas y
modelos directamente
con cualquier binario,
scripting o entidad en
cualquier plataforma y
en cualquier lenguaje.

1990

Berry / Boudol

Group

Lenguaje
especificacin

de

Diseo y arquitectura de Software


Lenguaje
DARWIN

C2 SADL

Jacal

LILEANNA

Descripcin
Describe un tipo de componente
mediante una interfaz consistente en
una coleccin de servicios que son ya
sea provistos (declarados por ese
componente) o requeridos (o sea,
que se espera ocurran en el entorno).
Las configuraciones se desarrollan
instanciando las declaraciones de
componentes
y
estableciendo
vnculos entre ambas clases de
servicios.
C2 o Chiron-2 no es estrictamente un
ADL sino un estilo de arquitectura de
software que
se ha impuesto como estndar en el
modelado de sistemas que requieren
intensivamente
pasaje de mensajes y que suelen
poseer
una
interfaz
grfica
dominante.
El objetivo principal de Jacal es
animacin de arquitecturas. Esto
es, poder visualizar una simulacin
de cmo se comportara en la
prctica un sistema basado en la
arquitectura que se ha representado.
Cuenta con una representacin
grfica que permite a simple vista
transmitir la arquitectura del sistema,
sin necesidad de recurrir a
informacin adicional.
LILEANNA es un ADL (o ms
estrictamente un MIL) que utiliza
el
lenguaje
Ada
para
la
implementacin y Anna para la
especificacin. Fue desarrollado
como parte del proyecto
DSSA ADAGE, patrocinado por
ARPA.

Universidad abierta y a distancia de Mxico


Caractersticas

1.

Soporta la descripcin de arquitecturas que se


reconfiguran dinmicamente a travs de dos
construcciones.
2. Cada servicio de Darwin se modeliza como un
nombre de canal, y cada declaracin de
binding es un proceso que trasmite el nombre
del canal al componente que requiere el
servicio.

Fecha de
aparicin
1991

Desarrolladores

Utilidad

Magee,
Dulay,
Eisenbach, Kramer

ADL con
dinmica

nfasis

en

1. Los mensajes de requerimiento slo se pueden


enviar hacia arriba en la arquitectura, y los
de notificacin slo hacia abajo.
2. La comunicacin es a travs de MENSAJES.

1996

Taylor/Medvidovic
(UCI)

ADL especfico de estilo

1.

Puede
ser
utilizado
para
expresar
arquitecturas de distintos estilos.
Cada componente cuenta con puertos (ports)
que constituyen su interfaz y a los que pueden
adosarse conectores.

1997

Kicillof , Yankelevich
(Universidad de
Buenos Aires)

ADL - Notacin de alto


nivel para
descripcin
y
prototipado

1. Soporta
diferentes
estilos
de
comunicacin, tales como variables
compartidas, tuberas, paso de mensajes y
blackboarding.
3. Mediante un sistema auxiliar llamado
TOOR, se hace el rastreo (tracing) de
dependencias
entre
objetos
potencialmente evolutivos y relaciones
entre objetos en funcin del tiempo.

1993

Tracz (Loral Federal)

Lenguaje de conexin
de mdulos

2.

Diseo y arquitectura de Software


Lenguaje

Descripcin

Caractersticas

MetaH

MetaH modela arquitecturas en los


dominios de gua, navegacin y
control (GN&C) y en el diseo
aeronutico.
Se puede caracterizar como un
lenguaje de descripcin de sistemas
de propsito general que permite
modelar interfaces de componentes
y su conducta observable. Sera tanto
un ADL como un lenguaje de
simulacin.
Proporciona una herramienta de
diseo para construir configuraciones
ejecutables basadas en tipos de
componentes, implementaciones y
conexiones expertas que soportan
tipos particulares de conectores.

4.

Rapide

UniCon

Wright

Es una herramienta de formalizacin


de conexiones arquitectnicas.

Universidad abierta y a distancia de Mxico

MetaH est exclusivamente ligado a


desarrollos hechos en Ada en el dominio de
referencia.

1. En Rapide los puntos de interfaz de los


componentes se llaman constituyentes.
2. En Rapide (al igual que en Darwin) no es
posible poner nombre, sub-tipear o reutilizar
un conector.

1.

El propsito de UniCon es generar cdigo


ejecutable a partir de una descripcin, a partir
de componentes primitivos adecuados.
2. Capacidad de manejo de mtodos de anlisis
de tiempo real a travs de RMA (Rate
Monotonic Analysis).
3. Proporciona medios para describir o delinear
familias de sistemas o estilos.
4. Soporta notacin grfica.
1. En Wright (igual que en Acme y Aesop) los
puntos de interfaz se llaman puertos (ports).
2. Permite modelar la conducta de sus
componentes.
3. Permite analizar los conectores para verificar
que no haya deadlocks.

Fecha de
aparicin
1993

Desarrolladores

Utilidad

Binns,
Englehart
(Honeywell)

ADL
especfico
dominio

1990

Luckham (Stanford)

ADL & simulacin

1995

Shaw (CMU)

ADL
de
propsito
general, nfasis
en conectores y estilos

1994

Garlan (CMU)

ADL
de
propsito
general, nfasis
en comunicacin

de

Qu es un lenguaje descriptor de Arquitectura Software?


Es un lenguaje que ayuda a abstraer, conceptualizar modelar y concretar de una manera ms amplia y optima un software, esto lo hace a travs de las herramientas, los
modelos y los patrones para aplicar estas en su desarrollo o construccin.
En la comunidad de ingeniera de sistemas, una arquitectura Description Language es un lenguaje y/o el modelo conceptual utilizado para describi r y
representar arquitecturas de sistemas.
En la comunidad de ingeniera de software, una arquitectura
una arquitectura de software. Esto significa en el caso de la
Con una arquitectura funcional, la a rquitectura de software
ingeniera de software varias AVD se han desarrollado, como

Description Language es un lenguaje de programacin utilizado para crear una descripcin de


arquitectura tcnica, la arquitectura debe ser comunicada a los desarrolladores de software.
se comunica con las partes interesadas y los ingenieros de la empresa. Por la comunidad de
Acme, AADL, C2, Darwin, y Wright.

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

2. Identifica y describe los patrones de arquitectura y agrega la utilidad que tienen.

Patrones de diseo
Los patrones de diseo son la base para la bsqueda de soluciones a problemas comunes en el desarrollo de software y otros mbitos referentes al
diseo de interaccin o interfaces.
Un patrn es una solucin a un problema de diseo. Para que una solucin sea considerada un patrn debe poseer ciertas caractersticas. Una de
ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que
significa que es aplicable a diferentes problemas de diseo en circunstancias parecidas.
Estableciendo patrones de diseo, se hace ms fcil construir soluciones especficas que tienen determinadas estructuras o piezas en comn,
reutilizando al mismo tiempo experiencias adquiridas.

Objetivos de los patrones


Los patrones de diseo pretenden:

Proporcionar catlogos de elementos reusables en el diseo de sistemas software.


Evitar la reiteracin en la bsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
Formalizar un vocabulario comn entre diseadores.
Estandarizar el modo en que se realiza el diseo.
Facilitar el aprendizaje de las nuevas generaciones de diseadores condensando conocimiento ya existente.

Asimismo, no pretenden:

Imponer ciertas alternativas de diseo frente a otras.


Eliminar la creatividad inherente al proceso de diseo.

No es obligatorio utilizar los patrones, solo es aconsejable en el caso de tener el mismo problema o similar que soluciona el patrn, siempre
teniendo en cuenta que en un caso particular puede no ser aplicable. "Abusar o forzar el uso de los patrones puede ser un error".

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

Descripcin de un patrn
Los siguientes tpicos describen las secciones de un patrn de arquitectura.
Seccin

Descripcin

Nombre

Nombre descriptivo que identifica al patrn

Clasificacin

Clasificacin del patrn que permita focalizar su orientacin a


la solucin de una determinada rea de problemas

Intencin

Breve descripcin del objetivo para el cul se crea el patrn


(problema que pretende resolver)

Tambin conocido como

Otros nombres por los cules se conoce al patrn

Motivacin

Escenario de ejemplo de uso del patrn

Aplicabilidad

Usos comunes y criterio de aplicabilidad del patrn

Estructura

Representacin grfica del patrn: todos sus componentes y


las relaciones entre ellos

Componentes
(Participantes)

Lista de componentes o recursos que intervienen en el patrn


y sus roles en el diseo as como los enlaces a sus respectivas
documentaciones en el caso que sean componentes de
arquitectura en uso

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

Colaboraciones

Descripcin de las interacciones entre los diversos


componentes del patrn

Consecuencias

Descripcin de los resultados, efectos colaterales o


compensaciones causadas por el uso del patrn
(consecuencias positivas y negativas de su uso)

Implementacin

Descripcin de la implementacin del patrn (tcnicas y


comentarios oportunos para poder llevarlo a la realidad)

Cdigo de ejemplo

Cdigo fuente asociado a la implementacin del patrn

Usos conocidos

Lista de casos reales de implementacin del patrn

Patrones relacionados

Otros patrones que tienen relacin con el patrn as como


diferencias con patrones similares

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

BlackBoard

Es una aplicacin de inteligencia artificial basada en una


base comn de conocimientos llamada el pizarrn.
A partir de la especificacin de un problema se plantea la
solucin.
Cada sistema experto enva a la pizarra una posible
solucin.
Si la solucin es aplicable queda como un borrador.
Cada sistema experto interacta con el borrador hasta
hallar una solucin final.

Cliente-Servidor

Se tiene una mquina cliente, que requiere un servicio de una


mquina servidor, y ste realiza la funcin para la que est
programado.
El sistema queda distribuido entre mltiples procesadores
donde hay clientes que solicitan servicios y servidores que los
proporcionan.
Los servicios se separan situndolos en su plataforma ms
adecuada.
Esto permite a los usuarios finales obtener acceso a la
informacin en forma transparente an en entornos
multiplataforma.
En el modelo cliente servidor, el cliente enva un mensaje
solicitando un determinado servicio a un servidor (hace una
peticin), y este enva uno o varios mensajes con la respuesta
(provee el servicio).

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

Front-End, Back-End

Front-End.- Es la parte del software que interacta con los


usuarios
Back-End.- Es la parte que procesa la entrada de datos
proveniente del Front-End
El Front-End es responsable de recolectar los datos de entrada y
los procesa conforme a las especificaciones del Back-End para
que este las pueda utilizar.
La conexin del Frot-End y el Back-End es de tipo interface ya
sea de manera fsica o virtual.

Computo Distribuido

Las computadoras interactan entre s, para lograr un objetivo


en comn.
Utiliza un gran nmero de computadoras organizado en racimos
por medio de una estructura de telecomunicaciones.
Cada usuario comparte tiempo de procesamiento de su mquina
para manejar grandes volmenes de informacin.

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

Monoltico

Tres capas

Cada capa est separada, nicamente puede comunicarse con


la siguiente capa.
Es la ms utilizada debido a su escalabilidad y flexibilidad
La interfaz del usuario, la lgica funcional del proceso,
almacenamiento de datos y acceso a los datos son desarrollados
y mantenidos como mdulos independientes comnmente en
plataformas separadas.
Permite que cualquiera de sus capas sea reemplazada sin afectar
a las dems.

Toda la estructura y grupo funcional est en un mismo lugar.


Existen interfaces grficas de usuario (GUI).
Servicios de presentacin, negocio y persistencia en la misma
mquina.
No hay concurrencia de usuarios.
Alto acoplamiento entre niveles.

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

4. Elabora ejemplos de uso de la combinacin de lenguajes y patrones y describe cada ejemplo (mnimo 2).

Caso 1
PATRONES DE DISEO EN EL DESARROLLO SOFTWARE
En el desarrollo software el patrn de diseo describe las clases y objetos que se comunicarn entre s de manera que puedan resolver un
problema general de diseo en un contexto particular. En un contexto informtico un patrn de diseo es similar a conceptos como biblioteca de
clases, frameworks, tcnicas y/ herramientas de refactorizacin o programacin extrema.
La clasificacin de los patrones de diseo en este contexto atiende a dos caractersticas como son:
Atendiendo a su propsito
Creacionales: Resuelven problemas relativos a la creacin de objetos
Estructurales: Resuelven problemas relativos a la composicin de objetos
De Comportamiento: Resuelven problemas relativos a la interaccin entre objetos.
Atendiendo a su mbito
Clases: Relaciones estticas entre clases
Objetos: Relaciones dinmicas entre objetos
Un ejemplo de lo que podra constituir un patrn de diseo aplicado a un contexto informtico podra ser el siguiente:

Nombre: Retroalimentacin visual de navegacin directa.


Problema: El usuario tiene dificultades para acceder directamente a las ventanas del sistema informtico y desconoce cul de entre ellas es
la ventana actual de trabajo.
Principio de usabilidad: Guiar al usuario y dar el control de la interaccin al usuario.
Contexto: Dada una gran cantidades de informacin facilitar al usuario los medios para navegar directamente entre las ventanas del
sistema informtico.
Fuerza: El sistema debe siempre mostrar la lista de ventanas navegables.
Solucin: Permitir al usuario a seleccionar directamente las ventana de la interfaz y mostrar continuamente la ventana activa y desactivas.
Consecuencias: El acceso directo a las ventanas del sistema no solo beneficia la manipulacin directa de ellas sino tambin la manipulacin
de los objetos que retienen ya que cada ventana es definida en trminos de sus objetos de interaccin (e.g. iconos, tems de men, radio
botones) los cuales permiten la adquisicin y la restitucin de informacin que requiere el usuario
Fuente: RED. Revista de Educacin a Distancia. Nmero especial dedicado a Patrones de eLearning y Objetos de
Aprendizaje Generativo. http://www.um.es/ead/red/M10/

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

Caso 2
LENGUAJES DE PATRN
El lenguaje de patrn se define como "La especificacin de una serie de elementos (patrones) y sus relaciones (con otros patrones) de modo que
nos permiten describir buenas soluciones a los diferentes problemas que aparecen en un contexto especfico." Si bien notaciones como UML o los
diagramas de flujo ayudan a explicar un determinado patrn, no constituyen un lenguaje de patrones.

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

Desafortunadamente los lenguajes de patrones no son la panacea, y presentan muchas lagunas. Sobre todo, hay que recordar que todo este
movimiento de documentacin de diseo se origina a mediados de los noventa y que aun siendo mucho el trabajo realizado, no existe todava
ninguna estandarizacin sobre cmo abordar el desarrollo de estos lenguajes, ni ninguna clasificacin que los relacione.
Un posible ejemplo de lenguaje de patrones es el que hemos visto anteriormente en el que se aporta informacin sobre el nombre del patrn,
contexto, patrones anteriores, la definicin del problema, la solucin y futuros patrones a considerar. Todos los patrones que aporten esta
informacin podran formar parte de este lenguaje de patrones. Otro ejemplo que modelase un tipo de sistema podra ser el siguiente:

Caractersticas bsicas que lo definen y diferencian. Por ejemplo: un sistema web se caracteriza por; clientes ultra ligeros, uso de
protocolos sin estado, centralizacin del software de ejecucin en servidores, etc...
Definicin de los actores principales que participan en dicho sistema as como sus casos de uso bsicos, descritos evidentemente de forma
genrica.
Especificacin de los principales componentes funcionales del sistema. As como las relaciones entre ellos.
Arquitectura lgica y flujos de informacin, que estructuran lo diferentes subsistemas, el intercambio de informacin de los mismos, etc.
Por ejemplo: arquitecturas reflexivas, modelo-vista-controlador etc
Arquitectura de componentes. Consiste en mapear los componentes funcionales en la arquitectura lgica de la aplicacin.
Arquitectura fsica. Especificacin del despliegue de los componentes.
Fuente: RED. Revista de Educacin a Distancia. Nmero especial dedicado a Patrones de eLearning y Objetos de
Aprendizaje Generativo. http://www.um.es/ead/red/M10/

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

4. Investiga la aplicacin de lenguajes y patrones que no se hayan presentado en el desarrollo de la unidad.

Catlogo de patrones
Un catlogo es un grupo de patrones clasificados por uno o ms criterios y relacionados entre s, los cuales pueden ser utilizados de forma conjunta o
independiente. Estos criterios permiten organizar los patrones en grupos que comparten el mismo conjunto de propiedades, y dependiendo de los criterios
elegidos se pueden definir esquemas de clasificacin con diferentes dimensiones. Los esquemas de clasificacin ponen de manifiesto las principales cualidades
de los patrones y ayudan a reducir el tamao del espacio de bsqueda.
En la literatura se pueden encontrar los siguientes criterios utilizados para clasificar diferentes tipos de patrones (Kardell, 1997):

Por su dominio. Dentro del campo de la ingeniera del software, los patrones no estn restringidos a resolver problemas de diseo o de arquitectura
software. Considerando el problema del diseo, se han propuesto gran cantidad de patrones en diferentes reas, como pueden ser los de sistemas
distribuidos, concurrentes o paralelos (Schmith et al., 2000) o colaborativos (Guerrero y Fuller, 2001).

Por su paradigma. Cada paradigma tiene sus propios patrones. Un patrn de diseo imperativo (uno de los paradigmas de la programacin) podra
dirigir un problema similar que un patrn de diseo orientado a objetos, pero la solucin se describira en trminos de cada paradigma. Un ejemplo de
este tipo sera el patrn Decorator(Gamma et al., 1994) que es presentado segn el paradigma de la orientacin a objetos y el patrn Navigational
Context (Rossi et al., 1997) que es el mismo patrn pero adaptado al paradigma del hipertexto.

Por su granularidad. Los patrones tambin pueden ser clasificados dependiendo del nivel al cual se dirijan. La clasificacin ms famosa es la descrita en
(Buschmann et al., 1996), donde en el nivel ms bajo se encuentran los patrones especficos del lenguaje de programacin, en el nivel medio se ubican
los de diseo y en el nivel superior los patrones referentes a la arquitectura del sistema.

Por su nivel de abstraccin. De una manera similar a la anterior, los patrones software se pueden clasificar en: patrones conceptuales, que son descritos
mediante trminos y conceptos de un dominio de aplicacin especfico; patrones de diseo, que describen construcciones software, complementando el
espacio conceptual abierto por los patrones conceptuales; y patrones de programacin, que estaran en el nivel ms bajo de abstraccin, cuyas
soluciones son descritas mediante construcciones propias de los lenguajes de programacin (Riehle y Zullighovens, 1996).

Por su propsito. El propsito representa qu tipo de problemas resuelve el patrn. Este criterio fue usado inicialmente por Gamma et al. (1994),
quienes establecieron las siguientes categoras: creacin, estructurales y de comportamiento.

Por su alcance. Dentro de un mismo paradigma y usando el mismo entorno de desarrollo, los patrones pueden ser clasificados segn el espacio del
entorno en el que se aplica la solucin del patrn. En el paradigma de la orientacin a objetos, por ejemplo, el patrn puede ser aplicado a una clase o a
un objeto (Gamma et al., 1994).

Por las relaciones entre patrones. En 1995, Zimmer examin la naturaleza de las relaciones entre los patrones a travs del campo Patrones
relacionados, centrndose en las relaciones entre los aspectos del problema y la solucin, dando lugar a tres tipos de relacin: el patrn X usa el patrn
Y en su solucin, el patrn X es similar al patrn Y, y el patrn X puede ser combinado con el patrn Y. Posteriormente, viendo que la relacin ms
predominante era X usa Y, los patrones fueron organizados en niveles de uso, como se ve en la figura 2.4.1.a.
Fuente: http://ares.cnice.mec.es/informes/21/contenidos/10.htm

Diseo y arquitectura de Software

Universidad abierta y a distancia de Mxico

5. En un archivo de texto, redacta un reporte con los elementos solicitados en los puntos 1, 2, 3 y 4.