詳細的描述在推行軟件配置管理的可行性,以及各類軟件配置工具的比較,結合本中心的實際特點,分析適合本中心使用的軟件配置工具。
本文檔由陸國暾撰寫,要詳盡了解相關軟件配置工具的具體性能數據,請參閱該軟件出品公司技術文檔。
2 現狀簡述現有的軟件配置管理工具(SCM Tools)大致有如下幾個品種:
(2) Microsoft—Visual Source Safe (VSS);
(3) Borland—StarTeam (ST)
(4) Open Source--Concurrent Versions System (CVS);
(5) Hansky—Firefly;
該份可行性報告即為以上5種配置管理工具的評估報告,其側重點針對本中心的實際情況,結合各個開發部門的操作系統,開發流程,項目規模,易用性,價格,與其他管理系統的良好的結合性等等方面來進行考慮。
進行軟件配置管理的目的:
一、權限控制(Access Control)
權限控制對SCM工具來說至關重要。一方面,既然是團隊開發,就可能需要限制某些成員的權限;特別是大項目往往牽扯到子項目外包,到最后聯調階段會涉及到很多不同的單位,更需要權限管理。另一方面,權限控制也減小了誤操作的可能性,間接提高了SCM工具的可用性(Usability)。
現有的SCM工具,在權限控制方面差異很大,也說明了大家都在探索更有效的權限控制的方法。透過不同權限控制方法的差異,我們不難看到其共性:其核心概念是行為(Action)、行為主體、行為客體。
行為主體:即用戶(User)。用戶組(User Group)并不是行為主體,但它的引入大大方便了權限管理。
行為客體:即項目和項目成員(Member)。不管從SCM工具的開發者還是使用者的角度,項目和項目成員都是不同的行為客體。
行為:即由主體施加在客體之上的特定操作,簽入和簽出是再典型不過的例子。
三個核心概念搞清之后,就可以討論權限的概念了。
權限是這樣一個四元向量:(主體,客體,行為,布爾值)。即,“主體在客體上施加某種行為是否被獲準”。
由此看來,權限控制的基本工作就是負責維護主體集合、客體集合、行為集合、權限向量集合。其中,行為集合是固定不變的(在SCM工具開發之時已確定),其它三種集合都是動態變化的。
二、版本控制(Version Control)
SCM工具記錄項目和文件的修改軌跡,跟蹤修改信息,使軟件開發工作以基線(Baseline)漸進方式完成,從而避免了軟件開發不受控制的局面,使開發狀態變得有序。
SCM工具可以對同一文件的不同版本進行差異比較,可以恢復個別文件或整個項目的早期版本,使用戶方便地得到升級和維護必需的程序和文檔。
SCM工具內部對版本的標識,采用了版本號(Version Number)方式,但對用戶提供了多種途徑來標識版本,被廣泛應用的有版本號、標簽(Label)和時間戳(Time Stamp)。多樣靈活的標識手段,為用戶提供了方便。
三、增強的版本控制(Enhanced Version Control)
快照(Snapshot)和分支(Branch)以基本的版本控制功能為基礎,使版本控制的功能又更進一步增強。
快照是比版本高一級的概念,它是項目中多個文件各自的當前版本的集合?煺帐够謴晚椖康脑缙诎姹咀兊梅奖,它還支持批量簽入(Check in)、批量簽出(Check out)和批量加標簽(Label)等操作?傊,快照是版本控制的一種增強,使版本控制更加方便高效。
分支允許用戶創建獨立的開發路徑,我們認為分支的典型用途有二。第一,分支和合并(Merge)一起,是支持并行開發(Concurrent Development)的有力支持。第二,分支支持多版本開發,這對發布后的維護尤其有用。比如客戶報告有打印bug,小組可能從某個還未引入打印bug的項目版本引出一個分支,最終分布ā一個bug修訂版。分支是版本控制的另一種增強。
版本控制和增強的版本控制是SCM工具其它功能的基礎。
四、變更管理(Change Management)
SCM工具提供有效的問題跟蹤(Defect Tracking)和系統變更請求(System Change Requests (SCRs))管理。通過對軟件生命周期各階段所有的問題和變更請求進行跟蹤記錄,來支持團隊成員報告(Report)、抓。–apture)和跟蹤(Track)與軟件變更相關的問題,以此了解誰改變了什么,為什么改變。
變更管理有效地支持了不同開發人員之間,以及客戶和開發人員之間的交流,避免了無序和各自為政的狀態。
五、獨立的工作空間(Independent Workspaces)
開發團隊成員需要在開發項目上協同、并發地工作,這樣可以大大提高軟件開發的效率。沙箱(Sandbox)為并行開發提供了獨立的工作空間,在有的SCM工具中也稱為工作目錄(Working Folder)。
使用沙箱(Sandbox),開發人員能夠將所有必要的項目文件拷貝到私有的一個樹型目錄,修改在這些副本上進行。一旦對修改感到滿意,就可以將修改合并(Merge)到開發主線(Main Line)上去;當然,如果該文件只有該成員一人修改,只需將修改過的文件簽入(Check In)到主項目中即可。
“并發和共享是同一事物的不同方面”,并發的私有工作空間共享同一套主項目(Mater Project)文件,因此有必要讓所有團隊成員擁有得知項目當前狀態的能力。SCM工具提供刷新(Refresh)操作,某位團隊成員可以使其他團隊成員在主項目文件上所做的變更,在自己沙箱的圖形用戶界面上反應出來。
六、報告(Report)
為保證項目按時完成,項目經理必須監控開發進程并對發生的問題迅速做出反應。報告功能使項目經理能夠隨時了解項目進展情況;通過圖形化的報告,開發的瓶頸可以一目了然地被發現;標準的報告提供常用的項目信息,定制報告功能保證了擁有適合自己需求的信息。
七、過程自動化(Process Automation)
SCM工具使用事件觸發機制(Event Trigger),即讓一個事件觸發另一個事件產生行為,來實現過程自動化。比如,讓“增加項目成員”操作自動觸發“產生功能描述表(Form)”操作,開發人員填制該文件的功能描述表,規范開發過程。
過程自動化不僅可以縮短復雜任務的時間,提高了生產率,而且還規范了團隊開發的過程,減少了混亂。
八、管理項目的整個生命周期
從開發、測試、發布到發布后的維護,SCM工具的使命“始于項目開發之初,終于產品淘汰之時”。SCM工具應預先提供典型的開發模式的模板,以減少用戶的勞動;另一方面,也應支持用戶自定義生命周期模式,以適應特殊開發需要。
九、與主流開發環境的集成
將版本控制功能與主流集成開發環境(IDE)集成,極大地方便了軟件開發過程。從集成開發環境的角度看,版本控制是其一項新功能;從SCM工具的角度看,集成開發環境充當了沙箱的角色。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/