楊立健
海軍駐昆明地區(qū)軍事代表辦事處魚水雷室,云南昆明 650031
隨著信息技術(shù)及軟件技術(shù)的飛速發(fā)展,裝備軟件在武器裝備的功能實(shí)現(xiàn)上所占比重越來越高,其復(fù)雜程度不斷增加,規(guī)模也越來越大。與之相適應(yīng),軍工企業(yè)在裝備軟件研制中自覺運(yùn)用了軟件工程技術(shù), 但應(yīng)當(dāng)看到的是, 軟件開發(fā)管理仍存在發(fā)展不平衡、注重結(jié)果忽視過程、軟件產(chǎn)品不完整、更改控制混亂等諸多問題,實(shí)施軟件配置管理的必要性日益突顯。GJB9001B《質(zhì)量管理體系要求》與GJB9001A相比,增加了落實(shí)軟件配置管理的要求,由此可見,很有必要進(jìn)一步深入認(rèn)識和理解軟件配置管理。
配置的概念源于制造業(yè),起初就是材料清單的概念,目的是針對復(fù)雜系統(tǒng)的各個組成部分進(jìn)行有效標(biāo)識,例如,購買計算機(jī)時,通常被問到“你要什么樣的配置”,回答往往是系統(tǒng)的CPU、磁盤以及外設(shè)配置及其相應(yīng)的品牌、規(guī)格、型號等等。軟件的復(fù)雜性日益增大,如果仍然把軟件看成一個單一的整體,就無法解決所面臨的多種產(chǎn)品開發(fā)維護(hù)、保證版本精確、對特殊版本需求的處理等問題,于是與制造行業(yè)復(fù)雜系統(tǒng)需要材料清單相類似,軟件領(lǐng)域也需要引入配置的概念。
軟件領(lǐng)域中的所謂配置項(xiàng),是軟件配置管理的對象,也就是在整個軟件生命周期內(nèi)產(chǎn)生的所有信息的集合,主要可分為三類:一是程序,含源代碼和可執(zhí)行程序;二是文檔,包括針對開發(fā)者和用戶的文件;三是數(shù)據(jù),包含了程序內(nèi)數(shù)據(jù)庫和支持軟件的外部環(huán)境等。復(fù)雜的配置項(xiàng)是分層次的,可以形象地以結(jié)構(gòu)樹表示,其分支由很多配置項(xiàng)組成,分支可以進(jìn)一步包含子分支。配置項(xiàng)和配置管理工具、配置規(guī)范、配置管理人員等構(gòu)成了整個配置管理體系。
對于軟件配置管理,一個權(quán)威的定義是:“一套應(yīng)用技術(shù)上和管理上的指導(dǎo)和監(jiān)督的方法,用來:識別和記錄配置項(xiàng)的功能特征和物理特征;控制這些特征的變更;記錄和報告變更的處理和執(zhí)行的狀態(tài);以及驗(yàn)證其符合特定的需求?!?/p>
簡而言之,軟件配置管理,就是管理軟件的變更,對軟件產(chǎn)品的配置項(xiàng)進(jìn)行管理,在整個生命周期內(nèi)盡量地減少技術(shù)狀態(tài)方面的錯誤和混亂,保證軟件產(chǎn)品的完整性、正確性和可追溯性。正如要保證一型裝備的正確制造,就要保證選取了所有正確型號、編號、批次的零部件。那么,就需要明確某種規(guī)則,標(biāo)明各零部件型號及其相互關(guān)系,并將這些配置信息形成文檔。而當(dāng)配置發(fā)生變更時,要及時更新這樣的文檔。并且,對這種變更進(jìn)行控制,以保證其得到批準(zhǔn)和相應(yīng)的測試。這些都屬于對配置的管理。
軟件也是這么配置起來的,但還有其特點(diǎn):第一,軟件變化快,版本演進(jìn)繁雜。一條語句,一個參數(shù)的改進(jìn),軟件已經(jīng)是不同的版本了;第二,裝備軟件的耦合性更高。當(dāng)開發(fā)者為某個需求改動源代碼的時候,通常會發(fā)現(xiàn),要改動的不止一處,而且從目錄結(jié)構(gòu)上看,改動之處可能分布很廣,若考慮不周,某個源代碼的變化,常會影響到相關(guān)模塊,甚至給整個軟件帶來災(zāi)難?;谏鲜鎏攸c(diǎn),軟件配置管理的主要內(nèi)容包括:
1)制定項(xiàng)目的配置計劃。為保證軟件配置管理的及時有效,其主要內(nèi)容包括:組織機(jī)構(gòu)、職責(zé)權(quán)限、活動及流程的策劃、采用的方法和工具等;2)建立組織機(jī)構(gòu)。通常根據(jù)項(xiàng)目復(fù)雜程度,按總體、系統(tǒng)、子系統(tǒng)分級設(shè)置專門的配置管理員;3)對配置項(xiàng)進(jìn)行標(biāo)識。明確基線,并為每一個配置項(xiàng)賦予唯一的標(biāo)識符,使所采用的配置標(biāo)識易于理解、識別;4)對配置項(xiàng)進(jìn)行控制。包括版本控制和變更控制,通過建立軟件“三庫”(開發(fā)庫、受控庫、產(chǎn)品庫)對入庫、出庫和更改進(jìn)行控制;5)進(jìn)行配置審計。對配置項(xiàng)的管理是否切實(shí)有效并達(dá)到預(yù)期目的進(jìn)行評價,確保配置項(xiàng)更改的正確性得到驗(yàn)證和批準(zhǔn)、配置項(xiàng)已被保存而且安全以及軟件產(chǎn)品的完整性;6)報告配置的狀態(tài)。確保相關(guān)人員及時、準(zhǔn)確地掌握配置管理的內(nèi)容和狀態(tài)。
隨著軟件工程化的不斷深入,貫徹相關(guān)國軍標(biāo)已逐漸成為一種自覺行動,但同時也可看到,對于軟件配置管理,有的軍工企業(yè)對它的理解有偏差,或者在切實(shí)實(shí)現(xiàn)過程中存在著認(rèn)識誤區(qū)。
誤區(qū)一:版本控制等于軟件配置管理
版本控制是軟件配置管理的核心功能。只有進(jìn)行了版本控制,才有了其他的功能提升的基礎(chǔ),但僅有版本控制是不全面的。有的軍工企業(yè)在具體實(shí)施配置管理的過程中,往往只注重版本控制,而沒有落實(shí)真正的配置管理。常見的一個事實(shí)是:一旦某個開發(fā)人員離開工作崗位,其原來所編寫的代碼便基本成為垃圾,由于文檔不全,無從考究,雖然其軟件版本正確,但無法維護(hù),若出現(xiàn)新的問題無法進(jìn)行修復(fù)。這種問題,說明研制單位對軟件配置管理在意識上不夠重視,沒有專門對每個開發(fā)人員的代碼和文檔進(jìn)行科學(xué)的管理,將其放在研制單位一級,進(jìn)行規(guī)范化,加以說明和存儲。由此可見,關(guān)注版本控制只關(guān)注了結(jié)果,而真正的配置管理需要在關(guān)注結(jié)果的同時更注重過程。
真正的配置管理,其中心已從文件的版本控制轉(zhuǎn)移到對開發(fā)活動的管理?;谖募陌姹究刂剖敲嫦驒C(jī)器、面向代碼的。而所謂的活動就是各種各樣的實(shí)際開發(fā)任務(wù),或者變更請求,如增加新功能、已有功能的增強(qiáng)、軟件錯誤的修復(fù),等等。配置管理工具自動為每個活動維護(hù)一個“變更集”,即該開發(fā)活動改變了哪些文件,形成了哪些新版本。變更集作為一個單一的單元參與組織和集成,從而有效保證了版本之間的一致性。由工具自動實(shí)現(xiàn)開發(fā)活動與文件的版本變化之間的關(guān)系。
誤區(qū)二:采用配置管理工具等于有效的配置管理
實(shí)施軟件配置管理需要采用配置管理工具,沒有工具的支持,進(jìn)行有效的配置管理是難以想象的。出于對工具的迷信,很多研制單位以為只要配備了配置管理工具,就自以為建立了良好配置管理體系。但使用好的工具并不能代表就能實(shí)施好配置管理。成功地運(yùn)行配置管理工具,需要規(guī)范的流程和合格的資源(包括了配置管理員、開發(fā)人員等)作為支撐。條件得不到保證的情況下,再強(qiáng)的工具也無法產(chǎn)生效益。比如利用工具執(zhí)行修改工作的時,有人修改后馬上check in;有人修改后,進(jìn)行build,然后check in;有人修改后,進(jìn)行build,并簡單的測試再check in。由此可看出,使用同樣工具的同一操作,不同的人、不同的操作流程有不同的后果。
工具和管理之間的關(guān)系是辨正的,只有當(dāng)研制單位形成了一套有效的管理規(guī)范,參與人員具備了成熟的配置管理理念,工具才有了靈魂,采用工具就能夠事半功倍。
誤區(qū)三:嵌入式軟件不是軟件產(chǎn)品
嵌入式軟件是指嵌入、運(yùn)行在硬件中的執(zhí)行程序,一般固化在存儲器芯片內(nèi),與微處理器、控制器和數(shù)字信號處理器一同構(gòu)成嵌入式系統(tǒng)。目前,武器裝備中大量采用了嵌入式系統(tǒng),而嵌入式軟件就是其軟件部分,是裝備不可缺少的一部分。必須真正認(rèn)識到, 嵌入式軟件已不是硬件的配套產(chǎn)品,而是與硬件一樣的獨(dú)立產(chǎn)品。有的軍工企業(yè),對此存在認(rèn)識上的誤區(qū),認(rèn)為嵌入式軟件既然駐留在硬件上,就應(yīng)該不是一個單獨(dú)的軟件產(chǎn)品。有的軍工企業(yè),對于嵌入式軟件沒有軟件需求分析,沒有軟件文檔,沒有軟件評審,沒有單獨(dú)的測試,更沒有軟件配置管理活動,這顯然違反了軟件工程原理。
把嵌入式軟件作為一種產(chǎn)品加以管理,主要應(yīng)做到:將其作為產(chǎn)品納入型號技術(shù)配套表;將開發(fā)過程納入型號研制,對所需的人員、經(jīng)費(fèi)、進(jìn)度和開發(fā)條件予以保障;對關(guān)鍵軟件應(yīng)建立三庫,在軟件投入使用之時,應(yīng)對配置庫進(jìn)行整理,形成一套完整的軟件配置管理報告,隨同軟件正式交付。
[1]董越.未雨綢繆:理解軟件配置管理[M].北京:電子工業(yè)出版社,2008.
[2]GJB9001B-2009 質(zhì)量管理體系要求.
[3]劉立軍.如何進(jìn)行軟件配置管理[J].中國計算機(jī)報.