Cada cliente, necessariamente, sempre deve estar conectado a um Broker, e somente um;



Documentos relacionados
Todos os arquivos.c e.h criados (exigido código muito bem documentado!). O makefile.

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

Especificação do 3º Trabalho

Engenharia de Software III

Como funciona? SUMÁRIO

FCT Faculdade de Ciências e Tecnologia Serviço Técnico de Informática STI SGCD Sistema Gerenciador de Conteúdos Dinâmicos

3 Arquitetura do Sistema

Manual do Visualizador NF e KEY BEST

Manual de utilização do sistema OTRS (Atendimento) Cliente Externo

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

Trabalho Prático 1 Revisão de Programação, Tipos Abstratos de Dados e Combinação de Alocação Estática e Dinâmica de Memória

Tutorial Sistema de Eventos de Certificação e Capacitação

MINISTÉRIO DO DESENVOLVIMENTO AGRÁRIO SUBSECRETARIA DE PLANEJAMENTO, ORÇAMENTO E ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE MODERNIZAÇÃO E INFORMÁTICA

Trabalho Prático 1 Tipos Abstratos de Dados

Layout : Este layout desenvolvido com html5 e css3 e compatível com qualquer dispositivo, ou seja, ele se molda para qualquer resolução, tablet,

Índice: CMS 3 O que é Content Management System? Clientes 4 O que é o Cliente? 4 Configurando o i-menu/i-view para trabalhar. com o CMS.

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Tutorial: Webmail. Dicas de Uso e Funcionalidades 02/2015. Versão 01

Sistemas Operacionais

Manual de utilização do sistema de envio de sms marketing e corporativo da AGENCIA GLOBO. V

02 - Usando o SiteMaster - Informações importantes

Ajuda On-line - Sistema de Portaria. Versão 4.8.J

MANUAL DO ANIMAIL Terti Software

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

Manual de Utilização Autorizador

Fundamentos de Sistemas Operacionais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Funções básicas Cronograma Cronograma Funções Básicas

Manual Administrador - Mídia System

Manual do Ambiente Moodle para Professores

Manual (Office 365) Para acesso ao sistema de s, os passos iniciais continuam os mesmos.

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Manual SAGe Versão 1.2 (a partir da versão )

Análise de Dados do Financeiro

SIMULADO Windows 7 Parte V

Manual Captura S_Line

2 Diagrama de Caso de Uso

Especificação de Requisitos

CONTABILIDADE COM MÚLTIPLOS PLANOS DE CONTAS

INFORMES MANUAL DO APLICATIVO

Manual do Usuário - ProJuris Web - Fila de s Página 1 de 8

Quinta Lista de Exercícios -

UNIMED-BH MANUAL DE AGENDAMENTO ON-LINE. acesse

Trabalho 3: Agenda de Tarefas

Manual da Central de Atendimento ao Cliente Sami Sistemas

GUIA BÁSICO DA SALA VIRTUAL

Utilização do Webmail da UFS

BLACKBERRY - PME e PL Passo a Passo Registro Site BIS BlackBerry PME e Profissional Liberal

Guia do Administrador de Licenças de Usuários Autorizados do IBM SPSS Modeler

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

Manual Portal Ambipar

Manual do Programa de Caixa1

Manual do Usuário CFCWeb BA

Chave de Acesso Remoto Manual do cliente:

Celebre este natal e ano novo junto aos seus amigos e familiares distantes.

Manual do Ambiente Moodle para Alunos

Guia de auxílio aos responsáveis

Sistemas Operacionais 3º bimestre. Dierone C.Foltran Jr.

Manual das funcionalidades Webmail AASP

GERENCIAL SEPLAG CARTILHA AGENDA. Sumário

GUIA DE ORIENTAÇÕES ROTEIRO DE CONFIGURAÇÃO DO SOFTWARE CRM PROFESSIONAL ANEXO III ROTEIRO DE CONFIGURAÇÃO - CRM PROFESSIONAL

WikED! Na última década, um grande número de sistemas colaborativos apareceram

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

"Manual de Acesso ao Moodle - Discente" 2014

WF Processos. Manual de Instruções

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

MINISTÉRIO DA SAÚDE. Secretária de Gestão Estratégica e Participativa da Saúde SGEP. Coordenação de Desenvolvimento dos Sistemas de Saúde - CDESS

Especificação de Requisitos

ÍNDICE 1 INTRODUÇÃO ACESSO ABERTURA DE PROTOCOLO CONSULTA DE PROTOCOLO PROTOCOLO PENDENTE CONFIRMAÇÃO DE RECEBIMENTO.

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão Atualização 26/01/2009 Depto de TI - FASUL Página 1

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Tarefas em Moodle (1.6.5+)

Síntese das discussões do fórum Livro-APF: Julho/2010

ROTINA DE INVENTÁRIO MANUAL MANUAL AVANÇO INFORMÁTICA AVANÇO INFORMÁTICA. [Digite seu endereço] [Digite seu telefone] [Digite seu endereço de ]

RESUMO DE CATALOGAÇÃO

MANUAL DO PVP SUMÁRIO

Estalo Desenvolvimento e Tecnologia Rua Ismael Carlos Correia, 107 CEP Joinville - SC estalo@estalo.com.br Fone/Fax: (47)

TUTORIAL Última atualização: 23/03/2015

MANUAL DO GERENCIADOR ESCOLAR WEB

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

UNIVERSIDADE FEDERAL DA FRONTEIRA SUL AMBIENTE VIRTUAL INSTITUCIONAL MOODLE/UFFS

Análise e Projeto Orientados a Objetos Aula IV Requisitos. Prof.: Bruno E. G. Gomes IFRN

MANUAL DO USUÁRIO SUMÁRIO

Manual do Trabalho de Conclusão de Curso


Roteiro 7: Ferramentas de trabalho Editores de texto

MANUAL DO USUÁRIO UTILIZAÇÃO DO SOFTWARE PDF 24 CREATOR. Coordenadoria de Tecnologia da Informação

Curso técnico: Informática Disciplina: Aplicativos computacionais

Manual Sistema Curumim. Índice

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Programação III / Estruturas de Dados. Enunciado do Trabalho Prático

Manual do usuário. Softcall Java. versão 1.0.5

Manual Software Controle de Jukebox. Manual. Software Controle de Jukebox

Sistema de Gerenciamento Remoto

Sumário: Fluxo Operacional... 3 Contatos Agenda Online Reservas de Salas Tarefas... 42

Transcrição:

Universidade Federal do Espírito Santo Departamento de Informática Estruturas de Dados I (INF09292) 1o Trabalho Prático Período: 2015/2 Profa Patrícia Dockhorn Costa Email: pdcosta@inf.ufes.br Data de Entrega: 06/10/205 Trabalho em Dupla Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista. Regras Importantes Não é tolerado plágio. Trabalhos copiados serão penalizados com zero. A data de entrega é inadiável. Para cada dia de atraso, é retirado um ponto da nota do trabalho. Material a entregar Impresso: Documentação do trabalho, que deve conter: o Introdução: descrição do problema a ser resolvido e visão geral sobre o funcionamento do programa (em termos de módulos, arquivos, etc.). o Implementação: descrição da implementação do programa. Devem ser detalhadas as estruturas de dados utilizadas (de preferência com diagramas ilustrativos), o funcionamento das principais funções utilizadas incluindo pré e pós condições, o formato de entrada e saída de dados, bem como decisões tomadas relativas aos casos e detalhes de especificação que porventura estejam omissos no enunciado. Modularize o seu programa usando a técnica de tipos abstratos de dados, como discutido em sala de aula. o Conclusão: comentários gerais sobre o trabalho e as principais dificuldades encontradas em sua implementação. o Bibliografia: bibliografia utilizada para o desenvolvimento do trabalho, incluindo sites da Internet se for o caso. Por email (ed20152@inf.ufes.br): o O assunto da mensagem deve ser ed201502:trab1:<nome1> <nome2> o Por exemplo: ed201502:trab1:<joaosilva> <mariasampaio> o Documentação do trabalho (em formato PDF). o Todos os arquivos.c e.h criados (exigido código muito bem documentado!). o O makefile.

Publish/Subscribe O uso de sistemas distribuídos tem crescido a cada dia. Grande parte desse crescimento deve-se à popularização dos dispositivos móveis, principalmente celulares e smartphones. Todos os dias, milhões de novos celulares e smartphones são inseridos no mercado, dispositivos que possuem os mais diversos tipos de softwares e hardwares. Apesar disso, esses dispositivos estão cada vez mais acoplados e conectados. Para atender os milhões de possíveis clientes espalhados por todo o mundo, tem-se buscado criar sistemas desacoplados e flexíveis. Por mais diferente que seja a tecnologia usada em cada dispositivo ou sistema, existe uma busca cada vez maior na integração entre os mesmos. Essa demanda vem despertando o uso do paradigma Publish/Subscribe. Este paradigma permite que dispositivos que não se conhecem se comuniquem sem a necessidade de estarem conectados ou ligados num mesmo instante. No paradigma Publish/Subscribe, tipicamente, existem duas classes de entidades: uma denominada Publisher (produtor da informação), que publica um evento com informações sobre um determinado conceito ou assunto (chamado topico); e uma denominada Subscriber (consumidor da informação), que subscreve um evento informando o seu interesse em receber notificações sobre um determinado tópico. Existe ainda um serviço responsável por prover o desacoplamento entre os dispositivos. O serviço fica encarregado de receber as informações, tanto dos Publishers quando dos Subscribers, analisá- las e identificar quais Subscribers devem ser notificados. Uma vez identificados os Subscribers que devem ser notificados, o serviço realiza a entrega dessas notificações. Quando uma informação de interesse do Subscriber é encontrada, dizemos que ocorreu o Matching entre as informações. Além disso, é possível que o serviço possua vários elementos intermediários, denominados Brokers, de forma a criar uma rede interna. A figura abaixo ilustra uma possível configuração de um sistema Publish/Subscribe. Figura 1. Possível configuração de um sistema Publish/Subscriber. Na imagem é possivel ver uma rede formada por 6 Brokers, com 3 Clientes, sendo dois Publishers e um Subscriber.

Este sistema Publish/Subscribe, de forma simplificada, pode ser implementado com um conjunto de listas encadeadas: pode-se implementar uma lista de Brokers, na qual cada Broker possui uma lista de vizinhos (ou seja, os Brokers conectados diretamente a ele) e uma lista de clientes (ou seja, os Publishers e Subscribers conectados diretamente a ele), como mostrado na figura a seguir. Cada Cliente pode manter uma lista de suas publicações e subscrições. A figura a seguir sugere, de maneira geral, a organização das listas de vizinhos, clientes, e de suas publicações e subscrições. Como pode ser visto na Figura, este Broker possui 5 vizinhos e 5 clientes, sendo que os clientes C1 e C2 realizaram uma publicação cada. O cliente C3 realizou 3 subscrições. Por sua vez, o cliente C4 não realizou atividades. Neste trabalho, você deverá implementar um sistema Publish/Subscribe simplificado. Faz parte do trabalho alho projetar os Tipos Abstratos de Dados necessários, bem como implementá-los. Como padrão, insira os elementos ao final das listas.

Considerações Importantes Cada cliente, necessariamente, sempre deve estar conectado a um Broker, e somente um; Um Broker pode ter vários clientes e vários vizinhos (um broker não pode ser seu vizinho); Um cliente pode ser tanto consumidor, produtor, mas não os dois simultaneamente. Seu papel é definido em sua inicialização e deve ser mantido ao longo da execução; Clientes, Subscrições e Brokers podem ser excluídos. Publicações não podem ser excluídas por meio de comandos, assim como ocorre, por exemplo, com as subscrições por meio do comando EXCLUISUBSCRIÇÃO. Porém tanto as subscrições quanto as publicações devem ser excluídas assim que o cliente que as criou for removido da rede; Uma publicação deve conter, obrigatoriamente, um identificador único, um tópico e uma mensagem; Uma subscrição é constituída por um identificador único e um tópico; Não podem existir duas ações como mesmo ID, ou seja, não podem existir duas publicações com mesmo ID, duas subscrições com mesmo ID e nem mesmo uma publicação ou subscrição com mesmo ID. Para simplificar, considere que tanto as mensagens quanto os tópicos são compostos por apenas uma palavra, não sendo necessário se preocupar com nomes compostos. Detecção do Matching O matching ocorre quando uma publicação contém um dado de interesse de algum Subscriber, ou seja, publicação e subscrição possuem o mesmo tópico. Uma mesma publicação pode gerar mais de um matching, um para cada Subscriber que possui interesse no respectivo tópico. Ao publicar um dado, o Publisher deve especificar um tópico relacionado ao dado. Da mesma forma, Subscribers devem manifestar seus interesses em algum tópico. Se um cliente C1 publica uma mensagem com tópico igual a futebol e mensagem igual Jogo às 4 horas, deve ocorrer o matching entre todos os subscribers que realizaram alguma subscrição no tópico futebol, sendo gerado um matching para cada um destes Subscribers. É importante observar que um Subscriber NÃO pode gerar uma subscrição para um tópico que já encontra-se inscrito. Um mesmo Publisher pode publicar várias mensagens no mesmo tópico. A ordem das publicações e das subscrições não interfere na verificação do matching. Caso um cliente C1 realize uma publicação P1, uma publicação P2 e uma subscrição S1, respectivamente, o resultado

esperado para o matching não será alterado caso um mesmo cliente C1 realize uma Publicação P2, uma subscrição S1 e uma Publicação P1, respectivamente. O programa testador deverá ser capaz de ler as instruções do arquivo texto de entrada e realizar as devidas operações no Sistema Publish/Subscribe. O seu programa testador deverá ler os dados de entrada a partir de um arquivo, cujo nome é passado como parâmetro na linha de comando (faz parte do trabalho descobrir como manipular arquivos e strings em C). Exemplo de execução do programa a partir da linha de comando: simulador entrada.txt O arquivo de entrada é basicamente uma lista de comandos (um por linha) em formato texto. O último comando é a palavra FIM, que indica o final do arquivo. O formato a ser usado é exemplificado abaixo: Exemplo de arquivo de entrada CRIABROKER brokera CRIABROKER brokerb CRIABROKER brokerc CRIABROKER brokerd CRIABROKER brokere CRIABROKER brokerf CRIABROKER brokerg CRIACLIENTE cliente1 P brokera CRIACLIENTE cliente2 S brokera CRIACLIENTE cliente3 S brokerb CRIACLIENTE cliente4 P brokerc CRIACLIENTE cliente5 S brokerc CRIACLIENTE cliente6 P brokerd CRIACLIENTE cliente7 S brokerg INSEREVIZINHO brokera brokerb INSEREVIZINHO brokerb brokerc INSEREVIZINHO brokerd brokere INSEREVIZINHO brokere brokerd INSEREVIZINHO brokere brokerf INSERE brokerd INSERE brokerg PUBLICA 1 cliente1 esporte Flamengo SUBSCREVE 2 cliente3 esporte SUBSCREVE 3 cliente5 esporte SUBSCREVE 4 cliente7 esporte SUBSCREVE 5 cliente 7 informatica PUBLICA 6 cliente6 informatica prova PUBLICA 7 cliente4 esporte Vasco IMPRIMEREDE

VERIFICAMATCHING CANCELAVIZINHO brokera brokerb INSEREVIZINHO broker A brokerc EXCLUISUBSCRICAO 2 EXCLUIBROKER brokerc EXCLUICLIENTE cliente1 IMPRIMEREDE VERIFICAMATCHING FIM Especificação dos Comandos CRIABROKER <nome_broker>: cria um broker com o nome especificado; CRIACLIENTE <nome_cliente> <tipo_cliente> <nome_broker>: cria um cliente com o nome especificado, informando qual o seu tipo (P = Publisher, S = Subscriber) e insere o cliente na lista de clientes do broker especificado; INSEREVIZINHO <broker1> <broker2>: Insere o Broker 2 na lista de vizinhos do Broker 1; IMPRIMEREDE: Lista todos os Brokers, os clientes de cada broker e suas atividades (publicações e subscrições); VERIFICAMATCHING: Lista todos os subscribers (mesmo os que não possuem matching), um por vez, e todas as duplas de subscrição e publicação, uma dupla por linha, onde ocorre o matching. As duplas devem apresentar a letra S concatenada com o identificador da subscrição, seguido de espaço e a letra P concatenada com o identificado da publicação. Logo após deve constar o tópico e mensagem da publicação, necessariamente nessa ordem, separados por espaço simples; PUBLICA <id_publicação> <nome_cliente> <tópico> <mensagem>: recebe um identificador único para a publicação, o nome cliente que deseja publicar, o tópico para o qual deseja publicar e uma mensagem que o Subscriber deve receber caso manifeste seu interesse no mesmo tópico; SUBSCREVE <id_subscrição> <nome_cliente> <tópico>: recebe um identificador único para a subscrição, o nome cliente que deseja subscrever e o tópico no qual deseja manifestar seu interesse; EXCLUISUBSCRICAO <id_subscrição>: exclui a subscrição com ID indicado; EXCLUIBROKER <nome_broker>: exclui o broker com nome indicado. Se um broker é excluído, todos os seus clientes devem ser excluídos automaticamente; EXCLUICLIENTE <nome_cliente>: exclui o cliente com nome indicado;

Dica Ao percorrer as listas de vizinhos, cuidado para não entrar em um loop infinito. Observe que na entrada usada como exemplo, o brokerd é vizinho do brokere, que por sua vez é vizinho do brokerf. Porém, o broker F é também vizinho do brokerd, criando um ciclo infinito; Não esqueça de liberar toda memória alocada ao término da execução do programa!!! Considerando o arquivo de entrada acima, espera-se o seguinte no arquivo de saída: Arquivo de saída para o arquivo entrada.txt IMPRIMEREDE BROKER brokera VIZINHO brokerb CLIENTE P cliente1 EVENTO P1 esporte Flamengo CLIENTE S cliente2 BROKER brokerb VIZINHO brokera VIZINHO brokerc CLIENTE S cliente3 EVENTO S2 esporte BROKER brokerc VIZINHO brokerb CLIENTE P cliente4 EVENTO P7 esporte Vasco CLIENTE S cliente5 EVENTO S3 esporte BROKER brokerd VIZINHO brokere CLIENTE P cliente6 EVENTO P6 informatica prova BROKER broker E VIZINHO brokerd BROKER brokerf VIZINHO brokere

VIZINHO brokerd VIZINHO brokerg BROKER brokerg CLIENTE S cliente7 EVENTO S4 esporte EVENTO S5 informatica VERIFICACAO MATCHING CLIENTE cliente2 CLIENTE cliente3 S2 P1 esporte Flamengo S2 P7 esporte Vasco CLIENTE cliente5 S3 P7 esporte Vasco S3 P1 esporte Flamengo CLIENTE cliente7 S5 P6 informatica prova IMPRIMEREDE BROKER brokera CLIENTE S cliente2 BROKER brokerb CLIENTE S cliente3 BROKER brokerd VIZINHO brokere CLIENTE P cliente6 EVENTO P6 informatica prova BROKER broker E VIZINHO brokerd

BROKER brokerf VIZINHO brokere VIZINHO brokerd VIZINHO brokerg BROKER brokerg CLIENTE S cliente7 EVENTO S4 esporte EVENTO S5 informatica VERIFICACAO MATCHING CLIENTE cliente2 CLIENTE cliente3 CLIENTE cliente7 S5 P6 informatica prova