Software Design Mind Map

Algorithm & Systems Visualizations

Every software design visualization on this site on one map. The branches are the main ideas. Each leaf is a page; the grey line under it is the one thing to remember about it. Click a branch to focus on it, click a page to open it.

Recall mode hides the page names. Read the hint, say the name, then click the "?" to check.

1. How the map is organized

Overview of the software design mind map: Principles, Design patterns, Architecture, Git storage, Git branches & merging, Testing.
The map at a glance: 6 branches, 17 pages.

Ask what size of thing the idea shapes:

  • A rule for any class? It is a principle: SOLID, or choosing composition over inheritance.
  • A small reusable set of classes with a name? It is a design pattern. The layout of the whole app (where the domain sits, how the UI updates) is architecture.
  • Git? How bytes are stored on disk is Git storage; how branches move and histories join is Git branches & merging.

2. The branches side by side

BranchQuestion it answersKey idea
PrinciplesWill a change stay in one place?depend on interfaces, small classes
Design patternsWhich known shape fits this problem?an interface plus objects you swap or wrap
ArchitectureWhere do domain, UI and I/O live?core logic knows nothing of the outside
Git storageHow does Git keep every version?immutable objects named by their hash
Git branches & mergingHow do two lines of work join?branches are pointers; merge uses the base

3. Five facts to remember

  • Depend on interfaces, not concrete classes: then parts can be swapped and tested alone.
  • Use inheritance only for a true is-a; composition lets behaviour mix freely.
  • Decorator, Proxy and Adapter all wrap an object; they differ in intent: add behaviour, control access, change the interface.
  • A Git commit points to one tree and its parent commits; every object is named by the hash of its content.
  • A branch is only a pointer. Rebase makes new commits with new hashes, so do not rebase history others already have.

See all software design pages in the index, or the other mind maps.