422 research outputs found

    Visualization/animation of programs in Alma: obtaining different results

    Get PDF
    Alma, a system for program animation, receives as input a computer program and produces a sequence of visualizations that will describe its functionality. The system generates automatically program animations basing this process on the internal representation of those programs. The back-end of this system works over at? execution tree (DAST Decorated Abstract Syntax Tree), implementing the animation algorithm. This algorithm uses two bases of rules: visualizing rules (to associate graphical representation with program elements creating a visual description of the program state) and rewriting rules (to change the program state). In this paper the main goal will be to present the extensibility of the system in the sense of adding or modifying inputs and outputs. We also discuss the characteristics of Alma's architecture that make this possible.FC

    Animação de algoritmos tornada sistemática

    Get PDF
    Neste artigo vamos propor a arquitectura do sistema Alma, um sistema para animar algoritmos programados em diferentes linguagens, oferecendo uma interface de visualização controlável pelo utilizador. Assim, o que na nossa opinião caracteriza esta proposta é: a independência relativamente à aplicação e à linguagem de programação; a existência de uma linguagem de visualização versátil (permitindo adaptá-lo às necessidades do utilizador). Como aplicações possíveis do Alma, destacamos: a animação de algoritmos, como apoio ao ensino da programação e como instrumento da didáctica da matemática; a análise de resposta, para apoio à correcção de provas de avaliação; a interpretação (visual) de documentos anotados

    Visualization/animation of programs based on abstract representations and formal mappings

    Get PDF
    In the context of Alma (a system for program visualization and algorithm animation), we use an internal representation-based on the concept of an attributed abstract syntax tree decorated with attribute values, a DAST-to associate (static) figures to grammar rules (productions) and to step over program dynamics executing state changes in order to perform its animation. We do not rely upon any source program annotations (visual/animation statements, or parameters), neither on any special visual data types. On account of such principle, the approach becomes source language independent. It means that we can apply the same visualizer and animator, that is the Alma's back-end, to different programming languages; all that we need is different front-ends to parse each program into the DAST we use. In this paper we discuss Alma design goals and architecture, and we present the two mappings that associate to productions figures and rewriting rules to systematically draw a visual representation (exhibiting data and control flow) of a given source program and to animate its execution.FC

    Detection of Vulnerabilities in Smart Contracts Specifications in Ethereum Platforms

    Get PDF
    Ethereum is the principal ecosystem based on blockchain that provides a suitable environment for coding and executing smart contracts, which have been receiving great attention due to the commercial apps and among the scientific community. The process of writing secure and well performing contracts in the Ethereum platform is a major challenge for developers. It consists of the application of non-conventional programming paradigms due to the inherent characteristics of the execution of distributed computing programs. Furthermore, the errors in the deployed contracts could have serious consequences because of the immediate linkage between the contract code and the financial transactions. The direct handling of the assets means that the errors can be more relevant for security and have greater economic consequences than a mistake in the conventional apps. In this paper, we propose a tool for the detection of vulnerabilities in high-level languages based on automatized static analysis

    Proposta de um sistema para compreensão de aplicações Web

    Get PDF
    Desenvolver software para a web é sempre um desafio dada a diversidade de tecnologias e linguagens que se interligam neste tipo de aplicações. Assim, a tarefa de compreender este tipo de software é bastante complexa. A área de Compreensão de Programas (CP) já disponibiliza técnicas e ferramentas para aplicações ditas “tradicionais”, no entanto para as Aplicações Web, ainda não existem ferramentas que transfiram o mesmo nível de conhecimento, em termos estáticos, dinâmicos e comportamentais. Este artigo tem como objectivo propor um sistema de visualização que mostre as características das aplicações Web, nomeadamente a geração dinâmica de páginas e relações de dependência entre ficheiros e páginas, permitindo deste modo compreender detalhadamente a aplicação em toda a sua extensão e profundidade com vista a efectivamente ajudar em qualquer tarefa de manutenção e reengenharia. A abordagem proposta é baseado em modelos cognitivos e técnicas de visualização de Software.FC

    Exploring and visualizing the ”Alma” of XML documents

    Get PDF
    In this paper we introduce eXVisXML, a visual tool to explore documents annotated with the mark-up language XML, in order to easily perform over them tasks as knowledge extraction or document engineering. eXVisXML was designed mainly for two kind of users. Those who want to analyze an annotated document to explore the information contained, for them a visual inspection tool can be of great help, and a slicing functionality can be an efective complement. The other target group is composed by document engineers who might be interested in assessing the quality of the annotation created. This can be achieved through the measurements of some parameters that will allow to compare the elements and attributes of the DTD/Schema against those efectively used in the document instances. Both functionalities and the way they were delineated and implemented will be discussed along the paper.FC

    Compreensão de aplicações web: o processo e as ferramentas

    Get PDF
    Já ninguém duvida que a compreensão de programas (CP) é uma área cada vez mais importante, e a sua aplicação cada vez mais abrangente na engenharia da programação, constituindo-se como um desafio permanente e actual para as ciências de computação. A compreensão de programas nasce da tentativa de melhorar os processos de manutenção de sistemas aplicacionais, mas de facto está também francamente associada ao processo de aprendizagem de linguagens de programação. Por isso, nesta linha de preocupações têm sido desenvolvidas inúmeras ferramentas de auxílio à compreensão de software para manutenção (alteração ou actualização de código), reverse-engineering/re-engineering, ou ensino de programação. A complexidade do processo de compreensão requer a existência de modelos de aprendizagem e representação de conhecimento. Uma questão que então se coloca muitas vezes, é saber se as ferramentas obedecem aos modelos cognitivos existentes; importa também saber como medir o seu real impacto na compreensão. Este artigo tem como objectivo a descrição de um conjunto de critérios a adoptar no sentido de avaliar se uma ferramenta pode efectivamente ajudar na compreensão de programas, apresentando-se uma aplicação prática. Dada a importância cada vez maior das aplicações que correm sobre a Web, o estudo incidirá sobre esse recente paradigma de programação. Procuraremos identificar o que de novo há neste tipo de programação que interessa realçar para o seu bom entendimento.FC

    A QA system for learning python

    Get PDF
    This article proposes a Question Answering System that can automatically answer to questions presented in a natural language about the Python programming language. A system of this kind aims at the interaction with a human. Since it is natural for a human to communicate in a natural language, such as Portuguese or English, there is a need for systems that can respond to the user in the same language. When restricted to a closed or specific knowledge domain, these systems can offer satisfiable answers to the posed questions. So, it is expected that the proposed QA System can present reasonable answers to questions about Python. After surveying this emergent working area, that is growing every day, we will present the design and implementation of a Python QA system in order to prove that it is possible to adopt a systematic approach to construct this kind of systems.This work has been supported by COMPETE: POCI-01-0145-FEDER-007043 and FCT – Fundação para a Ciência e Tecnologia within the Project Scope: UID/CEC/00319/2013.info:eu-repo/semantics/publishedVersio

    Profile detection through source code static analysis

    Get PDF
    The present article reflects the progress of an ongoing master’s dissertation on language engineering. The main goal of the work here described, is to infer a programmer’s profile through the analysis of his source code. After such analysis the programmer shall be placed on a scale that characterizes him on his language abilities. There are several potential applications for such profiling, namely, the evaluation of a programmer’s skills and proficiency on a given language or the continuous evaluation of a student’s progress on a programming course. Throughout the course of this project and as a proof of concept, a tool that allows the automatic profiling of a Java programmer is under development. This tool is also introduced in the paper and its preliminary outcomes are discussed

    O tratamento normalizado do registo arqueológico : uma proposta informática

    Get PDF
    Este trabalho pretende, por um lado, ensaiar um sistema de informação que permita integrar todo o processo de investigação arqueológica, e por outro, adiantar sugestões e apontar soluções para a recolha da informação no campo, de forma normalizada, prática e eficaz. O desenvolvimento deste trabalho consiste, por isso, na conceptualização de um sistema de informação arqueológica centralizado numa base de dados convergente, a partir da qual serão alimentadas bases de dados móveis. Às bases de dados móveis será fornecida informação parcial, disponibilizada pela base de dados central. Do mesmo modo, será a partir da informação recolhida no campo, armazenada nas bases de dados móveis, que numa fase posterior se alimentará a base de dados central. Este sistema suporta o registo, o armazenamento e a exploração da informação arqueológica e garante a sua correcta ligação à cartografia, de forma a facilitar a posterior interpretação e publicação dos resultados. Paralelamente ao desenvolvimento de um sistema informático que sirva a investigação arqueológica, analisa-se de forma detalhada a informação que deve constar nos formulários para preenchimento no campo, quer durante a prospecção, quer na fase de escavação, pelo que propomos um conjunto de fichas/formulários normalizados, em suporte de papel e digital
    corecore