You are on page 1of 7

1.- DATOS DE LA ASIGNATURA.

Nombre de la Asignatura: Programación distribuida

Carrera: Ingeniería en Sistemas


Computacionales

Clave de la Asignatura: SDC-1801

SATCA1 2–2–4

2.- PRESENTACIÓN.

Esta asignatura aporta al perfil la competencia para desarrollar soluciones de software


utilizando programación distribuida, entendiendo y manejando de manera programada los
protocolos de alto nivel más utilizados, comunicación en red a través de procedimientos
remotos, paso de mensajes, interfaces remotas y servicios web; así como la
representación externa de datos utilizada en cada tipo de comunicación.

Se inicia haciendo un repaso del modelo de referencia TCP/IP, estableciendo un marco


de operación de los protocolos de alto nivel. Posteriormente se estudian las
características de los diferentes modelos y arquitecturas de software distribuido.

El estudio de la programación distribuida empieza desde la conceptualización del hilos y


sockets en ambientes distribuidos: su creación, control y destrucción, así como la
sincronización.
Posteriormente se estudian diferentes mecanismos de comunicación distribuida, tales
como RPC y paso de mensajes.
Finalmente, se aprenden las características de los protocolos de capa de aplicación más
utilizados, y se implementa una solución que los incluya.

Para el logro de los objetivos es necesario que el estudiante tenga competencias previas
en cuanto a paradigmas de programación, el uso de metodologías para la solución de
problemas mediante la construcción de algoritmos utilizando un lenguaje de
programación orientada a objetos, el manejo de conceptos básicos de Hardware y
Software, construcción de modelos de software empleando el lenguaje de modelado
unificado (UML). Así como el manejo de plataformas abiertas.

Debido a las competencias que el estudiante requiere como base para el desarrollo de
las planteadas en este programa, la asignatura está considerada cursarse cuando el
estudiante haya desarrollado la competencia de programar, es recomendable cursarla
posterior a haber aprobado el curso de programación orientada a objetos.

Intención didáctica.
• Estimular el pensamiento creativo.
• Trabajar con metodologías participativas y de reflexión colectiva.
• Propiciar la solución de problemas concretos.


1
Sistema de Asignación y Transferencia de Créditos Académicos

• Aprovechar los conocimientos que el estudiante adquirió en asignaturas anteriores.


• Promover el desarrollo de habilidades para la experimentación, tales como:
identificación, manejo y control de variables y datos relevantes; planteamiento de
hipótesis; trabajo en equipo; asimismo, propicien procesos intelectuales como
inducción-deducción y análisis-síntesis con la intención de generar una actividad
intelectual compleja;
• Desarrollar habilidades creativas y emprendedoras, dando un espacio al estudiante
para que detecte aéreas de oportunidad en su entorno.
• Promoverse la cultura de ética y respeto a los derechos de autor, tanto en las
aplicaciones desarrolladas como en el uso de las herramientas utilizadas.
• En las actividades prácticas sugeridas, es conveniente que el profesor busque sólo
guiar a sus estudiantes para que ellos hagan la elección de las variables a controlar y
registrar. Para que aprendan a planificar, que no planifique el profesor todo por ellos,
sino involucrarlos en el proceso de planeación.
• En el transcurso de las actividades programadas es muy importante que el estudiante
aprenda a valorar las actividades que lleva a cabo y entienda que está construyendo
su hacer futuro y en consecuencia actúe de una manera profesional; de igual manera,
aprecie la importancia del conocimiento y los hábitos de trabajo; desarrolle la
precisión y la curiosidad, la puntualidad, el entusiasmo y el interés, la tenacidad, la
flexibilidad y la autonomía.
• Es necesario que el profesor ponga atención y cuidado en estos aspectos en el
desarrollo de las actividades de aprendizaje de esta asignatura.

3.- COMPETENCIAS A DESARROLLAR.


Competencias especificas: Competencias Genéricas:

Ÿ Desarrollar soluciones de software Competencias instrumentales:


utilizando programación distribuida, Ÿ Capacidad de análisis y síntesis
comunicación en red a través de Ÿ Capacidad de organizar y planificar
procedimientos remotos, paso de Ÿ Comunicación oral y escrita
mensajes e interfaces remotas; así Ÿ Habilidad para buscar y analizar
como la utilización de implementaciones información proveniente de fuentes
de protocolos de capa de aplicación diversas.
dentro de las aplicaciones distribuidas. Ÿ Solución de problemas
Ÿ Capacidad de crear modelos de
programación
Ÿ Capacidad de manejar un lenguaje
de programación distribuido

Competencias interpersonales:
Ÿ Capacidad crítica y autocrítica
Ÿ Capacidad de trabajar en equipo
Ÿ Capacidad de comunicar sus ideas
Ÿ Capacidad de liderazgo

Competencias sistémicas:
Ÿ Capacidad de aplicar los

conocimientos en la práctica
Ÿ Habilidades de investigación
Ÿ Capacidad de aprender
Ÿ Capacidad de adaptarse a nuevas
situaciones
Ÿ Capacidad de generar nuevas ideas
(creatividad)
Ÿ Liderazgo
Ÿ Habilidad para trabajar en forma
autónoma
Ÿ Preocupación por la calidad
Ÿ Búsqueda del logro

4.- HISTORIAL DEL PROGRAMA.


Fecha revisión/actualización Participantes Observaciones.
9 de octubre de 2012. Academia de Sistemas y Nueva Creación.
Instituto Tecnológico de Computación del Instituto
Querétaro. Tecnológico de Querétaro
10 de diciembre de 2015. Academia de Sistemas y Actualización conforme
Instituto Tecnológico de Computación del Instituto a nueva especialidad.
Querétaro. Tecnológico de Querétaro

5.- OBJETIVO DE LA ASIGNATURA.

El alumno conocerá los principios y fundamentos de los sistemas distribuidos así como los
diferentes modelos y arquitecturas. Entenderá los protocolos de capa de aplicación más
utilizados y los incluirá en la construcción de aplicaciones distribuidas, a través de
implementaciones existentes en Java.

APORTACIÓN AL PERFIL DEL EGRESADO.

Esta materia contribuirá a que el estudiante tenga la capacidad de diseñar y construir


aplicaciones distribuidas haciendo uso de implementaciones de protocolos de capa de
aplicación y pueda aprovechar la infraestructura de redes de computadoras para generar
aplicaciones que se ejecuten de forma distribuida.

6.- COMPETENCIAS PREVIAS.

• Diseño e implementación de sistemas basados en arquitecturas estándares y


abiertas que resuelvan problemáticas reales.
• Desarrollo de software en lenguajes de alto nivel.

7.- CONTENIDO TEMÁTICO.

Unidad Temas Subtemas


1 Introducción 1.1. Modelo de referencia TCP/IP
1.2. Evolución de arquitecturas de software
1.3. Arquitecturas de red
1.4. Sistemas distribuidos
1.5. Grid
1.6. Clusters
2 Comunicación distribuida 2.1. Hilos y Sockets
2.2. RPC y RMI
2.3. Pipes
2.4. Queues
3 Protocolos de capa de 3.1. FTP
aplicación 3.2. SMTP
3.3. SNMP
3.4. SSH
4 Protocolo http Backend 4.1. Protocolo HTTP
4.2. SOAP
4.3. XML, XSD y WSDL
4.4. Servicios Web
4.5. REST
5 Seguridad 5.1. SSL/TLS
5.2. HTTPS

8.- SUGERENCIAS DIDÁCTICAS.

El profesor debe:
• Ser competente en la disciplina que está bajo su responsabilidad y aplicar los
conceptos de la asignatura. Desarrollar la capacidad para coordinar y trabajar en
equipo; orientar el trabajo del estudiante y potenciar en él la autonomía, el trabajo
cooperativo y la toma de decisiones. Mostrar flexibilidad en el seguimiento del proceso
formativo y propiciar la interacción entre los estudiantes. Tomar en cuenta el
conocimiento de los estudiantes como punto de partida y como obstáculo para la
construcción de nuevos conocimientos.
• Realizar prácticas guiadas que reafirmen los temas vistos.
• Propiciar actividades de búsqueda, selección y análisis de información en distintas
fuentes.
• Propiciar la utilización lenguajes de programación Java y/o C para el desarrollo de
programas y aplicaciones.
• Proponer problemáticas reales en las cuales el estudiante proporciones soluciones por
medio del trabajo en equipo.
• Fomentar la participación del estudiante mediante tormenta de ideas, mesas
redondas, exposiciones que permita que propicie el uso adecuado de conceptos, y de
terminología de programación.
• Proponer problemas que permitan al estudiante la integración de contenidos de la
asignatura y entre distintas asignaturas, para su análisis y solución.

• Propiciar en el estudiante la lectura y reflexión de artículos relacionados con la


asignatura y el impacto ambiental, social y laboral que ella tiene.
• Proporcionar al estudiante la relación de los contenidos de temáticos con el desarrollo
de aplicaciones para dar solución a problemas distribuidos
• Asignar proyectos finales que integren los temas de este programa de estudio.
• Exponer los proyectos finales

9.- SUGERENCIAS DE EVALUACIÓN.

Se sugiere que el estudiante desarrolle un proyecto, preferentemente que atienda un


problema real, que de acuerdo a las especificaciones integre los puntos estudiados en
cada una de las unidades de aprendizaje. Se recomienda que los proyectos sean
desarrollados por equipos de trabajo cuidando la participación activa de cada uno de los
integrantes.
La evaluación debe ser continua y formativa por lo que se debe considerar el desempeño
en cada una de las actividades de aprendizaje, haciendo especial énfasis en:
• Ensayos, de las observaciones hechas durante las actividades, así como de las
conclusiones obtenidas de dichas observaciones.
• Información obtenida durante las investigaciones solicitadas plasmada en documentos
escritos.
• Reportes escritos de otras experiencias concretas que podrían realizarse
adicionalmente.
• Exámenes escritos para comprobar el manejo de aspectos teóricos y conceptuales.
• Exámenes prácticos para comprobar que el conocimiento está siendo aplicado
• Prácticas de programación por unidad.
• Proyecto final integrador: Desarrollo de una aplicación distribuida

10.- UNIDADES DE APRENDIZAJE.

UNIDAD COMPETENCIA ESPECIFICA A ACTIVIDADES DE APRENDIZAJE


DESARROLLAR
1. Introducción Conocer las características de los • Identificación de modelos
sistemas distribuidos y las distribuidos en la vida cotidiana.
arquitecturas más comunes en su • Identificación de modelos
implementación distribuidos en la industria.
• Realizar investigación sobre la
evolución de los modelos de
desarrollo de aplicaciones
• Modelado de arquitecturas en UML
en software específico para ello.
2. Comunicación Ser capaz de comunicar dos • Desarrollo de programas que
distribuida aplicaciones mediante procesos contemplen en uso de sockets e
distribuidos. hilos en lenguaje Java y C.
Conocer las diferentes formas de • Manejo de IDE de desarrollo propio
intercambio de información entre de estos lenguajes.

aplicaciones distribuidas. • Manejo y aprovechamiento de foros


de desarrollo en línea.
• Manejo de documentación de
lenguajes en línea.
• Diseño y construcción de
programas que permitan al
estudiante familiarizarse con la
programación de Paso de mensajes
(message queue)
• Diseño y construcción de
programas que permitan al
estudiante familiarizarse con la
programación de Pipes
3. Protocolos de capa Conocer los protocolos de capa • Diseño y construcción programas
de aplicación de aplicación más utilizados. que permitan al estudiante hacer
Utilizar las implementaciones uso de las implementaciones del
existentes de los protocolos en la protocolo FTP.
construcción de aplicaciones. • Diseño y construcción programas
que permitan al estudiante hacer
uso de las implementaciones del
protocolo SMTP.
• Diseño y construcción programas
que permitan al estudiante hacer
uso de las implementaciones del
protocolo SNMP.
4. Protocolo HTTP Entender el protocolo HTTP, los • Diseño y construcción de servicios
servicios Web y REST, y la web.
representación externa de datos • Modelado y construcción de
que se emplea en su contratos basados en SOAP.
construcción. • Diseño y construcción de servicios
REST.
• Modelado y construcción de
contratos basados en REST.
5. Seguridad Entender las características de • Aplicación, en servicios existentes,
seguridad aplicables al protocolo de los conceptos de autenticación y
HTTP. autorización sobre HTTP.
• Aseguramiento del canal de
comunicación entre dos
aplicaciones existentes.

11.-Fuentes de información.

1. Computer networking : a top-down approach; James F. Kurose, Keith W. Ross.—


6th ed. Addison-Wesley, 2013.
2. Network Protocols Handbook; Javvin Technologies Inc; Second Edition 2005.
3. Programming Web Services with SOAP; Doug Tidwell, James Snell, Pavel
Kulchenko; O'Reilly, First Edition December 2001.

4. HTTP: The Definitive Guide; David Gourley, Brian Totty, Marjorie Sayer, Anshu
Aggarwal, Sailu Reddy; O'Reilly , September 2002
5. Distributed Systems: Concepts and Design; George Coulouris, Jean Dollimore,Tim
Kindberg, Gordon Blair; Addison-Wesley, Fifth Edition, 2012
6. TCP/IP Sockets in C Bundle: TCP/IP Sockets in C, Second Edition: Practical Guide
for Programmers (Morgan Kaufmann Practical Guides) by Michael J. Donahoo and
Kenneth L. Calvert ( 2009)
7. UNIX Network Programming, Volume 2: Interprocess Communications (2nd
Edition); W. Richard Stevens; 1998
8. Professional Java Server Programming J2EE Edition by Subrahmanyam
Allamaraju, Andrew Longshaw, Daniel O'Connor and Gordon Van Huizen (2000)

You might also like