李韓芬,張家鳳,陳 瑩
(中國電子科技集團(tuán)公司 第二十八研究所,江蘇 南京 210007)
MD5軟件在版本控制中的應(yīng)用研究
李韓芬,張家鳳,陳瑩
(中國電子科技集團(tuán)公司 第二十八研究所,江蘇 南京 210007)
有效的配置管理能使軟件系統(tǒng)能夠很好地適應(yīng)外界需求的變化,也能使項(xiàng)目后期的維護(hù)和升級(jí)得到保證。針對(duì)軟件項(xiàng)目開發(fā)過程中常出現(xiàn)的文檔及源代碼變更頻繁、修改沖突等問題,文章對(duì)版本控制的原理和現(xiàn)狀作了介紹。為優(yōu)化軟件項(xiàng)目管理,解決軟件版本難于控制的問題,研究了具有文件校驗(yàn)功能的MD5軟件,文章結(jié)合工程實(shí)踐,探討了一種在版本控制過程中使用MD5軟件的規(guī)范和流程,實(shí)踐證明這是保護(hù)軟件資源、加強(qiáng)軟件版本控制的有效途徑。
版本控制;配置管理;MD5
軟件配置管理是在項(xiàng)目開發(fā)過程中標(biāo)識(shí)、控制和管理軟件變更的一種管理活動(dòng)。有效的配置管理可以使軟件系統(tǒng)很好地適應(yīng)外界需求的變化,也使項(xiàng)目后期的維護(hù)和升級(jí)得到保證[1]。
軟件版本管理是對(duì)軟件開發(fā)過程中涉及的各種軟件資源進(jìn)行管理,是實(shí)現(xiàn)軟件配置管理的基礎(chǔ)和核心。有效的版本管理有助于對(duì)軟件開發(fā)過程中產(chǎn)生的各種中間產(chǎn)品實(shí)施管理,也有助于選擇合適版本的構(gòu)件組成軟件產(chǎn)品進(jìn)行發(fā)布[2]。
1.1版本控制工具
早在70年代初期,人們就提出了軟件配置管理的概念和軟件過程工程的一些思想,研究實(shí)現(xiàn)了第一代軟件配置管理工具,這些工具通過在特定的時(shí)刻標(biāo)識(shí)軟件系統(tǒng)的配置,系統(tǒng)化地控制配置的變更,維護(hù)了配置的完整性和可追溯性[3]。
近年來,由于軟件規(guī)模日趨大型化和復(fù)雜化,軟件修改也變得越來越頻繁,軟件版本管理顯得尤為重要。一些版本控制工具如VSS(Visual SourceSafe),ClearCase,CVS(Concurrent Version System,版本控制系統(tǒng)的一種)和SVN(Subversion,版本管理工具)等,能夠與流行的開發(fā)工具有機(jī)結(jié)合完整地保存開發(fā)過程中對(duì)每一個(gè)源文件所做的修改,解決軟件開發(fā)過程中的版本管理和控制問題。這些工具引入了一種版本管理機(jī)制,是廣義上的版本管理,它不僅對(duì)源代碼的版本進(jìn)行管理,而且對(duì)整個(gè)項(xiàng)目進(jìn)行管理。
1.2版本控制及現(xiàn)狀
版本控制(Revision Control)是軟件配置管理的重要活動(dòng),因?yàn)檐浖兏3碥浖姹镜母淖兣c新版本的發(fā)布,必須進(jìn)行有效地控制。
貝爾實(shí)驗(yàn)室《配置管理的精髓》中描述“版本控制就是對(duì)軟件開發(fā)過程中所創(chuàng)建的配置對(duì)象的不同版本進(jìn)行管理,保證任何時(shí)候都能獲取正確的版本以及版本的組合”。版本控制的對(duì)象包括技術(shù)文檔、源代碼、規(guī)范、可執(zhí)行文件等,其目的在于對(duì)軟件開發(fā)過程中的這些對(duì)象提供有效的跟蹤手段,便于對(duì)版本進(jìn)行檢索和跟蹤,避免文件的丟失和覆蓋。
軟件項(xiàng)目通常是由項(xiàng)目組來共同進(jìn)行需求分析、軟件設(shè)計(jì)、實(shí)現(xiàn)、測試和維護(hù),在軟件交付后發(fā)現(xiàn)的軟件缺陷和用戶提出的軟件改進(jìn)將重復(fù)上述流程,每個(gè)階段都會(huì)產(chǎn)生數(shù)據(jù)文件。由于軟件開發(fā)所固有的特征,可能會(huì)形成眾多的軟件版本,而且可能存在某個(gè)版本的修改是錯(cuò)誤的,并且由于不同的需求,會(huì)出現(xiàn)同一個(gè)軟件不同版本給不同的用戶。
在版本較多、生命周期較長的大型項(xiàng)目中往往容易出現(xiàn)以下問題[4]:
(1)代碼管理混亂;解決代碼沖突困難;(2)在代碼整合期間引入深層BUG;(3)無法對(duì)代碼擁有者進(jìn)行權(quán)限控制;(4)缺少版本說明的頻繁的版本發(fā)布;(5)因缺少有效的管理,可執(zhí)行程序和源代碼不能相互對(duì)應(yīng)的情況。
進(jìn)行版本控制是團(tuán)隊(duì)軟件開發(fā)的必然選擇,也是持續(xù)集成的基礎(chǔ),從而保障項(xiàng)目開發(fā)資料(源代碼、技術(shù)文檔等)的完整性、安全性。
2.1MD5算法簡介及MD5軟件應(yīng)用
MD5[5]是message-digest algorithm 5(信息—摘要算法)的縮寫,是對(duì)一段字節(jié)串(Message)產(chǎn)生指紋(Fingerprint),被廣泛應(yīng)用于加密及解密技術(shù)上,它可以說是文件的“數(shù)字指紋”。MD5算法簡要的敘述為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由4個(gè)32位分組組成,將這4個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。
MD5算法具有以下特點(diǎn):(1)壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的;(2)容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易;(3)抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改1個(gè)字節(jié),所得到的MD5值都有很大區(qū)別;(4)強(qiáng)抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
任何一個(gè)文件,無論是可執(zhí)行程序、源代碼、圖像文件、臨時(shí)文件或者其他任何類型的文件,也不管它體積多大,都有且只有一個(gè)獨(dú)一無二的MD5信息值,并且如果這個(gè)文件被修改過,它的MD5值也將隨之改變。因此,我們可以通過對(duì)比同一文件的MD5值,來校驗(yàn)這個(gè)文件是否被修改,這使得MD5軟件在文件一致性校驗(yàn)方面有著廣泛的應(yīng)用。
工程實(shí)踐中使用典型的WinMD5軟件,這是一款綠色工具軟件,是一款可以對(duì)所有文件類型計(jì)算MD5值,并通過校驗(yàn)MD5值來判斷文件是否被修改的軟件,該軟件對(duì)眾多的常用文件類型(*.cpp,*.c,*.h,*.doc,*.html,*.xls,*.txt,*.exe,*.md5等等)的版本檢測都提供了便捷的手段,是一款適用于多種場景文件校驗(yàn)的工具軟件,WinMD5軟件使用要點(diǎn)如下。
(1)計(jì)算MD5值:通過工具欄“文件→打開文件”或快捷菜單“打開”/“文件”選擇要校驗(yàn)MD5值的文件,或者拖動(dòng)文件到軟件處理框內(nèi)(支持批量文件MD5值計(jì)算),即可顯示文件名稱及其MD5值等信息。
(2)復(fù)制MD5值:選定所需要復(fù)制的MD5值,通過“CTRL+C”或者工具欄“編輯→復(fù)制”可以保留文件名稱及其校驗(yàn)的MD5值。
(3)另存為*.md5:通過工具欄“文件→保存MD5文件”或快捷菜單“保存”可以生成軟件當(dāng)前所校驗(yàn)文件名及其MD5值對(duì)應(yīng)的md5文件。
(4)通過*.md5文件校驗(yàn):將保存的*.md5文件拖到軟件處理框內(nèi),即可顯示文件匹配、不匹配信息,文件及其MD5值均一致的,*.md5文件校驗(yàn)為“匹配”;未包含的文件及MD5值,*.md5文件的校驗(yàn)為“未知”;內(nèi)容已修改的同名文件,*.md5文件校驗(yàn)為“不匹配”。
軟件操作界面、MD5值生成、MD5值校驗(yàn)如圖1—2所示,將圖1中的MD5校驗(yàn)結(jié)果保存為“test.md5”,圖2是通過“test.md5”對(duì)原始文件、修改文件、新文件執(zhí)行校驗(yàn)操作的結(jié)果示意。2.2 MD5軟件在版本控制中的應(yīng)用
圖1 WinMD5軟件示意
圖2 WinMD5軟件文件校驗(yàn)結(jié)果示意
在軟件資源的源代碼上,通過備注行能夠盡可能把每次修改的痕跡保留下來。這些痕跡包括修改的時(shí)間、地點(diǎn)、人員、修改原因、修改內(nèi)容等。源代碼上有這些修改說明,會(huì)對(duì)軟件的維護(hù)、查找錯(cuò)誤帶來極大的方便,但是在修改內(nèi)容很多的情況下,這種檢索方式并不是高效的。
對(duì)于項(xiàng)目經(jīng)理、配置管理人員、質(zhì)量管理人員及項(xiàng)目后期維護(hù)人員等角色,關(guān)注的重點(diǎn)是軟件版本的動(dòng)態(tài)性變更而非精細(xì)的開發(fā)過程版本,版本演變過程及其相關(guān)說明能夠更直觀地展示軟件的技術(shù)狀態(tài)。動(dòng)態(tài)性是指版本在軟件生命周期內(nèi)其狀態(tài)在不斷地改變,包括版本生成、有效至消失,如圖3所示。重點(diǎn)關(guān)注軟件版本動(dòng)態(tài)性變更的需求就要求結(jié)合工程實(shí)踐在版本控制過程中增加有效的措施。
圖3 版本的動(dòng)態(tài)性示意
基于MD5軟件的版本一致性校驗(yàn)功能,并結(jié)合工程實(shí)踐,在項(xiàng)目的軟件版本控制(包括源代碼、可執(zhí)行程序、配置文件)中增加MD5值校驗(yàn)以及詳細(xì)的說明有助于更好地開展版本控制,同時(shí)MD5值校驗(yàn)功能還可應(yīng)用于項(xiàng)目技術(shù)文檔等的版本控制,如表1所示。
(1)版本唯一性控制:按照表1內(nèi)容完成第一個(gè)版本及變更版本的信息錄入,對(duì)版本進(jìn)行有效的標(biāo)識(shí)、管理及差異識(shí)別,并對(duì)相應(yīng)版本的軟件源代碼、可執(zhí)行程序、配置文件等文件生成MD5值,從而完整、明確地記載開發(fā)過程中的歷史變化。其中,第一個(gè)版本不需要填寫修改輸入、修改說明、影響域分析信息。
(2)版本準(zhǔn)確性控制:項(xiàng)目開展軟件測試、現(xiàn)場聯(lián)試、因需求變更開展軟件改動(dòng)、軟件升級(jí)、軟件交付與維護(hù)等版本的獲取均需要對(duì)照相應(yīng)版本的MD5值進(jìn)行校驗(yàn),以確認(rèn)版本的唯一性與準(zhǔn)確性;同時(shí),對(duì)每個(gè)軟件模塊的版本控制有助于實(shí)現(xiàn)對(duì)研發(fā)小組各成員所做的修改進(jìn)行統(tǒng)一匯總,從而形成某一特定版本的軟件配置項(xiàng)或軟件系統(tǒng)。
(3)版本恢復(fù)性控制:基于明確的版本修改說明及版本唯一性控制,能夠在項(xiàng)目周期內(nèi)撤銷錯(cuò)誤的改動(dòng),快速恢復(fù)到特定版本的狀態(tài),也可以隨時(shí)檢查并獲取正確的歷史版本,還原到歷史上某階段曾經(jīng)運(yùn)行的狀態(tài),以便適應(yīng)某些歷史查詢的需要。
(4)版本映射關(guān)系控制:對(duì)于規(guī)模較大并且不同用戶需求有差異的系統(tǒng),可以根據(jù)不同用戶的需求配置不同的軟件系統(tǒng),在版本控制記錄表中詳細(xì)說明;源代碼與可執(zhí)行程序,可執(zhí)行程序與配置文件之間的對(duì)應(yīng)關(guān)系是影響系統(tǒng)運(yùn)行狀態(tài)的重點(diǎn)因素之一,在配置文件說明一欄詳細(xì)列出每個(gè)配置文件實(shí)現(xiàn)的功能及其MD5值,通過版本控制記錄它們之間的映射關(guān)系,能夠有效地解決因源代碼與可執(zhí)行程序以及可執(zhí)行程序與配置文件對(duì)應(yīng)關(guān)系錯(cuò)亂帶來的問題。
表1 版本控制記錄模板
基于MD5軟件的版本控制可以解決很多問題,包括有效隔離開發(fā)環(huán)境、測試環(huán)境;評(píng)估開發(fā)質(zhì)量;根據(jù)不同用戶的需求,配置不同的軟件系統(tǒng);保存系統(tǒng)歷史版本,為撤銷修改或追溯問題提供支持;支持多個(gè)軟件開發(fā)人員共同開發(fā)一個(gè)項(xiàng)目,或同時(shí)修改一個(gè)軟件配置項(xiàng);存儲(chǔ)軟件的多個(gè)版本,清晰地展示軟件版本的演進(jìn)過程,便于進(jìn)行版本控制、提高團(tuán)隊(duì)開發(fā)與項(xiàng)目管理效率。
在團(tuán)隊(duì)項(xiàng)目開發(fā)中,版本控制能夠?qū)浖_發(fā)的整個(gè)過程進(jìn)行有效管理,解決軟件開發(fā)中出現(xiàn)的源代碼、可執(zhí)行程序版本混亂,同時(shí)利用MD5軟件的一致性校驗(yàn)功能可以更高效地解決版本控制無序、難追溯等問題,使項(xiàng)目能夠恢復(fù)到任一個(gè)歷史狀態(tài),并可以按不同配置選取文件進(jìn)行部署,方便進(jìn)行軟件項(xiàng)目的開發(fā)和管理,能確保軟件配置項(xiàng)在軟件生命周期始終受控,有效地提高了團(tuán)隊(duì)的工作效率并規(guī)范了項(xiàng)目開發(fā)流程,從而提高軟件產(chǎn)品的可靠性和穩(wěn)定性。
[1]任永昌,朱萍,李仲秋.基于基線的軟件配置管理版本控制[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012(11):113-1159.
[2]劉燕秋,勉玉靜,趙文耘.軟件配置管理中版本管理技術(shù)研究[J].計(jì)算機(jī)工程與應(yīng)用,2003(21):68-71.
[3]倪曉峰,趙文耘,張捷.構(gòu)件軟件配置管理以及其版本控制技術(shù)研究[J].計(jì)算機(jī)工程與應(yīng)用,2005(2):94-98.
[4]趙穎,蔡伶.增量開發(fā)軟件項(xiàng)目版本管理關(guān)鍵問題解析[J].軟件導(dǎo)刊,2012(5):3-4.
[5]李杰,張學(xué)旺.MD5報(bào)文摘要算法與文件系統(tǒng)完整性保護(hù)[J].湘潭大學(xué)自然科學(xué)學(xué)報(bào),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— ),女,江蘇宿遷,碩士,工程師;研究方向:軟件測試。