Português English
Contato

Lista de Disciplinas | CMP167

Programação com Objetos Distribuídos B

Responsável: Cláudio Fernando Resin Geyer
Pré-Requisitos: –
Carga Horária: 60 hs
Créditos: 4
Semestres Oferecidos: Primeiro semestre
Matrícula de Graduandos: A matricula deverá ser feita como Aluno Especial
Página da Disciplina: –

SÚMULA

Introdução a sistemas distribuídos. Revisão dos conceitos de POO. Abordagens para ambientes de POD. Modelos de concorrência, sincronização e comunicação em POD. Exemplos de ambientes de POD: comerciais e acadêmicos: Java, CORBA, CC++, e outros. Algoritmos distribuídos com POD. Extensões de POD: replicação, persistência, agentes móveis e outros.

OBJETIVOS

O tema central da disciplina é o estudo de ambientes de programação com objetos distribuídos. Ao final da disciplina o aluno deverá conhecer os principais modelos de POD, tanto por uma abordagem conceitual quanto através de exemplos acadêmicos e comerciais. O aluno também deverá saber usar os recursos da POD através do estudo de algoritmos distribuídos. O aluno ainda tomará conhecimento das principais tendências e extensões da POD.

PROGRAMA

• Introdução: Conceitos básicos de programação distribuída e paralela: sistemas distribuídos, aplicações distribuídas, modelos de programação, expressão da concorrência, sincronização e comunicação. Revisão dos conceitos de POO.
• Concorrência, comunicação e sincronização em POOD
Abordagens biblioteca, integração e reflexão; criação de objetos distribuídos; concorrência inter e intra objeto; atomicidade, sincronização entre threads; tipos de comunicação (send/receive, chamada remota de método síncrona e futura, …)
• Exemplos de ambientes: padrão CORBA, linguagens Java e CC++, …
CORBA: histórico, arquitetura, versões, ORB, serviços e facilidades, objetos de negócio, chamada estática e dinâmica, repósitório de interfaces, …; Java: threads, métodos de sincronização, sockets, RMI, …; características de outras linguagens; extensões atuais: agentes móveis, replicação, … (Voyager, Agglets, Concordia, …).
• Algoritmos paralelos e distribuídos. Tipos de algoritmos: cliente/servidor, filtros, pares, mestre/escravo, …Exemplos: difusão e coleta de dados, produto vetorial, multiplicação de matrizes,

CRITÉRIOS DE AVALIAÇÃOBIBLIOGRAFIA

• ORFALI, R. and HARKEY, D. Client/Server Programming with JAVA and CORBA. Wiley, New York, 2o edition, 1998.
• ORFALI, R., HARKEY, D. and EDWARDS, J. The Essential Distributed Objects Survival Guide. Wiley, New York, 1996.
• AGHA, G., WEGNER, P. and YONEZAWA, A. Research Directions in Concurrent Object-Oriented Programming. The MIT Press, Cambridge, 1993.
• OAKS, S. and WONG, H. Java Threads. O’Reilly, 1997.
• BRIOT, J-P. and GUERRAOUI, R. A Classification of Various Approaches for Object-Based Parallel and Distributed Programming. Technical Report, EPFL and Univ of Tokyo, 1996.
• ANDREWS, G. R. Concurrent Programming – Principles and Practice. The Benjamin/Cummings, Redwood City, 1991.
• LEA, P. Concurrent Programming in JAVA – Design Principles and Patterns. Addison-Wesley, 1997.
• LYNCH, N. Distributed Algorithms. 1996.
• Artigos selecionados.