Sunday, March 04, 2012

Announcing "Grasp" a control-data flow diagram in software



Announcing "Grasp" a combined control-data flow diagram for software engineering. Here is the example.

Rectangles - control structures, like functions, c++ scopes, operators. They are connected by a straight-angled lines. Circles and ellipses are data: On stack - regular line, Static - thick line, other lines - in heap. They are connected by cruved lines to rectangles showing the "flow of data" among code sub-systems. Or by straight lines showing what data object belongs to what ( relation "has"). there are also dotted lines from rectangles to ellipses showing when, from what piece of code an object is created.

Small dark rectangles represent "blocking code", code that blocks in operation system calls. "damonds" represent conditional branches of the code. There are also pointers as small cirles and a special line "redirection" from pointers to the actual object.


A program is made which is actuall shows automatically or manually generated diagrams from the code. Editable ones. They are interactive. Every rectangle or ellips can be expanded to show the internal structure, or collapsed. On different levels. There are Module related to exe or dll, File, Class, Group, Function, Scope, Operator, Assemby command levels. The click into any graphical object can result in bringing the appropriate place of the actual code. Thus the diagrams can serve to navigate around the actual code.


Arrows on the lines at the output and input from a rectangle can show where is the caller and calleee.


Speciall dotted lines may designate "conditional control flow".


Special shape can represetn an "event". A description of what happends from inside a system, human interaction or other.


Lines, especially data flow lines can join to minimize clatter. Control-flow lines represent essentially time.