Design Note #1 - Software Size Matters

Software projects are often too large for any one person to understand completely.
Project Type - metric Small Project Large Project
Academic - line count 200 50,000
Academic - page count 4 1000
Academic - package count 1 50
Professional - line count 10,000 50,000,000
Professional - page count 200 1,000,000
Professional - package count 10 50,000

Conclusions for: Software Size Matters!

We should strive to reuse and salvage as much code as possible for each new project:
  1. Software reuse is important.
    Reuse means to use packages without changing any of their text.
    Compiler libraries are a good example. But we need to design our own code for reuse where that makes sense. We don't want to have to create 50,000 packages. The C++ language was designed to support reuse and we will examine how to tap into that support.
  2. Software salvage is important.
    Salvage means that we start with existing packages and extend them with additional packages, or modify them, as little as possible, to suit a new application.
    Salvage is harder to do gracefully than reuse. We will explore one elegant way to support salvage in Project #4.
Many of the design notes and issues we discuss in this course support management of large collections of packages that comprise a typical professional implementation, through reuse, salvage, and many other ideas we will discuss later.

CST strip