UML软件工程组织

应用Microsoft Visual SourceSafe组织软件开发项目
微软公司提供

 

摘要

  专业的软件开发需要对在开发过程中每一应用程序的源代码修改的管理进行流水线处理。Microsoft_ Visual SourceSafe?记录了系统、项目和文件级修改的历史记录,允许你安全的在多个程序员之间分配开发工作,跟踪修改信息,并恢复个别文件或整个应用程序的早期版本。

简介

  代码是宝贵的资源。为了保护它,很多开发者应用一些版本控制系统以保护文件避免未授权的修改和意外的错误。这些系统有很多种,从有关程序注释的更改和存储旧版本的君子协定到自动跟踪修改和历史记录的复杂的软件系统都有。

  大多数来源控制系统对于单独的源文件是有效的。但是,它们几乎全部不能在文件间建立关系。这在Microsoft Windows的环境中将引起问题,因为在该环境中,一个应用程序可以包含多个可执行文件和由许多不同的源文件建立的动态连接库,它们有可能在很多其它应用程序中重复使用。当今,管理源文件间的关系和保护源文件的内容本身同样重要。

  Microsoft Visual SourceSafe 版本控制软件通过将项目管理的任务和源代码的控制结合起来,解决了这个问题。以注重在管理源文件的同时管理项目,Visual SourceSafe提供了对该问题的优秀的解决方案,是用标准的、面向文件的来源控制系统不易实现的。

软件开发流水线

  为了理解面向项目的来源控制的优点,仅需将它和面向文件的系统进行一下比较。一个标准的版本控制系统(例如,UNIX工具RCS)必然是一组用于操作独立的文件、控制文件访问和更新并与早期版本比较的工具的集合。为了操作一组文件,你需要编写一个批文件或在命令行指定通配符。

  Microsoft Visual SourceSafe将文件存储在网络的中心数据库中,而不是在一个普通的DOS目录中。在系统级,该数据库表现为一个“黑盒”。但是,当以Visual SourceSafe为视图时,可以看到该数据库中包含了你的组织到项目分层结构中的所有源文件和历史记录。

  当你检索一个文件时,Visual SourceSafe将在数据库中标记该文件为签出,然后允许你在你的机器上对该文件进行修改。当你将该文件放回时,Visual SourceSafe更新它的数据库并重新修改你的机器对文件的访问权限为只读。

  然而,这和面向文件的来源控制有什么不同呢?

  对于每一个改变,Visual SourceSafe数据库记录并追踪那些对于面向文件的系统不可用的项目信息。每当文件被加入,修改,共享,移动,或从项目中删除,Visual SourceSafe将同时更新文件和项目的历史记录。你可以应用项目历史记录来简化这些工作:

  在连编前浏览指定项目及其全部子项目中所有文件的状态。 ? 缩小那些由于在某一日期联编可能引起错误的指定文件的改变信息。

  重新生成所有应用程序的前一版本。

  维护被许多不同应用程序共享的源文件。

  确定哪一个项目将由于改变被多个不同应用程序共享的文件而受到影响。

  管理通用应用程序的特定客户版本。

  对于软件开发人员来说,试图通过面向文件的系统来完成这些工作,将是令人难以忍受的琐碎且无益的。正如下述的方案所阐述的那样,Visual SourceSafe面向项目的版本控制通过直接进行这些工作,将开发过程流水线化了。

为连编做准备

  假定你将连编一个包含了很多独立的部件的主应用程序。在你开始连编之前,你希望确认没有人在最后的时刻修改代码,并且在版本控制过程中,整个系统没有文件被签出。

  一个标准的版本控制系统提供给你一个确定文件是否签出的工具。你的工作是对将用来连编的每一个目录中的每一个文件运行该工具。尽管引入批处理文件和通配符将使任务简单些,但面对一个复杂的系统时,仍然是非常繁琐的。

  正如其它系统一样,Visual SourceSafe可以确定一个文件是否被签出。但它还可以创建一个高层的报告:一个项目中所有签出文件的列表。这一特性应用在当前项目中循环包含所有子项目时功能尤其强大。Visual SourceSafe检查每个相关项目中的每一个文件并生成签出文件的列表。你可以立即知道是否可以进行连编(或如果你不能时该找谁)。仅需在项目文件中执行一个命令,Visual SourceSafe就可以自动完成以前冗长的需手工完成的工作。

精确回归

  包括Visual SourceSafe在内的所有版本控制系统都有文件历史记录报告。文件历史记录报告中列出了从最新的到最旧的每一个文件版本,包含诸如对文件进行了什么操作,谁做的,什么时候完成的和进行了什么备注说明等信息。

  尽管文件历史记录非常有用,但它们也有一些缺陷。例如,假定一个特性在上个星期还可以正常工作,但在这个星期连编你的应用程序时出了问题。显然,最近有人引入了这个错误,但是在哪一个文件中呢?

  在标准的版本控制系统中解决这个问题,你需要为一个象是有错误的文件生成一个历史记录报告,看是否它最近被修改过,并浏览修改情况。如果你没有找到错误,你就要选取另一个文件进行检查,如此类推。你可能用这种方法查遍了系统中的所有文件但没有找到关键的修改──因为事实上这个修改是增加或删除文件,而标准的版本控制系统根本不追踪这样的操作!

  在Visual SourceSafe中,你通过项目本身生成报告。例如,它可能报告COMMON.BAS刚被修改;在此之前,OPENALL.FRM被修改过;此前,FILESUPP.BAS被增加到项目中;诸如此类。Visual SourceSafe整理这些否则你将手工完成检索的修改信息,允许你浏览上个星期的全部修改的顺序。这将节省你很多的时间并帮助你避免陷入困境。

重新创建前一项目版本

  通过检索项目的历史记录,Visual SourceSafe允许你快速重新创建整个应用程序的前一版本。这将帮助你解决在前一版本中报告的错误,并确认它们在当前开发的新版本中已解决。

  例如,假定一个用户报告应用程序版本2.03中有一个打印问题。应用程序的该版本可能包含一个文件版本为10,另一个文件版本为15,诸如此类;但你不必担心这些。从Visual SourceSafe中请求一个指定的项目版本,你便可以还原一个完全的、用于连编2.03版本的应用程序源文件的本地的副本。

  若应用标准的版本控制系统完成这些工作,你或者必须将应用程序的每一个发行版本的来源独立存档或者需对每一个版本搜索指定的文件。这两种方法中,为前一次连编恢复正确的源文件都是一件烦人的手工的过程─ 一项可能被取消或推迟的工作。

维护可重用代码

  大多数应用程序是在一个公共的核心代码的基础上开发的。这些文件在很多不同的应用程序中一次又一次的被使用并随着时间不断完善,得到错误修复,性能提高,和新的特性。应用现存的代码的好处是巨大的,但在处理组织问题时仍然是件另人头疼的事。你必须记住文件被哪些应用程序使用,并将每一个修改信息传送到所有恰当的地方。当有五个应用程序重用一个文件时,这还只是小麻烦,当有二十个应用程序混合在一起并与五十个不同的重用文件相配时,麻烦就大了。

  一个标准的版本控制系统在这个问题上根本帮不上忙,因为一个源文件可同时存在于多个不同的项目中。但Visual SourceSafe可以自动完成这一切。在它的数据库中,Visual SourceSafe对每一个文件只存储一次。每个项目文件包含了一个拥有指向数据库中文件位置的指针的文件。对于每一个项目,所有版本的文件都是可用的;同时一个项目可以“冻结”一个文件的版本,以避免当其它开发工作组在可重用代码上工作时引入错误。

  举一个普遍的例子,假定你有一个包含了多个不同打印报告进程的源文件。在Visual SourceSafe中,每个需要打印报告的应用程序均需要共享该文件。如果你发现了一个错误,你可以从任何一个项目中更新文件─这一改变信息将立即传送到每一个共享该文件的项目中。Visual SourceSafe可以报告哪些项目共享了该文件,于是你就知道哪些应用程序受到了影响并需要重新连编。

创建特定用户版本

  另一个普遍的来源控制问题是关于用户的,他们期望定制应用程序以满足他们特定的需要。本来,你有很多不同的应用程序,他们共享几乎全部的相同的源文件。应用标准来源控制工具,追踪错误并保持连编的连续性的时间将比编程所花费的时间还多。应用Visual SourceSafe,你为每个新用户创建一个项目,指明哪些文件是共享的和哪些文件是独享的。当你在一个项目中工作时,对于特定用户的改变信息将保留在当前的项目中,而对于共享文件的修改将传送到所有用户版本。



版权所有:UML软件工程组织