SCM工具的功能

转载 2005年04月26日 13:08:00

软件配置管理(Software Configuration Management (SCM)),它为软件开发提供了一套管理办法和活动原则,成为贯穿软件开发始终的重要质量保证活动。本文讨论SCM工具的功能。

需要说明的是,从学术上讲,软件配置管理(SCM)只是变更管理(Change Management(CM))的一个方面;但从SCM工具的发展来看,越来越多的SCM工具开始集成变更管理(CM)的功能,甚至问题跟踪(Defect Tracking)的功能。

一、权限控制(Access Control

 

 

 



权限控制对SCM工具来说至关重要。一方面,既然是团队开发,就可能需要限制某些成员的权限;特别是大项目往往牵扯到子项目外包,到最后联调阶段会涉及到很多不同的单位,更需要权限管理。另一方面,权限控制也减小了误操作的可能性,间接提高了SCM工具的可用性(Usability)。

现有的SCM工具,在权限控制方面差异很大,也说明了大家都在探索更有效的权限控制的方法。透过不同权限控制方法的差异,我们不难看到其共性:其核心概念是行为(Action)、行为主体、行为客体。

·
行为主体:即用户(User)。用户组(User Group)并不是行为主体,但它的引入大大方便了权限管理。

·
行为客体:即项目和项目成员(Member)。不管从SCM工具的开发者还是使用者的角度,项目和项目成员都是不同的行为客体。

·
行为:即由主体施加在客体之上的特定操作,签入和签出是再典型不过的例子。

三个核心概念搞清之后,就可以讨论权限的概念了。

权限是这样一个四元向量:(主体,客体,行为,布尔值)。即,主体在客体上施加某种行为是否被获准

由此看来,权限控制的基本工作就是负责维护主体集合、客体集合、行为集合、权限向量集合。其中,行为集合是固定不变的(在SCM工具开发之时已确定),其它三种集合都是动态变化的。

权限控制对SCM工具来说至关重要。一方面,既然是团队开发,就可能需要限制某些成员的权限;特别是大项目往往牵扯到子项目外包,到最后联调阶段会涉及到很多不同的单位,更需要权限管理。另一方面,权限控制也减小了误操作的可能性,间接提高了SCM工具的可用性(Usability)。

现有的SCM工具,在权限控制方面差异很大,也说明了大家都在探索更有效的权限控制的方法。透过不同权限控制方法的差异,我们不难看到其共性:其核心概念是行为(Action)、行为主体、行为客体。

·
行为主体:即用户(User)。用户组(User Group)并不是行为主体,但它的引入大大方便了权限管理。

·
行为客体:即项目和项目成员(Member)。不管从SCM工具的开发者还是使用者的角度,项目和项目成员都是不同的行为客体。

·
行为:即由主体施加在客体之上的特定操作,签入和签出是再典型不过的例子。

三个核心概念搞清之后,就可以讨论权限的概念了。

权限是这样一个四元向量:(主体,客体,行为,布尔值)。即,主体在客体上施加某种行为是否被获准

由此看来,权限控制的基本工作就是负责维护主体集合、客体集合、行为集合、权限向量集合。其中,行为集合是固定不变的(在SCM工具开发之时已确定),其它三种集合都是动态变化的。

二、版本控制(Version Control

 

 

 



SCM工具记录项目和文件的修改轨迹,跟踪修改信息,使软件开发工作以基线(Baseline)渐进方式完成,从而避免了软件开发不受控制的局面,使开发状态变得有序。

SCM
工具可以对同一文件的不同版本进行差异比较,可以恢复个别文件或整个项目的早期版本,使用户方便地得到升级和维护必需的程序和文档。

SCM
工具内部对版本的标识,采用了版本号(Version Number)方式,但对用户提供了多种途径来标识版本,被广泛应用的有版本号、标签(Label)和时间戳(Time Stamp)。多样灵活的标识手段,为用户提供了方便。

工具记录项目和文件的修改轨迹,跟踪修改信息,使软件开发工作以基线(Baseline)渐进方式完成,从而避免了软件开发不受控制的局面,使开发状态变得有序。

SCM
工具可以对同一文件的不同版本进行差异比较,可以恢复个别文件或整个项目的早期版本,使用户方便地得到升级和维护必需的程序和文档。

SCM
工具内部对版本的标识,采用了版本号(Version Number)方式,但对用户提供了多种途径来标识版本,被广泛应用的有版本号、标签(Label)和时间戳(Time Stamp)。多样灵活的标识手段,为用户提供了方便。

三、增强的版本控制(Enhanced Version Control

 

 

 



快照(Snapshot)和分支(Branch)以基本的版本控制功能为基础,使版本控制的功能又更进一步增强。

快照是比版本高一级的概念,它是项目中多个文件各自的当前版本的集合。快照使恢复项目的早期版本变得方便,它还支持批量签入(Check in)、批量签出(Check out)和批量加标签(Label)等操作。总之,快照是版本控制的一种增强,使版本控制更加方便高效。

分支允许用户创建独立的开发路径,我们认为分支的典型用途有二。第一,分支和合并(Merge)一起,是支持并行开发(Concurrent Development)的有力支持。第二,分支支持多版本开发,这对发布后的维护尤其有用。比如客户报告有打印bug,小组可能从某个还未引入打印bug的项目版本引出一个分支,最终分布一个bug修订版。分支是版本控制的另一种增强。

版本控制和增强的版本控制是SCM工具其它功能的基础。

快照(Snapshot)和分支(Branch)以基本的版本控制功能为基础,使版本控制的功能又更进一步增强。

快照是比版本高一级的概念,它是项目中多个文件各自的当前版本的集合。快照使恢复项目的早期版本变得方便,它还支持批量签入(Check in)、批量签出(Check out)和批量加标签(Label)等操作。总之,快照是版本控制的一种增强,使版本控制更加方便高效。

分支允许用户创建独立的开发路径,我们认为分支的典型用途有二。第一,分支和合并(Merge)一起,是支持并行开发(Concurrent Development)的有力支持。第二,分支支持多版本开发,这对发布后的维护尤其有用。比如客户报告有打印bug,小组可能从某个还未引入打印bug的项目版本引出一个分支,最终分布一个bug修订版。分支是版本控制的另一种增强。

版本控制和增强的版本控制是SCM工具其它功能的基础。

四、变更管理(Change Management

 

 

 



SCM工具提供有效的问题跟踪(Defect Tracking)和系统变更请求(System Change Requests (SCRs))管理。通过对软件生命周期各阶段所有的问题和变更请求进行跟踪记录,来支持团队成员报告(Report)、抓取(Capture)和跟踪(Track)与软件变更相关的问题,以此了解谁改变了什么,为什么改变。

变更管理有效地支持了不同开发人员之间,以及客户和开发人员之间的交流,避免了无序和各自为政的状态。

工具提供有效的问题跟踪(Defect Tracking)和系统变更请求(System Change Requests (SCRs))管理。通过对软件生命周期各阶段所有的问题和变更请求进行跟踪记录,来支持团队成员报告(Report)、抓取(Capture)和跟踪(Track)与软件变更相关的问题,以此了解谁改变了什么,为什么改变。

变更管理有效地支持了不同开发人员之间,以及客户和开发人员之间的交流,避免了无序和各自为政的状态。

五、独立的工作空间(Independent Workspaces

 

 

 



开发团队成员需要在开发项目上协同、并发地工作,这样可以大大提高软件开发的效率。沙箱(Sandbox)为并行开发提供了独立的工作空间,在有的SCM工具中也称为工作目录(Working Folder)。

使用沙箱(Sandbox),开发人员能够将所有必要的项目文件拷贝到私有的一个树型目录,修改在这些副本上进行。一旦对修改感到满意,就可以将修改合并(Merge)到开发主线(Main Line)上去;当然,如果该文件只有该成员一人修改,只需将修改过的文件签入(Check In)到主项目中即可。

并发和共享是同一事物的不同方面,并发的私有工作空间共享同一套主项目(Mater Project)文件,因此有必要让所有团队成员拥有得知项目当前状态的能力。SCM工具提供刷新(Refresh)操作,某位团队成员可以使其他团队成员在主项目文件上所做的变更,在自己沙箱的图形用户界面上反应出来。

开发团队成员需要在开发项目上协同、并发地工作,这样可以大大提高软件开发的效率。沙箱(Sandbox)为并行开发提供了独立的工作空间,在有的SCM工具中也称为工作目录(Working Folder)。

使用沙箱(Sandbox),开发人员能够将所有必要的项目文件拷贝到私有的一个树型目录,修改在这些副本上进行。一旦对修改感到满意,就可以将修改合并(Merge)到开发主线(Main Line)上去;当然,如果该文件只有该成员一人修改,只需将修改过的文件签入(Check In)到主项目中即可。

并发和共享是同一事物的不同方面,并发的私有工作空间共享同一套主项目(Mater Project)文件,因此有必要让所有团队成员拥有得知项目当前状态的能力。SCM工具提供刷新(Refresh)操作,某位团队成员可以使其他团队成员在主项目文件上所做的变更,在自己沙箱的图形用户界面上反应出来。

六、报告(Report

 

 

 



为保证项目按时完成,项目经理必须监控开发进程并对发生的问题迅速做出反应。报告功能使项目经理能够随时了解项目进展情况;通过图形化的报告,开发的瓶颈可以一目了然地被发现;标准的报告提供常用的项目信息,定制报告功能保证了拥有适合自己需求的信息。

为保证项目按时完成,项目经理必须监控开发进程并对发生的问题迅速做出反应。报告功能使项目经理能够随时了解项目进展情况;通过图形化的报告,开发的瓶颈可以一目了然地被发现;标准的报告提供常用的项目信息,定制报告功能保证了拥有适合自己需求的信息。

七、过程自动化(Process Automation

 

 

 



SCM工具使用事件触发机制(Event Trigger),即让一个事件触发另一个事件产生行为,来实现过程自动化。比如,让增加项目成员操作自动触发产生功能描述表(Form操作,开发人员填制该文件的功能描述表,规范开发过程。

过程自动化不仅可以缩短复杂任务的时间,提高了生产率,而且还规范了团队开发的过程,减少了混乱。

工具使用事件触发机制(Event Trigger),即让一个事件触发另一个事件产生行为,来实现过程自动化。比如,让增加项目成员操作自动触发产生功能描述表(Form操作,开发人员填制该文件的功能描述表,规范开发过程。

过程自动化不仅可以缩短复杂任务的时间,提高了生产率,而且还规范了团队开发的过程,减少了混乱。

八、管理项目的整个生命周期

 

 

 



从开发、测试、发布到发布后的维护,SCM工具的使命始于项目开发之初,终于产品淘汰之时SCM工具应预先提供典型的开发模式的模板,以减少用户的劳动;另一方面,也应支持用户自定义生命周期模式,以适应特殊开发需要。

从开发、测试、发布到发布后的维护,SCM工具的使命始于项目开发之初,终于产品淘汰之时SCM工具应预先提供典型的开发模式的模板,以减少用户的劳动;另一方面,也应支持用户自定义生命周期模式,以适应特殊开发需要。

九、与主流开发环境的集成

 

 

 



将版本控制功能与主流集成开发环境(IDE)集成,极大地方便了软件开发过程。从集成开发环境的角度看,版本控制是其一项新功能;从SCM工具的角度看,集成开发环境充当了沙箱的角色。

 

 

 

 

 

 

 

 

 

常见的10种配置管理工具

     配置管理工具是配置管理相关理论的实践载体,工具的功能范围在某种程度上可以直接影响一个组织中配置管理水平的高低。所以,选择一个符合自己组织的配置管理工具,是一些企业建立配置管理规程,实施配置管...
  • danadong
  • danadong
  • 2011年03月11日 11:01
  • 184

mvn scm 作用

http://mactruecolor.blogspot.hk/2010/10/maven2-scm.html Maven2 : SCM ...
  • caolaosanahnu
  • caolaosanahnu
  • 2012年08月30日 17:53
  • 3264

poll scm设置规则

MINUTE HOUR DOM MONTH DOWMINUTE 一小时内多少分钟(0-59)HOUR    一天内多少小时(0-23小时)DOM     一个月内多少天(1-31)MONTH  每月(...
  • zp522123428
  • zp522123428
  • 2016年12月29日 11:28
  • 2180

git-svn — 让git和svn协同工作 【工具版】

My company is using SVN to be code management tool. I have no rights to commit, and I must export th...
  • zzyymaggie
  • zzyymaggie
  • 2016年10月14日 17:14
  • 1344

SCM项目简介

项目目标:进销存 =〉供应链主要特点:1、系统以物料为核心;2、根据“两点一线,三方监控”的设计思想,即业务功能之间为一一对应的关系,财务进行第三方监控;3、利用状态机原理定义单个单据状态的变化,实现...
  • fly_cloud
  • fly_cloud
  • 2006年08月22日 10:49
  • 3550

SCM软件配置管理 (二) SVN管理平台搭建以及详细设置

由于在合作过程中提交时出现了覆盖新版文档情况以及版本混论的问题,这些问题是可以用SVN版本控制解决的,只不过没有把这个平台的真正作用发挥出来,当你经常为很多版本问题发愁时,你会感到SVN的功能强大,是...
  • lilongsheng1125
  • lilongsheng1125
  • 2012年08月21日 08:36
  • 3068

Jenkins 定时构建和Poll SCM的区别

最近在做Jenkins的自动构建,这两个参数是有区别的: Poll SCM:定时检查源码变更,如果有更新就checkout最新code下来,然后执行构建动作。   Build periodica...
  • rziqq
  • rziqq
  • 2016年11月17日 14:46
  • 1358

Xcode SCM系统 使用Git存储库机制之 学习笔记

一、简介 1.Git是所谓的“分布式SCM” ,不需要服务器(不管是否远程)就可以操作。是Xcode目前支持和集成两个著名的SCM系统之一。 2.与SVN的差别     在大部分情况下,最大的差...
  • kangguang
  • kangguang
  • 2016年05月24日 13:19
  • 714

SCM工具对比分析

软件配置管理的重要性已被大多数软件及相关企业所认识,而配置管理工具的使用是实施配置管理的重要部分。为帮助大家选择适合的SCM工具,本文对目前较为流行的配置管理工具VSS,CVS,ClearCase,S...
  • galaft
  • galaft
  • 2008年02月25日 10:49
  • 502

SCM软件配置管理

什么是软件配置管理(SCM)   软件配置管理是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。 (Softw...
  • startwithdp
  • startwithdp
  • 2011年12月28日 17:06
  • 3234
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SCM工具的功能
举报原因:
原因补充:

(最多只允许输入30个字)