最近在做机房收费系统的合作开发,在这个过程中我学习了SVN工具的使用,在此之前我们先了解一下的理论知识——SCM系统。下面时我对SCM系统理论知识的总结。
(一)SCM是什么?
SCM(Software Configuration Management),软件配置管理。说的更直白点,就是版本的控制。它是一门用来记录并控制软件产品数据的管理工具。
(二)SCM主要解决什么问题?
开发人员进行合作的时候,会出各种各样的问题。
1)开发工程师
开发过程中,开发工程师要修改源文件,但是不知道哪个是最新的。版本在A那,还是在B那,是控制不了的;
Make时,经常有错文件的版本。Make,就是最后把大家的工作结果集中到一起,然后做一个完成的编译;
多人修改一个文件,有些人的结果被冲掉了。
程序误删了,只能重写。SCM可以帮我们做好备份;
花了一段时间,终于查出了一个错误,但发现有个同事上周前已经修改过了同样的错误,但是我不知道,造成浪费,这也是所以的“知识管理”不够。
2)项目经理
整个项目由若干部分组成,项目有初期各人做各人的一部分,后期合并连调,但是整个周期很长,达数周甚至数月,开销非常大;
调试过程中,经常出现"扯皮",搞不清楚哪的问题。
版本太多,有的太旧,查看不方便。
估计项目成员的工作进度和工作成果比较困难。
3)老板
交付给用户的产品“缺斤少两”,用户在安装时才发现问题。
用户使用时发现的问题不能够即使得到解决。
不能确切了解项目的进度,总是得到“差不多”“大概”之类的模糊回答。
公司的运作过程无法控制,“不按我说的做”。
总而言之,在开发过程中,源码控制的不是特别的好,你的知识控制的不是特别的好,对于开发工程师,对于项目经理,对于老板都会有各种各样的问题。而SCM系统就是为了解决这些问题的。
(三)SCM功能
核心功能,记录开发历史,即版本控制。
对于版本控制(Version Control),我们要知道它的几个基本概念。如Repository:仓库,主要由开发经理建立。Workspace:工作台。Delta:主要记录版本之间的差别,版本主要分项目版本和文件版本。Baseline(Head):基线,最开始的版本可以认为时基线。Branch:分支。Label(Tag):标签,比如版本发布的时候,我们会给版本打标签,如release 1.0, release1.1……。
SCM除了Version Control功能外,还有其它很多功能,比如:
Access Contorl:控制大家对特定资源的访问权限。
Release Control:发布管理。
Process Contorl:对于真个软件过程的控制。
Build and release system:主要值自动化构建系统。
Coordination:SCM系也具备了团队协作的功能。
(四)SCM系统的用户
SCM系统有哪些人会用?主要有项目经理、开发工程师、质量控制部门(如测试经理)、测试人员、构建经理。
(五)SCM的好处:解决了在合作开发过程中的各种问题,在这里就不赘述。
(六)SCM的工具:SCM的工具很多,现在最常用的工具是:SVN.
下面我在通过一张图对SCM系统理论知识点做个总结: