in the early days of software engineering, software configuration items were maintained as paper documents (or punched computer cards!),placed in file in folders or three-ring binders, and stored in metal cabinets. This approach was problematic for many reasons: (1) finding a configuration item when it was needed was often difficult, (2) determining which items were changed, when and by whom was often challenging, (3) constructing a new version of an existing program was time consuming and error prone, and (4) describing detailed or complex relationships between configuration items was virtually impossible.