ARIS - Analogical Reasoning for reuse of Implementations & Specifications

Software Reuse Our work aims to automate some of the steps involved in writing specifications for a given implementation. This is achieved by reusing existing verified programs. We focus on the topology on the knowledge extracted from the source code. In brief, we translate source code, via the Abstract Syntax Tree, into the Code Graph below. Then we perform graph mathcing between pairs of these code graphs. This allows us to transfer the old speicication to a new implementation.

The illustrative example playing (below) highlights the structural similarity between two different implementations of the same code.

playble Gif showing to similar graphs

Then click on the HTML links on following page:: Index of Code Graphs.

Approximately 1 million code graphs on Kaggle

Aris Publications

Aris - Project members

Kuruvilla George Aiyankovil, Corentin Pinato, Felicia Halim, Fahrurrozi Rahman, Mihai Pitu, Daniella Grijincu, Rosemary Monahan & Diarmuid P. O'Donoghue. . Felicia, Fahrurrozi, Mihai, Daniela were all DESEM scholar students. Rosemary & Diarmmuid are member members of staff at Maynooth University. Back to Diarmuid's page.

Student Prizes:Daniela won the Best Overall MSc Project at the DESEM Summer school and to Mihai in his Best Student award also at the 2013 summer school.

Force directed graph - in your browser.

Enable viewing of d3.jsIf you cannot see the dynamic force directed (FDG) graphs in the pages listed below, please make the following changes to the FireFox brower.

  1. In Firefox, open up a new tab. Type or paste about:config in the address bar and press Enter.
  2. A button appears asking if you accept the risk to change advanced settings. Click that you accept the risk.
  3. Type unique in the search box, which will filter the list for words containing this word.
  4. Double click the privacy.file_unique_origin preference to switch the value from true to false.
Example Code Graphs Around 20 randomly selected code graphs. When reading these graphs, start with the top-level node 0: Block: Root

Revised: 2020.

Copyright 2000 Maynooth University, Ireland.