Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado

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

Download "Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado"

Transcrição

1 Adriano Francisco Branco Um modelo de programação para RSSF com suporte à reconfiguração dinâmica de aplicações Dissertação de Mestrado Dissertação apresentada ao Programa de Pós graduação em Informática do Departamento de Informática do Centro Técnico Científico da PUC Rio como requisito parcial para obtenção do grau de Mestre em Informática. Orientador : Prof. Noemi de La Rocque Rodriguez Co Orientador: Prof. Silvana Rossetto Rio de Janeiro Abril de 2011

2 Adriano Francisco Branco Um modelo de programação para RSSF com suporte à reconfiguração dinâmica de aplicações Dissertação apresentada ao Programa de Pós graduação em Informática do Departamento de Informática do Centro Técnico Científico da PUC Rio como requisito parcial para obtenção do grau de Mestre em Informática. Aprovada pela Comissão Examinadora abaixo assinada. Prof. Noemi de La Rocque Rodriguez Orientador Departamento de Informática PUC Rio Prof. Silvana Rossetto Co Orientador Departamento de Ciência da Computação UFRJ Prof. Luci Pirmez UFRJ Prof. Renato Fontoura de Gusmão Cerqueira Departamento de Informática PUC-Rio Dr. Renato Figueiró Maia Pesquisador PUC-Rio Prof. José Eugenio Leal Coordenador Setorial do Centro Técnico Científico PUC Rio Rio de Janeiro, 6 de Abril de 2011

3 Todos os direitos reservados. É proibida a reprodução total ou parcial do trabalho sem autorização da universidade, do autor e do orientador. Adriano Francisco Branco Graduou se em Engenharia Eletrônica pelo Centro Federal de Educação Tecnológica Celso Suckow da Fonseca (CEFET/RJ). Trabalhou mais de 12 anos em consultoria de projetos de integração de sistemas, principalmente nas áreas de automação industrial e telecomunicações. Também tem passagem pela área de P&D, com trabalhos no CERN (Suíça) e CBPF/CNPq. Teve oportunidade de trabalhar em projetos de eletrônica digital de interfaces de comunicação, computadores 8 e 32 bits com CPUs CISC e RISC, sistemas de controles e aquisição de dados. Têm experiência em sistemas operacionais como CP/M, DOS, Windows, VMS e diversas variações de Unix. Trabalhou com integração de sistemas desenvolvendo ferramentas customizadas ou utilizando ferramentas comerciais para integração em tempo real, síncronas e assíncronas. Também tem grande experiência em gerência de projetos e coordenação de equipes de desenvolvimento de sistemas. Branco, Adriano Francisco Ficha Catalográfica Um modelo de programação para RSSF com suporte à reconfiguração dinâmica de aplicações / Adriano Francisco Branco; orientador: Noemi de La Rocque Rodriguez; co orientador: Silvana Rossetto f. : il. (color); 30 cm 1. Dissertação (mestrado) - Pontifícia Universidade Católica do Rio de Janeiro, Departamento de Informática, Inclui bibliografia. 1. Informática Teses. 2. Rede de Sensores sem Fio (RSSF). 3. Sistemas Distribuídos. 4. Modelo de Programação. 5. Funções parametrizáveis. 6. Máquina de Estados Finitos (FSM). 7. Reconfiguração Dinâmica. I. Rodriguez, Noemi de La Rocque. II. Rossetto, Silvana. III. Pontifícia Universidade Católica do Rio de Janeiro. Departamento de Informática. IV. Título. CDD: 004

4 Agradecimentos Aos meus orientadores Professores Noemi Rodriguez e Silvana Rossetto pelo apoio e incentivo para a realização deste trabalho. Ao CNPq e à PUC Rio, pelos auxílios concedidos, sem os quais este trabalho não poderia ter sido realizado. À minha esposa, que me acompanhou todo esse tempo com apoio direto e indireto. Aos meus pais, irmãos, família e amigos, que me apoiaram mesmo com minha ausência na vida familiar. A todos os colegas, professores e funcionários do Departamento de Informática da PUC-Rio, pelo companheirismo, aprendizado e auxílio.

5 Resumo Branco, Adriano Francisco; Rodriguez, Noemi de La Rocque; Rossetto, Silvana. Um modelo de programação para RSSF com suporte à reconfiguração dinâmica de aplicações. Rio de Janeiro, p. Dissertação de Mestrado Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. Algumas características básicas das redes de sensores sem fio (RSSF) dificultam as tarefas de criação e reconfiguração de aplicações. Nesse trabalho apresentamos um modelo de programação que pretende simplificar essas tarefas. O modelo se baseia no uso conjunto de funções parametrizáveis e de máquinas de estados finitos, e permite a implementação de diferentes tipos de aplicações para redes de sensores sem fio e a configuração remota dessas aplicações. Descrevemos alguns testes para avaliar o quanto esse modelo pode facilitar o desenvolvimento de novas aplicações, o quanto é fácil aplicar novas alterações sobre as aplicações em execução, e o impacto na quantidade de mensagens na rede por conta do uso da configuração remota. Palavras chave Rede de Sensores sem Fio (RSSF); Sistemas Distribuídos; Modelo de Programação; Funções parametrizáveis; Máquina de Estados Finitos (FSM); Reconfiguração Dinâmica.

6 Abstract Branco, Adriano Francisco; Rodriguez, Noemi de La Rocque (Advisor); Rossetto, Silvana (Co-Advisor). A WSN programming model with a dynamic reconfiguration support. Rio de Janeiro, p. MSc Dissertation Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro. Some basic characteristics of wireless sensor networks (WSN) make application creation and reconfiguration difficult tasks. A programming model is presented to simplify these tasks. This model is based on a set of parametrized components and on a Finite State Machine, and allows the remote configuration of different applications over the same set of installed components. We describe some tests to evaluate its impact on the development process, and the ease of applying modifications to a running application. We also measure the additional impact of remote configuration on network activity. Keywords Wireless Sensor Network (WSN); Distributed Systems; Programming Model; Parametrized functions; Finite State Machine (FSM); Dynamic reconfiguration.

7 Sumário 1 Introdução Abordagem Objetivos e contribuições Trabalhos relacionados Organização do documento 15 2 TinyOS e NesC NesC TinyOS 17 3 O modelo de programação proposto Padrões de interação para aplicações em RSSF Conjunto das funcionalidades básicas Controle de fluxo baseado em FSM Exemplo simplificado de aplicação do modelo de programação Reconfiguração 33 4 Implementação Visão operacional geral Etapas de operação Padrão de implementação para as camadas funcionais Exemplo de um fluxo de execução Experiências no desenvolvimento e novas funcionalidades 47 5 Avaliação Implementação das aplicações de referência Avaliação da facilidade de programação e do impacto da configuração remota 57 6 Conclusão Trabalhos futuros 67 7 Referências Bibliográficas 69 A Detalhamento dos padrões de interação 72 B Diagramas das FSMs e Parâmetros de Configuração 78 B.1 Aplicação utilizada nos testes 78 B.2 Aplicações de Referência 80 C Ambiente de execução para os testes 92 D Interfaces e Componentes NesC do sistema 94 E Formatação dos arquivos de configuração XML 97

8 Lista de figuras 3.1 Camadas da arquitetura de execução Arquitetura com as funcionalidades básicas Arquitetura de controle da FSM Sintaxe FSM e exemplo de tabela de transições Aplicação exemplo - coleta periódica de temperatura Módulos utilizados na estação servidora Arquitetura básica das camadas funcionais Configuração para uma aplicação de monitoração de temperatura FSM para monitoração periódica da temperatura média Exemplo de fluxo de execução para uma aplicação de agregação Aplicação 1 - FSM para inicialização do mote e controle geral da aplicação Aplicação 1 - FSM para geração do alarme Rede de referência (a) FSM para controle de uma aplicação de coleta e (b) Definição dos respectivos parâmetros Distribuição no tempo de cada etapa de operação (a) FSM para controle de uma aplicação de alarme e (b) Definição dos respectivos parâmetros 62 B.1 Aplicação 1 - FSM para Inicialização do Mote e controle geral 80 B.2 Aplicação 1 - FSM para geração do alarme 80 B.3 Aplicação 2 - FSM para Inicialização do Mote e controle geral 81 B.4 Aplicação 2 - FSM para geração do alarme 81 B.5 Aplicação 2 - FSM para monitoração periódica 82 B.6 Aplicação 3 - FSM para Inicialização do Mote e controle geral 82 B.7 Aplicação 3 - FSM para monitoração periódica 82 B.8 Aplicação 3 - FSM para reserva de vagas 83 C.1 Módulos utilizados para execução dos testes no simulador 92

9 Lista de tabelas 3.1 Padrões de interação identificados Estrutura dos parâmetros de configuração Campos de um registro da tabela de transições Principais ações e eventos disponíveis para a aplicação Biblioteca de funções parametrizáveis Transições utilizadas para o exemplo de fluxo Primeiro Teste: Resultado para as métricas da implementação no modelo proposto Sumarização da quantidade de mensagens enviadas para cada etapa e os respectivos contadores Quantidade de mensagens enviadas para cada tipo de operação Primeiro Teste: Resultado para as métricas da implementação alternativa em NesC Segundo Teste: Resultado para as métricas da implementação no modelo proposto Quantidade de envios para a operação de reconfiguração remota Segundo Teste: Resultado para as métricas da implementação alternativa em NesC Resumo comparativo entre as duas implementações 65 A.1 Distribuição dos Padrões de interação X Suporte de comunicação 73 A.2 Padrões Identificados 74 B.1 Configuração da primeira FSM do primeiro teste 78 B.2 Configuração da segunda FSM do primeiro teste 79 B.3 Configuração da terceira FSM utilizada no segundo teste 79 B.4 Estrutura dos parâmetros de configuração para Aplicação 1 83 B.5 Estrutura dos parâmetros de configuração para Aplicação 2 84 B.6 Estrutura dos parâmetros de configuração para Aplicação 3 85 B.7 Aplicação 1 - Máquina de estados 1 (Inicialização) 86 B.8 Aplicação 1 - Máquina de estados 2 (Alarme) 87 B.9 Aplicação 2 - Máquina de estados 1 (Inicialização) 88 B.10 Aplicação 2 - Máquina de estados 2 (Alarme) 89 B.11 Aplicação 2 - Máquina de estados 3 (Monitoração) 90 B.12 Aplicação 3 - Máquina de estados 1 (Inicialização) 90 B.13 Aplicação 3 - Máquina de estados 2 (Monitoração) e 3 (Reserva) 91 D.1 Interfaces das Camadas Funcionais 94 D.2 Novos componentes NesC 96

10 1 Introdução As Redes de Sensores Sem Fio (RSSF) são constituídas por pequenos dispositivos computacionais (chamados motes) com capacidade de sensoreamento físico e severas restrições em termos de capacidade de processamento, armazenamento e consumo de energia. Essas redes são usadas em aplicações de monitoramento e requerem normalmente um grande número de nós implantados diretamente no meio físico. Algumas aplicações necessitam que os nós sejam distribuídos em grandes espaços geográficos ou em regiões de difícil acesso. O trabalho de desenvolvimento de aplicações para RSSF é impactado pelos mesmos desafios encontrados no desenvolvimento de aplicações para sistemas distribuídos que utilizam plataformas tradicionais. Porém, alguns desses desafios são aumentados pela escassez de recursos computacionais dos motes, pelo modelo de programação tipicamente adotado que é orientado a eventos e pela tecnologia de comunicação sem fio com características de redes ad-hoc. Por outro lado, em boa parte dos casos, as aplicações que executam nas RSSF seguem uma estrutura comum de execução, permitindo identificar funcionalidades que se repetem em diferentes cenários. Por exemplo, funcionalidades locais, como a leitura periódica de sensores e o envio dos dados coletados para uma estação base; ou funcionalidades distribuídas, como a fusão ou agregação das medidas coletadas por nós vizinhos. Um dos desafios típicos da computação distribuída que tem a sua complexidade aumentada no cenário de RSSF é a necessidade de realizar ajustes na aplicação após a sua implantação. Esses ajustes podem ser uma simples alteração no período de monitoração, uma correção no fluxo de processamento ou até a ativação ou desativação de pequenas funcionalidades. A plataforma de software de uso mais comum para o desenvolvimento de aplicações em RSSF não disponibiliza, de forma nativa, opções para reconfiguração remota após a implantação da aplicação e, na maioria dos casos, é inviável recuperar todos os motes para aplicar novas alterações. As alternativas mais comuns para reprogramação dos nós sensores envolvem a carga remota e substituição de componentes inteiros, dessa forma, indo muito além de uma simples reconfi-

11 Capítulo 1. Introdução 11 guração e podendo consumir mais recursos da rede do que o necessário. Uma solução para esses desafios é disponibilizar para o desenvolvedor um conjunto de funcionalidades básicas que possam ter a sua execução definida por meio de alguns parâmetros, e de um controle de fluxo simplificado. Esse conjunto de funcionalidades representaria alguns padrões de interação típicos de RSSF e pode ser visto como uma biblioteca de funções pronta para uso, atendendo a diversos tipos de aplicações. Essa biblioteca atenderia basicamente as aplicações de monitoração e alarme, incluindo o controle de roteamento de mensagens pela rede. Alguns componentes mais específicos poderiam ser adicionados em tempo de projeto. Essa solução permite a simplificação do desenvolvimento de novas aplicações, minimizando as dificuldades da programação distribuída e evitando a necessidade de escrever códigos na linguagem nativa da plataforma. Também possibilita a implementação de um processo de reconfiguração remota em ponto pequeno, por meio do envio de parâmetros de configuração dos componentes da aplicação, ao invés da abordagem de substituição de componentes inteiros. Tudo isso permite uma mudança no perfil do desenvolvedor. O novo desenvolvedor não precisa conhecer os detalhes de programação no nível mais baixo e poderá direcionar os esforços para o entendimento e configuração da aplicação. O foco principal do nosso trabalho é baseado nessa ideia, e visa minimizar as dificuldades de desenvolvimento e reconfiguração de aplicações para RSSF incorporando no próprio modelo de programação a capacidade de reconfiguração das aplicações em tempo de execução e a possibilidade de reutilizar padrões de interação comuns entre os nós da rede. 1.1 Abordagem Para a identificação do conjunto básico de funcionalidades que irão compor a nossa biblioteca de funções, tomamos como referência padrões de interação típicos das aplicações para RSSF. Esses padrões são identificáveis, pois, de forma geral, as aplicações em RSSF executam operações semelhantes, como por exemplo a leitura periódica de sensores, a fusão de dados envolvendo grupos de nós vizinhos e o roteamento de mensagens até a estação base. Para obtermos uma gama razoável de padrões, procuramos diferentes fontes, incluindo exemplos de aplicações para RSSF e propostas de modelos para macroprogramação em RSSF. A ideia de macroprogramação em RSSF toma como base que toda aplicação requer naturalmente a interação entre os nós individuais, então, ao invés de projetar as aplicações a partir do código de cada nó, propõe-se o inverso, que a aplicação seja projetada considerando a

12 Capítulo 1. Introdução 12 rede como um todo e que em uma etapa seguinte o código necessário seja instanciado em cada nó individual. Por isso os modelos de macroprogramação, normalmente, incluem alguns padrões de interação típicos. Para definir o controle de fluxo usamos a ideia de máquinas de estados finitos (Finite State Machine) (FSM). No modelo de FSM temos um motor de execução que, de acordo com o estado corrente, dispara ações de saída a partir de eventos de entrada. Com isso o desenvolvedor pode indicar quais funcionalidades irá utilizar e qual será a sequência de operação das mesmas. O controle de fluxo proposto permite a criação de várias máquinas de estado dentro de uma mesma aplicação e ainda possibilita a dependência entre estados de diferentes máquinas, facilitando a construção de aplicações mais complexas, ou a visão de uma mesma RSSF usada para diferentes finalidades. Tanto o fluxo da FSM quanto o comportamento funcional de cada componente da aplicação são definidos por parâmetros. A possibilidade de configuração dinâmica é alcançada simplesmente permitindo que esses parâmetros sejam alterados remotamente. Como exemplo, em uma aplicação de coleta periódica de temperatura, pode-se alterar o período de coleta ou alterar o fluxo operacional para calcular a média da temperatura dos nós do mesmo grupo. Também é possível adicionar, em tempo de execução, um novo fluxo para essa aplicação, como um alarme de temperatura alta, mantendo o fluxo anterior inalterado. 1.2 Objetivos e contribuições Nesta seção apresentamos os objetivos do nosso trabalho e detalhamos as principais etapas para alcançar esses objetivos. Também identificamos as principais contribuições geradas ao término do trabalho Objetivo Geral O nosso objetivo principal é estudar um modelo de programação que facilite a construção de novas aplicações e que permita, de forma simples, a reconfiguração remota dessas aplicações Objetivo Detalhado Para alcançarmos o objetivo proposto, dividimos o trabalho em etapas. A seguir, identificamos essas etapas e descrevemos o objetivo de cada uma.

13 Capítulo 1. Introdução 13 Identificação do conjunto de funcionalidades básicas - O objetivo dessa etapa é identificar e definir um conjunto de funcionalidades básicas que possam suportar a construção de diversos tipos de aplicações para RSSF. Complementando o conjunto de funcionalidades, incluímos a definição do conjunto de parâmetros que permitirão ajustes no comportamento dessas funcionalidades. Definição do controle de fluxo - Nessa etapa definimos um mecanismo de controle de fluxo das aplicações baseado em máquinas de estados finitos, assim como o conjunto de eventos e ações básicas que serão usados pelas aplicações. Implementação - Nessa etapa implementamos a nossa biblioteca de funções parametrizáveis, que representam o conjunto de funcionalidades básicas definidas. Também implementamos a infraestrutura para o controle de fluxo e os módulos de suporte para reconfiguração remota. Avaliação - Essa etapa teve o objetivo de avaliar o quanto é simples a programação de aplicações para RSSF usando o modelo proposto, e qual é o impacto da reconfiguração remota na vida útil da rede. 1.3 Trabalhos relacionados Um dos primeiros trabalhos a propor simplificação para programação de plataformas de sensores no estilo motes foi o TinyDB[1]. O TinyDB disponibiliza um conjunto de funções para agregações simples e permite reconfigurar a coleta de dados da rede por meio de comandos remotos baseados numa linguagem simplificada do estilo SQL. O TinyDB limita-se às aplicações com características de coleta de dados, com possibilidade de agregações em uma topologia hierárquica de roteamento e sem interação local entre os nós da rede. A nossa proposta disponibiliza um conjunto maior de funções para agregações com a possibilidade de reconfiguração, mas, diferentemente do TinyDB, a agregação é feita a partir de grupos locais de nós e enviada para o nó raiz. O nosso modelo de agregação não fica restrito à topologia da árvore de roteamento. Um conjunto de trabalhos mais recentes, com foco em modelos de programação mais adequados para RSSF, está ligado ao conceito de macroprogramação. Dentre os representantes dessa linha, destacamos Regiment[2] e Cosmos[3]. A macroprogramação em RSSF visa simplificar o processo de construção de novas aplicações, disponibilizando ao desenvolvedor abstrações

14 Capítulo 1. Introdução 14 simplificadas para operações mais complexas, principalmente operações distribuídas entre grupos de nós. No conceito de macroprogramação, o programador é habilitado a trabalhar com uma abstração em que a rede é um sistema composto por grupos de sensores. Essa abstração permite a geração de programas de uma forma mais simples. Uma dificuldade encontrada nessas soluções é que, embora a visão de programação da rede como um todo seja mais adequada, em geral os componentes básicos que devem ser executados nos nós individuais ainda precisam ser implementados diretamente pelo desenvolvedor, desviando a atenção para os nós individuais em uma etapa seguinte ao projeto da aplicação. O foco do nosso trabalho é justamente o desenvolvimento desses componentes básicos, incluindo algumas soluções que facilitam o processamento distribuído, como agregações de valores e roteamento de mensagens. Dentre os trabalhos que abordam a reprogramação remota, temos os que utilizam um modelo de máquina virtual simplificado, como Maté [4], ou os trabalhos baseados no DELUGE [5] que carregam o programa original na linguagem nativa. A linguagem utilizada por Maté é bem simples e permite acesso apenas aos recursos básicos do mote, não disponibilizando uma biblioteca de componentes de alto nível que facilite a construção de novas aplicações. Os trabalhos que utilizam o DELUGE precisam fazer a carga completa da aplicação em conjunto com o sistema operacional. Abordagens mais recentes possibilitam a recarga em separado de componentes originais da aplicação [6], permitindo reduzir o custo da reprogramação remota. O nosso modelo permite a reconfiguração do controle de fluxo e dos parâmetros de funcionamento dos componentes. Dessa forma, o desenvolvedor pode reconfigurar as operações mais complexas, não necessitando recarregar o código executável da aplicação e do sistema operacional. O trabalho de Kasten e Romer propõe um modelo de programação baseado em máquinas de estados para RSSF, chamado OSM [7], cujo objetivo é simplificar a programação dos motes. OSM utiliza um processo de compilação para gerar código na linguagem nativa dos nós sensores e não aplica o conceito de reprogramação. Como outros trabalhos, OSM também considera que o desenvolvedor deve construir os componentes mais básicos na linguagem de programação dos nós sensores. Como OSM, o nosso modelo utiliza o conceito de FSM para o controle de fluxo. No nosso caso, a configuração da FSM é interpretada, enquanto que em OSM, é compilada para a plataforma de execução. Inspirado em sistemas multiagentes e inteligência artificial distribuída, temos RuleCaster [8]. RuleCaster usa a linguagem RCAL, um compilador e

15 Capítulo 1. Introdução 15 um ambiente de execução. Com RCAL o programador especifica as regras das transições entre estados e as possíveis ações. O compilador converte o programa RCAL em atividades que são distribuídas aos nós. O sistema de execução interpreta essas atividades, reagindo aos eventos e atuando com ações. Essas atividades geradas pelo compilador funcionam como uma linguagem intermediária e, associadas ao interpretador do sistema de execução, permitem a reconfiguração remota. O conceito de FSM utilizado no nosso modelo é equivalente ao conceito de linguagem intermediária de RCAL. A diferença é que disponibilizamos previamente um conjunto de funcionalidades para serem utilizadas pela nossa linguagem intermediária. Com foco específico num modelo para Finite State Machine (FSM) temos Statecharts[9] e Statemate[10]. O modelo de Statecharts propõe uma notação gráfica para configuração de máquinas de estados, permitindo combinações complexas como paralelismo e hierarquias. Statemate define uma semântica para o modelo de Statecharts. O nosso modelo de programação foi inspirado no mesmo modelo de Statecharts. No nosso caso, as atividades são definidas por uma tabela de transição de estados que representa uma FSM. O nosso principal diferencial em relação aos trabalhos citados acima é a combinação de um mecanismo para configuração do fluxo de processamento da aplicação com uma biblioteca de funções parametrizáveis, a partir da qual, em boa parte dos casos, o desenvolvedor não precisará construir nenhum componente adicional. Essa abordagem permitiu combinar no nosso modelo os principais pontos atendidos de forma isolada em outros trabalhos. 1.4 Organização do documento No capítulo 2, apresentamos, para contextualizar a leitura dos capítulos seguintes, o ambiente de desenvolvimento do TinyOS/NesC. Os três capítulos seguintes apresentam a execução do trabalho. O capítulo 3 apresenta o modelo de programação proposto. O capítulo 4 apresenta a implementação do sistema utilizando os recursos do TinyOS. No capítulo 5 mostramos o processo e a execução dos testes de avaliação do nosso trabalho. Para finalizar, o capítulo 6 apresenta as conclusões do trabalho em função dos objetivos iniciais. Nos apêndices é possível encontrar algumas informações complementares citadas durante o texto principal.

16 2 TinyOS e NesC O framework de programação mais utilizado em redes de sensores sem fio é composto pelo sistema operacional TinyOS [11] e pela linguagem de programação NesC [12]. A linguagem NesC foi definida em resposta a alguns desafios encontrados na programação em ambientes de redes de sensores sem fio. Para isso seu modelo seguiu alguns princípios, um deles é suportar o desenho do TinyOS. O TinyOS foi todo escrito em NesC e apresenta um modelo de execução específico para dispositivos de baixa potência como os utilizados em redes de sensores sem fio. Apesar de NesC ser uma linguagem de programação e TinyOS um sistema operacional, alguns dos seus objetivos se misturam e outros se complementam. Do ponto de vista do usuário, a programação de uma aplicação é uma extensão do sistema operacional. 2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC: Ser orientado a interações com o ambiente - as aplicações devem reagir a mudanças do ambiente, como a leitura de um sensor, e estar preparadas para a concorrência de atividades, como a chegada de um evento durante o processamento de dados; Recursos limitados - Os motes têm recursos físicos limitados devido aos objetivos de tamanho pequeno, baixo custo e baixo consumo de energia; Confiabilidade - A aplicação deve funcionar por longos períodos sem apresentar defeitos, por exemplo uma aplicação de monitoração ambiental deve funcionar meses sem interação humana; Flexibilização do requisito de tempo real - Apesar de algumas atividades serem críticas, como o gerenciamento do rádio ou a amostragem dos sensores, a experiência mostra que é possível atingir essas restrições de tempo com um bom controle da aplicação e limitando o uso de recursos. A concepção de NesC utilizou os seguintes princípios básicos:

17 Capítulo 2. TinyOS e NesC 17 Ser uma extensão de C - C produz código eficiente para todos os microcontroladores normalmente utilizados em dispositivos para redes de sensores sem fio; Ser uma linguagem estática - Não tem alocação dinâmica e o grafo de chamadas é conhecido em tempo de compilação, facilitando a análise citada no item anterior; Suportar e refletir o desenho do TinyOS - Suporta os conceitos de TinyOS para componentes e concorrência. Finalmente, o modelo de programação de NesC expõe ao usuário os seguintes itens: Execução orientada a eventos - As interações internas à aplicação utilizam comandos (actions) e funções de retorno (signals); Modelo flexível de concorrência - provê ferramentas para postar tarefas (tasks) e controlar seções atômicas; Desenho da aplicação orientado a componentes - utiliza um modelo de componentes onde os módulos (modules) implementam as interfaces dos componentes e as configurações (configurations) interligam os módulos. Na prática um programa NesC é composto por um conjunto de componentes (modules) que implementam serviços definidos por interfaces (interfaces). Esses componentes podem ser interligados (wired), via interfaces, pelas definições dos arquivos de configurações (configurations). Esse modelo permite que se tenha diferentes implementações para a mesma interface, onde o arquivo de configuração é que vai indicar qual será a implementação utilizada. Tudo isso facilita a definição de aplicações para diferentes plataformas, necessitando somente criar novos componentes de acesso à nova plataforma e manter a definição da interface original. 2.2 TinyOS TinyOS procura atender algumas características típicas das aplicações em rede de sensores sem fio que diferem das características dos sistemas convencionais. Essas aplicações normalmente operam de forma autônoma por longo tempo, sendo feitas para coletar dados, responder a um ambiente imprevisível e são sem fio. Para endereçar essas características, TinyOS usa uma arquitetura baseada em componentes, um modelo de execução baseado em eventos e tarefas e permite operações em duas fases (split-phase).

18 Capítulo 2. TinyOS e NesC 18 TinyOS provê um ambiente de desenvolvimento composto por uma biblioteca de componentes e algumas ferramentas que simplificam o procedimento de construção de novas aplicações. Por se tratar de um sistema operacional para plataformas com recursos limitados, o TinyOS não funciona como um sistema operacional convencional, acima do qual se executam as aplicações do usuário, mas sim como uma biblioteca que deve ser ligada com essas aplicações para construir um único programa executável e que deve ser carregado em cada nó sensor. Uma das principais características do TinyOS é facilitar a utilização de diversas plataformas de hardware. A utilização do modelo de componentes de NesC possibilita grande modularidade, permitindo que o TinyOS contenha componentes prontos para acessar diferentes tipos de hardwares. A seleção dos componentes adequados para cada hardware é feita durante o processo de compilação e de forma transparente para o usuário. Uma outra característica importante que o TinyOS usa de NesC é o modelo orientado a eventos. Esse modelo segue o funcionamento natural das interfaces de hardware que normalmente integram esses dispositivos. Também possibilita uma operação de baixo consumo de energia, pois o processamento só ocorre quando solicitado. Por exemplo, uma leitura de sensor deve disparar o conversor A/D que, depois de finalizada, deve retornar o valor lido. O programa que implementada essa operação é quebrado em duas fases. Primeiro uma função é chamada para iniciar a conversão, essa função tem retorno imediato. Quando a conversão é finalizada, é disparada a execução de uma função de callback que então deverá processar o resultado da leitura. Esse tipo de operação, as vezes chamada de split-phase, é amplamente utilizada nos outros componentes como a interface de rádio ou o temporizador interno. O modelo de execução do TinyOS gerencia as tarefas (tasks) NesC numa fila de execução para serem executadas oportunamente. As tarefas são executadas até o final e só podem ser interrompidas para execução de uma função de tratamento de interrupção de hardware. Isso exclui possíveis condições de corrida entre tarefas, mas não exclui a possibilidade de acontecer com uma função de tratamento de interrupção de hardware. Para os casos em que possam acontecer condições de corrida, sugere-se a quebra do código em tarefas, explicitando os pontos de possíveis interferências. Ainda assim, NesC permite marcar seções do código para execução atômica. Durante a execução de uma seção atômica, o sistema desliga as interrupções. Resumimos os principais pontos fortes do TinyOS em uma grande biblioteca de componentes para vários tipos de hardwares e em um código robusto e seguro, consequência de cinco anos de amadurecimento do modelo,

19 Capítulo 2. TinyOS e NesC 19 e utilizado por milhares de desenvolvedores. Como consequência do modelo adotado no TinyOS, podemos identificar algumas dificuldades encontradas pelo programador: Uma longa curva de aprendizado tanto para o modelo de programação orientado a eventos (split-phase) quanto para o modelo de interface/- componentes do NesC. A recomendação de manter as tarefas curtas também aumenta a dificuldade para escrever programas que requerem computação intensiva. A manutenção da aplicação após a implantação em campo pode ser inviabilizada pela dificuldade de recuperar os motes para uma carga via cabo ou pelo custo de energia para carregar, remotamente via rádio, todo o executável Tecnologia O TinyOS pode ser executado em uma variedade de dispositivos que combinam diversos microcontroladores, chips de rádios e de armazenamento. A referência [13] apresenta uma lista com as características de vários motes comerciais e protótipos, incluindo os suportados pelo TinyOS. Nessa lista o TinyOS é o sistema operacional mais utilizado, sendo utilizado por 60% dos motes. O processo de compilação no ambiente TinyOS é disparado pelo comando ncc que invoca o compilador NesC, que por sua vez invoca o compilador GCC. O comando ncc é específico do TinyOS e converte alguns parâmetros para os dois procedimentos de compilação seguintes, selecionando também os componentes da biblioteca do TinyOS adequados ao hardware indicado. O compilador NesC - nescc - gera, a partir do código NesC do usuário e do TinyOS, um código C que contém o sistema operacional e a parte da aplicação do usuário. O compilador C - gcc - gera o código executável. Nesse procedimento é indicado o microprocessador utilizado pelo hardware. Além das ferramentas para compilação e carga, o TinyOS disponibiliza a ferramenta TOSSIM[14] que permite a simulação de uma rede de nós executando a aplicação do usuário. Para a execução da simulação deve-se criar um script em Python ou um programa em C++ que, por meio de funções da biblioteca do TOSSIM, ativam nós e definem quais nós podem se comunicar via rádio.

20 Capítulo 2. TinyOS e NesC 20 Principais funcionalidades As principais APIs oferecidas pelo TinyOS são Booting - Controla a inicialização do componente; Communication - Implementa diversos protocolos como Single-hop, Multihop collection, Multihop dissemination e Binary reprogramming; Time - Suporte para criação de temporizadores; Sensing - Suporte para acesso aos sensores; Storage - Suporte para acesso a FlashMemory; Data Structures - Suporte para Filas e Vetor de Bits; Utilities - Suporte para números randômicos, acesso aos Leds e cálculo de CRC; Low- Power - Suporte para operação em baixa potência.

21 3 O modelo de programação proposto O modelo de programação proposto utiliza como base um conjunto de funcionalidades básicas que podem ser combinadas por meio de um controle de fluxo baseado em máquinas de estados finitos (FSM). Conforme dito na seção 1.1, esse conjunto de funcionalidades representa padrões de interação típicos de aplicações para RSSF. Podemos dizer que os padrões de interação estão no nível da execução de uma linguagem de macroprogramação em RSSF citado na seção 1.3, enquanto que o conjunto de funcionalidades básicas equivalem ao nível de uma linguagem que é executada em cada mote. Esse conjunto de funcionalidades básicas pode ser visto como uma biblioteca de ações e eventos. Com isso o controle de fluxo da máquina de estado pode comandar ações e reagir a eventos dessa biblioteca. Para completar o nosso modelo de programação, possibilitamos que o comportamento de algumas funcionalidades básicas possa ser configurado por meio de parâmetros. Nas próximas seções vamos, primeiramente, apresentar o nosso conjunto de padrões de interação e a respectiva biblioteca de funções. Em seguida vamos descrever o funcionamento do controle de fluxo baseado em FSM para depois apresentar um pequeno exemplo de utilização do nosso modelo. 3.1 Padrões de interação para aplicações em RSSF Entendemos que o requisito de facilidade de programação depende diretamente do conjunto de padrões de interação proposto. Esses padrões de interação devem representar funcionalidades genéricas e ao mesmo tempo devem ser suficientemente expressivos para poder atender diferentes tipos de aplicações em RSSF, i.e., deve ser possível construir diversas aplicações a partir da combinação desses padrões. Optamos por consolidar a lista de padrões de interação a serem oferecidos a partir da análise de duas diferentes fontes de informação. A primeira fonte foi um conjunto de aplicações encontradas na literatura e a segunda fonte foi a demanda gerada pelos modelos de macroprogramação. Os modelos de macroprogramação considerados foram analisados em [15].

22 Capítulo 3. O modelo de programação proposto 22 A seguir apresentamos cada fonte analisada e o resultado final com a lista consolidada. No apêndice A apresentamos, com mais detalhes, o procedimento utilizado e os padrões identificados para cada fonte Operações típicas das aplicações em RSSF Para identificar as operações típicas das aplicações escolhemos três aplicações para RSSF com diferentes comportamentos funcionais. Essas aplicações foram inspiradas em alguns exemplos retirados da literatura sobre RSSF, principalmente de [2], [16] e [17]. A partir das operações necessárias para cada aplicação foi possível identificar alguns padrões de interação. A seguir apresentamos cada aplicação. Aplicação 1 - Alarme de incêndio florestal O objetivo da aplicação é detectar rapidamente focos de incêndio em florestas. Para isso os sensores são distribuídos em regiões da floresta de forma que se possa identificar a região do alarme. Os nós ficam executando periodicamente uma leitura do sensor de temperatura. Caso um nó detecte uma leitura de temperatura maior que um valor predefinido, este deve verificar se as temperaturas dos nós vizinhos estão próximas da temperatura de alarme. A condição de alarme será confirmada se pelo menos dois nós vizinhos estiverem com o valor de temperatura maior que um valor percentual do valor de alarme. Nesse caso será enviada uma mensagem para a estação servidora. Essa mensagem deve conter a temperatura medida e o identificador do nó. O nó ativado deve notificar os nós vizinhos que um alarme já foi enviado. Um nó só pode gerar um novo alarme para sua região caso já tenham se passado pelo menos 60 minutos da última notificação de alarme. Aplicação 2 - Monitor de temperatura e Alarme de incêndio predial Essa aplicação usa um conjunto de sensores com capacidade de leitura de temperatura com duplo objetivo: monitorar a temperatura média dos ambientes do prédio (controle do conforto ambiental) e gerar alarmes em caso de incêndio. Os nós são distribuídos pelo edifício e cada ambiente define um grupo de nós. Para a monitoração, cada nó faz uma leitura periódica do sensor de temperatura e envia o valor para o coordenador do grupo. O coordenador do grupo calcula a média das temperaturas de todos os nós do grupo, e, em seguida, envia para a central de controle uma mensagem com o valor calculado.

23 Capítulo 3. O modelo de programação proposto 23 Uma outra leitura periódica é usada para o alarme de incêndio. Se o valor estiver acima do valor de alarme predefinido, o nó deve consultar os nós vizinhos do mesmo grupo e verificar quantos nós estão com valores acima de 90% do valor de alarme. Independentemente dos valores respondidos, o nó ativo deve enviar uma mensagem de alarme com o quorum da consulta para a central de controle. Sempre que um alarme é gerado, o nó ativado deve notificar os nós vizinhos que esse alarme já foi enviado. Um nó só pode gerar um novo alarme para seu ambiente caso já tenha passado pelo menos um minuto da última notificação de alarme. Aplicação 3 - Estacionamento urbano e Monitoração de vagas Essa aplicação auxilia motoristas na reserva de uma vaga de estacionamento. Também informa para uma central de controle a situação das vagas em cada região. Para isso usa um conjunto de sensores distribuídos pelas vagas de estacionamento da rua. Esses sensores indicam se a vaga está ocupada ou não. Os nós sensores são agrupados por região (CEP, bairro ou Rua). Para a busca de vagas, o veículo, também equipado com um nó sem fio, envia uma mensagem para os nós vizinhos solicitando a reserva de uma vaga disponível. Todos os nós respondem com a situação da respectiva vaga e os nós com vaga não ocupada fazem uma pré-reserva com a identificação do nó solicitante. O nó solicitante seleciona um dos nós disponíveis e responde para os vizinhos a sua escolha, de forma a confirmar a vaga selecionada e liberar o restante das vagas. Então o nó selecionado responde a confirmação da seleção para o nó solicitante. Se ocorrer a situação de mais de uma solicitação durante o processo de negociação, os nós das vagas disponíveis devem responder de acordo com a ordem do recebimento. Na monitoração, cada nó envia periodicamente para o nó coordenador do grupo a informação da sua vaga. O nó coordenador sumariza a situação da região e envia uma mensagem com os contadores de vagas para a central de controle Elementos utilizados nos modelos de macroprogramação Os modelos de macroprogramação são uma fonte natural para identificação dos padrões de interação de interesse. No nosso caso analisamos os modelos de macroprogramação apresentados em [15]: Regiment[2, 18]; Pleiades[17]; Cosmos[3]; TinyDB[1]; WADL[16]; ATaG[19].

24 Capítulo 3. O modelo de programação proposto 24 Os principais padrões encontrados foram relativos à comunicação. Identificamos padrões para diferentes formações de grupos de nós e a possibilidade de aplicar funções agregadoras nesses grupos. Também identificamos padrões para comunicação com a estação servidora Padrões de interação identificados Na Tabela 3.1 apresentamos o resultado final da consolidação para os padrões de interação. No apêndice A apresentamos com mais detalhes a análise utilizada para a identificação e consolidação dos padrões. Elemento Tabela 3.1: Padrões de interação identificados Descrição Grupo: Comunicação Envia EB Envia uma mensagem do nó em execução para a Estação Servidora. Envia Nó Envia uma mensagem do nó em execução para um nó específico dentro do grupo. Envia Pai Envia uma mensagem do nó em execução para o nó Pai na hierarquia topológica. Envia Filhos Envia uma mensagem do nó em execução para os nós Filhos na hierarquia topológica. Grupo: Funções de agregação Média Grupo Calcula o valor médio de valores distribuídos pelos nós do grupo. Somatório Grupo Calcula a soma de valores distribuídos pelos nós do grupo. Máximo Grupo Calcula o valor máximo dentre os valores distribuídos pelos nós do grupo. Mínimo Grupo Calcula o valor mínimo dentre os valores distribuídos pelos nós do grupo. Sumário Grupo Sumariza os estados dos nós distribuídos num grupo. Reserva Recurso Grupo Reserva de um determinado recurso dos nós do grupo. Baseado na negociação entre o nó ativo e o nós do grupo. Agrega Grupo Gera um vetor de dados com os respectivos valores dos nós de um grupo. Grupo: Funções Locais Evento Timer Configura um temporizador para execução de um procedimento. Evento Condição de leitura sensor Configura uma condição de leitura de sensor para execução de um procedimento. Evento Condição Configura uma condição de um cálculo de agregação de cálculo de para execução de um procedimento. agregação Continua na próxima página...

25 Capítulo 3. O modelo de programação proposto 25 Elemento Evento Condição de mensagem recebida Grupo: Agrupamentos Vizinhos 1-hop Vizinhos n-hops Parâmetros Estáticos Parâmetros Dinâmicos Filhos Filhos n- camadas Rede Tabela 3.1: Padrões de interação continuação Descrição Configura uma condição de um código de mensagem recebida para execução de um procedimento. Define um grupo de nós vizinhos do nó em execução ao alcance do sinal de rádio. Implementado com mensagem broadcast. Define um grupo de nós vizinhos do nó em execução ao alcance de até n saltos. Implementado com mensagem broadcast e subsequentes reencaminhamentos de mensagens pelos nós vizinhos. Define um grupo de nós da rede que atendam uma determinada condição que não varia no tempo. Define um grupo de nós da rede que atendam uma determinada condição que pode variar no tempo. Define um grupo de nós imediatamente abaixo na hierarquia topológica da rede. Define um grupo de nós imediatamente abaixo n camadas na hierarquia topológica da rede. Define o grupo de todos os nós da rede. 3.2 Conjunto das funcionalidades básicas Nessa seção vamos identificar e detalhar o conjunto das funções oferecidas para disponibilizar os padrões de interação identificados. Na próxima subseção (3.2.1), apresentamos a arquitetura proposta com a abordagem que estamos considerando para a implementação da nossa biblioteca. Na subseção 3.2.2, discutimos as operações que dependem da comunicação na rede. Em seguida, na subseção 3.2.3, propomos um conjunto de parâmetros que permitem a simplificação da quantidade de funções e ao mesmo tempo facilitam a implementação do procedimento de reconfiguração remota. Finalmente apresentamos a biblioteca de funções na seção Arquitetura da biblioteca de funções Para uma melhor identificação das funções, utilizamos uma arquitetura em camadas. Essa arquitetura divide as funcionalidades básicas em diferentes funções, mas que colaboram entre si para atender aos requisitos dos padrões de interação.

26 Capítulo 3. O modelo de programação proposto 26 Com essa arquitetura temos a maioria das operações disparadas pela aplicação local, mas também temos algumas operações disparadas por aplicações remotas via mensagens de comunicação. Isso é necessário para garantir o funcionamento de operações coordenadas a partir de um nó específico e que não dependam da aplicação local dos outros nós. A visão de camadas sugere que esse processamento de mensagens seja feito de forma hierárquica. Isto é, as camadas mais abaixo processam as suas mensagens e repassam as outras mensagens para as camadas acima. Figura 3.1: Camadas da arquitetura de execução A seguir descrevemos cada camada da arquitetura proposta na figura 3.1: Sistema Operacional - Essa camada provê as abstrações para acessar os dispositivos sensores e o rádio. Também gerencia a execução das diversas tarefas do próprio sistema operacional e das outras camadas. Nesse trabalho utilizamos o sistema operacional TinyOS[11]. Funções Locais - Essa camada disponibiliza abstrações para acesso a recursos locais, principalmente recursos de hardware do dispositivo. Funções de agregação - Essa camada contém a execução dos cálculos em cima da agregação dos valores de um grupo de nós. Interage com a camada de Agrupamento para obter os valores distribuídos em outros nós e com a camada de funções locais para obter os valores locais. Agrupamento - Essa camada é responsável pela definição e organização dos grupos de nós conforme a definição da aplicação. Interage com a camada de comunicação para a troca de mensagens entre os nós que compõem os grupos.

27 Capítulo 3. O modelo de programação proposto 27 Comunicação - Essa camada é responsável pela comunicação entre os nós e com a estação base. Essa camada provê, para a camada de Agrupamento, algumas facilidades de comunicação para a formação de grupos de nós. Também fornece algumas funções para Camada da Aplicação. Aplicação - Essa camada executa o programa responsável pelo comportamento da aplicação. É onde executamos o controle de fluxo que utiliza as funcionalidades básicas disponibilizadas pelas demais camadas Operações dependentes da comunicação A maioria das funcionalidades levantadas dependem da comunicação na rede de sensores sem fio. Por isso, primeiro identificamos os protocolos básicos necessários para comunicação para, em seguida, definir o comportamento das funções biblioteca. Analisando as características de comunicação para os padrões de interação levantados foi possível identificar a necessidade de três formas de comunicação descritas a seguir. Roteamento - Formação de uma topologia hierárquica de comunicação baseada na intensidade do sinal de rádio entre os nós. Considerando a estação base como nó raiz. Permite o roteamento de mensagens de qualquer nó da rede para a estação base e da estação base para qualquer nó da rede. Disseminação - Propagação do conteúdo de uma estrutura de dados pelos nós. Deve-se manter um controle de versão e garantir que todos os nós recebam a última versão dos dados. Formação de Grupos - Protocolo básico para formação de grupos. Uma mensagem, a partir de um nó origem, deve ser propagada em saltos pelos nós vizinhos. Cada nó poderá responder a essa mensagem, que deverá ser roteada no caminho inverso. O limite de saltos e os nós que devem responder são definidos nos parâmetros de formação do grupo. Parâmetros na formação de grupos Para garantir o reaproveitamento do protocolo de formação de grupos é necessário que a mensagem tenha parâmetros que permitam utilizar diferentes regras de formação de grupos. Esses mesmos parâmetros são utilizados diretamente pela aplicação como facilitadores na configuração da aplicação.

28 Capítulo 3. O modelo de programação proposto 28 A ideia básica é que cada grupo de nós seja definido pela combinação de um conjunto de parâmetros e o alcance máximo em saltos na comunicação via rádio (hops). O nó que disparar a comunicação deve colocar na mensagem os seus parâmetros. Cada nó que receber uma mensagem deverá comparar os parâmetros da mensagem com os parâmetros locais para verificar a necessidade de responder a mensagem. A mensagem deverá ser propagada até alcançar o limite de hops definido. Os parâmetros devem ser definidos de forma a atender todos os tipos de formação de grupos. Nos grupos hierárquicos, deve-se utilizar adicionalmente o parâmetro de nó pai definido na topologia do protocolo de roteamento. Cálculo de agregação O cálculo de agregação sempre será centralizado em um nó solicitante, podendo ser um nó coordenador de grupo (líder) ou um nó disparado por um evento interno como um alarme. O nó solicitante deverá utilizar o suporte de formação de grupos disponibilizado pela funcionalidade de agrupamento, o retorno da formação do grupo deve conter a informação requerida. A cada valor retornado, o nó solicitante deverá contabilizar parcialmente a função agregadora solicitada. Quando finalizar o tempo limite para efetuar a agregação, o nó solicitante deverá aplicar a finalização da função de agregação, e em seguida disparar um evento interno para indicar o final de agregação. A partir do evento com o resultado da agregação a aplicação pode, opcionalmente, efetuar uma operação de comparação do resultado com um valor constante préconfigurado. Para o caso da função de Sumário a operação é executada em dois estágios. O primeiro estágio executa a agregação totalizando a quantidade de valores acima e abaixo de um limite parametrizado. O segundo estágio retorna o resultado de uma nova comparação em cima de um dos totais do primeiro estágio, por exemplo compara se o total acima é maior que um outro limite parametrizado Definição dos parâmetros para configuração Com o objetivo de simplificar o desenvolvimento de novas aplicações e deixar as funções da nossa biblioteca mais genéricas, identificamos um conjunto de parâmetros que permitem configurar as diversas funcionalidades requeridas pelos padrões de interação. O modelo baseado em parâmetros também simplifica o processo de desenvolvimento e reconfiguração de aplicações.

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC:

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC: 2 TinyOS e NesC O framework de programação mais utilizado em redes de sensores sem fio é composto pelo sistema operacional TinyOS [11] e pela linguagem de programação NesC [12]. A linguagem NesC foi definida

Leia mais

Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado

Adriano Francisco Branco. Um modelo de programação para RSSF com. Dissertação de Mestrado Adriano Francisco Branco Um modelo de programação para RSSF com suporte à reconfiguração dinâmica de aplicações Dissertação de Mestrado Dissertação apresentada ao Programa de Pós graduação em Informática

Leia mais

Renato Figueiró Maia. Um Framework para Sistemas Baseados em Componentes Distribuídos. Informática DEPARTAMENTO DE INFORMÁTICA

Renato Figueiró Maia. Um Framework para Sistemas Baseados em Componentes Distribuídos. Informática DEPARTAMENTO DE INFORMÁTICA Renato Figueiró Maia Um Framework para Adaptação Dinâmica de Sistemas Baseados em Componentes Distribuídos DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós graduação em Informática Rio

Leia mais

A nossa avaliação foi dividida em duas partes. Na primeira exercitamos

A nossa avaliação foi dividida em duas partes. Na primeira exercitamos 5 Avaliação A nossa avaliação foi dividida em duas partes. Na primeira exercitamos nosso modelo de programação com a implementação das três aplicações de referência definidas na subseção 3.1.1. Na segunda

Leia mais

Projeto Lógico de Computadores. Profa. MSc. Carolina Melo Santana

Projeto Lógico de Computadores. Profa. MSc. Carolina Melo Santana Projeto Lógico de Computadores Profa. MSc. Carolina Melo Santana karolstana@yahoo.com.br Nível de Máquina de Sistema Operacional Dinâmica: Batata quente Perguntas a serem respondidas pelos alunos que estiverem

Leia mais

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO

Bruno Loureiro Rezende. Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO Bruno Loureiro Rezende Um Framework para a Automação de Testes com Linguagens de Especificação Configuráveis DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós-graduação em Informática

Leia mais

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Visões Arquiteturais Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

2 Conceitos. 2.1 Sistema Multiagentes Abertos e Abordagens de Leis

2 Conceitos. 2.1 Sistema Multiagentes Abertos e Abordagens de Leis 2 Conceitos Neste capítulo são apresentados alguns conceitos necessários para o entendimento desta dissertação. Visto que esta proposta está inserida no contexto de sistemas multiagentes abertos, serão

Leia mais

RSSF TinyOS/nesC + Terra

RSSF TinyOS/nesC + Terra RSSF TinyOS/nesC + Terra Adriano Branco abranco@inf.puc-rio.br Maio, 2017 Agenda Parte 1 Introdução a RSSF Programação em RSSF - TinyOS Parte 2 Terra Simplificando a programação Tarefas práticas usando

Leia mais

Matchmaking Uma infraestrutura para alinhamento de esquemas

Matchmaking Uma infraestrutura para alinhamento de esquemas Raphael do Vale Amaral Gomes Matchmaking Uma infraestrutura para alinhamento de esquemas Dissertação de mestrado Dissertação apresentada como requisito parcial para a obtenção do grau de Mestre pelo Programa

Leia mais

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/dsl Por que DSLs? Melhorar a produtividade dos programadores input =~ /\d{3}-\d{3}-\d{4}/ Facilitar a escrita e

Leia mais

Um Estudo Sobre Middlewares Adaptáveis

Um Estudo Sobre Middlewares Adaptáveis Luiz Gustavo Couri Nogara Um Estudo Sobre Middlewares Adaptáveis Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do grau de Mestre pelo Programa de Pós graduação em

Leia mais

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s Introdução Contribuição do Capítulo 2: discutir modelos de dados definir conceitos de esquemas e instâncias descrever os tipos de interfaces e linguagens oferecidas por um SGBD mostrar o ambiente de programas

Leia mais

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado Adriano Medeiros dos Santos Suporte a Componentes Compostos Para o Middleware SCS Dissertação de Mestrado Dissertação apresentada ao Programa de Pós graduação em Informática do Departamento de Informática

Leia mais

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão

Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão Luiz Rodolfo Neves Caldeira Geração semi-automática de massas de testes funcionais a partir da composição de casos de uso e tabelas de decisão Dissertação de Mestrado Dissertação apresentada como requisito

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar

Leia mais

TinyOS. Saymon Castro de Souza. Orientador: Prof. Dr. José Gonçalves Pereira Filho

TinyOS. Saymon Castro de Souza. Orientador: Prof. Dr. José Gonçalves Pereira Filho TinyOS Saymon Castro de Souza Orientador: Prof. Dr. José Gonçalves Pereira Filho Agenda Introdução nesc TinyOS Preparação do ambiente Implementação RSSF Formadas por um grande número de pequenos sensores

Leia mais

Data Warehouse ETL. Rodrigo Leite Durães.

Data Warehouse ETL. Rodrigo Leite Durães. Data Warehouse ETL Rodrigo Leite Durães rodrigo_l_d@yahoo.com.br Introdução Um dos desafios da implantação de um DW é a integração dos dados de fontes heterogêneas e complexas, padronizando informações,

Leia mais

4 Implementa 4.1 Vis ao operacional geral

4 Implementa 4.1 Vis ao operacional geral 4 Implementação Neste capítulo vamos apresentar nossa implementação para um sistema que suporta a biblioteca de funções parametrizáveis e a engrenagem da FSM definidas no capítulo 3. Vamos apresentar na

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda

Leia mais

Infraestrutura de Hardware. Funcionamento de um Computador

Infraestrutura de Hardware. Funcionamento de um Computador Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é

Leia mais

INTRODUÇÃO A SISTEMAS OPERACIONAIS

INTRODUÇÃO A SISTEMAS OPERACIONAIS INTRODUÇÃO A SISTEMAS OPERACIONAIS Prof. Me. Hélio Esperidião DEFINIÇÃO DE SISTEMA OPERACIONAL. O sistema operacional é uma camada de software colocada sobre o hardware para gerenciar todos os componentes

Leia mais

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks 48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o

Leia mais

Segundo trabalho prático de implementação Sistema de reserva de assentos

Segundo trabalho prático de implementação Sistema de reserva de assentos Segundo trabalho prático de implementação Sistema de reserva de assentos 1. Descrição do problema Computação Concorrente (MAB-117) 2016/2 Prof. Silvana Rossetto 1 DCC/IM/UFRJ 17 de novembro de 2016 Um

Leia mais

Francisco Eduardo Torres Cursino de Moura. Uma proposta para Rendering Baseado em Imagens em celulares

Francisco Eduardo Torres Cursino de Moura. Uma proposta para Rendering Baseado em Imagens em celulares Francisco Eduardo Torres Cursino de Moura Uma proposta para Rendering Baseado em Imagens em celulares Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre

Leia mais

Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave

Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave Leandro dos Santos Nazareth Sistema para Consultas sobre Banco de Dados Relacional Baseado em Palavras-Chave Dissertação de Mestrado Dissertação apresentada ao Programa de Pós-Graduação em Informática

Leia mais

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34 Sistemas de Arquivos Distribuídos Bruno M. Carvalho Sala: 3F2 Horário: 35M34 Introdução Serviço de arquivos descreve os serviços oferecidos pelo sistema de arquivos aos clientes Servidor de arquivos processo

Leia mais

QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas

QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas Vinícius Fontes Vieira da Silva QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas Dissertação de Mestrado Dissertação apresentada ao programa de Pósgraduação em Informática do Departamento de

Leia mais

Marcos Borges Pessoa. Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento

Marcos Borges Pessoa. Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento Marcos Borges Pessoa Geração e execução automática de scripts de teste para aplicações web a partir de casos de uso direcionados por comportamento Dissertação de mestrado Dissertação apresentada como requisito

Leia mais

Vinci Pegoretti Amorim. Uma Arquitetura Flexível para Replicação de Bases Distribuídas Heterogêneas. Dissertação de Mestrado

Vinci Pegoretti Amorim. Uma Arquitetura Flexível para Replicação de Bases Distribuídas Heterogêneas. Dissertação de Mestrado Vinci Pegoretti Amorim Uma Arquitetura Flexível para Replicação de Bases Distribuídas Heterogêneas Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título de Mestre

Leia mais

Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes

Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes Richard Werneck de Carvalho Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título

Leia mais

Estruturas de Sistemas Operacionais

Estruturas de Sistemas Operacionais Estruturas de Sistemas Operacionais Sistemas Operacionais - Tópicos Componentes do Sistema Serviços de Sistemas Operacionais Chamadas ao Sistema Estrutura do Sistema Máquinas Virtuais Chamadas ao Sistema

Leia mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

Leia mais

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída 11 1 Introdução Recentes avanços em redes de computadores impulsionaram a busca e o desenvolvimento de meios para facilitar e acelerar o desenvolvimento de aplicações em sistemas distribuídos, tornando

Leia mais

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a 1 Introdução Middleware é um termo cunhado no final da década de 60 (Naur e Randell, 1968), que é freqüentemente empregado para designar uma camada de software que oferece uma infra-estrutura para construção

Leia mais

Servidor DHCP Dynamic Host Configuration Protocol

Servidor DHCP Dynamic Host Configuration Protocol Servidor DHCP Dynamic Host Configuration Protocol IFSC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO SUBSEQUENTE DE TELECOMUNICAÇÕES! Prof. Tomás Grimm DHCP Numa rede de Arquitetura TCP/IP, todo computador tem que

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO O SISTEMA OPERACIONAL PROFESSOR CARLOS MUNIZ

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO O SISTEMA OPERACIONAL PROFESSOR CARLOS MUNIZ INTRODUÇÃO À TECNOLOGIA DA PROFESSOR CARLOS MUNIZ O QUE É UM SISTEMA OPERACIONAL? Há muitos tipos de Sistemas Operacionais, cuja complexidade varia e depende de que tipo de funções é provido, e para que

Leia mais

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli Programa de computador sequência de comandos ou instruções executados por um computador com a finalidade de produzir um resultado e resolver um problema; Linguagem de programação método para a criação

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO SISTEMA DE ARQUIVOS PROFESSOR CARLOS MUNIZ

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO SISTEMA DE ARQUIVOS PROFESSOR CARLOS MUNIZ INTRODUÇÃO À TECNOLOGIA DA PROFESSOR CARLOS MUNIZ Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes

Leia mais

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru 1 Introdução Atualmente a demanda pela construção de novos sistemas de software tem aumentado. Junto com esse aumento também cresce a complexidade das soluções que estão sendo desenvolvidas, o que torna

Leia mais

Adaptação Dinâmica desistemas Distribuídos p.1/54

Adaptação Dinâmica desistemas Distribuídos p.1/54 Adaptação Dinâmica de Sistemas Distribuídos Francisco José da Silva e Silva Orientadores: Prof. Dr. Markus Endler Prof. Dr. Fabio Kon Instituto de Matemática e Estatística da Universidade de São Paulo

Leia mais

2

2 ANÁLISE DE SISTEMAS (processo de desenvolvimento de sistemas) por Antônio Maurício Pitangueira 1 2 Levantamento de requisitos Análise de requisitos Projeto Implementação Testes Implantação Foco da disciplina

Leia mais

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan Introdução aos computadores, à Internet e à World Wide Web Prof. Marcelo Roberto Zorzan História do Java Origem Linguagem desenvolvida pela Sun Microsystems Sintaxe similar ao C++ Inicialmente chamada

Leia mais

Prof. Me. Sérgio Carlos Portari Júnior

Prof. Me. Sérgio Carlos Portari Júnior Prof. Me. Sérgio Carlos Portari Júnior Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade

Leia mais

Análise e projeto de sistemas

Análise e projeto de sistemas Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os

Leia mais

3 Ferramenta Proposta 3.1. Objetivos

3 Ferramenta Proposta 3.1. Objetivos 3 Ferramenta Proposta 3.1. Objetivos O objetivo deste trabalho é a criação de um framework de testes que incorpore algumas das novas idéias encontradas na literatura. Sua principal característica deve

Leia mais

Caracterização de Sistemas Distribuídos

Caracterização de Sistemas Distribuídos Caracterização de Sistemas Distribuídos Roteiro Conceitos de Hardware Conceitos de Software Classificação de Flynn Classificação baseada no acesso a memória 2 Conceitos de HW Múltiplas CPUs Diferentes

Leia mais

3 Sistema Operacional Scriptável

3 Sistema Operacional Scriptável 3 Sistema Operacional Scriptável Sistema operacional scriptável é a nossa proposta de modelo de projeto de sistema operacional com o objetivo de aumentar a sua flexibilidade e facilidade de desenvolvimento,

Leia mais

Sumário. Simulação (1) Simulação (2) Simulação (3) Inteligência Artificial Distribuída (1) Ambientes de Simulação Baseados em Agentes

Sumário. Simulação (1) Simulação (2) Simulação (3) Inteligência Artificial Distribuída (1) Ambientes de Simulação Baseados em Agentes Ambientes de Simulação Baseados em Agentes Disciplina: Inteligência Artificial Avançada INF 5004 Aluna: Diana Francisca Adamatti Orientadora: Ana Lucia C. Bazzan Sumário Simulação Inteligência Artificial

Leia mais

João Coutinho Machado. Um estudo sobre o desenvolvimento orientado a serviços

João Coutinho Machado. Um estudo sobre o desenvolvimento orientado a serviços João Coutinho Machado Um estudo sobre o desenvolvimento orientado a serviços DISSERTAÇÃO DE MESTRADO DEPARTAMENTO DE INFORMÁTICA Programa de Pós-Graduação em Informática Departamento de Informática, março

Leia mais

Uma meta-ferramenta de geração de diagramas utilizada na engenharia reversa de sistemas legados.

Uma meta-ferramenta de geração de diagramas utilizada na engenharia reversa de sistemas legados. Rodnei Silva Couto Uma meta-ferramenta de geração de diagramas utilizada na engenharia reversa de sistemas legados. Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção

Leia mais

Framework para coordenação e mediação de Web Services modelados como Learning Objects para ambientes de aprendizado na Web

Framework para coordenação e mediação de Web Services modelados como Learning Objects para ambientes de aprendizado na Web Reubem Alexandre D'Almeida Girardi Framework para coordenação e mediação de Web Services modelados como Learning Objects para ambientes de aprendizado na Web DISSERTAÇÃO DE MESTRADO Dissertação apresentada

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo

Leia mais

Arquiteturas. capítulo

Arquiteturas. capítulo Arquiteturas capítulo 2 Modelos de arquitetura de sistemas distribuídos Clientes realizam pedidos a servidores Client invocation invocation Server result Server result Client Key: Process: Computer: Modelos

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos

Leia mais

Proposta de um sistema de suporte à decisão para programação de navios baseado em otimização: um caso prático

Proposta de um sistema de suporte à decisão para programação de navios baseado em otimização: um caso prático Gustavo Souto dos Santos Diz Proposta de um sistema de suporte à decisão para programação de navios baseado em otimização: um caso prático Dissertação de Mestrado Dissertação apresentada como requisito

Leia mais

Sistemas Embarcados (embutidos) Paulo C. Masiero

Sistemas Embarcados (embutidos) Paulo C. Masiero Sistemas Embarcados (embutidos) Paulo C. Masiero Caracterização São usados para controlar sistemas de diferentes tipos: máquinas domésticas, fábricas, carros, jogos etc. O software é embutido no hardware

Leia mais

Bruno Siqueira Silva. Workflows dinâmicos em gerência de projetos ágeis. Dissertação de Mestrado

Bruno Siqueira Silva. Workflows dinâmicos em gerência de projetos ágeis. Dissertação de Mestrado Bruno Siqueira Silva Workflows dinâmicos em gerência de projetos ágeis Dissertação de Mestrado Dissertação apresentada ao Programa de Pósgraduação em Informática da PUC-Rio como requisito parcial para

Leia mais

Avaliação Preliminar dos Movimentos Aéreos no Aeroporto Internacional Antônio Carlos Jobim Galeão

Avaliação Preliminar dos Movimentos Aéreos no Aeroporto Internacional Antônio Carlos Jobim Galeão Íris Firmino Cardoso Avaliação Preliminar dos Movimentos Aéreos no Aeroporto Internacional Antônio Carlos Jobim Galeão Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção

Leia mais

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli Técnico em Informática Web JavaScript Profª Ana Paula Mandelli anapaula_mandelli@hotmail.com Para o JavaScript - NetBeans O NetBeans é um ambiente de desenvolvimento integrado (IDE) Java desenvolvido pela

Leia mais

Material baseado nos slides de: Marcos José Santana Regina Helena Carlucci Santana

Material baseado nos slides de: Marcos José Santana Regina Helena Carlucci Santana Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC643 Avaliaçãode Desempenhode Sistemas Computacionais Aula 5 Sarita Mazzini Bruschi

Leia mais

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de arquitetura Linha

Leia mais

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Rede de computadores Cliente- servidor. Professor Carlos Muniz Rede de computadores Professor Carlos Muniz Definição Cliente-servidor é um modelo computacional que separa clientes e servidores, sendo interligados entre si geralmente utilizando-se uma rede de computadores.

Leia mais

4 Arquitetura Adotada

4 Arquitetura Adotada 4 Arquitetura Adotada Neste trabalho foi desenvolvido um sistema para a inspeção de dutos de óleo, gás e outros fluidos. Este sistema está sendo usado em inspeções que utilizam como ferramenta de inspeção

Leia mais

Sistemas Operacionais

Sistemas Operacionais Apresentação Introdução Aula 0 INF042 Plano de ensino conforme resolução CEPE /203 Prof. Alexandre CARISSIMI (asc at inf.ufrgs.br) Turma A Objetivos da disciplina Prof. Sérgio CECHIN (cechin at inf.ufrgs.br)

Leia mais

Barramento. Prof. Leonardo Barreto Campos 1

Barramento. Prof. Leonardo Barreto Campos 1 Barramento Prof. Leonardo Barreto Campos 1 Sumário Introdução; Componentes do Computador; Funções dos Computadores; Estrutura de Interconexão; Interconexão de Barramentos Elementos de projeto de barramento;

Leia mais

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software Uma Arquitetura para a Coordenação e a de Artefatos de 23 3 Arquitetura para a Coordenação e a de Artefatos de Resumo Este capítulo apresenta a arquitetura ACCA, que é a parte central deste trabalho. A

Leia mais

Utilização de uma estratégia para identificação de fontes de informação na fase de elicitação

Utilização de uma estratégia para identificação de fontes de informação na fase de elicitação Edson Andrade de Moraes Utilização de uma estratégia para identificação de fontes de informação na fase de elicitação Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção

Leia mais

Programando aplicações para redes de sensores sem fio usando uma linguagem reativa

Programando aplicações para redes de sensores sem fio usando uma linguagem reativa Programando aplicações para redes de sensores sem fio usando uma linguagem reativa Aluno: Carlo Melo Caratori Orientador: Noemi Rodriguez Co-orientador: Francisco Sant anna Introdução Redes de Sensores

Leia mais

Estudo Comparativo de Estratégias de Classificação de Páginas Web

Estudo Comparativo de Estratégias de Classificação de Páginas Web Thoran Araguez Rodrigues Estudo Comparativo de Estratégias de Classificação de Páginas Web Dissertação de Mestrado Dissertação apresentada ao Programa de Pós-Graduação em Informática da Pontifícia Universidade

Leia mais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação POR QUE APRENDER CONCEITOS

Leia mais

Estrutura do SO. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Estrutura do SO. Prof. Paulo Cesar F. de Oliveira, BSc, PhD Estrutura do SO Prof. Paulo Cesar F. de Oliveira, BSc, PhD 1 Seção 1.1 Introdução 2 Usuários Aplicações Utilitários Linguagem de Comandos Núcleo do Sistema ou kernel Rotinas do Sistema Operacional Hardware

Leia mais

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Estrutura dos Sistemas Operacionais. Adão de Melo Neto Estrutura dos Sistemas Operacionais Adão de Melo Neto 1 Sistema Operacional - Formas de acessar o KERNEL do SISTEMA OPERACIONAL (SO) - A linguagem de comandos faz parte do SO O Sistema Operacional é formado

Leia mais

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste 6 Discussão Além das técnicas de teste usando modelos gramaticais, existem outras abordagens de teste funcional de sistemas que estão sendo estudadas pela comunidade científica. Algumas delas se dedicam

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

AULA 12 SISTEMAS SUPERVISÓRIOS

AULA 12 SISTEMAS SUPERVISÓRIOS AULA 12 SISTEMAS SUPERVISÓRIOS Prof. Fabricia Neres São sistemas digitais de monitoração e operação da planta que gerencia as variáveis do processo. Estas informações são atualizadas continuamente e armazenadas

Leia mais

QUESTÕES SOBRE GERÊNCIA DE REDES

QUESTÕES SOBRE GERÊNCIA DE REDES QUESTÕES SOBRE GERÊNCIA DE REDES A SEGUIR 15 QUESTÕES DE CONCURSOS MEC 2011 - CESPE - ATIVIDADE TÉCNICA DE COMPLEXIDADE GERENCIAL - ANALISTA DE SISTEMA OPERACIONAL 1. Tendo como base o protocolo SNMP,

Leia mais

Roteamento e Roteadores. Conceitos Diversos

Roteamento e Roteadores. Conceitos Diversos e Roteadores Conceitos Diversos Um roteador é um dispositivo que provê a comunicação entre duas ou mais LAN s, gerencia o tráfego de uma rede local e controla o acesso aos seus dados, de acordo com as

Leia mais

INFORMÁTICA: Informação automática

INFORMÁTICA: Informação automática INTRODUÇÃO INFORMÁTICA: Informação automática Definição: é a ciência que estuda o tratamento automático e racional da informação (encarregada pelo estudo e desenvolvimento de máquinas e métodos para processar

Leia mais

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo

Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo Múltipla escolha 1. Em que consiste um sistema operacional: a. Um conjunto de

Leia mais

ORGANIZAÇÃO DE COMPUTADORES

ORGANIZAÇÃO DE COMPUTADORES ORGANIZAÇÃO DE COMPUTADORES CAMPUS SANTO ANDRÉ CELSO CANDIDO SEMESTRE 2014-1 1 CONCEITOS ASSUNTOS DESTA AULA: Funcionalidades de um computador; Hardware e Software; Componentes de um computador: o CPU

Leia mais

Arquiteturas. Capítulo 2

Arquiteturas. Capítulo 2 Arquiteturas Capítulo 2 Agenda Estilos Arquitetônicos Arquiteturas de Sistemas Arquiteturas Centralizadas Arquiteturas Descentralizadas Arquiteturas Híbridas Arquiteturas e Middleware Sistemas Distribuídos

Leia mais

Informática I. Aula 2. Ementa

Informática I. Aula 2.  Ementa Informática I Aula 2 http://www.ic.uff.br/~bianca/informatica1/ Aula 2-29/08/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript e

Leia mais

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan Introdução aos computadores, à Internet e à World Wide Web Prof. Marcelo Roberto Zorzan História do Java Origem Linguagem desenvolvida pela Sun Microsystems Sintaxe similar ao C++ Inicialmente chamada

Leia mais

As principais contribuições do presente trabalho são as seguintes:

As principais contribuições do presente trabalho são as seguintes: 5 Conclusões Nesta dissertação, foram estudadas algumas das principais características que dificultam a provisão de QoS em sistemas operacionais de propósito geral, de forma a relacioná-las com soluções

Leia mais

1.1 Linguagens de Programação

1.1 Linguagens de Programação Fundamentos Procurando fazer com que haja uma melhor compreensão para o estudo e desenvolvimento utilizando linguagens de programação, este capítulo apresenta conceitos básicos sobre como um programa pode

Leia mais

Estilos Arquiteturais

Estilos Arquiteturais Estilos Arquiteturais Estilos Arquiteturais A arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais Um estilo define os tipos de elementos que podem aparecer em uma arquitetura e as

Leia mais

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível. Aula 3 SOFTWARE (programas) Um programa (software) consiste em uma sequência de instruções escritas numa linguagem precisa chamada linguagem de programação. Estas instruções são traduzidas em um compilador,

Leia mais

Sistemas Operacionais de Tempo Real - Teclados Matriciais

Sistemas Operacionais de Tempo Real - Teclados Matriciais 1 / 27 Sistemas Operacionais de Tempo Real - Teclados Matriciais por Henrique Frank W. Puhlmann Introdução Chaves eletromecânicas são uma forma quase primitiva de interface entre um sistema eletrônico

Leia mais

SSC510 Arquitetura de Computadores 1ª AULA

SSC510 Arquitetura de Computadores 1ª AULA SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura

Leia mais

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001 PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO Projeto de Programas PPR0001 QUALIDADE DO PROJETO 2 3 Qualidade do Projeto de Software Modularidade: gerar particionamento em elementos que executam funções

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com

Leia mais

Estrutura do Sistema Operacional

Estrutura do Sistema Operacional Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 04 Estrutura do Sistema Operacional 2 1 Estrutura do Sistema Operacional

Leia mais

Rational Unified Process (RUP)

Rational Unified Process (RUP) Rational Unified Process (RUP) A Rational é bem conhecida pelo seu investimento em orientação em objetos. A empresa foi à criadora da Unified Modeling Language (UML), assim como de várias ferramentas que

Leia mais

Conceitos computacionais

Conceitos computacionais Conceitos computacionais Conceitos computacionais Informática Médica Prof. Jean D. H. M. Andreazza Fatec - Bauru Computador é uma máquina capaz de variados tipos de tratamento automático de informações

Leia mais

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO Sumário PREFÁCIO...3 MODELO DA DOCUMENTAÇÃO...3 1. INTRODUÇÃO AO DOCUMENTO...3 1.1. Tema...3 2. DESCRIÇÃO

Leia mais

Reuso de Software Aula Maio 2012

Reuso de Software Aula Maio 2012 Reuso de Software Aula 19 Tópicos da Aula Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Componentes Modelos de Componentes

Leia mais

SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina

SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina Susana Rosich Soares Velloso SQLLOMining: Obtenção de Objetos de Aprendizagem utilizando técnicas de Aprendizado de Máquina Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção

Leia mais