Está en la página 1de 6

I.

IDENTIFICACIÓN DE LA ASIGNATURA
PROGRAMA: INGENIERÍA DE SISTEMAS NOMBRE DEL CURSO: COMPUTACIÓN DISTRIBUIDA Y SISTEMAS MULTI-AGENTE DOCENTE: INGENIERO FRANCISCO LEÓN NÁJERA TOTÁL HORAS: 30 horas durante 7 semanas, distribuídas así: 6 Semanas de 4 horas cada una, y la última semana de 6 horas.

II. CARACTERÍSTICAS DE LA ASIGNATURA 1. CONCEPTOS PRÉVIOS REQUERIDOS. Para el desarrollo de éste curso es requerido tener dominio de los siguientes temas: • Programación orientada a objetos. • Programación en lenguajes c++ y java. • Bases de datos. Y es deseable pero no obligatorio tener conocimiento de los siguientes temas: • Desarrollo de sistemas de información web. Será de utilidad tener experiencia en construcción de servicios web con Java-Servlets o ASP.NET. • Inteligencia Artificial. • Conocimiento en redes y comunicaciones. • Conocimiento en sistemas operativos. • Sistemas de control y programación basada en bloques. • Procesamiento de imágenes y manejo de sistemas de información geográfica. • Conocer algún lenguaje funcional multi-paradigma como Erlang o Scala. • Procesamiento avanzado de texto, serialización, intérpretes y sistemas de web semántica. • Simulación. 2. TEMÁTICAS RELACIONADAS.
• • • • • • • •

Sistemas Multi-Agente. Computación Evolutiva. Procesos Concurrentes. Serialización de objetos. Bases de datos orientadas a objetos. Simulación basada en Agentes. Programación Reactiva y orientada a Eventos. Coordinación y comunicación entre procesos.

en sistemas de inteligencia de negocios como también en aplicaciones para resolver problemas de alta complejidad (por ejemplo a través de simluaciones multi-agente). las plataformas de programación orientada a objetos mas usadas en la industria (como las máquinas virtuales . debido a que manejan un paradigma de programación imperativo y secuencial. El principal aspecto que hace difícil la programación de sistemas con concurrencia de procesos en estas plataformas es la manera en la que los programas imperativos manejan el "Estado" de su información. también se realizarán proyectos que contribuyan a su desarrollo y evolución. Sin embargo. Dado que están orientados a definir y controlar el flujo de instrucciones de una manera secuencial éstos ocultan de manera implícita el cómo la información fluye entre procesos. y procesamiento en tiempo real. así como el desarrollo de sistemas reactivos que controlen sistemas y procesen eventos en tiempo real. explota el paradigma de programación basado en Flujo de Datos (Flow-Based Programming) el cuál brinda técnicas eficientes y simples para el ensamblaje de tareas concurrentes y/o distribuidas. éste ensamblaje permitirá conformar redes de procesamiento capaces de manejar grandes volúmenes de información garantizando la escalabilidad del uso eficiente de los recursos computacionales. 4. Por esa razón. Esta herramienta. Durante el curso además de aprender a aprovechar la plataforma OSLANG. sistemas multi-agente. se ha diseñado el paradigma de programación orientada a flujo de datos (Flow-Based Programming) el cuál simplifica el problema estructurando los programas como . llamada OSLANG.NET y Java) presentan muchos problemas a la hora de implementar sistemas de computación distribuída.net/projects/oslash Con base en las técnicas y tecnologías anteriormente descritas. La computación distribuida y el procesamiento en paralelo son tecnologías de mucha utilidad en el desarrollo de arquitecturas basadas en servicios. JUSTIFICACIÓN.3. El curso está encaminado en la exploración de una poderosa herramienta de programación útil en la implementación de sistemas de computación distribuida como también en el desarrollo de simulaciones multiagente. dado que es software libre y acepta la participación de la comunidad. lo cuál obliga a los programadores a agregar una cantidad considerable de rutinas para indicar cuales datos y partes del código para sincronizar procesos y gestionar el éstado de información requerida para cada tarea. y para que éstos programas funcionen correctamente en un entorno concurrente se hace necesario que compartan el mismo estado lo cual supone muchos inconvenientes para controlar el acceso a recursos comunes entre procesos. CONTENIDO FUNDAMENTAL. se elaborarán proyectos de aplicación en las áreas de: arquitectura de servicios. Actualmente se encuentra publicado en Sourceforge en el siguiente repositorio: http://sourceforge. El diseño de éstas plataformas de programación imperativa no comtempla un mecanismo eficiente para que estos programas manejen múltiples estados simultáneos ni támpoco cuentan con la información de cuál "estado" es requerido para determinada tarea y cuál no.

Esta analogía refleja la operación básica de los sistemas estructurados bajo la programación orientada a flujo de datos. por los cuales envían o reciben un flujo contínuo de paquetes de datos que parametrizan el procesamiento dentro de cada componente. Implementar arquitecturas transaccionales que puedan coordinar y planificar tareas con control de tiempo. Comparar su desempeño frente a sistemas de bases de datos relacionales centralizados como SQLServer. Adquirir dominio en el desarrollo de sistemas de computación distribuída para su aplicación en arquitecturas basadas en servicios y sistemas multi-agente. mediante la herramienta de programación OSLANG. Desarrollar sistemas de procesamiento en paralelo que manejen eventos concurrentes en tiempo real. Estos programas se definen como una red de componentes interconectados a través de puertos de comunicación.una red de componentes de procesamiento. OBJETIVOS ESPECÍFICOS. 7. OBJETIVO GENERAL. Se desarrollarán ejercicios y talleres prácticos sobre cada temática a tratar. Las acciones de cada operario se realizan de manera concurrente independiente de lo que realizen los demás. mediante la programación orientada a flujo de datos y la herramienta de programación OSLANG. los cuales intercambian información mediante flujos de datos a través de canales de comunicación. ESTRATÉGIAS METODOLÓGICAS. En ves de eso se asemeja mas a una línea de ensamblaje de una fábrica en donde cada componente actúa al igual que un operario en su puesto de trabajo. • • • • • Comprender los fundamentos de la programación orientada a flujo de datos. . 5. Su modelo difiere del esquema de instrucciones secuenciales de Von Newman (la base de la programación estructurada y orientada a objetos). bajo la coordinación del profesor. Desarrollar arquitecturas de servicios escalables mediante la programación orientada a flujo de datos y OSLANG. Oracle o PostgreSQL. 6. el cual realiza trabajos en cuanto llegan insumos para procesar y envía el producido a otras estaciones de trabajo por líneas transportadoras (canales de distribución). Comparar su desempeño frente a otros sistemas similares. Realizar investigación en técnicas avanzadas de persistencia de objetos aprovechando el esquema transaccional orientado a flujo de datos y el sistemas de archivos de tablas indexadas (como el usado por google BigTable o MongoDB) para conformar bases de datos distribuídas y escalables usando la plataforma OSLANG. y su diseño simple y eficiente permiten estructuras arquitecturas de servicios en entornos distribuídos fácilmente. • • • Se dictarán clases magistrales para introducir los conceptos fundamentales a tratar en cada tema. Se plantearán proyectos de investigación y desarrollo los cuales desarrollarán los alumnos individual o en grupo.

Se enseñarán la sintaxis básica del lenguaje. características básicas y se realizarán talleres de aplicación. RECURSOS FÍSICOS REQUERIDOS. Se brindará una comprensible introducción a los conceptos de FBP de manera gráfica. El alumno desarrollará destrezas en el diseño y ensamble de redes de procesamiento a través de la herramienta OSLANG. IV. El alumno estará en la capacidad de desarrollar sistemas basados en arquitectura de servicios que puedan escalar eficientemente aprovechando al máximo los recursos computacionales distribuídos en una red de computadores. Los computadores deben contar con sistema operativo linux. Serialización en lenguajes de especificación e intercambio de objetos como XML. Se requieren laboratorios de computación con equipos de cómputo modernos: PC arquitectura Intel de doble núcleo o superior. . RELACIÓN NÚCLEOS TEMÁTICOS 1. JSON y BSON. compilador c++. 2. COMPETENCIAS RELACIONADAS CON LA ASIGNATURA • • • • El alumno comprenderá el paradigma de programación orientada a flujo de datos (FBP). 3. Semana 1. Semana 2. y su utilidad en el desarrollo de sistemas de procesos concurrentes y distribuídos. Se manipularán objetos e información usando persistencia de objetos y metalenguajes de descripción. Introducción a los conceptos de programación orientada a flujo de datos (FBP).8. y se practicarán talleres con la herramienta Scilab-Xcos para construir sistemas dinámicos con bloques estructurados. Semana 3. El alumno desarrollará destrezas en el manejo de información y persistencia de objetos con mecanismos transaccionales. Adicionalmente deben contar con un sistema de base de datos relacional como PostgreSQL. III. y los entornos de programación IDE como Netbeans o Code::blocks preinstalados. Aprendizaje del lenguaje de programación OSLANG. Persistencia de objetos básica.

Esquemas transaccionales de almacenamiento. Distribución de datos y archivos en diferentes equipos de cómputo.edu/~mdw/proj/seda/ . Concepto de procesamiento en paralelo MapReduce. Concurrent Programming in Java. manejando la temporalidad de eventos y coordinación de mensajes. Manejo de transacciones. Indexación de atributos y persistencia en archivos particionados.4. 1994). Semana 6. Se introducirán conceptos de coordinación de tareas a través del paso de mensajes y temporalidad de procesamiento. como el concepto de TeaTime y ordenamiento temporal de tareas en la pila de mensajes.P. Semana 7. Escalabilidad. Morrison.harvard. ISBN: 0-442-01771-5. Actores en Scala y procesos en Erlang. Comparación del desempeño con técnicas tradicionales de manejo de hilos en Java. Second Edition. BIBLIOGRAFÍA [1] Doug Lea. 7. 2000. Procesos de base de datos orientadas a objetos. 6. Distribución y coordinación de tareas en arquitecturas de red. [4] SEDA: An Architecture for Highly Concurrent Server Applications http://www. Eventos de red y temporalidad de tareas y mensajes. Actors: A Model of Concurrent Computation in Distributed Systems Doctoral Dissertation. Semana 4. AddisonWesley. Persistencia avanzada de objetos en bases de datos distribuídas implementando sistemas de archivos indexados. "Flow-Based Programming: A New Approach to Application Development" (van Nostrand Reinhold. Partición horizontal (Sharding) y registros de estructura variable. Procesamiento distribuído. consulta y modificación de objetos persistentes. Se examinarán técnicas de creación dinámica de componentes de procesamiento y su desempeño en sistemas multi-hilo. Se construirán redes de procesamiento que coordinen tareas en una red de computadoras a través de comunicación de sockets y empaquetamiento de información de objetos (Marshalling). [2] Gul Agha. Comparación del desempeño con otras arquitecturas de base de datos relacionales clásicas basadas en SQL como SQL Server y PostgreSQL. V. Distribución de tareas usando múltiples componentes de procesamiento en arquitecturas multi-hilo. 5. Se empleará la arquitectura de OSLANG para desarrollar sistemas de almacenamiento y consulta de información de objetos. Construcción de redes de procesamiento básicas. 1986. Semana 5. [3] J.eecs.

. Disponible en http://www. Written in C++. 1 edition (September 22. Berkeley. [7] Joe Armstrong. O'Reilly Media. December.[5] Stephen Neuendorffer. Programming Scala: Scalability = Functional Programming + Objects (Animal Guide). University of California. high-performance.mongodb.org/. Alex Payne. 1 edition (July 18. 2004 [6] Dean Wampler. open source. Programming Erlang: Software for a Concurrent World Pragmatic Bookshelf. 2009). Actor-Oriented Metaprogramming PhD Thesis. [8] MongoDB (from "humongous") is a scalable. documentoriented database. 2007).