Repository logo
 
Loading...
Profile Picture

Search Results

Now showing 1 - 10 of 105
  • CaVa: An example of the automatic generation of virtual learning spaces
    Publication . Martini, Ricardo; Araújo, Cristiana; Henriques, Pedro Rangel; Pereira, Maria João
    In order to construct web Learning Spaces (LS), more than collect and digitalize information, a powerful data extraction and querying engine and a sophisticated web publishing mechanism are needed. In this paper, a system to automatically construct those learning spaces based on a digital repository is presented. The system takes XML files from repositories and populates an ontology (representing the knowledge base, the core of our system) to create the triples internal representation. A Domain Specific Language (CaVaDSL) will be used to specify the learning spaces based on that ontology. The formal description, written in that DSL, will be processed by Cavagen engine to generate the final LS.
  • Problem domain oriented approach for program comprehension
    Publication . Pereira, Maria João; Berón, Mario; Cruz, Daniela; Oliveira, Nuno; Henriques, Pedro Rangel
    This paper is concerned with an ontology driven approach for Program Comprehension that starts picking up concepts from the problem domain ontology, analyzing source code and, after locating problem concepts in the code, goes up and links them to the programming language ontology. Different location techniques are used to search for concepts embedded in comments, in the code (identifier names and execution traces), and in string-literals associated with I/O statements. The expected result is a mapping between problem domain concepts and code slices. This mapping can be visualized using graph-based approaches like, for instance, navigation facilities through a System Dependency Graph. The paper also describes a PCTool suite, Quixote, that implements the approach proposed.
  • Estrategias para facilitar la comprensión de programas
    Publication . Berón, Mario; Uzal, Roberto; Henriques, Pedro Rangel; Pereira, Maria João
    La Comprensión de Programas es una disciplina de la Ingeniería de Software cuyo objetivo es proveer Modelos, Métodos, Técnicas y Herramientas para facilitar el estudio y entendimiento de los sistemas de software. A través de un extenso estudio y experiencia en el desarrollo de productos de comprensión se pudo comprobar que el principal desafío en esta área consiste en: Relacionar el Dominio del Problema con el Dominio del programa. El primero hace referencia a la salida del sistema. El segundo a las componentes de software usadas para producir dicha salida. La construcción de este tipo de relación es muy compleja e implica el estudio de disciplinas tales como: Modelos Cognitivos, Visualización de Software, Estrategias de Interrelación de Dominios y Métodos de Extracción de la Información. En este artículo se presentan líneas de investigación cuyos objetivos son: • Analizar los productos de comprensión existentes. • Construir productos innovadores basados en los conceptos comunes a las grandes áreas mencionadas en el paragrafo anterior.
  • Software development with grammatical approach
    Publication . Kosar, Tomaz; Mernik, Marjan; Zumer, Viljem; Henriques, Pedro Rangel; Pereira, Maria João
    The paper presents a grammatical approach to problem solving. It supports formal software specification using attribute grammars, from which a rapid prototype can be generated, as well as the incremental software development. Domain concepts and relationships among them have to be identified from a problem statement and represented as a context-free grammar. The obtained context-free grammar describes the syntax of a domain-specific language whose semantics is the same as the functionality of the system under implementation. The semantics of this language is then described using attribute grammars from which a compiler is automatically generated. The execution of a particular program written in that domain-specific language corresponds to the execution of a prototype of the system on a particular use-case.
  • Clasificaciones: un mecanismo de herencia múltiple para la construcción de modelos fáciles de comprender y mantener
    Publication . Aristiaran, Martín; Berón, Mario; Henriques, Pedro Rangel; Pereira, Maria João
    Los actuales mecanismos de Múltiple Herencia(MH) han resuelto gran parte de sus problemas históricos como el problema del diamante y la herencia de distintas implementaciones de métodos y atributos con el mismo nombre. Sin embargo, los modelos producidos por estos mecanimos presentan al menos uno de los siguientes problemas: i) No contienen información acerca de como es posible extenderlos asegurando la inexistencia de con ictos, o ii) El modelo creado no puede inferirse a partir de características de los elementos del dominio. La existencia de esos problemas agrega gran complejidad al mantenimiento de esos modelos, lo cual desanima el uso de la MH. En este contexto, este artículo describe una línea de investigación cuyos principales objetivos son crear mecanismos de MH que: i) Brinden una solución a los dos problemas mencionados anteriormente, lo cual facilita el mantenimiento de los modelos, y ii) Produzcan modelos inteligibles y expresivos.
  • Program comprehension for domain-specific languages
    Publication . Pereira, Maria João; Mernik, Marjan; Cruz, Daniela; Henriques, Pedro Rangel
    In the past, we have been looking for program comprehension tools that are able to interconnect operational and behavioral views, aiming at aiding the software analyst to relate problem and program domains in order to reach a full understanding of software systems. In this paper we are concerned with Program Comprehension issues applied to Domain Specific Languages (DSLs). We are now willing to understand how techniques and tools for the comprehension of traditional programming languages fit in the understanding of DSLs. Being the language tailored for the description of problems in a specific domain, we believe that specific visualizations (at a higher abstraction level, closer to the problem level) could and should be defined to enhance the comprehension of the descriptions in that particular domain.
  • VisualLISA: visual programming environment for attribute grammars specification
    Publication . Oliveira, Nuno; Henriques, Pedro Rangel; Cruz, Daniela; Pereira, Maria João
    The benefits of using visual languages and graphical editors are well known. In some specific domain it is really crucial to program with graphical representations, icons, geometric objects, colors and so on. Nowadays it is possible to easily implement a visual language, constructing, automatically, visual editors for it. In this paper we want to emphasize how it is possible to easily specify a huge amount of complex information, associated with an attribute grammar, using graphical objects and a very intuitive modular approach. For that purpose we present a new visual language to specify attribute grammars (called VisualLISA) and we present also a modular approach that uses VisualLISA in an integrated editor to draw attribute grammars.
  • A system to evaluate and understand routing algorithms
    Publication . Berón, Mario; Henriques, Pedro Rangel; Pereira, Maria João
    In this communication in the form of poster and demo we intent to present a tool aimed at evaluating and understanding routing algorithms. This application has a powerful environment that allows: to draw graphs and manipulate their components in manual or automatic form; to incorporate routing algorithms; to make experiments, measurement, and performance tests; to understand programs. The tool incorporates mechanisms to make easy the task for building executable files. These characteristics make this tool a versatile and easy evaluation and comprehension system to be used with routing algorithms. Along the paper we will emphasize how we conceived and implemented the system’s interface to satisfy the user’s requirements. Our purpose in the context of Interacçao06 is to demonstrate it!.
  • A language processing tool for program comprehension
    Publication . Berón, Mario; Henriques, Pedro Rangel; Pereira, Maria João; Uzal, Roberto; Montejano, Germán
    Program Comprehension is a Software Engineering discipline which aims to understand computer code written in a high-level programming language. Program Comprehension is useful for reuse, inspection, maintenance, reverse engineering and many other activities in the context of Software Engineering. In this paper we define a set of techniques to extract static and dynamic information from the target program. These techniques are based on the inclusion of inspection functions and control statements in the system’s source code. The first are intended to show the functions actually used. The second are necessary to reduce the number of functions recovered for a better administration. We show a possible implementation of this approach using a language processor generator very useful and easy to use. Our strong motivation was to support the understanding of routing algorithms, available in EAR a routing algorithms evaluation system. To assist the program comprehension task, we generate different views that use the information extracted by our strategy, such as the routing algorithm output (that can be seen as a problem domain view), or the sequence of called functions, and their source and object code (examples of program domain views). Although specific, we intend to generalize this approach.
  • Detection of vulnerabilities in smart contracts specifications in ethereum platforms
    Publication . Argañaraz, Mauro; Berón, Mario; Pereira, Maria João; Henriques, Pedro Rangel
    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.