999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

國家數(shù)值風(fēng)洞(NNW)軟件自動化集成與測試平臺設(shè)計與研發(fā)

2020-12-21 14:02:46郭勇顏曾志春賴相成
空氣動力學(xué)學(xué)報 2020年6期

何 磊, 郭勇顏, 曾志春, 賴相成, 趙 鐘

(中國空氣動力研究與發(fā)展中心 計算空氣動力研究所, 綿陽 621000)

0 引 言

計算流體力學(xué)(Computational Fluid Dynamics,CFD)技術(shù)發(fā)展的一個重要標(biāo)志是各種CFD通用商業(yè)軟件的陸續(xù)出現(xiàn)。而我國CFD軟件在歷史上發(fā)展嚴(yán)重滯后。一大批國外商業(yè)CFD軟件涌入我國市場,如ANSYS Fluent、ANSYS CFX、CFD++、STAR-CD、NUMECA等,這些軟件功能全、求解速度快,同時以客戶需求作為開發(fā)的導(dǎo)向,很快獲得了一大批用戶的青睞,占領(lǐng)了大部分市場。

近年來,受益于計算機水平的不斷提高、成本的不斷下降,以及國家在科研領(lǐng)域的持續(xù)投入,航空航天領(lǐng)域的各個大學(xué)、研究院所紛紛發(fā)展推出各類In-House CFD Codes,一些CFD軟件公司也推出自主商用CFD軟件,我國自主CFD軟件發(fā)展形勢喜人。

然而,國產(chǎn)CFD軟件大部分屬于研究性軟件,少數(shù)屬于專業(yè)軟件,特點是軟件精巧、專業(yè)性強、求解問題有限,對于軟件開發(fā)人員或?qū)λ惴ㄊ煜さ募夹g(shù)人員,可以計算得到精度較高的結(jié)果。盡管我國的CFD軟件在長期的發(fā)展過程中,取得了長足的進步,但是受限于CFD軟件開發(fā)的歷史局限,在開發(fā)模式方面和國外軟件還存在一定差距,主要體現(xiàn)在:(1)開發(fā)模式落后。大部分軟件實際上是具備某種專業(yè)功能的計算代碼,沒有結(jié)合現(xiàn)代軟件工程思想,程序基本上是面向過程式開發(fā)。隨著軟件規(guī)模的擴大、軟件功能的增加,代碼量急劇增長,面向過程式開發(fā)軟件的可擴展性、易維護性都大大降低。(2)軟件開發(fā)目標(biāo)不明確。很多國內(nèi)早期的計算軟件往往是出于某個工程任務(wù)或?qū)W術(shù)研究的需要而開發(fā),軟件研制的主要目的之一是解決某類特定問題,在開發(fā)過程中為了快速達到目的,只側(cè)重某類功能的實現(xiàn),導(dǎo)致軟件的體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)考慮不周全,可擴展性差。(3)軟件測試不夠系統(tǒng)。CFD軟件除了要進行驗證與確認外,在開發(fā)過程中還需要大量單元測試、集成測試,以保證軟件質(zhì)量。

相比較而言,國外大型CFD軟件項目在開發(fā)過程中非常重視與現(xiàn)代軟件工程思想和方法的結(jié)合。

從2008年開始至2020年結(jié)束,美國國防部在研項目“計算研究與工程采購工具與平臺”[1-4](Computational Research and Engineering Acquisition Tools and Environments,CREATE)是為了工程設(shè)計與分析而發(fā)展的多學(xué)科的軟件工具平臺,共計投入3.6億美元。該項目十分重視測試,其中四大模塊之一的Kestrel[5]就包含4個層次的自動化測試:單元測試、融合測試、系統(tǒng)測試和可信度測試。目前,Kestrel擁有3485個單元測試、239個融合測試、21個系統(tǒng)測試,每天都必須運行這些測試,大致產(chǎn)生17 189個功能正確性判定。同時,可信度自動化測試系統(tǒng)(Automated Testing System,ATS)在美國國防部的超級計算機上每兩周運行一次,ATS包含124個獨立的計算任務(wù),大概需要43 000個CPU機時才能完成測試。

Flucs[6-8](Flexible Unstructured CFD Software),是德宇航(DLR)正在研發(fā)的一款面向下一代的CFD軟件。與DLR的傳統(tǒng)CFD軟件開發(fā)過程相比,F(xiàn)lucs最大的變化體現(xiàn)在軟件開發(fā)模式、編程框架和并行計算等方面。在軟件開發(fā)模式方面,大量采用現(xiàn)代軟件開發(fā)思想及方法,如采用分布式版本控制工具GIT、基于WEB的版本Review系統(tǒng)、不間斷的持續(xù)集成、自動化測試方法等。

除了開發(fā)模式外,軟件測試也是制約大型CFD軟件研制成功與否的關(guān)鍵因素。隨著人們對軟件測試重要性的認識越來越深刻,軟件測試階段在整個軟件開發(fā)周期中所占的比重日益增大。無論是從軟件開發(fā)方法學(xué)還是軟件測試自身的效益看,軟件測試在今后很長時間內(nèi)仍將是保證軟件質(zhì)量和可靠性的重要手段。CFD軟件的開發(fā)測試是一項系統(tǒng)工程。國外CFD軟件開發(fā)過程中引入了嚴(yán)格的質(zhì)量管控體系,從開發(fā)到發(fā)布的全生命周期要經(jīng)過非常嚴(yán)格的系列測試,很好地保證了軟件質(zhì)量。

現(xiàn)代軟件開發(fā)過程中,軟件測試人員往往占到開發(fā)人員40%以上,對于某些性命攸關(guān)的軟件,其測試費用甚至高達所有其他軟件工程階段費用總和的3到5倍[9]。許多世界級的公司(如Google公司)可以打造出世界級的軟件,這與其對待質(zhì)量的方法是離不開的[10]。他們把軟件開發(fā)過程和測試融合在一起,二者同時開展。開發(fā)過程中,并不是將軟件測試當(dāng)作獨立隔離的活動,而是把它作為開發(fā)過程的一部分。當(dāng)開發(fā)和測試融合在一起,就像在攪拌機里混合攪拌那樣,直到不能區(qū)分彼此的時候,就得到了質(zhì)量,這也是“測試驅(qū)動開發(fā)”軟件開發(fā)模式的基本思想。

與傳統(tǒng)軟件測試不同的是,由于以CFD為代表的科學(xué)計算過程包括邏輯運算和浮點運算,因此CFD軟件測試除了要開展常規(guī)的靜態(tài)掃描、單元測試以及邏輯正確性測試外,還要開展針對不同科學(xué)算例的集成測試和回歸測試。CFD軟件的集成測試是保證CFD軟件質(zhì)量的最后一道屏障,而目前大多數(shù)從業(yè)者依靠開發(fā)者人工發(fā)送計算作業(yè)、手動收集計算結(jié)果進行對比分析,占去了CFD軟件開發(fā)者的大量時間,嚴(yán)重影響了CFD軟件的開發(fā)效率。并且往往是在開發(fā)后、發(fā)布前進行集成測試,存在軟件開發(fā)與軟件測試嚴(yán)重脫離的問題。隨著軟件版本的更新,不但不能保證CFD軟件開發(fā)的穩(wěn)步前進,質(zhì)量問題也得不到明確的保障。所以,在CFD軟件開發(fā)中引進自動化測試系統(tǒng)顯得尤為重要。

為了滿足我國在航空航天、交通運輸、能源動力、橋梁建筑等產(chǎn)業(yè)創(chuàng)新以及武器裝備研制過程中對大規(guī)模CFD軟件的需求,中國空氣動力研究與發(fā)展中心開發(fā)了一款通用CFD軟件——“風(fēng)雷”軟件[11-14](NNW-PHengLEI,源于作者團隊開發(fā)的結(jié)構(gòu)/非結(jié)構(gòu)混合求解器HyperFLOW[15-17])。該軟件研制目標(biāo)是開發(fā)一款面向下一代的、結(jié)構(gòu)解算器/非結(jié)構(gòu)解算器耦合求解的、具備多學(xué)科計算擴展能力的大型通用CFD軟件。該軟件已于2016年面向全國發(fā)布并免費使用。

此前,在“風(fēng)雷”軟件開發(fā)過程中,為了提高開發(fā)效率、保證軟件質(zhì)量,并減少測試工作對于人力資源的過多占用,開發(fā)了與CFD軟件平臺匹配的自動化測試平臺(Automated Test Platform,ATP)[18]。該平臺基于數(shù)據(jù)庫,通過前臺界面和遠程集群后臺管理程序的網(wǎng)絡(luò)進行信息交互。自動化測試的主要工作原理是:在已建立的基本CFD算例數(shù)據(jù)庫基礎(chǔ)上,“風(fēng)雷”軟件每次版本提交后自動編譯并運行數(shù)據(jù)庫中的所有算例,將計算結(jié)果和標(biāo)準(zhǔn)結(jié)果進行對比以檢測代碼是否正確,與此同時,對計算結(jié)果進行統(tǒng)計分析、誤差分析等初步的驗證與確認。ATP平臺具備友好的人機交互界面,開發(fā)了算例管理、算例測試監(jiān)控和算例結(jié)果分析等功能,大幅提高了“風(fēng)雷”軟件的開發(fā)效率,減少了代碼錯誤率,CFD代碼質(zhì)量得到有效保證。

然而,隨著“風(fēng)雷”開發(fā)團隊的擴大、軟件功能的增加,軟件開發(fā)過程中的一些開發(fā)模式問題逐漸顯現(xiàn)出來。大型軟件一般需要數(shù)十個乃至上百個程序員一起進行并行開發(fā),他們會分為多個開發(fā)組,完成不同的模塊任務(wù),也必然會在同一套代碼下面工作。目前,風(fēng)雷軟件代碼量已經(jīng)達到數(shù)十萬行,開發(fā)團隊人員達到數(shù)十人,每天都有數(shù)十個版本更新。隨著開發(fā)規(guī)模的逐漸擴大,在實際開發(fā)中陸續(xù)出現(xiàn)以下新問題:

(1)代碼管理難度及學(xué)習(xí)成本增加。只有幾個人的開發(fā)團隊可以用單一的SVN等工具管理代碼,當(dāng)團隊增加后,在代碼分支、代碼權(quán)限等方面出現(xiàn)不可調(diào)和的矛盾。而且,新人學(xué)習(xí)需要花費大量時間,極易因為錯誤的操作導(dǎo)致混亂,嚴(yán)重阻滯軟件的開發(fā)進程。

(2)模塊化開發(fā)難度劇增。對于大型通用CFD軟件,功能復(fù)雜,模塊數(shù)量多,往往需要根據(jù)不同的開發(fā)小組將軟件分解為不同的模塊,各模塊以靜態(tài)庫或動態(tài)庫的形式在其他團隊中得到體現(xiàn),而單一版本的軟件代碼難以勝任。

(3)人工成本增加。大型通用CFD軟件被分解為若干個模塊后,在每次測試前,需要人工部署、人工集成,既增加人工成本又容易出錯。而且,在開發(fā)過程中,軟件代碼的變動很大,往往以前驗證確認的算例在經(jīng)過一些版本的升級之后又需要重新進行驗證確認,人工成本太大,基本屬于重復(fù)性工作,效率低下。

(4)缺陷率增加。由于代碼的更新迭代的速度很快,錯誤的累積和糾纏將導(dǎo)致錯誤更加隱蔽,由此產(chǎn)生的代碼停滯將直接阻礙軟件開發(fā)的進度,造成軟件開發(fā)周期的失控。多人并行開發(fā)導(dǎo)致多樣性的錯誤源,每個人引入的錯誤會直接或間接地導(dǎo)致其他人開發(fā)出現(xiàn)問題,并且很難找到問題所在。

大型軟件的開發(fā)不同于小作坊式個體勞動,是有組織有計劃的群體活動。針對上述問題,“風(fēng)雷”軟件開發(fā)過程中不僅需要ATP,還需要一個持續(xù)集成平臺(Automated Continuous Integration,ACI)從事代碼集成管理工作,并且將二者相結(jié)合起來,形成一個完善可靠的風(fēng)雷軟件開發(fā)管理環(huán)境,提升軟件開發(fā)的質(zhì)量與效率。

在文獻[18]中已經(jīng)對“風(fēng)雷”軟件自動化測試平臺ATP進行了詳細介紹,本文主要介紹持續(xù)集成平臺ACI的設(shè)計開發(fā)以及和ATP一起形成的CFD軟件開發(fā)環(huán)境。

1 開發(fā)環(huán)境設(shè)計

1.1 總體設(shè)計

開發(fā)環(huán)境是開發(fā)團隊與軟件之間的紐帶,基于該環(huán)境,開發(fā)團隊實施編碼、版本管理、集成、測試,通過建立規(guī)范統(tǒng)一的CFD軟件代碼開發(fā)流程,不斷地將開發(fā)成員的工作集成到軟件主體,經(jīng)過嚴(yán)格的代碼審核后提交進入代碼庫,然后經(jīng)過自動構(gòu)建、自動部署、自動測試等過程,形成可供直接使用的CFD軟件產(chǎn)品,并將整個過程中出現(xiàn)的問題及時地反饋給開發(fā)人員,開發(fā)人員及時解決此次集成中出現(xiàn)的錯誤后重新進行提交集成,從而形成一個不斷修正、不斷完善的良性開發(fā)流程。該環(huán)境由自動化持續(xù)集成平臺(ACI)、自動化測試平臺(ATP)組成(如圖1)。

自動化持續(xù)集成平臺(ACI),基于開源代碼管理工具Gitlab,負責(zé)軟件模塊(團隊)管理、代碼版本管理(提交、審核、合并、集成)。CFD軟件往往由多個模塊組成,PHengLEI軟件由前處理、解算器、后處理三大模塊構(gòu)成,各模塊具有其獨立性,但模塊之間又存在一定依賴性。每個模塊在開發(fā)的過程中都有相應(yīng)的開發(fā)團隊。由于每個模塊所需要開發(fā)的功能復(fù)雜,且需要開發(fā)人員具備較高專業(yè)水平的CFD理論基礎(chǔ),因此團隊中的開發(fā)人員只能專注于某一個功能模塊的開發(fā),而無多余的時間精力關(guān)注其他功能模塊,由此,團隊中的密切協(xié)作至關(guān)重要。由于復(fù)雜的CFD功能模塊開發(fā)周期較長而且模塊之間存在相互依賴性,所以采用的自動化持續(xù)集成方案既要考慮到集成的長期性和穩(wěn)定性,也要關(guān)注模塊的依賴性,盡早發(fā)現(xiàn)問題盡早解決,保證軟件的整體開發(fā)進度。為此,ACI中構(gòu)建了“團隊—模塊—庫”的對應(yīng)關(guān)系,即,將開發(fā)團隊分成不同的組,開發(fā)對應(yīng)的功能模塊。例如,圖1中列出了2組,分別對應(yīng)開發(fā)API模塊和CFD模塊。

圖1 平臺總體方案設(shè)計圖

自動化測試平臺(ATP),負責(zé)對ACI集成之后的軟件進行測試。團隊開發(fā)過程中會頻繁提交代碼,通過ATP控制每次提交代碼的質(zhì)量,減小錯誤率。

1.2 自動化持續(xù)集成平臺ACI

持續(xù)集成被認為是一種基于某些變化,對軟件系統(tǒng)進行的經(jīng)常性的構(gòu)建活動。從人與人的交互性方面,持續(xù)集成又被認為是軟件開發(fā)團隊所采用的整個開發(fā)流程及活動,它強調(diào)開發(fā)團隊與軟件系統(tǒng)之間的互動性,其典型特征在于“持續(xù)”與“自動化”。自動化持續(xù)集成平臺(ACI)的功能是協(xié)同管理開發(fā)團隊提交的分支或主干代碼,將其編譯、集成、部署,得到滿足需求的軟件產(chǎn)品。在一個持續(xù)集成周期內(nèi),主要包括:

(1)部件管理。基于“團隊—模塊—庫”模式,將PHengLEI軟件分解為多個模塊,主要包含CFD解算器和應(yīng)用程序編程接口(API)兩個部分,API自底而上又分為Common、DataStruct、Math層,Data、MPI、Toolkit層,和Geometry、IO層,每個層次分屬不同的開發(fā)團隊,一個模塊對應(yīng)一到兩個開發(fā)人員。開發(fā)人員提交代碼后,能編譯所屬的代碼庫,并通過“鉤子”,將歸屬其他團隊的模塊類庫,拉取到環(huán)境并鏈接,生成可執(zhí)行程序。

圖2 風(fēng)雷類庫圖

(2)分支管理。考慮到集成的長期性和穩(wěn)定性,代碼由分支和主干組成,開發(fā)人員在分支上從事開發(fā)工作。只有通過自動化測試平臺ATP測試的分支,才能被合并到主干,作為發(fā)布版本。多人團隊開發(fā)軟件過程中,分支與主干的管理尤為重要,直接關(guān)系到成員間的工作是否能協(xié)同開發(fā),模塊間的依賴性問題是否能夠及時解決。圖3是風(fēng)雷軟件持續(xù)集成方案中的分支管理情況,分為主分支(即主干)、功能分支和Bug分支。開發(fā)者在功能分支上進行開發(fā),向所對應(yīng)的模塊庫中提交代碼,一周內(nèi)要合并一次他人代碼,及時獲得其他成員的貢獻,并及時發(fā)現(xiàn)模塊的依賴性問題,盡早解決,當(dāng)完成給定的功能時,可向主干合并。在代碼合并過程中,采用令牌獨占機制,只有當(dāng)令牌為可用狀態(tài)時,才能執(zhí)行合并操作,以避免合并產(chǎn)生沖突。Bug分支主要用于解決開發(fā)過程中發(fā)現(xiàn)的缺陷,分支的生命周期由Bug的發(fā)現(xiàn)和解決決定。為保證代碼質(zhì)量,在分支提交、代碼合并前,都需經(jīng)ATP執(zhí)行測試,以保證集成的穩(wěn)定性。

圖3 風(fēng)雷軟件開發(fā)持續(xù)集成方案

1.3 自動化測試平臺ATP

軟件開發(fā)過程主要包含4個層次的測試:處于開發(fā)階段的開發(fā)測試與Alpha測試、質(zhì)量確認階段的確認測試、針對用戶的Beta測試(圖4)。本文的自動化測試平臺(ATP)指的是開發(fā)測試。

圖4 軟件測試層次圖

自動化測試平臺(ATP)的功能是,對由自動化持續(xù)集成平臺ACI集成的可執(zhí)行程序,開展CFD算例測試。新加代碼功能的同時,要添加對應(yīng)的可覆蓋的算例,而每次新提交的代碼,不應(yīng)對已有算例結(jié)果造成影響。對ATP算例庫中的每個CFD算例,設(shè)定標(biāo)準(zhǔn)“答案”后,每次提交代碼編譯的可執(zhí)行程序的計算結(jié)果,應(yīng)與標(biāo)準(zhǔn)“答案”一致。根據(jù)測試對象的粒度粗細,可將CFD軟件測試分為單元測試、集成測試與系統(tǒng)測試,其測試內(nèi)容與一般軟件測試存在一定差異。

(1)單元測試,是為了驗證一個代碼單元的功能,一般與運行環(huán)境隔離,例如針對一個獨立的類或一組相關(guān)函數(shù)的測試。其外部依賴一般集中在函數(shù)級別的獨立操作與調(diào)用上,可以提供更加全面的底層代碼覆蓋率和測試時間段,測試頻繁,幾乎每次代碼進行了更改都會進行單元測試。CFD軟件中的單元測試可以是限制器、通量格式、數(shù)據(jù)結(jié)構(gòu)、文件I/O等獨立的模塊、函數(shù)和類。在CFD軟件開發(fā)中,代碼單元的功能實現(xiàn)需要具備CFD基礎(chǔ)理論知識才能完成,所以單元測試算例一般由CFD軟件開發(fā)人員來編寫;每個單元測試算例評價內(nèi)容不一,需要視情況而定,評價參考量包含但不限于單個變量、向量、矩陣等不同數(shù)據(jù),例如網(wǎng)格點線面的連接關(guān)系、壁面距離的計算結(jié)果、通量的計算結(jié)果等;參考量與標(biāo)準(zhǔn)“答案”要保持完全一致,才能視為單元測試通過。

(2)集成測試,用于測試各個模塊之間的集成,驗證兩個或多個模塊之間的交互,與單元測試相比,有著更大的范疇且運行所需時間也更久。單元測試會嘗試達到更大的代碼覆蓋率,而集成測試主要目標(biāo)是驗證指定模塊間的交互。其執(zhí)行頻率需要加以控制。CFD軟件中,集成測試主要是指一些簡單的CFD算例,以測試軟件的獨立功能模塊是否正常運行,能否運行一些CFD基本功能,如前置處理、只有數(shù)十步迭代的簡單CFD算例、重啟續(xù)算等。主要定性地考察代碼的更改是否對基本功能產(chǎn)生影響,評價標(biāo)準(zhǔn)是殘差和氣動力的變化范圍,通常通過計算其與標(biāo)準(zhǔn)“答案”的相對誤差的平均值和方差來反映影響大小。

(3)系統(tǒng)測試,針對大型標(biāo)模的計算算例進行驗證確認。系統(tǒng)測試在一個完全真實的層次運行,驗證系統(tǒng)作為一個整體是如何工作的。通常一個系統(tǒng)測試的完成需要幾天甚至更長的時間,要根據(jù)算例大小、網(wǎng)格大小來確定。在計算完成后,將計算結(jié)果和實驗值或者其他計算結(jié)果進行對比,并采用了Oberkampf提出的一種不確定度尺度進行初步的驗證工作[18-19],該不確定度的表達式為:

式中,I是需進行確認的位置點的總數(shù),y(xi)與Y(xi)分別是位置xi處的計算與實驗值,后者實際以平均值代替。V越接近1,實驗值與計算值的一致性越好。

表1對比了三類測試的區(qū)別,主要表現(xiàn)為測試對象不同、持續(xù)時間不同、所關(guān)注的對象不同、測試頻率與時間不同。目前,風(fēng)雷軟件開發(fā)環(huán)境有115個集成測試,93個系統(tǒng)測試。單元測試還在不斷豐富中。集成測試每天運行10余次,每次測試控制在5 min以內(nèi)。系統(tǒng)測試算例包含了從低速到高超聲速流動、二維到三維、結(jié)構(gòu)/非結(jié)構(gòu)網(wǎng)格的標(biāo)模算例,在集群上每周五晚上運行一次,需要約25萬CPU機時。

表1 三類測試的區(qū)別

自動化測試平臺基于QT開發(fā),圖5是目前開發(fā)完成的界面,主要包含:算例管理模塊、測試管理模塊、結(jié)果分析和查詢模塊。

圖5 自動化測試的界面

2 應(yīng)用效果

國家數(shù)值風(fēng)洞工程“風(fēng)雷”軟件開發(fā)過程中,通過持續(xù)集成與測試平臺構(gòu)建完善的軟件開發(fā)環(huán)境,在加快軟件敏捷迭代開發(fā)效率的過程中發(fā)揮重要的作用。圖6~圖9是平臺自動生成的統(tǒng)計數(shù)據(jù)圖,對“風(fēng)雷”軟件開發(fā)過程完成的各類信息進行了統(tǒng)計,以分析開發(fā)環(huán)境對軟件開發(fā)的促進作用。

從每月提交代碼統(tǒng)計看(圖6),2019年度共提交了3557次代碼,其中3月份次數(shù)最多達到524次,平均每月提交約250次;測試總出錯為1700次,達到總提交次數(shù)的47.79%。通過開發(fā)環(huán)境,可清晰地展示開發(fā)團隊在不同時間段的代碼開發(fā)效率,及時發(fā)現(xiàn)、糾正代碼缺陷問題,保證軟件質(zhì)量的同時能進一步促進軟件開發(fā)效率。

圖6 2019年每月代碼提交次數(shù)及出錯次數(shù)

圖7進一步對導(dǎo)致錯誤的原因進行了細化,將錯誤類型分為鏈接錯誤、編譯錯誤和測試錯誤三種。可以看到,代碼錯誤主要是來源于3級測試,其次是編譯錯誤,鏈接錯誤最少。通過自動識別并對錯誤進行分類,有利于開發(fā)人員盡早發(fā)現(xiàn)并解決問題。軟件開發(fā)過程中,測試是不可缺少的一環(huán)。將測試和開發(fā)融合在一起,開展自動化測試有利于進一步提高軟件開發(fā)效率和軟件質(zhì)量。

圖7 2019年每月糾正問題分布情況

為了分析代碼錯誤來源,提高團隊開發(fā)水平,從單個開發(fā)人員角度出發(fā),分析了給定時間段內(nèi),不同開發(fā)人員的代碼錯誤率(圖8)。通過提交代碼次數(shù)和錯誤率的統(tǒng)計,可清晰統(tǒng)計開發(fā)團隊中每個開發(fā)人員的提交次數(shù)、錯誤率。

圖8 2019年1月-2020年4月每人提交代碼次數(shù)及錯誤率統(tǒng)計

開發(fā)環(huán)境除了要保證代碼的正確性,還要分析CFD計算效率。對給定的算例,統(tǒng)計了不同版本軟件的CPU墻上計算時間變化情況(圖9)。圖中橫坐標(biāo)是解算器版本信息,縱坐標(biāo)是CPU墻上時間。可以看到,絕大部分版本的計算時間都差異不大,僅有少數(shù)版本因錯誤引入導(dǎo)致計算時間跳躍。同時,從第1300版本開始,由于算法改進,計算時間減少。通過記錄不同版本解算器的計算效率,嚴(yán)格控制不同開發(fā)人員提交的代碼對于主干的影響,保證解算器的計算效率。

圖9 2018年1月-2019年3月算例30p30n計算時間變化

通過ACI&ATP平臺,不僅有利于開發(fā)人員進行代碼的提交和集成,完成代碼的統(tǒng)一管理,還能對代碼質(zhì)量起到“監(jiān)督”作用。通過及時監(jiān)控,統(tǒng)計研發(fā)過程中的各類數(shù)據(jù),可掌控軟件研發(fā)的細節(jié)和進度,保證軟件質(zhì)量,提高軟件開發(fā)效率。

3 總結(jié)與展望

針對國家數(shù)值風(fēng)洞“風(fēng)雷”軟件團隊開發(fā)的需要,設(shè)計研發(fā)了自動化持續(xù)集成平臺(ACI)與測試平臺(ATP)。通過建立規(guī)范統(tǒng)一的CFD軟件代碼開發(fā)流程,持續(xù)地將CFD軟件開發(fā)成員的工作集成到軟件,經(jīng)過自動構(gòu)建、自動測試、自動部署等過程,形成可供直接使用的CFD軟件產(chǎn)品,并將整個過程中出現(xiàn)的問題及時地反饋給開發(fā)人員,開發(fā)人員及時解決此次集成中出現(xiàn)的錯誤后重新進行提交集成,從而形成一個不斷修正不斷完善的良性的軟件開發(fā)流程。結(jié)合ACI&ATP平臺,構(gòu)建了一個完善可靠的CFD軟件開發(fā)環(huán)境,對軟件開發(fā)的質(zhì)量與效率提升給予保證。

主站蜘蛛池模板: 免费无码一区二区| 亚洲综合激情另类专区| 久久久国产精品免费视频| 中文字幕久久亚洲一区| 亚洲美女高潮久久久久久久| 国产免费a级片| 久久一级电影| 全免费a级毛片免费看不卡| 国产一区二区丝袜高跟鞋| 国产一区成人| 性色一区| 18禁高潮出水呻吟娇喘蜜芽| 伊人久久婷婷五月综合97色| 国产人成在线视频| 91午夜福利在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ | 视频一本大道香蕉久在线播放| 久久综合激情网| 波多野结衣第一页| 欧美亚洲日韩不卡在线在线观看| 亚洲男人在线天堂| 三上悠亚精品二区在线观看| 亚洲网综合| 成人国产免费| 999精品在线视频| 人人91人人澡人人妻人人爽 | 无码有码中文字幕| 国产成人1024精品下载| 中文天堂在线视频| 欧美高清国产| 国产美女视频黄a视频全免费网站| 四虎永久在线视频| 浮力影院国产第一页| 青青草久久伊人| 手机精品福利在线观看| 啦啦啦网站在线观看a毛片| 人妻精品久久久无码区色视| 四虎影视库国产精品一区| 国产精品自在拍首页视频8| 激情乱人伦| 99这里只有精品在线| 亚洲另类色| 亚洲成人精品| 国产精品欧美激情| 欧美日韩免费| 亚洲aaa视频| 久久精品亚洲专区| 国产成人91精品| 精品国产aⅴ一区二区三区| 毛片大全免费观看| 黄色a一级视频| 亚洲高清无在码在线无弹窗| 777午夜精品电影免费看| 国产又大又粗又猛又爽的视频| 亚洲第一页在线观看| 国产在线观看第二页| 特级精品毛片免费观看| 在线欧美日韩国产| 精品人妻无码中字系列| 91蝌蚪视频在线观看| 五月六月伊人狠狠丁香网| 中文字幕波多野不卡一区| 国产第八页| 久久综合丝袜长腿丝袜| 动漫精品啪啪一区二区三区| 欧美黄网在线| 亚洲无限乱码| 亚洲免费毛片| 色窝窝免费一区二区三区| 国产日韩精品欧美一区灰| 国产极品美女在线观看| 伊人久久大香线蕉综合影视| 成年人国产视频| 欧美成人一级| 午夜天堂视频| 成人精品午夜福利在线播放| 中文字幕无码中文字幕有码在线| 国产自无码视频在线观看| 国产精品第一区在线观看| 国产午夜精品一区二区三区软件| 亚洲男人的天堂视频| 三级国产在线观看|