A software blueprint is the final product of a software blueprinting process. Its name derives from an analogy with the term blueprint as used within the traditional construction industry. Therefore, a true software blueprint should share a number of key properties with its building-blueprint counterpart. Software blueprinting relies on achieving a clean separation between logically orthogonal aspects of the software. Once that is achieved, it facilitates the localization of related logic and use of an optimal description medium for each of the logically independent components (for each blueprint).