Software configuration management (SCM) is all about organizing, controlling, and managing change in software as it evolves. As a discipline, SCM defines a process for change control. Unfortunately, SCM is often thought of as only necessary for really big software shops undertaking really big development projects. I say "unfortunately" because, in practice, the principles of SCM can--and should--be implemented in software projects of all sizes.
For instance, a couple of years ago I moved from a large-scale, distributed development team making software for digital TVs, to a small group responsible of the maintenance of an ERP system. With not much more than a compiler, I found myself responsible for a 400,000 lines-of-code Delphi 5 project that was the code base for five different products. In a perfect world I could have hired some large group of software engineers, bought management, estimation, version-control, defect and task-tracking, and automated testing tools. Unfortunately I didn't have resources, so I had to be careful in my selection. If there's one thing I've learned in the programming trenches, it is that you can survive with very few tools--a compiler, editor, and strong version-control system. Why version contro? Because you can take advantage of it to not only put your files under control, but also manage the efforts of the whole team.
So I pushed management and ended up getting Rational Clearcase LT, an entry-level SCM tool from IBM.