This is the proposal of the project, that our team of three sophomore students are undertaking.
To build a code visualization environment which shows the functioning of a program using call graphs and dataflow charts.
A Development Environment that focuses on code visualization i.e graphical and textual representation of code will be built. The graphical representation will involve forming call graphs for showing interconnection between multiple subroutines and dataflow charts for representing the flow of data between different data structures.
When millions of lines of code are to be communicated and understood, it poses a big challenge to the human intellect. For a developer to completely understand the code written by someone else, it takes some time, until he/she has built the structure and functioning of the code given in his/her own mind. So, a need is felt to build a tool that visualizes the code given and thus reduces the time that any developer reluctantly gives to understanding this code.
• The skeleton of the program shall be represented first by forming a well-defined call graph, so as to provide a better clarity and focus to not just others, but also to the programmer himself. This clarifies the objectives and the structure of the code to be built.
• The internal working of a code segment shall be represented by building a dataflow chart that describes the flow of control, instructions and data. The flowchart will be a condensed form of the whole program, presenting only the important and necessary actions on objects. A pipeline structure can be adopted for this, so as to show the number and types of parameters passed and thus, the result obtained afterwords. This is just a preliminary approach, which requires further thought and research from the team.
The KCachegrind Call Graph View as generated from a sample C code.
• Process and visualize functioning of generic data structures.
• Build a global tool for generic programming.
• Devise a suitable structure or method to build dataflow charts that represents the flow of data between components, in a way so that the complex or foreign part of a code can be understood easily, but at the same time, a certain amount of abstraction should be carried out, so that the developer can move past a trivial piece of code that does not require further visualization.
Feasibility and Effectiveness of Idea:
• The time taken by a programmer to understand and start contributing to an entirely new codebase will be reduced drastically.
• A graphical visualization of code shall make the debugging process easier and more time saving.
• Tendency to produce completely error free code will also rise.
• Isolated sub-routines can easily identified by analyzing the call graphs.
- Umar Ahmad email@example.com
- Safiyat Reza firstname.lastname@example.org
- Vipul Nayyar email@example.com