<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于構(gòu)件的軟件版本管理系統(tǒng)研究

          基于構(gòu)件的軟件版本管理系統(tǒng)研究

          作者: 時(shí)間:2012-12-13 來(lái)源:網(wǎng)絡(luò) 收藏

          1 引言

          本文引用地址:http://www.ex-cimer.com/article/148191.htm

            配置[ 3, 9]是開發(fā)的關(guān)鍵支撐工具之一,是一種管理開發(fā)和維護(hù)過程以及其中各中間產(chǎn)品的系統(tǒng),是ISO與CMM質(zhì)量保證體系的核心支持工具。配置管理怎樣在不同時(shí)刻標(biāo)識(shí)軟件系統(tǒng)的配置,以便系統(tǒng)化地控制配置的改變,并在整個(gè)軟件系統(tǒng)的生命周期內(nèi)維護(hù)配置的完整性和可追蹤性[ 1] .其中,管理是基礎(chǔ)和核心。傳統(tǒng)的以文件作為管理的基本粒度。記錄、維護(hù)每個(gè)文件的演化歷史。在大型軟件開發(fā)中,系統(tǒng)往往包含較多文件,這使得傳統(tǒng)方式版本管理的工作量很大,而且不易于描述文件間內(nèi)在的組合關(guān)系。目前,的軟件開發(fā)方法已成為發(fā)展趨勢(shì)[ 7, 8] .作為系統(tǒng)的有機(jī)構(gòu)成成分,在物理上可以表現(xiàn)為多個(gè)文件的集合體,而在開發(fā)過程中是作為一個(gè)原子單位使用的。系統(tǒng)的開發(fā)者關(guān)心的是整體的開發(fā)、演化,組裝和維護(hù)。這種大粒度的開發(fā)方法,對(duì)版本管理提出了新的要求[ 3] .這些要求包括:

            #應(yīng)能有效存儲(chǔ)和管理構(gòu)件演化歷史。

            #操作模型應(yīng)有利于體現(xiàn)構(gòu)件的整體性, 降低系統(tǒng)開發(fā)的復(fù)雜程度。

            #需要保證并行開發(fā)構(gòu)件時(shí)的正確性, 同時(shí)不減少項(xiàng)目組協(xié)同工作的靈活性。

            本文了構(gòu)件的版本控制策略,提出了構(gòu)件的版本管理模型。針對(duì)并行開發(fā)問題,又提出了分別在構(gòu)件和文件粒度上進(jìn)行版本管理和并發(fā)控制的方法。在此基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了一個(gè)產(chǎn)品化的配置管理系統(tǒng)JBCM.該系統(tǒng)既提升了管理的粒度,又能確保團(tuán)隊(duì)開發(fā)具有較好的并行性。

            2 以構(gòu)件為粒度的版本管理

            2.1 版本管理系統(tǒng)中的構(gòu)件定義

            在構(gòu)件復(fù)用的青鳥軟件生產(chǎn)線中,軟件構(gòu)件定義如下: /構(gòu)件是可以被多個(gè)軟件系統(tǒng)復(fù)用的具有獨(dú)立功能的系統(tǒng)構(gòu)成成分0 [8] .構(gòu)件在實(shí)際形態(tài)上可表現(xiàn)為通過目錄結(jié)構(gòu)組織起來(lái)的一些文件的集合,并且是系統(tǒng)中可以明確辨識(shí)的構(gòu)成成分。需要指出的是,在以前許多有關(guān)版本管理的文獻(xiàn)中都出現(xiàn)了構(gòu)件的概念[ 4] ,但其中的構(gòu)件一般指的就是文件。本文中的構(gòu)件則是應(yīng)用系統(tǒng)中多個(gè)相關(guān)文件構(gòu)成的一個(gè)邏輯整體,例如一個(gè)類的定義及其實(shí)現(xiàn),一個(gè)完整的功能模塊等。構(gòu)件版本是構(gòu)件組成文件版本的集合。構(gòu)件版本的變化不僅體現(xiàn)了組成文件的版本變化,同時(shí)也反映了構(gòu)件中文件組成的變化。也就是說,組成文件發(fā)生版本演化,或者增加和刪除構(gòu)件中的文件,都會(huì)引起構(gòu)件版本的演化。在基于構(gòu)件的系統(tǒng)中,文件版本由系統(tǒng)內(nèi)部控制,用戶只關(guān)注構(gòu)件版本,從而提升了管理層次。圖1反映了構(gòu)件版本與文件版本的關(guān)系:

          構(gòu)件版本與文件版本的關(guān)系

            圖 中虛線箭頭表示構(gòu)件和文件與其不同版本的關(guān)系, 實(shí)線箭頭表示構(gòu)件版本由文件版本組成的關(guān)系。從圖中可以看出構(gòu)件的版本2 比版本1 增加了一個(gè)文件3, 而且文件版本也發(fā)生了演化。 構(gòu)件版本的演化與文件版本的演化同步進(jìn)行, 并且隨著文件的版本演化自動(dòng)產(chǎn)生?;谏鲜鰳?gòu)件與文件關(guān)系模型, 提出并實(shí)現(xiàn)了基于構(gòu)件的軟件版本管理系統(tǒng)。

            2.2 構(gòu)件的版本管理

           ?。?) 以構(gòu)件為粒度的版本管理特點(diǎn)

            與 基于文件的版本管理相比, 基于構(gòu)件的版本管理有以下主要特點(diǎn): ? 構(gòu)件的抽象級(jí)別比文件高。 構(gòu)件是應(yīng)用系統(tǒng)中可以明確辨識(shí)的構(gòu)成成分。 記錄、維護(hù)構(gòu)件的版本比文件的版本管理更有意義。 ? 構(gòu)件的粒度可以比文件大很多。 一個(gè)項(xiàng)目中可能有諸多分布的邏輯單元, 這些邏輯單元與構(gòu)件相對(duì)應(yīng)。構(gòu)件的數(shù)量較少, 而且整體邏輯意義明顯, 可以更清晰地體現(xiàn)項(xiàng)目的演化歷史。 ? 在構(gòu)件基礎(chǔ)上, 可以體現(xiàn)出系統(tǒng)的層次性、構(gòu)造性等特征。 同時(shí), 構(gòu)件版本管理也可以滿足對(duì)文件版本的管理需求, 使版本管理既有大粒度, 又有靈活性。

           ?。?) 構(gòu)件版本管理的基本模式

            基 于構(gòu)件的版本管理系統(tǒng)采用/ 檢出( Check Out) 、修改、檢入( Check In)0 的基本操作模型, 操作的基本單位是構(gòu)件。 使用者需要先將構(gòu)件從版本庫(kù)檢出到工作區(qū), 隨后在工作區(qū)中完成對(duì)構(gòu)件的修改, 最后將修改的結(jié)果檢入版本庫(kù)。 構(gòu)件組成文件的增刪以及其中任何一個(gè)文件的修改都被視為對(duì)整個(gè)構(gòu)件的修改。 因此, 作為檢入操作的結(jié)果, 版本管理系統(tǒng)會(huì)自動(dòng)生成構(gòu)件的一個(gè)新版本。 以構(gòu)件版本為粒度的版本管理系統(tǒng)記錄和管理了開發(fā)人員對(duì)構(gòu)件修改的歷史。

           ?。?) 構(gòu)件版本樹

            在 基本模式之上, 使用者可以構(gòu)件的某個(gè)版本進(jìn)行分支,建立一個(gè)新的開發(fā)流, 以適應(yīng)不同的開發(fā)需求。 構(gòu)件多個(gè)分支還可以進(jìn)行合并。 由此, 一個(gè)構(gòu)件的所有版本構(gòu)成了一棵版本樹。 構(gòu)件版本樹是系統(tǒng)對(duì)構(gòu)件進(jìn)行版本管理的基礎(chǔ)。構(gòu)件的版本樹是由版本管理系統(tǒng)維護(hù), 系統(tǒng)需要提供比較完善的版本名自動(dòng)生成與管理機(jī)制。 其基本原則是: ? 無(wú)沖突地表示整棵版本樹; ? 有效的區(qū)分版本名與分支名; ? 有利于體現(xiàn)構(gòu)件的開發(fā)過程。

          構(gòu)件版本樹

            圖2 構(gòu)件版本樹

            圖2 是采用的一種比較實(shí)用有效的版本樹命名方法。 版本11 0 為構(gòu)件的初始版本, 實(shí)心節(jié)點(diǎn)為分支點(diǎn)。 版本11211121 210 與版本11 21 213 合并后形成版本1121 214.

            3 以文件為基本粒度實(shí)現(xiàn)并發(fā)控制

            311 版本控制與并發(fā)控制單位的分離

            版本管理系統(tǒng)應(yīng)能對(duì)項(xiàng)目組共同開發(fā)軟件系統(tǒng)提供管理支持。 多個(gè)開發(fā)人員可以分工開發(fā)不同構(gòu)件, 也可以同時(shí)開發(fā)同一構(gòu)件。 為了保證協(xié)同開發(fā)的安全性和正確性, 必須解決構(gòu)件開發(fā)過程中的并發(fā)控制問題。

            在基于文件的版本管理系統(tǒng)中, 版本控制與并發(fā)控制的基本單位都是文件。 使用者可以在檢出時(shí)對(duì)文件加鎖, 防止其它用戶對(duì)該文件進(jìn)行修改; 檢入時(shí), 在生成文件新版本的同時(shí), 要對(duì)文件解鎖。 而在基于構(gòu)件的版本管理系統(tǒng)中, 如果把并發(fā)控制的單位定為構(gòu)件, 在需要修改時(shí)對(duì)構(gòu)件加鎖, 會(huì)造成其他使用者無(wú)法同時(shí)修改構(gòu)件和構(gòu)件中的任何文件。 因此, 提出并實(shí)現(xiàn)了以構(gòu)件為版本控制單位, 以文件作為并發(fā)控制單位的管理方法。

          3.2 文件的操作模式與并發(fā)控制

            在實(shí)現(xiàn)基于構(gòu)件的版本管理系統(tǒng)中,構(gòu)件是版本控制單位,而并發(fā)控制則在構(gòu)件內(nèi)部的文件級(jí)別上進(jìn)行管理。對(duì)于一個(gè)構(gòu)件,使用者可設(shè)定其中文件的操作模式,由此來(lái)控制相關(guān)文件的加鎖活動(dòng)。

            文件的操作模式可以分為三種: /只讀0、/排它寫0和/共享寫0、/只讀0表示對(duì)文件不加鎖,使用者也不能對(duì)文件進(jìn)行修改,使用者可以使用/只讀0模式來(lái)瀏覽文件; /排它寫0表示對(duì)文件加鎖,使用者可以對(duì)文件進(jìn)行修改,但不允許其他使用者同時(shí)進(jìn)行修改,這樣可以保證對(duì)同一文件的修改是串行化的; /共享寫0則表示對(duì)文件不加鎖,使用者可以對(duì)文件進(jìn)行修改,而且允許其他使用者同時(shí)對(duì)同一文件進(jìn)行修改。雖然/共享寫0模式可以提高并發(fā)程度,但會(huì)帶來(lái)多個(gè)用戶修改結(jié)果互相沖突的問題。版本管理系統(tǒng)可以分析這種沖突,并提示用戶進(jìn)行相應(yīng)的合并處理,由此解決了文件內(nèi)容的一致性問題。

            在構(gòu)件的修改過程中,文件的操作模式是可以隨時(shí)改變的。例如,使用者先用只讀模式檢出構(gòu)件中的各個(gè)文件,而在要修改文件時(shí),可將需修改文件的操作模式改為/排它寫0或/共享寫0,然后修改。完成了對(duì)構(gòu)件中所有相關(guān)文件的修改,也就完成了對(duì)構(gòu)件的修改。這時(shí)檢入修改后的構(gòu)件,系統(tǒng)會(huì)自動(dòng)產(chǎn)生該構(gòu)件的一個(gè)新版本。如果在使用者檢入之前另一使用者已檢入了構(gòu)件的另一新版本,該使用者就需要先進(jìn)行更新操作,系統(tǒng)會(huì)將構(gòu)件最新版本拿到工作區(qū),與該使用者修改過的版本進(jìn)行合并后才能檢入。使用者對(duì)文件操作模式的修改必須滿足一定的條件。具體轉(zhuǎn)換條件見圖3.


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();