1支持CMM/CMMI
软件配置管理是CMM/CMMI二级的一个重要KPA,是CMM三、四、五级的基础。SCM系统应该能够支持制定SCMP、用户自定义SCM流程、变更控制并提供配置状态报告自动生成等SCM基本功能,可以根据用户的需求生成整个项目或项目在某一段时间内的相应报告文件。
2跨平台
现代的SCM系统应该能够支持如Windows 98,Window NT,Windows 2000,Linux,Solaris,HP-UX,IBM AIX等目前开发人员、管理人员使用得最多的平台。对于使用多个不同的平台进行软件开发、测试、运行的公司来说,一个统一、支持多平台的SCM系统是最理想的。如果使用的SCM系统只支持单一平台,那么势必给开发、测试、发布的各环节带来很大的不便,大量的时间将被浪费于代码的手工上传、下载中。
3并发和串行的版本控制
现代的SCM系统应该支持多用户并行开发,支持基于Copy-Modify-Merge(拷贝、修改、合并) 的并行开发模式和基于Lock-Unlock-Lock(锁定-解锁-锁定)的串行开发模式。使用第一种方法,团队的开发人员之间无须好象排队一样等待修改代码;使用第二种方法,团队的开发人员无需好像到处救火一样地解决合并过程产生的冲突。开发人员可以并行开发、更改代码。
4支持异地开发
现代的SCM系统应该能够通过同步不同开发地点的存储库,支持异地开发。提供多种同步方式:直连网络同步、存储介质同步、文件传输同步(FTP、Email 附件)等,而且同步的内容可以预先定制,例如同步整个项目,或者同步项目中的某一些选定分支。
5备份/恢复功能
现代的SCM系统应该自带备份/恢复功能,而无需采用第三方的工具、无需数据库维护人员开发备份程序。备份方式应该灵活多样,可以选择完整备份或增量备份,节省时间和开销;恢复功能可以完全自动实现。
6基于浏览器用户界面
现代的SCM系统应该可以通过浏览器用户界面浏览所有的项目信息,诸如项目的基本信息,项目的历史,项目中的文件,文件不同版本的对比,文件的历史记录、变更请求/问题报告的状态等。
7图形化用户界面
现代的SCM系统不仅应该提供浏览器用户界面和基于命令行的使用界面(CLI),同时也应该提供了图形化的用户界面(GUI)。这是现代的SCM系统最基本的要求。
8处理二进制文件
现代的SCM系统不仅应该能够处理文本文件,还可以管理二进制文件,而且对于二进制文件也能够实现增量传输、增量存储,节省存储空间,降低对网络环境的要求。
9支持企业级的SCM
现代的SCM系统应该面向企业,而不仅仅是某一个软件项目组。要能够有效地支持大规模的团队协同工作。
10基于TCP/IP 协议,支持不同的LAN或WAN
现代的SCM系统的客户端和服务器端的程序通过TCP/IP 协议通信,而无须依赖于象NFS或者通过域来共享文件系统,因此能在任何局域网(LAN)或广域网(WAN)中正常工作。一旦将文件从服务器上复制到用户自己的机器上,普通的用户操作无需访问网络,如编译、删除、移动。现代的SCM系统应支持支持脱机工作、移动办公。在不同的网络环境、无论在什么样的操作系统下,所有客户端程序和服务器端程序都是兼容的。
11高效率
现代的SCM系统应该具有一个的良好的体系结构,使得它的运行速度很快。现代的SCM系统因该把传输的数据量控制到最小,从而节省网络带宽,提高速度。例如,在传输文件时,仅仅传输文件被修改的部分,即文件增量(Delta)。
12高可伸缩性
现代的SCM系统应该具有良好的可伸缩性(Scalability)。随着企业规模扩大,现代的SCM系统因该依然能正常工作。SCM系统的工作性能不应该因为数据的增加而受影响。
13高安全性
现代的SCM系统应该能有效防止病毒攻击和网络非法拷贝;应该支持身份验证和访问控制。能对项目的权限进行配置,例如检入、检出、查看等操作。这些都能帮助企业保护机密数据。
14支持Email 通知
现代的SCM系统应该能够支持Email通知。这样,当一个开发人员做了一些修改,系统可以自动通知其他相关人员。
15和常用IDE集成
现代的SCM系统应该能够支持Microsoft的SCC API(源代码控制API),用户能够在支持SCC API 的开发环境,如Visual Studio、Visual .NET、PowerBuilder 等中直接使用SCM工具进行配置管理。
16支持变更控制
现代的SCM系统应该能够支持对变更请求和问题报告的管理,而不应将变更管理和配置管理人为地隔离开来。变更管理是一个系统,而配置管理又是一个系统,这样做只会给用户带来更多地麻烦,而且也不符合CMM标准。
17支持软件“三库”管理
在GB 12505-90中,明确提出了软件“三库”的概念。“三库”包括开发库、受控库和产品库。从CMM的角度来看,对开发库的管理并没有要求,但是对受控库和产品库是需要进行管理的。现代的SCM系统应该能将三库统一起来,并支持不同级别的管理。