SCM工具的功能

軟件配置管理(Software Configuration Management (SCM)),它爲軟件開發提供了一套管理辦法和活動原則,成爲貫穿軟件開發始終的重要質量保證活動。本文討論SCM工具的功能。

需要說明的是,從學術上講,軟件配置管理(SCM)只是變更管理(Change Management(CM))的一個方面;但從SCM工具的發展來看,越來越多的SCM工具開始集成變更管理(CM)的功能,甚至問題跟蹤(Defect Tracking)的功能。

一、權限控制(Access Control

 

 

 



權限控制對SCM工具來說至關重要。一方面,既然是團隊開發,就可能需要限制某些成員的權限;特別是大項目往往牽扯到子項目外包,到最後聯調階段會涉及到很多不同的單位,更需要權限管理。另一方面,權限控制也減小了誤操作的可能性,間接提高了SCM工具的可用性(Usability)。

現有的SCM工具,在權限控制方面差異很大,也說明了大家都在探索更有效的權限控制的方法。透過不同權限控制方法的差異,我們不難看到其共性:其核心概念是行爲(Action)、行爲主體、行爲客體。

·
行爲主體:即用戶(User)。用戶組(User Group)並不是行爲主體,但它的引入大大方便了權限管理。

·
行爲客體:即項目和項目成員(Member)。不管從SCM工具的開發者還是使用者的角度,項目和項目成員都是不同的行爲客體。

·
行爲:即由主體施加在客體之上的特定操作,簽入和簽出是再典型不過的例子。

三個核心概念搞清之後,就可以討論權限的概念了。

權限是這樣一個四元向量:(主體,客體,行爲,布爾值)。即,主體在客體上施加某種行爲是否被獲准

由此看來,權限控制的基本工作就是負責維護主體集合、客體集合、行爲集合、權限向量集合。其中,行爲集合是固定不變的(在SCM工具開發之時已確定),其它三種集合都是動態變化的。

權限控制對SCM工具來說至關重要。一方面,既然是團隊開發,就可能需要限制某些成員的權限;特別是大項目往往牽扯到子項目外包,到最後聯調階段會涉及到很多不同的單位,更需要權限管理。另一方面,權限控制也減小了誤操作的可能性,間接提高了SCM工具的可用性(Usability)。

現有的SCM工具,在權限控制方面差異很大,也說明了大家都在探索更有效的權限控制的方法。透過不同權限控制方法的差異,我們不難看到其共性:其核心概念是行爲(Action)、行爲主體、行爲客體。

·
行爲主體:即用戶(User)。用戶組(User Group)並不是行爲主體,但它的引入大大方便了權限管理。

·
行爲客體:即項目和項目成員(Member)。不管從SCM工具的開發者還是使用者的角度,項目和項目成員都是不同的行爲客體。

·
行爲:即由主體施加在客體之上的特定操作,簽入和簽出是再典型不過的例子。

三個核心概念搞清之後,就可以討論權限的概念了。

權限是這樣一個四元向量:(主體,客體,行爲,布爾值)。即,主體在客體上施加某種行爲是否被獲准

由此看來,權限控制的基本工作就是負責維護主體集合、客體集合、行爲集合、權限向量集合。其中,行爲集合是固定不變的(在SCM工具開發之時已確定),其它三種集合都是動態變化的。

二、版本控制(Version Control

 

 

 



SCM工具記錄項目和文件的修改軌跡,跟蹤修改信息,使軟件開發工作以基線(Baseline)漸進方式完成,從而避免了軟件開發不受控制的局面,使開發狀態變得有序。

SCM
工具可以對同一文件的不同版本進行差異比較,可以恢復個別文件或整個項目的早期版本,使用戶方便地得到升級和維護必需的程序和文檔。

SCM
工具內部對版本的標識,採用了版本號(Version Number)方式,但對用戶提供了多種途徑來標識版本,被廣泛應用的有版本號、標籤(Label)和時間戳(Time Stamp)。多樣靈活的標識手段,爲用戶提供了方便。

工具記錄項目和文件的修改軌跡,跟蹤修改信息,使軟件開發工作以基線(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工具其它功能的基礎。

快照(Snapshot)和分支(Branch)以基本的版本控制功能爲基礎,使版本控制的功能又更進一步增強。

快照是比版本高一級的概念,它是項目中多個文件各自的當前版本的集合。快照使恢復項目的早期版本變得方便,它還支持批量簽入(Check in)、批量簽出(Check out)和批量加標籤(Label)等操作。總之,快照是版本控制的一種增強,使版本控制更加方便高效。

分支允許用戶創建獨立的開發路徑,我們認爲分支的典型用途有二。第一,分支和合並(Merge)一起,是支持並行開發(Concurrent Development)的有力支持。第二,分支支持多版本開發,這對發佈後的維護尤其有用。比如客戶報告有打印bug,小組可能從某個還未引入打印bug的項目版本引出一個分支,最終分佈一個bug修訂版。分支是版本控制的另一種增強。

版本控制和增強的版本控制是SCM工具其它功能的基礎。

四、變更管理(Change Management

 

 

 



SCM工具提供有效的問題跟蹤(Defect Tracking)和系統變更請求(System Change Requests (SCRs))管理。通過對軟件生命週期各階段所有的問題和變更請求進行跟蹤記錄,來支持團隊成員報告(Report)、抓取(Capture)和跟蹤(Track)與軟件變更相關的問題,以此瞭解誰改變了什麼,爲什麼改變。

變更管理有效地支持了不同開發人員之間,以及客戶和開發人員之間的交流,避免了無序和各自爲政的狀態。

工具提供有效的問題跟蹤(Defect Tracking)和系統變更請求(System Change Requests (SCRs))管理。通過對軟件生命週期各階段所有的問題和變更請求進行跟蹤記錄,來支持團隊成員報告(Report)、抓取(Capture)和跟蹤(Track)與軟件變更相關的問題,以此瞭解誰改變了什麼,爲什麼改變。

變更管理有效地支持了不同開發人員之間,以及客戶和開發人員之間的交流,避免了無序和各自爲政的狀態。

五、獨立的工作空間(Independent Workspaces

 

 

 



開發團隊成員需要在開發項目上協同、併發地工作,這樣可以大大提高軟件開發的效率。沙箱(Sandbox)爲並行開發提供了獨立的工作空間,在有的SCM工具中也稱爲工作目錄(Working Folder)。

使用沙箱(Sandbox),開發人員能夠將所有必要的項目文件拷貝到私有的一個樹型目錄,修改在這些副本上進行。一旦對修改感到滿意,就可以將修改合併(Merge)到開發主線(Main Line)上去;當然,如果該文件只有該成員一人修改,只需將修改過的文件簽入(Check In)到主項目中即可。

併發和共享是同一事物的不同方面,併發的私有工作空間共享同一套主項目(Mater Project)文件,因此有必要讓所有團隊成員擁有得知項目當前狀態的能力。SCM工具提供刷新(Refresh)操作,某位團隊成員可以使其他團隊成員在主項目文件上所做的變更,在自己沙箱的圖形用戶界面上反應出來。

開發團隊成員需要在開發項目上協同、併發地工作,這樣可以大大提高軟件開發的效率。沙箱(Sandbox)爲並行開發提供了獨立的工作空間,在有的SCM工具中也稱爲工作目錄(Working Folder)。

使用沙箱(Sandbox),開發人員能夠將所有必要的項目文件拷貝到私有的一個樹型目錄,修改在這些副本上進行。一旦對修改感到滿意,就可以將修改合併(Merge)到開發主線(Main Line)上去;當然,如果該文件只有該成員一人修改,只需將修改過的文件簽入(Check In)到主項目中即可。

併發和共享是同一事物的不同方面,併發的私有工作空間共享同一套主項目(Mater Project)文件,因此有必要讓所有團隊成員擁有得知項目當前狀態的能力。SCM工具提供刷新(Refresh)操作,某位團隊成員可以使其他團隊成員在主項目文件上所做的變更,在自己沙箱的圖形用戶界面上反應出來。

六、報告(Report

 

 

 



爲保證項目按時完成,項目經理必須監控開發進程並對發生的問題迅速做出反應。報告功能使項目經理能夠隨時瞭解項目進展情況;通過圖形化的報告,開發的瓶頸可以一目瞭然地被發現;標準的報告提供常用的項目信息,定製報告功能保證了擁有適合自己需求的信息。

爲保證項目按時完成,項目經理必須監控開發進程並對發生的問題迅速做出反應。報告功能使項目經理能夠隨時瞭解項目進展情況;通過圖形化的報告,開發的瓶頸可以一目瞭然地被發現;標準的報告提供常用的項目信息,定製報告功能保證了擁有適合自己需求的信息。

七、過程自動化(Process Automation

 

 

 



SCM工具使用事件觸發機制(Event Trigger),即讓一個事件觸發另一個事件產生行爲,來實現過程自動化。比如,讓增加項目成員操作自動觸發產生功能描述表(Form操作,開發人員填制該文件的功能描述表,規範開發過程。

過程自動化不僅可以縮短複雜任務的時間,提高了生產率,而且還規範了團隊開發的過程,減少了混亂。

工具使用事件觸發機制(Event Trigger),即讓一個事件觸發另一個事件產生行爲,來實現過程自動化。比如,讓增加項目成員操作自動觸發產生功能描述表(Form操作,開發人員填制該文件的功能描述表,規範開發過程。

過程自動化不僅可以縮短複雜任務的時間,提高了生產率,而且還規範了團隊開發的過程,減少了混亂。

八、管理項目的整個生命週期

 

 

 



從開發、測試、發佈到發佈後的維護,SCM工具的使命始於項目開發之初,終於產品淘汰之時SCM工具應預先提供典型的開發模式的模板,以減少用戶的勞動;另一方面,也應支持用戶自定義生命週期模式,以適應特殊開發需要。

從開發、測試、發佈到發佈後的維護,SCM工具的使命始於項目開發之初,終於產品淘汰之時SCM工具應預先提供典型的開發模式的模板,以減少用戶的勞動;另一方面,也應支持用戶自定義生命週期模式,以適應特殊開發需要。

九、與主流開發環境的集成

 

 

 



將版本控制功能與主流集成開發環境(IDE)集成,極大地方便了軟件開發過程。從集成開發環境的角度看,版本控制是其一項新功能;從SCM工具的角度看,集成開發環境充當了沙箱的角色。

 

 

 

 

 

 

 

 

 

發佈了25 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章