DariusSDG is a Java tool that joins two Program Comprehension techniques:
DariusSDG receives the source code of a program as input. That program will be analysed by Darius and a list of comments is retrieved. The program will be also analysed by the SDG Builder (built using ANTLR which needs a Java Grammar in order to transform the Java source code in a representation of the System Dependency Graph). The SDG Builder outputs a representation of the System Dependency Graph divided by methods (to overcome the scalability problem). If the software engineer interacts with DariusSDG by entering search terms the tool will display the list of comments and their respective similarity to the searched terms (the list will be ordered by similarity). If the software engineer select a comment the corresponding part of the System Dependency Graph will be displayed and the associated instruction will be highlighted. The software engineer can also interact with DariusSDG by selecting the methods that he wants to see. The information about the System Dependency Graph is passed to JGraphX that draws it.
In order to associate the comments with the instrutions in the System Dependency Graph its necessary to know the locations of both. There are some tools that can build the System Dependency Graph of a Java program but based on its bytecode (which does not contain the comments left by the user in the source code). Therefore we decided to develop a tool that builds the System Dependency Graph based on the source code of a Java program. We named the tool SDG Builder. In order to perform this task we use ANTLR (a powerful tool that can generate a processor to parse a formal language like Java). Until now, there is no other tool like SDG Builder.
Darius is a tool build by Luís de Freitas that can extract Java comments (inline, singleline, multiline and Javadoc) present in the source code of a Java program and perform concept location with them. Darius separates the text into sentences and the sentences into words. The words that have no significance or value are eliminated and the others are reduced to its grammatical root. The system also performs these actions in the query to assure consistence. Until now, there is no other tool like Darius.
The System Dependency Graph is an important and useful technique due to its graphical representation. After build a representation of the System Dependency Graph with the SDG Builder we created a graphical representation of it with JGraphX (a Java Swing library that provides functionality for visualisation and interaction with graphs). In order to distinguish easily the two types of edges, the data dependency connections are drawn in white and the flow dependencies are drawn in blue. We also set the autosize property of the nodes to true in order to adjust them according to the contents automatically. Lastly the options that allows the user to move the node and edges without detaching it are activated. This allows the user to isolate nodes in order to get a clear view of the graph.
A short paper about DariusSDG presented on 19th June at SLATE 2014 that was held in Bragança, Portugal. It briefly explains the development and concepts related to the it.
The MSc dissertation that gave origin to DariusSDG. In this document it is explained in detail all the steps to construct DariusSDG, related concepts and tests performed.
MSc student at University of Minho
Professor at University of Minho
Professor at Polytechnic Institute of Bragança