• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 33
  • 3
  • 3
  • Tagged with
  • 39
  • 39
  • 12
  • 9
  • 9
  • 9
  • 6
  • 6
  • 6
  • 6
  • 6
  • 6
  • 6
  • 6
  • 6
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
21

Test-case-based call graph construction in dynamically typed programming languages

Pereira, Gabriel Maier Fernandes Vidueiro January 2015 (has links)
Evolução de software é uma das atividades mais desafiadoras do processo de desenvolvimento de software. Uma importante questão associada à essa atividade é a correta compreensão do código fonte e outros artefatos que necessitam ser mantidos e evoluídos. Visando auxiliar desenvolvedores na manutenção de código, Integrated Development Environments (IDE’s) proporcionam ferramentas que informam desenvolvedores sobre as dependências e as particularidades do código a ser modificado. No entanto, linguagens dinamicamente tipadas não definem tipos explicitamente no código fonte, o que dificulta a análise estática do código e consequentemente a contrução dessas ferramentas. Como exemplo, a construção de call graphs (grafos de chamadas), utilizados pelas IDE’s para criar ferramentas de navegação de código, é prejudicada pela ausência da definição de tipos. Para abordar o problema da criação de call graphs para linguagens dinamicamente tipadas, propomos uma técnica dividida em passos para a construção de um call graph baseado em informações extraídas da execução de testes. A técnica é dividida em 3 passos, o Passo #1 cria um call graph conservativo e estático que resolve chamadas de métodos baseado apenas em nomes dos métodos, ainda no primeiro passo, testes são executados e seu traço de execução é armazenado para posterior análise. O Passo #2 combina a informação armazenada da execução dos testes e o call graph construído no primeiro passo, o Passo #2 também é responsável pela criação de um conjunto de regras de associação que servirão para guiar desenvolvedores durante a criação de novas partes do código. Nossa avaliação em uma aplicação real de porte grande mostrou que a técnica melhora a precisão do call graph criado removendo arestas desnecessárias (70%), e mostrou-se apta a auxiliar desenvolvedores definindo pontos de navegação no código baseada na análise de regras de associação extraídas do test-case-based call graph. / Evolving enterprise software systems is one of the most challenging activities of the software development process. An important issue associated with this activity is to properly comprehend the source code and other software assets that must be evolved. To assist developers on these evolution tasks, Integrated Development Environments (IDEs) build tools that provides information about the source code and its dependencies. However, dynamically typed languages do not define types explicitly in the source code, which difficult source code analysis and therefore the construction of these tools. As an example, the call graph construction, used by IDE’s to build source code navigation tools, is hampered by the absence of type definition. To address the problem of constructing call graphs for dynamic languages, we propose a technique based on steps to build a call graph based on test runtime information, called test-case-based call graph. The technique is divided in three steps; Step #1 creates a conservative and static call graph that decides target nodes based on method names, and the first step also run tests profiling its execution; Step #2 combines the test runtime information and the conservative call graph built in the first step to create the test-case-based call graph, it also creates a set of association rules to guide developers in the maintenance while creating new pieces of code; Finally, Step #3 uses the test-case-based call graph and the association rules to assist developers in source code navigation tasks. Our evaluation on a large-size real-world software shows that the technique increases call graph precision removing several unnecessary conservative edges ( %70), and assist developers filtering target nodes of method calls based on association rules extracted from the call graph.
22

Um modelo para linguagens orientadas a objetos distribuido / A model for distributed object—oriented languages

Cavalheiro, Gerson Geraldo Homrich January 1994 (has links)
Linguagens de programação orientadas a objetos possuem diversas características que facilitam sua utilização frente a outras linguagens imperativas. No projeto e desenvolvimento de software, o mecanismo de herança permite a construção de sistemas na forma incremental e evolutiva, possibilitando a reutilização de códigos já escritos. Também a possível atingir aplicações com bons níveis de segurança e confiabilidade, através do encapsulamento de dados e funções sob forma de objetos, que também representam a unidade básica de execução em uma linguagem orientada a objetos. O mesmo recurso que possibilita níveis elevados de segurança permite que linguagens orientadas a objetos sejam inerentemente distribuídas. Objetos possuem tanto área de dados e código de execução independentes dos demais. Acessos aos dados internos de um objeto somente são possíveis através de mensagens explicitas entre objetos. Neste caso um objeto solicita uma ação específica a outro objeto, podendo ser enviados parâmetros e existir retorno de resultados. Este trabalho apresenta um modelo para construção de uma linguagem orientada a objetos distribuída. O ambiente para suportar a execução ao modelo é compostos por vários nodos de processamento com memórias locais individuais e contando com uma rede de comunicação para troca de mensagens entre os nodos. O modelo e discutido em dois níveis distintos: a nível de linguagem e a nível operacional. A nível de linguagem são analisados os recursos de programação normalmente utilizados em linguagens orientadas a objetos quando implementados em ambientes distribuídos. O ambiente de suporte A execução necessário ao suporte do modelo da linguagem a analisado pelo nível operacional. A apresentação do modelo a nível de linguagem discute as características de uma linguagem orientada a objetos distribuída frente as implementações seqüenciais convencionais. E ressaltada a implementado de herança em um ambiente de execução distribuído, que, não podendo ser através de compartilhamento, é efetuada através de copia de código. Também são apresentadas novas diretivas de compilação necessárias exclusivamente a ambientes distribuídos. Tais diretivas visam explorar níveis de concorrência de uma aplicação durante sua execução, diferenciando classes que definem objetos locais ou distribuídos e diferentes tipos de mensagens entre objetos. As formas de extrair o melhor desempenho nas aplicações e o gerenciamento do ambiente de execução são os pontos abordados pelo nível operacional do modelo. Em operação neste nível, um elemento de gerencia de execução permite o controle tanto dos objetos da aplicação quanto dos nodos de processamento disponíveis para execução. A tarefa de controle de objetos viabiliza a criação e remoção de objetos durante a execução da aplicação, bem como a identificação de localização destes. O controle dos nodos de processamento possibilita analisar continuamente a carga computacional dos nodos de processamento. Assim, cada objeto a ser criado pode ser alocado em um nodo onde a carga computacional esteja baixa, propiciando um melhor desempenho no momento de execução da aplicação distribuído a carga entre os nodos. A unido do modelo de execução distribuído proposto a uma linguagem orientada a objetos resulta em uma linguagem eficiente tanto na produção de software como no desempenho de aplicações. A eficiência na produção de sistemas 6 obtida através de dois itens, a utilização do paradigma de orientação a objetos e a transparência do nível operacional para o programador, que não necessita conhecer os mecanismos utilizados para ativação de objetos e envio de mensagens. A eficiência de execução é obtida através da utilização de múltiplos nodos processadores servindo como base a execução. Neste trabalho é também apresentado um protótipo para uma linguagem suportando o modelo distribuído proposto. A linguagem, denominada DPC++ (Processamento Distribuído em C++), é voltada para execução em redes de estações de trabalho, sobre o sistema operacional Unix, utilizando sockets como mecanismo de comunicação. O estilo de programação em DPC++ é baseado em C++. / The objects-oriented programming languages have many features who make simple their use in front of others imperatives languages. In the software project and development, the inheritance mechanism allows an increasing and evaluative way of codes that have been written. It also possible gain applications with goods levels of security and confiability with the encapsulation of both data and functions in the form of object, which represent the basic execution unit in an object-oriented language. The same resource that provides high levels of security also permits that object-oriented languages may be inherently distributed. Objects have their own area of data, their execution codes are independent from the other. Accesses to the internal data of an object are possible only through a specific protocol among objets. When this occurs, an object requests a specific action to other object with or without parameters or results return. This work presents a model for build a distributed object-oriented language, devoted to environments compounded by several processing nodes with local memory and linked by a communication network. The model is discussed in two different levels: language level and operational level. In the language level are analyzed the programming resources usually used in object-oriented languages when implemented in distributed environments. The executing environments support are analyzed in the operational level. In the language level presentation are made a discussion about distributed object-oriented language features in front of conventional sequential implementations. It is emphasized inheritance in a distributed executing environment, who is done by code copy, due to can not be by memory sharing. Also are presented news compilation directives necessaries to the distributed environment. Those directives aim to explorer concurrence levels in an application during its execution, differing class who defining local or distributed objects and the different messages types among objects. The operational level boards the ways that mean to extract the best performance for the applications and the execution environment management. An execution manager element allows the control as the application objects as the available to execution processor nodes. The task of object control makes possible the objects creation and removal during the application executing as well their network identification. The processor nodes control allows the continuous analyzes of the computational load in the nodes available to processing. In this way, every object to be created can be allocated in a node with low occupation rates, propitiating a better performance in the application executing. The union of the proposed distributed execution model to an objectoriented language results in an efficient language as in the software production as in execution performance. The systems production efficiency is obtained from two items: the utilization of the object-oriented paradigm an the transparency of the operational level to the programmer, that no need know the used mechanisms to object activation and message exchange. The execution efficiency is gained by the utilization of multiples processor nodes supporting the application executing. In this work is presented a prototype that implements the proposed model. The language, called DPC++, Distributed Processing in C++, is turned to execute in workstation network with Unix operational system, using sockets as communication mechanism. The style of DPC++ programming are based in C++.
23

Um modelo para linguagens orientadas a objetos distribuido / A model for distributed object—oriented languages

Cavalheiro, Gerson Geraldo Homrich January 1994 (has links)
Linguagens de programação orientadas a objetos possuem diversas características que facilitam sua utilização frente a outras linguagens imperativas. No projeto e desenvolvimento de software, o mecanismo de herança permite a construção de sistemas na forma incremental e evolutiva, possibilitando a reutilização de códigos já escritos. Também a possível atingir aplicações com bons níveis de segurança e confiabilidade, através do encapsulamento de dados e funções sob forma de objetos, que também representam a unidade básica de execução em uma linguagem orientada a objetos. O mesmo recurso que possibilita níveis elevados de segurança permite que linguagens orientadas a objetos sejam inerentemente distribuídas. Objetos possuem tanto área de dados e código de execução independentes dos demais. Acessos aos dados internos de um objeto somente são possíveis através de mensagens explicitas entre objetos. Neste caso um objeto solicita uma ação específica a outro objeto, podendo ser enviados parâmetros e existir retorno de resultados. Este trabalho apresenta um modelo para construção de uma linguagem orientada a objetos distribuída. O ambiente para suportar a execução ao modelo é compostos por vários nodos de processamento com memórias locais individuais e contando com uma rede de comunicação para troca de mensagens entre os nodos. O modelo e discutido em dois níveis distintos: a nível de linguagem e a nível operacional. A nível de linguagem são analisados os recursos de programação normalmente utilizados em linguagens orientadas a objetos quando implementados em ambientes distribuídos. O ambiente de suporte A execução necessário ao suporte do modelo da linguagem a analisado pelo nível operacional. A apresentação do modelo a nível de linguagem discute as características de uma linguagem orientada a objetos distribuída frente as implementações seqüenciais convencionais. E ressaltada a implementado de herança em um ambiente de execução distribuído, que, não podendo ser através de compartilhamento, é efetuada através de copia de código. Também são apresentadas novas diretivas de compilação necessárias exclusivamente a ambientes distribuídos. Tais diretivas visam explorar níveis de concorrência de uma aplicação durante sua execução, diferenciando classes que definem objetos locais ou distribuídos e diferentes tipos de mensagens entre objetos. As formas de extrair o melhor desempenho nas aplicações e o gerenciamento do ambiente de execução são os pontos abordados pelo nível operacional do modelo. Em operação neste nível, um elemento de gerencia de execução permite o controle tanto dos objetos da aplicação quanto dos nodos de processamento disponíveis para execução. A tarefa de controle de objetos viabiliza a criação e remoção de objetos durante a execução da aplicação, bem como a identificação de localização destes. O controle dos nodos de processamento possibilita analisar continuamente a carga computacional dos nodos de processamento. Assim, cada objeto a ser criado pode ser alocado em um nodo onde a carga computacional esteja baixa, propiciando um melhor desempenho no momento de execução da aplicação distribuído a carga entre os nodos. A unido do modelo de execução distribuído proposto a uma linguagem orientada a objetos resulta em uma linguagem eficiente tanto na produção de software como no desempenho de aplicações. A eficiência na produção de sistemas 6 obtida através de dois itens, a utilização do paradigma de orientação a objetos e a transparência do nível operacional para o programador, que não necessita conhecer os mecanismos utilizados para ativação de objetos e envio de mensagens. A eficiência de execução é obtida através da utilização de múltiplos nodos processadores servindo como base a execução. Neste trabalho é também apresentado um protótipo para uma linguagem suportando o modelo distribuído proposto. A linguagem, denominada DPC++ (Processamento Distribuído em C++), é voltada para execução em redes de estações de trabalho, sobre o sistema operacional Unix, utilizando sockets como mecanismo de comunicação. O estilo de programação em DPC++ é baseado em C++. / The objects-oriented programming languages have many features who make simple their use in front of others imperatives languages. In the software project and development, the inheritance mechanism allows an increasing and evaluative way of codes that have been written. It also possible gain applications with goods levels of security and confiability with the encapsulation of both data and functions in the form of object, which represent the basic execution unit in an object-oriented language. The same resource that provides high levels of security also permits that object-oriented languages may be inherently distributed. Objects have their own area of data, their execution codes are independent from the other. Accesses to the internal data of an object are possible only through a specific protocol among objets. When this occurs, an object requests a specific action to other object with or without parameters or results return. This work presents a model for build a distributed object-oriented language, devoted to environments compounded by several processing nodes with local memory and linked by a communication network. The model is discussed in two different levels: language level and operational level. In the language level are analyzed the programming resources usually used in object-oriented languages when implemented in distributed environments. The executing environments support are analyzed in the operational level. In the language level presentation are made a discussion about distributed object-oriented language features in front of conventional sequential implementations. It is emphasized inheritance in a distributed executing environment, who is done by code copy, due to can not be by memory sharing. Also are presented news compilation directives necessaries to the distributed environment. Those directives aim to explorer concurrence levels in an application during its execution, differing class who defining local or distributed objects and the different messages types among objects. The operational level boards the ways that mean to extract the best performance for the applications and the execution environment management. An execution manager element allows the control as the application objects as the available to execution processor nodes. The task of object control makes possible the objects creation and removal during the application executing as well their network identification. The processor nodes control allows the continuous analyzes of the computational load in the nodes available to processing. In this way, every object to be created can be allocated in a node with low occupation rates, propitiating a better performance in the application executing. The union of the proposed distributed execution model to an objectoriented language results in an efficient language as in the software production as in execution performance. The systems production efficiency is obtained from two items: the utilization of the object-oriented paradigm an the transparency of the operational level to the programmer, that no need know the used mechanisms to object activation and message exchange. The execution efficiency is gained by the utilization of multiples processor nodes supporting the application executing. In this work is presented a prototype that implements the proposed model. The language, called DPC++, Distributed Processing in C++, is turned to execute in workstation network with Unix operational system, using sockets as communication mechanism. The style of DPC++ programming are based in C++.
24

Especificação de um sistema de suporte a implementação de linguagens / Specification of a support system to language implementation

Rodrigues, Celso Luiz Lopes January 1987 (has links)
Neste trabalho é descrita a organização de SINSEM, um sistema de processamento automático de especificação SINtático-SEMânticas de linguagens de programação. É colocada a motivação para um tal sistema, em relação ao uso que se daria a ele. O sistema é situado entre sistemas similares, dos quais alguns são brevemente descritos, incluindo-se exemplos de uso. Procura-se estabelecer conceitos relativos as trabalho com sistemas de auxilio ao projeto e à implementação de linguagens de programação. É discutida a estrutura lógica do sistema e uma filosofia de utilização, bem como é apresentada a nova metalinguagem proposta construído a partir da notação BNF, com extensões para se exprimir a semântica de uma linguagem de um modo construtivo, permitindo a especificação de gramáticas livres do contexto sem recursões a esquerda, visando a produção de reconhecedores recursivos descendentes dotados de ações semânticas. São apresentadas a sintaxe concreta e estática da metalinguagem, explicando-se também as funções semânticas (do tipo estático e do tipo concreto) pré-definidas no ambiente de desenvolvimento onde a ferramenta se integra. Tal ambiente pode ser operado por um conjunto de comandos que constituem uma interface (o "envelope"), que inclui também uma biblioteca sintático-semântica (que pode ser atualizada pelo usuário). A interface é descrita por meio de DFD'S E DE UM DICIONÁRIO DE DADOS. Ao final é apresentado um exemplo, parcialmente comentado (capítulo 5), de definição completa de uma linguagem de programação (CSSD), usando-se a metalinguagem proposta e os itens pré-definidos da biblioteca sintático-semântica. / In this work it is specified the constitution of SINSEM, an automatic processing system for SYNtactic and SEMantic specifications of programming languages. it is discussed motivation for such a system, according to uses it could have. The system is situated among similar systems, and some of these are briefly described, including examples. It is attempted to establish concepts about working with ,design and implementation aiding systems for programming languages. It is discussed the logical structure of the system and a philosophy of use, as well is presented a new metalanguage proposal for syntactic and semantic descriptions that is a production system constructed from BNF notation, with extensions to give language semantics in a constructive way, allowing specification of free context grammars with no left recursions, aiming the generation of preliminary versions of recursive descent parsers with semantic actions. The abstract and concrete syntax of the metalanguage are presented, and are also explained the semantic functions (of static and concrete type) predefined with and within the development environment where this frame is inserted. That environment can be operated by a set of commands that constitutes an interface ( the " envelope") wich includes too a syntactic-semantic library ( this can be made up to date by the user own). The interface is described by means of a set of DFD's and a data dictionary. At the end. it is presented an example, partially commented (chapter 5), of a complete definition of a programming language ( CSSD ), using the proposed metalanguage and the predefined items of the syntactic-semantic iibrary.
25

Ambiente visual para programação distribuída em java

Malacarne, Juliano January 2001 (has links)
Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.
26

Test-case-based call graph construction in dynamically typed programming languages

Pereira, Gabriel Maier Fernandes Vidueiro January 2015 (has links)
Evolução de software é uma das atividades mais desafiadoras do processo de desenvolvimento de software. Uma importante questão associada à essa atividade é a correta compreensão do código fonte e outros artefatos que necessitam ser mantidos e evoluídos. Visando auxiliar desenvolvedores na manutenção de código, Integrated Development Environments (IDE’s) proporcionam ferramentas que informam desenvolvedores sobre as dependências e as particularidades do código a ser modificado. No entanto, linguagens dinamicamente tipadas não definem tipos explicitamente no código fonte, o que dificulta a análise estática do código e consequentemente a contrução dessas ferramentas. Como exemplo, a construção de call graphs (grafos de chamadas), utilizados pelas IDE’s para criar ferramentas de navegação de código, é prejudicada pela ausência da definição de tipos. Para abordar o problema da criação de call graphs para linguagens dinamicamente tipadas, propomos uma técnica dividida em passos para a construção de um call graph baseado em informações extraídas da execução de testes. A técnica é dividida em 3 passos, o Passo #1 cria um call graph conservativo e estático que resolve chamadas de métodos baseado apenas em nomes dos métodos, ainda no primeiro passo, testes são executados e seu traço de execução é armazenado para posterior análise. O Passo #2 combina a informação armazenada da execução dos testes e o call graph construído no primeiro passo, o Passo #2 também é responsável pela criação de um conjunto de regras de associação que servirão para guiar desenvolvedores durante a criação de novas partes do código. Nossa avaliação em uma aplicação real de porte grande mostrou que a técnica melhora a precisão do call graph criado removendo arestas desnecessárias (70%), e mostrou-se apta a auxiliar desenvolvedores definindo pontos de navegação no código baseada na análise de regras de associação extraídas do test-case-based call graph. / Evolving enterprise software systems is one of the most challenging activities of the software development process. An important issue associated with this activity is to properly comprehend the source code and other software assets that must be evolved. To assist developers on these evolution tasks, Integrated Development Environments (IDEs) build tools that provides information about the source code and its dependencies. However, dynamically typed languages do not define types explicitly in the source code, which difficult source code analysis and therefore the construction of these tools. As an example, the call graph construction, used by IDE’s to build source code navigation tools, is hampered by the absence of type definition. To address the problem of constructing call graphs for dynamic languages, we propose a technique based on steps to build a call graph based on test runtime information, called test-case-based call graph. The technique is divided in three steps; Step #1 creates a conservative and static call graph that decides target nodes based on method names, and the first step also run tests profiling its execution; Step #2 combines the test runtime information and the conservative call graph built in the first step to create the test-case-based call graph, it also creates a set of association rules to guide developers in the maintenance while creating new pieces of code; Finally, Step #3 uses the test-case-based call graph and the association rules to assist developers in source code navigation tasks. Our evaluation on a large-size real-world software shows that the technique increases call graph precision removing several unnecessary conservative edges ( %70), and assist developers filtering target nodes of method calls based on association rules extracted from the call graph.
27

MultiS : um servidor de contexto voltado à computação pervasiva / MultiS : a context server for pervasive computer

Fehlberg, Felipe Weber January 2007 (has links)
A Computação Pervasiva tem sido tema de diversos trabalhos nos últimos anos. Essa emergente área de pesquisa propõe uma visão de futuro onde serviços computacionais são oferecidos para os usuários através de inúmeros dispositivos espalhados pelo ambiente. Os serviços são disponibilizados, tanto através da infraestrutura existente dos computadores ligados fisicamente à rede quanto através de dispositivos móveis. Esse espalhamento da computação deve acontecer de maneira natural e imperceptível ao usuário. Dados pessoais, programas e arquivos de dados poderão ser acessados de qualquer lugar em qualquer momento. O poder de processamento será um recurso do ambiente, acessado quando necessário, da mesma forma que é hoje a eletricidade. O usuário não precisará ter ciência de qual máquina realiza o processamento necessário às suas aplicações, contanto que o resultado esperado seja obtido. Acredita-se que essa realidade será atingida através da aliança entre áreas de pesquisa como a Computação em Grade, Computação Móvel e a Computação Consciente do Contexto. A Computação Consciente do Contexto busca enriquecer a comunicação entre os seres humanos e os dispositivos computacionais, tornando sua atuação mais eficaz. As aplicações conscientes do contexto conseguem perceber as modificações que ocorrem no ambiente e adaptar seu comportamento ao novo estado. Esse processo pode ser dividido em três etapas: monitoramento, reconhecimento de contexto e adaptação. Na etapa de monitoramento são coletadas, através de sensores, informações sobre o ambiente. Essas informações, entretanto, são geralmente, de baixo nível de abstração e, portanto, dificilmente usadas diretamente por aplicações. A etapa de reconhecimento de contexto relaciona os dados obtidos do ambiente e transforma-os para que possam ser úteis às aplicações no processo de escolha do comportamento mais adequado à cada circunstância, habilitando a etapa de adaptação a efetivar a transformação do comportamento da aplicação de acordo com a nova situação do ambiente. Este trabalho propõe um servidor de contexto chamado MultiS que tem como objetivo a resolução dos problemas relativos à etapa de reconhecimento de contexto: a produção de dado de contexto baseado em informações de diversos sensores e a capacidade de reagir a modificações no ambiente. Também é proposta uma linguagem para composição de dados do contexto chamada CD-XML utilizada pelas aplicações para descrever ao servidor de contexto os dados aos quais elas são sensíveis. / The Pervasive Computing has been studied on several papers in the last years. This emergent research area presents a vision of future where computational services will be available through uncountable devices scattered across the environment. This service network will be exposed to the users by both traditional wired computers and mobile devices. This distribution of the computing is going to happen smoothly and transparently to the users. Personal data, computer programs, and data files will be available anywhere, anytime. The processing power will be an environment resource and will be accessed whenever needed, in the same way which is the electricity nowadays. The users will no longer need to worry about where their program is being executed, as long as he gets the needed result. The ISAM group believes that this new reality will be achieved through the alliance of research areas such as Grid Computing, Mobile Computing and Context-Aware Computing. The Context-Aware Computing aims to enrich the communication between human being and computer devices. Context-aware applications are capable of recognize the changes on the environment and adapt its own behavior to the new context state. This process can be divided in tree steps: monitoring, context recognition and adaptation. On the monitoring layer, environment information is collected from sensors. Those sensors, however, usually return only low level information, which is hardly used by the applications on its original form. The context recognition layer processes the data acquired from the context and transforms into information aimed to be useful to the adaptation process. With that information the adaptation system can identify the correct behavior for the application on each different context situation. This dissertation propose a context server named MultiS, which target is to solve the problems related to context recognition layer: the production of new context data based on the information of several sensors and the capability of react to changes on the environment. It also presents a new programming language for composition of contextual information, named CD-XML. This language is used by the context-aware applications to communicate to the context server describing which information the application is sensible to.
28

Especificação de um sistema de suporte a implementação de linguagens / Specification of a support system to language implementation

Rodrigues, Celso Luiz Lopes January 1987 (has links)
Neste trabalho é descrita a organização de SINSEM, um sistema de processamento automático de especificação SINtático-SEMânticas de linguagens de programação. É colocada a motivação para um tal sistema, em relação ao uso que se daria a ele. O sistema é situado entre sistemas similares, dos quais alguns são brevemente descritos, incluindo-se exemplos de uso. Procura-se estabelecer conceitos relativos as trabalho com sistemas de auxilio ao projeto e à implementação de linguagens de programação. É discutida a estrutura lógica do sistema e uma filosofia de utilização, bem como é apresentada a nova metalinguagem proposta construído a partir da notação BNF, com extensões para se exprimir a semântica de uma linguagem de um modo construtivo, permitindo a especificação de gramáticas livres do contexto sem recursões a esquerda, visando a produção de reconhecedores recursivos descendentes dotados de ações semânticas. São apresentadas a sintaxe concreta e estática da metalinguagem, explicando-se também as funções semânticas (do tipo estático e do tipo concreto) pré-definidas no ambiente de desenvolvimento onde a ferramenta se integra. Tal ambiente pode ser operado por um conjunto de comandos que constituem uma interface (o "envelope"), que inclui também uma biblioteca sintático-semântica (que pode ser atualizada pelo usuário). A interface é descrita por meio de DFD'S E DE UM DICIONÁRIO DE DADOS. Ao final é apresentado um exemplo, parcialmente comentado (capítulo 5), de definição completa de uma linguagem de programação (CSSD), usando-se a metalinguagem proposta e os itens pré-definidos da biblioteca sintático-semântica. / In this work it is specified the constitution of SINSEM, an automatic processing system for SYNtactic and SEMantic specifications of programming languages. it is discussed motivation for such a system, according to uses it could have. The system is situated among similar systems, and some of these are briefly described, including examples. It is attempted to establish concepts about working with ,design and implementation aiding systems for programming languages. It is discussed the logical structure of the system and a philosophy of use, as well is presented a new metalanguage proposal for syntactic and semantic descriptions that is a production system constructed from BNF notation, with extensions to give language semantics in a constructive way, allowing specification of free context grammars with no left recursions, aiming the generation of preliminary versions of recursive descent parsers with semantic actions. The abstract and concrete syntax of the metalanguage are presented, and are also explained the semantic functions (of static and concrete type) predefined with and within the development environment where this frame is inserted. That environment can be operated by a set of commands that constitutes an interface ( the " envelope") wich includes too a syntactic-semantic library ( this can be made up to date by the user own). The interface is described by means of a set of DFD's and a data dictionary. At the end. it is presented an example, partially commented (chapter 5), of a complete definition of a programming language ( CSSD ), using the proposed metalanguage and the predefined items of the syntactic-semantic iibrary.
29

MultiS : um servidor de contexto voltado à computação pervasiva / MultiS : a context server for pervasive computer

Fehlberg, Felipe Weber January 2007 (has links)
A Computação Pervasiva tem sido tema de diversos trabalhos nos últimos anos. Essa emergente área de pesquisa propõe uma visão de futuro onde serviços computacionais são oferecidos para os usuários através de inúmeros dispositivos espalhados pelo ambiente. Os serviços são disponibilizados, tanto através da infraestrutura existente dos computadores ligados fisicamente à rede quanto através de dispositivos móveis. Esse espalhamento da computação deve acontecer de maneira natural e imperceptível ao usuário. Dados pessoais, programas e arquivos de dados poderão ser acessados de qualquer lugar em qualquer momento. O poder de processamento será um recurso do ambiente, acessado quando necessário, da mesma forma que é hoje a eletricidade. O usuário não precisará ter ciência de qual máquina realiza o processamento necessário às suas aplicações, contanto que o resultado esperado seja obtido. Acredita-se que essa realidade será atingida através da aliança entre áreas de pesquisa como a Computação em Grade, Computação Móvel e a Computação Consciente do Contexto. A Computação Consciente do Contexto busca enriquecer a comunicação entre os seres humanos e os dispositivos computacionais, tornando sua atuação mais eficaz. As aplicações conscientes do contexto conseguem perceber as modificações que ocorrem no ambiente e adaptar seu comportamento ao novo estado. Esse processo pode ser dividido em três etapas: monitoramento, reconhecimento de contexto e adaptação. Na etapa de monitoramento são coletadas, através de sensores, informações sobre o ambiente. Essas informações, entretanto, são geralmente, de baixo nível de abstração e, portanto, dificilmente usadas diretamente por aplicações. A etapa de reconhecimento de contexto relaciona os dados obtidos do ambiente e transforma-os para que possam ser úteis às aplicações no processo de escolha do comportamento mais adequado à cada circunstância, habilitando a etapa de adaptação a efetivar a transformação do comportamento da aplicação de acordo com a nova situação do ambiente. Este trabalho propõe um servidor de contexto chamado MultiS que tem como objetivo a resolução dos problemas relativos à etapa de reconhecimento de contexto: a produção de dado de contexto baseado em informações de diversos sensores e a capacidade de reagir a modificações no ambiente. Também é proposta uma linguagem para composição de dados do contexto chamada CD-XML utilizada pelas aplicações para descrever ao servidor de contexto os dados aos quais elas são sensíveis. / The Pervasive Computing has been studied on several papers in the last years. This emergent research area presents a vision of future where computational services will be available through uncountable devices scattered across the environment. This service network will be exposed to the users by both traditional wired computers and mobile devices. This distribution of the computing is going to happen smoothly and transparently to the users. Personal data, computer programs, and data files will be available anywhere, anytime. The processing power will be an environment resource and will be accessed whenever needed, in the same way which is the electricity nowadays. The users will no longer need to worry about where their program is being executed, as long as he gets the needed result. The ISAM group believes that this new reality will be achieved through the alliance of research areas such as Grid Computing, Mobile Computing and Context-Aware Computing. The Context-Aware Computing aims to enrich the communication between human being and computer devices. Context-aware applications are capable of recognize the changes on the environment and adapt its own behavior to the new context state. This process can be divided in tree steps: monitoring, context recognition and adaptation. On the monitoring layer, environment information is collected from sensors. Those sensors, however, usually return only low level information, which is hardly used by the applications on its original form. The context recognition layer processes the data acquired from the context and transforms into information aimed to be useful to the adaptation process. With that information the adaptation system can identify the correct behavior for the application on each different context situation. This dissertation propose a context server named MultiS, which target is to solve the problems related to context recognition layer: the production of new context data based on the information of several sensors and the capability of react to changes on the environment. It also presents a new programming language for composition of contextual information, named CD-XML. This language is used by the context-aware applications to communicate to the context server describing which information the application is sensible to.
30

Ambiente visual para programação distribuída em java

Malacarne, Juliano January 2001 (has links)
Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.

Page generated in 0.0697 seconds