?

軟件可靠性工程綜合應用建模技術研究

2018-11-15 09:00尚京威韓邢健
信息安全研究 2018年11期
關鍵詞:可靠性節點軟件

尚京威 陳 平 韓邢健

(工業和信息化部電子第五研究所 廣州 510610)

隨著計算機技術的迅猛發展,計算機軟件已經在越來越多的領域發揮著重要的作用,特別是航空航天、金融和醫療等關系國計民生的行業,對軟件可靠性有著越來越高的要求.通常軟件可靠性工程包括軟件可靠性早期預計、分配、分析、設計、測試和評估等多個活動環節,但是在實際的工程實踐中這些活動較為零散和孤立,各種軟件可靠性活動之間可以實現哪些數據共享,互相之間能夠提供什么樣的數據交互并不明確,無法為軟件開發活動提供全過程的軟件可靠性技術支持.導致在工程實踐中往往只是孤立地運用某一項技術,解決局部的軟件可靠性問題,缺乏完整的軟件可靠性工程應用.

本文提出一種軟件可靠性工程技術綜合應用技術,旨在解決軟件可靠性工程活動中的一系列信息孤島,在軟件的全生命周期內提供軟件可靠性預計、分配、分析、設計、測試和評估技術的綜合應用,為軟件可靠性工程提供全過程的支持.

1 軟件可靠性工程的定義和過程

美國宇航協會(AIAA)認為軟件可靠性工程是“應用統計技術處理在系統開發和運行期間所采集的數據,以便詳細說明、預計、估計和評價基于軟件的系統可靠性”[1].該定義主要強調的是軟件可靠性工程中的度量工作.Lyu[2-3]在《軟件可靠性工程手冊》中提出:“軟件可靠性工程是根據用戶的可靠性需求而對軟件系統操作行為的定量化研究”.美國的John[4]將軟件可靠性工程定義為一種確保產品的可靠性達到用戶要求,加速產品上市速度,降低產品成本的一種實踐方法,并提出了一種軟件可靠性工程過程模型,如圖1所示:

圖1 軟件可靠性工程過程

圖2 軟件可靠性工程過程框架

我國的阮鐮教授[5]提出:“軟件可靠性工程是指為了滿足軟件的可靠性要求而進行的一系列設計、分析、測試和管理工作”,并提出了一套全過程生命周期的軟件可靠性工程過程框架,如圖2所示:

總的來講,雖然關于軟件可靠性工程的定義很多,但是其核心思想都體現出圍繞著軟件可靠性要求而開展一系列活動.在得到較多認同的Musa和Ruan的可靠性工程模型中,Musa的過程模型過多地注重于軟件可靠性測試且不能覆蓋軟件的全生命周期,不能體現出軟件可靠性是設計出來的這一思想.Ruan的可靠性工程過程模型能夠覆蓋軟件的全生命周期,包含以軟件可靠性為核心的多項活動,但是只是體現出在軟件生命周期中可以開展的軟件可靠性活動,各項活動之間的信息交互關系并沒有真正得到體現.而在實際的軟件開發項目中,軟件可靠性工程過程與軟件的開發過程緊密相關,開發過程的并發、迭代、微循環對軟件可靠性工程活動有著很大的影響.實現軟件可靠性工程與軟件開發過程緊密結合,軟件可靠性工程活動之間緊密聯系,能夠更大地發揮軟件可靠性工程的價值和意義.

2 軟件可靠性工程的活動分析

根據可靠性工程過程模型,可以將軟件可靠性工程活動劃分為軟件可靠性預計(早期預計)、分配、分析、設計(可靠性設計準則[6])、測試(基于剖面的測試)和評估(基于失效數據的評估)等環節,每一個環節都作為軟件可靠性工程的一項重要活動,圍繞提高軟件產品可靠性這一中心發揮著作用.高可靠性的軟件是設計和開發出來的,因此不能孤立地談軟件可靠性工程,只有與軟件的開發活動緊密地結合起來才能發揮出更大的作用.

2.1 軟件可靠性工程過程與軟件開發過程的關系

盡管瀑布模型在工程實踐中詬病較多,但是一系列軟件工程過程模型都是以其為藍本演化發展而成,如原型模型、螺旋模型等.為了更好地分析軟件可靠性工程過程與軟件工程過程的關系,這里仍然沿用瀑布模型把軟件的開發過程分為系統定義、需求分析、設計、編碼、測試、維護等階段.這些階段可以是迭代開發過程中的一個子階段,也可以指軟件生命周期內的各個階段.軟件可靠性工程過程應該與軟件開發過程緊密地結合在一起.

1) 系統定義階段

系統的定義階段是軟件可靠性工程活動的起點,這里將系統的需求分析和系統設計統稱為系統的定義過程.系統定義過程為軟件可靠性工程活動提供了工程活動開展的依據.系統定義過程與軟件可靠性工程活動的交互如表1所示:

表1 系統定義過程與SRE活動的交互

2) 軟件需求分析階段

軟件需求分析階段一方面從軟件可靠性工程活動中獲得支持,另一方面為軟件可靠性工程活動提供數據來源.需求過程與軟件可靠性工程活動的交互如表2所示:

表2 需求分析過程與SRE活動的交互

3) 軟件設計階段

軟件設計階段是將軟件可靠性要求加以設計實現的過程;同時設計的細節為更為深入的軟件可靠性工程活動提供支持.軟件設計過程與軟件可靠性工程活動的交互如表3所示.

4) 軟件編碼階段

軟件編碼階段為軟件可靠性工程提供了更為詳細的參考細節;軟件可靠性工程則將可靠性設計要求和分析結論用于指導編碼工作的進行.軟件編碼過程與軟件可靠性工程活動的交互如表4所示.

表3 軟件設計過程與SRE活動的交互

表4 軟件編碼過程與SRE活動的交互

5) 軟件測試階段

軟件測試階段可以看作軟件可靠性活動結果的驗證過程,同時軟件可靠性活動指導測試的執行;為測試定量化的軟件可靠性評估提供數據.軟件測試過程與軟件可靠性工程活動的交互如表5所示:

表5 軟件測試過程與SRE活動的交互

2.2 軟件可靠性活動之間的聯系

軟件可靠性工程活動接收來自開發過程的信息,并為軟件開發過程提供軟件可靠性技術支持.通過對多個已完成的軟件可靠性工程項目的總結,建立了軟件可靠性工程數據交互關系圖,如圖3所示.

1) 軟件可靠性早期預計

軟件可靠性早期預計是在開發過程早期,根據類似軟件的信息、開發組織成熟度或已有的缺陷數據給出軟件系統可靠性的定量估計.早期預計的結果可以為軟件可靠性分配、分析提供參考.

2) 軟件可靠性分配

軟件可靠性分配的目的是將軟件系統的可靠性指標要求分配給軟件的各個配置項(必要時分配到軟件部件或軟件單元)[7],用以指導配置項(軟件部件或軟件單元)的設計開發.軟件可靠性活動的主要作用是為其他可靠性活動提供目標值,如可以為可靠性評估設立評估目標值;為可靠性測試提供統計實驗方案的目標值;明確高可靠性要求的模塊,為設計提出要求;為可靠性分析提供重點關注的分析模塊.

3) 軟件可靠性分析

軟件可靠性分析可以為軟件可靠性設計提供失效模式和關鍵模塊參考,作為建立設計準則的依據;為可靠性分配提供模塊的關鍵度等級.

4) 軟件可靠性設計

這里的軟件可靠性設計主要指的是為保證軟件可靠性設計要求而進行的軟件可靠性設計準則建立活動.建立的活動準則為詳細級的軟件可靠性分析提供參考.

5) 軟件可靠性測試

軟件可靠性測試是根據軟件操作剖面隨機抽樣生成測試用例,并執行測試和收集失效數據的軟件可靠性工程活動.可以細分為軟件可靠性增長測試和軟件可靠性驗證測試2種類型.為軟件可靠性測試構造的操作剖面可以對基于操作剖面的軟件可靠性分配方法提供支持;測試中收集的失效數據是軟件可靠性定量評估的數據來源.

6) 軟件可靠性評估

軟件可靠性評估是利用軟件可靠性測試收集到的失效數據,通過選用合適的軟件可靠性模型定量評估和預計軟件可靠性水平的活動.軟件可靠性評估結果可以為前期進行的可靠性分配、預計進行驗證;評估的可靠性結果還可以作為軟件可靠性測試是否停止的判別標準.

圖3 軟件可靠性工程數據關系圖

3 數據驅動的軟件可靠性工程過程模型

從第2節的分析可以看出,軟件可靠性工程過程與軟件開發過程緊密相關,兩者之間發生著頻繁的數據交互.軟件可靠性活動從軟件開發過程獲取數據來源,其產出支持保證軟件可靠性要求的軟件開發活動.同時軟件可靠性工程活動之間也相互影響相互支持,形成了為保證軟件的可靠性要求而開展的一系列軟件可靠性工程活動.軟件可靠性過程之間以及軟件可靠性過程與開發過程之間的數據流關系,實質上是一種以工程業務流程為主的工作流關系.可以以工作流模型的方式建立軟件可靠性工程過程模型,將軟件可靠性工程過程和軟件開發過程有機地結合在一起,形成一套完整的軟件可靠性工程過程方法.

3.1 軟件可靠性工程過程中的工作流定義

工作流目前尚無統一定義,比較受廣泛認可的是工作流管理聯盟(WFMC)的定義[8]:工作流是一類能夠完全或者部分自動執行的經營過程,它根據一系列過程規則、使得文檔、信息或任務能夠在不同的執行者之間進行傳遞與執行.工作流技術的主要優點是能夠將業務邏輯和過程邏輯清晰地分隔開來.在過程邏輯中,可以定義軟件可靠性工程中各個業務活動的先后順序及連接方法,使得各個活動以松耦合的方式連接在一起共同完成業務流程;當業務邏輯發生變化時只需要重新定義各個活動的連接順序即可.

借助于工作流模型可以對可靠性活動的實施過程進行描述、抽象,描述軟件可靠性業務流程;對流程進行冗余、相似性的分析優化,實現流程集成;對軟件可靠性工程活動流程狀態進行監控;實現軟件可靠性工程集成系統的開發.

3.2 軟件可靠性過程模型的工作流元素定義

一個完整的軟件可靠性工程過程是由一系列最基本的可靠性活動按照一定的邏輯順序規則組成的.軟件可靠性工程活動與它們之間的數據依賴、邏輯關系可以用有向圖進行表示.有向圖中的節點表示一個可執行的活動單元,連接于2個節點之間的有向弧即表示活動間的先后順序關系.過程模型中各元素的圖形化表示如圖4所示:

圖4 過程模型中各元素的圖形化表示

1) 活動

活動是指在一段不間斷的時間間隔內為實現某一個目標而由人工或者自動完成的一個行為,是組成業務流程的最基本單元.活動的輸入部分是保證活動開始的必要條件,如軟件信息、軟件需求文檔等,只有在滿足活動開展的條件后,該活動才能被激活.活動的輸出部分是指活動的結果,活動的輸入與輸出構成了每一個基本活動單元與外部之間的接口.工作流中的活動可以用于表示軟件可靠性工程活動.

2) 外部活動

外部活動是指不包含在當前業務流程中,但其輸出是當前業務流程中某活動的輸入.外部活動不是當前業務流程的組成部分,但對當前流程有著一定的影響.可以把軟件開發過程活動定義為軟件可靠性工程過程的外部活動.

3) 子過程

子過程是一類能夠分解的節點類型,其內部可以包含組成工作流模型的所有元素類型.軟件可靠性工程是一系列軟件可靠性工程活動的有序集合,可以把某些關系密切的活動集合起來,在圖中以一個節點表示.

4) 同步節點

將一個實際的業務流程映射為工作流模型時,描述活動間的邏輯關系是一項非常重要的環節.在軟件可靠性工程過程建模中,“與”和“或”是2類最基本的工作流邏輯關系.

“或”的關系表示:對于任意一個處于非執行狀態的節點n,只要有一條輸入連接弧發生了轉移,那么該節點即可被執行,即∪{n′∈Pre(n),l=(n′,n)∈L,Trans(l)=1,且l發生轉移}.

“與”的關系通過增加一類新的節點——同步節點S——來表達,它對活動起協調、同步的作用.規定當S處于執行狀態時,State(S)=1,將判斷它的所有輸入連接弧是否已經全部發生轉移:若是,則S的狀態就由1變為0,即S執行完畢;否則,S仍處于執行狀態,并將繼續判斷,直至滿足上面的條件后S才執行完畢,State(S)=1→0,即∩{n′∈Pre(n),l=(n′,n)∈L,Trans(l)=1,且l發生轉移}.

5) 連接弧

連接弧表達了圖中不同節點元素之間的邏輯順序關系.它從前趨節點指向后繼節點,體現了節點狀態的轉移與有向圖的演進.連接弧連接于同一層次中的任意2個有數據交換的節點之間來定義數據流,數據流動的方向就是連接弧所指的方向.數據連接弧上標明的數據集和DATA是該弧承載的數據類型.未標明數據集合的連接弧表示前趨節點和后繼節點存在著某種時序上的關系,沒有數據上的依賴.在軟件可靠性工程過程模型中,定義2種連接?。?/p>

1) 永真型.永真型的數據連接弧,當前趨節點產生的數據集D∈DATA時,數據弧轉移函數為真,Trans(l)≡1.這體現了一種順序關系,不需要經過任何條件的判斷,只要前趨節點執行完畢并產生后繼節點所需數據,即可激活后繼節點.

2) 不定型.即在滿足D∈DATA的同時,轉移函數的取值是需要在具體的工作流執行過程中由工作流或人加以判斷來確定的.這種判斷實際上體現了一種選擇關系,即根據不同的情況,通過滿足條件的連接弧的轉移,實現對某一節點的多個后繼節點的選擇性激活.

4 基于數據驅動的軟件可靠性工程過程模型的建模

根據軟件可靠性技術活動的輸入輸出數據,以及軟件開發過程中軟件可靠性工程的輸入輸出關系,為軟件可靠性工程過程建立軟件可靠性分配、分析、早期預計和軟件可靠性增長測試4項子過程,實現對軟件可靠性活動過程的封裝,并統一外部接口.而可靠性評估、測試過程相對簡單,直接在過程模型中體現.在子過程中,子工作流從子過程之外的外部活動獲得所需數據,根據數據的不同,選擇不同的軟件可靠性分配、分析、早期預計方法進行實施,同時將產出的數據傳向子過程以外.基于數據驅動的軟件可靠性工程過程模型如圖5所示:

圖5 數據驅動的軟件可靠性工程過程模型

軟件開發過程的各個階段產生了不同的數據,當這些數據滿足軟件可靠性技術活動觸發條件時,可靠性技術活動開始執行,它們的輸出將作為后續軟件可靠性活動的輸入數據和觸發條件,即輸人數據是活動的“觸發器”.在整個軟件生命周期內,這些數據作為軟件可靠性任務活動的動力,“推動”工作流流動.

5 軟件可靠性工程綜合應用方法的實現

基于數據驅動的軟件可靠性工程過程模型,利用Microsoft Visual Studio提供的工作流機制,本文開發出了軟件可靠性工程綜合集成環境.該集成環境將各個軟件可靠性輔助工具集成到集成環境中,通過軟件可靠性過程模型創建和管理過程模型的實例,協調用戶操作,調度軟件可靠性分配、設計、分析、測試和評估等應用軟件工具的工作流,在不同的應用程序間自動傳輸數據,實現了軟件可靠性工程過程的自動化管理和多種工具的有機整合.集成環境的結構圖如圖6所示.軟件可靠性綜合服務器為每個軟件可靠性工程應用對象軟件創建過程模型實例;集成環境中可以同時運行多個軟件可靠性工具客戶端,各個客戶端獨立處理單項軟件可靠性活動,但是活動的進程和與其他客戶端的交互受軟件可靠性綜合服務器的調度.

圖6 軟件可靠性工程集成環境結構圖

圖7 綜合服務器系統工作流程示意圖

綜合服務器系統工作流程如圖7所示.綜合服務器系統以過程實例運行時為核心,控制軟件可靠性過程模型實例的運行,通過過程模型解析器分析過程的內容和含義,通過任務分派器將任務項分派給參與該過程實例的各個客戶端,通過任務管理器管理各個任務項的信息,通過啟動控制器控制軟件可靠性過程的啟動,通過狀態轉換器控制過程實例、活動實例和任務項的狀態轉換.

6 結 論

軟件可靠性工程過程中的各項活動不但與軟件的開發過程發生著信息交互,同時各項活動之間也具有密切的數據聯系.通過建立數據驅動的軟件可靠性工程過程模型,將孤立的軟件可靠性工程活動與軟件開發過程,以及其他軟件可靠性工程活動緊密的聯系在一起,從而實現了軟件可靠性工程過程對軟件全生命周期的可靠性技術支持,形成了活動過程緊密結合的軟件可靠性工程過程,實現了軟件可靠性工程技術的綜合應用,有利于保證軟件可靠性工程技術的應用與實施,提高了軟件的可靠性.

猜你喜歡
可靠性節點軟件
CM節點控制在船舶上的應用
禪宗軟件
基于AutoCAD的門窗節點圖快速構建
概念格的一種并行構造算法
軟件對對碰
合理使用及正確測試以提升DC/DC變換器可靠性
GO-FLOW法在飛機EHA可靠性分析中的應用
5G通信中數據傳輸的可靠性分析
論如何提高電子自動化控制設備的可靠性
抓住人才培養的關鍵節點
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合