Visualizing your code's architecture

Question:

Each weekend I’m coding on a personal project which over time has reached a certain complexity by now, where I have sequences of different functions that take my input, that I save in some class objects, chop it up, process it and then finally output it.
Since I make large breaks between coding sessions I usually forget the precise structure of my code. Therefore, each time I have a bug, I have to re-familiarize myself with how the input data flows through my code, how inside some module that provides functionality things are organized etc.

I’m not sure if this is due to bad code structure of my software, or simply inherent complexity.

Is there a tool that, given the source code, visually shows me how the “architecture” of my code, i.e. how the classes methods and functions all work together?

Ideally this would also help me understand code other people wrote faster, to get quickly an overview how the individual code pieces interact.

(I’m coding in Python with Pycharm, if that helps you.)

Asked By: l7ll7

||

Answers:

I am afraid that there is no perfect tool for comprehensive visualizing your program architecture and its control flow, you should keep them in your head and make your software architecture clean, uniform and predictable.
However there are some tools that can help you.

In Pycharm you can:

  • view structure and hierarchy of the source code

  • view UML diagram of your classes.

There is also the pycallgraph2 Python module that can create call graph visualizations for Python applications. (This is a maintained fork of the discontinued pycallgraph Python module)

And there is Codimension IDE that has Python code visualization feature

Answered By: SergeyLebedev

I found another tool which perfectly matches this question: Sourcetrail, which officially supports C/C++/Java/Python in 2019. The text down below comes from its official doc:

Sourcetrail is an interactive source explorer that simplifies
navigation in existing source code. Sourcetrail’s aim is to give
answers to all your questions about your source code. Sourcetrail
first indexes your code and gathers data about its structure and then
provides you a simple interface consisting of three interactive views,
each playing a key role in getting information.

Update: Sourcetrail is officially open source as well. Github link.

Update before 2021 ends: Sourcetrail is now officially discontinued. Here is the blog link on this decision (For the record, it still works well on my Windows 11 Home Insider Preview with OS build 22523.1000; date: 2021-12-21).

Answered By: Zoe Desvl

there’s a tool called "understand" by scitools it fits your use case very well, I think. here’s a UML I generated for a project I’m working on with it. it’s paid but you get a free trial.

Answered By: Mohamed Abogazia