Software configuration management (SCM) is the process of managing changes to software code throughout the development lifecycle. SCM tools provide version control, tracking of code changes, and facilitate collaboration between developers. Key SCM concepts include configuration items, change requests, versions, promotions, and releases. SCM activities involve configuration identification, control of changes, tracking configuration status, auditing, and management of the development environment and process. Common SCM tools include SVN, CVS, Perforce, Clearcase, and TFS.