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