Produtos UFMG::DCC::LLP - Programing Language Laboratory



  1. Design Pattern Smell Vídeo

    Design Pattern Smell is a tool for co-occurrences detection between design patterns and bad smell in software systems. With Design Pattern Smell, the user may identify the artifacts that hold such relationships and the intensity with which they occur in the design patterns analyzed. In addition, Design Pattern Smell may be used as a refactoring guide, since all artifacts detected with co-occurrences are displayed to the user.
    The executable is available through this link.
    The source is available at this link.
    The input files are available through this link.
    Bruno L. Sousa, Mariza A.S. Bigonha and Kecia A.M. Ferreira.


  1. FindSmells Vídeo

    Tool that support the detection of bad smells based on XML files. With the tool, the user can propose its own detection strategies considering the software metrics available in the XML file, the comparison logical operators, and the thresholds informed by the user. To run the detection strategy, FindSmells filters the source code elements, methods and classes, that are in accordance with the rules defined for each metric that composes the detection strategy. The tool also exports the obtained results via CSV file to provide easy manipulation and further analysis.
    The executable is available through this link.
    The source is available at this link.
    The XML input files are available through this link.
    Bruno L. Sousa, Priscila P. Souza, Eduardo Fernandes, Mariza A.S. Bigonha and Kecia A.M. Ferreira.


  1. Asymptus Tool - A Tool for Automatic Inference of Loop Complexity

    Asymptus is tool for automatic inference of function complexity. It uses a hybrid approach, mixing static analysis and dynamic profiling, in order to provide more accurate results. Statically, Asymptus determines: (i) the inputs of a loop, i.e., the variables that control its iterations; and (ii) an algebraic equation relating the loops within a function. Then the program is instrumented to output pairs relating input values and number of operations executed. By running the program over different inputs, we generate sufficient points for a polynomial interpolator in order to precisely determine a complexity function for loops. In the end, the complexity function for each loop is combined using an algebra of our own craft. Asymptus was implemented using the LLVM compilation infrastructure. Asymptus consists of four main steps: (1) static analysis, (2) code instrumentation, (3) dynamic information extraction and (4) polynomial interpolation.
    Installing Asymptus Tool
    Asymptus requires LLVM 3.4 to perform static analysis. To install LLVM 3.4 you can follow these tutorials: downloading a specific version of LLVM and installing LLVM. Note that it is necessary to also install clang, the LLVM front-end. Once you have a working installation of LLVM 3.4, you can download the Asymptus binaries or source code and install it.
    Asymptus executes over either a C/C++ file or LLVM bytecodes. The simplest way to run our tool is to execute ./asymptus input_file.(c|cpp|bc).
    It will identify how many command line arguments the input program reads and generate numeric values for them. You may also use the following options:
    --args type .... Allows the user to specify the types of command line arguments. It is necessary to specify as many argument as the program reads in order to have a correct execution. The types may be one of the following: int, long, float, double, num, char or string.
    --mix ARG ? Allows the user to mix random generated arguments with concrete data. When using this option, the random arguments types have to come between { }. For instance, --mix myInput {int}.
    --man This option will ask the user for only concrete inputs. Asymptus will ask for the inputs of each desired execution. An empty line means all data has been provided.
    -v Verbose mode. Prints the polynomial for each loop inside a function.
    -h or --help Prints this usage message. Download Linux binaries Download Mac OS X binaries
    Junio Cezar, Francisco Demontiê, Mariza A.S. Bigonha e Fernando Pereira.


  1. RAFTool - Methods Filtering Tool, Classes and Packages Vídeo-Tutorial

    The RAFTool tool performs filtering methods, classes and packages that have anomalous measurements softwares metrics-driven objects according to the thresholds values suggested in the work. To install and use RAFTool is necessary that the Java virtual machine installed with version greater than or equal to 1.6. The executable is available through this link.

    RAFTool source code is available on GoogleCode, hosting projects in a collaborative development environment. It used Subversion as version control tool.
    The project can be downloaded directly in Eclipse and is available through the this link..
    Tarcísio Filó, Mariza A.S.Bigonha, Kecia Ferreira.

  2. ArchLint

    from four heuristics ArchLint detects absences and differences present in the source code systems oriented by objects.
    Cristiano Maffort, Marco Túlio O. Valente, Mariza Bigonha.

  3. The UMLSmell Tool Vídeo

    Weed UMLSmell is a tool that, automatically via software metrics, identify bad smell. It recognizes in which classes were identified the bad smells, and at what level, regular or bad. UMLsmell receives as input a XMI file, which corresponds to the diagram classes to be analyzed and identified via metrics. It is held parsing in order to extract the following information: classes, attributes, methods, parameters and relationships. This data is stored internally in the data structures defined by the program for future reference, so that, from these data, the functionality Generating metrics allows the user to select among existing metrics in the system, those for which he wants to generate reports for late analysis. This feature allows the user to check the values of metrics selected for software classes. These metrics allow the functionality Identify bad smells, which is the central point of the tool. Define threshold allows the user to customize the threshold in regular and bad for each metric collected by the tool. This feature was implemented so that the user is free to choose the threshold he prefers to use. Create project, create a file that stores all the changes in threshold. This feature is useful if the threshold is changed as you need and want to save them for future uses of UMLsmell. Export results, it allows that the metrics analysis and bad smells are exported to spreadsheet format accepted by most of the tools Spreadsheets currently available.
    The executable is available through this link.

    Henrique N. Gomes, Flávio Madureira, Mariza A.S. Bigonha, Kecia Ferreira.


    1. The Connecta Platform CONNECTA


      Connecta is a tool that allows gathering object-oriented software metrics; predicting change impact propagation, exploring the software networks, and comparing the structure of two versions of a software system. The tool performs such analyses on Java software systems. Connecta was proposed by Kecia Ferreira, in her Master Thesis, and has been evolved by the same researcher, in her PhD Dissertation. Connecta is, now, an ongoing project whose aim is to provide a platform for measuring and analyzing data of software systems. The tool has been used to allow research on software measurement, change propagation impact, and software evolution.
      The main features of Connecta is described here
      Download Connecta.
      Kecia A. Marques Ferreira, Mariza A. S. Bigonha, Roberto S. Bigonha, Luiz Felipe O. Mendes, Heitor C. Almeida.


    1. Interpreter for the Abstract Machine TAM - interpreter for TAM, based on the description given by David Watt in "Programming Language Processors".
      Reuber G. Duarte e Mariza Bigonha.


    1. HyperPro - Integrated system for documentation and Prolog programs using techniques of hypertext and literary programming.
      Ed-Dbali AbdelAli, Pierre Deransart, Mariza Bigonha, José Siqueira, Roberto Bigonha, Fabricio Schmidt, Flávia P. Ribeiro. Projeto Rhae.


    1. Interpreter for a Functional Language Oriented by Objects.
      Wendell F. Taveira, Mariza Bigonha e Roberto S. Bigonha.

    2. Symbols Table - "Symbols Table Package" for Delphi languages C and Java, containing the main operations in the approaches : Linear , Ordinate List , Binary Search Trees, Hash Tables and Binary Trees Forests.
      Yêdda Aires D. Silva e Mariza A.S. Bigonha.

    3. GALsic - lexical analyzer generator for Windows.
      Erika Hamacek Pinto e Mariza A.S. Bigonha.


    1. SIC - C version for Windows -NT.
      Mariza Bigonha, Roberto S. Bigonha, Marco R. Costa e Valeska Russo.


    1. Pascal-S - Pascal compiler developed for the computer supermicro DCC2600.
      Mariza A.S. Bigonha.

    2. NFios - basic input and output non-blocking for managing a PC based on Intel 8086/8088, used in supermicro computer DCC2600.
      Mariza A.S. Bigonha.



    1. SIC Compilers Implementation System.
      Automatic generation of front-end compilers with automatic built-in error recovery system. Registered Program in Computer Registry on 06.03.1987. Computer Program Registration Certificate No. 09220-7, in accordance with the provisions of Articles 3, Item III, 4, Item VIII, 8, Paragraph IV, V and VI, 11, 12 and 22 of Law No. 7232 of 10.29.1984, Article 1. Decrete Law No. 2203 of 27/12/1984 and following the criteria set out in Normative Act No. 22/82 of 12/02/1982.
      Mariza A. S. Bigonha, Roberto S. Bigonha.



    1. ABCD algorithm and SSI representation incorporated into the LLVM compiler
      from "Adding Static Single Information Form to LLVM" work within the Google SummerCode 2009 Program.
      André Luiz C. Tavares, Fernando Pereira, Mariza A.S. Bigonha.

    2. Static Profiling.
      Feature incorporated into the LLVM compiler from "Adding Static Profiling Capabilities to LLVM work" within Google SummerCode 2009 Program.
      Andrei Rimsa Álvares, Fernando Pereira, Mariza A.S. Bigonha.

    3. New optimizations added in Mozilla Firefox JavaScript compiler
      from work "Improving the Register Allocator of Trace Monkey" inside Google SummerCode 2009 Program
      Marcos Rodrigo Sol, Fernando Pereira, Mariza A.S. Bigonha.


    1. NET.
      System for generating netlist from circuit descriptions and definitions of macro circuits used. NET displays the connections between pins of standard cells that make up the circuit.
      Roberto S. Bigonha e Mariza A. S. Bigonha

    2. CDM
      Acquisition system multi-frequencial MFC data in telephone exchanges. A special hardware collection sequences MFC signals generated by the establishment of protocol telephone connections and transmits it to a computer that stores them in a database.
      Roberto S. Bigonha, Newton A.C. Lages, João Eduardo R. Dantas, Rodolf Schwaners, Mariza A. S. Bigonha e Beatriz Mintz.


    Last update: February 27th, 2017.

  4. The UMLSmell Tool Vídeo