(南瑞集團(tuán)(國(guó)網(wǎng)電力科學(xué)研究院)有限公司,江蘇南京市,210013) 劉 杰 楊丹琳 丁 捷
隨著中國(guó)經(jīng)濟(jì)的快速發(fā)展,電網(wǎng)規(guī)模不斷擴(kuò)大,電網(wǎng)調(diào)度日趨復(fù)雜,能源轉(zhuǎn)型的不斷深入,電力系統(tǒng)進(jìn)入新時(shí)代,特高壓交直流混聯(lián)電網(wǎng)規(guī)??焖贁U(kuò)大,高滲透率新能源快速發(fā)展,分布式電源、儲(chǔ)能等新型負(fù)荷比例快速上升,正在形成智能互動(dòng)、安全可控、靈活柔性、廣泛互聯(lián)的新一代電力系統(tǒng),對(duì)調(diào)控技術(shù)支撐能力提出了新的要求。目前,調(diào)控基礎(chǔ)條件不斷夯實(shí),ICT技術(shù)日新月異,大規(guī)模仿真計(jì)算取得突破,研發(fā)新系統(tǒng)條件已經(jīng)成熟。
為適應(yīng)新一代電力系統(tǒng)發(fā)展和安全穩(wěn)定優(yōu)質(zhì)運(yùn)行的需要,顯著提升對(duì)大電網(wǎng)一體化控制、清潔能源全網(wǎng)統(tǒng)一消納、源網(wǎng)荷協(xié)同互動(dòng)和市場(chǎng)化運(yùn)作的支撐能力,國(guó)家電網(wǎng)公司提出研發(fā)新一代調(diào)度控制系統(tǒng)(以下簡(jiǎn)稱“新一代系統(tǒng)”),體系架構(gòu)如圖1所示。
圖1 系統(tǒng)體系架構(gòu)
新一代系統(tǒng)應(yīng)用先進(jìn)成熟技術(shù),采用“物理分布、邏輯統(tǒng)一”的全新架構(gòu),基于統(tǒng)一的支撐平臺(tái),由部署于調(diào)度端的監(jiān)控系統(tǒng)和部署于云端的模型數(shù)據(jù)中心及分析決策中心等部分組成,其目標(biāo)是實(shí)現(xiàn)“全業(yè)務(wù)信息感知、全系統(tǒng)協(xié)同控制、全過(guò)程在線決策、全時(shí)空優(yōu)化平衡、全方位負(fù)荷調(diào)度”的愿景,全面支撐新一代電力系統(tǒng)運(yùn)行[1-2]。
為了滿足迭代開發(fā)管理改進(jìn)的需求,加強(qiáng)開發(fā)過(guò)程中對(duì)代碼的管理和控制,文中設(shè)計(jì)了一種適用于新一代系統(tǒng)迭代開發(fā)的多分支配置管理技術(shù),它首先實(shí)現(xiàn)了快速迭代開發(fā)階段代碼版本可追溯,其次保證了各模塊并行開發(fā)時(shí)互不干擾,再者通過(guò)嚴(yán)格的模塊權(quán)限管理,提高了代碼安全性,最后通過(guò)持續(xù)集成平臺(tái)部署了每日構(gòu)建,實(shí)現(xiàn)每周基本功能集成測(cè)試和每周新代碼發(fā)布,為新一代系統(tǒng)軟件的質(zhì)量保障提供更好的支撐。
在Wayne Baich 的(SCM Coordination for Team Productivity)一文中,對(duì)軟件配置管理(簡(jiǎn)稱SCM)進(jìn)行了定義:“協(xié)調(diào)軟件開發(fā)使得混亂減到最小的技術(shù)叫做軟件配置管理,它是一種標(biāo)識(shí)、組織和控制修改的技術(shù),目的是使錯(cuò)誤達(dá)到最小并最有效地提高生產(chǎn)效率。”它貫穿整個(gè)軟件生命周期并應(yīng)用于整個(gè)軟件工程過(guò)程。是軟件工程中用來(lái)管理軟件開發(fā)的規(guī)范,也是CMM(軟件能力成熟度)二級(jí)中的關(guān)鍵過(guò)程域[3]。SCM 是軟件質(zhì)量改進(jìn)的核心環(huán)節(jié),它貫穿于整個(gè)軟件生命周期,為軟件改進(jìn)提供了一套解決辦法與活動(dòng)原則。Anne Mette Jonassen Hass 的(Configuration Management Principles and Practice)對(duì)軟件配置管理的理解是“對(duì)系統(tǒng)生命周期內(nèi)所選定的中間工作產(chǎn)品、產(chǎn)品組件以及產(chǎn)品的唯一標(biāo)識(shí)、受控存儲(chǔ)、變更控制和狀態(tài)報(bào)告?!蔽闹畜w現(xiàn)SCM不僅加強(qiáng)了軟件質(zhì)量和可靠性,而且為軟件提供有效的開發(fā)和維護(hù)方案,以便高效地識(shí)別和控制文檔、代碼、接口和數(shù)據(jù)庫(kù)等軟件元素。SCM可以有效地控制復(fù)雜的軟件版本,提供并行開發(fā)方案,規(guī)范軟件測(cè)試和消缺流程,完善保密且安全的備份方案,實(shí)現(xiàn)項(xiàng)目管理和軟件產(chǎn)品信息規(guī)范化等重要功能[4-5]。
軟件分支是軟件版本控制、軟件構(gòu)建管理和版本發(fā)布管理的重要組成部分,是支持軟件并行開發(fā)的常用機(jī)制。運(yùn)用分支使得并行開發(fā)新的系統(tǒng)、同步更改多個(gè)并行版本的錯(cuò)誤、同時(shí)集成和發(fā)布多個(gè)版本成為可能。如Clearcase、Git 等版本管理工具都支持分支。自動(dòng)化更新和測(cè)試是通過(guò)在持續(xù)集成工具Jenkins 上配置腳本命令,持續(xù)構(gòu)建包括:源碼版本自動(dòng)更新、自動(dòng)編譯與運(yùn)行、測(cè)試結(jié)果自動(dòng)分析等任務(wù),實(shí)現(xiàn)編譯測(cè)試的自動(dòng)化[6]。
多分支配置管理技術(shù)就是基于新一代系統(tǒng)的開發(fā)現(xiàn)狀,制定適用于多個(gè)模塊并行開發(fā),但相互之間互不干擾的分支策略,結(jié)合嚴(yán)格的配置管理規(guī)定、持續(xù)集成技術(shù),以實(shí)現(xiàn)改進(jìn)新一代開發(fā)模式,提高開發(fā)效率和軟件代碼質(zhì)量的目的。
對(duì)平臺(tái)各模塊單獨(dú)創(chuàng)建分支進(jìn)行管理,每個(gè)分支對(duì)應(yīng)單獨(dú)的測(cè)試環(huán)境,測(cè)試環(huán)境互不干擾。各模塊功能通過(guò)自測(cè)后,統(tǒng)一并入主干分支進(jìn)行階段集成測(cè)試,待主干分支的階段集成測(cè)試完畢后,將公共部分由主干分支同步給各分支,以便各模塊進(jìn)行下一階段的開發(fā)和自測(cè)試。在此策略管理下,各模塊開發(fā)、測(cè)試相對(duì)獨(dú)立,且互不干擾,大大減少了開發(fā)階段因各模塊開發(fā)進(jìn)度不一致導(dǎo)致頻繁地遞歸測(cè)試,無(wú)法將已穩(wěn)定的功能固定下來(lái),而導(dǎo)致增加返工的概率和人力的浪費(fèi)。
為了使各功能模塊互不干擾,需對(duì)各模塊功能分配獨(dú)立的測(cè)試機(jī),為保證測(cè)試機(jī)源碼實(shí)時(shí)更新和自動(dòng)編譯,配置源碼版本庫(kù)自動(dòng)更新功能和自動(dòng)編譯腳本執(zhí)行。在Jenkins 上構(gòu)建源碼代碼版本庫(kù)管理任務(wù),實(shí)時(shí)監(jiān)測(cè)版本變化功能,一旦發(fā)現(xiàn)版本變化,便觸發(fā)版本管理工具更新源碼,并記錄下版本變化情況。
考慮到各分支開發(fā)進(jìn)度和測(cè)試進(jìn)度不一致,對(duì)分支源碼的合并制定了要求。首先,各分支已完成開發(fā)的代碼,需進(jìn)行自測(cè);在約定集成測(cè)試之前,統(tǒng)一合并主干,合并主干的過(guò)程由各組組長(zhǎng)完成,以保證合并的準(zhǔn)確性;待各分支代碼合并完成后,在Jenkins構(gòu)建主干源碼代碼版本庫(kù)管理任務(wù),監(jiān)控集成測(cè)試整體編譯和增量代碼變化,記錄下版本變化情況,以便代碼追蹤和回滾,直至整體編譯通過(guò)。待功能全部測(cè)試完成后,代碼由主干合并回各分支。
作為研發(fā)團(tuán)隊(duì),學(xué)會(huì)運(yùn)用多分支管理策略對(duì)軟件版本進(jìn)行管理,不僅可以規(guī)范開發(fā)過(guò)程,而且可以有效地提高開發(fā)效率。另外,多分支管理結(jié)合持續(xù)集成平臺(tái),從源碼版本庫(kù)自動(dòng)更新、自動(dòng)編譯及運(yùn)行,逐步完善、提高,最終實(shí)現(xiàn)整體的自動(dòng)化。多分支管理策略在新一代調(diào)控系統(tǒng)平臺(tái)的應(yīng)用,實(shí)際解決了多模塊代碼并行開發(fā)效率的問(wèn)題,能夠更有效地從整體上管理和提高產(chǎn)品的質(zhì)量,為新一代調(diào)控系統(tǒng)平臺(tái)的研發(fā)提供了有益的參考。