基於複用的軟體開發過程中的配置管理

myattitude發表於2008-07-09

摘 要 軟體複用和配置管理具有共同的目標,都是為了提高軟體的質量和生產力,軟體複用主要關注在技術方法的實施,配置管理主要關注在管理上的實施.在許多方面,這兩種技術相互滲透.本文在介紹軟體複用和配置管理的基礎上,探討了這兩種技術的關係及其結合的方式.軟體複用是目前普遍看好的一種技術,在基於軟體複用的軟體開發過程中提供配置管理的支援有助於更好的複用。

關鍵詞 配置管理 軟體複用 軟體工程環境 軟體構件

軟體開發過程中的配置管理

配置管理並不是一個新概念,早期的軟體工程環境就已經開始考慮配置管理了.現在人們越來認識到配置管理對於提高軟體質量和軟體開發過程的可靠性有著重要意義。

配置管理的概念

配置管理是軟體配置管理的簡稱,它是指一套管理軟體開發和軟體維護以及其中各種中間軟體產品的方法和規則,配置管理通過在特定的時刻選擇軟體配置(一組中間軟體產品及描述),系統地控制對配置的修改,並在整個軟體生存週期中維護配置的完整性和可追蹤性.中間軟體產品和用於建立中間軟體產品的控制資訊都應處於配置管理控制下。

配置管理(Configuration Management)是通過技術或行政手段對軟體產品及其開發過程和生命週期進行控制,規範的一系列措施.配置管理的目標是記錄軟體產品的演化過程,確保軟體開發者在軟體生命週期中各個階段都能得到精確的產品配置。

配置管理過程是對處於不斷演化,完善過程中的軟體產品的管理過程.其最終目標是實現軟體產品的完整性,一致性,可控性,使產品極大程度地與使用者需求相吻合.它通過控制,記錄,追蹤對軟體的修改和每個修改生成的軟體組成部件來實現對軟體產品的管理功能。

配置管理對軟體開發的重要意義

隨著軟體系統的日益複雜化和使用者需求,軟體更新的頻繁化,配置管理逐漸成為軟體生命週期中的重要控制過程,在軟體開發過程中扮演著越來越來重要的角色.一個好的配置管理過程能覆蓋軟體開發和維護的各個方面,同時對軟體開過程的巨集觀管理,即專案管理,也有重要的支援作用.良好的配置管理能使軟體開發過程有更好的可預測性,使軟體系統具有可重複性,使使用者和主管部門用軟體質量和開發小組有更強的信心。

由於配置管理對軟體開發有著重要意義,配置管理在軟體開發環境中的地位也日益提高,軟體開發環境主要有兩個重點:整合和管理.配置管理是軟體開發環境中管理部分的核心,有些管理功能(比如過程管理)最初並不屬於配置管理,但隨著配置管理的不斷髮展,也逐漸成為了配置管理的一部分.整合原本是與管理相對獨立的另一部分,但人們現在也逐漸認識到,配置管理對於整合也有一定幫助.大多數實現的軟體開發環境中也都包含配置管理的功能。

配置管理的主要活動

從配置管理的定義中可以看出,配置管理中的活動主要包括:識別配置,變化控制,狀態記錄和報告以及審計.識別配置是指找出需要管理的中間產品,使其處於配置管理的控制之下,並維護它們之間的相關關係,一般說來,這些中間產品主要是程式和文件;變化控制是指記錄變化的有關資訊(包括變化的內容,原因和實現者等),用以保障軟體產品的質量;狀態記錄和報告整個軟體的變化過程的目的;審計是指利用配置記錄驗證軟體達到了預期的要求。

配置管理工具的主要功能

配置管理工具基本上都是圍繞上述四種主要活動的,有關這四方面的功能也是配置管理的基本功能,許多配置管理工具還提供一些基於基本功能的軟體開發支援,過程管理也逐漸成為配置管理的一項功能.配置管理工具的主要功能如下:

  • 配置支援 配置是一組有共同目的的中間軟體產品,其中每一箇中間軟體產品稱為一個配置項.配置管理支援使用者建立配置項之間的各種關係,並對這些關係加以維護.維護這些關係有助於完成某些特定任務(比如建立)和標識某一變化對整個系統開發的影響。
  • 版本控制 版本控制是配置管理的基本要求,它可以保證在任何時刻恢復任何一個配置項的任何一個版本.版本控制還記錄了每個配置項的發展歷史,這樣就保證了版本之間的可追蹤性,也為查詢錯誤提供了幫助.版本控制也是支援並行開發的基礎。
  • 變化控制 變化控制是指在整個軟體生存週期中的控制對軟體的變化.變化控制系統記錄每次變化的相關資訊(變化的原因,變化的實施者以及變化的內容等).檢視這些記錄資訊,有助於追蹤出現的各種問題.記錄正在執行的變化的資訊,有助於做出正確的管理決策。
  • 建立支援 軟體系統往往由許多配置項構成,建立整個系統是個複雜和費時的過程,配置管理工具可以記錄和追蹤每個配置項資訊,幫助使用者自動和快速建立系統.和版本控制結合在一起,可以有效地支援同時開發系統的多個版本。
  • 過程支援 過程詳細描述了各種人員在整個軟體生存週期中如何使用整個系統,過程控制本來是軟體開發環境中一個獨立的部分,現在配置管理也開始提供這部分功能.目前的配置管理工具對過程的支援還很不夠,而且支援方式差別還很大.許多管理只是提供一個預先定義好的生存週期模型,並保證開發的每一步都按照這個模型規定來進行。
  • 團隊支援 團隊支援是指對多個開發人員同時開發一個軟體系統的支援.由於大多數軟體系統都需要多個開發人員參與,有效的團隊支援對開發人員來說是很有用的.團隊支援主要包括:工作區管理,並行開發管理和遠端開發管理,某些配置管理工具還包括對開發人員互動的支援,團隊支援的基礎是版本控制和版本合併.工作區管理是指為每個開發人員提供獨立的工作區,開發人員可以互不干擾地進行工作,也可以選擇某個時機向其它開發人員提供自己的最新修改結果或接受其它開發人員的修改結果;並行開發管理是指多個開發人員同時進行的修改可以合併,它可以儘可能地自動解決合併中可能出現的衝突;遠端開發管理實際上是並行開發管理的特例,是指在廣域網上並行開發的管理,許多適合於區域網的方法可能不適合廣域網。
  • 報告/查詢 配置管理可以向使用者提供配置庫的各種資訊,主要包括:依賴關係報告,變化影響報告,建立報告,配置項狀態報告,版本差異報告,歷史報告,訪問控制報告,衝突檢測報告.實際上,在許多配置管理工具中此項功能是分散在各種相應的功能中的。
  • 審計控制 配置管理通過審計控制來驗證配置管理過程,以保證配置庫中所有配置項的完整性.簡單的審計控制是記錄配置管理工具執行的所有命令,複雜的審計控制還包括記錄每個配置項的狀態變化。

其它功能 除了以上的主要功能外,配置管理還可以提供許可權控制,人員管理和配置管理等功能,這些功能主要是為配置管理實現以上功能提供保障。

基於複用的軟體開發

隨著軟體規模的不斷擴大,人們對軟體生產效率和質量的要求越來越高,長期以來,研究人員一直致力於提高軟體生產率和軟體質量.目前,人們逐漸認識到,軟體複用是解決上述問題的現實可行的途徑。

基於複用的軟體開發模型

基於複用的軟體開發主要分為兩個方面:開發可複用構件和利用可複用構件進行開發.開發可複用構件是指將過去的軟體產品改造成或直接開發出更復用的構件,這些構件應具有較高的質量和較好的可複用價值;利用可複用構件進行開發是指在已有的可複用構件的基礎上構件應用系統,此時應保證複用已有構件比重新開發更有好處。

開發可複用構件

大多數軟體人員進行軟體開發時並沒有考慮到複用,他們生產出的產品可複用性很差.例如,大量的程式只能執行在特定的環境中,程式模組存在著多種多樣的呼叫關係,沒有獨立性和封裝性,沒有標準的介面,使得以後的開發很難將其複用.因此,基於複用的軟體開發的一個重要方面,就是將複用性較差的軟體產品改造成具有較高可複用性的構件。

領域工程在構件開發中有著重要的地位.領域工程的主要思想是對應用於某一領域的已經存在的多個系統進行分析,通過相似系統之間的比較,尋找到該領域中存在的實體,關係和操作,並將它們進行抽象,最終改造為可複用的構件.構件開發出來後必須進行測試,以保證其可複用性。

為了方便複用者找到需要的構件,對構件要進行分類,並將其存入構件庫.構件的分類和構件的提取是密切相關的。

利用可複用構件進行開發

基於複用的軟體開發者與傳統的軟體開發者的工作有很大的不同,他們不必一切從零做起,如不必編寫所有的程式程式碼.主要任務是使用已存在構件庫中的構件去構造滿足使用者需求的構件系統.用構件進行開發包括下述環節:

構件提取 可複用構件可能數量龐大,它們應用於不同領域(如資料庫管理和工程計算等),完成不同功能.為了方便複用者查詢到,必須對構件進行有效的組織和管理,不同的構件系統提供了不同的分類和查詢策略.好的分類和查詢策略有助於提高查詢的質量.基於關鍵詞的分類和查詢策略是一種最常見的分類和查詢策略;REBOOT系統採用了一種基於刻面的分類方法,根據構件的抽象層次,功能,功能物件,環境依賴(不同平臺)對構件進行描述和分類,在查詢和提取構件時,複用者把對構件的要求轉化為對刻面的描述,從構件庫中查詢和提取構件;JBⅢ中的構件系統採用了以刻面分類為主的多種分類和查詢策略,這樣可以結合各種策略的優點,提高查詢的質量.另外,由於使用者需求的不確定性,可能造成查詢質量降低,因此構件庫系統還可以提供模糊查詢機制。

構件的適應性修改 一般說來,提取出來的構件很難完全達到複用者的要求,複用者需要對這兩者之間的差距進行評估,並對構件做一定的適應性修改,使之達到要求.構件的適應性修改包括三個方面:選擇,修改和整合,其中修改是最重要的一個方面.複用的基本要求是複用構件的代價要小於重新開發的代價,如何減少構件修改的代價對複用是非常重要的。

構件組裝 找到所需的構件後,就要對構件進行組裝,構件的組裝並不一定要求將構件直接組裝成應用系統,可以先將小粒度的構件組裝成大粒度的構件,最後再組裝成整個系統。

軟體開發環境對軟體複用的支援

整個基於複用的軟體開發過程都離不開軟體開發的環境的支援.軟體開發環境將各種複用工具(如構件提取,構件組裝,構件庫的管理等)和開發工具整合一個系統,使各種工具能互相呼叫,協調工作;軟體開發環境中所提供的通訊與併發機制加強了複用者之間的協調;軟體開發環境為複用者提供了簡單,一致和方便的介面。

配置管理是軟體工程環境的熱點,在其中佔有重要位置.在基於複用的軟體開發過程中,配置管理也起了重要作用。

基於複用的軟體開發對配置管理的要求

隨著新技術(ActiveX,OLE,JAVA,IDL,COBRA等)的出現,軟體複用對配置管理提出了新的需求,配置管理應記錄專案中正在使用的構件與相應的在構件庫中的構件的追蹤關係;針對可複用構件,配置管理應記錄更多的資訊.實際上,配置管理和軟體複用有著更密切的關係.複用使得軟體開發分為兩個階段;可複用構件的開發和利用可複用構件進行開發,配置管理在這兩個階段中都能起到重要作用.
開發可複用構件時的配置管理

可複用構件的開發也是一種開發,配置管理對軟體開發的作用也可以在其中體現出來.提高可複用性是開發可複用構件的一個重要目標,目前主要從技術的角度研究如何提高可複用性,實際上,好的管理也對提高可複用性有著重要意義.構件的質量是構件可複用性的一個重要方面,構件使用者對構件質量的要求比對普通軟體質量的要求要高.配置管理可以有效地提高構件的質量,從而提高其可複用性.另外,開發可複用構件時也可能會複用已有的構件。

利用可複用構件進行軟體開發時的配置管理

利用構件進行軟體開發可以分為三個方面:構件提取,構件組裝和構件的適應性修改.]在構件提取方面,配置管理可以提高構件提取的質量;在構件組裝方面,配置管理有助於在提取的同時進行組裝;在構件的適應性修改方面,配置管理可以控制構件的變化,保證構件的適應性修改正確完成。

構件提取時的配置管理

好的構件庫組織和管理可以提高構件提取的質量,配置管理對構件庫的組織和管理有很大的幫助.一個構件在構件庫中往往需要儲存多個版本,不同版本之間的差異可能是使用平臺不同,也可能是功能或使用方式的差異.許多構件庫系統都記錄構件間的版本關係。

利用配置管理中的版本控制,可以更好地維護構件間的版本關係.配置管理採用增量儲存,可以減少這些構件在構件庫中所佔的空間,從而提高構件庫的容量.多個構件可能會包含相同的成分,比如有兩個構件,每個構件都包含多個類,其中有些類是這兩個構件共有的.利用配置管理,這些類就可以只儲存一份,這樣可以減少冗餘,保證一致性。

由於構件庫使用者對構件庫的查詢機制不夠熟悉或者難以準確表達查詢要求,有時所需構件在構件庫中存在,但不能查出來,或者查出來許多顯然不需要的構件,這樣就會影響開發的效率.構件庫中的構件大多數是領域相關的,因此在開發某一專案時,構件庫中許多構件是不可能在該專案中複用的,有可能在該專案中複用的構件主要是通用構件和與該專案所處領域相關的構件.如果將這些構件的查詢資訊以配置的形式記錄下來,使得開發人員對構件的查詢可以僅在這些構件中進行,構件提取的質量會有較大提高.在構件庫中尋找有可能在某一特定專案中複用的構件,可以由對構件庫和該專案都比較熟悉的開發人員來完成,提取的質量也會比較高。

構件組裝時的配置管理

在進行構件組裝時,組裝的結果可能仍是可複用的構件,這些組裝出來的構件也應該儲存在構件庫中,供以後使用.由於這些構件的組成部分都已存在於構件庫中,再在構件庫中儲存這些構件不是個好辦法.因此,構件庫應該在不直接儲存組合構件的情況下,提供查詢構件的功能.此時,由於不能窮舉出構件庫中所有的構件組合,必須採取一些實際可行的辦法使得要查詢的構件組合的數目降下來[3].從管理的角度看,可以把可能的構件組合以配置的形式記錄下來,供使用者查詢,甚至可以在構件庫的使用過程中逐漸將新的構件組合新增到構件庫中。

構件適應性修改時的配置管理

構件的使用者往往不是構件的開發者,對構件不夠熟悉,構件的使用者在對構件進行修改時,可能為很小的修改要付出巨大的工作量;而且由於修改不當,還可能引入錯誤,造成構件複用的失敗.配置管理有助於減少構件修改的工作量和保證構件修改正確完成.在對構件進行修改的過程中,構件使用者往往不能一次找到正確的修改辦法,因此需要嘗試多種修改辦法.利用配置管理中的版本控制,記錄構件修改過程中的多個版本,可以避免多次嘗試之間的相互影響,也可以儘可能地儲存以前有用的工作,減少重複勞動,從而減少構件修改的工作量。

一個構件可能包含多個部分,對一個部分的修改可能會對其它部分造成影響.利用配置管理中的配置支援和變化控制,還可以在構件修改過程中維護各個部分的一致性.配置管理可以記錄每次修改對整個構件的影響,有助於使修改區域性化,減少修改造成的對整個構件的影響,指導複用者正確完成構件的適應性修改。

軟體複用的實際效益

日美的一些大公司的資料表明,軟體複用率最高可望達到90%,而且軟體複用使得企業在及時滿足市場,軟體質量,軟體開發費用和維護率等方面得到顯著的改進.例如,AT&T的電信操作支援系統軟體複用率達40%~92%;Motorola公司在為編譯器和編譯器工具編寫測試包時,複用率達85%;Ericssion AXE公司的電信開關係統產品,複用率達90%.Hewlett-Pachard公司早在1984年就開始開發可複用構件,1987年建立複用庫,據80年代幾個方面的統計,複用率達25%~50%.惠普公司在1990年開始實施一個"巨集偉"的複用計劃,收集並研究最好的體系結構,過程,組織結構,打算將其裝備公司的各個部門,但通過實踐,惠普公司採用典型示範先行的系統的過渡方法,成功地在公司內逐步地全面實施複用。

根據1991年的一份報告說,日本的軟體大公司在80年代中期複用率就達50%左右;1997年的一份報告說,Hitachi的Eagle環境,達60%~98%,該環境讓軟體工程師可以複用標準的程式框架和函式過程。

除了複用率之外,在企業的經營管理方面也可望達到理想的效益.例如,上市時間可縮短2~5年;軟體產品的缺陷密度可減少5~10倍;軟體產品的維護可減少5~10倍;軟體開發總費用可減少15%~75%,其中75%是針對長期專案,包括開發可複用資產以及支援複用的負擔。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14780914/viewspace-374781/,如需轉載,請註明出處,否則將追究法律責任。

相關文章