MD5软件在版本控制中的应用研究
2016-10-19李韩芬张家凤
李韩芬,张家凤,陈 莹
(中国电子科技集团公司 第二十八研究所,江苏 南京 210007)
MD5软件在版本控制中的应用研究
李韩芬,张家凤,陈莹
(中国电子科技集团公司 第二十八研究所,江苏 南京 210007)
有效的配置管理能使软件系统能够很好地适应外界需求的变化,也能使项目后期的维护和升级得到保证。针对软件项目开发过程中常出现的文档及源代码变更频繁、修改冲突等问题,文章对版本控制的原理和现状作了介绍。为优化软件项目管理,解决软件版本难于控制的问题,研究了具有文件校验功能的MD5软件,文章结合工程实践,探讨了一种在版本控制过程中使用MD5软件的规范和流程,实践证明这是保护软件资源、加强软件版本控制的有效途径。
版本控制;配置管理;MD5
软件配置管理是在项目开发过程中标识、控制和管理软件变更的一种管理活动。有效的配置管理可以使软件系统很好地适应外界需求的变化,也使项目后期的维护和升级得到保证[1]。
软件版本管理是对软件开发过程中涉及的各种软件资源进行管理,是实现软件配置管理的基础和核心。有效的版本管理有助于对软件开发过程中产生的各种中间产品实施管理,也有助于选择合适版本的构件组成软件产品进行发布[2]。
1 版本控制
1.1版本控制工具
早在70年代初期,人们就提出了软件配置管理的概念和软件过程工程的一些思想,研究实现了第一代软件配置管理工具,这些工具通过在特定的时刻标识软件系统的配置,系统化地控制配置的变更,维护了配置的完整性和可追溯性[3]。
近年来,由于软件规模日趋大型化和复杂化,软件修改也变得越来越频繁,软件版本管理显得尤为重要。一些版本控制工具如VSS(Visual SourceSafe),ClearCase,CVS(Concurrent Version System,版本控制系统的一种)和SVN(Subversion,版本管理工具)等,能够与流行的开发工具有机结合完整地保存开发过程中对每一个源文件所做的修改,解决软件开发过程中的版本管理和控制问题。这些工具引入了一种版本管理机制,是广义上的版本管理,它不仅对源代码的版本进行管理,而且对整个项目进行管理。
1.2版本控制及现状
版本控制(Revision Control)是软件配置管理的重要活动,因为软件变更常常带来软件版本的改变与新版本的发布,必须进行有效地控制。
贝尔实验室《配置管理的精髓》中描述“版本控制就是对软件开发过程中所创建的配置对象的不同版本进行管理,保证任何时候都能获取正确的版本以及版本的组合”。版本控制的对象包括技术文档、源代码、规范、可执行文件等,其目的在于对软件开发过程中的这些对象提供有效的跟踪手段,便于对版本进行检索和跟踪,避免文件的丢失和覆盖。
软件项目通常是由项目组来共同进行需求分析、软件设计、实现、测试和维护,在软件交付后发现的软件缺陷和用户提出的软件改进将重复上述流程,每个阶段都会产生数据文件。由于软件开发所固有的特征,可能会形成众多的软件版本,而且可能存在某个版本的修改是错误的,并且由于不同的需求,会出现同一个软件不同版本给不同的用户。
在版本较多、生命周期较长的大型项目中往往容易出现以下问题[4]:
(1)代码管理混乱;解决代码冲突困难;(2)在代码整合期间引入深层BUG;(3)无法对代码拥有者进行权限控制;(4)缺少版本说明的频繁的版本发布;(5)因缺少有效的管理,可执行程序和源代码不能相互对应的情况。
进行版本控制是团队软件开发的必然选择,也是持续集成的基础,从而保障项目开发资料(源代码、技术文档等)的完整性、安全性。
2 基于MD5软件的版本控制
2.1MD5算法简介及MD5软件应用
MD5[5]是message-digest algorithm 5(信息—摘要算法)的缩写,是对一段字节串(Message)产生指纹(Fingerprint),被广泛应用于加密及解密技术上,它可以说是文件的“数字指纹”。MD5算法简要的叙述为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组级联后将生成一个128位散列值。
MD5算法具有以下特点:(1)压缩性:任意长度的数据,算出的MD5值长度都是固定的;(2)容易计算:从原数据计算出MD5值很容易;(3)抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别;(4)强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
任何一个文件,无论是可执行程序、源代码、图像文件、临时文件或者其他任何类型的文件,也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,来校验这个文件是否被修改,这使得MD5软件在文件一致性校验方面有着广泛的应用。
工程实践中使用典型的WinMD5软件,这是一款绿色工具软件,是一款可以对所有文件类型计算MD5值,并通过校验MD5值来判断文件是否被修改的软件,该软件对众多的常用文件类型(*.cpp,*.c,*.h,*.doc,*.html,*.xls,*.txt,*.exe,*.md5等等)的版本检测都提供了便捷的手段,是一款适用于多种场景文件校验的工具软件,WinMD5软件使用要点如下。
(1)计算MD5值:通过工具栏“文件→打开文件”或快捷菜单“打开”/“文件”选择要校验MD5值的文件,或者拖动文件到软件处理框内(支持批量文件MD5值计算),即可显示文件名称及其MD5值等信息。
(2)复制MD5值:选定所需要复制的MD5值,通过“CTRL+C”或者工具栏“编辑→复制”可以保留文件名称及其校验的MD5值。
(3)另存为*.md5:通过工具栏“文件→保存MD5文件”或快捷菜单“保存”可以生成软件当前所校验文件名及其MD5值对应的md5文件。
(4)通过*.md5文件校验:将保存的*.md5文件拖到软件处理框内,即可显示文件匹配、不匹配信息,文件及其MD5值均一致的,*.md5文件校验为“匹配”;未包含的文件及MD5值,*.md5文件的校验为“未知”;内容已修改的同名文件,*.md5文件校验为“不匹配”。
软件操作界面、MD5值生成、MD5值校验如图1—2所示,将图1中的MD5校验结果保存为“test.md5”,图2是通过“test.md5”对原始文件、修改文件、新文件执行校验操作的结果示意。2.2 MD5软件在版本控制中的应用
图1 WinMD5软件示意
图2 WinMD5软件文件校验结果示意
在软件资源的源代码上,通过备注行能够尽可能把每次修改的痕迹保留下来。这些痕迹包括修改的时间、地点、人员、修改原因、修改内容等。源代码上有这些修改说明,会对软件的维护、查找错误带来极大的方便,但是在修改内容很多的情况下,这种检索方式并不是高效的。
对于项目经理、配置管理人员、质量管理人员及项目后期维护人员等角色,关注的重点是软件版本的动态性变更而非精细的开发过程版本,版本演变过程及其相关说明能够更直观地展示软件的技术状态。动态性是指版本在软件生命周期内其状态在不断地改变,包括版本生成、有效至消失,如图3所示。重点关注软件版本动态性变更的需求就要求结合工程实践在版本控制过程中增加有效的措施。
图3 版本的动态性示意
基于MD5软件的版本一致性校验功能,并结合工程实践,在项目的软件版本控制(包括源代码、可执行程序、配置文件)中增加MD5值校验以及详细的说明有助于更好地开展版本控制,同时MD5值校验功能还可应用于项目技术文档等的版本控制,如表1所示。
(1)版本唯一性控制:按照表1内容完成第一个版本及变更版本的信息录入,对版本进行有效的标识、管理及差异识别,并对相应版本的软件源代码、可执行程序、配置文件等文件生成MD5值,从而完整、明确地记载开发过程中的历史变化。其中,第一个版本不需要填写修改输入、修改说明、影响域分析信息。
(2)版本准确性控制:项目开展软件测试、现场联试、因需求变更开展软件改动、软件升级、软件交付与维护等版本的获取均需要对照相应版本的MD5值进行校验,以确认版本的唯一性与准确性;同时,对每个软件模块的版本控制有助于实现对研发小组各成员所做的修改进行统一汇总,从而形成某一特定版本的软件配置项或软件系统。
(3)版本恢复性控制:基于明确的版本修改说明及版本唯一性控制,能够在项目周期内撤销错误的改动,快速恢复到特定版本的状态,也可以随时检查并获取正确的历史版本,还原到历史上某阶段曾经运行的状态,以便适应某些历史查询的需要。
(4)版本映射关系控制:对于规模较大并且不同用户需求有差异的系统,可以根据不同用户的需求配置不同的软件系统,在版本控制记录表中详细说明;源代码与可执行程序,可执行程序与配置文件之间的对应关系是影响系统运行状态的重点因素之一,在配置文件说明一栏详细列出每个配置文件实现的功能及其MD5值,通过版本控制记录它们之间的映射关系,能够有效地解决因源代码与可执行程序以及可执行程序与配置文件对应关系错乱带来的问题。
表1 版本控制记录模板
基于MD5软件的版本控制可以解决很多问题,包括有效隔离开发环境、测试环境;评估开发质量;根据不同用户的需求,配置不同的软件系统;保存系统历史版本,为撤销修改或追溯问题提供支持;支持多个软件开发人员共同开发一个项目,或同时修改一个软件配置项;存储软件的多个版本,清晰地展示软件版本的演进过程,便于进行版本控制、提高团队开发与项目管理效率。
3 结语
在团队项目开发中,版本控制能够对软件开发的整个过程进行有效管理,解决软件开发中出现的源代码、可执行程序版本混乱,同时利用MD5软件的一致性校验功能可以更高效地解决版本控制无序、难追溯等问题,使项目能够恢复到任一个历史状态,并可以按不同配置选取文件进行部署,方便进行软件项目的开发和管理,能确保软件配置项在软件生命周期始终受控,有效地提高了团队的工作效率并规范了项目开发流程,从而提高软件产品的可靠性和稳定性。
[1]任永昌,朱萍,李仲秋.基于基线的软件配置管理版本控制[J].计算机技术与发展,2012(11):113-1159.
[2]刘燕秋,勉玉静,赵文耘.软件配置管理中版本管理技术研究[J].计算机工程与应用,2003(21):68-71.
[3]倪晓峰,赵文耘,张捷.构件软件配置管理以及其版本控制技术研究[J].计算机工程与应用,2005(2):94-98.
[4]赵颖,蔡伶.增量开发软件项目版本管理关键问题解析[J].软件导刊,2012(5):3-4.
[5]李杰,张学旺.MD5报文摘要算法与文件系统完整性保护[J].湘潭大学自然科学学报,2003(3):96-100.
Study of application on revision control based on MD5 software
Li Hanfen, Zhang Jiafeng, Chen Ying
(The 28th Research Institute of China Electronics Technology Group Corporation, Nanjing 210007, China)
Software system can easily adapt to the changes of external demands based on effective confguration management, it also makes the maintenance and upgrading of any project be guaranteed. Considering frequent changes of documents and source code, as well as conficted modifcation, this paper presented the principles and current status of revision control. To improve project management and solve the revision control issue, the MD5 software with fle check sum function is applied to the use of revision control. As well, this paper showed the standards and processes combining engineering practice. At last, it proved this method presented in this paper can protect software resource and enhance revision control.
revision control; confguration management; MD5
李韩芬(1988— ),女,江苏宿迁,硕士,工程师;研究方向:软件测试。