中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 未整理篇
软件配置管理可行性报告
作者:moonet 时间:2003-02-04 11:07 出处:互联网 责编:chinaitpower
              摘要:软件配置管理可行性报告

1       关于本文档

详细的描述在推行软件配置管理的可行性,以及各类软件配置工具的比较,结合本中心的实际特点,分析适合本中心使用的软件配置工具。

 

本文档由陆国暾撰写,要详尽了解相关软件配置工具的具体性能数据,请参阅该软件出品公司技术文档。

2       现状简述

现有的软件配置管理工具(SCM Tools)大致有如下几个品种:

(1)    IBM—ClearCase (CC);

(2)    Microsoft—Visual Source Safe (VSS);

(3)    Borland—StarTeam (ST)

(4)    Open Source--Concurrent Versions System (CVS);

(5)    Hansky—Firefly;

该份可行性报告即为以上5种配置管理工具的评估报告,其侧重点针对本中心的实际情况,结合各个开发部门的操作系统,开发流程,项目规模,易用性,价格,与其他管理系统的良好的结合性等等方面来进行考虑。

进行软件配置管理的目的:

一、权限控制(Access Control
  权限控制对SCM工具来说至关重要。一方面,既然是团队开发,就可能需要限制某些成员的权限;特别是大项目往往牵扯到子项目外包,到最后联调阶段会涉及到很多不同的单位,更需要权限管理。另一方面,权限控制也减小了误操作的可能性,间接提高了SCM工具的可用性(Usability)。
  现有的SCM工具,在权限控制方面差异很大,也说明了大家都在探索更有效的权限控制的方法。透过不同权限控制方法的差异,我们不难看到其共性:其核心概念是行为(Action)、行为主体、行为客体。
  行为主体:即用户(User)。用户组(User Group)并不是行为主体,但它的引入大大方便了权限管理。
  行为客体:即项目和项目成员(Member)。不管从SCM工具的开发者还是使用者的角度,项目和项目成员都是不同的行为客体。
  行为:即由主体施加在客体之上的特定操作,签入和签出是再典型不过的例子。
  三个核心概念搞清之后,就可以讨论权限的概念了。
  权限是这样一个四元向量:(主体,客体,行为,布尔值)。即,主体在客体上施加某种行为是否被获准
  由此看来,权限控制的基本工作就是负责维护主体集合、客体集合、行为集合、权限向量集合。其中,行为集合是固定不变的(在SCM工具开发之时已确定),其它三种集合都是动态变化的。
二、版本控制(Version Control
  SCM工具记录项目和文件的修改轨迹,跟踪修改信息,使软件开发工作以基线(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工具其它功能的基础。
四、变更管理(Change Management
  SCM工具提供有效的问题跟踪(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)操作,某位团队成员可以使其他团队成员在主项目文件上所做的变更,在自己沙箱的图形用户界面上反应出来。
六、报告(Report
  为保证项目按时完成,项目经理必须监控开发进程并对发生的问题迅速做出反应。报告功能使项目经理能够随时了解项目进展情况;通过图形化的报告,开发的瓶颈可以一目了然地被发现;标准的报告提供常用的项目信息,定制报告功能保证了拥有适合自己需求的信息。
七、过程自动化(Process Automation
  SCM工具使用事件触发机制(Event Trigger),即让一个事件触发另一个事件产生行为,来实现过程自动化。比如,让增加项目成员操作自动触发产生功能描述表(Form操作,开发人员填制该文件的功能描述表,规范开发过程。
  过程自动化不仅可以缩短复杂任务的时间,提高了生产率,而且还规范了团队开发的过程,减少了混乱。
八、管理项目的整个生命周期
  从开发、测试、发布到发布后的维护,SCM工具的使命始于项目开发之初,终于产品淘汰之时SCM工具应预先提供典型的开发模式的模板,以减少用户的劳动;另一方面,也应支持用户自定义生命周期模式,以适应特殊开发需要。
九、与主流开发环境的集成
  将版本控制功能与主流集成开发环境(IDE)集成,极大地方便了软件开发过程。从集成开发环境的角度看,版本控制是其一项新功能;从SCM工具的角度看,集成开发环境充当了沙箱的角色。

3       产品比较

陆国暾根据本中心的具体情况,结合各个产品的特性和自身使用情况,特对个产品横向比较如下:

(红色代表经考察对于本中心特别重要的需求)

 

Firefly

ClearCase

CVS

StarTeam

VSS

体系结构和安全性

采用C/S模式,后台采用数据库存储,存储目录不用共享,对客户端不透明,客户端不可直接访问存储目录,安全性较好

采用C/S模式,需要共享服务器上的存储目录以供客户端访问,这将带来一定安全隐患,公司必须建立域。

采用C/S 模式,不需要共享服务器上的存储目录,安全性较好

 

基于文件系统,使用NFS/SMB,后台使用文件系统共享,需要共享存储目录,这将带来一定安全隐患

访问服务器增量存储

快速,只上下传文件的增量,包括文本格式和二进制格式

支持文本格式文件增量存储,以完全拷贝形式保存二进制文件(有争议,内部说法不一致)

支持文本格式文件增量存储,以完全拷贝形式保存二进制文件

 

慢,使用远程文件访问方式,不能实现增量传输。当在大项目中使用时问题尤为突出

本地操作

快速

快速

快速

快速

快速

与开发工具集成

与常见开发工具无缝集成

直接与资源管理器集成,十分易用

对开发工具集成性较差

Borland开发工具集成较好

Visual Studio开发工具包无缝连接,其它开发工具集成性差

异地开发支持

提供ServerSync 模块,通过自动或手动同步位于不同开发地点的存储库的方式,支持异地开发

提供MultiSite 模块,通过自动或手动同步位于不同开发地点的存储库的方式,支持异地开发

支持异地开发,但是支持程度不明

 

不支持

权限管理和备份

方便的管理界面,采用类似与NTFS的权限管理方法,可以针对项目、目录或文件设置用户和组的访问全权限,自带增量备份/恢复功能

方便的管理界面,权限可分组,主要由系统管理员进行管理,需要使用第三方备份工具,但是有一定的规则支持

权限可分组,主要由系统管理员进行管理,需要使用第三方备份工具

 

只有用户,没有组的概念,权限设置管理工作量巨大,且不方便,需要采用第三方备份工具

平台支持

平台移植性好,支持绝大多数硬件平台和操作系统

平台移植性好,支持绝大多数硬件平台和操作系统

平台移植性好,支持绝大多数硬件平台和操作系统

 

只支持Windows平台

系统资源

性能好,对服务器要求不高

服务器采用多进程机制,使用自带多版本文件系统MVFS,对性能有较大负面影响。做为一款企业级、全面的开发配置管理工具,适用于大型开发团队

较高的运行性能,适用于各种级别的开发团队

 

需要高端服务器,且对硬盘空间要求高,相对功能单一、简陋,适用于几个人的小型团队,在数据量不大的情况下,性能可以接受

原子事务处理

支持原子事务处理,保证数据的一致性

支持原子事务处理,保证数据的一致性

不支持

 

不支持

变更集及变更管理

支持变更集的概念,并且可以和Hansky的变更管理工具Butterfly完全集成

支持变更集的概念,并且可以和Rational的变更管理工具ClearQuest完全集成

不支持

 

不支持

命令行界面

提供所有功能的命令行操作,这是实现每天Build的基本条件

支持 Build管理,能够确认到每个版本build出来的文件是由哪些源代码生成的

支持命令行界面,但是不支持build管理

 

只能实现少数功能

脱机版本保存

可以保存脱机后文件修改的所有历史版本,并能上传回服务器

能脱机开发,只支持最后一个版本上传回服务器

能脱机开发,只支持最后一个版本上传回服务器

 

不支持

分支及并行开发

采用工作空间的方式,简便创建分支、标签,实现并行开发

采用工作空间的方式,简便创建无限分支、标签,实现并行开发

支持分支,支持并行开发,但是模式简单

 

支持分支,但分支层次有限,使用不便,不支持并行开发

文件的重命名和移动

完全支持,使用简便,且保存所有历史纪录

完全支持

不支持

 

难以保留历史记录

版本树浏览

图形化的版本树浏览窗口,用户可以直观地看到文件的版本历史,并进行版本比较

图形化的版本树浏览窗口,用户可以直观地看到文件的版本历史,并进行版本比较

不支持

 

不支持

Web界面访问

WEB用户界面,可以浏览工作空间的结构、历史,查看文件历史,进行文件比较等

可以浏览工作空间的结构、历史,查看文件历史,进行文件比较等

不支持

 

不支持

扩展性

能支持大规模开发

能支持大规模开发

能支持大规模开发

能支持大规模开发

无法支持大团队、大项目的开发

报告功能

提供配置报告及历史变更报告的自动生成功能,为CMM提供有力的支持

提供基本的简单报告,如需更详细正规的报告需要购买SODA

不支持