19.05.2013 Views

Arquitectura basada en objetos de computación distribuida en la ...

Arquitectura basada en objetos de computación distribuida en la ...

Arquitectura basada en objetos de computación distribuida en la ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Resum<strong>en</strong><br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

E n s a y o s<br />

<strong>Arquitectura</strong> <strong>basada</strong> <strong>en</strong> <strong>objetos</strong><br />

<strong>de</strong> <strong>computación</strong> <strong>distribuida</strong><br />

<strong>en</strong> <strong>la</strong> configuración <strong>de</strong> sistemas distribuidos<br />

Estamos <strong>en</strong> <strong>la</strong> etapa inicial <strong>de</strong> <strong>la</strong> <strong>computación</strong> <strong>distribuida</strong>.<br />

La i<strong>de</strong>a básica <strong>de</strong> nuestro <strong>en</strong>foque es el <strong>de</strong>sarrollo <strong>de</strong> <strong>la</strong> infraestructura<br />

<strong>de</strong> aplicaciones <strong>de</strong> tal manera que el usuario no<br />

necesite saber nada sobre computadoras, re<strong>de</strong>s, sistemas<br />

operativos, l<strong>en</strong>guajes <strong>de</strong> programación, compon<strong>en</strong>tes, módulos,<br />

etcétera. Para resolver este problema ofrecemos una organización<br />

<strong>basada</strong> <strong>en</strong> interfaces <strong>de</strong> los compon<strong>en</strong>tes para <strong>la</strong><br />

<strong>computación</strong> <strong>distribuida</strong> que hemos usado para el <strong>de</strong>sarrollo<br />

<strong>de</strong> sistemas <strong>de</strong> configuración <strong>de</strong> <strong>objetos</strong> complejos. Para lograr<br />

esta meta proponemos una arquitectura sofisticada <strong>de</strong><br />

ambi<strong>en</strong>te <strong>de</strong> aplicaciones <strong>distribuida</strong>s don<strong>de</strong> ag<strong>en</strong>tes <strong>de</strong><br />

toma <strong>de</strong> <strong>de</strong>cisiones interoperan y cooperan sobre <strong>objetos</strong> distribuidos<br />

y configurados a través <strong>de</strong> middleware especial. La<br />

arquitectura <strong>de</strong> este middleware se ha <strong>de</strong>sarrol<strong>la</strong>do como<br />

ambi<strong>en</strong>te distribuido apoyado por ag<strong>en</strong>tes intelig<strong>en</strong>tes <strong>de</strong><br />

proyectos. La integridad <strong>de</strong> propieda<strong>de</strong>s y consist<strong>en</strong>cia parcial<br />

<strong>de</strong> proyectos distribuidos complejos están soportados<br />

por métodos especiales basados <strong>en</strong> <strong>la</strong> integración <strong>de</strong> bases<br />

<strong>de</strong> datos y bases <strong>de</strong> conocimi<strong>en</strong>to, así como <strong>en</strong> reg<strong>la</strong>s <strong>de</strong> gramática<br />

<strong>de</strong> grafos.<br />

Anatoli Sem<strong>en</strong>ovich Koulinitch*<br />

Francisco Espinosa Maceda**<br />

Carlos B<strong>en</strong>avi<strong>de</strong>s Martínez***<br />

Abstract<br />

We are at the beginning of the age of distributed computing.<br />

The basic i<strong>de</strong>a of this approach is the <strong>de</strong>velopm<strong>en</strong>t<br />

of application infrastructure so that the user does not<br />

need to know about computers, networks, operating systems,<br />

programming <strong>la</strong>nguage, compon<strong>en</strong>ts, modules, etc.<br />

To meet this chall<strong>en</strong>ge, we offer an interface-based organization<br />

of compon<strong>en</strong>ts for distributed computing which<br />

we have used for the <strong>de</strong>velopm<strong>en</strong>t of configuration systems<br />

of complex projects. To reach this goal, we propose<br />

a sophisticated architecture of a distributed application<br />

<strong>en</strong>vironm<strong>en</strong>t where <strong>de</strong>cision making ag<strong>en</strong>ts interoperate<br />

and cooperate over a distributed configured object<br />

by means of special middleware. The architecture of this<br />

middleware has be<strong>en</strong> <strong>de</strong>veloped as a distributed <strong>en</strong>vironm<strong>en</strong>t<br />

supported by intellig<strong>en</strong>t project ag<strong>en</strong>ts. Property<br />

integrity and partial consist<strong>en</strong>cy of distributed complex<br />

projects are supported by special methods based on data<br />

base and knowledge base integration and distributed<br />

computing using graph grammar rules.<br />

1. Introducción uniforme <strong>de</strong> conocimi<strong>en</strong>to al compartir <strong>la</strong> información <strong>en</strong>tre<br />

los usuarios y los sistemas; a<strong>de</strong>más ti<strong>en</strong>e numerosos<br />

L<br />

as tecnologías <strong>de</strong> información <strong>distribuida</strong> (IT’s) prove<strong>en</strong><br />

un acceso universal transpar<strong>en</strong>te a recursos<br />

distribuidos, y como existe una gran variedad <strong>de</strong><br />

problemas, <strong>en</strong>tre los que <strong>de</strong>stacan los concerni<strong>en</strong>tes al crecimi<strong>en</strong>to,<br />

<strong>la</strong> modu<strong>la</strong>ridad y el mant<strong>en</strong>imi<strong>en</strong>to <strong>de</strong> una aplicación.<br />

tipos <strong>de</strong> computadoras, re<strong>de</strong>s y sistemas operativos, <strong>la</strong> <strong>computación</strong><br />

empresarial es hoy <strong>en</strong> día una colección <strong>de</strong> diver-<br />

Tradicionalm<strong>en</strong>te <strong>la</strong> configuración es consi<strong>de</strong>rada como una<br />

sas partes que trabajan <strong>en</strong> conjunto con un fin común. La<br />

secu<strong>en</strong>cia <strong>de</strong> estados <strong>en</strong>tre los cuales <strong>de</strong>stacan <strong>la</strong> formu<strong>la</strong>-<br />

tecnología cli<strong>en</strong>te/servidor es actualm<strong>en</strong>te un <strong>de</strong>sarrollo esción <strong>de</strong>l problema, el diseño conceptual, <strong>la</strong> síntesis <strong>de</strong> patratégico<br />

<strong>en</strong> <strong>computación</strong>, que no suministra un mo<strong>de</strong>lo rámetros, etcétera. Se ha <strong>de</strong>sarrol<strong>la</strong>do un análisis para evaluar<br />

<strong>la</strong>s soluciones factibles y <strong>la</strong>s características <strong>de</strong>l objeto, <strong>la</strong>s<br />

cuales son <strong>de</strong>terminadas secu<strong>en</strong>cialm<strong>en</strong>te, <strong>de</strong>stacando <strong>en</strong>tre<br />

estos estados <strong>la</strong> solución efectiva.<br />

* Director <strong>de</strong>l Posgrado <strong>en</strong> Electrónica y Computación <strong>de</strong> <strong>la</strong> UTM.<br />

* * Profesor-investigador <strong>de</strong> tiempo completo <strong>de</strong>l Instituto <strong>de</strong> Electrónica y<br />

Computación, UTM.<br />

* * * Tesista <strong>de</strong> <strong>la</strong> lic<strong>en</strong>ciatura <strong>en</strong> Ing<strong>en</strong>iería <strong>en</strong> Computación, UTM.<br />

TEMAS 3


E n s a y o s<br />

El progreso <strong>de</strong> <strong>la</strong> información tecnológica <strong>distribuida</strong> permite<br />

combinar difer<strong>en</strong>tes configuraciones <strong>de</strong> estado, usando<br />

ag<strong>en</strong>tes basados <strong>en</strong> conocimi<strong>en</strong>to funcional distribuido.<br />

Una configuración <strong>distribuida</strong> es un proceso <strong>de</strong> re<strong>la</strong>ción<br />

cooperativa <strong>en</strong> <strong>la</strong> cual trabajan ag<strong>en</strong>tes (diseñadores o expertos)<br />

<strong>en</strong> los difer<strong>en</strong>tes aspectos o partes <strong>de</strong> un DC-objeto<br />

con el fin <strong>de</strong> promover acciones <strong>de</strong> integración <strong>en</strong> el<br />

cons<strong>en</strong>so <strong>de</strong> los archivos. Los datos g<strong>en</strong>erados por los ag<strong>en</strong>tes<br />

<strong>de</strong>b<strong>en</strong> ser compatibles con los DC-<strong>objetos</strong> y con los<br />

datos formados concurr<strong>en</strong>tem<strong>en</strong>te por otros ag<strong>en</strong>tes <strong>de</strong><br />

cada DC-objeto.<br />

Hoy <strong>la</strong> ing<strong>en</strong>iería concurr<strong>en</strong>te (Concurr<strong>en</strong>t Engineering-CE)<br />

necesita <strong>de</strong> una bu<strong>en</strong>a caracterización <strong>de</strong>l mo<strong>de</strong>lo operacional;<br />

hay una significativa necesidad <strong>de</strong> formalizar <strong>la</strong> <strong>de</strong>cisión<br />

cooperativa <strong>distribuida</strong> y concurr<strong>en</strong>te, para lograr una<br />

interre<strong>la</strong>ción <strong>de</strong> procesos que puedan ser manejados efectivam<strong>en</strong>te<br />

por ag<strong>en</strong>tes basados <strong>en</strong> tecnologías <strong>de</strong> ambi<strong>en</strong>tes<br />

sin restricciones. El DCS, como una especialización<br />

intelectual <strong>en</strong> ambi<strong>en</strong>tes, pue<strong>de</strong> facilitar el mant<strong>en</strong>imi<strong>en</strong>to<br />

distribuido por medio <strong>de</strong>l mecanismo <strong>de</strong> ag<strong>en</strong>tes para<br />

coordinar el <strong>de</strong>sarrollo <strong>de</strong> los DC-<strong>objetos</strong>, pero hay muchos<br />

problemas re<strong>la</strong>cionados con este <strong>de</strong>sarrollo, por ejemplo:<br />

<strong>la</strong> co<strong>la</strong>boración <strong>en</strong> <strong>la</strong> actualización <strong>de</strong> procesos<br />

in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>tes, los cuales ti<strong>en</strong><strong>en</strong> que calcu<strong>la</strong>r <strong>la</strong> resultante<br />

<strong>de</strong> los datos concurr<strong>en</strong>tes con una coordinación "semántica";<br />

<strong>la</strong> integridad y consist<strong>en</strong>cia <strong>de</strong> los datos y el<br />

mo<strong>de</strong><strong>la</strong>do <strong>de</strong> <strong>la</strong>s activida<strong>de</strong>s, <strong>la</strong>s cuales pued<strong>en</strong> ser complem<strong>en</strong>tadas<br />

por más <strong>de</strong> un objeto o por variantes.<br />

El problema <strong>de</strong> configuración se formu<strong>la</strong> como un intervalo<br />

<strong>de</strong>l problema restricción-satisfacción, el cual asume que<br />

los valores <strong>de</strong>l dominio son intervalos e intervalos aritméticos<br />

estándar usados para evaluar nodos y arcos <strong>de</strong> consist<strong>en</strong>cia.<br />

2. Tecnologías <strong>de</strong> información <strong>distribuida</strong><br />

<strong>basada</strong> <strong>en</strong> <strong>objetos</strong><br />

La i<strong>de</strong>a principal <strong>de</strong> <strong>la</strong> tecnología <strong>de</strong> información es<br />

dividir <strong>la</strong>s aplicaciones complejas <strong>de</strong> programación <strong>en</strong><br />

compon<strong>en</strong>tes o módulos fácilm<strong>en</strong>te <strong>de</strong>sarrol<strong>la</strong>bles, com-<br />

4 TEMAS<br />

pr<strong>en</strong>sibles, diseñándolos como módulos activos d<strong>en</strong>ominados<br />

ag<strong>en</strong>tes; estos compon<strong>en</strong>tes podrán trabajar<br />

<strong>en</strong> conjunto sólo si han sido diseñados y construidos<br />

bajo <strong>la</strong>s interfaces estándar. La arquitectura <strong>basada</strong> <strong>en</strong><br />

compon<strong>en</strong>tes para <strong>la</strong> construcción <strong>de</strong> aplicaciones <strong>de</strong><br />

sistemas provee una lista <strong>de</strong> interfaces comunes para<br />

integrar sus difer<strong>en</strong>tes compon<strong>en</strong>tes hacia una solución<br />

completa. En <strong>la</strong> actualidad <strong>la</strong> tecnología <strong>de</strong> <strong>la</strong> información<br />

está comprometida <strong>en</strong> solucionar <strong>la</strong> car<strong>en</strong>cia<br />

<strong>de</strong> interoperabilidad <strong>de</strong> aplicaciones <strong>en</strong>tre <strong>la</strong>s difer<strong>en</strong>tes<br />

p<strong>la</strong>taformas <strong>de</strong> computadoras, y el <strong>en</strong>samble <strong>de</strong><br />

estos compon<strong>en</strong>tes comi<strong>en</strong>za a ser el principal problema<br />

para el <strong>de</strong>sarrollo <strong>de</strong> <strong>la</strong>s aplicaciones <strong>distribuida</strong>s.<br />

Para resolver este problema se necesita <strong>de</strong> una infraestructura<br />

capaz <strong>de</strong> proveer <strong>la</strong> invocación <strong>de</strong> programas remotos<br />

y <strong>la</strong> comunicación con ellos; <strong>la</strong> comunicación <strong>de</strong><br />

<strong>la</strong>s aplicaciones a través <strong>de</strong> <strong>la</strong> red, se logra con algún<br />

middleware. El middleware, como los procesadores <strong>de</strong><br />

transacciones, conectores <strong>de</strong> bases <strong>de</strong> datos, protocolos<br />

<strong>de</strong> comunicaciones, <strong>en</strong>tre otros, prove<strong>en</strong> <strong>de</strong> difer<strong>en</strong>tes<br />

c<strong>la</strong>ses <strong>de</strong> infraestructura, don<strong>de</strong> <strong>la</strong> interacción <strong>de</strong> los <strong>objetos</strong><br />

es perfecta a través <strong>de</strong> un sofisticado sistema <strong>de</strong><br />

m<strong>en</strong>sajes permiti<strong>en</strong>do a los ag<strong>en</strong>tes hacer requisiciones<br />

<strong>de</strong> servicio <strong>de</strong> otros ag<strong>en</strong>tes.<br />

La tecnología <strong>de</strong> <strong>objetos</strong> está progresando y para po<strong>de</strong>r<br />

proveer los principios <strong>de</strong> organización para <strong>la</strong> sigui<strong>en</strong>te g<strong>en</strong>eración<br />

<strong>de</strong> <strong>la</strong> arquitectura cli<strong>en</strong>te/servidor se fundam<strong>en</strong>ta<br />

<strong>en</strong> <strong>la</strong> Computación Distribuida Basada <strong>en</strong> Objetos (ODC),<br />

<strong>la</strong> cual está <strong>en</strong>caminada a <strong>la</strong> <strong>computación</strong> cli<strong>en</strong>te/servidor<br />

ori<strong>en</strong>tada a <strong>objetos</strong>. Las v<strong>en</strong>tajas que resultan <strong>de</strong> este ambi<strong>en</strong>te<br />

<strong>de</strong> <strong>computación</strong> <strong>distribuida</strong> <strong>basada</strong> <strong>en</strong> <strong>objetos</strong> son<br />

<strong>la</strong>s sigui<strong>en</strong>tes:<br />

1. Las aplicaciones conformadas por <strong>objetos</strong> distribuidos<br />

son una imag<strong>en</strong> única <strong>de</strong> <strong>la</strong> empresa.<br />

2. Los servidores son transpar<strong>en</strong>tes hacia los cli<strong>en</strong>tes, los<br />

cuales pued<strong>en</strong> ser implem<strong>en</strong>tados como ag<strong>en</strong>tes migratorios.<br />

3. Tanto los <strong>objetos</strong> remotos, como locales, se comunican<br />

<strong>de</strong> <strong>la</strong> misma manera a través <strong>de</strong> m<strong>en</strong>sajes.


4. El particionami<strong>en</strong>to permite a los usuarios un cambio <strong>de</strong><br />

recursos <strong>de</strong> cómputo <strong>en</strong> sus accesos.<br />

5. La <strong>en</strong>voltura <strong>de</strong> los <strong>objetos</strong> (interfaces ori<strong>en</strong>tadas a <strong>objetos</strong>)<br />

está e<strong>la</strong>borada para <strong>la</strong> comunicación <strong>en</strong>tre ellos.<br />

Los <strong>objetos</strong> distribuidos (DC-<strong>objetos</strong>) se pres<strong>en</strong>tan al usuario<br />

como algo muy familiar, no como máquinas, re<strong>de</strong>s o<br />

l<strong>en</strong>guajes <strong>de</strong> programación; son actores, jugadores con su<br />

propia actividad o sustitutos <strong>de</strong> cosas <strong>de</strong>l mundo real o<br />

repres<strong>en</strong>tación <strong>de</strong> algunos conceptos. Los módulos pued<strong>en</strong><br />

ser cubiertos y aparecer al <strong>de</strong>sarrol<strong>la</strong>dor como ag<strong>en</strong>tes<br />

y cuando se cu<strong>en</strong>ta con esta cubierta, el código pue<strong>de</strong><br />

participar <strong>en</strong> un ambi<strong>en</strong>te ODC. El <strong>en</strong>volver o cubrir es<br />

una técnica para crear una interface <strong>basada</strong> <strong>en</strong> <strong>objetos</strong>,<br />

con <strong>la</strong> cual se pued<strong>en</strong> accesar <strong>de</strong> una manera específica y<br />

funcional los cont<strong>en</strong>idos <strong>de</strong> una o más <strong>de</strong> <strong>la</strong>s aplicaciones<br />

exist<strong>en</strong>tes <strong>en</strong> una computadora.<br />

2.1 <strong>Arquitectura</strong> <strong>de</strong> <strong>la</strong> <strong>computación</strong> <strong>distribuida</strong><br />

<strong>basada</strong> <strong>en</strong> <strong>objetos</strong><br />

La ODC es uno <strong>de</strong> los paradigmas <strong>de</strong> <strong>la</strong> <strong>computación</strong><br />

que admite distribuir <strong>objetos</strong> a través <strong>de</strong> una heterogénea<br />

red permiti<strong>en</strong>do a cada uno <strong>de</strong> sus compon<strong>en</strong>tes<br />

interactuar como una so<strong>la</strong> unidad. Este paradigma provee<br />

<strong>de</strong> una infraestructura para abastecer los compon<strong>en</strong>tes<br />

<strong>de</strong> servicios disponibles y así reunir los procesos<br />

cooperativos distribuidos <strong>de</strong> una forma universal y transpar<strong>en</strong>te.<br />

La ODC es un avance dramático <strong>en</strong> los formatos<br />

<strong>de</strong> <strong>computación</strong>, es un resultado <strong>de</strong> <strong>la</strong> converg<strong>en</strong>cia<br />

<strong>de</strong> <strong>la</strong> tecnología ori<strong>en</strong>tada a <strong>objetos</strong> y <strong>la</strong> tecnología cli<strong>en</strong>te/servidor,<br />

mezc<strong>la</strong>ndo <strong>la</strong>s v<strong>en</strong>tajas <strong>de</strong> distribución <strong>de</strong> <strong>la</strong><br />

tecnología cli<strong>en</strong>te/servidor con <strong>la</strong> riqueza <strong>de</strong> información<br />

<strong>de</strong>l mundo real cont<strong>en</strong>ida <strong>en</strong> los mo<strong>de</strong>los ori<strong>en</strong>tados a<br />

<strong>objetos</strong>.<br />

Los DC-<strong>objetos</strong> pued<strong>en</strong> distribuirse <strong>en</strong> difer<strong>en</strong>tes computadoras<br />

a través <strong>de</strong> <strong>la</strong> red, y <strong>la</strong> ODC pue<strong>de</strong> verlos como<br />

una red global <strong>de</strong> cli<strong>en</strong>tes y servidores heterogéneos y cooperativos.<br />

La ODC satisface al paradigma al reunir <strong>de</strong><br />

manera efectiva los cambios punto a punto <strong>en</strong> los accesos<br />

cli<strong>en</strong>te/servidor, don<strong>de</strong> el cli<strong>en</strong>te servidor global <strong>de</strong> <strong>la</strong> red<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

es una computadora <strong>distribuida</strong> <strong>basada</strong> <strong>en</strong> <strong>objetos</strong>; también<br />

cu<strong>en</strong>ta con provisiones para el paradigma universal <strong>de</strong><br />

construcción, transpar<strong>en</strong>te y adaptativo <strong>en</strong> <strong>la</strong>s infraestructuras<br />

<strong>de</strong> información y sistemas.<br />

La ODC propone un sofisticado sistema <strong>de</strong> servicio proveído<br />

por los DC-<strong>objetos</strong> partidos <strong>en</strong> ag<strong>en</strong>tes (P-ag<strong>en</strong>tes), para<br />

garantizar <strong>la</strong> integridad <strong>de</strong> propiedad y <strong>la</strong> <strong>de</strong>bilidad <strong>en</strong> <strong>la</strong><br />

consist<strong>en</strong>cia <strong>de</strong> los datos objeto. Una arquitectura ODC<br />

ti<strong>en</strong>e que soportar <strong>la</strong> interoperación <strong>de</strong> los actos concurr<strong>en</strong>tes<br />

<strong>de</strong> los DM-ag<strong>en</strong>tes sobre <strong>la</strong>s partes <strong>de</strong> los DC-<strong>objetos</strong>,<br />

mant<strong>en</strong>i<strong>en</strong>do una coordinada actualización <strong>en</strong> los conflictos<br />

<strong>de</strong> fu<strong>en</strong>tes comunes <strong>en</strong>tre los procesos <strong>de</strong> los DC-<strong>objetos</strong>,<br />

por tanto hay una reducida carga <strong>en</strong> los DM-ag<strong>en</strong>tes. Los<br />

servicios <strong>de</strong> <strong>la</strong> ODC están bi<strong>en</strong> solicitados <strong>en</strong> el ambi<strong>en</strong>te<br />

distribuido; esto es, <strong>en</strong> forma dinámica y provey<strong>en</strong>do difer<strong>en</strong>tes<br />

soportes <strong>en</strong> <strong>la</strong> co<strong>la</strong>boración <strong>de</strong> alto nivel.<br />

Esta arquitectura es una consecu<strong>en</strong>cia <strong>de</strong> <strong>la</strong> selección <strong>de</strong><br />

<strong>la</strong> repres<strong>en</strong>tación <strong>de</strong>l conocimi<strong>en</strong>to y <strong>la</strong> estructura <strong>de</strong> datos<br />

ori<strong>en</strong>tados a <strong>objetos</strong>, ambas usadas por los mo<strong>de</strong>los <strong>de</strong><br />

<strong>objetos</strong>. Los P-ag<strong>en</strong>tes son interfaces flexibles y programables<br />

<strong>en</strong>tre DM-ag<strong>en</strong>tes y <strong>objetos</strong> distribuidos. Exist<strong>en</strong><br />

implem<strong>en</strong>taciones aproximadas <strong>de</strong> tres fi<strong>la</strong>s (three-tiered)<br />

para contro<strong>la</strong>r todos los <strong>objetos</strong> <strong>de</strong> operación escritura/lectura.<br />

La arquitectura ODC es usada por los P-ag<strong>en</strong>tes<br />

para <strong>en</strong>t<strong>en</strong><strong>de</strong>r el contexto d<strong>en</strong>tro <strong>de</strong>l cual están sucedi<strong>en</strong>do<br />

<strong>la</strong>s actualizaciones <strong>de</strong> los ev<strong>en</strong>tos. Los P-ag<strong>en</strong>tes<br />

utilizan técnicas <strong>de</strong> infer<strong>en</strong>cia para hacer factible <strong>la</strong>s operaciones<br />

<strong>de</strong> los DM-ag<strong>en</strong>tes sobre los DC-<strong>objetos</strong> y po<strong>de</strong>r<br />

conceptualizar una vista <strong>de</strong>l ambi<strong>en</strong>te <strong>de</strong> DCS como<br />

un middleware.<br />

Los DM-ag<strong>en</strong>tes se comunican regu<strong>la</strong>rm<strong>en</strong>te a través <strong>de</strong><br />

re<strong>de</strong>s estructuradas, <strong>la</strong>s cuales están soportadas por P-ag<strong>en</strong>tes;<br />

cada P-ag<strong>en</strong>te está conectado con una lista <strong>de</strong> DMag<strong>en</strong>tes<br />

<strong>de</strong>sarrol<strong>la</strong>ndo <strong>la</strong>s partes <strong>de</strong> los DC-<strong>objetos</strong> más un<br />

número <strong>de</strong> P-ag<strong>en</strong>tes para po<strong>de</strong>r soportar <strong>la</strong> coordinación<br />

<strong>de</strong> datos comunes compartidos <strong>en</strong>tre <strong>la</strong>s partes <strong>de</strong> los DC<strong>objetos</strong>;<br />

también un DM-ag<strong>en</strong>te pue<strong>de</strong> cont<strong>en</strong>er una lista<br />

<strong>de</strong> canales para intercambiar con P-ag<strong>en</strong>tes <strong>en</strong> <strong>la</strong>s difer<strong>en</strong>tes<br />

p<strong>la</strong>taformas.<br />

TEMAS 5


E n s a y o s<br />

Las comunicaciones están establecidas mediante una<br />

estructura <strong>de</strong> intercambio <strong>de</strong> m<strong>en</strong>sajes <strong>la</strong> cual interopera<br />

<strong>de</strong> acuerdo con <strong>la</strong> lista preestablecida <strong>en</strong> el formato<br />

<strong>de</strong> transfer<strong>en</strong>cia (protocolos). Estas interoperaciones<br />

están <strong>basada</strong>s <strong>en</strong> un grafo <strong>de</strong> transformación <strong>de</strong> especificaciones<br />

<strong>de</strong> los ag<strong>en</strong>tes <strong>de</strong> acción. Los DM-ag<strong>en</strong>tes<br />

pued<strong>en</strong> ser distribuidos con <strong>la</strong> información incompleta,<br />

pero utilizando una forma semánticam<strong>en</strong>te rica <strong>en</strong><br />

<strong>la</strong> <strong>de</strong>scripción <strong>de</strong> <strong>la</strong>s posibilida<strong>de</strong>s <strong>de</strong>l diseño basado<br />

<strong>en</strong> fragm<strong>en</strong>tos.<br />

Los DM-ag<strong>en</strong>tes pued<strong>en</strong> activar algunos actores como<br />

ag<strong>en</strong>tes computacionales (C-ag<strong>en</strong>tes) para que <strong>de</strong>cidan<br />

<strong>en</strong>tre <strong>la</strong>s difer<strong>en</strong>tes tareas computacionales. Un<br />

C-ag<strong>en</strong>te siempre espera una l<strong>la</strong>mada <strong>de</strong> comunicación<br />

y pue<strong>de</strong> interpretar dicho m<strong>en</strong>saje <strong>de</strong> acuerdo a<br />

su estado real. Un C-ag<strong>en</strong>te pue<strong>de</strong> g<strong>en</strong>erar un nuevo<br />

C-ag<strong>en</strong>te para que <strong>de</strong>cida nuevas sub-tareas.<br />

3. Funciones <strong>de</strong> los ag<strong>en</strong>tes<br />

Los sistemas cooperativos están compuestos <strong>de</strong> una lista<br />

<strong>de</strong> ag<strong>en</strong>tes (l<strong>la</strong>mados sistemas multi-ag<strong>en</strong>te-MAS) y<br />

son consi<strong>de</strong>rados sistemas modu<strong>la</strong>res <strong>de</strong> ODC. La teoría<br />

<strong>de</strong> sistemas multi-ag<strong>en</strong>tes surge <strong>de</strong>bido a <strong>la</strong> t<strong>en</strong>d<strong>en</strong>cia<br />

<strong>de</strong>l <strong>de</strong>sarrollo <strong>de</strong> sistemas intelig<strong>en</strong>tes y a <strong>la</strong> <strong>computación</strong><br />

<strong>distribuida</strong>. Aunque <strong>de</strong>safortunadam<strong>en</strong>te todavía no existe<br />

una metodología que permita analizar, especificar, diseñar<br />

e implem<strong>en</strong>tar estos sistemas multi-ag<strong>en</strong>tes, nosotros<br />

especificamos el conocimi<strong>en</strong>to <strong>de</strong> cada ag<strong>en</strong>te<br />

interno y su comportami<strong>en</strong>to <strong>en</strong> el mundo externo, a<strong>de</strong>más<br />

<strong>de</strong> sus interacciones con otros ag<strong>en</strong>tes. Esto significa<br />

que <strong>la</strong> comunicación <strong>en</strong>tre ellos se da con especificaciones<br />

semánticas, por lo que <strong>la</strong> corrección <strong>de</strong> los protocolos<br />

<strong>de</strong> interacción <strong>en</strong> sistemas específicos está<br />

garantizada.<br />

Para especificar <strong>la</strong> mayor parte <strong>de</strong> los sistemas multiag<strong>en</strong>tes<br />

es necesario <strong>de</strong>finir el conocimi<strong>en</strong>to interno<br />

que le pert<strong>en</strong>ece a cada ag<strong>en</strong>te y sus funciones que<br />

proced<strong>en</strong> <strong>de</strong>l mundo exterior, muy cerca <strong>de</strong> <strong>la</strong> interacción<br />

con otros ag<strong>en</strong>tes. En nuestra investigación el mo<strong>de</strong>lo<br />

6 TEMAS<br />

<strong>de</strong>l sistema multi-ag<strong>en</strong>tes es usado por el mo<strong>de</strong>lo <strong>de</strong><br />

ambi<strong>en</strong>te cooperativo-DCS, <strong>en</strong> don<strong>de</strong> el MAS toma v<strong>en</strong>taja<br />

sobre <strong>la</strong> participación dinámica <strong>de</strong> cada uno <strong>de</strong> los miembros<br />

<strong>de</strong>l grupo, lo cual constituye un avance.<br />

Un DM-ag<strong>en</strong>te pue<strong>de</strong> usar toda una base <strong>de</strong> datos,<br />

pero <strong>la</strong>s operaciones <strong>de</strong> actualización sólo pued<strong>en</strong> ser<br />

efectuadas fuera, <strong>en</strong> <strong>la</strong> parte <strong>de</strong> captura. Un DM-ag<strong>en</strong>te<br />

ti<strong>en</strong>e que capturar <strong>la</strong> parte seleccionada <strong>de</strong> un fragm<strong>en</strong>to<br />

<strong>de</strong> DC-objeto, como protección <strong>de</strong> posibles<br />

actualizaciones no coordinadas con otros DM-ag<strong>en</strong>tes.<br />

Un DM-ag<strong>en</strong>te pue<strong>de</strong> crear nuevos tipos <strong>de</strong> datos como<br />

parte <strong>de</strong> mo<strong>de</strong>los <strong>de</strong> un DC-objeto o sus instancias,<br />

buscar prototipos para diseñar parte <strong>de</strong> nodos-consist<strong>en</strong>tes<br />

<strong>de</strong> los fragm<strong>en</strong>tos capturados, transformando los<br />

datos <strong>de</strong> ciertas operaciones mediante cálculos <strong>de</strong> intervalos<br />

para <strong>de</strong>finir valores restringidos para los atributos<br />

y, finalm<strong>en</strong>te, <strong>en</strong>viar sus propósitos al P-ag<strong>en</strong>te para<br />

su aceptación o rechazo.<br />

La propuesta hecha localm<strong>en</strong>te por un DM-ag<strong>en</strong>te está<br />

disponible <strong>de</strong> inmediato para los DM-ag<strong>en</strong>tes que us<strong>en</strong><br />

elem<strong>en</strong>tos <strong>de</strong> interface para capturar el fragm<strong>en</strong>to. En<br />

g<strong>en</strong>eral, <strong>la</strong> factibilidad <strong>de</strong> <strong>la</strong>s operaciones <strong>de</strong> actualización<br />

<strong>de</strong> un P-ag<strong>en</strong>te sobre un DC-objeto está restringida<br />

por <strong>la</strong> semántica <strong>de</strong> datos <strong>de</strong> los <strong>objetos</strong>; es<br />

<strong>de</strong>cir, <strong>la</strong>s propieda<strong>de</strong>s <strong>de</strong> un DC-objeto y sus requerimi<strong>en</strong>tos<br />

aplicables a él. La coordinación <strong>de</strong> <strong>la</strong>s acciones<br />

concurr<strong>en</strong>tes <strong>de</strong> los DM-ag<strong>en</strong>tes están <strong>basada</strong>s <strong>en</strong><br />

los conceptos <strong>de</strong> integridad <strong>de</strong> propiedad y <strong>la</strong> consist<strong>en</strong>cia<br />

<strong>de</strong> su cobertura para una base <strong>de</strong> datos <strong>en</strong> <strong>la</strong><br />

cual <strong>la</strong> i<strong>de</strong>a <strong>de</strong> "actividad <strong>de</strong> un objeto" es usada <strong>de</strong><br />

acuerdo con <strong>la</strong>s posibles operaciones <strong>de</strong>finidas sobre<br />

el estado <strong>de</strong>l fragm<strong>en</strong>to.<br />

Los m<strong>en</strong>sajes <strong>en</strong>tre los P-ag<strong>en</strong>tes y los DM-ag<strong>en</strong>tes son<br />

soportados por <strong>la</strong> arquitectura DCS y consiste <strong>en</strong> refer<strong>en</strong>ciar<br />

los fragm<strong>en</strong>tos capturados, sus transformaciones,<br />

activos restringidos, etcétera. Los m<strong>en</strong>sajes P-ag<strong>en</strong>te<br />

permit<strong>en</strong> DM-ag<strong>en</strong>tes, por ejemplo, para organizar una<br />

efectiva búsqueda <strong>de</strong> partes constitutivas <strong>de</strong> un fragm<strong>en</strong>to<br />

diseñado con propieda<strong>de</strong>s compatibles.


4. Integridad y consist<strong>en</strong>cia <strong>de</strong> datos <strong>en</strong> los accesos<br />

Las reg<strong>la</strong>s <strong>de</strong> configuración para <strong>la</strong>s acciones específicas<br />

<strong>de</strong> actualización, como crear, borrar, insertar y modificar,<br />

<strong>de</strong>b<strong>en</strong> satisfacer <strong>la</strong>s reg<strong>la</strong>s <strong>de</strong> integridad y<br />

consist<strong>en</strong>cia <strong>de</strong> los datos. En este caso so<strong>la</strong>m<strong>en</strong>te un<br />

mo<strong>de</strong>lo DC-objeto pue<strong>de</strong> cont<strong>en</strong>er todos los mecanismos<br />

necesarios para coordinar una actualización concurr<strong>en</strong>te.<br />

Esta v<strong>en</strong>taja es motivada por el módulo <strong>de</strong> <strong>la</strong><br />

filosofía <strong>de</strong> <strong>la</strong> ing<strong>en</strong>iería concurr<strong>en</strong>te don<strong>de</strong> ambos, el<br />

objeto <strong>de</strong>sarrol<strong>la</strong>do y los aspectos <strong>de</strong> administración <strong>de</strong><br />

<strong>la</strong> ing<strong>en</strong>iería concurr<strong>en</strong>te, son integrados. La i<strong>de</strong>a básica<br />

<strong>de</strong> proponer esta v<strong>en</strong>taja es increm<strong>en</strong>tar <strong>la</strong>s posibilida<strong>de</strong>s<br />

<strong>de</strong> expresión <strong>de</strong> una base <strong>de</strong> datos para <strong>la</strong><br />

repres<strong>en</strong>tación semántica <strong>de</strong> sus re<strong>la</strong>ciones <strong>en</strong>tre <strong>la</strong>s<br />

partes <strong>de</strong> una <strong>en</strong>tidad; por ejemplo <strong>la</strong> repres<strong>en</strong>tación<br />

<strong>de</strong> <strong>la</strong>s compatibilida<strong>de</strong>s semánticas <strong>de</strong> un mo<strong>de</strong>lo <strong>de</strong><br />

objeto para el soporte <strong>de</strong> un objeto agregado. Estas posibilida<strong>de</strong>s<br />

se conservan, lo cual significa <strong>la</strong> inclusión<br />

<strong>de</strong>l conocimi<strong>en</strong>to al mo<strong>de</strong>lo <strong>de</strong> objeto que <strong>de</strong>scribe <strong>la</strong><br />

compatibilidad restringida <strong>en</strong>tre sus compon<strong>en</strong>tes.<br />

Una base <strong>de</strong> datos y una base <strong>de</strong> conocimi<strong>en</strong>tos mo<strong>de</strong>lo<br />

pareja (DB & KB) se consi<strong>de</strong>ra como una integración<br />

<strong>de</strong> un objeto mo<strong>de</strong>lo <strong>de</strong> datos y <strong>la</strong> repres<strong>en</strong>tación<br />

<strong>de</strong> su conocimi<strong>en</strong>to con el mecanismo <strong>de</strong> coordinación<br />

que usa una semántica específica para sus re<strong>la</strong>ciones<br />

con cada DC-objeto y sus variantes. Esto se <strong>de</strong>sarrolló<br />

para organizar los datos y el almac<strong>en</strong>ami<strong>en</strong>to <strong>de</strong>l conocimi<strong>en</strong>to,<br />

así como <strong>la</strong> actualización concurr<strong>en</strong>te <strong>en</strong> <strong>la</strong><br />

búsqueda <strong>de</strong> <strong>de</strong>cisiones efici<strong>en</strong>tes y factibles <strong>basada</strong>s<br />

<strong>en</strong> mecanismos coordinados.<br />

Para soportar el mo<strong>de</strong>lo <strong>de</strong> consist<strong>en</strong>cia <strong>de</strong> DC-<strong>objetos</strong><br />

introdujimos los conceptos <strong>de</strong> propiedad <strong>de</strong> integridad y<br />

<strong>la</strong> cobertura <strong>de</strong> consist<strong>en</strong>cia <strong>de</strong> datos <strong>de</strong> los DC-<strong>objetos</strong><br />

mediante <strong>la</strong> semántica <strong>de</strong> datos. La propiedad <strong>de</strong> integridad<br />

incluye <strong>la</strong> <strong>de</strong>manda <strong>de</strong> compatibilidad <strong>de</strong> propiedad<br />

para partes pert<strong>en</strong>eci<strong>en</strong>tes a una simple estructura id<strong>en</strong>tidad.<br />

Esta nueva cualidad es usada para analizar <strong>la</strong> factibilidad<br />

<strong>de</strong> los DM-ag<strong>en</strong>tes <strong>de</strong> <strong>de</strong>cisión y su agregación al<br />

mo<strong>de</strong>lo <strong>de</strong> DC-<strong>objetos</strong>.<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

Una <strong>de</strong> <strong>la</strong>s i<strong>de</strong>as para <strong>la</strong> <strong>de</strong>ducción clásica <strong>de</strong> consist<strong>en</strong>cia<br />

<strong>en</strong> <strong>la</strong>s bases <strong>de</strong> datos es <strong>la</strong> noción <strong>de</strong> un mo<strong>de</strong>lo <strong>de</strong> mundo<br />

cerrado. Una base <strong>de</strong> datos es consist<strong>en</strong>te si es un mo<strong>de</strong>lo<br />

verda<strong>de</strong>ro <strong>de</strong> un mundo dado. Por "verda<strong>de</strong>ro" se <strong>en</strong>ti<strong>en</strong><strong>de</strong><br />

<strong>la</strong> aus<strong>en</strong>cia <strong>de</strong> hechos contradictorios exist<strong>en</strong>tes <strong>en</strong> el mundo<br />

(DB), tanto como los obt<strong>en</strong>idos <strong>de</strong> <strong>la</strong>s aplicaciones <strong>de</strong><br />

<strong>la</strong>s leyes <strong>de</strong>l dominio <strong>de</strong>l problema. Estas leyes son el significado<br />

para <strong>la</strong> captura <strong>de</strong> un rico mundo <strong>de</strong> semánticas.<br />

En el mundo real cada objeto ti<strong>en</strong>e una única cualidad, un<br />

único proceso para tomar <strong>de</strong>cisiones, reg<strong>la</strong>s <strong>de</strong> ing<strong>en</strong>iería,<br />

constreñimi<strong>en</strong>to y requerimi<strong>en</strong>tos. Esto significa que cada<br />

DC-objeto es el resultado <strong>de</strong> un proceso co<strong>la</strong>borativo basado<br />

<strong>en</strong> hechos únicos, conocimi<strong>en</strong>to, toma <strong>de</strong> <strong>de</strong>cisiones<br />

y reg<strong>la</strong>s <strong>de</strong> diseño. Para satisfacer <strong>la</strong> <strong>de</strong>manda <strong>de</strong><br />

nociones <strong>de</strong> <strong>la</strong> cobertura <strong>de</strong> consist<strong>en</strong>cia para DB & KB,<br />

se introduce <strong>la</strong> consist<strong>en</strong>cia d<strong>en</strong>tro <strong>de</strong> un mini-mundo <strong>de</strong><br />

cada DC-objeto.<br />

Todos los <strong>objetos</strong> son incluidos <strong>en</strong> un objeto por refer<strong>en</strong>cia<br />

<strong>de</strong> <strong>la</strong> persist<strong>en</strong>cia <strong>de</strong> <strong>objetos</strong>. Los mo<strong>de</strong>los DB & KB propuestos<br />

no son una unión disjunta <strong>de</strong> mini-mundos <strong>de</strong> todos<br />

los proyectos. Los mini-mundos <strong>de</strong> dos DC-<strong>objetos</strong><br />

pued<strong>en</strong> ser interceptados si uno <strong>de</strong> los DC-<strong>objetos</strong> usa<br />

alguna parte <strong>de</strong> otro DC-objeto como un fragm<strong>en</strong>to. Entonces<br />

el segundo DC-objeto acepta todos los datos y conocimi<strong>en</strong>tos<br />

<strong>de</strong>l primer mini-mundo <strong>en</strong> <strong>la</strong> forma <strong>de</strong> un<br />

mo<strong>de</strong>lo fragm<strong>en</strong>tado. Ambos, el primero y el segundo DCobjeto,<br />

<strong>de</strong>b<strong>en</strong> ser consist<strong>en</strong>tes con respecto a los hechos<br />

re<strong>la</strong>tivos y al conocimi<strong>en</strong>to <strong>de</strong> los fragm<strong>en</strong>tos compartidos.<br />

4.1 Fragm<strong>en</strong>tación<br />

Un fragm<strong>en</strong>to es una parte <strong>de</strong> un objeto que se interpreta<br />

como un objeto u <strong>objetos</strong> interre<strong>la</strong>cionados con restricciones<br />

<strong>en</strong>tre ellos. Los fragm<strong>en</strong>tos son unida<strong>de</strong>s <strong>de</strong> toma <strong>de</strong><br />

<strong>de</strong>cisión y distribución. Cada DM-ag<strong>en</strong>te pue<strong>de</strong> ser refer<strong>en</strong>ciado<br />

como una toma <strong>de</strong> <strong>de</strong>cisión <strong>de</strong> un fragm<strong>en</strong>to cualquiera<br />

<strong>en</strong> un nivel conceptual como <strong>de</strong>finición <strong>de</strong> este<br />

mo<strong>de</strong>lo, o <strong>en</strong> un nivel paramétrico como <strong>de</strong>finición <strong>de</strong><br />

propiedad. El diseño conceptual, como un paso <strong>de</strong> <strong>la</strong> tarea<br />

<strong>de</strong> configuración, se exporta por <strong>la</strong> <strong>de</strong>finición <strong>de</strong> este mo-<br />

TEMAS 7


E n s a y o s<br />

<strong>de</strong>lo <strong>en</strong> forma <strong>de</strong> una c<strong>la</strong>se <strong>de</strong> objeto usando un mecanismo<br />

<strong>de</strong> agregación. Las operaciones <strong>en</strong> este nivel pued<strong>en</strong><br />

g<strong>en</strong>erar nuevas c<strong>la</strong>ses, agregando subc<strong>la</strong>ses y <strong>de</strong>fini<strong>en</strong>do<br />

una restricción <strong>en</strong>tre el<strong>la</strong>s. La propiedad <strong>de</strong>l fragm<strong>en</strong>to diseñado<br />

es <strong>de</strong>finida <strong>en</strong> el nivel paramétrico <strong>de</strong> ing<strong>en</strong>iería<br />

<strong>de</strong> acuerdo con <strong>la</strong> restricción exist<strong>en</strong>te.<br />

El estado actual <strong>de</strong>l fragm<strong>en</strong>to y sus transiciones a otro<br />

estado se dan por una lista <strong>de</strong> reg<strong>la</strong>s con condiciones.<br />

La principal dificultad se pres<strong>en</strong>ta por <strong>la</strong> necesidad <strong>de</strong><br />

incluir una nueva aplicación con acciones <strong>de</strong> <strong>la</strong>rga duración.<br />

Para aplicaciones ordinarias complejas <strong>la</strong>s acciones<br />

DB se un<strong>en</strong> a un acceso atómico <strong>de</strong> transacciones para<br />

actualizar los fragm<strong>en</strong>tos capturados. La concurr<strong>en</strong>cia<br />

<strong>de</strong> transacciones <strong>de</strong> <strong>la</strong>rga duración no pued<strong>en</strong> ser ejecutadas<br />

secu<strong>en</strong>cialm<strong>en</strong>te. En el ord<strong>en</strong> <strong>de</strong> realizar una<br />

ejecución bi<strong>en</strong> <strong>de</strong>finida <strong>de</strong> estas acciones, se <strong>de</strong>sarrol<strong>la</strong><br />

el criterio <strong>de</strong> m<strong>en</strong>or número <strong>de</strong> correcciones <strong>basada</strong><br />

<strong>en</strong> el grafo <strong>de</strong> transformación paralelo (GT). Este criterio<br />

garantiza que una ejecución <strong>distribuida</strong> <strong>de</strong> una lista <strong>de</strong><br />

acciones <strong>de</strong> DM-ag<strong>en</strong>tes sea equival<strong>en</strong>te a alguna ejecución<br />

<strong>de</strong> un compon<strong>en</strong>te (amalgamado) GT, el cual<br />

es resultado especial <strong>de</strong> un P-ag<strong>en</strong>te para todas <strong>la</strong>s<br />

actualizaciones aplicadas a <strong>la</strong> parte <strong>de</strong>l DC-objeto concurr<strong>en</strong>te.<br />

5. Mo<strong>de</strong>los <strong>de</strong> grafos <strong>de</strong> transformación<br />

5.1 V<strong>en</strong>taja sobresali<strong>en</strong>te<br />

La teoría <strong>de</strong> transformación <strong>de</strong> grafos provee un paradigma<br />

uniforme y un formalismo flexible para <strong>la</strong> especificación,<br />

<strong>la</strong> implem<strong>en</strong>tación y el análisis secu<strong>en</strong>cial <strong>de</strong> sistemas<br />

distribuidos y concurr<strong>en</strong>tes. Las técnicas <strong>basada</strong>s <strong>en</strong> grafos<br />

se aplican exitosam<strong>en</strong>te <strong>en</strong> el <strong>de</strong>sarrollo <strong>de</strong> DCS, repres<strong>en</strong>tando<br />

un DC-objeto como una estructura jerárquica<br />

<strong>de</strong> grafos atribuidos para el mo<strong>de</strong>lo comunitario <strong>de</strong> <strong>objetos</strong><br />

<strong>de</strong> multi-nivel.<br />

La v<strong>en</strong>taja <strong>de</strong> GT se usa para el mo<strong>de</strong>lo concurr<strong>en</strong>te y<br />

distribuido <strong>de</strong> acciones <strong>de</strong>l DM-ag<strong>en</strong>te y a <strong>la</strong> vez coordina<br />

<strong>la</strong> acción <strong>en</strong>tre ellos. Un sistema GT es una colección<br />

8 TEMAS<br />

<strong>de</strong> reg<strong>la</strong>s GT <strong>basada</strong>s <strong>en</strong> <strong>la</strong> l<strong>la</strong>mada v<strong>en</strong>taja única <strong>de</strong><br />

pushout, don<strong>de</strong> pushout correspon<strong>de</strong> a un término <strong>de</strong><br />

unificación. Un paso <strong>en</strong> GT se <strong>de</strong>fine <strong>en</strong> términos <strong>de</strong><br />

producción y <strong>de</strong>rivación <strong>de</strong> grafos. Una producción GT<br />

se pres<strong>en</strong>ta mediante morfismos y aplicaciones <strong>de</strong><br />

producción <strong>en</strong> subgrafos, los cuales son grafos que se<br />

<strong>de</strong>scrib<strong>en</strong> <strong>en</strong> el diagrama conmutativo l<strong>la</strong>mado pushout<br />

(PO). Se usa <strong>la</strong> v<strong>en</strong>taja algebraica <strong>de</strong> <strong>la</strong> repres<strong>en</strong>tación<br />

GT <strong>en</strong> <strong>la</strong> categoría <strong>de</strong> atributos <strong>de</strong> grafos y por lo mismo<br />

se crea su in<strong>de</strong>p<strong>en</strong>d<strong>en</strong>cia, lo cual permite aplicar el<br />

paralelismo, <strong>la</strong> concurr<strong>en</strong>cia y <strong>la</strong> unificación. De esta<br />

manera <strong>la</strong> actualización concurr<strong>en</strong>te <strong>de</strong> los estados DCobjeto<br />

se mo<strong>de</strong><strong>la</strong>n por <strong>la</strong> noción <strong>de</strong>l grafo <strong>de</strong> unificación<br />

para <strong>la</strong> <strong>computación</strong> concurr<strong>en</strong>te.<br />

El GT correspon<strong>de</strong> a una operación sobre el estado <strong>de</strong><br />

un DC-objeto repres<strong>en</strong>tado por un atributo global <strong>de</strong>l<br />

grafo. Un DC-objeto se mo<strong>de</strong><strong>la</strong> por una segm<strong>en</strong>tación<br />

<strong>de</strong>l estado <strong>de</strong> un grafo <strong>en</strong> un conjunto <strong>de</strong> localida<strong>de</strong>s<br />

con una interface <strong>de</strong> grafos global (IGs). Los segm<strong>en</strong>tos<br />

<strong>de</strong> un grafo DC-objeto y los grafos locales con sus<br />

IGs globales, se <strong>de</strong>scrib<strong>en</strong> <strong>en</strong> <strong>la</strong> figura 1. La concurr<strong>en</strong>cia<br />

directa GT <strong>de</strong> dos actualizaciones simultáneas DCobjeto<br />

son in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>tes <strong>en</strong> forma asíncrona, o unificados<br />

<strong>de</strong> manera síncrona.<br />

DB&KB<br />

β<br />

IG<br />

fragm<strong>en</strong>to α<br />

Figura 1. Segm<strong>en</strong>tos <strong>de</strong> un grafo DC-objeto<br />

DB&KB<br />

χ<br />

δ


Cada P-ag<strong>en</strong>te manti<strong>en</strong>e un grafo local, GT es local si pue<strong>de</strong><br />

ser ejecutado por un P-ag<strong>en</strong>te y es global si <strong>en</strong> su implem<strong>en</strong>tación<br />

se usan dos o más P-ag<strong>en</strong>tes. Un P-ag<strong>en</strong>te<br />

pue<strong>de</strong> coordinar actualizaciones <strong>de</strong> DM-ag<strong>en</strong>tes locales<br />

paralelos y proveer una co<strong>la</strong>boración global concurr<strong>en</strong>te<br />

<strong>de</strong> GTs, así <strong>la</strong>s partes <strong>distribuida</strong>s integran un mo<strong>de</strong>lo <strong>de</strong><br />

<strong>objetos</strong> consist<strong>en</strong>te, los cuales se un<strong>en</strong> a grafos locales<br />

distribuidos a lo <strong>la</strong>rgo <strong>de</strong> sus IGs. De esta forma todos los<br />

pasos distribuidos para un objeto son sincronizados y distribuidos.<br />

Los GT globales se consi<strong>de</strong>ran como el inicio <strong>de</strong><br />

una secu<strong>en</strong>cia compuesta <strong>de</strong> segm<strong>en</strong>tos, uniones y pasos<br />

<strong>de</strong> distribución.<br />

Un GT pue<strong>de</strong> repres<strong>en</strong>tarse formalm<strong>en</strong>te <strong>de</strong> <strong>la</strong> sigui<strong>en</strong>te<br />

manera: r correspon<strong>de</strong> a <strong>la</strong>s reg<strong>la</strong>s <strong>de</strong> un GT y su repres<strong>en</strong>tación<br />

es r=L® R, don<strong>de</strong> L y R son grafos y el patrón es<br />

incluido <strong>en</strong> <strong>la</strong> <strong>en</strong>trada dada por el grafo G: m=L® G. Aquí<br />

L es sustituida por <strong>la</strong> segm<strong>en</strong>tación R <strong>en</strong> G, creando un<br />

nuevo grafo H. G<strong>en</strong>eralm<strong>en</strong>te a través <strong>de</strong> <strong>la</strong>s reg<strong>la</strong>s r se<br />

forma un GT <strong>de</strong> un grafo G por <strong>la</strong> eliminación <strong>de</strong> algunas<br />

partes <strong>de</strong> Del <strong>de</strong> G y <strong>de</strong>fine algunas partes <strong>de</strong> Kg <strong>en</strong> el<br />

contexto <strong>de</strong> Del. De inmediato se agrega una nueva parte<br />

<strong>de</strong> Add con un nuevo contexto <strong>de</strong> K , resultando un grafo<br />

h<br />

<strong>de</strong>rivado H, don<strong>de</strong> K es construido <strong>de</strong>s<strong>de</strong> Kg y los nodos y<br />

h<br />

arcos <strong>de</strong>l contexto están estrecham<strong>en</strong>te unidos.<br />

El principio <strong>de</strong> <strong>la</strong> construcción <strong>de</strong> <strong>la</strong>s fórmu<strong>la</strong>s <strong>de</strong> unión<br />

para <strong>de</strong>rivaciones concurr<strong>en</strong>tes <strong>en</strong> grafos se da <strong>en</strong> EH, por<br />

lo tanto nuestras investigaciones se <strong>en</strong>focan al <strong>de</strong>sarrollo<br />

<strong>de</strong> estos métodos formales para GTs condicionales, basados<br />

<strong>en</strong> el análisis <strong>de</strong> <strong>la</strong> consist<strong>en</strong>cia.<br />

5.2 Transformación <strong>de</strong> atributos <strong>de</strong> grafos<br />

Las especificaciones GT consist<strong>en</strong> <strong>en</strong> <strong>objetos</strong> y refer<strong>en</strong>cias<br />

<strong>en</strong>tre el<strong>la</strong>s, repres<strong>en</strong>tando condiciones <strong>de</strong> compatibilidad,<br />

por lo cual nosotros usamos una lista ord<strong>en</strong>ada<br />

para <strong>la</strong> evaluación <strong>de</strong> atributos <strong>de</strong> <strong>objetos</strong>. Las reg<strong>la</strong>s GT<br />

<strong>de</strong>scritas por los morfismos y el álgebra se usan como un<br />

dominio semántico <strong>de</strong> <strong>la</strong>s especificaciones <strong>de</strong> los datos<br />

<strong>de</strong> un grafo, el cual va equipado con el compon<strong>en</strong>te<br />

tipo <strong>de</strong> datos, como atributo <strong>de</strong> un grafo codificado grá-<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

ficam<strong>en</strong>te <strong>en</strong> estructuras con propieda<strong>de</strong>s <strong>de</strong> <strong>objetos</strong>.<br />

Los atributos <strong>de</strong> los grafos se usan <strong>en</strong> el mo<strong>de</strong>lo <strong>de</strong> evaluación<br />

<strong>de</strong> datos <strong>de</strong> un objeto como combinaciones algebraicas<br />

<strong>de</strong> una estructura gráfica y otra <strong>de</strong>l tipo<br />

compon<strong>en</strong>te <strong>de</strong> datos. Las transformaciones directas se<br />

forman <strong>en</strong> un paso para <strong>la</strong>s transformaciones <strong>de</strong> estructura<br />

<strong>de</strong> grafo y compon<strong>en</strong>te <strong>de</strong> datos, y re<strong>la</strong>ciona sus<br />

pasos don<strong>de</strong> los atributos se compon<strong>en</strong> con condiciones<br />

<strong>de</strong> consist<strong>en</strong>cia adicional. Las composiciones <strong>de</strong> transformación<br />

se integran con <strong>la</strong> composición doble <strong>de</strong> grafos<br />

y <strong>la</strong> transformación <strong>de</strong> datos.<br />

Los tipos <strong>de</strong> datos se <strong>de</strong>fin<strong>en</strong> algebraicam<strong>en</strong>te. La sig<strong>la</strong> para<br />

el atributo <strong>de</strong> un grafo <strong>de</strong>be ser <strong>la</strong> misma <strong>en</strong> <strong>la</strong> estructura<br />

gráfica (l<strong>la</strong>mada estructura G). La sig<strong>la</strong> para el tipo <strong>de</strong> datos<br />

es DT-set, y los atributos a los cuales se les asignan valores<br />

<strong>de</strong> datos <strong>de</strong> objeto a <strong>objetos</strong> se repres<strong>en</strong>tan como arcos <strong>de</strong><br />

una forma especial.<br />

Una estructura G es un mo<strong>de</strong>lo parcial algebraico <strong>en</strong> don<strong>de</strong><br />

se permit<strong>en</strong> todos los tipos <strong>de</strong> operación. Las reg<strong>la</strong>s GT<br />

son morfismos parciales y satisfac<strong>en</strong> difer<strong>en</strong>tes condiciones.<br />

Las reg<strong>la</strong>s <strong>de</strong> <strong>la</strong> estructura G son inyectivas para una<br />

lista <strong>de</strong> transformaciones D, y son isomórficas para toda <strong>la</strong><br />

organización <strong>de</strong> datos A. Sintácticam<strong>en</strong>te, con el álgebra<br />

se pued<strong>en</strong> repres<strong>en</strong>tar variables con base <strong>en</strong> sig<strong>la</strong>s que<br />

cont<strong>en</strong>gan sólo datos organizados y operaciones <strong>de</strong> datos<br />

para los tipos <strong>de</strong> datos seleccionados.<br />

Los fragm<strong>en</strong>tos <strong>de</strong> <strong>objetos</strong> son <strong>en</strong>tida<strong>de</strong>s persist<strong>en</strong>tes que<br />

sobreviv<strong>en</strong> a métodos <strong>de</strong> ejecución. Las configuraciones<br />

<strong>de</strong> los <strong>objetos</strong> se mo<strong>de</strong><strong>la</strong>n por varias selecciones algebraicas<br />

y cada configuración repres<strong>en</strong>ta una comunidad estructurada<br />

<strong>de</strong> <strong>objetos</strong>, <strong>la</strong> cual refleja <strong>la</strong> arquitectura <strong>de</strong><br />

interconexiones <strong>de</strong> los compon<strong>en</strong>tes.<br />

5.3 Condiciones <strong>de</strong> aplicación <strong>de</strong>l GT<br />

La consist<strong>en</strong>cia <strong>de</strong> un sistema GT se basa <strong>en</strong> el uso <strong>de</strong>l<br />

teorema <strong>de</strong>l paralelismo para <strong>la</strong> <strong>de</strong>rivación <strong>de</strong> grafos con<br />

condiciones <strong>de</strong> aplicación contextual (CACs) con restricciones<br />

<strong>de</strong> consist<strong>en</strong>cia. La aplicabilidad <strong>de</strong> <strong>la</strong>s reg<strong>la</strong>s GT<br />

TEMAS 9


E n s a y o s<br />

se contro<strong>la</strong> directam<strong>en</strong>te por CACs <strong>en</strong> un nivel semántico<br />

y se repres<strong>en</strong>ta como subgrafos g<strong>en</strong>eralizados vincu<strong>la</strong>dos.<br />

Para <strong>la</strong> interconexión <strong>de</strong> los grafos exist<strong>en</strong> reg<strong>la</strong>s<br />

específicas hacia <strong>la</strong> <strong>de</strong>recha o izquierda y se verifican <strong>en</strong><br />

el tiempo <strong>de</strong> ejecución; antes <strong>de</strong> que CACs aplique <strong>la</strong><br />

reg<strong>la</strong>, pue<strong>de</strong> expresar un contexto <strong>de</strong> condiciones positivas<br />

o negativas, así como <strong>la</strong>s combinaciones <strong>en</strong>tre el<strong>la</strong>s,<br />

que consist<strong>en</strong> <strong>en</strong> conclusiones <strong>de</strong> premisas disyuntivas.<br />

CACs pue<strong>de</strong>, por ejemplo, <strong>de</strong>scribir <strong>de</strong> manera única y<br />

afirmativa los elem<strong>en</strong>tos <strong>en</strong> un grafo, sus tipos, propieda<strong>de</strong>s<br />

o ciertas restricciones concerni<strong>en</strong>tes a <strong>la</strong>s sig<strong>la</strong>s <strong>de</strong> <strong>la</strong><br />

lista <strong>de</strong>l mo<strong>de</strong>lo DT. Para satisfacer <strong>la</strong>s condiciones <strong>de</strong><br />

aplicación se requiere <strong>la</strong> consist<strong>en</strong>cia <strong>de</strong> <strong>la</strong>s especificaciones<br />

GT y <strong>la</strong> consist<strong>en</strong>cia <strong>de</strong> un mo<strong>de</strong>lo <strong>de</strong> <strong>objetos</strong> <strong>de</strong><br />

datos que se codifican d<strong>en</strong>tro <strong>de</strong> los atributos <strong>de</strong> un grafo<br />

usando id<strong>en</strong>tificadores adicionales expresados <strong>en</strong> fórmu<strong>la</strong>s<br />

lógicas. CACs pue<strong>de</strong> caracterizarse por medio <strong>de</strong> ecuaciones,<br />

o no, para <strong>la</strong> repres<strong>en</strong>tación <strong>de</strong> intervalos<br />

restringidos. Nosotros usamos estas condiciones para <strong>la</strong>s<br />

especificaciones <strong>de</strong> consist<strong>en</strong>cia y apoyar <strong>la</strong>s propieda<strong>de</strong>s<br />

<strong>de</strong> integridad <strong>en</strong> el mo<strong>de</strong>lo <strong>de</strong> <strong>objetos</strong> distribuidos.<br />

Las condiciones conceptuales <strong>de</strong> <strong>la</strong> aplicación compart<strong>en</strong><br />

toda una estructura don<strong>de</strong> <strong>la</strong>s restricciones son totalm<strong>en</strong>te<br />

morfismos L® L´ y se satisface por <strong>la</strong> pareja L® G. Esta<br />

v<strong>en</strong>taja se <strong>de</strong>fine como y bajo <strong>la</strong>s reg<strong>la</strong>s GT, pued<strong>en</strong> ser<br />

aplicadas con CACs, que provee niveles intermedios para<br />

expresar <strong>la</strong> pot<strong>en</strong>cia <strong>en</strong>tre <strong>la</strong> gramática libre <strong>de</strong> contexto y<br />

los grafos <strong>de</strong> gramática s<strong>en</strong>sitiva <strong>de</strong> contexto.<br />

Una solución <strong>en</strong> el intervalo CSP es <strong>la</strong> asignación <strong>de</strong> valores<br />

para cada fragm<strong>en</strong>to. Cada dominio pue<strong>de</strong> ser multi-evaluado<br />

<strong>de</strong>s<strong>de</strong> cada atributo y caracterizado por una lista <strong>de</strong> intervalos<br />

<strong>de</strong> atributos. El sistema GT con CACs es consist<strong>en</strong>te si<br />

el grafo inicial satisface <strong>la</strong>s condiciones <strong>de</strong> consist<strong>en</strong>cia y <strong>la</strong>s<br />

reg<strong>la</strong>s <strong>de</strong> preservación <strong>de</strong> esta propiedad.<br />

6. Coordinación<br />

La coordinación <strong>en</strong>tre dos DM-ag<strong>en</strong>tes se expresa por <strong>la</strong><br />

sincronización <strong>de</strong> sus P-ag<strong>en</strong>te(s) que permitan <strong>la</strong> transfer<strong>en</strong>cia<br />

<strong>de</strong> fragm<strong>en</strong>tos capturados a procesar sobre el<br />

10 TEMAS<br />

P-ag<strong>en</strong>te(s). La coordinación <strong>en</strong> DCS permite <strong>la</strong> resolución<br />

<strong>de</strong> intereses conflictivos (recursos) y <strong>la</strong> interoperación <strong>de</strong><br />

DM-ag<strong>en</strong>tes. El DCS distribuido se construye <strong>en</strong> el nivel<br />

superior <strong>de</strong> un mecanismo <strong>de</strong> comunicación, para efectuar<br />

el trabajo cooperativo por interoperación a través <strong>de</strong> <strong>la</strong><br />

red, vincu<strong>la</strong>do a <strong>la</strong> ing<strong>en</strong>iería para lograr tanto <strong>la</strong>s metas<br />

individuales como <strong>la</strong>s comunes.<br />

6.1 Estructura dinámica virtual<br />

Para resolver un problema <strong>de</strong> coordinación <strong>de</strong> GT <strong>en</strong> forma<br />

local, cada P-ag<strong>en</strong>te <strong>de</strong>sarrol<strong>la</strong> una estructura dinámica<br />

virtual (VDF) <strong>de</strong> <strong>la</strong> parte <strong>de</strong>l objeto que apoya, para<br />

g<strong>en</strong>erar el espacio <strong>de</strong>l arco <strong>de</strong> consist<strong>en</strong>cia. Un VDF es<br />

un grafo específico con nodos como DM-ag<strong>en</strong>tes y arcos<br />

como restricciones externas para los fragm<strong>en</strong>tos capturados<br />

por ellos. Los arcos <strong>en</strong>tre dos nodos son IG locales <strong>de</strong><br />

DM-ag<strong>en</strong>tes y se usan para coordinar sus acciones. Un Pag<strong>en</strong>te<br />

id<strong>en</strong>tifica cómo un nuevo DM-ag<strong>en</strong>te pue<strong>de</strong> incluirse<br />

<strong>en</strong> un VDF y cómo incluir <strong>la</strong>s actualizaciones <strong>de</strong>l<br />

DM-ag<strong>en</strong>te al objeto. Un VDF es lo más a<strong>de</strong>cuado para<br />

repres<strong>en</strong>tar diseños individualm<strong>en</strong>te y permitir todas <strong>la</strong>s<br />

restricciones activas para que se consi<strong>de</strong>r<strong>en</strong> simultáneam<strong>en</strong>te<br />

por parte <strong>de</strong>l DC-objeto.<br />

Un P-ag<strong>en</strong>te posee información completa sobre <strong>la</strong>s limitaciones,<br />

variables y dominios <strong>de</strong> valores para <strong>en</strong>contrar estados<br />

consist<strong>en</strong>tes <strong>de</strong> VDF; a<strong>de</strong>más utiliza los conceptos<br />

<strong>de</strong> consist<strong>en</strong>cia <strong>en</strong> los nodos y arcos para <strong>de</strong>terminar y<br />

apoyar <strong>la</strong> integridad y consist<strong>en</strong>cia <strong>de</strong> datos para <strong>la</strong>s <strong>de</strong>cisiones<br />

<strong>de</strong>l DM-ag<strong>en</strong>te, capturando todas <strong>la</strong>s posibles interacciones<br />

<strong>en</strong>tre el DM-ag<strong>en</strong>te y sus acciones coordinadas,<br />

traduci<strong>en</strong>do los requerimi<strong>en</strong>tos <strong>de</strong>l objeto <strong>en</strong> <strong>la</strong>s especificaciones<br />

<strong>de</strong> restricciones, y los <strong>en</strong>vía a todos los DM-ag<strong>en</strong>tes<br />

pertin<strong>en</strong>tes. El P-ag<strong>en</strong>te usa un mecanismo cronológico<br />

<strong>de</strong> búsqueda para seleccionar otro conjunto <strong>de</strong> DM-ag<strong>en</strong>te<br />

propuesto, si se alcanza un ciclo final.<br />

6.2 Amalgamación<br />

El sistema GT especifica <strong>la</strong>s acciones con difer<strong>en</strong>tes estrategias<br />

y permite implem<strong>en</strong>tar ejecuciones <strong>distribuida</strong>s


<strong>de</strong> operaciones sobre el DC-objeto, así provee <strong>la</strong> semántica<br />

operacional a través <strong>de</strong> GTs. El mecanismo <strong>de</strong> sincronización<br />

se repres<strong>en</strong>ta como una amalgamación <strong>de</strong> grafos<br />

con reg<strong>la</strong>s <strong>de</strong> GT y se emplea con el fin <strong>de</strong> <strong>de</strong>finir <strong>la</strong> semántica<br />

operacional para un sistema GT. La técnica <strong>de</strong> amalgamación<br />

se usa para <strong>de</strong>scribir el efecto <strong>de</strong> interconexión<br />

que provee un mecanismo <strong>de</strong>l control <strong>de</strong> proceso GT.<br />

Los GTs se ejecutan concurr<strong>en</strong>te e in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>tem<strong>en</strong>te<br />

uno <strong>de</strong>l otro y por su tipo <strong>de</strong> interacción se distingu<strong>en</strong> si<br />

son síncrono o asíncrono. Dos GTs pued<strong>en</strong> sincronizarse<br />

mediante operaciones GT, utilizando IG comunes, cambiando<br />

éstos durante el proceso <strong>de</strong> <strong>la</strong>s operaciones. En<br />

este trabajo un GT síncrono se consi<strong>de</strong>ra como un caso<br />

especial d<strong>en</strong>tro <strong>de</strong> los asíncronos.<br />

6.3 Envío <strong>de</strong> m<strong>en</strong>sajes e IG compartidos<br />

Una <strong>de</strong> <strong>la</strong>s características principales <strong>de</strong> los sistemas distribuidos<br />

es <strong>la</strong> naturaleza local <strong>de</strong>l cómputo. Un conjunto <strong>de</strong><br />

DM-ag<strong>en</strong>tes, conectados <strong>en</strong> alguna forma específica, trata<br />

<strong>de</strong> alcanzar una meta común. Las propieda<strong>de</strong>s globales <strong>de</strong>l<br />

objeto pued<strong>en</strong> ser computadas con el significado <strong>de</strong> GR<br />

local, o global, sobre DC-<strong>objetos</strong>. La arquitectura compartida<br />

<strong>de</strong> DC-<strong>objetos</strong> es una estructura <strong>de</strong> red dinámica que<br />

integra sus compon<strong>en</strong>tes <strong>en</strong> DCS con recursos comunes,<br />

increm<strong>en</strong>tando su rehuso, modu<strong>la</strong>ridad y portabilidad <strong>de</strong><br />

sus compon<strong>en</strong>tes.<br />

Si uno <strong>de</strong> los DM-ag<strong>en</strong>tes cambia al IG compartido, el otro<br />

ti<strong>en</strong>e conocimi<strong>en</strong>to <strong>de</strong>l cambio. Esto ocurrirá in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>tem<strong>en</strong>te<br />

<strong>de</strong> que <strong>la</strong>s partes sean <strong>distribuida</strong>s, o no; este<br />

mecanismo se usa para <strong>la</strong> actualización <strong>de</strong> <strong>la</strong> coordinación.<br />

La sincronización se conforma cuando todos los procesos<br />

compartidos IG ti<strong>en</strong><strong>en</strong> que esperar ser coordinados por sus<br />

acciones.<br />

El DCS conti<strong>en</strong>e dos mecanismos para <strong>la</strong> coordinación basados<br />

<strong>en</strong> partes <strong>de</strong>l IG-compartido.<br />

La coordinación <strong>de</strong> procesos paralelos se produce cuando<br />

dos DM-ag<strong>en</strong>tes capturan fragm<strong>en</strong>tos apoyados por<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

un P-ag<strong>en</strong>te (caso no distribuido). Esta situación se resuelve<br />

por un P-ag<strong>en</strong>te que usa un IG local compartido<br />

para dos nodos <strong>de</strong> VDF apropiados para estos ag<strong>en</strong>tes. La<br />

sincronización se <strong>de</strong>sempeñaría <strong>en</strong>tonces <strong>en</strong> todos los<br />

procesos <strong>de</strong> los IGs compartidos t<strong>en</strong>i<strong>en</strong>do que esperar <strong>la</strong><br />

coordinación <strong>de</strong> sus acciones.<br />

La coordinación <strong>de</strong> procesos concurr<strong>en</strong>tes se da cuando el<br />

DM-ag<strong>en</strong>te captura el fragm<strong>en</strong>to apoyado por dos o más<br />

P-ag<strong>en</strong>tes. Una coordinación <strong>de</strong> acciones <strong>distribuida</strong>s usa el<br />

mo<strong>de</strong>lo <strong>de</strong> paso <strong>de</strong> m<strong>en</strong>sajes <strong>en</strong>tre P-ag<strong>en</strong>tes para <strong>la</strong> comunicación<br />

<strong>de</strong> <strong>la</strong>s actualizaciones sincronizadas <strong>de</strong>l DC-objeto.<br />

El m<strong>en</strong>saje <strong>de</strong>l DM-ag<strong>en</strong>te se transfiere usando el <strong>en</strong>foque<br />

3-tiered <strong>de</strong> acuerdo a una colección global <strong>de</strong> actualizaciones<br />

para todos los P-ag<strong>en</strong>tes pertin<strong>en</strong>tes. Los IGs globales<br />

como <strong>objetos</strong> compartidos son accesibles por todas <strong>la</strong>s<br />

partes <strong>de</strong> un GT global que esté involucrado.<br />

6.4 Negociación y comunicación <strong>de</strong> ag<strong>en</strong>tes<br />

Para <strong>la</strong> correcta cooperación y coordinación <strong>de</strong> trabajo <strong>en</strong><br />

un MAS, don<strong>de</strong> <strong>la</strong> actuación <strong>de</strong> los ag<strong>en</strong>tes es <strong>en</strong> forma<br />

inter<strong>de</strong>p<strong>en</strong>di<strong>en</strong>te, <strong>de</strong>be existir un mecanismo adicional que<br />

les permita una co<strong>la</strong>boración y coordinación factible <strong>en</strong>tre<br />

ellos. Para <strong>de</strong>finir un método <strong>de</strong> interacción <strong>en</strong>tre ag<strong>en</strong>tes,<br />

los procesos <strong>de</strong> negociación se especifican como <strong>la</strong> coordinación<br />

y cooperación.<br />

La cooperación significa que <strong>la</strong> solución <strong>de</strong> un problema <strong>de</strong>terminado<br />

sea el resultado <strong>de</strong> <strong>la</strong> interacción cooperativa <strong>en</strong>tre<br />

todos los ag<strong>en</strong>tes; <strong>la</strong> coordinación <strong>en</strong>tre un grupo <strong>de</strong> ag<strong>en</strong>tes<br />

permite consi<strong>de</strong>rar todas <strong>la</strong>s tareas a realizar y coordinar<strong>la</strong>s, ya<br />

que es una <strong>de</strong>cisión <strong>de</strong> compatibilidad <strong>en</strong>tre ellos. A continuación<br />

se m<strong>en</strong>cionan algunas características <strong>de</strong> MAS:<br />

1. Conocimi<strong>en</strong>to <strong>de</strong> todos los ag<strong>en</strong>tes <strong>de</strong>l sistema, es posible<br />

ubicarlos cuando <strong>en</strong>vían o recib<strong>en</strong> los requerimi<strong>en</strong>tos<br />

a otro;<br />

2. Conocimi<strong>en</strong>to <strong>de</strong>l papel o rol que cada ag<strong>en</strong>te cumple<br />

<strong>en</strong> <strong>la</strong> interacción, y <strong>en</strong> cada caso es posible saber a quién<br />

pue<strong>de</strong> dirigirse;<br />

TEMAS 11


E n s a y o s<br />

3. Contar con una opinión <strong>de</strong> cada uno <strong>de</strong> los ag<strong>en</strong>tes<br />

(conocimi<strong>en</strong>to), si<strong>en</strong>do posible t<strong>en</strong>er "criterios" <strong>en</strong> <strong>la</strong> toma<br />

<strong>de</strong> <strong>de</strong>cisiones, <strong>en</strong>tre otras.<br />

6.4 Mo<strong>de</strong>lo <strong>de</strong> negociación<br />

La negociación es un mecanismo para resolver los conflictos<br />

haci<strong>en</strong>do lo posible por alcanzar un cons<strong>en</strong>so <strong>en</strong>tre<br />

DM-ag<strong>en</strong>tes. La tarea computacional <strong>de</strong> una configuración<br />

es <strong>la</strong> formalización <strong>de</strong> un intervalo <strong>de</strong> satisfacción <strong>de</strong> restricciones<br />

(ICSP). El ICSP asume que los valores <strong>de</strong>l dominio<br />

son intervalos y usan un intervalo aritmético estándar<br />

para evaluar <strong>la</strong> consist<strong>en</strong>cia <strong>de</strong> nodos y arcos. En <strong>la</strong> implem<strong>en</strong>tación<br />

actual se asume que todas <strong>la</strong>s limitaciones son<br />

monolíticas, sin embargo nosotros investigamos el problema<br />

<strong>de</strong> cómo los DM-ag<strong>en</strong>tes que actúan <strong>de</strong> manera concurr<strong>en</strong>te<br />

y resuelv<strong>en</strong> conflictos por medio <strong>de</strong> negociaciones<br />

con un P-ag<strong>en</strong>te, <strong>de</strong> tal forma que los problemas <strong>de</strong> diseño<br />

pued<strong>en</strong> ser resueltos efectivam<strong>en</strong>te <strong>en</strong> su totalidad. Un Pag<strong>en</strong>te<br />

necesita ser capaz <strong>de</strong> evaluar <strong>la</strong>s propuestas <strong>de</strong>l<br />

DM-ag<strong>en</strong>te para <strong>de</strong>finir <strong>la</strong> consist<strong>en</strong>cia <strong>de</strong> datos y al fin se<br />

comprometa, tomando <strong>en</strong> consi<strong>de</strong>ración su contexto.<br />

Las estrategias <strong>de</strong> negociación incluy<strong>en</strong> <strong>la</strong> selección <strong>de</strong><br />

<strong>de</strong>cisiones efectivas cuando exist<strong>en</strong> múltiples soluciones<br />

<strong>de</strong> fragm<strong>en</strong>tos <strong>en</strong> forma factible; si alguna solución no es<br />

factible es necesario omitir algunas restricciones para lograr<br />

<strong>la</strong> solución al problema.<br />

Cada DM-ag<strong>en</strong>te trata <strong>de</strong> <strong>en</strong>contrar soluciones <strong>de</strong> fragm<strong>en</strong>to<br />

con base <strong>en</strong> criterios (conocimi<strong>en</strong>to) propios y <strong>en</strong>vían propuestas<br />

al P-ag<strong>en</strong>te, el que evalúa estas propuestas concurr<strong>en</strong>tem<strong>en</strong>te<br />

y si satisfac<strong>en</strong> restricciones <strong>de</strong> intervalos<br />

<strong>en</strong>tonces el P-ag<strong>en</strong>te <strong>en</strong>vía el m<strong>en</strong>saje <strong>de</strong> confirmación y<br />

escribe <strong>la</strong>s propuestas <strong>en</strong> DB & KB.<br />

Si el acuerdo no pue<strong>de</strong> alcanzarse, el P-ag<strong>en</strong>te <strong>en</strong>vía m<strong>en</strong>sajes<br />

para disminuir u omitir algunas restricciones al DMag<strong>en</strong>te<br />

que esté participando <strong>en</strong> cada conflicto. Estos pasos<br />

se repit<strong>en</strong> hasta que se logre una <strong>de</strong>cisión satisfactoria o se<br />

reconozca que el conflicto no pue<strong>de</strong> <strong>de</strong>cidirse <strong>de</strong>bido a <strong>la</strong>s<br />

restricciones abrumadoras y se aborta <strong>la</strong> operación o tarea.<br />

12 TEMAS<br />

6.5 Comunicación<br />

Los DM-ag<strong>en</strong>tes comunican lo establecido por medio <strong>de</strong><br />

canales a través <strong>de</strong> re<strong>de</strong>s regu<strong>la</strong>rm<strong>en</strong>te estructuradas. La<br />

comunicación <strong>de</strong> ag<strong>en</strong>tes se repres<strong>en</strong>ta como un conjunto<br />

<strong>de</strong> esquemas <strong>de</strong> m<strong>en</strong>sajes con <strong>la</strong> sigui<strong>en</strong>te estructura: El<br />

vocabu<strong>la</strong>rio es una parte <strong>de</strong> dominios específicos don<strong>de</strong><br />

cada pa<strong>la</strong>bra ti<strong>en</strong>e una anotación formal escrita <strong>en</strong> KIF (Formato<br />

<strong>de</strong> Intercambio <strong>de</strong> Conocimi<strong>en</strong>to).<br />

Un KIF es una versión <strong>de</strong> prefijo <strong>de</strong> cálculo <strong>de</strong> primer ord<strong>en</strong><br />

con diversas ext<strong>en</strong>siones para mejorar su expresividad,<br />

y <strong>de</strong>fine un conjunto <strong>de</strong> <strong>objetos</strong>, funciones y re<strong>la</strong>ciones<br />

cuya semántica es fija. Pero es abierto y los usuarios son<br />

libres para <strong>de</strong>finir el significado <strong>de</strong> cualquier otro símbolo<br />

que no esté pre<strong>de</strong>finido. Un m<strong>en</strong>saje es una expresión<br />

KQML (Preguntas <strong>de</strong> Conocimi<strong>en</strong>to y L<strong>en</strong>guaje <strong>de</strong> Manipu<strong>la</strong>ción)<br />

<strong>en</strong> don<strong>de</strong> los argum<strong>en</strong>tos son los términos o frases<br />

<strong>de</strong>l vocabu<strong>la</strong>rio <strong>en</strong> KIF.<br />

7. Computación <strong>distribuida</strong> <strong>basada</strong> <strong>en</strong> <strong>objetos</strong>:<br />

especificaciones e implem<strong>en</strong>tación<br />

7.1 <strong>Arquitectura</strong> ODC<br />

ODC es un ambi<strong>en</strong>te complejo <strong>de</strong> <strong>computación</strong> y requiere<br />

una infraestructura con una tecnología muy sofisticada<br />

y robusta. Las infraestructuras IT <strong>distribuida</strong>s<br />

<strong>de</strong>l futuro <strong>de</strong>b<strong>en</strong> ser e<strong>la</strong>boradas con base <strong>en</strong> arquitecturas<br />

muy confiables.<br />

Una arquitectura es un nivel <strong>de</strong>scriptivo alto <strong>de</strong> <strong>la</strong> organización<br />

<strong>de</strong> <strong>la</strong>s responsabilida<strong>de</strong>s funcionales d<strong>en</strong>tro<br />

<strong>de</strong> un sistema, y a<strong>de</strong>más es <strong>la</strong> estructura g<strong>en</strong>eral <strong>de</strong>l<br />

sistema que <strong>de</strong>fine <strong>la</strong> re<strong>la</strong>ción <strong>de</strong> compon<strong>en</strong>tes <strong>de</strong>l mismo;<br />

por ejemplo, cli<strong>en</strong>te/servidor es <strong>la</strong> arquitectura que <strong>de</strong>fine<br />

una re<strong>la</strong>ción <strong>en</strong>tre el consumidor y proveedor <strong>de</strong> recursos.<br />

Los siete niveles básicos que el mo<strong>de</strong>lo <strong>de</strong> <strong>la</strong> tecnología<br />

<strong>de</strong> <strong>objetos</strong> apoya para proveer el procesami<strong>en</strong>to ori<strong>en</strong>tado<br />

a <strong>objetos</strong> son:


1. La capa <strong>de</strong> programación OO es tradicional al mo<strong>de</strong>lo<br />

OO y herrami<strong>en</strong>tas <strong>de</strong> programación.<br />

2. La capa <strong>de</strong> implem<strong>en</strong>tación provee <strong>la</strong> infraestructura para<br />

el ambi<strong>en</strong>te basado <strong>en</strong> el objeto.<br />

3. En el nivel conceptual los <strong>de</strong>sarrol<strong>la</strong>dores crean <strong>la</strong>s "<strong>en</strong>tida<strong>de</strong>s"<br />

básicas <strong>de</strong>l dominio <strong>de</strong>l problema, sus asociaciones<br />

con unos y otros, así como sus respectivos papeles<br />

<strong>en</strong> <strong>la</strong> configuración.<br />

4. Las reg<strong>la</strong>s <strong>de</strong> mant<strong>en</strong>imi<strong>en</strong>to y restricciones limitan <strong>la</strong><br />

<strong>de</strong>finición y mecanismos <strong>de</strong> infer<strong>en</strong>cia.<br />

5. El nivel <strong>de</strong> ev<strong>en</strong>tos permite a los usuarios re<strong>de</strong>finir sucesos<br />

<strong>de</strong> comunicación anteriorm<strong>en</strong>te <strong>de</strong>finidos.<br />

6. El nivel <strong>de</strong> esc<strong>en</strong>ario permite <strong>en</strong>samb<strong>la</strong>r <strong>en</strong>tida<strong>de</strong>s para<br />

obrar recíprocam<strong>en</strong>te <strong>en</strong> algún esc<strong>en</strong>ario <strong>de</strong>l dominio<br />

<strong>de</strong>l problema.<br />

7. El nivel <strong>de</strong> ag<strong>en</strong>tes organiza sucesos múltiples <strong>en</strong> un<br />

flujo <strong>de</strong> tareas o trabajos que son capaces <strong>de</strong> reconocer<br />

a ambos el contexto y cont<strong>en</strong>ido <strong>de</strong> <strong>la</strong> información.<br />

7.2 Tecnologías <strong>de</strong> <strong>objetos</strong> distribuidos:<br />

compon<strong>en</strong>tes opuestos a los <strong>objetos</strong><br />

Un mo<strong>de</strong>lo <strong>de</strong> <strong>computación</strong> basado <strong>en</strong> el paradigma <strong>de</strong><br />

<strong>objetos</strong> pue<strong>de</strong> proveer gran<strong>de</strong>s v<strong>en</strong>tajas y un alto r<strong>en</strong>dimi<strong>en</strong>to.<br />

La interacción <strong>de</strong>l objeto se realiza mediante un<br />

sofisticado ambi<strong>en</strong>te <strong>de</strong> m<strong>en</strong>sajes que permite a los <strong>objetos</strong><br />

solicitar servicios a otros <strong>objetos</strong>.<br />

Los <strong>objetos</strong> VE necesitan <strong>de</strong> <strong>la</strong>s v<strong>en</strong>tajas <strong>de</strong> <strong>la</strong> arquitectura<br />

cli<strong>en</strong>te/servidor <strong>distribuida</strong> que apoye <strong>la</strong> distribución, in<strong>de</strong>p<strong>en</strong>d<strong>en</strong>cia,<br />

continuidad y procesami<strong>en</strong>to <strong>en</strong> tiempo real.<br />

La integridad semántica <strong>de</strong> <strong>objetos</strong> con el pot<strong>en</strong>cial <strong>de</strong> <strong>la</strong><br />

arquitectura cli<strong>en</strong>te/servidor se concibe como un gran reto<br />

<strong>de</strong>l cómputo VE.<br />

Los compon<strong>en</strong>tes (ag<strong>en</strong>tes) interactúan <strong>en</strong> forma recíproca<br />

a través <strong>de</strong>l paso <strong>de</strong> m<strong>en</strong>sajes repres<strong>en</strong>tando solicitu<strong>de</strong>s<br />

para <strong>la</strong> obt<strong>en</strong>ción <strong>de</strong> información o servicios. Durante <strong>la</strong><br />

interacción, los <strong>objetos</strong> asum<strong>en</strong> dinámicam<strong>en</strong>te los papeles<br />

<strong>de</strong> cli<strong>en</strong>tes/servidores y <strong>la</strong> amalgamación <strong>de</strong> estos <strong>objetos</strong><br />

distribuidos se un<strong>en</strong> <strong>en</strong> un Objeto <strong>de</strong> Solicitu<strong>de</strong>s (ORB).<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

El ORB provee los medios para localizar y activar otros <strong>objetos</strong><br />

<strong>en</strong> <strong>la</strong> red, efectuándose <strong>de</strong> forma transpar<strong>en</strong>te a los<br />

usuarios. El ORB es el middleware <strong>de</strong> ODC que permite <strong>la</strong><br />

funcionalidad <strong>de</strong> interoperabilidad <strong>en</strong> re<strong>de</strong>s heterogéneas<br />

<strong>de</strong> <strong>objetos</strong>.<br />

Una <strong>de</strong> <strong>la</strong>s contribuciones c<strong>la</strong>ves <strong>de</strong> <strong>la</strong> tecnología ori<strong>en</strong>tada<br />

a los <strong>objetos</strong> es ocultar los <strong>de</strong>talles <strong>de</strong> <strong>la</strong> implem<strong>en</strong>tación<br />

d<strong>en</strong>tro <strong>de</strong> compon<strong>en</strong>tes para manejar con más efici<strong>en</strong>cia<br />

<strong>la</strong> complejidad <strong>en</strong> ODC. El usuario no ti<strong>en</strong>e que estar tan<br />

<strong>en</strong>terado <strong>de</strong> p<strong>la</strong>taformas y ambi<strong>en</strong>tes <strong>de</strong> programación, simplem<strong>en</strong>te<br />

<strong>de</strong>be ver <strong>la</strong> interacción <strong>de</strong> los DC-<strong>objetos</strong> que<br />

co<strong>la</strong>boran recíprocam<strong>en</strong>te como un todo unificado (multiag<strong>en</strong>tes).<br />

7.3 Tecnologías ori<strong>en</strong>tadas a <strong>objetos</strong><br />

Un objeto es una pieza <strong>de</strong> código fu<strong>en</strong>te <strong>de</strong> software que<br />

pue<strong>de</strong> usarse para construir parte <strong>de</strong> una aplicación. El término<br />

ori<strong>en</strong>tado a <strong>objetos</strong> (OO) se aplica a numerosas áreas<br />

tecnológicas como: l<strong>en</strong>guajes <strong>de</strong> programación, análisis y<br />

diseño <strong>de</strong> métodos, bases <strong>de</strong> datos y sistemas operativos.<br />

Los l<strong>en</strong>guajes OO son los más efici<strong>en</strong>tes medios para expresar<br />

los conceptos e i<strong>de</strong>as <strong>en</strong> implem<strong>en</strong>tación que se<br />

<strong>de</strong>tal<strong>la</strong>n <strong>en</strong> un código fu<strong>en</strong>te. Para que un l<strong>en</strong>guaje <strong>de</strong> programación<br />

sea totalm<strong>en</strong>te ori<strong>en</strong>tado a <strong>objetos</strong>, <strong>de</strong>be apoyar<br />

los tres pi<strong>la</strong>res <strong>de</strong>l paradigma <strong>de</strong> <strong>objetos</strong>: <strong>en</strong>capsu<strong>la</strong>ción,<br />

her<strong>en</strong>cia y polimorfismo.<br />

La <strong>en</strong>capsu<strong>la</strong>ción permite al programador <strong>de</strong>finir mo<strong>de</strong>los<br />

que conti<strong>en</strong><strong>en</strong> tanto métodos (comportami<strong>en</strong>to) como atributos<br />

(datos) con difer<strong>en</strong>tes niveles <strong>de</strong> acceso.<br />

La her<strong>en</strong>cia permite que los datos y procedimi<strong>en</strong>tos <strong>de</strong> un<br />

mo<strong>de</strong>lo (<strong>la</strong> c<strong>la</strong>se) se <strong>de</strong>finan una so<strong>la</strong> vez y se reutilic<strong>en</strong><br />

por subc<strong>la</strong>ses <strong>de</strong> <strong>objetos</strong>, lo cual conduce a estructuras<br />

l<strong>la</strong>madas jerarquía <strong>de</strong> c<strong>la</strong>se (una c<strong>la</strong>se hereda comportami<strong>en</strong>to<br />

[métodos] y estructuras <strong>de</strong> datos [atributos] <strong>de</strong>s<strong>de</strong><br />

<strong>la</strong> c<strong>la</strong>se base).<br />

La her<strong>en</strong>cia múltiple es un po<strong>de</strong>roso concepto que provee<br />

<strong>la</strong> capacidad para heredar directam<strong>en</strong>te <strong>de</strong>s<strong>de</strong> dos o<br />

TEMAS 13


E n s a y o s<br />

mas c<strong>la</strong>ses; pero no es indisp<strong>en</strong>sable para consi<strong>de</strong>rar a<br />

un l<strong>en</strong>guaje como ori<strong>en</strong>tado a <strong>objetos</strong>.<br />

El polimorfismo, que literalm<strong>en</strong>te significa "muchas formas",<br />

permite a un segm<strong>en</strong>to <strong>de</strong> código <strong>de</strong> programa <strong>en</strong>viar un<br />

m<strong>en</strong>saje a un objeto sabi<strong>en</strong>do que el objeto receptor respon<strong>de</strong>rá<br />

correctam<strong>en</strong>te aun cuando <strong>la</strong> c<strong>la</strong>se precisa <strong>de</strong>l<br />

objeto no es conocida. Así familias <strong>en</strong>teras <strong>de</strong> <strong>objetos</strong> pued<strong>en</strong><br />

compartir los mismos nombres <strong>de</strong> métodos que permitan<br />

a otras aplicaciones reutilizar gran<strong>de</strong>s partes<br />

(compon<strong>en</strong>tes) <strong>de</strong> código <strong>de</strong>sarrol<strong>la</strong>do.<br />

7.4 Cómputo basado <strong>en</strong> compon<strong>en</strong>tes<br />

Un compon<strong>en</strong>te es un módulo <strong>de</strong> software <strong>de</strong> trabajo. La<br />

difer<strong>en</strong>cia <strong>en</strong>tre los compon<strong>en</strong>tes OOP y CC es semejante<br />

a <strong>la</strong> que existe <strong>en</strong>tre un producto y <strong>la</strong> especificación <strong>de</strong><br />

ing<strong>en</strong>iería <strong>de</strong> ese producto. Esta especificación conti<strong>en</strong>e <strong>la</strong><br />

información que es útil para crearlo, pero no establece su<br />

utilidad. Las v<strong>en</strong>tajas <strong>de</strong> los compon<strong>en</strong>tes <strong>de</strong> software son<br />

<strong>la</strong>s sigui<strong>en</strong>tes:<br />

• Expansión <strong>de</strong> sistemas operativos basados <strong>en</strong> arquitecturas<br />

subyac<strong>en</strong>tes <strong>de</strong> <strong>objetos</strong>.<br />

• Interfaces estándar programables con base <strong>en</strong> un sistema<br />

binario robusto como estándar <strong>de</strong> <strong>objetos</strong><br />

• Transpar<strong>en</strong>cia corporativa con los servicios <strong>de</strong> sistemas<br />

distribuidos basados <strong>en</strong> <strong>objetos</strong>.<br />

• Mo<strong>de</strong>los <strong>de</strong> sistemas multip<strong>la</strong>taformas basados <strong>en</strong> <strong>objetos</strong><br />

con compon<strong>en</strong>tes autónomos <strong>de</strong> software<br />

• G<strong>en</strong>eración <strong>de</strong> arquitecturas cli<strong>en</strong>te/servidor: primero<br />

como two-<strong>la</strong>yers y <strong>de</strong>spués como three -<strong>la</strong>yers.<br />

La implem<strong>en</strong>tación <strong>de</strong> <strong>la</strong> her<strong>en</strong>cia consiste <strong>en</strong> que los<br />

compon<strong>en</strong>tes pued<strong>en</strong> reutilizarse fácilm<strong>en</strong>te a través <strong>de</strong><br />

difer<strong>en</strong>tes aplicaciones mediante <strong>la</strong> her<strong>en</strong>cia <strong>de</strong> c<strong>la</strong>ses,<br />

que es una manera <strong>en</strong> que un objeto l<strong>la</strong>ma con facilidad<br />

a otro objeto para proveer un servicio. Una aplicación<br />

<strong>basada</strong> <strong>en</strong> <strong>objetos</strong> pue<strong>de</strong> crearse como una tarea in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>te<br />

<strong>en</strong> un espacio <strong>de</strong> proceso separado -archivos<br />

con ext<strong>en</strong>sión EXE-, provey<strong>en</strong>do servicios a servidores<br />

remotam<strong>en</strong>te, o como una biblioteca <strong>de</strong> <strong>en</strong><strong>la</strong>ce dinámico<br />

14 TEMAS<br />

<strong>en</strong> el servidor que se procese <strong>en</strong> un mismo espacio<br />

-archivos con ext<strong>en</strong>sión DLL-, que prove<strong>en</strong> servicios mediante<br />

<strong>la</strong> función <strong>de</strong> una l<strong>la</strong>mada local. La aplicación <strong>de</strong><br />

<strong>objetos</strong> ejecutables que corre <strong>en</strong> un espacio <strong>de</strong> proceso<br />

separado se refiere tanto a servidores locales como a remotos.<br />

Las aplicaciones <strong>de</strong> <strong>objetos</strong> que se ejecutan <strong>en</strong> el espacio<br />

<strong>de</strong>l proceso <strong>de</strong>l servidor se conoc<strong>en</strong> como in-process <strong>de</strong><br />

servidores, y cuando se realiza una aplicación <strong>de</strong> <strong>objetos</strong>,<br />

se reemp<strong>la</strong>za <strong>la</strong> mayoría <strong>de</strong> <strong>la</strong> funcionalidad proveída por<br />

el gestor <strong>de</strong> <strong>objetos</strong>.<br />

7.5 Compon<strong>en</strong>tes distribuidos basados <strong>en</strong> <strong>objetos</strong><br />

En esta sección se hace una introducción a <strong>la</strong>s especificaciones<br />

e implem<strong>en</strong>tación <strong>de</strong> difer<strong>en</strong>tes sistemas <strong>de</strong> ODC<br />

y sus características c<strong>la</strong>ves <strong>de</strong>l ambi<strong>en</strong>te <strong>en</strong> que operan.<br />

Esta comparación nos permite apreciar diversas características<br />

<strong>de</strong> ODC, como <strong>la</strong> ext<strong>en</strong>sibilidad, robustez, transportabilidad<br />

y <strong>la</strong> operabilidad, así como <strong>de</strong> qué manera estas<br />

características ambi<strong>en</strong>tales motivan y forman muchos compon<strong>en</strong>tes<br />

reusables, a<strong>de</strong>más otras cualida<strong>de</strong>s que se <strong>en</strong>cu<strong>en</strong>tran<br />

<strong>en</strong> <strong>la</strong>s estructuras ODC.<br />

Los cli<strong>en</strong>tes y servidores pued<strong>en</strong> ejecutarse <strong>en</strong> difer<strong>en</strong>tes<br />

familias <strong>de</strong> sistemas operativos como UNIX, Windows,<br />

O2 o MVS, que prove<strong>en</strong> difer<strong>en</strong>tes conjuntos <strong>de</strong><br />

características (multi-hilos <strong>de</strong> ejecución, memoria compartida,<br />

<strong>en</strong>tre otros) y difer<strong>en</strong>tes sistemas <strong>de</strong> interfaces<br />

(POSIX o Win32). Los compon<strong>en</strong>tes <strong>de</strong>b<strong>en</strong> <strong>de</strong>sarrol<strong>la</strong>rse<br />

para trabajar con efici<strong>en</strong>cia y robustez a través <strong>de</strong><br />

re<strong>de</strong>s. El <strong>en</strong>foque <strong>de</strong> ODC ofrece muchos b<strong>en</strong>eficios<br />

pot<strong>en</strong>ciales con base <strong>en</strong> técnicas robustas <strong>de</strong> arquitectura<br />

que exist<strong>en</strong> <strong>en</strong> <strong>la</strong>s estructuras <strong>distribuida</strong>s, como<br />

CORBA, OODCE y OLE/COM/DCOM. CORBA es una<br />

norma emerg<strong>en</strong>te para <strong>la</strong> <strong>computación</strong> <strong>de</strong> <strong>objetos</strong> distribuidos;<br />

OODCE es una estructura <strong>en</strong> C++ para el DCE,<br />

y OLE/COM/DCOM es una tecnología <strong>de</strong> microsoft para<br />

compon<strong>en</strong>tes distribuidos. Los cli<strong>en</strong>tes y los servidores<br />

se ejecutan <strong>en</strong> difer<strong>en</strong>tes computadoras, que se un<strong>en</strong><br />

por una red heterogénea.


El protocolo <strong>de</strong> red que conecta los compon<strong>en</strong>tes distribuidos<br />

pue<strong>de</strong> ser con base <strong>en</strong> cualquier tipo <strong>de</strong> familias <strong>de</strong><br />

protocolos como TCP/IP, X.25, ISO OSI y Novell IPX/SPX,<br />

<strong>la</strong>s cuales apoyan punto-a-punto <strong>la</strong> comunicación y ti<strong>en</strong><strong>en</strong><br />

difer<strong>en</strong>tes características. Por ejemplo: TCP/IP es un protocolo<br />

<strong>de</strong> transporte por flujo <strong>de</strong> bytes que ignora límites<br />

<strong>de</strong> m<strong>en</strong>saje.<br />

Para proteger y efici<strong>en</strong>tar <strong>la</strong>s aplicaciones se necesita<br />

seleccionar unos ODC que oper<strong>en</strong> transpar<strong>en</strong>tem<strong>en</strong>te<br />

a través <strong>de</strong> difer<strong>en</strong>tes protocolos a un nivel bajo <strong>de</strong><br />

comunicaciones, y estas estructuras ti<strong>en</strong><strong>en</strong> que proveer<br />

compon<strong>en</strong>tes reusables que simplifiqu<strong>en</strong> el <strong>de</strong>sarrollo<br />

<strong>de</strong> herrami<strong>en</strong>tas y sistemas distribuidos, por ejemplo<br />

l<strong>en</strong>guajes <strong>de</strong> <strong>de</strong>finición <strong>de</strong> interfaces (IDLs) y <strong>de</strong> compi<strong>la</strong>dores.<br />

Estas herrami<strong>en</strong>tas pued<strong>en</strong> g<strong>en</strong>erar códigos<br />

que <strong>de</strong> manera automática ord<strong>en</strong>an y reorganizan parámetros<br />

<strong>de</strong> métodos a procesar tanto local como remotam<strong>en</strong>te.<br />

Este proceso convierte datos binarios <strong>de</strong> un proceso<br />

a otro <strong>en</strong> un formato que es reconocible a lo <strong>la</strong>rgo<br />

<strong>de</strong> un sistema heterogéneo <strong>de</strong> computadoras. COR-<br />

BA no int<strong>en</strong>ta <strong>de</strong>finir un conjunto estándar <strong>de</strong> interfaces<br />

<strong>en</strong> un SO, sin embargo el usuario pue<strong>de</strong> <strong>de</strong>finir<br />

estas interfaces para acce<strong>de</strong>r a características <strong>de</strong> estructuras<br />

<strong>de</strong>l ODC, como <strong>la</strong> Interface <strong>de</strong> Invocación<br />

Dinámica (DII) <strong>de</strong> CORBA. La DII permite a un cli<strong>en</strong>te<br />

acce<strong>de</strong>r a los mecanismos <strong>de</strong> solicitu<strong>de</strong>s provistos <strong>en</strong><br />

un Ag<strong>en</strong>te Objeto <strong>de</strong> Solicitud (Object Request Broker-<br />

ORB). Las aplicaciones usan <strong>la</strong> DII y manejan <strong>en</strong> forma<br />

dinámica <strong>la</strong>s solicitu<strong>de</strong>s a <strong>objetos</strong> sin requerir interfaces<br />

específicas que t<strong>en</strong>gan que ser vincu<strong>la</strong>das <strong>en</strong><br />

el compon<strong>en</strong>te.<br />

La localización simplifica <strong>la</strong> administración <strong>de</strong> un sistema<br />

distribuido y promueve <strong>la</strong> distribución más flexible<br />

y dinámica <strong>de</strong> servicios a través <strong>de</strong> <strong>la</strong> automatización<br />

<strong>en</strong> <strong>la</strong> selección <strong>de</strong> <strong>objetos</strong> distribuidos. Tradicionalm<strong>en</strong>te<br />

los sistemas cli<strong>en</strong>te/servidor id<strong>en</strong>tifican sus servicios por<br />

medio <strong>de</strong> direcciones <strong>de</strong> memoria que indican <strong>la</strong> localización<br />

<strong>de</strong> <strong>objetos</strong> y subrutinas.<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

El esquema g<strong>en</strong>eral para dirigir servicios remotos <strong>en</strong> Internet<br />

es a través <strong>de</strong> puertos numerados (IP). Sin embargo,<br />

este mecanismo es ina<strong>de</strong>cuado para un alto grado <strong>de</strong> esca<strong>la</strong>mi<strong>en</strong>to<br />

distribuido, por lo que necesitamos mecanismos<br />

más sofisticados y robustos para <strong>la</strong> id<strong>en</strong>tificación y ubicación<br />

<strong>de</strong> los servicios remotos que permitan a los cli<strong>en</strong>tes acce<strong>de</strong>r<br />

a los servicios <strong>de</strong> <strong>objetos</strong> remotos (más que por el bajo<br />

direccionami<strong>en</strong>to <strong>de</strong> memoria o número <strong>de</strong> puertos IP).<br />

7.6 Especificaciones e implem<strong>en</strong>taciones<br />

CORBA<br />

El Object Managem<strong>en</strong>t Group (OMG) se formó con el fin<br />

<strong>de</strong> <strong>de</strong>finir <strong>la</strong>s normas requeridas para los sistemas distribuidos<br />

basados <strong>en</strong> <strong>objetos</strong> <strong>en</strong> ambi<strong>en</strong>tes heterogéneos. Así<br />

<strong>de</strong>fin<strong>en</strong> a un objeto como "una repres<strong>en</strong>tación <strong>de</strong> <strong>la</strong> naturaleza<br />

y comportami<strong>en</strong>to <strong>de</strong> conceptos o cosas mundiales<br />

verda<strong>de</strong>ras <strong>en</strong> términos que son significativos a un problema<br />

común".<br />

El principal propósito <strong>de</strong> OMG radica <strong>en</strong> crear estándares<br />

que soport<strong>en</strong> <strong>la</strong> interoperabilidad <strong>en</strong>tre aplicaciones in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>tem<strong>en</strong>te<br />

<strong>de</strong>sarrol<strong>la</strong>das a través <strong>de</strong> re<strong>de</strong>s heterogéneas,<br />

y su objetivo es <strong>la</strong> <strong>de</strong>finición <strong>de</strong> <strong>la</strong> <strong>Arquitectura</strong> <strong>de</strong><br />

Gestión <strong>de</strong> Objeto (OMA), que compr<strong>en</strong><strong>de</strong> cuatro conjuntos<br />

<strong>de</strong> normas:<br />

1. Common Object Request Broker Architecture (COR-<br />

BA) <strong>de</strong>fine los servicios que serán proveídos por un ORB<br />

y manti<strong>en</strong>e el mo<strong>de</strong>lo distribuido <strong>de</strong> objeto que incluye<br />

los mecanismos para hacer y recibir peticiones <strong>de</strong>s<strong>de</strong><br />

otros <strong>objetos</strong> <strong>en</strong> forma transpar<strong>en</strong>te.<br />

2. Common Object Services Specification son colecciones<br />

<strong>de</strong> servicios con interfaces <strong>de</strong> objeto que provee funciones<br />

básicas para usar e implem<strong>en</strong>tar <strong>la</strong> metodología <strong>de</strong><br />

<strong>objetos</strong>.<br />

3. Common Facilities son colecciones <strong>de</strong> servicios ori<strong>en</strong>tadas<br />

a usuarios finales, por ejemplo docum<strong>en</strong>tos compuestos.<br />

4. Application Objects son aplicaciones específicas <strong>basada</strong>s<br />

<strong>en</strong> <strong>objetos</strong> para usuarios finales.<br />

TEMAS 15


E n s a y o s<br />

La interoperabilidad ORB es una <strong>de</strong> <strong>la</strong>s direcciones <strong>de</strong> <strong>la</strong>s<br />

especificaciones <strong>de</strong> CORBA 2.0. Varias firmas están trabajando<br />

sobre productos <strong>de</strong> cómputo distribuido con diseño<br />

<strong>de</strong> <strong>objetos</strong>, tomando como base los ORB. Los compon<strong>en</strong>tes<br />

ORB se implem<strong>en</strong>tan <strong>en</strong> varios productos comercialm<strong>en</strong>te<br />

disponibles, como el Object Broker <strong>de</strong> Digital o el<br />

DOE <strong>de</strong> SUN. En <strong>la</strong> actualidad hay muchos productos <strong>de</strong><br />

cómputo distribuido ori<strong>en</strong>tados a <strong>objetos</strong> disponibles <strong>en</strong> el<br />

mercado.<br />

D<strong>en</strong>tro <strong>de</strong> <strong>la</strong>s implem<strong>en</strong>taciones más importantes y actuales<br />

<strong>de</strong> <strong>objetos</strong> distribuidos están: OMG’s CORBA,<br />

Microsoft’s OLE/COM (DCOM), COSS, CF y BOMSIG; e<br />

IBM’s SOM/DSOM, Sun’s NEO y Java, Talig<strong>en</strong>t’s Ambi<strong>en</strong>te<br />

<strong>de</strong> Desarrollo, IONAS Orbix, OCX, NeXT’s Op<strong>en</strong>Step y<br />

HP’s CORBA 2.0-compliant ORB.<br />

DCE<br />

DCE es el Ambi<strong>en</strong>te <strong>de</strong> Cómputo Distribuido <strong>de</strong> <strong>la</strong> Op<strong>en</strong><br />

Software Foundation y se diseña como un mo<strong>de</strong>lo cli<strong>en</strong>te/<br />

servidor que consta <strong>de</strong> compon<strong>en</strong>tes múltiples que se han<br />

integrado para trabajar estrecham<strong>en</strong>te juntos.<br />

DCE es conocido como el middleware y <strong>de</strong>bería estar<br />

integrado <strong>en</strong> un sistema operativo, o bi<strong>en</strong> como parte <strong>de</strong><br />

librerías soportadas por varias firmas.<br />

DCE es una infraestructura para aplicaciones <strong>distribuida</strong>s<br />

suplem<strong>en</strong>tarias <strong>en</strong> un ambi<strong>en</strong>te <strong>en</strong>terprise cli<strong>en</strong>te/servidor;<br />

a<strong>de</strong>más es una fundación sólida para el cómputo <strong>de</strong> <strong>objetos</strong><br />

distribuidos y es un conjunto compr<strong>en</strong>sible integrado a<br />

un conjunto modu<strong>la</strong>r <strong>de</strong> productos para apoyar transpar<strong>en</strong>tem<strong>en</strong>te<br />

<strong>la</strong> interworking y recursos compartidos <strong>en</strong> sistemas<br />

heterogéneos <strong>de</strong> ambi<strong>en</strong>tes <strong>en</strong> red.<br />

DCE apoya a dos tecnologías ori<strong>en</strong>tadas a <strong>objetos</strong>:<br />

1. Productos <strong>de</strong> CORBA, basados <strong>en</strong> DCE. CORBA es una<br />

especificación para tecnologías <strong>distribuida</strong>s <strong>de</strong> <strong>objetos</strong> y<br />

provee una amplia gama <strong>de</strong> servicios estándares <strong>de</strong> interfaces.<br />

De los productos disponibles <strong>de</strong> bu<strong>en</strong>a calidad<br />

16 TEMAS<br />

basados <strong>en</strong> <strong>la</strong> especificación CORBA, es probable que<br />

seleccionemos alguna implem<strong>en</strong>tación <strong>de</strong> una firma específica<br />

<strong>basada</strong> <strong>en</strong> CORBA a través <strong>de</strong> <strong>la</strong> organización<br />

<strong>de</strong> un ambi<strong>en</strong>te DCE.<br />

2. El Network OLE <strong>de</strong> Microsoft. Mi<strong>en</strong>tras Network OLE<br />

parece ser un bu<strong>en</strong> ajuste técnico con DCE, es muy<br />

pronto para saber si se adaptará bi<strong>en</strong> a nuestros requerimi<strong>en</strong>tos.<br />

DCE es un <strong>en</strong>foque <strong>de</strong>rivado <strong>de</strong>l <strong>de</strong>sarrollo basado <strong>en</strong> <strong>objetos</strong><br />

y constituye <strong>la</strong> base sobre <strong>la</strong> que se construye <strong>la</strong> tecnología<br />

<strong>distribuida</strong> <strong>de</strong> <strong>objetos</strong>. A<strong>de</strong>más apoya <strong>la</strong><br />

<strong>en</strong>capsu<strong>la</strong>ción y el polimorfismo <strong>de</strong> dos <strong>de</strong> <strong>la</strong>s tres características<br />

requeridas para <strong>la</strong> ori<strong>en</strong>tación a <strong>objetos</strong>. La piedra<br />

angu<strong>la</strong>r <strong>de</strong> DCE RPC es el l<strong>en</strong>guaje <strong>de</strong> <strong>de</strong>finición <strong>de</strong> interface<br />

(IDL) que permite especificar y <strong>de</strong>finir los atributos<br />

externos <strong>de</strong> un conjunto <strong>de</strong> operaciones <strong>de</strong> un servidor.<br />

Microsoft OLE/COM y ActiveX/DCOM<br />

El COM (DCOM) es el mo<strong>de</strong>lo subyac<strong>en</strong>te <strong>de</strong> arquitectura<br />

para <strong>la</strong> industria, que difun<strong>de</strong> ampliam<strong>en</strong>te el OLE. Éste<br />

es un sistema ext<strong>en</strong>sible abierto que apoya tecnológicam<strong>en</strong>te<br />

el <strong>de</strong>sarrollo para <strong>la</strong> creación <strong>de</strong> aplicaciones que<br />

puedan operar a través <strong>de</strong> otras aplicaciones, multip<strong>la</strong>taformas,<br />

y sobre todo para <strong>de</strong>sarrol<strong>la</strong>r<strong>la</strong>s como una colección<br />

<strong>de</strong> compon<strong>en</strong>tes que se insta<strong>la</strong>n <strong>de</strong> manera<br />

in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>te y que puedan comunicarse mediante interfaces<br />

<strong>basada</strong>s <strong>en</strong> el objeto.<br />

Así, COM es <strong>la</strong> especificación mediante <strong>la</strong> cual se <strong>de</strong>fine<br />

el estándar binario para <strong>la</strong> implem<strong>en</strong>tación <strong>de</strong> <strong>objetos</strong> que<br />

es in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>te <strong>de</strong>l l<strong>en</strong>guaje <strong>de</strong> programación, y OLE<br />

provee funciones <strong>de</strong> interoperabilidad usando ORPC (<strong>objetos</strong><br />

RPCs) que se exti<strong>en</strong>d<strong>en</strong> <strong>en</strong> <strong>la</strong> implem<strong>en</strong>tación <strong>de</strong><br />

OLE Distribuido utilizando DCOM compatibles al DCE<br />

RPCs, aunque Microsoft no ha lic<strong>en</strong>ciado DCE <strong>de</strong>s<strong>de</strong> el<br />

OSF. OLE provee <strong>la</strong> comunicación <strong>en</strong>tre módulos <strong>de</strong> código<br />

binario bajo un sistema <strong>en</strong> ejecución. Este estándar habilita<br />

<strong>la</strong> comunicación <strong>en</strong>tre dos aplicaciones mediante <strong>la</strong><br />

interface <strong>basada</strong> <strong>en</strong> <strong>objetos</strong>.


COM distribuido (DCOM) es un producto <strong>de</strong> COM y el<br />

término "distribuido" se refiere a que es capaz <strong>de</strong> ejecutar<br />

servidores y cli<strong>en</strong>tes <strong>en</strong> difer<strong>en</strong>tes procesos a través<br />

<strong>de</strong> Intranet o Internet. Por esto DCOM trabaja como COM,<br />

por ejemplo cuando un cli<strong>en</strong>te solicita el registro don<strong>de</strong><br />

el servidor se localiza y, <strong>en</strong> vez <strong>de</strong> indicar alguna localidad<br />

o registro <strong>de</strong> memoria sobre <strong>la</strong> máquina local, indica<br />

una dirección IP: 123.234.199.27. La difer<strong>en</strong>cia básica<br />

<strong>en</strong>tre COM y DCOM es que los procesos COM se ejecutan<br />

<strong>en</strong> <strong>la</strong> misma máquina <strong>en</strong> difer<strong>en</strong>tes espacios <strong>de</strong><br />

dirección, y los procesos DCOM se exti<strong>en</strong>d<strong>en</strong> a través<br />

<strong>de</strong> una red.<br />

Las tres especificaciones primarias para OLE son:<br />

a) Docum<strong>en</strong>tos OLE son un tipo <strong>de</strong> docum<strong>en</strong>tos compuestos<br />

que pued<strong>en</strong> incorporar los datos creados <strong>en</strong> cualquier<br />

aplicación OLE permitida o disponible. Mediante <strong>la</strong> vincu<strong>la</strong>ción<br />

<strong>de</strong> <strong>objetos</strong> <strong>la</strong>s aplicaciones pued<strong>en</strong> unirse a<br />

<strong>objetos</strong> <strong>de</strong> datos d<strong>en</strong>tro <strong>de</strong> otras aplicaciones. La incrustación<br />

<strong>de</strong> <strong>objetos</strong> es <strong>la</strong> capacidad para vincu<strong>la</strong>r un objeto<br />

d<strong>en</strong>tro <strong>de</strong> otro docum<strong>en</strong>to sin mant<strong>en</strong>er un nexo con el<br />

objeto fu<strong>en</strong>te.<br />

b) Controles OLE se emplean para <strong>la</strong> creación y gestión<br />

<strong>de</strong> controles personalizados. Esta especificación <strong>de</strong>scribe<br />

cómo crear o manipu<strong>la</strong>r cualquier tipo <strong>de</strong> control personalizado<br />

<strong>en</strong> un mo<strong>de</strong>lo OLE. La arquitectura <strong>de</strong> controles<br />

OLE permite trabajar con aplicaciones <strong>en</strong> ambi<strong>en</strong>tes múltiples<br />

<strong>de</strong> <strong>de</strong>sarrollo y a través <strong>de</strong> difer<strong>en</strong>tes p<strong>la</strong>taformas<br />

tanto <strong>de</strong> equipos como <strong>de</strong> sistemas operativos.<br />

c) La automatización OLE se usa para programación y l<strong>en</strong>guajes<br />

script. Esta especificación <strong>de</strong>scribe cómo crear un<br />

objeto o un "contro<strong>la</strong>dor" <strong>de</strong> automatización que pueda<br />

manejar <strong>objetos</strong> según un script o m<strong>en</strong>sajes <strong>de</strong> algún tipo.<br />

Por otra parte permite a <strong>la</strong>s aplicaciones exponer conjuntos<br />

<strong>de</strong> procedimi<strong>en</strong>tos y datos que oper<strong>en</strong> d<strong>en</strong>tro <strong>de</strong> estas<br />

y a través <strong>de</strong> otras aplicaciones para utilizar los servicios<br />

suministrados por otras aplicaciones habilitadas con <strong>la</strong> tecnología<br />

OLE; todo esto a través <strong>de</strong> <strong>objetos</strong> <strong>de</strong> automatización.<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

Compon<strong>en</strong>tes ActiveX <strong>en</strong> aplicaciones cli<strong>en</strong>te/servidor<br />

Debido a que ActiveX está basado sobre <strong>objetos</strong> compartidos,<br />

sus compon<strong>en</strong>tes ti<strong>en</strong><strong>en</strong> intrínsecam<strong>en</strong>te <strong>de</strong>finida <strong>la</strong><br />

re<strong>la</strong>ción cli<strong>en</strong>te/servidor, <strong>en</strong> don<strong>de</strong> el cli<strong>en</strong>te solicita <strong>objetos</strong><br />

y el servidor los provee. Sin embargo, <strong>la</strong> distinción <strong>en</strong>tre<br />

cli<strong>en</strong>tes y servidores es difusa, porque el mismo compon<strong>en</strong>te<br />

pue<strong>de</strong> ser ambos, y con frecu<strong>en</strong>cia es a <strong>la</strong> vez un cli<strong>en</strong>te<br />

y un servidor. Por esto po<strong>de</strong>mos referirlos típicam<strong>en</strong>te como<br />

"compon<strong>en</strong>tes ActiveX" más que como "cli<strong>en</strong>tes" y "servidores<br />

ActiveX". D<strong>en</strong>tro <strong>de</strong> una ejecución <strong>de</strong> contexto <strong>de</strong>terminada,<br />

es importante <strong>la</strong> re<strong>la</strong>ción cli<strong>en</strong>te/servidor.<br />

El estándar <strong>de</strong> ActiveX está diseñado para permitir que los<br />

cli<strong>en</strong>tes se comuniqu<strong>en</strong> con otros compon<strong>en</strong>tes sin importar<br />

dón<strong>de</strong> se ejecutan; pue<strong>de</strong> ser d<strong>en</strong>tro <strong>de</strong>l mismo proceso<br />

<strong>en</strong> <strong>la</strong> misma máquina, o <strong>en</strong> una máquina difer<strong>en</strong>te. Esto<br />

significa que hay un mo<strong>de</strong>lo simple <strong>de</strong> programación para<br />

todos los tipos <strong>de</strong> compon<strong>en</strong>tes ActiveX. Estos compon<strong>en</strong>tes<br />

<strong>en</strong> <strong>la</strong> re<strong>la</strong>ción cli<strong>en</strong>te/servidor pued<strong>en</strong> estar cont<strong>en</strong>idos<br />

<strong>en</strong> una computadora, o ejecutarse <strong>en</strong> difer<strong>en</strong>tes computadoras<br />

conectadas por una red.<br />

Un compon<strong>en</strong>te ActiveX se l<strong>la</strong>ma local cuando se ejecuta<br />

<strong>en</strong> <strong>la</strong> misma computadora, y remoto cuando se hace <strong>en</strong><br />

una computadora difer<strong>en</strong>te. Un compon<strong>en</strong>te es in-process<br />

o out-of-process respecto a su cli<strong>en</strong>te; es in-process si se<br />

implem<strong>en</strong>ta dinámicam<strong>en</strong>te como una librería <strong>de</strong> <strong>en</strong><strong>la</strong>ce<br />

dinámico (archivo *.dll), y por lo tanto se ejecuta <strong>en</strong> el<br />

mismo espacio <strong>de</strong> proceso como un consumidor <strong>de</strong> sus<br />

<strong>objetos</strong>, y out-of-process si el compon<strong>en</strong>te es un archivo<br />

exe, que se ejecuta <strong>en</strong> un espacio con dirección propia.<br />

7.7 Integración <strong>de</strong> DCE y OLE/COM<br />

La familia <strong>de</strong> tecnologías OLE incluye una gran variedad <strong>de</strong><br />

cosas, que van <strong>de</strong>s<strong>de</strong> docum<strong>en</strong>tos compuestos hasta interfaces<br />

estándar para acce<strong>de</strong>r a una base <strong>de</strong> datos. Todas<br />

<strong>la</strong>s tecnologías OLE se basan <strong>en</strong> el mo<strong>de</strong>lo COM. El protocolo<br />

<strong>de</strong> <strong>objetos</strong> RPC está altam<strong>en</strong>te vincu<strong>la</strong>do con el protocolo<br />

<strong>de</strong> red DCE RPC, y ocurre <strong>en</strong> ambos niveles, <strong>en</strong> el<br />

<strong>de</strong> especificación y <strong>en</strong> el <strong>de</strong> implem<strong>en</strong>tación.<br />

TEMAS 17


E n s a y o s<br />

Un procedimi<strong>en</strong>to <strong>de</strong> l<strong>la</strong>mada remota <strong>en</strong> red <strong>basada</strong> <strong>en</strong><br />

COM (referido a ORPC) es equival<strong>en</strong>te a <strong>la</strong> l<strong>la</strong>mada DCE<br />

(DCE RPC). COM especifica conv<strong>en</strong>ciones y provee servicios<br />

para <strong>de</strong>finir y usar <strong>objetos</strong>, y al igual que CORBA, ti<strong>en</strong>e<br />

una Interface <strong>de</strong> L<strong>en</strong>guaje <strong>de</strong> Definición (IDL) para especificar<br />

interfaces <strong>de</strong> <strong>objetos</strong>, incluy<strong>en</strong>do servicios que<br />

permit<strong>en</strong> <strong>la</strong>s instancias y <strong>la</strong> comunicación con otros. Microsoft<br />

usa DCE como base para <strong>la</strong> comunicación d<strong>en</strong>tro<br />

<strong>de</strong> ActiveX. La mayoría <strong>de</strong> <strong>la</strong>s firmas han int<strong>en</strong>tado<br />

usar DCE RPC como un ambi<strong>en</strong>te específico <strong>de</strong> protocolos<br />

d<strong>en</strong>tro <strong>de</strong> <strong>la</strong> interoperabilidad <strong>de</strong> <strong>la</strong>s especificaciones<br />

que provee CORBA. OLE (DCOM) ha seleccionado<br />

DCE RPC como su protocolo <strong>de</strong> comunicaciones, e i<strong>de</strong>alm<strong>en</strong>te<br />

esto permitirá <strong>la</strong> interoperabilidad <strong>en</strong>tre OLE y<br />

DCE.<br />

7.8 Middleware<br />

Middleware se está usando como una manera <strong>de</strong> intercambiar<br />

<strong>la</strong> información por medio <strong>de</strong> compon<strong>en</strong>tes <strong>en</strong> ambi<strong>en</strong>tes<br />

distribuidos, por ejemplo se diseñaron para permitir<br />

el acceso remoto a bases <strong>de</strong> datos. Así constituye <strong>la</strong> infraestructura<br />

fundam<strong>en</strong>tal <strong>de</strong> <strong>la</strong> <strong>computación</strong> <strong>distribuida</strong> que<br />

tradicionalm<strong>en</strong>te se ha usado <strong>en</strong> los proyectos Enterprise<br />

punto-a-punto cli<strong>en</strong>te/servidor. Sin embargo este <strong>de</strong>sarrollo<br />

<strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong> <strong>la</strong> tecnología <strong>de</strong> información<br />

(IT), el <strong>en</strong>foque <strong>de</strong>l middleware es complicado, difícil <strong>de</strong><br />

usar y <strong>de</strong> mant<strong>en</strong>er.<br />

Los problemas asociados con su uso están intrínsecam<strong>en</strong>te<br />

<strong>de</strong>finidos con <strong>la</strong> manera como se emplee <strong>en</strong><br />

<strong>la</strong> interacción <strong>de</strong> <strong>la</strong>s aplicaciones. A fin <strong>de</strong> reducir el<br />

impacto <strong>de</strong> complejidad es necesario <strong>de</strong>finir una arquitectura<br />

que <strong>la</strong>s integre <strong>en</strong> compon<strong>en</strong>tes <strong>de</strong> aplicaciones<br />

<strong>distribuida</strong>s, y que a<strong>de</strong>más pueda apoyar todos<br />

los requerimi<strong>en</strong>tos <strong>de</strong> <strong>la</strong> <strong>computación</strong> <strong>distribuida</strong>, <strong>de</strong>s<strong>de</strong><br />

aplicaciones complejas <strong>de</strong> apoyo <strong>de</strong> <strong>de</strong>cisión hasta<br />

robustos sistemas <strong>de</strong> aplicación <strong>de</strong> transacciones, y<br />

permita una fácil integración a cualquier sistema <strong>de</strong><br />

Enterprise que opere <strong>en</strong> un ambi<strong>en</strong>te <strong>de</strong> computacion<br />

distribuda (DECE-Distributed Enterprise Computing<br />

Environm<strong>en</strong>t).<br />

18 TEMAS<br />

El DECE permite <strong>la</strong> integración <strong>de</strong> ambi<strong>en</strong>tes heterogéneos<br />

para organizar y automatizar el uso <strong>de</strong> <strong>la</strong> tecnología<br />

middleware ocultando <strong>la</strong> complejidad, ya que provee una<br />

capa protectora <strong>en</strong>tre los programas <strong>de</strong> aplicación y <strong>la</strong> tecnología<br />

subyac<strong>en</strong>te <strong>de</strong> <strong>la</strong> infraestructura. DECE conti<strong>en</strong>e<br />

un conjunto <strong>de</strong> herrami<strong>en</strong>tas para automatizar el uso <strong>de</strong>l<br />

middleware y un conjunto <strong>de</strong> servicios <strong>en</strong> tiempo <strong>de</strong> ejecución<br />

que aum<strong>en</strong>ta <strong>la</strong> robustez <strong>de</strong> su ambi<strong>en</strong>te.<br />

DECE se basa <strong>en</strong> una arquitectura <strong>de</strong> compon<strong>en</strong>tes, que<br />

trata a cada elem<strong>en</strong>to <strong>de</strong>l sistema como un compon<strong>en</strong>te<br />

<strong>de</strong> software reutilizable o DC-objeto.<br />

Estos DC-<strong>objetos</strong> están <strong>en</strong>capsu<strong>la</strong>dos usando una so<strong>la</strong> y<br />

bi<strong>en</strong> <strong>de</strong>finida interface abstracta que involucra al usuario<br />

con los l<strong>en</strong>guajes y herrami<strong>en</strong>tas a usarse <strong>en</strong> <strong>la</strong> implem<strong>en</strong>tación.<br />

Los DC-<strong>objetos</strong> pued<strong>en</strong> fácilm<strong>en</strong>te transportarse o duplicarse<br />

d<strong>en</strong>tro <strong>de</strong> difer<strong>en</strong>tes p<strong>la</strong>taformas, y ser reutilizados<br />

para operar <strong>en</strong> red, junto con una variedad <strong>de</strong><br />

configuraciones flexibles <strong>de</strong> <strong>objetos</strong>. El DECE permite<br />

construir sistemas a gran esca<strong>la</strong> <strong>de</strong> información utilizando<br />

y <strong>en</strong>samb<strong>la</strong>ndo un conjunto <strong>de</strong> <strong>objetos</strong> pre-exist<strong>en</strong>tes<br />

mediante una arquitectura <strong>de</strong> aplicación lógica<br />

3-tiered.<br />

OLEnterprise y su arquitectura<br />

OLEnterprise es un producto DECE que provee un acceso<br />

dinámico a <strong>objetos</strong> OLE distribuidos para un acceso universal<br />

suministrando <strong>la</strong>s herrami<strong>en</strong>tas y utililerías para <strong>la</strong> conección<br />

<strong>de</strong> <strong>la</strong>s aplicaciones <strong>de</strong> escritorio con datos y<br />

servicios que resid<strong>en</strong> remotam<strong>en</strong>te <strong>en</strong> un ambi<strong>en</strong>te Enterprise<br />

utilizando mecanismos OLE. También es un l<strong>en</strong>guaje<br />

y p<strong>la</strong>taforma in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>te <strong>de</strong> tecnologías <strong>de</strong> OLE distribuido,<br />

lo que facilita <strong>la</strong> automatización <strong>de</strong> <strong>objetos</strong> sin ninguna<br />

modificación <strong>en</strong> el código. Al utilizar el Microsoft RPC<br />

OLEnterprise <strong>de</strong> inmediato provee <strong>la</strong> pot<strong>en</strong>cia y los b<strong>en</strong>eficios<br />

<strong>de</strong> OLE, permiti<strong>en</strong>do a <strong>la</strong>s organizaciones construir y<br />

visualizar sofisticadas aplicaciones <strong>basada</strong>s <strong>en</strong> <strong>objetos</strong> con<br />

arquitectura multi-tiered.


La arquitectura OLEnterprise provee una alta posibilidad<br />

<strong>de</strong> crecimi<strong>en</strong>to y los requerimi<strong>en</strong>tos <strong>de</strong> servicios son fáciles<br />

<strong>de</strong> mant<strong>en</strong>er ya que se apoyan <strong>en</strong> <strong>la</strong> base DECE <strong>en</strong> una<br />

multi-infraestructura. Estos servicios permit<strong>en</strong> <strong>la</strong> localizacion<br />

<strong>de</strong> procesos y datos, <strong>la</strong> mo<strong>de</strong>ración <strong>en</strong> forma ba<strong>la</strong>nceada<br />

<strong>de</strong> <strong>la</strong> carga <strong>de</strong> trabajo <strong>en</strong> los servidores, <strong>la</strong> <strong>de</strong>tección<br />

automática <strong>de</strong> <strong>la</strong>s fal<strong>la</strong>s <strong>en</strong> los servidores, <strong>la</strong> autorización<br />

<strong>de</strong> usuarios y <strong>la</strong> protección <strong>de</strong> datos.<br />

OLEnterprise ti<strong>en</strong>e tres compon<strong>en</strong>tes: el Explorador <strong>de</strong><br />

Objetos (local y remoto), el Objeto Ag<strong>en</strong>te (servidor<br />

OLE <strong>de</strong> automatización) y el Contro<strong>la</strong>dor Remoto <strong>de</strong><br />

Automatización OLE (Object Factory).<br />

El Objeto Ag<strong>en</strong>te es una aplicación in-process <strong>de</strong> servidor<br />

OLE <strong>de</strong> automatización que se ejecuta como una Biblioteca<br />

<strong>de</strong> En<strong>la</strong>ce Dinámico (DLL) y se localiza <strong>en</strong> <strong>la</strong> máquina<br />

cli<strong>en</strong>te, provey<strong>en</strong>do un acceso transpar<strong>en</strong>te y dinámico a<br />

cualquier objeto OLE o RPC. Así <strong>la</strong> aplicación cli<strong>en</strong>te se ve<br />

simplem<strong>en</strong>te como cualquier otro servidor OLE <strong>de</strong> automatización,<br />

con <strong>la</strong> capacidad <strong>de</strong> <strong>de</strong>volver un objeto solicitado<br />

a un servidor remoto. Si el objeto remoto es OLE <strong>la</strong><br />

solicitud es <strong>de</strong>vuelta al Object Factory que vuelve a emitir<br />

<strong>la</strong> solicitud al sistema remoto; <strong>en</strong> cambio si el objeto remoto<br />

es <strong>en</strong>terprise, <strong>la</strong> petición se convierte dinámicam<strong>en</strong>te<br />

<strong>en</strong> una l<strong>la</strong>mada RPC solicitada por el Objeto Ag<strong>en</strong>te y<br />

<strong>de</strong>vuelta al servidor apropiado.<br />

Un Objeto Ag<strong>en</strong>te se <strong>en</strong>cu<strong>en</strong>tra <strong>en</strong> <strong>la</strong> máquina cli<strong>en</strong>te y<br />

ti<strong>en</strong>e <strong>la</strong> capacidad <strong>de</strong> interpretar y procesar transpar<strong>en</strong>te<br />

y dinámicam<strong>en</strong>te cualquier solicitud <strong>de</strong> automatización<br />

OLE y convertir<strong>la</strong> <strong>en</strong> una l<strong>la</strong>mada RPC para <strong>de</strong>volver<strong>la</strong> a cualquier<br />

servidor. En ambos casos <strong>la</strong> comunicación se maneja<br />

por el mecanismo RPC, que se l<strong>la</strong>ma RPC nativo (NRPC).<br />

Cuando un compon<strong>en</strong>te se ejecuta <strong>en</strong> una p<strong>la</strong>taforma PC,<br />

NRPC usa el RPC <strong>de</strong> Microsoft. Si el objeto remoto es una<br />

automatización OLE, <strong>la</strong> solicitud es emitida al Object Factory,<br />

<strong>la</strong> cual a su vez emite una solicitud <strong>de</strong> automatización<br />

OLE al sistema remoto. El Objeto Ag<strong>en</strong>te es el servidor <strong>de</strong><br />

automatización <strong>en</strong> <strong>la</strong> máquina cli<strong>en</strong>te, y el Microsoft RPC es<br />

el mecanismo <strong>de</strong> comunicación para OLE Remoto que sirve<br />

como interface <strong>en</strong>tre el Objeto Ag<strong>en</strong>te y el Object Factory.<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

El Object Factory es un contro<strong>la</strong>dor OLE remoto (archivo<br />

*.EXE) que distribuye los servicios <strong>de</strong> automatización OLE<br />

(administrador <strong>de</strong> solicitu<strong>de</strong>s remotas OLE) y se <strong>en</strong>cu<strong>en</strong>tra<br />

<strong>en</strong> el servidor que es responsable <strong>de</strong> procesar <strong>la</strong>s solicitu<strong>de</strong>s,<br />

a través <strong>de</strong> instancias <strong>de</strong> <strong>objetos</strong> que se localizan <strong>en</strong><br />

cli<strong>en</strong>tes remotos.<br />

El Explorador <strong>de</strong> Objetos ti<strong>en</strong>e tres compon<strong>en</strong>tes principales:<br />

un visualizador para inspeccionar registros locales<br />

o remotos; un mecanismo <strong>de</strong> exportación <strong>de</strong><br />

<strong>objetos</strong> OLE, para seleccionar servidores <strong>de</strong> automatización<br />

para el acceso remoto, y un mecanismo <strong>de</strong><br />

importación para registrar servidores OLE remotos <strong>de</strong> automatización<br />

local. En <strong>la</strong> p<strong>la</strong>taforma <strong>de</strong>l servidor se<br />

g<strong>en</strong>erará y registrará localm<strong>en</strong>te el servidor <strong>de</strong> automatización<br />

OLE usando sus utilerías estándar. La refer<strong>en</strong>cia<br />

para invocar al servidor <strong>de</strong> automatización OLE es<br />

un programa id<strong>en</strong>tificado (ProgId) que se asocia a una<br />

c<strong>la</strong>se id<strong>en</strong>tificada (CLSID), y ambos se crean cuando el<br />

servidor <strong>de</strong> automatización OLE se agrega a <strong>la</strong> base <strong>de</strong><br />

datos <strong>de</strong> registros locales.<br />

8. Implem<strong>en</strong>tación <strong>de</strong> DCS<br />

El diseño <strong>de</strong> configuraciones se consi<strong>de</strong>ra, <strong>en</strong> síntesis, como<br />

el principal cont<strong>en</strong>ido y análisis estructural <strong>de</strong> los sistemas<br />

complejos <strong>de</strong> difer<strong>en</strong>te naturaleza [Yos87, SK95A]. Los mo<strong>de</strong>los<br />

y métodos <strong>de</strong>scritos se aplicaron al <strong>de</strong>sarrollo <strong>de</strong> <strong>la</strong><br />

búsqueda <strong>de</strong> un prototipo DCS <strong>en</strong> Sistemas Flexibles <strong>de</strong><br />

Manufactura (FMS) <strong>de</strong> diseño <strong>de</strong> configuración.<br />

Un FMS se concibe como un diseño basado <strong>en</strong> <strong>objetos</strong><br />

que ti<strong>en</strong>e una estructura jerárquica con un conjunto <strong>de</strong><br />

limitaciones re<strong>la</strong>tivas a diversos niveles <strong>de</strong> proyectos que<br />

los mo<strong>de</strong><strong>la</strong>n [GK93]. La meta <strong>de</strong> <strong>la</strong> implem<strong>en</strong>tación <strong>de</strong>l<br />

prototipo <strong>de</strong> búsqueda consiste <strong>en</strong> mostrar cómo los formalismos<br />

y métodos m<strong>en</strong>cionados pued<strong>en</strong> usarse <strong>en</strong> ODC<br />

con base <strong>en</strong> un <strong>en</strong>foque <strong>de</strong> multi-ag<strong>en</strong>tes. El DCS también<br />

compr<strong>en</strong><strong>de</strong> el apoyo para <strong>la</strong> especificación <strong>de</strong> requerimi<strong>en</strong>tos,<br />

control <strong>de</strong> consist<strong>en</strong>cia <strong>de</strong> los proyectos y el diseño<br />

concurr<strong>en</strong>te con compon<strong>en</strong>tes pre<strong>de</strong>finidos <strong>de</strong> un esquema<br />

global.<br />

TEMAS 19


E n s a y o s<br />

En este tipo <strong>de</strong> diseño, el DM-ag<strong>en</strong>te selecciona y captura<br />

un fragm<strong>en</strong>to <strong>de</strong>l proyecto. Los fragm<strong>en</strong>tos <strong>en</strong> ABCD pued<strong>en</strong><br />

ser virtualm<strong>en</strong>te <strong>de</strong> cualquier complejidad, a<strong>de</strong>más<br />

pued<strong>en</strong> ser parametrizados (paramétricam<strong>en</strong>te diseñados),<br />

o no parametrizados (diseñados <strong>de</strong> manera conceptual).<br />

El uso <strong>de</strong> fragm<strong>en</strong>tos aprovecha <strong>la</strong> distribución <strong>de</strong>l DM-proceso<br />

<strong>en</strong> forma concurr<strong>en</strong>te sobre el proyecto que comparte<br />

el espacio <strong>de</strong> conocimi<strong>en</strong>to, don<strong>de</strong> el DM-ag<strong>en</strong>te trabaja<br />

con un fragm<strong>en</strong>to incrustado <strong>en</strong> el mo<strong>de</strong>lo distribuido <strong>de</strong><br />

proyectos. El P-ag<strong>en</strong>te es el coordinador <strong>de</strong> proyectos que<br />

se basa <strong>en</strong> <strong>la</strong> cooperación y compartición <strong>de</strong> compon<strong>en</strong>tes<br />

sobre el mecanismo 3-tiered para apoyar <strong>la</strong> interacción <strong>en</strong>tre<br />

DM-ag<strong>en</strong>te y P-ag<strong>en</strong>te con múltiples aspectos <strong>de</strong> configuración<br />

parale<strong>la</strong> <strong>de</strong> proyectos y sus variantes.<br />

Un P-ag<strong>en</strong>te coordina todos los intercambios <strong>de</strong> datos e<br />

información <strong>en</strong> <strong>la</strong> parte capturada <strong>de</strong>l proyecto; mo<strong>de</strong><strong>la</strong> y<br />

ejecuta concurr<strong>en</strong>tem<strong>en</strong>te el control <strong>de</strong> <strong>la</strong>s propieda<strong>de</strong>s<br />

<strong>de</strong> integridad y <strong>de</strong> consist<strong>en</strong>cia más débil con base <strong>en</strong> el<br />

análisis <strong>de</strong> VDF, y modifica <strong>de</strong> manera concurr<strong>en</strong>te <strong>la</strong>s partes<br />

<strong>de</strong>l proyecto.<br />

El DCS se diseña para complem<strong>en</strong>tar y ext<strong>en</strong><strong>de</strong>r <strong>la</strong>s capacida<strong>de</strong>s<br />

<strong>de</strong> muchas <strong>de</strong> <strong>la</strong>s herrami<strong>en</strong>tas <strong>de</strong> <strong>de</strong>sarrollo actuales,<br />

sobre todo agregándoles <strong>la</strong> funcionalidad requerida<br />

para <strong>la</strong>s aplicaciones <strong>en</strong>terprise con un amplio panorama<br />

<strong>en</strong> <strong>la</strong> <strong>computación</strong> <strong>distribuida</strong>. Las interfaces <strong>de</strong>l DCS no<br />

se escrib<strong>en</strong> <strong>en</strong> <strong>la</strong>s aplicaciones, pero pued<strong>en</strong> fácilm<strong>en</strong>te<br />

mejorarse para aprovechar <strong>la</strong>s tecnología ODC si ti<strong>en</strong><strong>en</strong><br />

esa disponibilidad.<br />

La búsqueda <strong>de</strong>l prototipo <strong>de</strong> DCS se ha estado <strong>de</strong>sarrol<strong>la</strong>ndo<br />

para el SO Windows95, utilizando Bor<strong>la</strong>nd C++ 5.0<br />

y <strong>la</strong> tecnología OLE <strong>de</strong> automatización [Bro93]. Esta última<br />

provee <strong>la</strong> estructura conceptual para crear, administrar y<br />

acce<strong>de</strong>r mediante mecanismos basados <strong>en</strong> compon<strong>en</strong>tes<br />

<strong>de</strong> <strong>objetos</strong>. A<strong>de</strong>más permite al DM-ag<strong>en</strong>te (OLE <strong>de</strong> cli<strong>en</strong>te)<br />

exponer un conjunto <strong>de</strong> operaciones que el P-ag<strong>en</strong>te<br />

(OLE servidor) pue<strong>de</strong> invocar o solicitar, y <strong>en</strong> cada operación<br />

<strong>de</strong> actualización los P-ag<strong>en</strong>tes usan el VDF para el<br />

análisis <strong>de</strong> <strong>la</strong> consist<strong>en</strong>cia.<br />

20 TEMAS<br />

El DM-ag<strong>en</strong>te organiza una búsqueda que parte <strong>de</strong>l fragm<strong>en</strong>to<br />

capturado que es análogo al mecanismo que se<br />

basa sobre métricas <strong>de</strong> características <strong>de</strong>seables <strong>en</strong> los compon<strong>en</strong>tes.<br />

Los módulos <strong>de</strong> ag<strong>en</strong>te <strong>de</strong>sarrol<strong>la</strong>dos <strong>en</strong> C++ ofrec<strong>en</strong> su<br />

funcionalidad por medio <strong>de</strong> alguna interface. La v<strong>en</strong>taja <strong>de</strong><br />

usar <strong>la</strong> tecnología OLE consiste <strong>en</strong> el mo<strong>de</strong>lo <strong>de</strong> múltiples<br />

hilos <strong>de</strong> control sobre el nivel <strong>de</strong> ev<strong>en</strong>tos, ya que los hilos<br />

son capaces <strong>de</strong> compartir datos comunes d<strong>en</strong>tro <strong>de</strong> una<br />

p<strong>la</strong>taforma <strong>de</strong>terminada. Nosotros usamos <strong>la</strong> sincronización<br />

<strong>de</strong> hilos a fin <strong>de</strong> permitir <strong>la</strong> implem<strong>en</strong>tación <strong>de</strong>l control<br />

concurr<strong>en</strong>te.<br />

α<br />

D-ag<strong>en</strong>te<br />

Petición Respuesta<br />

VDF S<br />

α β<br />

β<br />

D-ag<strong>en</strong>te<br />

P-ag<strong>en</strong>te S<br />

χ<br />

D-ag<strong>en</strong>te<br />

VDF Z<br />

δ<br />

D-ag<strong>en</strong>te<br />

Servicios <strong>de</strong>l sistema distribuido <strong>de</strong> configuración<br />

DB&KB<br />

Negociación<br />

fragm<strong>en</strong>to α<br />

<strong>en</strong>vío <strong>de</strong><br />

m<strong>en</strong>sajes<br />

P-ag<strong>en</strong>te Z<br />

α χ<br />

δ<br />

DB&KB<br />

IG<br />

β χ<br />

Figura 2. Mo<strong>de</strong>lo <strong>de</strong> <strong>la</strong> arquitectura DCS<br />

La repres<strong>en</strong>tación <strong>de</strong> m<strong>en</strong>saje <strong>en</strong> C++ ti<strong>en</strong>e un API que<br />

oculta todos los <strong>de</strong>talles asociados con <strong>la</strong> comunicación <strong>de</strong><br />

red para el usuario, y se usa para apoyar <strong>la</strong> interoperación<br />

<strong>en</strong>tre aplicaciones que se ejecutan <strong>en</strong> Windows (UNIX <strong>en</strong><br />

versión próxima).<br />

δ


Las acciones <strong>de</strong> los DM-ag<strong>en</strong>tes se llevan a cabo a través<br />

<strong>de</strong> m<strong>en</strong>sajes KQML que incluy<strong>en</strong> restricciones <strong>de</strong><br />

propieda<strong>de</strong>s <strong>de</strong> <strong>objetos</strong> y otras <strong>de</strong>finiciones primarias<br />

<strong>de</strong> usuario. Un m<strong>en</strong>saje es una expresión KQML <strong>en</strong> don<strong>de</strong><br />

los argum<strong>en</strong>tos son términos o s<strong>en</strong>t<strong>en</strong>cias KIF [G<strong>en</strong>92].<br />

Estos m<strong>en</strong>sajes se <strong>en</strong>cu<strong>en</strong>tran <strong>en</strong> una lista <strong>de</strong> compon<strong>en</strong>tes<br />

agrupados <strong>en</strong>tre paréntesis don<strong>de</strong> <strong>la</strong> primera pa<strong>la</strong>bra<br />

indica el tipo <strong>de</strong> m<strong>en</strong>saje. KQML soporta lo que nosotros<br />

po<strong>de</strong>mos obt<strong>en</strong>er <strong>de</strong> una metodología que permita<br />

<strong>la</strong> especificación, diseño e implem<strong>en</strong>tación <strong>de</strong>l software<br />

cooperativo. En otras pa<strong>la</strong>bras, es una metodología que<br />

permite construir mo<strong>de</strong>los para el software cooperativo<br />

que trabaje <strong>en</strong> un ambi<strong>en</strong>te distribuido y <strong>de</strong> manera<br />

asíncrona.<br />

El m<strong>en</strong>saje toma <strong>la</strong>s expresiones KQML que se procesan<br />

como ev<strong>en</strong>tos semánticos (l<strong>la</strong>mada a un servidor<br />

OLE). Un P-ag<strong>en</strong>te se utiliza para combinar datos<br />

y operaciones que se transforman <strong>en</strong> ev<strong>en</strong>tos; posteriorm<strong>en</strong>te<br />

el P-ag<strong>en</strong>te convierte <strong>la</strong> estructura <strong>de</strong> ev<strong>en</strong>tos<br />

a estructuras <strong>de</strong> datos que son aceptados por servidores<br />

OLE.<br />

La especificación <strong>de</strong>l objeto interface es simi<strong>la</strong>r al IDL<br />

(DCOM basado <strong>en</strong> OLE [DCOM96]), por lo que un DCS<br />

provee un número <strong>de</strong> servicios ODC, que permite a<br />

los cli<strong>en</strong>tes <strong>en</strong>contrar una refer<strong>en</strong>cia al P-ag<strong>en</strong>te <strong>en</strong> el<br />

tiempo <strong>de</strong> ejecución. Esto reduce <strong>la</strong> complejidad <strong>de</strong> implem<strong>en</strong>tación<br />

<strong>de</strong>l cli<strong>en</strong>te y le da flexibilidad. El administrador<br />

<strong>de</strong> <strong>objetos</strong> distribuidos (DCOM basado <strong>en</strong> OLE)<br />

provee transpar<strong>en</strong>cia <strong>de</strong> localización para <strong>la</strong>s conexiones<br />

<strong>de</strong> DM y P-ag<strong>en</strong>tes. Los compon<strong>en</strong>tes <strong>de</strong> ag<strong>en</strong>tes<br />

OLE prove<strong>en</strong> una interface <strong>basada</strong> <strong>en</strong> m<strong>en</strong>sajes que son<br />

in<strong>de</strong>p<strong>en</strong>di<strong>en</strong>tes <strong>de</strong> estructuras <strong>de</strong> datos internos y algoritmos.<br />

El P-ag<strong>en</strong>te (servidor OLE) toma <strong>la</strong>s expresiones KQML y<br />

<strong>la</strong>s transforma <strong>en</strong> ev<strong>en</strong>tos semánticos. El mecanismo <strong>de</strong><br />

sincronización se usa para combinar operaciones y estructuras<br />

<strong>de</strong> datos con estructuras GT aceptadas o válidas para<br />

<strong>la</strong>s operaciones GT. El proceso <strong>de</strong> operación <strong>de</strong>l OLEnterprise<br />

es como se indica a continuación:<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

En <strong>la</strong> máquina cli<strong>en</strong>te:<br />

• El explorador <strong>de</strong> <strong>objetos</strong> se conecta a <strong>la</strong> máquina remota e<br />

importa <strong>la</strong> información <strong>de</strong>l registro <strong>de</strong>l servidor <strong>de</strong> automatización<br />

OLE.<br />

• El contro<strong>la</strong>dor <strong>de</strong> automatización OLE crea un objeto OLE<br />

<strong>en</strong> el mom<strong>en</strong>to <strong>de</strong> <strong>la</strong> ejecución.<br />

• En el mom<strong>en</strong>to <strong>de</strong> <strong>la</strong> ejecución OLE localiza el servidor <strong>de</strong><br />

automatización usando el Progld <strong>de</strong>l objeto (que se <strong>en</strong>cu<strong>en</strong>tra<br />

<strong>en</strong> CLSID).<br />

• El objeto ag<strong>en</strong>te usa el registro local para <strong>en</strong>contrar el correspondi<strong>en</strong>te<br />

Object Factory.<br />

En <strong>la</strong> máquina servidor:<br />

• El explorador <strong>de</strong> <strong>objetos</strong> exporta el servidor <strong>de</strong> automatización<br />

OLE <strong>en</strong> el registro.<br />

• El Object Factory recibe <strong>la</strong> solicitud y usa su CLSID al<br />

ejecutar el servidor <strong>de</strong> automatización OLE remoto <strong>en</strong> el<br />

mom<strong>en</strong>to <strong>de</strong> ejecución <strong>de</strong>l Microsoft OLE.<br />

Ahora el P-ag<strong>en</strong>te y el DM-ag<strong>en</strong>te pued<strong>en</strong> procesar invocaciones<br />

<strong>de</strong> métodos mediante el objeto ag<strong>en</strong>te <strong>de</strong>l Object<br />

Factory.<br />

Hay un API para <strong>la</strong>s repres<strong>en</strong>taciones <strong>de</strong> notificaciones<br />

y m<strong>en</strong>sajes <strong>en</strong> C++, que oculta todos los <strong>de</strong>talles asociados<br />

con <strong>la</strong> comunicación <strong>de</strong> red repecto al usuario.<br />

El API se usa para apoyar <strong>la</strong> interoperación <strong>en</strong>tre aplicaciones<br />

que son ejecutables <strong>en</strong> Windows (y <strong>en</strong> UNIX<br />

<strong>en</strong> versión próxima).<br />

Los primeros resultados son prometedores. Un proyecto<br />

co<strong>la</strong>borativo <strong>de</strong> tecnologías <strong>de</strong> configuración,<br />

como parte <strong>de</strong> <strong>la</strong> ing<strong>en</strong>iería concurr<strong>en</strong>te fundam<strong>en</strong>tada,<br />

llega a t<strong>en</strong>er una mayor perspectiva <strong>en</strong> <strong>la</strong> toma<br />

<strong>de</strong> <strong>de</strong>cisiones <strong>de</strong>sc<strong>en</strong>tralizadas y <strong>distribuida</strong>s sobre difer<strong>en</strong>tes<br />

dominios <strong>de</strong> problemas. Nosotros usaremos<br />

esta metodología y <strong>la</strong>s experi<strong>en</strong>cias que obt<strong>en</strong>gamos<br />

con el fin <strong>de</strong> emplear el mejor <strong>en</strong>foque <strong>en</strong> este <strong>de</strong>sarrollo.<br />

TEMAS 21


E n s a y o s<br />

[Arb96] "The IWIM Mo<strong>de</strong>l for Coordination of Concurr<strong>en</strong>t<br />

Activities", First Int. Con. On Coordination Mo<strong>de</strong>ls, Languages<br />

and Applications, Italy, 15-17 April, 1996, LNCS,<br />

1062, Springer, pp. 34-56.<br />

[AI88] ASIRELLI, P.; INVERARDI, P.; MUSTARO, A. "Improving Integrity<br />

Constraint Checking in Deductive Data Bases",<br />

ISDT’88, Ed. M. Gyss<strong>en</strong>s, LNCS, N. 326, 1988.<br />

[BF85] BOEHM, P.; FONIO, H. R., HABEL, A. "Amalgamation of<br />

Graph Transformations with Applications to Synchronization",<br />

Mathematical Foundations of Software Developm<strong>en</strong>t,<br />

LNCS, V. 1, N. 185, 1985.<br />

[Bro93] BROCKSCHMIDT, K. "Insi<strong>de</strong> OLE", Microsoft Press,<br />

1993.<br />

[Csu93] CSUHAJ-VARJÚ, E. "On Grammars with Local and Global<br />

Context Conditions", Int. J. Computer Math., 47,<br />

17-27, 1993.<br />

[Cut93] CUTKOSKY, M. R.; ENGELMORE, R. S.; FIKES, et al. "PACT:<br />

An Experim<strong>en</strong>t in Integrating Concurr<strong>en</strong>t Engineering<br />

Systems", IEEE Computer, 1993, 26(1):28-37.<br />

[DCOM96] "Distributed Compon<strong>en</strong>t Object Mo<strong>de</strong>l Protocol<br />

DCOM/1.0", Network Working Group, Internet-<br />

Draft, 1996.<br />

[EBH88] EHRIG, H.; BOEHM, P.; HUMBMMERT, U; LOWE, M. "Distributed<br />

Parallelism of Graph Transformation", LNCS,<br />

314, pp. 1 -19, Berlin, 1988.<br />

[Ehr90] EHRIG, H.; MAHR, B. "Fundam<strong>en</strong>tal of Algebraic Specification:<br />

Module Specification and Constraints, V.21<br />

of EATCS", Monographs of Theoretical Computer Sci<strong>en</strong>ce,<br />

Springer, 1990.<br />

[Ehr93] EHRIG, H.; Lowe, M. "Parallel and Distributed Derivation<br />

in Single Pushout Approach", TCS, 109: 123-143,<br />

1993.<br />

[Fin95] FININ, T.; FRITZSON, R.; MCKAY, D.; MCENTIRE. "KQML<br />

as an Ag<strong>en</strong>t Communication Language", Proc. of 3th<br />

Int. Conf. on Information and Knowledge Managem<strong>en</strong>t,<br />

ACM Press, 1994.<br />

22 TEMAS<br />

Refer<strong>en</strong>cias<br />

[G<strong>en</strong>92] GENESERETH, M. R.; FIKES, R. E. et al. "Knowledge<br />

Interchange Format, Version 3.0 Refer<strong>en</strong>ce Manual, Technical<br />

Report Logic-92-1", Stanford University, 1992.<br />

[G<strong>en</strong>94] GENESERETH, M. R.; and KETCHPEL, S. P. "Software<br />

Ag<strong>en</strong>ts", Communications of the ACM, 37(7):48-53,<br />

1994.<br />

[GG87] "Graph-Grammars and Their Application to Computer<br />

Sci<strong>en</strong>ce", Ed. H. Ehrig, Springer-Ver<strong>la</strong>g, Berlin,<br />

LNCS, N. 291, 1987.<br />

[Gym91] GYMTRASIEWICZ, P. J.; DURFEE, E. H.; WEHE, D. K. "A<br />

Decision-Theoretic Approach to Coordinationing Multiag<strong>en</strong>t<br />

Interactions", Proc. of the Twelfth Int. Con. on<br />

AI, Sidney, Australia, 1991, pp. 62-68.<br />

[GK93] GUSIKHIN, O. Y.; KOULINITCH, A. S. "Animated AI-based<br />

Simu<strong>la</strong>tion in Production Scheduling: Case Study.<br />

IFIP Transactions", B-11, KNOWHSEM’93, Inter.<br />

Knowledge Based Hybrid System in Engineering Manufacturing<br />

Working Con. on Hungary, IFIP, North-Hol<strong>la</strong>nd,<br />

1993.<br />

[GT94] GAVRILA, I. S.; TREUR, J. A. "A Formal Mo<strong>de</strong>l for<br />

Dynamics of Compositional Reasoning Systems", Proc.<br />

11th Eur. Con for the on AI, EC AI-94, Wiley & Sons,<br />

pp. 307-311.<br />

[J<strong>en</strong>95] JENNINGS, N. R. "Controlling Cooperative Problem<br />

Solving in Industrial Multi-Ag<strong>en</strong>t Systems Using Joint<br />

Int<strong>en</strong>tions", AI, 75(2), pp. 195- 240, 1995.<br />

[Kle91] KLEIN, M. "Supporting Conflict Resolution in Cooperative<br />

Design Systems", IEEE Transactions on System,<br />

Man, Cybernetics, 21(5):1379-1390, 1991.<br />

[Kou93] KOULINITCH, A. S. "Integrity Support for Concurr<strong>en</strong>cy<br />

Decision Making in Design", Int. Con. on CAD/CAM,<br />

Robotics and Factories of the Future., St. Petersburg,<br />

1993, pp. 243-251.<br />

[Low93] LOWE, M.; KORFF, M.; WAGNER, A. "An Algebraic<br />

Framework for the Transformation of Attributed Graphs",<br />

Term Graph Rewriting: Theory and Practice, Chapter<br />

14, pp. 185-199, 1993.


[Mac77] MACKWORTH, A. K. "Consist<strong>en</strong>cy in Networks of<br />

Re<strong>la</strong>tions", Artificial Intellig<strong>en</strong>ce, 1977, N. 8.<br />

[Poi85] POIGNE, A. "Elem<strong>en</strong>ts of Categorical Reasoning: Predicates<br />

and Coproducts (Colimits)", Category Theory<br />

and Computer Programming, Ed. D.Pitt, LNCS, N. 240,<br />

1985.<br />

[Rot91] ROTH, S.; SADEH, N.; SYCARA, S.; FOX, M. "Distributed<br />

Constraint Heuristic Search", IEEE Transactions on<br />

System, Man, Cybernetics, 21(5): 1446-1461, 1991.<br />

[Ser91] SERRANO, D. "Constraint-Based Concurr<strong>en</strong>t Design.<br />

Systems Automation: Research & Applications", 1991,<br />

N. 3, V. 1, pp. 217-230.<br />

[SK95a] SMIRNOV, A. V.; KOULINITCH, A. S.; SHEREMETOV, L. B.<br />

"Knowledge-Based Configuration Design of Electronic<br />

Devices: A Case Study", Workshop on Design Methodologies<br />

for Microelectronics, Austria, Sept., 11-15, 1995.<br />

[SK95c] SMIRNOV, A. V.; KOULINITCH, A. S.; SHEREMETOV, L. B.;<br />

ROMANOV, G. V.; TURBIN, P. A. "DESO: A Constraint-Based<br />

Environm<strong>en</strong>t Prototype for Cooperative Design of<br />

FMS", Proc. of the III IASTED Inter. Conf., Cancún,<br />

A r q u i t e c t u r a b a s a d a e n o b j e t o s d e . . .<br />

México, June, 14-16, Anaheim-Zurich, 1995, pp. 384-<br />

387.<br />

[Tae95] TAENTZER, G. "Towards Synchronous and Asynchronous<br />

Graph Transformation", Special Issue of Foundam<strong>en</strong>ta<br />

Informaticae, 1995.<br />

[Tan92] TANENBAUM, A.; KAASHOUEK, F.; BAL, H. "Parallel<br />

Programming Using Shared Objects and Broadcasting",<br />

IEEE Computer, 25 (8), 1992, pp.10-19.<br />

[Wie92] WIEDERHOLD, G. "Mediators in the Architecture of<br />

Future Information Systems", IEEE Computer, 5(3):38-<br />

49, 1992.<br />

[Wo94] WOOLDRIDGE, M.; JENNINGS, N. R. "Formalizing the<br />

Cooperative Problem Solving Process", Proceedings of<br />

the 13th Inter. Workshop on Distributed Artificial Intellig<strong>en</strong>ce<br />

(IWDAI-94), Lake Quinalt, WA., 1994, pp.<br />

403-417.<br />

[Yos87] YOSHIKAWA, H. "G<strong>en</strong>eral Design Theory and Artificial<br />

Intellig<strong>en</strong>ce", Artificial Intellig<strong>en</strong>ce in Manufacturing,<br />

Elsevier Sci<strong>en</strong>ce Publishers (Nort-Hol<strong>la</strong>nd),<br />

Amsterdam, 1987, pp. 35-61 T<br />

TEMAS 23

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!