UNIVERSIDAD DEL VALLE FACULTAD DE INGENIERIA ESCUELA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN MAESTRÍA EN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN CURSO: FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS CONTENIDO DEL CURSO OBJETIVO GENERAL Posibilitar al estudiante la comprensión de los principios y técnicas que sustentan la solución de problemas en sistemas de procesamiento computacional distribuido desde una perspectiva tecnológica y formal. OBJETIVOS ESPECÍFICOS Al finalizar el curso el estudiante estará en capacidad de: Identificar los principios en los que se fundamentan los sistemas distribuidos y tenerlos en cuenta para el diseño de sus propios sistemas. Describir y aplicar algunas tecnologías asociadas que permitan hacer distribución de procesos y de objetos. Valorar la utilidad de la especificación formal de sistemas distribuidos para evaluar propiedades de modelos a implementar. CONTENIDO PARTE I. CONCEPTOS BÁSICOS Y TECNOLOGÍAS SUBYACENTES 1. CONCEPTOS BÁSICOS SOBRE SISTEMAS DISTRIBUIDOS 1.1. Concepto de sistema distribuido 1.2. Elementos de un sistema distribuido 1.3. Beneficios y problemas de los sistemas distribuidos. 1.4. Conceptos hardware conceptos software 1.5. Modelos fundamentales para razonar sobre sistemas distribuidos 1.6. Revisión general a sistemas operativos distribuidos
1.6.1. Sistemas operativos distribuidos que han contribuido en los tópicos de investigación en cuanto a: localización de procesos por nombre, comunicación eficiente y trabajo colaborativo. 1.6.2. Mejores prácticas a tener en cuenta al investigar el tema. 2. MIDDLEWARE. VISTA CONCEPTUAL 2.1. Llamados a procedimientos remotos RPC 2.2. PIPES 2.3. SOCKETs 2.4. Invocación remota RMI 2.3. CORBA vs. DCOM 2.4. XML-RPCs 2.5. Objetos y Agentes de Software Móviles 3. REDES E INTERCONEXIÓN DE REDES 3.1. Diferenciación conceptual modelos OSI y TCP/IP 3.2. Capa Física 3.3. Capa de enlace 3.4. Capa de red 3.5. Capa de transporte 3.6. Capas orientadas a aplicación: Sesión, Presentación y Aplicación 4. SISTEMAS DE ARCHIVOS DISTRIBUIDOS Y MEMORIA DISTRIBUIDA 4.1. Principios subyacentes: Coherencia de datos, coherencia de atributos de archivos, desempeño, localización por nombre, replicación, operaciones bajo desconexión, seguridad. 4.2. Revisión sucinta a: NFS (Network File System) DFS (Distributed File System) IVY Munin 5. SERVICIO DE NOMBRES 5.1. LDAP 5.2. Algoritmos de directorios de nombres 5.3. Java Naming and Directory Interface JNDI
6. TRANSACCIONES Y CONTROL DE CONCURRENCIA 6.1. Propiedades ACID 6.2. Modelos de transacciones 6.3. Transacciones distribuidas 6.4. Secciones criticas y transacciones distribuidas 6.5. Sincronización 6.6. Control de concurrencia y recuperación ante fallas 9. SEGURIDAD 9.1. Amenazas generales: Fallas de autenticación, autenticación de usuario, código malicioso 9.2. Amenazas generales a los protocolos de enrutamiento 9.4. Amenazas generales al conjunto de protocolos TCP/IP 9.3. Amenazas relacionadas con la WWW 9.4. Conceptos generales de criptografía 9.5. Los Firewalls 9.6. Software malicioso y hacking 9.7. Autenticación, control de acceso y detección de intrusión 10. ARQUITECTURA DE SOFTWARE DISTRIBUIDO 10.1. Objetos locales vs. objetos distribuidos 10.2. Activación de objetos 10.3. Enterprise Java Beans EJBs Containers 10.4. Web Services 10.5. JINI J2EE PARTE II. INTRODUCCIÓN AL MODELAMIENTO FORMAL DE SISTEMAS DISTRIBUIDOS 1. Introducción general a álgebras de procesos y motivación (un ejemplo con la CHAM) 2. Introducción al Cálculo-π 3. Procesos secuenciales y bisimulación 4. Procesos concurrentes y reacción 5. Sistema de Transición Rotulado(STR) de procesos concurrentes 6. Ejemplo de observación de equivalencia 7. Cálculo-π: Sintaxis y semántica operacional 8. Modelamiento de C/S Web 9. Modelamiento básico de Servicio Web con Cálculo-π METODOLOGÍA El curso se desarrolla mediante la presentación de conceptos teóricos y tecnológicos con espacio para preguntas y ejercicios, en lo posible, en cada tema se estudian las plataformas que han implementado los principios de los sistemas distribuidos. Se desarrollarán tres talleres o laboratorios durante el curso. El taller será entregado a cada estudiante en cada una de las sesiones de trabajo y éste deberá presentar la solución al
mismo de acuerdo a las orientaciones metodológicas dadas por el profesor en clase. Los estudiantes se organizarán en grupos de máximo dos integrantes para preparar una exposición sobre un tópico tecnológico de actualidad propuesto por el docente de asignatura quien precisará los subtemas puntuales que deben abordar. Esta exposición será de máximo media hora y se efectuará en la última sesión de trabajo. Cada estudiante deberá elaborar un resumen de máximo dos páginas sobre sus apreciaciones y conclusiones personales alrededor de la tecnología expuesta. Al iniciar el curso se entregará a los estudiantes tres bloques de lecturas que deben revisar y de los cuales deben presentar una evaluación de control de acuerdo a la ruta de control de lecturas que proponga el docente. EVALUACIÓN Controles de lectura: 20% Exposición: 25% Ejercicios puntuales: 25% Laboratorios: 30% RECURSOS Videobeam Computador con visor para documentos en formato.pdf Proyector de acetatos Para los laboratorios los estudiantes deben contar con: BIBLIOGRAFÍA Computadores con el ambiente de desarrollo para Java con JVM correspondiente (Mínimo J2SE 1.4; ideal J2SE 1.5). Algunos laboratorios requieren de mínimo dos equipos de cómputo en red para verificar resultados. Ambiente de desarrollo para el lenguaje de programación Mozart Tanenbaum A.; Van Steen M. Distributed systems: Principles and paradigms. Ed. Prentice Hall. Mullender S.. Distributed Systems. 2nd Edition. Addison Wesley. Coulouris George, Dolimore Jean, Kindberg Tim. Sistemas Distribuidos. Conceptos y Diseño. Addison Wesley. Pradeep K. Sinha. Distributed Operating Systems. Concepts and Design. Wiley-IEEE Press. Szyperski, Clemens; Gruntz, Dominique and Murer Stephan. Component Software. Beyond Object- Oriented Programming. Second Edition. Series Editor Clemens Szyperski. 2002 Milner, Robert. Communicating and mobile systems: the π-calculus. Cambridge University Press. 2004 Sangiorgi, Davide; Walker, David. The π-calculus. A Theory of Mobile Processes. Cambridge University Press. 2003
Computer Science Handbook. Second Edition. Editor-in-Chief Allen B. Tucker. Chapman & Hall/CRC and Association for Computing Machinery. 2004. Concepts, Techniques, and Models of Computer Programming. Van Roy, Peter & Haridi, Seif. The MIT Press. Cambridge, Massachusetts. 2004 A Smooth Concurrency. Revolution with Free Objects. Rachid Guerraoui ( Ecole Polytechnique Fedéralé de Lausanne. Editor: Steve Vinoski. IEEE Internet Computing. July-August 2007. SITIOS WEB http://www.sun.com http://www.java.sun.com http://java.sun.com/products/jdk/rmi/reference/whitepapers/javarmi.html: Java Remote Method Invocation - Distributed Computing for Java http://edocs/bea.com/: The weblogic server EJB http://www.javaworld.com