Dirección General de Educación Superior Tecnológica 1. Datos Generales de la asignatura Nombre de la asignatura: Sistemas Distribuidos I Clave de la asignatura: RSD-1202 Créditos (HT - HP créditos): 2-3-5 Carrera: Ingeniería en Sistemas Computacionales 2. Presentación Caracterización de la asignatura Esta asignatura aporta al perfil del Ingeniero en Sistemas Computacionales la capacidad para analizar, diseñar y desarrollar aplicaciones distribuidas que atiendan y resuelvan las necesidades de información de las organizaciones mediante el uso de diversas tecnologías. Intención didáctica En la primera unidad el alumno conocerá la definición, características y naturaleza de las aplicaciones distribuidas, así como los principales problemas en el desarrollo y utilización de las aplicaciones distribuidas. En la segunda unidad se analiza el modelo de programación cliente/servidor y se describen los principales modelos y tecnologías de la computación distribuida. En la tercera unidad el estudiante se introduce al conocimiento de modelos computacionales distribuidos analizando el uso de la invocación remota de métodos usando el lenguaje de programación Java o .NET, para desarrollar una aplicación cliente/servidor. En la cuarta unidad el estudiante se introduce al conocimiento programación orientada a servicios usando el lenguaje de programación Java o .NET, para desarrollar una aplicación cliente/servidor. 3. Participantes en el diseño y seguimiento curricular del programa Lugar y fecha de elaboración o revisión Instituto Tecnológico de Estudios Superiores de la Región Carbonífera, Noviembre de 2012 Participantes Instituto Tecnológico de Estudios Superiores de la Región Carbonífera Observaciones Asignatura elaborada para especialidad de Redes Sistemas Distribuidos de carrera de Ingeniería Sistemas Computacionales. la y la en 4. Competencias a desarrollar Competencia general de la asignatura Diseñar y desarrollar soluciones mediante sistemas distribuidos empleando arquitecturas y tecnologías diversas. Competencias específicas • Conocer los distintos aspectos de las aplicaciones distribuida. • Conocer, diseñar y desarrollar aplicaciones distribuidas. Competencias genéricas Competencias Instrumentales Capacidad de análisis y síntesis. Habilidad y uso de las tecnologías de la información y comunicación. Habilidades de gestión de información (habilidad para buscar y analizar información proveniente de fuentes diversas). Solución de problemas. Toma de decisiones. Capacidad para identificar, plantear y resolver problemas. Capacidad para gestionar y formular proyectos. Competencias interpersonales Capacidad crítica y autocrítica. Trabajo en equipo. Compromiso ético. Competencias sistémicas Capacidad de aplicar los conocimientos en la práctica. Habilidades de investigación. Capacidad de aprender. Búsqueda del logro. 5. Competencias previas de otras asignaturas - Lenguajes de programación - Diseñar bases de datos relacionales en distintos DBMS. - Conocimientos de redes de computadoras - Conocimiento del protocolo TCP/IP 6. Temario Temas No. Subtemas Nombre 1. Introducción a los sistemas distribuidos 1.1 Definición 1.2 Ventajas y desventajas 1.3 Tecnologías 1.4 Problemas comunes 2. Arquitectura cliente/servidor. 2.1 Arquitectura del modelo cliente/servidor. 2.2 Usos y aplicaciones 2.3 Modelos de dos y tres capas. 2.4 Comunicación entre programas 3. Tecnologías de invocación de métodos remotos 2.1 Definiciones 2.2 Opciones Tecnológicas (RMI, .NET Remoting, COM ) 2.3 Seguridad 4. Tecnologías orientadas a servicios 3.1 SOA 3.2 Ventajas 3.3 Escenarios y estándares 3.4 Tecnologías 7. Actividades de aprendizaje Competencia específica y genéricas (a desarrollar y fortalecer por tema) Conocer los conceptos fundamentales de las aplicaciones distribuidas y sus características. Tema 1. Introducción a los sistemas distribuidos Actividades de aprendizaje Investigar los temas y conceptos clave sobre las funciones distribuidas que incluyan su importancia, características y su aplicación. Elaborar un reporte escrito y/o multimedia sobre los temas de la presente unidad. Identificar un problema que pueda ser resuelto mediante el desarrollo de una aplicación distribuida. Competencia específica y genéricas (a desarrollar y fortalecer por tema) Conocer los conceptos básicos relacionados con el modelo cliente servidor. Tema 2. Arquitectura cliente/servidor Actividades de aprendizaje Desarrollar una aplicación bajo la arquitectura cliente/servidor de 2 capas con el objetivo de reconocer los elementos de una aplicación distribuida. Investigar en diversas fuentes de información las principales tecnologías y estándares que se requieren en una aplicación distribuida, elaborar un informe para su discusión en el aula. Competencia específica y genéricas (a desarrollar y fortalecer por tema) Identificar las características, ventajas y desventajas del modelo para la intercomunicación de aplicaciones mediante la invocación de métodos remotos. Desarrollar aplicaciones empleando Java RMI, .NET Remoting, o COM/DCOM. Tema 3. Tecnologías de invocación de métodos remotos Actividades de aprendizaje Desarrollar programas cliente-servidor utilizando invocación de métodos remotos como tecnología de base, e incluyendo serialización de objetos utilizando un lenguaje de programación orientada a objetos. Competencia específica y genéricas (a desarrollar y fortalecer por tema) Identificar las características, ventajas y desventajas del modelo de aplicaciones orientadas a servicios. Desarrollar aplicaciones orientadas a servicios. Tema 4. Tecnologías orientadas a servicios Actividades de aprendizaje Desarrollar aplicaciones orientadas servicios utilizando un lenguaje programación orientada a objetos a de 8. Prácticas (para fortalecer las competencias de los temas y de la asignatura) Proyecto. Desarrolle una aplicación chat que le permita comunicarse a los usuarios de una red local. Proyecto. Desarrolle una aplicación cliente en donde se haga consumo de datos a través de una arquitectura orientada a servicios. Proyecto. Desarrollar una aplicación que obtenga información de una computadora de manera remota y genere reportes. 9. Proyecto integrador (Para fortalecer las competencias de la asignatura con otras asignaturas) Realizar un proyecto para resolver un problema de juego clásico de uno o más jugadores (gato, ahorcado, timbiriche) utilizando una aplicación distribuida. Objetivo: aplicar las tecnologías cliente servidor así como el consumo de datos de otro computador así como Identificar las características, ventajas y desventajas del modelo para la intercomunicación de aplicaciones mediante la invocación de métodos remotos. Desarrollar aplicaciones empleando Java RMI, .NET Remoting, o COM/DCOM Desarrollo: Analizar en equipo las reglas de un juego para dos personas. Elaborar una interfaz gráfica. Desarrolle una aplicación cliente en donde se haga consumo de datos a través de una arquitectura orientada a servicios. Desarrollar una aplicación que obtenga información de una computadora remota y genere reportes Conectar dos dispositivos con el mismo juego. Registrar los resultados. Aportación al perfil: la capacidad para analizar, diseñar y desarrollar aplicaciones distribuidas que atiendan y resuelvan las necesidades de información de las organizaciones mediante el uso de diversas tecnologías. Configuración de aplicaciones Diseño y configuración de servicios Capacidad para el análisis Capacidad de organizar y planificar. Toma de decisiones. Capacidad crítica y autocrítica. Capacidad de trabajar en equipo. Habilidades Interpersonales. Capacidad de comunicarse con profesionales de otras áreas Conocer los distintos aspectos de las aplicaciones distribuida. Conocer, diseñar y desarrollar aplicaciones distribuidas 10. Evaluación por competencias (específicas y genéricas de la asignatura) Tareas relacionadas con la solución de problemas que requieren aplicaciones distribuidas. Elaboración de soluciones a problemas reales que tiene significado para el estudiante y que son producto de su iniciativa. Seguimiento de los avances y documentación del proyecto propuesto. Reportes escritos de las soluciones a problemas desarrollados fuera de clase. Exámenes teórico-prácticos para comprobar la efectividad del estudiante en la resolución de casos prácticos. 11. Fuentes de información (actualizadas considerando los lineamientos de la APA*) 1. Orfali Robert, Harkey Dan, Edwards Jeri, México, 2002Cliente,/servidor y objetos Guía de supervivencia; Tercera Edición Ed. Oxford. 2. Decker, Hirshfield. (2001). Programación con Java. 2ª. Edición. México: International Thomsom Editores. 3. Ryan, Timothy W. Distributed Object Technology. Prentice Hall. 4. Microsoft. Ed. 1998,Mastering Distributed Application Design. Student Workbook,.