1.软件工程需要版本控制
从事软件开发工作的人们都理解软件工程的重要性,而且还明白软件开发的基本步骤,传统的瀑布模型由需求分析、系统设计、结构设计、详细设计、编码、调试和维护七个阶段组成。其他的各种模型其实都可以说是由此派生而成,无非在某一阶段上增加一定的反馈而已。这七个阶段的产物是大量的文档和代码,如果说人们能一次就把文档和代码无差错的生产,那么在软件开发纵向来说,版本控制就没有存在的必要了。但是,人们在每一个阶段都不免由于认识上的不同,理解上的差异,主观与客观的诸多因素,使得我们的软件并不那么完善。因此,在来自用户、开发人员的不断反馈中,我们的各个阶段的文档就有了不同的版本,增加了、更改完善了各种各样的功能,从而也影响了我们的代码,增加完善了许多。有时我们的决定是错误的,需要在某个阶段上重新开始。因此,版本的保留在一定的时间里是必不可少的。(中国软件工程网)
2.产品需要版本控制
成熟的产品不是单一的,其必然是系列化、多样化的。象摩托罗拉的手机,从模拟到数字,有若干个系列,几十个品种,在众多的产品背面,软件是大同小异,如果每一个品种需要独立的重新开发,其耗资是巨大而难以估算的,由于品种之间有着许多的共同之处,其软件也有许多是可以重用的,差异不过是各个品种之间的特性而言。软件的重用性早已为人们所重视,流行的面向对象方法最关注的就是文档的可重用性,但是我们说不光是代码,更重要的是文档的可重用性。软件的定义是文档加上代码,二者的可重用性使得产品大大缩短了其开发周期,提高了产品的竞争力,重用的概念不仅是立刻拿来就用,更重要的是拿来改一改就可用,因为后者提供了新的特性,这正是用户愿意花钱的地方。(中国软件工程网)
3.软件的重用需要版本控制
重用通常就是在某一个版本上做的,如果不固定在某一个版本上某产品继续向前分层,而新产品可能就产生与这产品相冲突的内容。多个不同的产品分别分层起来后,我们的维护工作如果没有版本的保证,就会变得无的放失。某一缺陷可能仅对某一产品某一版本存在。软件包括文档和代码二部分,文档工作对于成熟的产品开发来说,共享的重要性不言而喻。我们只有把菜谱写下来,才能让别人来做同样的蛋糕,甚至加些果仁什么的,变化一下成为新的系列,文档的重用在软件开发中是至关重要的。重用文档,我们当然可以把文档拷贝到新文件中,再增删一些内容,但是这回丢失许多的信息,如谁改的,改了什么地方,至少你已经通篇比较一下原文才能得知改动所在,众多的版本控制软件在代码的这种diff修改上都能做得很好,但是在文档上,却做得尚不如人意,ClearCase和FrameMaker都能够在这方向给开发者提供很好的帮助。(中国软件工程网)
4.代码需要版本控制
我们再来看以下代码,人们一般只关心的是源代码,源代码的版本控制重要性是显而易见的 。在开发阶段,版本控制能带来重用,而在维护阶段,又能给我们带来相对稳定的平面。其实,版本控制同样对目标代码有效,有MAKE使用经验的人也许已经意识到这就是一种目标码的版本控制,只有最新的版本,或称修改目的版本我们才对其进行编译。这对我们来说节约了无数的宝贵的开发时间,对一个大型软件尤其如摩托罗拉的手机软件,五六千个文件来说,其意义是巨大的,版本控制对于目标码来说还有一层更复杂的含义,由于并行开发的可能,不同的程序员面对的是不同的项目,其关心的非常可能就是同一源文件的不同版本。当两人分别或同时编译时,哪一个文件有效?当然是两个版本都有效。这时,版本控制需要提供这种复杂的编译机制,使得不同的设计人员能得到其要求的对应输出,并且又能利用上可能此前曾关心过同一文件版本的人员编译的结果,从而节约编译的时间和减少系统资源的占用。
5.并行开发需要版本控制
大型企业,特别是跨国企业,往往需要充分利用上各地人员知识的优势,同时又使研究的费用支出减少至最低,因此存在着并行开发的需要,开发人员需要工作在最新的开发结果上,共享各方的资源,有序而高校地同步开发着各自相关的部分,这种全球化广域的开发模式要求版本能得以更有效的控制,ClearCase的Multisite在此提供了有效的支持。(中国软件工程网)