韋喜忠,金建海,王墨偉,趙 峰
(中國船舶科學(xué)研究中心,江蘇無錫 214082)
隨著計算機(jī)性能的快速提升和計算科學(xué)的不斷發(fā)展,以物理規(guī)律為基礎(chǔ)、計算科學(xué)為核心的船舶總體性能預(yù)報軟件,正高密度融入船舶(包括艦船、潛艇等)的研發(fā)設(shè)計[1-5]。近年來隨著應(yīng)用的推廣,這些性能預(yù)報軟件開始趨向APP化:即面向一定的應(yīng)用領(lǐng)域、基于一定的數(shù)學(xué)模型、融合專家知識形成可量化的并可工程化應(yīng)用的性能預(yù)報結(jié)果[6-7]。通過對船舶總體性能的體系化梳理并形成相應(yīng)的 APP軟件(或其組合)進(jìn)行船舶總體性能預(yù)報、評價、優(yōu)化的工作模式,具有周期短、成本低、效能高、可與設(shè)計無縫高效融合等優(yōu)點[8],它將與現(xiàn)有的物理試驗研究體系一起,構(gòu)成船舶總體性能研究的兩大臺柱,客觀上推動我國船舶總體性能研發(fā)模式的變革。其中APP軟件的質(zhì)量和可靠性是這一新的船舶總體性能研發(fā)模式能否成功的前提和基礎(chǔ)。
近年來,GJB 5000A—2008《軍用軟件研制能力成熟度模型》在眾多軟件研發(fā)單位得到了廣泛地應(yīng)用,其思想在許多商業(yè)軟件開發(fā)上也得到了很好的體現(xiàn),顯著提升了軟件開發(fā)的質(zhì)量和可靠性。
作為國內(nèi)外卓越軟件企業(yè)的經(jīng)驗匯聚而成的最佳實踐,GJB 5000A提供了非常全面的軟件研制過程精細(xì)化管控手段,來幫助軟件開發(fā)團(tuán)隊提升質(zhì)量及完成項目目標(biāo)的可能性。然而GJB 5000A只規(guī)定了應(yīng)該“做什么”,并沒有指明具體“怎么做”,因此在操作執(zhí)行時還需要制定具體的應(yīng)用方案(即實施方案),而目前已有的應(yīng)用方案基本上都是針對軍用裝備軟件(特別是含固件的軟件)。為此,本文針對船舶總體性能預(yù)報APP軟件技術(shù)要求和特點,制定了相應(yīng)的應(yīng)用方案,用于規(guī)范這類軟件的研制,同時也可為其他各類軟件的開發(fā)提供參考。
在船舶全壽命技術(shù)責(zé)任鏈“研究-設(shè)計-驗證-建造-檢驗-服役-維修改進(jìn)”中,特別是在研究、設(shè)計和驗證階段,依托物理試驗或者性能預(yù)報軟件對船舶的水動力學(xué)、結(jié)構(gòu)安全、振動噪聲等總體性能進(jìn)行預(yù)估是一項必不可少的重要環(huán)節(jié),因此相關(guān)預(yù)報軟件的研發(fā)與應(yīng)用一直是船舶行業(yè)技術(shù)研究熱點。尤其是近二十年來,借助于自主研發(fā)或商用軟件二次開發(fā)等方式,在船舶總體性能研究、預(yù)報、評價以及優(yōu)化等方面,取得了豐碩的成果,極大地豐富了以物理試驗為主的工作內(nèi)容。
但是這些總體性能預(yù)報軟件還存在結(jié)果穩(wěn)定性不高、特別是同一個軟件應(yīng)用還存在“因人因事”差異等問題,從而影響了其總體作用的發(fā)揮,難以形成體系化的總體性能研發(fā)模式。為此,基于多年的研發(fā)和應(yīng)用經(jīng)驗,中國船舶科學(xué)研究中心提出了基于“屬性細(xì)分、知識封裝”思想的APP化方法:其核心思想是以物理規(guī)律為基礎(chǔ),通過數(shù)據(jù)挖掘和物理機(jī)理研究等方案,對應(yīng)用域、數(shù)學(xué)模型、條件域(或參數(shù)設(shè)置)等影響預(yù)報結(jié)果的因素進(jìn)行研究分析[9-10],并經(jīng)大子樣數(shù)據(jù)應(yīng)用驗證后,獲取如何確定應(yīng)用領(lǐng)域、數(shù)學(xué)模型、參數(shù)設(shè)置的“專家知識”,并將整個分析過程和這些“專家知識”融合形成獨立的應(yīng)用軟件,即APP軟件。使用這些經(jīng)過“知識封裝”的APP軟件,不但可以大幅提高應(yīng)用的魯棒性和可靠性,還可以降低使用門檻,為推動我國船舶總體性能研發(fā)模式的變革創(chuàng)造可能。
綜上,如圖 1所示,船舶總體性能預(yù)報軟件發(fā)展的新趨勢——APP軟件的研發(fā),與之前的軟件/程序相比,其最大不同點是把原來依賴于個人能力的預(yù)報分析過程中的知識“封裝”進(jìn)來,即要明確應(yīng)用域、數(shù)學(xué)模型以及相應(yīng)的條件域(參數(shù)設(shè)置)這3個核心環(huán)節(jié)的相關(guān)內(nèi)容,以此來提高最終的魯棒性和可靠性。因此,理清預(yù)報整體分析過程尤其是這3個環(huán)節(jié)的明確需求,并對它進(jìn)行有效驗證測試是軟件 APP化開發(fā)的核心技術(shù)要求,非常適合采用GJB5000A的精細(xì)化管控思想。
圖1 APP軟件主要特點示意圖
此外,從事船舶總體性能預(yù)報軟件研發(fā)的人員,其主要工作往往以力學(xué)性能基礎(chǔ)研究為主,軟件工程化基礎(chǔ)相對薄弱,主要表現(xiàn)在:
1)軟件研制流程不明確。整個軟件研制過程應(yīng)該包含哪些階段、各階段工作任務(wù)及要求等不明確。
2)需求分析不充分。當(dāng)前APP的應(yīng)用場景、具體采取什么模型,以及哪些是外部輸入,哪些是按照經(jīng)驗知識進(jìn)行封裝等不夠清晰明確,導(dǎo)致后期在試用過程中經(jīng)常有需求變更或需求蠕動。
3)測試不夠全面。性能APP的測試,普通的專業(yè)測試人員,往往只能滿足“純軟件”方面的驗證,而實際效果怎么樣,還需要相關(guān)性能專業(yè)研究人員進(jìn)行專業(yè)確認(rèn)。
以CMMI(Capability Maturity Model Integration,即能力成熟度模型集成)V1.2為主要參考藍(lán)本的GJB 5000A—2008《軍用軟件研制能力成熟度模型》,是國際軟件開發(fā)過程最佳實踐的凝練。它以 PDCA為指導(dǎo)思想,以實現(xiàn)精細(xì)化管理和單位最佳實踐的傳承為目標(biāo),既是評價組織(某個單位或團(tuán)隊)軟件研制能力的主要標(biāo)準(zhǔn),也是軟件研制能力如何提升的重要參考和指導(dǎo)。
GJB 5000A的核心內(nèi)容,或評價參考的主要內(nèi)容如圖2所示:軟件研制能力成熟度分為5個等級,每一等級構(gòu)成了前進(jìn)中過程改進(jìn)基礎(chǔ)的一個層次,是實現(xiàn)下一個成熟度等級的基礎(chǔ);每個成熟度等級都包含了一組預(yù)先定義的、改進(jìn)組織整體績效的過程域;根據(jù)是否達(dá)到與每組預(yù)定過程域相關(guān)的專用目標(biāo)和共用目標(biāo)(必需部件)來判定是否滿足相應(yīng)的成熟度等級,而專用目標(biāo)和共用目標(biāo)是否能夠達(dá)到又是以其下一層次的專用實踐、共用實踐等期望部件和其他資料性部件的實現(xiàn)情況作為評價與改進(jìn)的依據(jù)[11]。
圖2 GJB5000A框架模型示意圖
其中二級(已管理級)的核心內(nèi)容(提升重點)如研制流程規(guī)范性、工作計劃性、研制階段性、需求控制與管理等,以及三級(已定義級)的部分核心內(nèi)容(提升重點)如嚴(yán)格規(guī)范工程過程活動/制品等,特別契合本文中APP軟件研發(fā)過程監(jiān)控的重點和目前存在的主要問題。為此,本文選擇GJB 5000A作為指導(dǎo)思想,制定創(chuàng)新性的應(yīng)用方案,用于指導(dǎo)船舶總體性能預(yù)報APP軟件開發(fā)活動的實施。
在GJB 5000A實施過程中,為了取得更高的組織效益并防止出現(xiàn)“兩層皮”現(xiàn)象,需要結(jié)合組織/項目的目標(biāo)要求[12-13],以最有效/最簡為總原則,對目標(biāo)和實踐進(jìn)行本地化。具體而言,相關(guān)的專用目標(biāo)與共用目標(biāo)是每項工作的分目標(biāo)和指導(dǎo)思想;而作為期望部件的專用實踐與共用實踐,則應(yīng)該給出符合組織特色、有效且盡量簡單的過程活動描述,用以滿足相應(yīng)的專用目標(biāo)與共用目標(biāo)。特別是當(dāng)對應(yīng)的目標(biāo)正好與目前軟件開發(fā)過程中存在的問題相呼應(yīng)時,更應(yīng)該據(jù)此進(jìn)行針對性強(qiáng)化,這也是 GJB 5000A在實施過程不斷持續(xù)改進(jìn)的指導(dǎo)原則[14]。
目前GJB 5000A實施的應(yīng)用方案,主要是針對軍用裝備軟件(特別是含固件的軟件),而船舶總體性能預(yù)報軟件尤其是APP軟件與這些軟件的差異較大,因此有必要制定專門的應(yīng)用方案,以確保研發(fā)質(zhì)量與效益并防止出現(xiàn)“兩層皮”現(xiàn)象。
為了滿足船舶總體性能預(yù)報軟件APP化的技術(shù)要求,本文以GJB 5000A的核心內(nèi)容為指導(dǎo),基于多年的船舶總體性能預(yù)報軟件應(yīng)用經(jīng)驗和APP化特點,制定了專門的APP軟件研發(fā)生命周期及開發(fā)過程精準(zhǔn)管控方案[15],用于指導(dǎo)該類軟件的研發(fā)。
為解決軟件研制流程不明確的問題,首先需要針對其技術(shù)特點設(shè)定生命周期模型,并根據(jù)技術(shù)狀態(tài)變化設(shè)定不同的工作階段。
一般而言,經(jīng)船舶總體性能體系化梳理后確定要開發(fā)的APP軟件,其需求應(yīng)該已經(jīng)比較明確,所以采用最經(jīng)典的瀑布模型是合適的。其次,此類APP一般以計算為主要特征,大量的復(fù)雜計算特別容易“犯錯”,同時為了解決以往測試不夠全面等問題,特吸收V模型在開發(fā)階段就引入驗證的優(yōu)點[16]。再者參考GJB 2786A—2009《軍用軟件開發(fā)通用要求》等相關(guān)國軍標(biāo)要求,依據(jù)APP化軟件研發(fā)過程中“軟件模型”技術(shù)成熟度的演變、以及團(tuán)隊人員專業(yè)分工的不同,最終制定了如圖3所示的APP軟件研發(fā)生命周期。
圖3 船舶總體性能預(yù)報APP軟件研制生命周期
圖3中,整個生命周期劃分為5個階段。
1)APP需求整理與策劃:該階段主要工作是由船舶總體性能研究人員(簡稱APP項目發(fā)起人)提出軟件研制需求,然后委托給軟件開發(fā)組并由他們給出開發(fā)計劃;同時吸收V模型加強(qiáng)驗證的思想,在任務(wù)書中即給出APP最后確認(rèn)(驗收測試)的初步方案。
2)軟件需求分析:由軟件開發(fā)組按照軟件研制任務(wù)書的要求,從軟件具體實現(xiàn)角度,定義和記錄每項需求得以滿足所使用的“軟件”方法,形成詳細(xì)的軟件需求規(guī)格說明;同時給出軟件配置項測試(合格性測試)的初步方案。
3)軟件設(shè)計與實現(xiàn):由軟件開發(fā)組針對軟件需求,進(jìn)行概要設(shè)計、詳細(xì)設(shè)計并開展代碼開發(fā)實現(xiàn);同時做好代碼自測試等工作。
4)軟件合格性測試:由獨立于軟件開發(fā)組的其他軟件測試人員,對照軟件需求規(guī)格說明,開展軟件驗證測試工作。
5)APP需求確認(rèn)與驗收交付:由獨立的船舶總體性能研究同行,協(xié)同APP任務(wù)提出者一起,完成任務(wù)書中提出的功能/性能方面的確認(rèn)測試,說明該APP確實能在船舶總體性能預(yù)報中起到期望的作用。
GJB 5000A提供的需求管理、項目策劃、項目監(jiān)控、測量與分析、配置管理、過程和產(chǎn)品質(zhì)量保證等過程域,對船舶總體性能預(yù)報軟件APP軟件的研發(fā),尤其是目前主要問題的改進(jìn)以及三大核心環(huán)節(jié)的管控,均具有很好的指導(dǎo)意義。經(jīng)研究,綜合其相關(guān)的專用目標(biāo)、共用目標(biāo)以及專用實踐、共用實踐,在整個APP研發(fā)生命周期內(nèi),建立了精準(zhǔn)管控方案,主要包括以下5個方面。
1)參考需求管理過程域的應(yīng)用方案
(1)由APP項目發(fā)起人(船舶總體性能分析研究人員)按照專門的任務(wù)書模板提出并整理需求,然后與軟件開發(fā)人員、測試人員以及船舶總體性能分析研究其他人員一起對每條需求進(jìn)行理解并確認(rèn);
(2)整個開發(fā)過程如果有需求變更,則需要分析影響域并獲得團(tuán)隊(變更控制委員會,負(fù)責(zé)人為APP發(fā)起人)同意;
(3)對任務(wù)書、軟件需求、軟件設(shè)計、測試計劃和報告[17]以及關(guān)鍵代碼都進(jìn)行技術(shù)評審,通過需求跟蹤矩陣來確保每條需求的可追蹤性。
2)參考項目策劃過程域的應(yīng)用方案
(1)軟件研制任務(wù)書確定之后,在本文制定的APP研發(fā)生命周期基礎(chǔ)上,對APP開發(fā)過程進(jìn)行WBS分解(可近細(xì)遠(yuǎn)粗),并進(jìn)行工作產(chǎn)品規(guī)模、工作量等估計;
(2)在估計的基礎(chǔ)上,結(jié)合任務(wù)要求制定開發(fā)進(jìn)度,并將APP開發(fā)關(guān)鍵環(huán)節(jié)(需求分析、測試和驗收)設(shè)置為里程碑節(jié)點;
(3)識別可能存在的風(fēng)險,如哪些需求可能不明確、如何有效驗證或測試預(yù)報的合理性等;
(4)結(jié)合APP開發(fā)目標(biāo),確定工作量、進(jìn)度、需求變更、缺陷等測量項;
(5)最后依據(jù)推薦的模板將以上內(nèi)容編制成開發(fā)計劃,以及附錄的詳細(xì)WBS實施計劃。并在執(zhí)行過程中隨時更新WBS實施計劃;而開發(fā)計劃只在進(jìn)度超過閾值時更新。
3)參考項目監(jiān)控、測量與分析過程域的應(yīng)用方案
(1)在整個開發(fā)期間,開發(fā)團(tuán)隊每個成員按照分配的WBS任務(wù)包進(jìn)行開發(fā)工作,記錄完成任務(wù)包的工作量、進(jìn)度,以及可能有的規(guī)模(如文檔或代碼)、問題(如測試任務(wù))、需求變更等,如存在困難則需要盡早作為問題(含風(fēng)險)提出來,并更新軟件問題跟蹤表。
(2)APP開發(fā)負(fù)責(zé)人定期(如雙周)并在階段工作/里程碑節(jié)點完成時,對WBS任務(wù)包和記錄的測量項進(jìn)行數(shù)據(jù)采集,獲得當(dāng)前實際執(zhí)行情況,并與計劃進(jìn)行比較,當(dāng)測量項超出閾值時則應(yīng)作為一個問題,需分析原因并及時采取糾正措施,通知受到影響的團(tuán)隊成員和發(fā)起人。
4)參考配置管理過程域的應(yīng)用方案
(1)經(jīng)過技術(shù)評審后的文檔和測試通過之后的代碼,需納入受控庫統(tǒng)一管控;
(2)通過合格性測試和/或確認(rèn)測試的,則應(yīng)該進(jìn)入產(chǎn)品庫;
(3)2個庫中的文件(即配置項)的存取改,均需要獲得該APP項目發(fā)起人的同意并有技術(shù)狀態(tài)備注。
5)參考過程和產(chǎn)品質(zhì)量保證過程域的應(yīng)用方案
SQA人員對總體開發(fā)流程、關(guān)鍵控制點(需求提出、分析、測試)的活動和工作產(chǎn)品(技術(shù)文檔與部分代碼)進(jìn)行質(zhì)量審查,對存在的主要不符合項進(jìn)行督促整改,促使開發(fā)人員對整個應(yīng)用方案的理解與執(zhí)行能越來越到位。
選擇10個開發(fā)周期為一年(計劃)的一批APP研制項目作為試驗對象[15],并分為 2組:第一組 5個試點APP按照本文的GJB5000A應(yīng)用方案進(jìn)行研制,第二組5個APP繼續(xù)沿用平時的科研模式,未按照本文應(yīng)用方案進(jìn)行研制(兩組的專業(yè)屬性、開發(fā)語言、技術(shù)難度和規(guī)模等因素比較接近)。
之后,由獨立的軟件測試組對這批APP軟件進(jìn)行合格性測試(預(yù)驗收)工作,兩組APP發(fā)現(xiàn)的問題對比情況如表1所示。
表1 兩種不同開發(fā)模式下APP軟件的效果對比
表1中,問題按照來源分為文檔問題和代碼問題;按照級別分為嚴(yán)重、一般和輕微(“致命”級別問題不存在,故省略)。其中嚴(yán)重問題是指APP軟件無法正常運(yùn)行或無法正常預(yù)報性能;一般問題是指該APP對個別船舶總體性能指標(biāo)預(yù)報不準(zhǔn)確,或魯棒性還存在較大不足;輕微問題是指該APP在條件域內(nèi)所有性能指標(biāo)預(yù)報都準(zhǔn)確,但是友好性或魯棒性不足,如輸入?yún)?shù)有誤時沒有提示信息或信息不夠準(zhǔn)確清晰。
經(jīng)過軟件測試組測試,按照本文應(yīng)用方案進(jìn)行研制的第一組5個試點APP,共發(fā)現(xiàn)15個問題。其中13個輕微問題普遍都是個別參數(shù)錯誤時沒有提示信息;2個一般問題是輸入?yún)?shù)超過條件域(越界)時,計算結(jié)果不符合期望值。
而未按照本文方案的第二組5個APP,共發(fā)現(xiàn)了53個問題。其中有1個APP一旦改變推薦的輸入?yún)?shù),軟件崩潰,或者給出的結(jié)果仍然是一樣的,且沒有相應(yīng)的文檔支撐,是一個嚴(yán)重問題;32個一般問題,普遍體現(xiàn)在輸入邊界不清晰(未做充分需求分析),測試者在隨意改變輸入?yún)?shù)時,特別是在逼近條件域邊界(需開發(fā)者口頭判斷是否超出條件域)時,計算結(jié)果明顯不合理、沒有結(jié)果輸出甚至軟件直接崩潰;另外還有20個輕微問題。特別地需指出的是,這些APP的文檔也普遍薄弱,很多APP沒有對應(yīng)用域、相應(yīng)的條件域(參數(shù)設(shè)置)做出說明,大部分只給出了簡單的數(shù)學(xué)模型并缺少必要的需求分析,在開發(fā)人員自測試的時候也無法進(jìn)行邊界測試(因為條件域不清晰,不知道邊界在哪),因此軟件質(zhì)量普遍比較低下。
此外,在完成第一輪合格性測試并提出整改要求之后,第一組5個試點APP在后期驗收測試中全部一次性通過,而第二組5個APP,在后期經(jīng)過多次回歸測試之后,才勉強(qiáng)通過,且在總體進(jìn)度方面(驗收通過)平均延遲了3個月(25%)左右。
可見,采用本文應(yīng)用方案進(jìn)行研制過程管控的APP軟件,能較好地體現(xiàn)出其應(yīng)用域、數(shù)學(xué)模型、相應(yīng)的條件域(參數(shù)設(shè)置)等體現(xiàn)專家知識密集的特點,能大幅提高軟件質(zhì)量、控制研發(fā)進(jìn)度,大幅提升APP軟件按時高質(zhì)量完成的成功率。
本文研究了船舶總體性能 APP軟件在其應(yīng)用域、數(shù)學(xué)模型以及參數(shù)設(shè)置等環(huán)節(jié)專業(yè)知識密集、邏輯復(fù)雜特點,并針對開發(fā)過程中存在的流程不規(guī)范、需求分析不充分等問題,參考GJB 5000A核心思想,研究制定了相應(yīng)的軟件開發(fā)流程和過程精準(zhǔn)管控方案,為APP軟件的規(guī)范化開發(fā)提供了依據(jù),通過試點項目表明其可以大大提高軟件質(zhì)量和可靠性,有效控制開發(fā)進(jìn)度,可為船舶領(lǐng)域性能預(yù)報APP軟件的設(shè)計開發(fā)提供指導(dǎo),同時也可為其他復(fù)雜軟件研發(fā)提供參考。
船舶總體性能預(yù)報APP研發(fā)是一項開創(chuàng)性的工作,本文的完成得到了中國船舶科學(xué)研究中心何春榮所長的親自關(guān)心與指點。相關(guān)工作涉及到了大部分研發(fā)部門、部分機(jī)關(guān)部門以及單位SEPG組主要成員,因此在這里特對相關(guān)人員表示感謝,如質(zhì)量安全處的彭超、技術(shù)基礎(chǔ)部的許哲、軟件工程中心的孫佳新、新興技術(shù)室的陳奕宏、陳偉政、查建波、陳卓等。