Um Estudo sobre Mobilidade em Sistemas Distribuídos

Tamanho: px
Começar a partir da página:

Download "Um Estudo sobre Mobilidade em Sistemas Distribuídos"

Transcrição

1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA CURSO DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Um Estudo sobre Mobilidade em Sistemas Distribuídos por DÉBORA NICE FERRARI T.I. 780 CPGCC-UFRGS Trabalho Individual II Prof. Dr. Cláudio Fernando Resin Geyer Orientador Porto Alegre, fevereiro de 1999

2 2 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL Reitora: Profa. Wrana Panizzi Pró-Reitora de Pós-graduação: Profa. Lorena Holzmann da Silva Diretor do instituto de Informática: Philipe Oliver Navaux Coordenador do CPGCC: Carla Freitas Bibliotecária-Chefe do Instituto de Informática: Zita Prates de Oliveira

3 3 Sumário SUMÁRIO... 3 LISTA DE FIGURAS...4 LISTA DE TABELAS... 5 RESUMO... 6 ABSTRACT INTRODUÇÃO TEMA MOTIVAÇÃO OBJETIVOS ESTRUTURA DO TEXTO MOBILIDADE CONCEITOS MECANISMOS PARADIGMAS PARA MOBILIDADE Avaliação Remota Código em Demanda Agentes Móveis CONCLUSÕES MOBILIDADE EM OBJETOS E AGENTES PARADIGMA ORIENTADO À OBJETOS PARADIGMA ORIENTADO A AGENTES AGENTES MÓVEIS CONCLUSÕES TECNOLOGIAS PARA SUPORTE À MOBILIDADE FERRAMENTAS PARA SUPORTE À MOBILIDADE Java Obliq Oz Distribuído CORBA AMBIENTES QUE PERMITEM EXPLORAR MOBILIDADE Voyager Aglets Concordia APLICAÇÕES CONCLUSÕES ANÁLISE COMPARATIVA DAS TECNOLOGIAS QUE SUPORTAM MOBILIDADE ANÁLISE COMPARATIVA DAS FERRAMENTAS CONCLUSÕES CONCLUSÃO...45 BIBLIOGRAFIA...47

4 4 Lista de Figuras FIGURA Mecanismos de Mobilidade 13 FIGURA Arquitetura de Gerenciamento de Objetos (OMA) 29 FIGURA Objeto Voyager 32 FIGURA Criação de um programa Voyager 32 FIGURA Arquitetura do Concordia 35

5 5 Lista de Tabelas TABELA 1 - Ferramentas para suporte à mobilidade 42 TABELA 2 - Ambientes para explorar mobilidade 44

6 6 Resumo O número de aplicações distribuídas criadas para serem usadas na Internet aumentou consideravelmente nos últimos anos. Uma das mais complexas questões nestas aplicações diz respeito à mobilidade das entidades envolvidas na computação distribuída. Neste texto define-se mobilidade como a capacidade das entidades computacional deslocar-se de um ambiente para outro, através do sistema distribuído. Os estudos sobre mobilidade intensificaram-se com o uso em grande escala da Internet. Atualmente, a maioria das aplicações de mobilidade são desenvolvidas utilizando ou baseando-se nos paradigmas de orientação a objetos ou de agentes. Pode-se observar que estes dois paradigmas, estão cada vez mais presentes no desenvolvimento de aplicações para Internet. Considerando os aspectos acima mencionados e o interesse crescente da comunidade científica com relação à mobilidade, este trabalho procura estudar aspectos referente à mobilidade em sistemas distribuídos envolvendo agentes e objetos. Neste texto são abordados assuntos importantes como os fundamentos que envolvem os estudos em mobilidade, resultados dos estudos envolvendo mobilidade em objetos e agentes, tecnologias e aplicações para suporte à mobilidade. Apresenta-se também uma análise comparativa referente à mobilidade dos sistemas distribuídos apresentados neste trabalho. Palavras-chave: Orientação a Objetos, Agentes Móveis, Mobilidade, Sistemas Distribuídos. Abstract In the last few years, the number of Internet-based distributed applications increased meaningfully. One of the most complex issues involving these applications are related to entity mobility. This text defines mobility as the capacity of an computational entity to relocate itself from an environment to another one, through the distributed system. Research on mobility had been intensified with the Internet large-scale use. Currently, the majority of mobility applications is developed using or being based on object oriented or agents paradigms. Note that these two paradigms are even more present in the development of applications for Internet. Considering the aspects mentioned above and the scientific community increasing interest with relation to mobility, in this work are presented mobility aspects in distributed systems involving agents and objects. These aspects include: the fundamental concepts of mobility research, results of studies involving mobility in objects and agents, technologies and applications for mobility support. An comparative analysis related to mobility in distributed systems is also presented in this work. Keyword: Objects, Mobile Agents, Mobility, Distributed Systems.

7 7 1 Introdução 1.1 Tema O paradigma orientado a objetos e o paradigma de agentes são interesses constantes da comunidade científica, principalmente em ambientes distribuídos. Sendo assim, surgiram modelos para computação distribuída de objetos e agentes. Uma das mais complicadas questões envolvendo ambientes distribuídos com estas características diz respeito à mobilidade nesses dois paradigmas. O texto [GLA 98] define mobilidade como a habilidade de mover-se independentemente de um dispositivo para outro através da rede. Como é visto no capítulo 2, vários conceitos sobre mobilidade são encontrados na literatura. O tema deste trabalho é o estudo da mobilidade em sistemas distribuídos, principalmente envolvendo objetos e agentes. 1.2 Motivação A rápida disseminação de microcomputadores e estações de trabalho, o aumento nas suas capacidades de processamento, e o surgimento de redes de comunicação com grande largura de banda, têm levado ao desenvolvimento cada vez maior de aplicações distribuídas. Os sistemas distribuídos apresentam várias características que são objetos de constante pesquisa na busca de soluções, tais como: afastamento, concorrência, ausência de estado global, ocorrência de falhas parciais, assincronismo, heterogeneidade, autonomia e mobilidade. Diversos modelos de arquitetura distribuída têm sido desenvolvidos com o objetivo de oferecer conceitos que auxiliem o tratamento das características de distribuição citadas acima. A característica de heterogeneidade, presente em grande parte destes modelos, impõe a necessidade de especificações abertas, com interfaces padronizadas e públicas, levando ao desenvolvimento de middlewares abertos. Um middleware é uma camada de software, residente acima do sistema operacional e da camada de comunicação, que oferece abstrações de alto nível, com objetivo de facilitar a programação distribuída. As abstrações oferecidas fornecem uma visão uniforme na utilização de recursos heterogêneos existentes nas camadas de sistema operacional e redes[omg 95]. Ambientes de sistemas abertos permitem aos usuários escolherem entre um grupo de computadores e tecnologias, aqueles que se adequam a suas necessidades. Esses sistemas oferecem também uma crescente interoperabilidade, escalabilidade e portabilidade. A interoperabilidade permite que sistemas diferentes convivam juntos. Já a portabilidade permite que um software desenvolvido em uma plataforma possa executar em outra com adaptações mínimas. A escalabilidade permite que novos recursos, tanto hardware quanto software, sejam adicionados ao sistema a medida que há necessidade de novos recursos ou de aumento do poder de processamento. Juntamente com estes adventos quanto aos sistemas distribuídos, surgiram várias frentes de pesquisas para que as organizações pudessem explorar ao máximo os sistemas

8 8 distribuídos. Dentre estas linhas de pesquisa, este texto destaca à mobilidade em sistemas distribuídos como sendo a principal motivação para este trabalho. O estudo sobre mobilidade abrange tanto aspectos conceituais, quanto sistemas e linguagens. A orientação a objetos tornou-se um dos principais padrões no desenvolvimento de sistemas. As linguagens orientadas a objeto tentam propor a diminuição da distância semântica existente entre a modelagem computacional e o mundo real. Neste sentido, surgem os objetos e suas diversas características (herança, polimorfismo, encapsulamento, etc). Desta forma, a orientação a objetos tenta alcançar um nível de abstração que aproxima a programação de computadores à forma usual do homem interagir com o mundo. Da mesma forma, nos últimos anos vem crescendo o interesse dos cientistas da computação pelo paradigma orientado a agentes. O desenvolvimento orientado a agentes possui uma forte relação com o desenvolvimento orientado a objetos. O conceito de agentes introduz consciência no universo inanimado dos objetos. Esta é uma das contribuições do paradigma orientado a agentes [BAR 98]. Tanto objetos como agentes são amplamente usados pela comunidade científica em ambientes distribuídos. Sendo assim, surgiram modelos para computação distribuída de objetos e agentes. Um dos fatores principais nestes ambientes diz respeito à mobilidade destas entidades. Os estudos sobre mobilidade intensificaram-se com o uso em grande escala da Internet. Embora à mobilidade não seja uma concepção nova, pois redes locais já usam uma formas de mobilidade como migração, a Internet trouxe a possibilidade de explorar mobilidade através de redes heterogêneas, conectadas por diferentes links de comunicação e distantes uma das outras. Atualmente, a maioria das aplicações são desenvolvidas utilizando ou baseando-se na orientação a objetos. Da mesma forma, várias aplicações, principalmente na área de Informática na Educação e Inteligência Artificial, são desenvolvidas usando como entidade base o agente. O que pode-se observar é que estas duas entidades, objetos e agentes, estão cada vez mais presentes no desenvolvimento de aplicações para serem usadas na Internet. Talvez o que tenha auxiliado muito para que isto acontecesse é o uso cada vez maior da linguagem Java [SUN 96], como linguagem de programação destas aplicações. É importante observar que a exploração da mobilidade envolve muito a questão da localização. Uma premissa básica é que o usuário não necessita saber, se assim o quiser, onde a sua computação está sendo desenvolvida, pois a aplicação deve abstrair aspectos de localização do usuário. Outra questão importante em mobilidade é a segurança. Como a computação é distribuída através da rede, a integridade desta computação deve ser preservada. No desenvolvimento de aplicações que suportem mobilidade, a tolerância a falhas e segurança da computação deve sempre estar presente. Além destes aspectos, à mobilidade traz novos desafios ao desenvolvimento de aplicações distribuídas, como pensar à mobilidade durante o projeto de software. Para suportar mobilidade de forma transparente para o usuário, a noção de ambiente computacional deve estar presente. Este ambiente será elemento principal no suporte à mobilidade das entidades envolvidas.

9 9 Considerando os aspectos acima mencionados e o interesse crescente da comunidade científica com relação à mobilidade em ambientes distribuídos, este trabalho procura compreender o estado da arte e os problemas relacionados à mobilidade em sistemas distribuídos. 1.3 Objetivos O objetivo geral deste trabalho consiste em estudar os aspectos relacionados à mobilidade de objetos e agentes em ambientes distribuídos. Como objetivos específicos podem ser destacados: Pesquisar conceitos relacionados à mobilidade; Pesquisar o estado da arte relacionado à mobilidade em sistemas distribuídos, em especial envolvendo objetos e agentes; Estudar tecnologias para o desenvolvimento de aplicações que suportem mobilidade; Identificar características necessárias para que uma tecnologia de apoio ao desenvolvimento de aplicações que suportem mobilidade. 1.4 Estrutura do Texto Este texto é composto de seis capítulos. O capítulo 2 descreve os fundamentos que envolvem os estudos em mobilidade. O capítulo 3 apresenta o resultado dos estudos envolvendo mobilidade em sistemas distribuídos. Além disso, será apresentado, brevemente, os fundamentos dos paradigmas orientado a agentes e orientado a objetos. No capítulo 4 são apresentadas algumas tecnologias e aplicações para suporte à mobilidade. Merece destaque neste capítulo Voyager [OBJ 97] [OBJ 98]. No capítulo 5 é feita uma comparação referente à mobilidade em sistemas distribuídos apresentadas neste trabalho. Finalmente, o capítulo 6 contém as conclusões deste trabalho.

10 10 2 Mobilidade Este capítulo descreve os fundamentos que envolvem os estudos de mobilidade. As seções contêm os conceitos necessários para compreender o universo que envolve as aplicações que utilizam mobilidade. A seção 2.1 analisa conceitos relacionados à mobilidade conforme vários autores. A seção 2.2 descreve os mecanismos que permitem explorar mobilidade. A seção 2.3 explora aspectos relacionados aos paradigmas que exploram mobilidade. Finalmente, a Seção 2.4 faz uma síntese das demais seções concluindo o capítulo. 2.1 Conceitos Por ser uma área de pesquisa relativamente nova, as pesquisas que envolvem mobilidade conceituam este termo de várias formas. A maioria refere-se à mobilidade através do termos código móvel (mobile code) [FUG 98] [CAR 97] [THO 97] [CUG 96] e agentes móveis (mobile agent) [DÖM 97] [CHE 96] [KNA 96]. Estes termos são conceituados de diferentes formas por diferentes pesquisadores: Mobilidade é a habilidade de mover-se independentemente de um dispositivo para outro através da rede [GLA 98]; Código móvel pode ser definido como a capacidade de dinamicamente trocar as ligações entre os fragmentos de código e a localização onde o código é executado [CUG 98] [FUG 98] [CAR 97]; Código móvel é um software que viaja através de redes heterogêneas, atravessando vários domínios, sendo que é automaticamente executado quando chega em seu destino [THO 97]; Agentes móveis são programas que podem ser disparados de um computador cliente e transportado para um computador remoto para ser executado [CHE 96]; Agentes móveis são programas que podem se mover através de uma rede de computadores conforme queiram seus usuários [DÖM 96]; Agentes móveis são programas inteligentes que podem ser transmitidos entre os diversos computadores de um sistema distribuído [KNA 96]. Observando os itens acima, pode-se notar um elemento presente em todos os conceitos: o deslocamento das entidades envolvidas (objetos ou agentes). Sendo assim, pode-se dizer que mobilidade é a ca pacidade das entidades envolvidas na computação deslocarem-se através de um sistema distribuído. Mobilidade não é uma concepção nova, embora sua aplicação na Internet seja. Um exemplo é a migração, pois migrar processos ou objetos é uma forma de mobilidade, que já é usada em pequena escala. As pesquisas em mobilidade vem crescendo muito atualmente devido principalmente a possibilidade de explorar código móvel em grande escala através da Internet, onde as redes interligadas são heterogêneas e gerenciadas por organizações diferentes.

11 Mecanismos Tecnologias que exploram mobilidade devem prover mecanismos que suportem o deslocamento de suas entidades. Estes mecanismos necessitam de uma estrutura computacional que suporte à mobilidade. Sendo assim, a concepção de um ambiente computacional (Computational Environment) deve ser introduzida para suportar os diversos mecanismos necessários à mobilidade. Um ambiente computacional retêm a identidade do nodo onde está localizado dando suporte para que as aplicações tenham a capacidade de recolocar dinamicamente seus componentes em diferentes ambientes computacionais. Um exemplo de ambiente computacional é a máquina virtual Java (Java Virtual Machine). O texto [FUG 98] trata mobilidade através do termo código móvel. O texto também destaca que um ambiente computacional é uma espécie de container para as entidades envolvidas na computação, chamadas componentes. Estes podem ser unidades de execução ou recursos. Unidade de execução representa a entidade básica da linguagem, um objeto por exemplo, através de um fluxo seqüencial da computação. Uma unidade de execução é composta pelo segmento de código, que contém a descrição estática do comportamento da computação, e um estado. Recursos representam entidades que podem ser compartilhadas por múltiplas unidades de execução, como uma variável do sistema operacional por exemplo. A princípio, cada unidade de execução pode mover-se independentemente. Em alguns sistemas que exploram código móvel, o código e o estado da unidade de execução podem estar em diferentes ambientes computacionais. À mobilidade é determinada pela característica do sistema. Por exemplo, em Java é possível mover somente o código de um Applet [SUN 96]. Já em Java Aglet [LAN 97], tanto o código quanto o estado são movidos. Podem ser identificadas duas formas de mobilidade [FUG 98]: mobilidade forte e mobilidade fraca. Mobilidade forte permite que a unidade de execução possa mover seu código e o estado da computação para diferentes ambientes computacionais. Neste caso, a execução é suspensa, transmitida para o ambiente computacional destino, e sua execução é retomada. Mobilidade fraca permite transferir código de um ambiente computacional para outro. O código pode conter alguns dados inicializados, mas o estado da unidade de execução não é movido. A figura 2.1 apresenta uma classificação dos mecanismos de mobilidade [FUG 98].

12 12 Mobility mechanisms Code and execution state management Strong mobility Migration Remote Cloning Proactive Reactive Proactive Reactive Data space management Weake mobility Binding removal Network reference Re-binding By copy By Move Code shipping Code fetching Stand-alone code Code fragment Stand-alone code Code fragment Synchronous Asynchronous Imediate Synchronous Deferred Asynchronous Imediate Synchronous Asynchronous Deferred Imediate Synchronous Deferred Asynchronous Imediate Deferred FIGURA Mecanismos de Mobilidade Mobilidade forte pode ser explorada através de dois mecanismos: migração (migration) e clone remoto (remote cloning). O mecanismo de migração suspende a execução de uma unidade de execução, transmite para o ambiente computacional destino e retoma sua execução. A migração pode ser proativa (proactive) ou reativa (reactive). Na primeira, o tempo e o destino da migração são determinadas pela unidade de execução migrante. Na segunda, a migração é acionada por diferentes unidades de execução que tenham alguma espécie de ligação com a unidade de execução migrante. O mecanismo de clone remoto cria uma cópia da unidade de execução no ambiente computacional remoto. A unidade de execução não é isolada do ambiente computacional origem. Como na migração, o clone remoto pode ser proativo ou reativo. Mecanismos que suportam mobilidade fraca têm a capacidade de transferir código através de ambientes computacionais e ligar-se dinamicamente com uma unidade de execução ativa ou criar uma nova unidade de execução no ambiente remoto para a execução. Estes mecanismos podem ser classificados de acordo com a direção da transferência do código, a natureza do código movido, a sincronização envolvida e o momento em que o código é executado no ambiente remoto. Conforme a direção do código a ser transferido, uma unidade de execução pode trazer (fetching) o código para ser dinamicamente ligado e/ou executado, ou pode levar (shipping) o código para outro ambiente computacional. Nos dois casos, o código a ser transferido pode ser um código autônomo (stand-alone code) ou fragmentado (code

13 13 fragment). No primeiro caso, no ambiente computacional destino é criada uma unidade de execução para executar o código que chega. No segundo caso, a unidade de execução deve ligar-se com um contexto que esteja executando o código ou que eventualmente o tenha executado. Além disso, tanto no código autônomo como no fragmentado, estes mecanismos podem ser síncronos (synchronous) ou assíncronos (asynchronous), dependendo se a unidade de execução que solicita a transferência fica suspensa ou não até que o código seja executado. No modo assíncrono, a execução do código transferido pode ser imediata (imediate), isto é, o código é executado logo que recebido ou postergada (deferred), isto é, espera alguma condição ser satisfeita para iniciar a execução. Após a migração de uma unidade de execução para um novo ambiente computacional, sua ligação com os recursos que acessa deve ser reorganizada. Por exemplo, a unidade de execução pode necessitar acessar um arquivo, portanto, ela deve estar apta a acessar este arquivo mesmo que este esteja em outro local. Isto pode envolver novas ligações ou sempre migrar alguns recursos necessários a computação junto com a unidade de execução, dependendo da natureza do recurso e da aplicação. Por isto é necessário o gerenciamento do espaço de dados. Os recursos podem ser transferíveis ou não-transferíveis através da rede. Por exemplo, um recurso do tipo arquivo pode ser transferível mas um recurso do tipo impressora não. Recursos transferíveis podem ser marcados como livres ou fixos. O primeiro pode migrar para outro ambiente computacional, enquanto que o último deve sempre permanecer associado ao ambiente computacional. Na reorganização dos recursos, duas classes de problemas devem ser analisados quando uma unidade de execução desloca-se através da rede: realocação de recursos e reconfiguração das ligações. Para isto deve ter um gerenciamento do espaço de dados (data space management). A estratégia para gerenciar os recursos e os dados envolvidos na transferência de código pode variar de sistema para sistema. Os mecanismos mais usados são: remoção das ligações (binding removal) - quando a unidade de execução migra, as ligações são simplesmente descartadas. Pode-se observar que esta estratégia geralmente é usada quando há migração da entidade envolvida na computação, portanto, num tipo de mobilidade forte; referência na rede (network reference)- quando um recurso é não transferível, a ligação na unidade de execução com o recurso é modificada para referenciar o recurso no ambiente computacional fonte, depois que a unidade de execução tenha alcançado o ambiente computacional destino. Referência na rede geralmente é usada quando à mobilidade forte é explorada, através do clone remoto; re-ligação (re-binding) - no ambiente computacional remoto há um recurso do mesmo tipo que é referenciado na unidade de execução que chega. Sendo assim, a ligação com o recurso no ambiente computacional fonte é desfeita, e uma nova ligação apontando para o recurso no ambiente computacional destino é criada. Esta estratégia é usada quando à mobilidade fraca é explorada, na forma de levar ou trazer código fragmentado;

14 14 por cópia (by copy)- uma copia do recurso é criada, e a ligação é modificada para referenciar a cópia e esta é transferida junto com a unidade de execução para o ambiente computacional destino. Pode-se observar que o mecanismo por cópia é associado ao clone remoto, portanto explorando uma mobilidade forte; por movimento (by move)- o recurso é transferido junto com a unidade de execução para o ambiente computacional destino mas a ligação com o ambiente computacional fonte não é desfeita. Esta estratégia é usada em aplicações que exploram mobilidade fraca. 2.3 Paradigmas para mobilidade Abordagens tradicionais para projeto de software não são suficientes quando necessitase projetar aplicações distribuídas em larga escala que exploram código móvel e reconfiguração dinâmica dos componentes do software. Neste caso, a distribuição dos componentes para diferentes ambientes deve ser pensada durante o projeto de software. Também deve-se considerar os aspectos que diferenciam a interação entre componentes locais em ambientes remotos. Dentre esses aspectos cita-se uma maior latência de comunicação, maior tempo para acesso a memória não local, mais pontos de falha e necessidade de utilização de mecanismos para controle de concorrência e sincronização. Portanto, é importante identificar paradigmas para projeto de sistemas distribuídos explorando código móvel. Além disso, deve-se identificar a tecnologia mais adequada para implementação do paradigma. Os paradigmas apresentados a seguir podem ser vistos como um guia de referência para o projeto de aplicações distribuídas que comportam mobilidade. Antes de introduzir os paradigmas, é necessário apresentar algumas concepções básicas que abstraem as entidades envolvidas no sistema como arquivos, variáveis, código executável ou processos. As abstrações básicas são as seguintes [CAR 97]: Componentes - são os elementos que compõem a arquitetura. Podem estar dividos em : componente recurso: é o componente embutido na arquitetura que representa dados passivos ou dispositivos físicos; componente computacional: representa o fluxo de controle da computação. É caracterizado por um estado e ligações com outros componentes; Interações - são eventos que envolvem dois ou mais componentes. Por exemplo, uma mensagem trocada entre dois componentes computacionais pode ser considerada como uma interação entre eles; Sites - são os ambientes de execução. Eles suportam a execução dos componentes computacionais. Sites tem ligados a si a noção de localização [FUG 98]. Interações entre componentes no mesmo site são consideradas pouco expressivas se relacionadas com interações em sites diferentes, pois como os recursos estão locais, as interações acontecem de forma mais rápida e sem problemas de latência da rede, acesso aos recursos, tempo de acesso, etc.

15 15 O paradigma é descrito em termos de padrões de interações que definem a re-colocação e a coordenação entre componentes necessários para realizar um serviço. Conforme [FUG 98], são três os principais paradigmas que exploram código móvel: Avaliação Remota, Código em Demanda e Agentes Móveis. Estes paradigmas são caracterizados pela localização dos componentes antes e depois da execução dos serviços, pelo componente computacional que é responsável para execução do código e onde a computação acontece. Paradigmas para código móvel tem explicitamente a noção de localização. Assim, é possível modelar, a nível de projeto, custos para interações entre componentes. Em geral, conforme [FUG 98], interações entre componentes que compartilham a mesma localização tem um custo considerado negligenciável quando comparado a interações entre sites através da rede. A escolha do paradigma a ser explorado deve ser pensado caso a caso, de acordo com o tipo de aplicação Avaliação Remota De acordo com o paradigma de Avaliação Remota, um componente de um sistema que suporta mobilidade pode invocar serviços providos por outros componentes, que estão distribuídos pelos nodos da rede, através do fornecimento dos dados necessários para desenvolver o serviço bem como o código que descreve como o serviço é feito. Avaliação Remota pode ser explicada da seguinte forma: um componente A, no site A, sabe (conhecimento) como realizar uma determinada tarefa (serviço) mas não tem os recursos necessários para que ela seja feita. Estes recursos estão localizados em outro site (site B). Conseqüentemente, A envia o conhecimento de como fazer o serviço para o componente computacional localizado no site remoto. O componente B realiza o serviço utilizando os recursos nele contidos. Após a execução, há novamente uma interação entre os dois componentes para enviar o resultado da computação de volta para A. Este paradigma é semelhante a abordagem cliente-servidor, onde os serviços são executados em um servidor que contém os recursos e o conhecimento necessário para executar uma tarefa. A semelhança pode ser verdadeira se todos os recursos, e a forma de manipulação destes, estão ligados a um servidor da rede. No paradigma de Avaliação Remota, o cliente sabe como executar uma tarefa, mas o recurso pode encontrar-se em outro computador da rede. Neste caso, o conhecimento é transmitido para onde está o recurso, sendo que no computador destino pode existir somente o recurso em si, mas não o conhecimento necessário para manipulá-lo Código em Demanda Na abordagem de Código em Demanda, o código que descreve o comportamento de um componente em um sistema que suporta mobilidade pode ser buscado em um site remoto para ser executado localmente. Exemplificando este paradigma, um componente A tem acesso aos recursos localizados no Site A mas não tem o conhecimento de como manipular estes recursos. Portanto, A interage com o componente B no Site B, requisitando o conhecimento para acessar o recurso. Uma segunda interação acontece

16 16 quando B envia o conhecimento para A e este realiza a computação (abordagem contraria a Avaliação Remota) Agentes Móveis No paradigma Agentes Móveis, onde os agentes são considerados unidades de execução [CUG 96], todo o componente computacional é movido para o site remoto, inclusive o seu estado, o código e alguns recursos necessários para o desenvolvimento da tarefa. Para exemplificar, um componente A é dono do conhecimento, que esta no Site A, para realizar alguns serviços. Só que em um determinado momento da execução, ele necessita de alguns recursos que estão no Site B. Então A migra para o Site B carregando o conhecimento necessário para executar uma tarefa. Ao mover-se para o site remoto, A completa o serviço neste site. Este paradigma é diferentes dos outros paradigmas, pois nestes o foco é a transferência de código entre componentes enquanto que no paradigma de agentes móveis o código e o estado da computação são movidos para o site remoto (migração). 2.4 Conclusões Este Capítulo descreveu os fundamentos que envolvem os estudos em mobilidade, necessários para compreender o universo que envolve as aplicações que utilizam mobilidade. Pode-se observar que o conceito de mobilidade não é consenso entre a comunidade científica que se dedica a estudar o assunto. Vários autores entendem mobilidade de forma diferenciada, embora sejam unânime em um aspecto: o deslocamento da entidade envolvida na computação móvel. Desta forma, pode-se dizer que mobilidade, como o próprio nome diz, pressupõe que a entidade base da computação possa mover-se de um ambiente computacional para outro. O texto [FUG 98] apresenta uma estrutura conceitual para compreender código móvel. O texto tem várias contribuições. Entre elas, um conjunto de termos e conceitos para compreender e comparar as abordagens baseadas na noção de código móvel, através de mecanismos e paradigmas que auxiliam o desenvolvimento de aplicações para código móvel. Além disso, apresenta algumas tecnologias que suportam mobilidade e algumas aplicações. A capítulo 3 aborda aspectos de mobilidade em sistemas distribuídos.

17 17 3 Mobilidade em Objetos e Agentes A maioria das tecnologias distribuídas que suportam mobilidade são construídas a partir do paradigma orientado a agente. Como em alguns ambientes um agente é considerado um objeto especial [OBJ 97] [OBJ 98], os conceitos da orientação a objetos são amplamente utilizados por tecnologias que suportam mobilidade. Sendo assim, este Capítulo apresenta aspectos relacionados à mobilidade em sistemas distribuídos, especialmente envolvendo objetos e agentes. Para isto, são abordados aspectos referentes a orientação a objetos, orientação a agentes e agentes móveis. A seção 3.1 aborda o paradigma orientado a objetos. A seção 3.2 apresenta o paradigma orientado a agentes. A Seção 3.3 apresenta aspectos referentes a agentes móveis. Finalmente, a seção 3.4 apresenta as conclusões do capítulo. 3.1 Paradigma Orientado à Objetos O objetivo desta seção é lembrar vários aspectos relacionados à objetos que são importantes para entender porque mobilidade é explorada usando objetos e agentes. Além disso, em tecnologias como Voyager [OBJ 97], um agente é visto como um objeto especial. Desta forma, os conceitos da orientação à objetos são muito utilizados no que se refere a agentes. Amandi no texto [AMA 97], diz que observando as definições de objeto e de agente, vê-se que existem características em comuns entre estas entidades e entre sistemas multi-agentes e sistemas orientado à objetos. Segundo [AMA 97], objetos são representações de entidades físicas ou abstratas do mundo real, que pertencem ao contexto do sistema a ser projetado. Este possui como características fundamentais: os atributos, os métodos e as mensagens. Conceitos importantes relacionados com o paradigma orientado a objetos, tais como: mensagem, encapsulamento, classe, instância, herança, associação dinâmica, polimorfismo e reusabilidade devem ser observados em tecnologias que exploram mobilidade em objetos. Estes conceitos podem ser encontrados, de forma descritiva, no livro de James Rumbaugh ([RUM 96]), um clássico da orientação a objetos. Outra característica importante é a concorrência. Quanto a concorrência em objetos, existem dois tipos naturais: Concorrência intra-objetos - a concorrência surge da existência de vários acessos concorrentes a um mesmo objeto, que pode implicar a execução concorrente de métodos de um mesmo objeto; Concorrência inter-objetos - a forma de concorrência mais natural, que está associada ao fato de vários objetos poderem executar simultaneamente. Havendo concorrência, deve haver sincronização. Em objetos, é necessário sincronizar os vários objetos, no caso de concorrência inter-objetos e as várias threads em um objetos, no caso de concorrência intra-objetos. A comunicação entre objetos pode ser feita de duas formas: síncrona e assíncrona. Na síncrona, após o envio de uma mensagem a um objeto, a execução do emissor fica suspensa enquanto não houver retorno por parte do receptor. Num contexto concorrente,

18 18 deve-se tomar precauções para evitar que o emissor de uma mensagem fique indefinidamente bloqueado caso não receba resposta. Este tipo de problema levou a utilização de mecanismos de mensagens assíncronas. Neste caso, o emissor ao enviar uma mensagem ao um objeto não fica bloqueado, podendo seguir sua execução. A associação entre concorrência e paralelismo é bastante natural, pois a concorrência pode ser visto como paralelismo lógico entre tarefas. Embora sejam conceitos independentes, na prática a diferença entre os dois torna-se difuso, pois cada vez mais os sistemas concorrentes apoiam-se em sistemas paralelos. Isto acontece porque grande parte dos conceitos associados a concorrência tem correspondência nos sistemas paralelos: mecanismos de troca de mensagens, mecanismos de sincronização, etc. Sendo assim, a passagem de um modelo de objetos concorrente para um modelo de objetos paralelo é relativamente natural, pois o objeto como unidade de execução concorrente assegura a localidade em termos de código e dados (encapsulamento). Além disso, a troca de mensagens permite grande liberdade em termos de implementações em ambientes paralelos. Com referência a objetos distribuídos, pode-se dizer que um objeto distribuído é uma espécie de código que pode viver em qualquer lugar de uma rede. Eles são uma espécie de pacotes com código independente que podem ser acessados por clientes remotos via invocação de métodos. O cliente não precisa saber em que lugar, na rede, o objeto distribuído reside. Os objetos podem ser executados em sistemas operacionais diferentes e podem trocar mensagens com outros objetos em qualquer parte da rede [ORF 96]. Existe recentemente uma tendência de se construir sistemas computacionais abertos utilizando objetos distribuídos. Estes possuem as mesmas características principais dos objetos das linguagens de programação: encapsulamento, polimorfismo e herança, tendo, dessa forma, as mesmas principais vantagens: fácil reusabilidade, manutenção e depuração, só para citar algumas. 3.2 Paradigma Orientado a Agentes A comunidade científica têm proposto uma variedade de definições, cada qual tentando explicar o seu uso da palavra agente. Essas definições vão de um nível elementar até um nível mais elaborado. Pesquisadores inventaram também novos termos para referenciar seus agentes, tais como: agentes inteligentes, interfaces inteligentes, interfaces adaptativas, knowbots, softbots, userbots, taskbots, personal agentes e network agentes. Durante o estudo, observou-se que não há uma definição unificada e universal a respeito do termo "agente". Vários pesquisadores salientam a dificuldade para criação de uma definição de agente. Amandi em [AMA 97] afirma que um agente representa uma entidade computacional com um comportamento autônomo, que pode comunicar-se com outros agentes com o fim de participar na realização de uma tarefa. Os agentes podem auxiliar outros agentes e usuários de diferentes formas: eles ocultam a complexidade de tarefas difíceis, podem treinar ou ensinar, ajudam em diferentes colaborações, monitoram eventos e procedimentos, etc. Um sistema multiagentes é

19 19 definido por um conjunto de agentes que colaboram entre si para cumprir com as responsabilidades do sistema. Um agente deve apresentar algumas propriedades. Elas definem qual é a classificação do agente, ou seja, um agente inteligente, reativo, capaz de aprender, etc. Propriedades de agentes correspondem a características de um sistema que são resultados diretos da arquitetura do sistema ou são níveis de operação que existem sobre a arquitetura que tem um efeito no comportamento global do sistema. Por arquitetura se entende a porção do sistema que fornece e gerência os recursos primitivos de um agente [FLE 98]. Para que o sistema seja considerado agente, ele não necessita apresentar todas as propriedades mas algumas delas são recomendáveis. Algumas propriedades são: Autonomia - é a capacidade de perseguir uma agenda independentemente de seu usuário. Isso requer aspectos de ação periódica, execução espontânea e iniciativa, em que o agente precisa ser capaz de tomar ações preemptivas (optativas) e independentes que eventualmente beneficiarão o usuário [FLE 98]. Em outras palavras, a autonomia permite ao agente ter algum tipo de controle sobre suas ações e estado interno. Mobilidade - conforme [FLE 98], é a habilidade para mover-se de uma localização para outra, enquanto preservam seu estado interno. Comunicabilidade - é a capacidade de trocar informações com outras entidades (agentes, humanos, objetos, seu ambiente) [FLE 98]. Nas interfaces entre os agentes, é necessário decidir que tipo de declaração os agentes serão capazes de gerar e compreender. Obviamente, o projeto da interface é cuidadosamente relatado para o projeto da arquitetura de todo o sistema. Há ainda um outro problema na comunicação que é a interpretação e significado das declarações do agente. Um termo pode ter diferentes significados para diferentes agentes, o que é chamado de conflito. Diferentes termos podem, entretanto, ter significado similar, o que significa uma correspondência. Aprendizagem - agentes são capazes de examinar o ambiente externo (por exemplo, a Web) e o "sucesso" de ações prévias levam condições similares, e adaptam suas ações para melhorar a probabilidade de atingir prosperamente suas metas. Reatividade - um agente está inserido em um ambiente que pode ser o mundo físico, um usuário via uma interface gráfica, uma coleção de agentes, a Internet, ou talvez todos esse combinados. A reatividade é a capacidade de um agente responder de uma maneira oportuna à mudanças que ocorre nele e no ambiente. Iniciativa - Possuir iniciativa é a habilidade de exibir comportamento direcionado ao objetivo, oportunístico e que não reage simplesmente ao seu ambiente. Sociabilidade - significa interagir com outros agentes (e possivelmente humanos) através de algum tipo de linguagem para comunicação de agente. Racionalidade - é a suposição de que um agente atuará para atingir seus objetivos, e não atuará de modo que impeça que seu objetivo seja alcançado - pelo menos até onde sua opinião permitir.

20 20 Percepção - os agentes sentem o mundo e geram conhecimentos acessíveis para processar o que a razão está dizendo para perceber no mundo. Cooperação - agentes inteligentes precisam ter um "espírito" cooperativo para existir e ter sucesso em "sistemas orientados a agentes". O que se quer é que agentes inteligentes trabalhem juntos para que possam executar tarefas mutuamente benéficas mais complexas. Dentro das propriedades, tem-se observado que os agentes as possuem em níveis. Por exemplo: a autonomia de um agente é demonstrada diferentemente de agente para agente, o que leva a considerar que os agentes apresentam níveis de propriedades. Da mesma forma que as definições de agente ainda não estão estabelecidas pelo meio científico de forma homogênea, as propriedades também apresentam esta característica. As definições das propriedades parecem ser mais convergentes, porém oferecem margem à várias interpretações. Dependendo das característica que um agente apresenta ele pode ser classificado em categorias distintas de agentes. Para poder dizer que um agente é desta ou daquela forma, é necessário que o agente atenda algumas características peculiares. Por exemplo, para um agente ser considerado um agente móvel, ele precisa possuir a propriedade de mobilidade. Algumas classificações de agentes, como agentes inteligentes, agentes autônomos, agentes reativos, etc, podem ser encontradas no texto [FLE 98]. 3.3 Agentes Móveis Agentes móveis são programas que podem ser disparados em um computador e enviados para executar em um computador remoto. Chegando no computador remoto ele apresenta suas credenciais e obtêm acesso aos serviços locais e aos dados [LAN 97]. É uma tecnologia emergente que promete tornar sistemas distribuídos mais fáceis de projetar, implementar e manter. Agentes móveis não estão restritos aos sistemas em que iniciaram sua execução, pois eles têm a habilidade de se transportar de um sistema para outro através de uma rede. Este recurso permite a um agente móvel mover-se para o sistema que possui um objeto com o qual o agente deseja interagir, obtendo a vantagem de residir na mesma máquina ou rede do objeto. Agentes móveis podem oferecer um paradigma uniforme para objetos distribuídos, englobando passagem de mensagens síncronas e assíncronas, passagem de objetos e objetos móveis e estacionários. Além de suportar os serviços existentes em uma rede, agentes móveis também tornam possíveis novos serviços e novas oportunidades de negócios. Características como cooperação, autonomia e representatividade foram herdadas da própria origem de agentes, entretanto, foram acopladas outras a fim de suprir as necessidades exigidas para o bom funcionamento de modelos que utiliza o paradigma de agentes móveis, tais como objetos passantes, assincronismo, interação local, operações sem conexão e execução paralela. Estas características são definidas como [LAN 97]: Objetos passantes - quando um agente móvel é transferido, todo o objeto é movido, ou seja, o código, os dados, o itinerário para chegar ao servidor necessário, o estado de execução, etc;

21 21 Assincronismo - o agente móvel possui sua própria thread de execução e esse não precisa ser executado sincronamente; Interação local - o agente móvel interage com outros agentes móveis ou objetos estacionários locais. Se necessário, um agente mensageiro é enviado para facilitar a interação com agentes remotos; Operações sem conexão - o agente móvel pode executar tarefas mesmo com a conexão fechada. Quando se faz necessário transferência de agentes, aguarda-se até que a conexão seja restabelecida; Execução paralela - múltiplos agentes podem ser disparados para diferentes servidores a fim de executar tarefas em paralelo. Apesar de conter semelhanças entre esse novo paradigma e outros métodos de despacho remoto, os agentes móveis primam por segurança, uma característica fracamente explorada em sistemas antigos. Isso deve-se, principalmente, ao fato dos sistemas anteriores não terem sido projetados para utilização em redes geograficamente distribuídas, sem opções, que hoje fazem parte do cotidiano, como o uso de cartões de crédito em algum tipo de comércio eletrônico. A nível de segurança os agentes móveis realizam tarefas relacionadas à autenticação de usuário/servidor e autorização de serviços no servidor. Aplicações que utilizam os conceitos de agentes seguem o paradígma atual de funções/procedimentos ou Orientação a Objetos como paradígma de implementação. A aplicação cliente é um ambiente de interação com o usuário que utiliza os conceitos de agentes móveis. Além disso, essa aplicação tem interface com o ambiente agente. Logo, quando as tarefas são executadas, o ambiente agente de execução envia o agente móvel, através do subsistema de mensagens. No servidor, ocorre a ação contrária: o agente é recebido através do subsistema de mensagem e é encaminhado ao ambiente agente de execução, que deve ser compatível com o ambiente do cliente. Daí, as tarefas são realizadas a nível de aplicação servidora e se necessário, um agente mensageiro é disparado. Segundo [LAN 97], agentes móveis apresentam uma série de vantagens como: Redução do tráfego da rede - Sistemas distribuídos demandam um grande volume de comunicação (interação) para realizar uma determinada tarefa, principalmente quando há restrições de segurança envolvidos. Agentes móveis permitem reduzir o tráfego da rede, pois permitem despachar tarefas que podem executar suas interações localmente. Agentes móveis podem ainda reduzir o tráfego de dados da rede, pois permitem mover o processamento para o local onde os dados estão armazenados ao invés de transferir os dados para depois processá-los. O princípio é simples: "Mover o processamento para os dados ao invés de mover os dados para o local de processamento". Oculta a latência da rede - Sistemas críticos necessitam de respostas em tempo real para mudanças no ambiente. O controle desses sistemas através de uma rede substancialmente grande ocasiona uma latência inaceitável. Agentes móveis oferece uma solução, pois podem ser enviados pelo controlador central para realizarem suas tarefas localmente.

22 22 Encapsulamento de protocolo - Cada máquina em um sistema distribuído possui seu próprio código necessário para implementar a transferência de dados. Porém, novos requisitos de segurança e eficiência demandam mudanças no protocolo que podem ocasionar problemas na manutenção do código existente. Agentes móveis, por outro lado, podem mover-se para máquinas remotas a fim de estabelecer canais de comunicação baseados em protocolos proprietários. Execução assíncrona e autônoma - Tarefas podem ser embutidas em agentes móveis que podem ser enviados pela rede. Após serem enviados, os agentes são autônomos e independentes da criação de processo, podendo executar assincronamente. Este recurso é útil principalmente porque um dispositivo móvel (ex. laptops) pode se reconectar na rede para coletar o agente mais tarde. Adaptação dinâmica - Agentes móveis possuem a habilidade de perceber mudanças no ambiente de execução e reagir autonomamente. Múltiplos agentes podem interagir entre si e se distribuir pela rede, de modo a manter uma configuração ótima para resolver um problema em particular. Independência de plataforma - Redes de computadores, geralmente são heterogêneas, tanto na perspectiva de hardware como a de software. Agentes móveis são independentes da máquina e também da rede, sendo dependentes somente do seu ambiente de execução, não dificultando a integração de sistemas. Mas é necessário que o ambiente de execução do agente esteja disponível para um determinado hardware ou software. Robustez e tolerância a falhas - A habilidade dos agentes móveis de reagirem dinamicamente a situações e eventos desfavoráveis torna fácil a construção de sistemas distribuídos robustos e tolerantes a falhas. Por exemplo, se uma máquina está para ser desligada, todos os agentes em execução na máquina podem ser advertidos para que possam ser enviados e continuar suas tarefas em outra máquina da rede. Para comunicação entre os agentes, merece destaque o Protocolo de Transferência de Agentes (ATP - Agent Transfer Protocol). Este é um protocolo a nível de aplicação para sistemas distribuídos baseados em agentes. Enquanto agentes móveis podem ser programados em diferentes linguagens e para diferentes plataformas, através de uma máquina virtual e de bibliotecas, o ATP oferece a oportunidade de manejar agentes móveis através de uma forma geral e uniforme. Uma máquina que suporta agentes tem um serviço de agente baseado em ATP, que é um componente capaz de enviar e receber agentes de um computador remoto via protocolo ATP. O serviço de agente é identificado por um endereço único, independente da plataforma específica de agente suportada pela máquina. Uma máquina pode rodar múltiplos serviços de agentes. Além disso, uma mensagem ATP carrega informações suficientes para identificar a plataforma de agente específica, na máquina receptora, e um gerenciador ATP é chamado para gerenciar a mensagem. O protocolo ATP é baseado no paradigma de requisição/resposta entre serviços ATP. Um serviço ATP A estabelece uma conexão com um serviço ATP B, e envia uma requisição para B esperando uma resposta. ATP/0.1 pode ser obtido no endereço e faz parte do IBM Aglets Workbench.

23 23 Além disso, para que os agentes possam se comunicar com outros agentes distribuídos através da rede, é desejável que eles se comuniquem através de um protocolo comum. Desta forma, existe um esforço da comunidade científica no sentido de normalizar a linguagem de comunicação entre os agentes. Uma proposta é a linguagem KQML (Knowledge Query Manipulation Language) [FIN 94] e um outro para a representação e intercâmbio do conhecimento adquirido pelos agentes através do formato KIF (Knowledge Interchange Format). Estes padrões são importantes para haver um consenso no desenvolvimento de aplicações com suporte a agentes móveis. A linguagem Java viabilizou a concepção de diversos sistemas experimentais de agentes móveis. Numerosos sistemas estão atualmente em desenvolvimento ou já comercializados tais como: Voyager [OBJ 97] [OBJ 98], Aglets [LAN 97] e Concordia [WONG 97] [CAS 98]. Estes são apresentados no capítulo 4. Os sistemas citados acima possuem muitas características em comum, como a utilização da máquina virtual Java padrão, mecanismos de serialização de objetos e arquitetura baseada em servidor. Contudo, os mecanismos de transporte de agentes e interação variam consideravelmente. Estas diferenças são apresentadas no capítulo Conclusões Este capítulo apresentou aspectos de mobilidade em sistemas distribuídos, especialmente envolvendo objetos e agentes. Como a maioria das aplicações distribuídas que suportam mobilidade são construídas a partir do paradigma orientado a agente e algumas aplicações consideram o agente um objeto especial, os conceitos da orientação a objetos são amplamente utilizados por tecnologias que suportam mobilidade. Pode-se concluir que não há diferença entre objetos e agentes móveis que justifiquem um estudo separado destas duas entidades. A filosofia da orientação a objetos é absorvida pela orientação a agentes, portanto, um agente pode ser considerado um objeto, mas com autonomia, isto é, pode-se dizer que um agente é uma evolução do objeto. Um exemplo do uso deste conceito é Voyager [OBJ 97] [OBJ 98]. Esta é uma tecnologia promissora para desenvolvimento de aplicações com suporte à mobilidade que considera agente um objeto especial, isto é, que tem autonomia. O Capítulo 4 apresenta as tecnologias usadas para implementar mobilidade e algumas aplicações que utilizam mobilidade.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2) Definição de um Sistema Distribuído (1) Introdução Um sistema distribuído é: Uma coleção de computadores independentes que aparecem para o usuário como um único sistema coerente. Definição de um Sistema

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Aula 4 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Migração de Código Em

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Orientação à Objetos. Aécio Costa

Orientação à Objetos. Aécio Costa Aécio Costa O paradigma da orientação à objetos Paradigma? Um paradigma é uma forma de abordar um problema. No contexto da modelagem de um sistema de software, um paradigma tem a ver com a forma pela qual

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP 1 INTRODUÇÃO Devido ao crescimento da Internet, tanto do ponto de vista do número de usuários como o de serviços oferecidos, e o rápido progresso da tecnologia de comunicação sem fio (wireless), tem se

Leia mais

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos

Leia mais

Paradigma Cliente/Servidor

Paradigma Cliente/Servidor Paradigma Cliente/Servidor Mário Meireles Teixeira UFMA Departamento de Informática Dezembro, 2012 Comunicação em Sistemas Distribuídos! Os processos em um SD estão lógica e fisicamente separados. Precisam

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL. Prof. Angelo Augusto Frozza, M.Sc. http://about.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL. Prof. Angelo Augusto Frozza, M.Sc. http://about. PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -ARQUITETURAS DE APLICAÇÃO MÓVEL Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza ROTEIRO Introdução Cliente-Servidor Cliente Servidor Tipos de conexão

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

Conceitos de Banco de Dados

Conceitos de Banco de Dados Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 1 Conceitos da Computação em Nuvem A computação em nuvem ou cloud computing

Leia mais

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET 1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino daniel.silva1@ext.mpsa.com

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

MODELO CLIENTE SERVIDOR

MODELO CLIENTE SERVIDOR SISTEMAS DISTRIBUÍDOS Modelo Cliente Servidor Modelo que estrutura um S.O. como um grupo de processos cooperantes, chamados servidores, que oferecem serviços a processos usuários, denominados clientes;

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores Camadas de Serviço de Hardware e Software em Sistemas Distribuídos Arquiteutra de Sistemas Distribuídos Introdução Applications, services Adaptação do conjunto de slides do livro Distributed Systems, Tanembaum,

Leia mais

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo Introdução O que é Protocolo? - Para que os pacotes de dados trafeguem de uma origem até um destino, através de uma rede, é importante

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Sistemas Distribuídos. Introdução

Sistemas Distribuídos. Introdução Sistemas Distribuídos Introdução Definição Processos Um sistema distribuído é um conjunto de computadores independentes, interligados por uma rede de conexão, executando um software distribuído. Executados

Leia mais

Aula 03-04: Modelos de Sistemas Distribuídos

Aula 03-04: Modelos de Sistemas Distribuídos UNIVERSIDADE Computação Aula 03-04: Modelos de Sistemas Distribuídos 2o. Semestre / 2014 Prof. Jesus Principais questões no projeto de um sistema distribuído (SD) Questão de acesso (como sist. será acessado)

Leia mais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013 MC714 Sistemas Distribuídos 2 semestre, 2013 Virtualização - motivação Consolidação de servidores. Consolidação de aplicações. Sandboxing. Múltiplos ambientes de execução. Hardware virtual. Executar múltiplos

Leia mais

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE A proposta para o ambiente apresentada neste trabalho é baseada no conjunto de requisitos levantados no capítulo anterior. Este levantamento, sugere uma

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

Serviços Web: Introdução

Serviços Web: Introdução Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 13 Web Services Web Services

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

PARANÁ GOVERNO DO ESTADO

PARANÁ GOVERNO DO ESTADO A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro

Leia mais

Prof. Marcelo Henrique dos Santos

Prof. Marcelo Henrique dos Santos ORIENTAÇÃO A OBJETOS COM PROTOTIPAÇÃO CAPÍTULO 02 CONCEITOS FUNDAMENTAIS OBJETIVOS Definiremos alguns conceitos fundamentais de forma a não deixar dúvidas básicas ou interpretações que nos coloquem em

Leia mais

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Na Figura a seguir apresento um exemplo de uma mini-tabela de roteamento: Tutorial de TCP/IP - Parte 6 - Tabelas de Roteamento Por Júlio Cesar Fabris Battisti Introdução Esta é a sexta parte do Tutorial de TCP/IP. Na Parte 1 tratei dos aspectos básicos do protocolo TCP/IP. Na

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Modelos de Arquiteturas. Prof. Andrêza Leite andreza.lba@gmail.com

Modelos de Arquiteturas. Prof. Andrêza Leite andreza.lba@gmail.com Modelos de Arquiteturas Prof. Andrêza Leite andreza.lba@gmail.com Agenda Introdução Arquitetura de Sistemas Distribuídos Clientes e Servidores Peer-to-Peer Variações Vários Servidores Proxy Código Móvel

Leia mais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Conceitos e Arquitetura Vantagens das Arquiteturas C/S (em relação

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Caracterização de Sistemas Distribuídos

Sistemas Distribuídos: Conceitos e Projeto Caracterização de Sistemas Distribuídos Sistemas Distribuídos: Conceitos e Projeto Caracterização de Sistemas Distribuídos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

3 Arquitetura do Sistema

3 Arquitetura do Sistema 3 Arquitetura do Sistema Este capítulo irá descrever a arquitetura geral do sistema, justificando as decisões de implementação tomadas. Na primeira seção iremos considerar um conjunto de nós interagindo

Leia mais

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 2 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Revisão sobre Banco de Dados e SGBDs Aprender as principais

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13 FileMaker Pro 13 Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13 2007-2013 FileMaker Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara,

Leia mais

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite andreza.lba@gmail.com

Projeto de Sistemas Distribuídos. Prof. Andrêza Leite andreza.lba@gmail.com Projeto de Sistemas Distribuídos Prof. Andrêza Leite andreza.lba@gmail.com Agenda Introdução Exemplos de Sistemas Distribuídos Compartilhamento de Recursos e a Web Principais Desafios para a Implementação

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

Módulo 4: Gerenciamento de Dados

Módulo 4: Gerenciamento de Dados Módulo 4: Gerenciamento de Dados 1 1. CONCEITOS Os dados são um recurso organizacional decisivo que precisa ser administrado como outros importantes ativos das empresas. A maioria das organizações não

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS Arquiteturas www.pearson.com.br capítulo 2 slide 1 2.1 Estilos Arquitetônicos Formado em termos de componentes, do modo como esses componentes estão conectados uns aos outros, dos dados trocados entre

Leia mais

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web; CONCEITOS INICIAIS Agenda A diferença entre páginas Web, Home Page e apresentação Web; O que é necessário para se criar páginas para a Web; Navegadores; O que é site, Host, Provedor e Servidor Web; Protocolos.

Leia mais

Módulo 15 Resumo. Módulo I Cultura da Informação

Módulo 15 Resumo. Módulo I Cultura da Informação Módulo 15 Resumo Neste módulo vamos dar uma explanação geral sobre os pontos que foram trabalhados ao longo desta disciplina. Os pontos abordados nesta disciplina foram: Fundamentos teóricos de sistemas

Leia mais

Java. para Dispositivos Móveis. Thienne M. Johnson. Novatec. Desenvolvendo Aplicações com J2ME

Java. para Dispositivos Móveis. Thienne M. Johnson. Novatec. Desenvolvendo Aplicações com J2ME Java para Dispositivos Móveis Desenvolvendo Aplicações com J2ME Thienne M. Johnson Novatec Capítulo 1 Introdução à computação móvel 1.1 Computação móvel definições Computação móvel está na moda. Operadoras

Leia mais

Software de rede e Modelo OSI André Proto UNESP - São José do Rio Preto andre.proto@sjrp.unesp.br O que será abordado Hierarquias de protocolos (camadas) Questões de projeto relacionadas às camadas Serviços

Leia mais

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS) Definição Geral: Disciplina de Compiladores Prof. Jorge Bidarra (UNIOESTE) A especificação de requisitos tem como objetivo

Leia mais

Sistemas de Informação I

Sistemas de Informação I + Sistemas de Informação I Dimensões de análise dos SI Ricardo de Sousa Britto rbritto@ufpi.edu.br + Introdução n Os sistemas de informação são combinações das formas de trabalho, informações, pessoas

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Cluster, Grid e computação em nuvem Slide 8 Nielsen C. Damasceno Introdução Inicialmente, os ambientes distribuídos eram formados através de um cluster. Com o avanço das tecnologias

Leia mais

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede Prof. Samuel Souza } Monolíticas Aplicações em um computador centralizado } Em Rede Aplicações com comunicação em rede } Distribuídas Comunicação e cooperação em rede } Aplicações que são funcionalmente

Leia mais

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc. MODELAGEM DE DADOS PROF. RAFAEL DIAS RIBEIRO, M.Sc. @ribeirord MODELAGEM DE DADOS Aula 1 Prof. Rafael Dias Ribeiro. M.Sc. @ribeirord 1 Objetivos: Apresenta a diferença entre dado e informação e a importância

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14 FileMaker Pro 14 Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14 2007-2015 FileMaker, Inc. Todos os direitos reservados. FileMaker Inc. 5201 Patrick Henry Drive Santa Clara,

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 5-1. A CAMADA DE TRANSPORTE Parte 1 Responsável pela movimentação de dados, de forma eficiente e confiável, entre processos em execução nos equipamentos conectados a uma rede de computadores, independentemente

Leia mais

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: SGBD Características do Emprego de Bancos de Dados As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes: Natureza autodescritiva

Leia mais

Introdução a computação móvel. Middlewares para Rede de Sensores sem Fio. Uma avaliação na ótica de Adaptação ao Contexto

Introdução a computação móvel. Middlewares para Rede de Sensores sem Fio. Uma avaliação na ótica de Adaptação ao Contexto Introdução a computação móvel Monografia: Middlewares para Rede de Sensores sem Fio Uma avaliação na ótica de Adaptação ao Contexto Adriano Branco Agenda Objetivo do trabalho O que é uma WSN Middlewares

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

BlackBerry Mobile Voice System

BlackBerry Mobile Voice System BlackBerry Mobile Voice System Comunicações móveis unificadas O BlackBerry Mobile Voice System (BlackBerry MVS) leva os recursos do telefone do escritório aos smartphones BlackBerry. Você pode trabalhar

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

Relatorio do trabalho pratico 2

Relatorio do trabalho pratico 2 UNIVERSIDADE FEDERAL DE SANTA CATARINA INE5414 REDES I Aluno: Ramon Dutra Miranda Matricula: 07232120 Relatorio do trabalho pratico 2 O protocolo SNMP (do inglês Simple Network Management Protocol - Protocolo

Leia mais

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Satélite Manual de instalação e configuração CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Índice Índice 1.Informações gerais 1.1.Sobre este manual 1.2.Visão geral do sistema 1.3.História

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Comunicação coletiva Modelo Peer-to-Peer Slide 6 Nielsen C. Damasceno Introdução Os modelos anteriores eram realizado entre duas partes: Cliente e Servidor. Com RPC e RMI não é possível

Leia mais