SOFIA INDRA Presentation to AICIA

904 views
787 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
904
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

SOFIA INDRA Presentation to AICIA

  1. 1. SOFIA Arquitectura SOFIA Soluciones Tecnológicas Jesús Fernández Gómez-Pimpollo – Ingeniero de Sistemas
  2. 2. INDICE <ul><li>01 Introducción </li></ul><ul><li>02 Componentes de la arquitectura SOFIA </li></ul><ul><li>03 Papel de la ontología </li></ul><ul><li>04 Estado Actual SOFIA </li></ul><ul><li>05 Formato de Mensajes </li></ul><ul><li>06 Desarrollo </li></ul><ul><li>07 Application Development Kit (ADK) </li></ul>
  3. 3. <ul><li>SOFIA es una arquitectura de middleware para proveer interoperabilidad entre dispositivos, independientemente de la plataforma de estos. </li></ul><ul><li>La interoperabilidad multiplataforma se consigue realizando un modelado del dominio concreto independiente del lenguaje, que permitirá a las aplicaciones identificar los conceptos tratados. </li></ul><ul><li>El modelado del dominio independiente de la plataforma, se realiza con una ontología. En esta ontología se deben reflejar todas las clases identificadas así como sus propiedades y relaciones. En definitiva, una ontología es un fichero XML estandarizado, independiente del lenguaje. </li></ul>INTRODUCCIÓN / ¿QUÉ ES SOFIA?
  4. 4. <ul><li>En SOFIA, el entorno donde diferentes aplicaciones interoperan es conocido como SmartSpace. </li></ul><ul><li>El núcleo de un SmartSpace son uno o mas SIB. </li></ul><ul><li>Un SIB (Semantic Information Broker), es una base de datos semántica. En él se reflejan todos los conceptos existentes en el dominio (reflejados en la ontología) y su estado actual (instancias particulares). Todos estos conceptos son introducidos, actualizados y consultados por las aplicaciones. En cierto modo (aunque no es así) se puede interpretar como si las instancias de las clases residieran en el SIB, y fuesen compartidas por múltiples aplicaciones. </li></ul><ul><li>Las aplicaciones que interoperan a través del SIB se denominan KP (Knowledge Processor). Estas aplicaciones trabajan con instancias de los conceptos relevantes del dominio para las que están diseñadas. Deben establecer una conexión con el SIB, introducir y actualizar sus propios instancias de elementos del dominio y consultar y subscribirse a los conceptos que le sean relevantes. De este modo, el SIB se convierte en el elemento intermedio de comunicación entre las aplicaciones. </li></ul>Componentes en arquitectura SOFIA
  5. 5. Componentes SOFIA (I) SIB KP Aplicación 1 KP Aplicación 3 KP Aplicación 2 KP Aplicación 4
  6. 6. <ul><li>En función de cómo se comportan los KPs con respecto a la información del SIB, se identifican los siguientes tipos: </li></ul><ul><ul><li>Producer: Aplicación que solo inserta información en el SIB. </li></ul></ul><ul><ul><li>Consumer: Aplicación que solo recupera información del SIB. </li></ul></ul><ul><ul><li>Prosumer: Aplicación que inserta y recupera información del SIB indistintamente. </li></ul></ul>Componentes SOFIA (II)
  7. 7. <ul><li>El primer paso en la fase del diseño con SOFIA consiste en diseñar la ontología. Aquí se identifican todas las clases del dominio, sus propiedades y relaciones. </li></ul><ul><li>SOFIA está diseñado para reconocer ontologías en formato OWL/RDF. </li></ul><ul><li>Existen diversas herramientas para realizar este modelado, entre ellas, la mas utilizada por los desarrolladores de SOFIA es Protégé ( http://protege.stanford.edu ), que permite crear una ontologia simplemente partiendo de conocimientos propios de la Orientación a Objetos. El resultado es un fichero OWL. </li></ul><ul><li>Cada KP, cuando es diseñado, incluye el subconjunto de conceptos (clases) de la ontología propios de su cometido, ignorando aquellos que le son irrelevantes. Este subconjunto se refleja en el KP como otro fichero OWL. </li></ul><ul><li>Cuando un KP conecta con el SIB, envía a este su fichero OWL, de manera que el SIB puede identificar aquellas clases sobre las que el KP puede crear y mantener instancias interoperando de este modo con otros KPs. </li></ul>Papel de la ontología
  8. 8. <ul><li>La comunicación entre el SIB y las aplicaciones (KP’s) actualmente está contemplada mediante tres protocolos de comunicación, a través de los cuales, SIB y aplicaciones se intercambian un juego de mensajes XML. La implementación del SIB es independiente del protocolo de comunicación especifico, ya que la comunicación es implementada mediante Gateways específicos para cada protocolo, siendo el SIB y los Gateways componentes independientes entre sí. </li></ul><ul><ul><li>TCP/IP: El SIB se despliega en una máquina conectada a una red privada o incluso a internet y acepta conexiones de las aplicaciones a través de un puerto de la máquina. </li></ul></ul><ul><ul><li>Bluetooth: El SIB se despliega en una máquina con capacidades Bluetooth, y acepta conexiones de las aplicaciones que estén en su rádio de acción. </li></ul></ul><ul><ul><li>ZibBee: El SIB se despliega en una máquina con capacidades ZigBee en modo API, y acepta conexiones de las aplicaciones que estén en su radio de acción. </li></ul></ul><ul><ul><li>Todos los protocolos pueden funcionar simultáneamente, de modo que una aplicación que se conecte al SIB vía TCP/IP, podrá interactuar con otra que lo haga vía Bluetooth. </li></ul></ul>Estado actual SOFIA/Comunicaciones
  9. 9. <ul><li>Existen tres tipos de SIBs: </li></ul><ul><ul><li>OSGI SIB </li></ul></ul><ul><ul><li>Smart M3 SIB </li></ul></ul><ul><ul><li>RIBS </li></ul></ul>Estado actual SOFIA/Tipos de SIBs
  10. 10. <ul><li>OSGI SIB </li></ul><ul><li>La arquitectura de este tipo de SIB está basada en la plataforma OSGI ( http://www.osgi.org ). </li></ul><ul><li>Se compone de un conjunto de Bundles (componentes OSGI) que permiten que sea fácilmente extensible en cuanto a sus capacidades, separando en distintos módulos el SIB, los gateways de conexión para los distintos protocolos y diferentes herramientas de diagnostico. </li></ul><ul><li>La implementación OSGI sobre la que está desarrollado es Equinox ( www.eclipse.org/equinox ), por lo que la plataforma de ejecución será una máquina virtual de Java. </li></ul>Estado actual SOFIA/OSGI SIB (I)
  11. 11. Estado actual SOFIA / OSGI SIB (II) Java Virtual Machine OSGI Framework SIB Bundle Bluetooth Gateway Bundle TCP/IP Gateway Bundle SIB Viewer Bundle
  12. 12. <ul><li>SmartM3 SIB </li></ul><ul><li>Concebido para ser ejecutado en entornos Linux, se compone de diversos procesos: </li></ul><ul><ul><li>SIB: Demonio que ejecuta el SIB </li></ul></ul><ul><ul><li>Manejadores de transporte: Diversos demonios que implementan las distintas pasarelas por las que las aplicaciones se comunicarán con el SIB, (TCP/IP, NoTA…) </li></ul></ul>Estado Actual SOFIA / SmartM3 SIB
  13. 13. <ul><li>RIBS SIB </li></ul><ul><li>Implementación del SIB concebida para ejecutarse en entornos de prestaciones reducidas. </li></ul><ul><li>Está basado en ANSI-C. </li></ul>Estado actual SOFIA / RIBS SIB
  14. 14. <ul><li>La comunicación entre el SIB y las aplicaciones, aparte del protocolo de conexión utilizado, está estandarizada mediante un conjunto de mensajes XML denominados SSAP. </li></ul><ul><li>Estos mensajes permiten a las aplicaciones: </li></ul><ul><ul><li>Conectarse/desconectarse de un SIB </li></ul></ul><ul><ul><li>Insertar/Actualizar/Borrar Información en un SIB </li></ul></ul><ul><ul><li>Recuperar Información de un SIB </li></ul></ul><ul><ul><li>Suscribirse/Darse de baja a determinadas clases en un SIB </li></ul></ul><ul><ul><li>Notificar cambios desde el SIB a suscriptores </li></ul></ul>Comunicación SIB – KP (Mensajes)
  15. 15. <ul><li>Los mensajes SSAP pueden clasificarse en 3 categorias distintas: </li></ul><ul><ul><li>REQUEST: Enviado desde el KP al SIB. </li></ul></ul><ul><ul><li>CONFIRM: Enviado desde el SIB al KP en respuesta a un mensaje de REQUEST. </li></ul></ul><ul><ul><li>INDICATION: Enviado desde el SIB al KP cuando ocurre un evento al que el KP está subscrito. </li></ul></ul><ul><li>Los mensajes lleva asociados el identificador del KP y del SIB intervinientes en la comunicación </li></ul><ul><li>Un mensaje SSAP por parte del KP (REQUEST), siempre tiene una respuesta desde el SIB, indicando si la operación ha sido satisfactoria o no, por lo que cada mensaje SSAP tiene un identificador de transacción, que permite asociar las solicitudes a las respuestas. </li></ul>Comunicación SIB – KP (Mensajes)
  16. 16. <ul><ul><li>Los mensajes SSAP tienen el siguiente formato: </li></ul></ul><ul><ul><li><SSAP_message> </li></ul></ul><ul><ul><li><node_id> Id del KP </node_id> </li></ul></ul><ul><ul><li><space_id> Id del SIB </space_id> </li></ul></ul><ul><ul><li><transaction_id> Numero de Transacción </transaction_id> </li></ul></ul><ul><ul><li><transaction_type> Tipo de mensaje </transaction_type> </li></ul></ul><ul><ul><li><message_type> REQUEST|CONFIRM|INDICATION </message_type> </li></ul></ul><ul><ul><li><parameter name= “&quot;> xxxxx </parameter> </li></ul></ul><ul><ul><li><parameter name= “xxxx&quot;> xxxxx </parameter> </li></ul></ul><ul><ul><li>········ </li></ul></ul><ul><ul><li></SSAP_message> </li></ul></ul>Comunicación SIB – KP (Mensajes)
  17. 17. <ul><li>Conexión/Desconexión a un SIB: </li></ul><ul><li>Aparte de la conexión física entre las máquinas donde se ejecutan el SIB y la aplicación por protocolo elegido, es necesario establecer una conexión lógica entre la aplicación y el SIB, de modo que se permita el intercambio de información entre ambos. </li></ul><ul><li>Se realizan mediante las transacciones de tipo </li></ul><ul><ul><li>JOIN: Conexión al SIB </li></ul></ul><ul><ul><li>LEAVE: Desconexión del SIB </li></ul></ul><ul><ul><li>Para ambos tipos de transacciones, la iniciativa parte del KP. </li></ul></ul>Mensajes SSAP KP SIB 1. Join/Leave (Request) 2. Join/Leave (Confirm)
  18. 18. <ul><li>Insertar/Actualizar/Borrar Información en un SIB: </li></ul><ul><li>Son las operaciones a través de las cuales, una aplicación maneja la información que deja en el SIB disponible para el resto de las aplicaciones. </li></ul><ul><li>Se realizan mediante las transacciones de tipo </li></ul><ul><ul><li>INSERT: Insertar nuevas instancias de objetos en el SIB </li></ul></ul><ul><ul><li>UPDATE: Actualizar instancias de objetos ya existentes </li></ul></ul><ul><ul><li>REMOVE: Borrar instancias de objetos </li></ul></ul><ul><li>Para todas ellas la iniciativa parte del KP </li></ul>Mensajes SSAP KP SIB 1. Insert/Update/Remove (Request) 2. Insert/Update/Remove (Confirm)
  19. 19. <ul><li>Recuperar Información de un SIB: </li></ul><ul><li>Es la operación a partir de la cual, una aplicación puede ejecutar consultas sobre la información almacenada en un SIB. </li></ul><ul><li>La consulta se realiza sobre una determinada clase, siendo devueltas todas las instancias que el SIB mantiene de la misma. </li></ul><ul><li>Se realizan mediante transacciones de tipo </li></ul><ul><ul><li>QUERY </li></ul></ul><ul><li>La iniciativa para este tipo de transacción parte del KP: </li></ul>Mensajes SSAP KP SIB 1. Query (Request) 2. Query (Confirm)
  20. 20. <ul><li>Suscripción/De-suscripción : </li></ul><ul><li>Son las operaciones que permiten a una aplicación suscribirse y desuscribirse a determinadas clases en el SIB, de modo que cuando cualquier aplicación notifique algo relevante en relación a una instancia de estas clases, el SIB automáticamente enviará dicha instancia de clase al conjunto de aplicaciones suscritas para que puedan evaluar el cambio. </li></ul><ul><li>Se realizan mediante transacciones de tipo: </li></ul><ul><ul><li>SUBSCRIBE: Subscripción a una clase. </li></ul></ul><ul><ul><li>UNSUBSCRIBE: Desubscripción de una clase </li></ul></ul><ul><li>La iniciativa para este tipo de transacción parte del KP: </li></ul>Mensajes SSAP KP SIB 1. Subscribe/Unsubscribe (Request) 2. Subscribe/Unsubscribe (Confirm)
  21. 21. <ul><li>Suscripción (Indicaciones) : </li></ul><ul><li>Es la operación de Subscripción mediante la cual, un SIB informa a todos los KPs subscritos a una determinada clase, de los cambios que otros KPs realicen en alguna de las instancias de dicha clase. </li></ul><ul><li>Se realizan mediante una transacción de tipo SUBSCRIBE, pero un tipo de mensaje INDICATION. </li></ul><ul><li>En este caso es iniciativa del SIB realizar la correspondiente transacción, y no requiere respuesta por parte del KP. </li></ul>Mensajes SSAP KP SIB 2. Subscribe (Indication)
  22. 22. <ul><li>Se puede encontrar mas información sobre los parámetros específicos de los mensajes SSAP en el documento adjunto SSAP_15032010.pdf </li></ul>Mensajes SSAP
  23. 23. <ul><li>Cualquier aplicación puede convertirse en un KP, siempre que se conecte adecuadamente a un SIB y utilice el protocolo de mensajes SSAP para interactuar con este. Por lo que no existen restricciones en cuanto al lenguaje a utilizar, ya que SSAP es tan solo un formato de mensajes XML. </li></ul><ul><li>De todos modos, para facilitar el desarrollo a los programadores, se han diseñado APIs de programación en Java y C, que abstraen a los desarrolladores de los detalles específicos de comunicación con el SIB, constituyendose en la parte cliente del middleware de comunicación entre aplicaciones, permitiendo a los desarrolladores centrarse solo en la lógica de la aplicación. </li></ul>Desarrollo (I)
  24. 24. <ul><li>Este API son una serie de librerías que abstraen al programador de los detalles de bajo nivel de la arquitectura SOFIA, proporcionando un conjunto de interfaces de programación de alto nivel mediante el que es posible desde un KP: </li></ul><ul><ul><li>Descubrir SIBs en el radio de acción de la aplicación. </li></ul></ul><ul><ul><li>Gestionar el SIB al que se conecte con un conjunto de funciones. </li></ul></ul><ul><ul><li>Gestionar todos los elementos de la ontología (y por tanto del problema) como objetos. </li></ul></ul><ul><ul><li>Gestionar las suscripciones mediante el patrón de diseño Listener. </li></ul></ul>Desarrollo (II)
  25. 25. <ul><li>En SOFIA , se han desarrollado una serie de herramientas para facilitar el trabajo de los programadores. Estas herramientas se conocen como ADK (Application Development Kit). </li></ul><ul><li>Son una serie de plugins instalables en el popular entorno de desarrollo Eclipse, por lo que los programadores tienen la facilidad de desarrollar las aplicaciones asistidos por este entorno de desarrollo integrado. </li></ul>Application Development Kit
  26. 26. <ul><li>Las herramientas que se integran en el ADK son: </li></ul><ul><ul><li>Plugin para creación de proyectos SOFIA: Crea en el espacio de trabajo un proyecto con las APIs y librerias elegidas en el asistente(C, Java, Bluetooth, TCP/IP….) </li></ul></ul><ul><ul><li>Plugin para añadir las clases de la ontologia a la aplicación: Permite seleccionar los elementos de la ontologia que son relevantes para la aplicación, Indicando a su vez si son elementos para producir (insertar al SIB), consumir (recuperar o ser notificado desde el SIB) o ambos. Una vez seleccionados estos conceptos, el propio ADK se encarga de traducirlos a clases y añadirlas al proyecto. </li></ul></ul><ul><ul><li>OSGI SIB: SIB integrado en el ADK, permite realizar pruebas con las aplicaciones, conectándolas a este SIB. </li></ul></ul>Application Development Kit (II)
  27. 27. <ul><ul><li>SIB Viewer: Permite comprobar el estado del SIB integrado en el ADK, ver las aplicaciones conectadas a él, las subscripciones realizadas sobre él, así como la información que tiene almacenada en cada momento. </li></ul></ul><ul><ul><li>TCP/IP Gateway: Pasarela de acceso al SIB integrado en el ADK mediante el protocolo TCP/IP. </li></ul></ul><ul><ul><li>Bluetooth Gateway: Pasarela de acceso al SIB integrado en el ADK mediante el protocolo Bluetooth. </li></ul></ul>Application Development Kit (III)
  28. 28. Application Development Kit (III)
  29. 29. Jesús Fernández Gómez-Pimpollo Soluciones Tecnologicas / Innovacion Tecnológica [email_address] Avda. de Bruselas 35 28108 Alcobendas, Madrid España T +34 91 480 50 00 F +34 91 480 50 80 www.indra.es

×