周 宇 徐 建 張增安 張 磊
(1.上海航天控制技術研究所 上海 201100)(2.南京理工大學計算機科學與工程學院 南京 210094)
隨著信息技術的不斷發(fā)展,航空航天領域飛行器的控制軟件功能越來越豐富,也越來越復雜。為保障軟件的整體質量,對開發(fā)階段、提交階段、應用階段的軟件產品進行質量管控[1~3],合理地評估軟件產品的可信性[4~6],是軟件工程領域的一個熱點問題。然而已有可信證據管理方法不能適應空間飛行器控制系統(tǒng)軟件開發(fā)過程的具體特點,例如包含大量多變子過程以及涉及大量數據資源等。
針對可信證據的形式化描述和度量,王德鑫等[7]提出基于過程管理的可信證據形式化描述方法,從證據的度量、證據滿足的可信級別以及證據的類型定義可信證據。蔡斯博等[8]提出了包括證據模型、證據節(jié)點和證據取值的證據描述方法。朗波等[9]從軟件開發(fā)階段、軟件提交階段和軟件應用階段構造可信證據模型,依照每種證據預先設定的度量方式,評定可信證據的等級。上述研究都沒有考慮空間飛行器控制系統(tǒng)類軟件具有的大量可變軟件過程的軟件開發(fā)特點。
軟件的可信評估包括靜態(tài)評估和動態(tài)評估兩部分。靜態(tài)評估指通過搜集軟件開發(fā)過程中一切可采用的可信證據,靜態(tài)地對軟件的可信程度進行評估。動態(tài)評估側重于評估軟件運行過程中的穩(wěn)態(tài)和魯棒性。針對靜態(tài)評估,王德鑫等[10]提出基于軟件需求設計、開發(fā)和測試等階段靜態(tài)可信證據搜集與管理的軟件可信評估方法,通過建立證據集合,采集可信證據,依次評估可信證據、可信原則、軟件過程的可信級別。丁學雷等[11]提出一種驗證軟件的實際行為與預期是否一致的軟件可信評估方法,該方法主要根據人對程序的預期來搜集對應的可信證據,通過評估各個預期行為的可信性來支撐軟件的整體可信性。盧剛等[12]針對互聯(lián)網軟件,從聲譽可信、交互可信和機理可信三個剖面采集用戶證據、提供者證據和第三方證據以支持軟件的可信評估。針對動態(tài)評估,古亮等[13]提出了軟件運行時可信證據的采集與管理方法,通過在操作系統(tǒng)層引入可信證據采集模塊,動態(tài)地對軟件程序運行狀態(tài)信息進行采集并建立可信證據。田俊峰等[14]提出了一種基于軟件行為軌跡的軟件可信評價性評價方法,通過在檢查點設置傳感器獲取軟件的實際運行軌跡,并利用相應的可信評估模型根據運行軌跡執(zhí)行可信評估。羅新星等[15]利用馬爾科夫鏈對軟件運行時軟件評價體系中各項屬性的權重進行動態(tài)調整,以提高評估的精確性。軟件的靜態(tài)和動態(tài)評估從不同的側面驗證了軟件的可信性,可信證據的可追溯性[7]是提升靜態(tài)和動態(tài)可信證據質量的重要指標,然而已有研究沒有考慮支撐可信證據生成的可信資源的形式化定義與管理。
以上軟件可信評估方法主要針對具有較少且固定軟件開發(fā)過程的軟件系統(tǒng),不適用于具有成百上千軟件過程和大量分支結構的空間飛行器控制軟件。因此,本文首先提出與過程解耦合的可信原則與可信證據管理體系。同時,空間飛行器控制軟件開發(fā)過程涉及大量數據資源,例如:開發(fā)與測試文檔、動力系統(tǒng)模型和測試數據等,這些資源是生成可信證據的基礎。已有的可信證據的管理方法沒有包含對這些數據資源的管理,無法對可信證據進行事后的跟蹤與復核。因此,本文提出了可信資源的定義與管理方法,并提出基于可信資源支撐的可信證據管理方法,提升可信證據的可追溯能力與可信證據的質量。最后,基于可信資源支撐以及與過程解耦的可信證據管理體系,提出跨軟件分支與過程的可信證據與資源合并方法。
本節(jié)首先介紹與軟件過程解耦的可信原則與證據管理體系;然后提出可信資源定義與管理方法;其次提出基于可信資源的可信證據管理體系;最后提出可信證據與資源合并方法。
設計合理的可信原則與證據體系是可信評估的基礎??尚旁瓌t和可信證據管理體系設計的核心問題是如何將軟件開發(fā)過程中的可信原則和證據合理地組織、分類和管理。王德鑫等[10]提出基于過程證據的可信評估體系,詳細設計了36個面向軟件開發(fā)過程的可信原則,包含182個可信證據;在軟件開發(fā)過程中采集可信證據,通過證據支撐可信原則。基于可信原則的達成程度,對軟件過程的可信度進行評估。在該軟件過程可信度評估模型中,可信原則是定義可信證據的基礎。該方法主要針對具體的軟件過程設計相應可信原則與證據,不適用于包含大量靈活多變軟件過程的空間飛行器控制軟件。本文以該可信度評估模型和方法為基礎,針對空間飛行器控制軟件包含的軟件過程靈活多變的特點,提出與軟件過程解耦的可信原則與證據管理體系。提出的可信證據管理體系的相關定義如下。
定義1:軟件過程(軟件活動)代表環(huán)境搭建過程、需求分析過程、設計過程、源碼實現(xiàn)過程、地面測試過程、在軌運行過程等各種不同的軟件開發(fā)和運行過程??臻g飛行器控制軟件需要在不同的環(huán)境對可靠性進行驗證,因此,與傳統(tǒng)軟件過程相比,空間飛行器控制系統(tǒng)軟件可以包含大量軟件過程。我們用a表示一個軟件過程。
定義2:軟件分支b={ai}是由若干個軟件過程ai有序排列構成的一個軟件過程集合。一個軟件分支通常包含一個功能模塊的軟件開發(fā)過程。不同復雜度的分支所包含的項目過程也不相同。
定義3:軟件項目P={bk}是由若干個軟件分支bk構成的集合。不同的軟件項目包含不同數量的軟件分支。不同的軟件分支可以對應不同的軟件模塊,也可以對應不同的模塊版本開發(fā)過程?;谲浖种У墓芾眢w系有利于充分考慮不同模塊和版本的可信證據收集。
定義4:可信原則p指的是軟件可信評估過程中需要參考的原則。本文將不同軟件過程用到的可信原則抽象為有限數量的統(tǒng)一原則。例如地面測試階段的代碼測試完備性原則與在軌運行階段的黑盒測試完備性原則可以抽象為統(tǒng)一的測試完備性原則。這樣可以針對整個項目設計出有限數量的可信原則??尚旁瓌t與具體的軟件過程解耦,能夠有效適應空間飛行器控制軟件開發(fā)過程中軟件過程數量多以及變化多樣的特點。
定義5:可信證據是軟件開發(fā)和運行過程中收集的各類證據數據。本文提出的可信證據管理體系允許同一類型的可信證據在不同的軟件分支和軟件過程存在不同的實例。最終在可信評估時,這些不同的證據實例將被合并成一個可信證據。該定義能夠適應具有大量多變軟件開發(fā)過程的空間飛行器控制系統(tǒng)軟件的特點,降低可信評估方案設計的復雜度。
可信評估通常依賴于可信證據,可信證據采集工作需要貫穿整個軟件生命周期,為可信評估提供事實依據。開發(fā)和測試過程的文檔、模型和測試數據等數據資源是可信證據采集的基礎。然而,已有評估體系沒有將這些數據資源納入可信評估管理體系,由于空間飛行器控制系統(tǒng)軟件包含大量軟件過程,隨著軟件過程數量逐漸增加,容易遺漏關鍵證據或錯誤地采集相關可信證據。因此,本文提出可信資源管理體系,對相關的數據資源進行定義和管理,支持可信證據的管理工作。完備的可信資源管理體系可以支撐可信證據的采集、復核和變更。
定義6:可信資源是軟件開發(fā)生命周期中產生的一切可用于可信評估的數據資源,如:1)需求分析階段用戶方提供的相關業(yè)務資料、開發(fā)人員整理的系統(tǒng)需求說明書等;2)編碼階段各開發(fā)人員分別負責的局部代碼塊源文件、局部單元測試的測試方案、測試用例和測試結果等;例如空間飛行器各個模塊地面測試過程中采用的動力學模型;3)軟件驗收階段客戶方在軟件試運行后的反饋結果、以及軟件試運行階段的各項指標數據等;例如空間飛行器在軌飛行階段測試使用的動力學模型??尚刨Y源的生產者為軟件項目的實際參與者,如:軟件開發(fā)人員、項目管理人員、客戶方外派人員等??尚刨Y源的意義在于盡可能地搜集開發(fā)過程中的一切資源,為可信證據的生成與管理提供依據。我們用r=<id,type,a,T> 表示一個可信資源,其中id表示資源的編號,是可信資源的唯一標識符;type表示資源的類型,例如文檔、模型和代碼等;a表示資源所屬的軟件過程;T表示資源其他屬性及其取值。
可信資源的采集工作按照軟件過程劃分,各軟件過程存在類型相似的可信資源,如:需求階段的系統(tǒng)需求說明書和概要設計階段的概要設計說明書都屬于說明文檔類的可信資源;編碼階段的局部單元測試方案和測試階段的模塊測試方案都屬于測試文檔類的可信資源。為了更好地組織可信資源,對可信資源做出更高層次的抽象,提出了自定義可信資源類型和自定義可信資源庫的概念。自定義可信資源庫是一個自定義可信資源類型的集合。自定義可信資源類型由評估方案的設計者根據軟件項目單獨定制。可信資源的采集工作以自定義可信資源庫為依據,規(guī)范了可信資源采集的范圍,減少可信資源的冗余。
可信證據的采集通常依賴于可信資源的收集與管理。同一個可信證據可以由多個可信資源支撐。可信證據的可信度評估需要依賴不同可信資源的完備程度。王德鑫等[8]提出的可信證據定義包含了證據的度量、證據滿足的可信級別和證據類型,但是缺少對證據相關的可信資源的管理,同時也沒有指定證據的合并方法,不能夠支持可信證據的自動合并。因此,我們用e= <id,ptype,vtype,level,value,combinerule,set<r>> 表 示 可 信 證據。id是證據的唯一標識,ptype為該條證據所屬的可信原則;vtype∈{B,L,N,P}表示該證據的數據類型:布爾型(B)、等級型(L)、數值型(N)和百分比型(P),level是該證據滿足的可信級別;value是該證據對應的實際值;新增的combinerule屬性指定同一證據類型不同證據實例相同屬性的合并規(guī)則,例如求均值、取最大值、取最小值和求和等,也可以是自定義規(guī)則;新增的set<r>是該證據包含的可信資源的集合,建立可信證據與可信資源的聯(lián)系。例如針對空間飛行器在軌運行管理文檔化和在軌運行評審可信原則對應的可信證據:“是否有在軌運行測試文檔、在軌測試代碼率、在軌測試人員的經驗和在軌運行階段缺陷率等”,需要相關的文檔、動力學模型、測試數據和其他相關可信資源的支撐。
軟件開發(fā)流程中會有新的軟件分支產生,例如開始新版本的研發(fā)時需要加入新功能模塊。新功能模塊的開發(fā)以軟件分支的形式存在,每個分支包含需求分析、設計、開發(fā)和測試等多個軟件過程,每個軟件過程產生大量可信證據。一個軟件分支開發(fā)結束后,需要與主分支合并,形成軟件的一個新的版本。軟件分支合并過程也伴隨著可信證據的合并。由于主線上的可信證據具有不同的類型,屬于不同的可信原則,同時軟件分支也包含屬于不同可信原則的可信證據,需要根據可信證據的不同類型進行合并。同時很多可信證據由可信數據資源支撐,因此在可信證據合并時需要對可信資源也進行合并。
圖1 可信證據與資源合并規(guī)則示意圖
圖1說明了可信證據合并的具體方法。假設現(xiàn)有主分支項目1和分支項目2,需要將分支項目1合并到分支項目2。分支項目1下?lián)碛锌尚抛C據A1、B1、E1,分支項目2下?lián)碛锌尚抛C據A2、B2、B3、C1、C2、D1。A1、A2同屬證據類型α,B1、B2、B3同屬證據類型β,C1、C2同屬證據類型γ,D1的證據類型為δ,E1的證據類型為θ。對于可信證據A1、A2,依據combinerule屬性定義的合并規(guī)則實施合并操作,若combinerule屬性的取值為average(取平均),則對A1、A2的value屬性的值取平均,然后賦值給A1(A1在合并時作為主證據)。合并時不僅需要合并證據的值,還需要將被合并分支項目的證據集合存儲于主證據中,具體通過可信證據的set<ref>屬性保存其他可信證據的索引(id)。對于可信證據B1、B2、B3,其合并邏輯和A1、A2合并時類似。對于可信證據C1,C2,由于分支項目1并沒有同屬于類型γ的可信證據,因此,分支項目1會新增可信證據C3,同時將C1的所有信息拷貝至C3,然后以C3為主證據,C2為分支證據,執(zhí)行合并操作。對于可信證據D1,由于主項目1下沒有該類型的證據,因此會新增可信證據D2,同時拷貝D1的所有信息(除id外)給D2。同時,可信資源隨可信證據的合并過程一起合并到主項目。
可信證據與可信資源合并方法的主要步驟見算法1,主要包括:1)對分支項目中的可信證據集合branch_evid_set執(zhí)行遍歷操作。2)在遍歷過程中,若主項目的可信證據集合main_evid_set為空,則將當前遍歷到的分支證據branch_evid拷貝至主項目可信證據集合中。若主項目的可信證據集合不為空,則嘗試尋找主項目可信證據集合中是否存在與當前遍歷到的分支證據類型相同的可信證據,若存在,則將該分支證據添加到主項目同類型可信證據的引用main_evid_ref中,并根據證據類型指導的合并規(guī)則重新計算可信證據的取值。若不存在,則拷貝該分支證據至主項目可信證據集合中。3)將分支項目可信證據對應的可信資源隨證據一起合并到主分支的可信資源集合。4)遍歷結束,完成主項目和分支項目可信證據和資源的合并。
基于本文提出的可信證據管理方法,以管理空間飛行器系統(tǒng)軟件開發(fā)過程為目標,研發(fā)了一套具有分支結構的可信證據與可信資源管理原型系統(tǒng)。系統(tǒng)的整體架構為“總項目、分支項目、軟件過程(可信原則)”三級架構。該可信證據與資源管理原型系統(tǒng),可以對軟件開發(fā)過程中的可信證據和可信資源進行全面的管理。驗證了本文提出的空間飛行器控制系統(tǒng)可信證據與資源管理方法的有效性。
算法1可信證據與可信資源合并方法
/*初始化主分支證據集合*/
1.Intialize main_evid_set
/*初始化其他分支證據集合*/
2.Intialize branch_evid_set
/*遍歷分支證據集合中的每個分支證據*/
3.foreachbranch_evid∈branch_evid_set do
/*如果主分支證據集合為空,
復制分支證據,加入主分支證據集合*/
4.ifmain_evid_set=?then
5. Intialize copy_evid
/*拷貝branch_evid至copy_evid*/
6. copy_evid←branch_evid
/*添加copy_evid到main_evid_set*/
7. main_evid_set←main_evid_set
∪{copy_evid}
8.end if
9.else
10. flag←0
/*遍歷主證據集合中的每個主證據*/
11.foreachmain_evid∈main_evid_set do
/*如果主證據和分支證據的類型一致,執(zhí)行合并操作*/
12.ifgetType(main_evid)=
getType(branch_evid)then
13. flag←1
/*獲取主證據的引用集合*/
14. main_evid_ref←
getRefSet(main_evid
/*添加branch_evid到
main_evid的引用集合*/
15. main_evid_ref←main_evid_ref∪
{branch_evid}
/*根據合并規(guī)則執(zhí)行合并操作*/
16. main_evid←
mergeEvid(main_evid_ref)
17.end if
18.end for
/*如果主證據集合中沒有與分支證據相同類型的證據,拷貝分支證據,添加到主證據集合中*/
19.ifflag=0
20. Intialize copy_evid
21. copy_evid←branch_evid
/*添加copy_evid到main_evid_set*/
22. main_evid_set←main_evid_set
∪{copy_evid}
23.end if
24.end else
25.end for
26.return
本文提出了一種空間飛行器控制軟件可信證據與可信資源管理方法。該方法針對空間飛行器控制軟件包含大量文檔、測試數據與模型等數據資源的特點,提出了可信資源管理方法。同時提出了基于可信資源的可信證據管理方法,提升了可信證據的可追溯能力和質量。通過軟件項目、軟件分支、軟件過程(可信原則)的層次劃分,對可信證據和可信資源實施層次化管理。針對空間飛行器控制軟件系統(tǒng)開發(fā)過程具有大量靈活多變軟件過程的特性,提出了與過程解耦合的可信原則與證據管理體系,以及可信證據與資源合并方法。為后續(xù)空間飛行器控制軟件可信評估奠定了基礎。