Overall architecture

The overall architecture is built around creating a fully featured library of Graph actions which can be used independently of any UI. From this two UI's have been built - one CLI and one graphical user interface built on QT. Almost all of the core logic is built into Grapher and its related classes. In the UI itself, the goal has been separating most of the actual implementation of functionality and action in the MainController while the rest of the UI mostly handles user interface actions such as mouse clicks, moves, menu selections etc. More about how this works can be found in the GUI documentation

Overall chart of system architecture:

Software Architecture