Source Code Diagram

Source Diagram as of the 8th of December 2014

Source Diagram as of the 8th of December 2014 (click to enlarge)

Developing a complex software is a big endeavor that does not start and end with its development. Often, big softwares are “designed” by an “architect” before even a line of code is written. One of the forms (not mutually exclusive) that the design process can take is that of a SW design diagram.

There are, in fact, a lot of possible representations of software, each one with a specific strength like class diagrams, which are a useful reference when developing, or sequence diagrams, that describes what happens when the SW runs, a favorite by many and really useful to understand how the program is supposed to run.

Since I am working alone on this project having these kinds of diagrams is less useful, however they are still a great way to visualize the structure of your SW and are valuable to understand the relationships between modules and thus help in decoupling their functionalities. The image on top is the architectural diagram of WD today.

Source Graph LegendAs you can probably see I don’t use the UML standard, which for me is too heavy and ultimately not at all useful for my goals. The diagram does not map 1:1 to the source code, but it is close enough to understand the design and the relationships between modules and objects without having to open an IDE. Roughly, straight colored boxes are classes, rounded boxes are functionalities and dotted boxes are “modules”; Dotted lines also represent inheritance while continuous lines represent relationships.

The diagram also works as an heat-map for the project status: green items are finished or almost finished, lime items are at a good level of completion, yellow items are prototypes or otherwise require some work and red items are still to be done or barely started.

As SW evolves the diagram can change and evolve too, this is also a learning exercise: look as your architecture changes and learn from your errors. I will try to keep the progress page updated to depict both the current status of the project and its evolution trough time.

Do you spot anything interesting or something that you will do differently?

Thanks for reading.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s