Reorganizing the project

Now that we have some ideas of good project architecture, let's plan the project's reorganization. Let's list the possible workshop organization methods:

The by type organization should be used for workshop nuts and bolts type components. Nuts and bolts are highly uniform components that have a different diameter, length, grade, and so on. We have a few good matches here, so let's list objects and interfaces that could be grouped this way:

The by purpose organization should be used for miscellaneous tools that have a common purpose. We have some good candidates for this style of organization, too:

The by layer organization should be used for distinct architectural components that fit well within normal program logic. An example of this would be our physics layer, which is logically independent of other modules. The physics layer exists solely to store constants, formulas, and modeling procedures. Here, we group this by layer:

The by convenience organization should be used for common or difficult components. Executables are a good fit for this type of organization because they are always an endpoint, not a library, and don't typically fit into any other organization well: