Abstract. The focus of this paper is on crafting a new visual language for attribute grammars (AG... more Abstract. The focus of this paper is on crafting a new visual language for attribute grammars (AGs), and on the development of the associated programming environment. We present a solution for rapid development of VisualLISA editor using DEViL. DEViL uses traditional attribute grammars, to specify the language’s syntax and semantics, extended by visual representations to be associated with grammar symbols. From these specifications a visual programming environment is automatically generated. In our case, the environment allows us to edit a visual description of an AG that is automatically translated into textual notations, including an XML-based representation for attribute grammars (X AGra), and is intended to be helpful for beginners and rapid development of small AGs. X AGra allows us to use VisualLISA with other compiler-compiler tools.
Abstract: Thousands of open source software (OOS) projects are available for collaboration in pla... more Abstract: Thousands of open source software (OOS) projects are available for collaboration in platforms like Github or Sourceforge. However, like traditional software, OOS projects have different quality levels. The developer, or the end-user, need to know the quality of a given project before starting the collaboration or its usage—they might of course to trust in the package before taking a decision. In the context of OSS, trustability is a much more sensible concern; mainly end-users usually prefer to pay for proprietary software, to feel more confident in the package quality. OSS projects can be assessed like traditional software packages using the well known software metrics. In this paper we want to go further and propose a finer grain process to do such quality analysis, precisely tuned for this unique development environment. As it is known, along the last years, open source communities have created their own standards and best practices. Nevertheless, the classic software m...
Electronic Communication of The European Association of Software Science and Technology, 2010
The decision of using existing software components versus building from scratch custom software i... more The decision of using existing software components versus building from scratch custom software is one of the most complex and important choices of the entire development/integration process. However, the reuse of software components raises a spectrum of issues, from requirements negotiation to product selection and integration. The correct tradeoff is reached after having analyzed advantages and issues correlated to the reuse. Despite the reuse failures in real cases, many efforts have been made to make this idea successful. In this context of software reuse in open source projects, we address the problem of reusing annotated components proposing a rigorous approach to assure the quality of the application under construction. We introduce the concept of caller-based slicing as a way of certifying that the integration of a component annotated with a contract into a system will preserve the correct behavior of the former, avoiding malfunctioning after integration. To complement the e...
During last years, a new challenge rose up inside the programming communities: the programming co... more During last years, a new challenge rose up inside the programming communities: the programming contests. Programming contests can vary slightly in the rules but all of them are intended to assess the competitor skills concerning the ability to solve problems using a computer. These contests raise up three kind of challenges: to create a nice problem statement (for the members of the scientific committee); to solve the problem in a good way (for the programmers); to find a fair way to assess the results (for the judges). This paper presents a web-based application, QUIMERA intended to be a full programming-contest management system, as well as an automatic judge. Besides the traditional dynamic approach for program evaluation, QUIMERA still provides static analysis of the program for a more fine assessment of solutions. Static analysis takes profit from the technology developed for compilers and language-based tools and is supported by source code analysis and
Communications in Computer and Information Science, 2015
The definition of metrics and their evaluation process is an activity intrinsic to each engineeri... more The definition of metrics and their evaluation process is an activity intrinsic to each engineering branch and it has to do with the need to reason quantitatively about the quality of the developed products. Years ago software engineers working on the field of formal languages and grammars came out with the idea of measuring grammars. However no much progress was done in this trend; there is a clear lack for tools to automatize the computation of some grammar metrics grammars. In this paper we will introduce a tool, GQE, aimed at evaluating a new set of simple metrics for attribute grammars (AG) in order to help on the assessment of AGs quality.
Communications in Computer and Information Science, 2015
We propose a methodology using abstract syntax trees for the detection of plagiarism in source co... more We propose a methodology using abstract syntax trees for the detection of plagiarism in source code, within an academic environment.
Innovative Teaching Strategies and New Learning Paradigms in Computer Programming
All of us that teach Language Processing topics are aware that a great part of the students face ... more All of us that teach Language Processing topics are aware that a great part of the students face big difficulties and a lack of motivation inherent to the concept abstraction level and to the technical capacities required to implement efficient processors. In order to overcome this problem, a starting point is to identify the main concepts involved in Language Processing subject and to consider that a person learns when he/she is involved in a process. The authors argue that motivation is a crucial factor to engage students in the course work, and it is highly dependent on the languages used to work on during the course. Therefore, they discuss the characteristics that a language should have to be a motivating case study. The authors think that LP teachers should be very careful in their choices and be astute in the way they explore the underlying grammars along the course evolution.
To be a debugger is a good thing! Since the very beginning of the programming activity, debuggers... more To be a debugger is a good thing! Since the very beginning of the programming activity, debuggers are the most important and widely used tools after editors and compilers; we completely recognize their importance for software development and testing. Debuggers work at machine level, after the compilation of the source program; they deal with assembly, or binary-code, and are mainly data structure inspectors. ALMA is a program animator based on its abstract representation. The main idea is to show the algorithm being implemented by the program, independently from the language used to implement it. To say that ALMA is a debugger, with no value added, is not true! ALMA is a source code inspector but it deals with programming concepts instead of machine code. This makes possible to understand the source program at a conceptual level, and not only to fix run time errors. In this paper we compare our visualizer/animator system, ALMA, with one of the most well-known and used debuggers, the...
In the context of our research project, we propose an interactive tool (GuessXQ) to perform the a... more In the context of our research project, we propose an interactive tool (GuessXQ) to perform the access to the information in a collection of eXtensible Markup Language (XML) documents. Due to the complex nature of those structured documents, the associated standard query language is also complex and, thus, not easy for most of the users. The GUI we propose does not require any knowledge about the query language, it is based on the Query-By-Example (QBE) paradigm from traditional databases. Using QBE, instead of specifying the desired components of the documents and eventual restrictions in a query, the user exemplifies those components marking them directly on a sample document picked-up from the collection. We believe this leverages the user's cognition about the object to search. GuessXQ is then responsible for the generation of the query to be treated by the information retrieval engine.
As edit, analyze, measure or transform attribute grammars by hand is an exhaustive task, it would... more As edit, analyze, measure or transform attribute grammars by hand is an exhaustive task, it would be great if it could be automatized, specially for those who work in Language Engineering. However, currently there are no editors oriented to grammar development that cover all our needs. In this paper we describe the architecture and the development stages of AG- ile, a structured editor, analyzer, metric calculator and transformer for attribute grammars. It is intended, with this tool, to fill the existing gap. An AnTLR based attribute grammar syntax was used to define the input for this system. As soon as the user types the grammar, the input is parsed and kept in an intermediate structure in memory which holds the important information about the input grammar. This intermediate structure can be used to calculate all the metrics or to transform the input grammar. This system can be a valorous tool for those who need to improve the perfor- mance or functionalities of their language p...
To search for specific elements in a marked up document we have, at least, two options: XPath and... more To search for specific elements in a marked up document we have, at least, two options: XPath and XQuery. However, the learning curve of these two dialects is high, requiring a considerable level of knowledge. In this context, the traditional Query-by-example methodology (for Relational Databases) can be an important contribute to make easier this learning process, freeing the user from knowing the specific query languages details or even the document structure. In this paper, we describe how we implement Query-by-example in a Web-application for information retrieval from a collection of structured documents, the GuessXQ system. In essence, we built an engine capable of deduce, from a specific example, the respective XQuery statement. After inferring the generic statement, the engine applies it to all documents in the collection to perform the desired retrieval. A suitable interface allows the end-user to mark over a sample document, picked up from the collection, the path he wants...
A Refactoring Model for XML Documents Guilherme Salerno, Marcela Pereira, Eduardo Guerra, Clovis ... more A Refactoring Model for XML Documents Guilherme Salerno, Marcela Pereira, Eduardo Guerra, Clovis Fernandes Aeronautical Institute of Technology, Praça Marechal Eduardo Gomes, 50 Vila das Acacias-CEP 12.228-900São José dos CamposSP, Brazil { ...
The program understanding task is usually very time and effort consuming. In a traditional way th... more The program understanding task is usually very time and effort consuming. In a traditional way the code is inspected line by line by the user without any kind of help. But this becomes impossible for larger systems. Some software systems were created in order to generate automatically explanations, metrics, statistics and visualizations to describe the syntax and the semantics of programs. This kind of tools are called Program Comprehension Systems. One of the most important feature used in this kind of tool is the software visualization. We feel that it would be very useful to define criteria for evaluating visualization systems that are used for program comprehension. The main objective of this paper is to present a set of parameters to characterize Program Comprehension-Oriented Software Visualization Systems. We also propose new parameters to improve the current taxonomies in order to cover the visualization of the Problem Domain.
Thousands of open source software (OOS) projects are available for collaboration in platforms lik... more Thousands of open source software (OOS) projects are available for collaboration in platforms like Github or Sourceforge. However, like traditional software, OOS projects have different quality levels. The developer, or the enduser, need to know the quality of a given project before starting the collaboration or its usage—they might of course to trust in the package before taking a decision. In the context of OSS, trustability is a much more sensible concern; mainly endusers usually prefer to pay for proprietary software, to feel more confident in the package quality. OSS projects can be assessed like traditional software packages using the well known software metrics. In this paper we want to go further and propose a finer grain process to do such quality analysis, precisely tuned for this unique development environment. As it is known, along the last years, open source communities have created their own standards and best practices. Nevertheless, the classic software metrics do no...
The aim of this paper is to discuss how our pattern-based strategy for the visualization of data ... more The aim of this paper is to discuss how our pattern-based strategy for the visualization of data and control flow can effectively be used to animate the program and exhibit its behavior. That result allows us to propose its use for Program Comprehension. The animator uses well known compiler techniques to inspect the source code in order to extract the necessary information to visualize it and understand program execution. We convert the source program into an internal decorated (or attributed) abstract syntax tree and then we visualize the structure by traversing it, and applying visualization rules at each node according to a pre-defined rule-base. No changes are made in the source code, and the execution is simulated. Several examples of visualization are shown to illustrate the approach and support our idea of applying it in the context of a Program Comprehension environment.
The research work that we discuss in this position paper, is concerned with the implementation of... more The research work that we discuss in this position paper, is concerned with the implementation of a visual front-end for LISA tool in order to make easier and more attractive the work of writing an attribute grammar for a new language. LISA (Language Implementation System based on Attribute grammars) is a compiler-compiler, or a system that generates automatically a compiler/interpreter from a formal language specification based on attribute grammars. The main idea is to design a visual language to draw derivation rules in conjunction with the associated semantic rules and to develop a visual compiler to transform that graphical representation into LISA notation.
There are some modules on Comprehensive Perl Archive Network to help with the parser generation p... more There are some modules on Comprehensive Perl Archive Network to help with the parser generation process in Perl. Unfortu- nately, some are limited, only supporting a particular parser algorithm and do not covering some developer needs. In this document we will analyse some of these modules, testing them in terms of performance and usability, allowing a proper evaluation of the results and careful considerations about the state of art of parser generation using Perl.
The integration of Software components within complex industrial ap- plications with severe secur... more The integration of Software components within complex industrial ap- plications with severe security standards, requires strict quality assessment of each integrated component. That is, requires a guarantee that each component is compli- ant with the software developmentgood practicesand all the standards in use. If full certification is easy to obtain for proprietary modules, it is particularly hard to achieve when dealing with Open-Source Software pieces, demanding for rigorous methods and techniques to implement their certification process. In this context, code analysis plays an important role as the basis for the automatiza- tion of quality assessment of open source software projects - code analysis provides the techniques and tools to implement the necessary validation process. Although source code is still the most explored (the main support for analysis), nowadays this assessment process should be able to deal with code at different compilation levels. Due to its relevance f...
Abstract. The focus of this paper is on crafting a new visual language for attribute grammars (AG... more Abstract. The focus of this paper is on crafting a new visual language for attribute grammars (AGs), and on the development of the associated programming environment. We present a solution for rapid development of VisualLISA editor using DEViL. DEViL uses traditional attribute grammars, to specify the language’s syntax and semantics, extended by visual representations to be associated with grammar symbols. From these specifications a visual programming environment is automatically generated. In our case, the environment allows us to edit a visual description of an AG that is automatically translated into textual notations, including an XML-based representation for attribute grammars (X AGra), and is intended to be helpful for beginners and rapid development of small AGs. X AGra allows us to use VisualLISA with other compiler-compiler tools.
Abstract: Thousands of open source software (OOS) projects are available for collaboration in pla... more Abstract: Thousands of open source software (OOS) projects are available for collaboration in platforms like Github or Sourceforge. However, like traditional software, OOS projects have different quality levels. The developer, or the end-user, need to know the quality of a given project before starting the collaboration or its usage—they might of course to trust in the package before taking a decision. In the context of OSS, trustability is a much more sensible concern; mainly end-users usually prefer to pay for proprietary software, to feel more confident in the package quality. OSS projects can be assessed like traditional software packages using the well known software metrics. In this paper we want to go further and propose a finer grain process to do such quality analysis, precisely tuned for this unique development environment. As it is known, along the last years, open source communities have created their own standards and best practices. Nevertheless, the classic software m...
Electronic Communication of The European Association of Software Science and Technology, 2010
The decision of using existing software components versus building from scratch custom software i... more The decision of using existing software components versus building from scratch custom software is one of the most complex and important choices of the entire development/integration process. However, the reuse of software components raises a spectrum of issues, from requirements negotiation to product selection and integration. The correct tradeoff is reached after having analyzed advantages and issues correlated to the reuse. Despite the reuse failures in real cases, many efforts have been made to make this idea successful. In this context of software reuse in open source projects, we address the problem of reusing annotated components proposing a rigorous approach to assure the quality of the application under construction. We introduce the concept of caller-based slicing as a way of certifying that the integration of a component annotated with a contract into a system will preserve the correct behavior of the former, avoiding malfunctioning after integration. To complement the e...
During last years, a new challenge rose up inside the programming communities: the programming co... more During last years, a new challenge rose up inside the programming communities: the programming contests. Programming contests can vary slightly in the rules but all of them are intended to assess the competitor skills concerning the ability to solve problems using a computer. These contests raise up three kind of challenges: to create a nice problem statement (for the members of the scientific committee); to solve the problem in a good way (for the programmers); to find a fair way to assess the results (for the judges). This paper presents a web-based application, QUIMERA intended to be a full programming-contest management system, as well as an automatic judge. Besides the traditional dynamic approach for program evaluation, QUIMERA still provides static analysis of the program for a more fine assessment of solutions. Static analysis takes profit from the technology developed for compilers and language-based tools and is supported by source code analysis and
Communications in Computer and Information Science, 2015
The definition of metrics and their evaluation process is an activity intrinsic to each engineeri... more The definition of metrics and their evaluation process is an activity intrinsic to each engineering branch and it has to do with the need to reason quantitatively about the quality of the developed products. Years ago software engineers working on the field of formal languages and grammars came out with the idea of measuring grammars. However no much progress was done in this trend; there is a clear lack for tools to automatize the computation of some grammar metrics grammars. In this paper we will introduce a tool, GQE, aimed at evaluating a new set of simple metrics for attribute grammars (AG) in order to help on the assessment of AGs quality.
Communications in Computer and Information Science, 2015
We propose a methodology using abstract syntax trees for the detection of plagiarism in source co... more We propose a methodology using abstract syntax trees for the detection of plagiarism in source code, within an academic environment.
Innovative Teaching Strategies and New Learning Paradigms in Computer Programming
All of us that teach Language Processing topics are aware that a great part of the students face ... more All of us that teach Language Processing topics are aware that a great part of the students face big difficulties and a lack of motivation inherent to the concept abstraction level and to the technical capacities required to implement efficient processors. In order to overcome this problem, a starting point is to identify the main concepts involved in Language Processing subject and to consider that a person learns when he/she is involved in a process. The authors argue that motivation is a crucial factor to engage students in the course work, and it is highly dependent on the languages used to work on during the course. Therefore, they discuss the characteristics that a language should have to be a motivating case study. The authors think that LP teachers should be very careful in their choices and be astute in the way they explore the underlying grammars along the course evolution.
To be a debugger is a good thing! Since the very beginning of the programming activity, debuggers... more To be a debugger is a good thing! Since the very beginning of the programming activity, debuggers are the most important and widely used tools after editors and compilers; we completely recognize their importance for software development and testing. Debuggers work at machine level, after the compilation of the source program; they deal with assembly, or binary-code, and are mainly data structure inspectors. ALMA is a program animator based on its abstract representation. The main idea is to show the algorithm being implemented by the program, independently from the language used to implement it. To say that ALMA is a debugger, with no value added, is not true! ALMA is a source code inspector but it deals with programming concepts instead of machine code. This makes possible to understand the source program at a conceptual level, and not only to fix run time errors. In this paper we compare our visualizer/animator system, ALMA, with one of the most well-known and used debuggers, the...
In the context of our research project, we propose an interactive tool (GuessXQ) to perform the a... more In the context of our research project, we propose an interactive tool (GuessXQ) to perform the access to the information in a collection of eXtensible Markup Language (XML) documents. Due to the complex nature of those structured documents, the associated standard query language is also complex and, thus, not easy for most of the users. The GUI we propose does not require any knowledge about the query language, it is based on the Query-By-Example (QBE) paradigm from traditional databases. Using QBE, instead of specifying the desired components of the documents and eventual restrictions in a query, the user exemplifies those components marking them directly on a sample document picked-up from the collection. We believe this leverages the user's cognition about the object to search. GuessXQ is then responsible for the generation of the query to be treated by the information retrieval engine.
As edit, analyze, measure or transform attribute grammars by hand is an exhaustive task, it would... more As edit, analyze, measure or transform attribute grammars by hand is an exhaustive task, it would be great if it could be automatized, specially for those who work in Language Engineering. However, currently there are no editors oriented to grammar development that cover all our needs. In this paper we describe the architecture and the development stages of AG- ile, a structured editor, analyzer, metric calculator and transformer for attribute grammars. It is intended, with this tool, to fill the existing gap. An AnTLR based attribute grammar syntax was used to define the input for this system. As soon as the user types the grammar, the input is parsed and kept in an intermediate structure in memory which holds the important information about the input grammar. This intermediate structure can be used to calculate all the metrics or to transform the input grammar. This system can be a valorous tool for those who need to improve the perfor- mance or functionalities of their language p...
To search for specific elements in a marked up document we have, at least, two options: XPath and... more To search for specific elements in a marked up document we have, at least, two options: XPath and XQuery. However, the learning curve of these two dialects is high, requiring a considerable level of knowledge. In this context, the traditional Query-by-example methodology (for Relational Databases) can be an important contribute to make easier this learning process, freeing the user from knowing the specific query languages details or even the document structure. In this paper, we describe how we implement Query-by-example in a Web-application for information retrieval from a collection of structured documents, the GuessXQ system. In essence, we built an engine capable of deduce, from a specific example, the respective XQuery statement. After inferring the generic statement, the engine applies it to all documents in the collection to perform the desired retrieval. A suitable interface allows the end-user to mark over a sample document, picked up from the collection, the path he wants...
A Refactoring Model for XML Documents Guilherme Salerno, Marcela Pereira, Eduardo Guerra, Clovis ... more A Refactoring Model for XML Documents Guilherme Salerno, Marcela Pereira, Eduardo Guerra, Clovis Fernandes Aeronautical Institute of Technology, Praça Marechal Eduardo Gomes, 50 Vila das Acacias-CEP 12.228-900São José dos CamposSP, Brazil { ...
The program understanding task is usually very time and effort consuming. In a traditional way th... more The program understanding task is usually very time and effort consuming. In a traditional way the code is inspected line by line by the user without any kind of help. But this becomes impossible for larger systems. Some software systems were created in order to generate automatically explanations, metrics, statistics and visualizations to describe the syntax and the semantics of programs. This kind of tools are called Program Comprehension Systems. One of the most important feature used in this kind of tool is the software visualization. We feel that it would be very useful to define criteria for evaluating visualization systems that are used for program comprehension. The main objective of this paper is to present a set of parameters to characterize Program Comprehension-Oriented Software Visualization Systems. We also propose new parameters to improve the current taxonomies in order to cover the visualization of the Problem Domain.
Thousands of open source software (OOS) projects are available for collaboration in platforms lik... more Thousands of open source software (OOS) projects are available for collaboration in platforms like Github or Sourceforge. However, like traditional software, OOS projects have different quality levels. The developer, or the enduser, need to know the quality of a given project before starting the collaboration or its usage—they might of course to trust in the package before taking a decision. In the context of OSS, trustability is a much more sensible concern; mainly endusers usually prefer to pay for proprietary software, to feel more confident in the package quality. OSS projects can be assessed like traditional software packages using the well known software metrics. In this paper we want to go further and propose a finer grain process to do such quality analysis, precisely tuned for this unique development environment. As it is known, along the last years, open source communities have created their own standards and best practices. Nevertheless, the classic software metrics do no...
The aim of this paper is to discuss how our pattern-based strategy for the visualization of data ... more The aim of this paper is to discuss how our pattern-based strategy for the visualization of data and control flow can effectively be used to animate the program and exhibit its behavior. That result allows us to propose its use for Program Comprehension. The animator uses well known compiler techniques to inspect the source code in order to extract the necessary information to visualize it and understand program execution. We convert the source program into an internal decorated (or attributed) abstract syntax tree and then we visualize the structure by traversing it, and applying visualization rules at each node according to a pre-defined rule-base. No changes are made in the source code, and the execution is simulated. Several examples of visualization are shown to illustrate the approach and support our idea of applying it in the context of a Program Comprehension environment.
The research work that we discuss in this position paper, is concerned with the implementation of... more The research work that we discuss in this position paper, is concerned with the implementation of a visual front-end for LISA tool in order to make easier and more attractive the work of writing an attribute grammar for a new language. LISA (Language Implementation System based on Attribute grammars) is a compiler-compiler, or a system that generates automatically a compiler/interpreter from a formal language specification based on attribute grammars. The main idea is to design a visual language to draw derivation rules in conjunction with the associated semantic rules and to develop a visual compiler to transform that graphical representation into LISA notation.
There are some modules on Comprehensive Perl Archive Network to help with the parser generation p... more There are some modules on Comprehensive Perl Archive Network to help with the parser generation process in Perl. Unfortu- nately, some are limited, only supporting a particular parser algorithm and do not covering some developer needs. In this document we will analyse some of these modules, testing them in terms of performance and usability, allowing a proper evaluation of the results and careful considerations about the state of art of parser generation using Perl.
The integration of Software components within complex industrial ap- plications with severe secur... more The integration of Software components within complex industrial ap- plications with severe security standards, requires strict quality assessment of each integrated component. That is, requires a guarantee that each component is compli- ant with the software developmentgood practicesand all the standards in use. If full certification is easy to obtain for proprietary modules, it is particularly hard to achieve when dealing with Open-Source Software pieces, demanding for rigorous methods and techniques to implement their certification process. In this context, code analysis plays an important role as the basis for the automatiza- tion of quality assessment of open source software projects - code analysis provides the techniques and tools to implement the necessary validation process. Although source code is still the most explored (the main support for analysis), nowadays this assessment process should be able to deal with code at different compilation levels. Due to its relevance f...
Uploads
Papers by Daniela Da Cruz