Version Control Systems are systems which keep track of any kind of changes that take place in the code that the members of a software team create. Each change is being tracked down as a 'revision number' and as changes continue to increase then the revision numbers increase as well. By this way, this type of software management helps to go back in time and get a clear picture of how the code has evolved during time. Changes that take place in a software module can also be visualized with the help of graph theory where each change appears as node or point connected by lines with arrows showing the chronological relation between them. Some specific terminology exists which specifically describes the characteristics and the actions taking place in a VC System such as branch, checkout, clone, commit, conflict, merge, pull, push, tag, revision etc. All tracking changes are stored in database also called repository and one main characteristic that can differentiate a VC System from another is whether its repository is centralized or distributed.
From the all time classic waterfall up to agile, software teams always try to find the best solution to producing software effectively. The truth is that there is no silver bullet and that every methodology has its strong points always combined with the suitable team culture, mentality and project needs. However it seems like various agile approaches are dominating the software industry despite the fact they appeared as something completely different and revolutionary from what developers were already used to all those previous years.