-
Physical Design
Posted on March 18th, 2009 No commentsOne of the most important but underrated aspects of a large C++ project is its physical design. The logical design could be the most beautiful thing in the world, yet the physical design can still slow your builds down and generate confusion in a project. You could for instance “modularise” a project by separating it into several DLL’s but still have it heavily coupled due to poorly defined and implemented interfaces.
More often a poor physical design reflects a poor logical design.
What is the physical design?
The physical design consists of all the physical aspects of the project
- The physical files and directories of the project.
- How they are divided into modules or libraries.
- The dependencies between the files and modules.
Why does the physical design get neglected?
I can understand why this gets neglected so often. Once it’s ingrained it is a hard and thankless job to refactor the design. For small projects the physical design really doesn’t matter much. As the project grows it tends to get neglected while everyone concentrates on adding new features. But once your project gets large enough you can really benefit from a good project setup.
How do we rectify this situation?
- Detect dependencies early and often.
- Have standards in place for the file and project layout.
- Review the design occasionally.
I’ll write more about the specifics in follow up posts.
Leave a reply


