In Understand, architectures are a way to map an abstract hierarchy onto your source code files. Architectures can be a great way to reorganize your code in a way that makes sense to you. For example, you can organize your code based on the engineer that owns it, by code requirements, by the functionality of what that code does, or any other organization strategy that makes sense for you. This gives you the freedom to use your code outside of the traditional directory structure, and interact with it a new and creative ways. 


Let’s take a look at a few simple examples using the ‘fastgrep’ sample project that ships with Understand. 


By default, Understand creates a Directory Structure architecture that mimics how the files are on the file system. However, let’s say I wanted to associate each file with the engineer that works on it the most. I can create a new Staff architecture hierarchy that reflects that using the menu item Architectures -> Design Architecture -> New Architecture.


Or I can make an architecture that organizes the code by major functionality.


And these aren’t exclusive, you can have as many architectures in a project as you wish, they coexist nicely together. 


Once you have these architectures created, you can do many things, such as view the functional dependencies between the API and the database 


Or you can report metrics information such as which engineers are working on the largest or most complex code sets: 

Most popular, if not as pretty, you can export the metrics for these architectures for use in your favorite spreadsheet program. 


These are just a few of the things you can do with architectures, and are very simplified examples. You can make architectures as complex as your team needs, and can even automate the creation by using your favorite scripting language to generate an XML file. Dive in and play with architectures, and you may soon by asking how you ever lived without them!