Usually software development doesn’t imply the use of any version control system. All other approaches could be applied or not to individual projects. It dependents on the specifics of developed system, on many other factors, the most important of which, in our opinion, ability to control all the approaches, availability of necessary skills and resources and quality of the developed system.
There is a separate discipline of software engineering, which deals with this kind of organizational objectives without any reference to methodology — it is a configuration management. Configuration Management is a core discipline that helps to manage and control requirements specification, the process of software project development and information on the status of individual tasks and the entire project as a unit. The project success largely depends on how the process of configuration management was streamlined. On the one hand it can save the project, but on the other hand it can bury it.
Glossary of IEEE 610 describes configuration management as “a discipline applying technical and administrative direction and surveillance to: identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements”.
But it’s a rather formal definition. The following software and tools that programmers face on duty every day will allow you to understand how this definition works in practice:
- Subversion; CVS; Git; Mercurial; Bazaar; Microsoft Visual SourceSafe; ClearCase; Perforce.
- Ant; Nant; Maven; Phing; make; nmake; Cmake; MSBuild; Rake.
- JUnit; NUnit; CPPUnit; DUnit; PHPUnit; PyUnit; Test:: Unit; vbUnit; JsUnit.
- PMD; FxCop; PHP_CodeSniffer; PyChecker, lint.
- JavaDoc; phpDocumentor; CppDoc; RDoc; PyDoc; NDoc; Doxygen.
- CruiseControl; CruiseControl.NET; TeamCity; xinc; Atlassian Bamboo; Hudson.
- Jira, Trac, Mantis, Bugzilla, TrackStudio.
I hope this information was useful for at least some of you and will highly appreciate comments and any other kind of feedback.