Ficha
Unidade Curricular: |
Computao Mvel |
Docente: |
Rui Silva Moreira |
Grau Acadmico: |
Doutor |
Categoria Funcional: |
Professor Associado |
Curso: |
Engenharia Informtica |
Ciclo De Estudos: |
1 Ciclo |
Ano Lectivo: |
2015-2016 |
Semestre Curricular: |
1 Semestre |
N. Total ECTS: |
8 |
N. ECTS Contacto: |
2,5 |
Tipologia Das Aulas: |
Terico-Prtica (TP) e
Prtica-Laboratorial (PL) |
Ao longo dos ltimos anos temos assistido a um crescimento exponencial na utilizao de computadores e redes de telecomunicaes em todas as reas da sociedade. O grande poder de processamento destes computadores aliado ao seu baixo custo e generalizao das redes de computadores abriu novas possibilidades na organizao dos sistemas informticos. A necessidade de partilhar e gerir dados, perifricos e o processamento em vrias mquinas ligadas por rede, de forma coordenada, fivel, escalvel e segura, levou ao aparecimento da disciplina de Sistemas Distribudos.
Neste contexto, o objectivo principal desta unidade curricular apresentar aos alunos as arquitecturas, os modelos e os protocolos de gesto de sistemas distribudos mais utilizados. Por outro lado, pretende-se tambm introduzir algumas das ferramentas actualmente utilizadas para o desenvolvimento de aplicaes distribudas (cf. RMI/EJB, CORBA/CCM, COM+/DCOM/.NET) uma vez que consideramos importante que uma formao superior na rea de informtica inclua este assunto no seu currculo. Assim, pretende-se que os alunos consigam definir e caracterizar os sistemas distribudos, nomeadamente os seus objectivos, os conceitos de hardware, software e middleware envolvidos e o modelo base de arquitectura mais utilizado (cf. Cliente-Servidor). Pretende-se ainda que os alunos, consigam caracterizar as tcnicas e os modelos de comunicao mais utilizados em sistemas distribudos, e.g., invocao remota de procedimentos, invocao de mtodos em objectos remotos, comunicao assncrona (baseada em mensagens) e comunicao sncrona (multimdia).
Os alunos devero ainda ser capazes de perceber os modelos mais importantes na identificao, localizao e gesto de recursos em sistemas distribudos, e conseguir descrever os algoritmos de sincronizao e controlo de concorrncia mais utilizados em sistemas distribudos. Outro objectivo importante ser a capacidade para compreender e aplicar os modelos e protocolos mais utilizados na replicao de recursos e na gesto da consistncia como forma de aumentar a tolerncia a falhas, e conseguir descrever e utilizar os algoritmos mais utilizados no controlo de transaces distribudas. Devem ainda identificar os problemas e usar as solues correntemente utilizadas na proteco de recursos.
Por outro lado, os alunos devero conseguir identificar e caracterizar as aplicaes mais relevantes de sistemas distribudos que foram sendo utilizados nos ltimos anos (e.g., sistemas de ficheiros distribudos, sistemas de documentos distribudos, sistemas de coordenao e multimdia distribudos) e tambm conseguirem identificar, caracterizar e comparar os modelos de objectos e componentes (cf. CORBA/CCM, RMI/EJB, COM+/DCOM/.NET) existentes no mercado de middleware.
Finalmente, devem os alunos ser capazes de perceber e aplicar os conceitos e mecanismos de implementao de sistemas distribudos recorrendo tecnologia de rede disponvel em Java, i.e., invocao de mtodos em objectos remotos Remote Method Invocation (RMI) e Java networking.
ECTS:
Presencial: 8
No Presencial: 0
Total (Presencial + No Presencial): 8
Tipologia:
(x) Formao Especfica
( ) Formao Bsica
( ) Unidade Curricular de Opo
( ) Projecto de Graduao
Parcela (Horas)
Terica
Terico-Prtica: 32
Prtica
Prtica Laboratorial: 32
Ensino Clnico
Seminrio
Trabalho de Campo:
Estgio
Orientao Tutorial:
Avaliao:
Nota: 1 ECTS = 26 horas
Linguagens de Programao II (cf. Programao Orientada-Objectos em Java).
Lista de competncias a alcanar no final da unidade curricular de acordo com o formato dos Descritores de Dublin:
1. Conhecimento e capacidade de
compreenso:
1.1. Domnio sobre os vrios objectivos dos sistemas distribudos
1.2. Compreenso dos mecanismos de comunicao e principais modelos/ferramentas de desenvolvimento de sistemas distribudos
1.3. Domnio das principais tcnicas utilizadas na organizao do processamento, localizao e sincronizao de sistemas distribudos
1.4. Domnio sobre os modelos de replicao e de tolerncia a falhas aplicados no desenvolvimento de sistemas distribudos
1.5. Domnio sobre os mecanismos de segurana e coordenao utilizados em sistemas distribudos
2. Aplicao de conhecimentos e compreenso:
2.1. Conhecimentos para utilizar/aplicar conceitos, tecnologias e ferramentas (cf. sockets, RMI, Web services, etc.) na especificao e desenvolvimento de sistemas distribudos
2.2. Conhecimentos para compreender, desenvolver e instalar aplicaes distribudas
2.3. Conhecimentos para utilizar/aplicar modelos de replicao, coordenao e tolerncia a falhas no desenvolvimento de sistemas distribudos
3. Realizao de
julgamento/tomada de decises:
3.1. Capacidade para definir e escolher diferentes arquitecturas para sistemas distribudos
3.2. Capacidade para seleccionar e justificar diferentes ferramentas de desenvolvimento
3.3. Capacidade para escolher diferentes modelos de replicao e sincronizao
4. Comunicao:
4.1. Capacidade para descrever/explicar a arquitectura, tecnologias e funcionalidades de um sistema distribudo
4.2. Capacidade de apresentao e comparao de sistemas e tecnologias distribudas
4.3. Capacidades de comparao e justificao da utilizao de tecnologias e modelos de organizao distribudos
5. Competncias de auto-aprendizagem:
5.1. Capacidade/curiosidade para conhecer e aprofundar conhecimentos sobre sistemas distribudos
5.2. Capacidades de autonomia e de auto-disciplina para procurar solues alternativas e ultrapassar autonomamente dificuldades inerentes ao desenvolvimento de sistemas distribudos
0. Apresentao
0.1. Enquadramento e Objectivos
0.2. Contedo Programtico e Bibliografia
0.3. Metodologia e Sistema de Avaliao
1. Introduo aos Sistemas Distribudos
1.1. Definio
1.2. Objectivos e caractersticas dos sistemas distribudos
1.3. Middleware
1.4. Modelo cliente - servidor
2. Comunicao em Sistemas Distribudos
2.1. Protocolos por camadas
2.2. Tipos de comunicao entre processos
2.3. Comunicao por procedimentos remotos (RPC)
2.4. Comunicao por objectos remotos (RMI/CORBA/DCOM)
2.5. Comunicao assncrona (MOM)
2.6. Comunicao sncrona (fluxos de dados)
3. Processamento, Localizao e Sincronizao de Recursos
3.1. Identificao de entidades distribudas
3.2. Organizao de processamento distribudo (cf. processos, threads, agentes)
3.3. Localizao de recursos e entidades mveis
3.4. Cooperao e sincronizao temporal
3.5. Coordenao e gesto de recursos/estados
3.6. Gesto da concorrncia com regies crticas
3.7. Gesto da concorrncia com transaces
4. Replicao de Recursos e Tolerncia a Falhas
4.1. Modelos de consistncia
4.2. Protocolos de replicao/actualizao de recursos
4.3. Protocolos de gesto de consistncia
4.4. Gesto de grupos e mascaramento de falhas
4.5. Protocolos de coordenao de transaces (2PC/3PC)
4.6. Proteco e segurana
5. Ferramentas e Servios Remotos
5.1. Sistemas de componentes distribudos - Middleware
5.2. Aplicaes de sistemas distribudos
5.2.1. Sistemas de ficheiros distribudos
5.2.2. Sistemas de coordenao distribudos
5.3. Ferramentas baseadas em mtodos remotos (Java RMI)
5.3.1. Introduo e instalao das ferramentas de desenvolvimento
5.3.2. Arquitectura das camadas RMI
5.3.3. Descrio das entidades/recursos RMI
5.3.4. Localizao e referncia de objectos remotos
5.3.5. Aspectos de segurana
5.3.6. Passagem de parmetros e serializao
5.3.7. Distribuio e instalao de classes/objectos RMI
5.3.8. Servidores e clientes multi-thread
5.3.9. Ferramentas de networking (sockets, multicast)
5.3.10. Implementao de sistemas/servios distribudos
5.4. Comparao entre Java RMI vs .NET Remoting
5.4.1. Arquitectura e implementao
5.4.2. Protocolos/canais de comunicao e interoperabilidade
5.4.3. Passagem de parmetros por valor vs referncia
5.4.4. Registos/Servio de nomes
5.4.5. Ciclo de desenvolvimento e activao
5.5. Ferramentas baseadas em servios Web (Web Services - WS)
5.5.1. Objectivos e tecnologias de base
5.5.2. Arquitectura e elementos de suporte
5.5.3. Implementao de Web Services (WS)
Designao da unidade lectiva; Horas Contacto (HC) - (T+TP+P+L+TC+OT); Horas de Estudo Individual (HEI); ECTS; Bibliografia (B)
0. Apresentao; HC: 1
1. Introduo aos Sistemas Distribudo; HC: 4; HEI: 8; ECTS: 0,5; B: [1], [2]
2. Comunicao em Sistemas Distribudos; HC: 4; HEI: 8; ECTS: 0,5; B: [1], [2]
3. Processamento, Localizao e Sincronizao Recursos; HC: 12; HEI: 26; ECTS: 1,5; B: [1], [2]
4. Replicao de Recursos e Tolerncia a Falhas; HC: 12; HEI: 26; ECTS: 1,5; B: [1], [2]
5. Ferramentas e Servios Remotos; HC: 30; HEI: 76; ECTS: 4; B: [1], [2], [3], [4], [5]
Horas Contacto (TP+PL): 208
Horas Estudo Individual: 64
Horas Totais: 144
ECTS: 8
N ECTS = N horas/26
O sistema de avaliao desta disciplina segue na generalidade o regulamento pedaggico da UFP e define em especfico as seguintes regras de clculo:
1 -
Avaliao contnua
A avaliao compreende duas componentes: uma componente Terico-Prtica (TP) e uma componente Prtica-Laboratorial (PL). A classificao final da disciplina ser calculada atravs da seguinte expresso:
Nota final = 50% Nota Componente TP + 50% Nota Componente PL
Componente
Terico-Prtica (TP)
A componente TP realiza-se de forma contnua durante o semestre e inclui os seguintes elementos de avaliao:
Um teste de avaliao individual: incide sobre os conhecimentos leccionados at ao momento da sua realizao. O teste realiza-se no fim do semestre (em data a combinar com os alunos). O teste englobar, por exemplo, opes de escolha mltipla, verdadeiro/falso bem como a utilizao das tecnologias e ferramentas de desenvolvimento abordadas na implementao concreta de cenrios ou exemplos de servios distribudos.
Desempenho nas aulas: esta componente procurar avaliar a participao e o progresso dos alunos nas aulas e a capacidade para a realizao de exerccios.
A falta aos momentos de avaliao ser convertida numa nota 0 (zero) para efeitos de clculo da classificao. A classificao obtida na componente TP ser calculada atravs da seguinte expresso:
Nota Componente TP = 90% Teste + 10% Desempenho Aulas
Componente
Prtica-Laboratorial (PL)
A componente PL realiza-se de modo contnuo durante as aulas e atravs da realizao de projectos prticos realizados em grupo (mximo 2 alunos), sobre um ou mais temas propostos durante o semestre. A avaliao da componente PL inclui os seguintes elementos de avaliao:
Projecto Sistemas Distribudos: esta componente procurar estimular e avaliar a autonomia e o conhecimento na utilizao de diferentes tecnologias e ferramentas para a organizao e desenvolvimento de sistemas distribudos. Sero colocados vrios desafios aos alunos que devero implementar as respectivas solues, recorrendo s ferramentas de desenvolvimento existentes. Devero ser entregues dois relatrios: o 1 relatrio, entregue at meio do semestre (em data a especificar), dever conter a definio da arquitectura, modelos de dados e algoritmos de distribuio e sincronizao necessrios para a resoluo do problema; o 2 relatrio, entregue no final do semestre (em data a especificar), dever conter a arquitectura e modelos de distribuio implementados. Os alunos devero fazer ainda, em sala de aula, uma defesa e demonstrao das solues desenvolvidas.
Desempenho nas aulas: esta componente procurar avaliar a participao e o progresso dos alunos nas aulas e a capacidade para a realizao de exerccios.
A falta aos momentos de avaliao ser convertida numa nota 0 (zero) para efeitos de clculo da classificao. A classificao obtida na componente PL ser calculada atravs da seguinte expresso:
Nota Componente PL = 20% 1 Relatrio Projecto + 70% 2 Relatrio e Defesa Oral Projecto + 10% Desempenho Aulas PL
O acesso s pocas de exame, relativas apenas componente TP, faz-se de acordo com o regulamento pedaggico. A componente PL no pode ser efectuada por exame.
2 -
Exames
Os exames sero realizados de acordo com o regulamento pedaggico da UFP nos perodos previstos no cronograma e incidiro sobre a totalidade da matria includa no programa da disciplina. O docente poder solicitar o desenvolvimento de trabalhos com apresentao oral de modo a melhor aferir o nvel de conhecimentos e competncias alcanadas pelos alunos. A classificao final do aluno ser calculada utilizando a equao indicada acima.
[1] Coulouris G., Dollimore J., Kindberg T., Blair, G. S., Distributed Systems Concepts and
Design, 5th Ed., Addison-Wesley 2011.
[2] Tanenbaum, A., Steen, M., Distributed Systems, Principles
and Paradigms, Prentice Hall 2002.
[3] Sun Developers
Services, URL: http://developer.java.sun.com/developer/ (2009).
[4] Jian, Chen, Java
RMI vs .Net Remoting, White Paper, 2003,
http://students.cs.tamu.edu/jchen/cpsc689-608/comparison/l0c0607-framework_comp_lichen.pdf
(2007).
Computador Porttil
Netbeans, http://www.netbeans.org/downloads
Eclipse, http://www.eclipse.org/downloads
Eclipse RMI Plugin, http://rmi-eclipse.sourceforge.net
Apresentao dos objectivos, programa e mtodo de avaliao. Introduo aos sistemas distribudos: definio. Comunicao em sistemas distribudos. Processamento, localizao e sincronizao de recursos. Replicao de recursos e tolerncia a falhas. Sistemas de componentes distribudos – Middleware. Ferramentas e servios remotos – estudo do Java RMI, comparao entre o Java RMI vs .NET Remoting, Networking (sockets unicast e multicast), introduo aos servios web.
Presentation
of the goals, syllabus and evaluation methods. Introduction to distributed systems.
Communication issues in distributed systems. Processing, locating and
synchronizing resources. Resource replication and fault tolerance. Distributed
component systems – Middleware. Remote services and frameworks –
Java RMI case study, comparison between Java RMI vs .NET Remoting,
Networking (unicast and multicast sockets), introduction to web services.
Course Title: Sistemas Distribudos / Distributed Systems |
Code |
|||||
Language of Instruction PT
|
Assessment Method Exames & Projectos Exams
& Projects |
Level of Course Undergraduate |
Number of Credits 8 |
|||
Year of Studies |
Name of Lecturer Rui Moreira |
Spring Semester x |
Total Hours: 208 |
|||
Course Objectives: Apresentao
dos objectivos e assuntos relacionados com a comunicao em Sistemas
Distribudos. Estudar os mecanismos de localizao, sincronizao e gesto de recursos e as aplicaes em
sistemas distribudos. Abordar ainda os sistemas de objectos e componentes
distribudos – Middleware. Presentation of the goals and Communication issues
of distributed systems. Study the mechanisms for locating, synchronizing and
managing resources. Surveying applications of distributed systems and
existing distributed objects/components system (Middleware). |
||||||
Course
Description: 1.
Introduo aos Sistemas Distribudos 2.
Comunicao em Sistemas Distribudos 3.Processamento,
Localizao e Sincronizao de Recursos 4.
Replicao de Recursos e Tolerncia a Falhas 5.
Ferramentas e Servios Remotos |
1. Introduction to distributed
systems 2. Communication issues in
distributed systems 3. Processing, locating and
synchronizing resources 4. Resource replication and fault
tolerance 5. Frameworks and remote services |
|||||
Obligatory Reading |
[1] Coulouris G., Dollimore J., Kindberg T.,
Blair, G. S., Distributed Systems Concepts and Design, 5th Ed.,
Addison-Wesley 2011. [2] Tanenbaum, A., Steen,
M., Distributed Systems, Principles and Paradigms, Prentice Hall 2002. [3] Moreira, R., FORMAware:
Framework Of Reflective components for Managing architecture Adaptation, PhD
Thesis, Lancaster University, October 2003. [4] Sun Developers Services, URL:
http://developer.java.sun.com/developer/ (2009). [5] Jian, Chen, Java RMI vs .Net Remoting,
White Paper, 2003,
http://students.cs.tamu.edu/jchen/cpsc689-608/comparison/l0c0607-framework_comp_lichen.pdf
(2007). |
|||||
Supplementary Reading |
[6] Orfali,
R., Harkey, D. Client/Server
Programming with Java and CORBA, 2nd Edition, Wiley Computer
Publishing, 1998. |
|||||
Method of Teaching |
Aulas
tericas e prticas / Theoretical and practical classes |
|||||
Prerequisites |
Conhecimentos
de programao OO & Redes de Computadores Knowledge
of OO programming & Computer Networking |
|||||
Assessment method |
Exames
& trabalhos / Exams & projects |
|||||
Responsible person |
Rui Moreira |
e-mail:
rmoreira@ufp.edu.pt |
||||
Modelo A3ES: Sistemas Distribudos
Neste curso pretende-se que os alunos adquiram conhecimentos slidos sobre as arquitecturas, modelos e protocolos de gesto de sistemas distribudos. Os alunos devero conseguir definir e caracterizar diferentes tipos de sistemas distribudos, nomeadamente os seus objectivos, servios de middleware envolvidos e variantes arquitecturais ao modelo base Cliente-Servidor. Devero ainda conseguir caracterizar as tcnicas e os modelos de comunicao mais utilizados em sistemas distribudos, e.g., invocao remota de mtodos, comunicao assncrona (mensagens) e comunicao sncrona (streaming). Pretende-se tambm introduzir algumas ferramentas usadas no desenvolvimento de aplicaes distribudas (e.g., RMI/EJB, CORBA/CCM, DCOM/.NET, Web Services). Os alunos devero ficar capazes de aplicar os conceitos e mecanismos de implementao de sistemas distribudos recorrendo a tecnologias existentes (e.g., invocao de mtodos em objectos remotos (RMI) e Web Services).
In this course students
should acquire solid knowledge about the most common architectures, management models
and protocols used in distributed systems. Students should be able to define
and characterize different types of distributed systems, namely the objectives,
middleware services involved and architectural variants of the client-server base
model. Students should also be able to characterize the most used techniques
and patterns of communication in distributed systems, e.g., remote method
invocation, asynchronous communication (message-based) and synchronous
communication (streaming). It is also intended to introduce some tools used in
the development of distributed applications (e.g., RMI / EJB, CORBA / CCM, DCOM
/ .NET, Web Services). Students should be able to apply the concepts and
implementation mechanisms of distributed systems by using existing technologies
(e.g., invoking methods on remote objects (RMI) and Web Services).
1. Introduo aos Sistemas Distribudos
2. Comunicao em Sistemas Distribudos
3. Processamento, Localizao e Sincronizao de Recursos
4. Replicao de Recursos e Tolerncia a Falhas
5. Ferramentas e Servios Remotos
1. Introduction to
Distributed Systems
2. Communication in
Distributed Systems
3. Processing,
Location & Synchronization of Resources
4. Replication of
Resources and Fault Tolerance
5. Tools and Remote Services
Os contedos programticos so coerentes com os objectivos de aprendizagem na medida em que focam os principais temas tradicionalmente abordados em sistemas distribudos. Em particular comea-se por caracterizar os diferentes objectivos e aspectos inerentes aos sistemas distribudos bem como as tecnologias e servios que esto na base destes sistemas. Particulariza-se o estudo dos tipos de comunicao utilizados e abordam-se os modelos de localizao, replicao e sincronizao de recursos bem como a gesto de actualizaes, concorrncia e tolerncia a falhas. Paralelamente abordam-se na prtica tecnologias utilizadas na implementao de sistemas distribudos, nomeadamente atravs da invocao de mtodos remotos e web services. Os objectivos da aprendizagem esto portanto alinhados com os temas abordados ao nvel terico como tambm com os exemplos prticos concretizados por via de exerccios e projetos implementados recorrendo a ferramentas de middleware existentes.
The presented contents
are consistent with the learning objectives since these focuses the main issues
traditionally addressed in distributed systems. In particular we start by
characterizing the different objectives and aspects inherent to distributed
systems and the technologies and services that underlie these systems. In
particular we start to address the different types of communication used in
distributed systems and also the models of location, replication and
synchronization as well as the management mechanisms for updates, fault
tolerance and concurrency. In parallel we address in practice some of the existing
technologies used in the implementation of distributed systems, in particular the
invocation of remote methods and web services. The learning objectives are
therefore aligned with the theoretical themes as well as the practical examples
achieved by means of exercises and projects implemented using currently
available market tools.
Esta unidade curricular est organizada em aulas terico-prticas (TP) e prticas (PR). A metodologia de ensino utilizada no mbito das aulas TP baseia-se na exposio oral dos contedos programticos bem como na discusso das principais questes sobre os temas abordados. Paralelamente, no contexto das aulas prticas laboratoriais, os alunos tm oportunidade de contactar com ferramentas de software (cf. RMI, Web Services) vulgarmente utilizadas e aplicadas no desenvolvimento de sistemas distribudos. A avaliao contnua, contemplando em partes iguais a componente TP e PR. A componente TP avaliada por um exame realizado no final do semestre. A componente PR avaliada pelo planeamento e implementao de um projecto de um sistema/servio distribudo cujos requisitos so propostos durante o semestre.
This course is organized
into theoretic-practical (TP) and practical classes (PR). The teaching
methodology used within TP classes is based on the oral presentation of the contents
as well as the discussion of the main issues about the covered topics. In
parallel, the context of laboratory classes provide students the opportunity to
contact with software tools (cf. RMI, Web Services) usually
used for developing distributed systems. The assessment is continuous,
contemplating with equal weight both the TP and PR components. The TP component
is assessed by an exam at the end of the semester. The PR component is assessed
through the planning and implementation of a project for a distributed
system/service whose requirements are proposed during the semester.
As metodologias de ensino aplicadas nesta unidade curricular procuram levar os alunos a conhecer os modelos e arquitecturas de planeamento e gesto de sistemas distribudos, bem como a desenvolver competncias na identificao e implementao dos requisitos para estes sistemas. A vertente proporcionada pelas aulas prticas permite um contato com tecnologias actualmente utilizadas no desenvolvimento de sistemas distribudos numa lgica de servios, tecnologias de invocao de mtodos remotos e servios web. Esta experincia e contacto com contextos prticos especficos permite ainda melhorar as capacidades de anlise e reflexo sobre sistemas ou servios existentes, sendo essencial na obteno de competncias tcnicas e de desenvolvimento nesta rea.
Teaching methodologies
applied in this course seek to lead students to know the models and
architectures used when planning and managing distributed systems, and to
develop skills for identifying and implementing the necessary requirements for
these systems. The practical classes allow the contact with current
technologies used in the development of distributed systems using a logic of services, remote method invocation technologies
and web services. This experience and contact with specific practical contexts
also improve the analysis and reflection capacities of students with respect to
existing systems, which is essential in obtaining technical and development
skills in this area.
[1] Coulouris G., Dollimore J., Kindberg T., Blair, G. S., Distributed Systems Concepts and
Design, 5th Ed., Addison-Wesley 2011.
[2] Tanenbaum, A., Steen, M., Distributed Systems, Principles
and Paradigms, Prentice Hall 2002.
[3] Sun Developers
Services, URL: http://developer.java.sun.com/developer/ (2009).
[4] Jian, Chen, Java RMI vs .Net Remoting, White Paper, 2003, http://students.cs.tamu.edu/jchen/cpsc689-608/comparison/l0c0607-framework_comp_lichen.pdf (2007).