?

基于控制流的盒圖動態建模與測試

2020-01-07 08:07孔令東
軟件工程 2020年12期
關鍵詞:控制流工作流

摘 ?要:為解決傳統盒圖靜態過程描述缺少動態邏輯關系驗證問題,研究工作流中控制流的可視化建模與實現;通過分析盒圖和控制流的轉換關系,將靜態的盒圖無縫地轉換成可視化的動態控制流模型,完成從盒圖靜態過程描述到控制流的可視化動態建模、實現、測試和驗證;實現快速構建復雜業務流程的可視化分析模型并提前驗證,解決了復雜業務過程模型在編碼之前的邏輯驗證,在實際的建模中,邏輯關系清晰,便于驗證。

關鍵詞:工作流;盒圖;控制流;動態建模與測試

中圖分類號:TP311.51 ? ? 文獻標識碼:A

Abstract: This paper studies visualization modeling and implementation of control flow as there is no dynamic logical relation verification in static process description of traditional N-S (Nassi Shneiderman) Diagram. Static N-S diagram is seamlessly transformed into visual dynamic model of control flow by analyzing the relationship between N-S diagram and control flow. Visual dynamic modeling, implementation, testing and verification method are completed from N-S static process description to control flow. The visual analysis model of complex business process can be quickly built and verified in advance. This study realizes the dynamic logic verification of complex business process model before coding. In actual modeling, the logical relationship is clear and easy to verify.

Keywords: workflow; N-S diagram; control flow; dynamic modeling and testing

1 ? 引言(Introduction)

模塊或者算法的詳細設計,描述了業務邏輯實現的方法和步驟,其結果基本上決定了最終的程序代碼的質量。N-S圖也稱為盒圖,作為過程詳細設計的工具,在算法和程序之間充當橋梁的角色,可以指明控制流程、處理功能、數據組織及實現細節,從而保證程序代碼的正確性[1-3]。然而,對于復雜的業務邏輯,在代碼實現之前僅僅使用N-S圖的靜態過程描述,無法快速完成邏輯關系的動態測試和驗證,期望尋求一種簡明、快速、可視化的動態建模與測試方案。

WF(Workflow Foundation)是一種可視化的工作流編程引擎,其過程控制流C-F(Control Flow),可以直觀地描述復雜的業務邏輯過程,實現對流程控制的可視化建模。借助WF的過程工作流,可以實現從N-S到C-F的無縫轉換,通過建模轉換不僅可以可視化地展示模塊的業務邏輯,而且可以動態的完成測試以及實現[4-8]。如圖1本文技術路線所示,在算法分析到程序實現之間,探索一種從N-S靜態過程描述到C-F的可視化動態建模、測試和驗證方式,解決復雜業務過程模型在編碼之前的邏輯驗證,實現快速構建復雜業務流程的可視化分析模型并提前驗證,具有實際意義。

2 ? N-S圖和控制流的轉換(Transform between N-S diagram and control flow)

如圖2N-S和C-F控制流之間的結構轉換圖所示,圖中我們典型地給出了順序、選擇、循環結構的圖形表示和邏輯轉換,可以看出,N-S圖的基本結構和C-F控制流在可視化靜態建模上具有一一轉換對應關系,邏輯實現具有一致性。如圖2(b)中所示,對于選擇條件結構,N-S圖只能夠靜態地描述條件判斷任務,而C-F控制流在顯式地描述靜態邏輯判斷結構的同時,可以方便地借助WF引擎,動態的運行給出的“Condition”或參數,快速的驗證邏輯關系和算法;同時,在實際的算法描述中C-F控制流的規范性和可視化,也帶來建模的便利性和清晰性,尤其對于較為復雜的算法和邏輯關系分析,更具備優勢。N-S優勢在于靜態的過程設計和描述,C-F的控制流可以在可視化描述業務過程的同時,進一步的快速實現動態測試驗證,這將在后面的建模與集成應用中詳細描述。

3 ? 可視化建模與實現(Visualization modeling and implementing)

3.1 ? 順序結構的建模與實現

如圖3所示C-F的順序結構建模與實現,在Sequence控制流中顯式地完成了Sequence_Activity_1、Sequence_Activity_2、Sequence_Activity_3順序過程建模,其中Sequence_Activity_1給出了相關的順序說明,Sequence_Activity_2活動任務中給出了可以動態測試的變量variable1,可以完成模型的動態業務邏輯測試,Sequence_Activity_3顯式地給出了測試的輸出結果。在實際的測試中,變量的輸入可以方便的設置變量類型和作用域,可視化的模型一目了然,且邏輯關系清晰,我們會在隨后的集成測試中給出測試結果。相比較N-S圖中的靜態描述和直接的編碼實現,C-F圖給了我們快速可視化的邏輯展示。

3.2 ? 選擇結構的建模與實現

如圖4所示C-F的選擇結構。其中4(a)圖為IF選擇結構,判斷條件“Condition”可以動態的設置,根據判斷的條件可以顯式地執行“Then”和“Else”業務邏輯,同時,對于每一個“Then”和“Else”分支都可以顯式地嵌入更復雜的業務邏輯或算法分析,非常容易擴展。圖4(b)為Switch-Case結構,可以根據“Expression”條件表達式,顯式地確定“Case”執行的對應任務,對于每個“Case”也同樣可以嵌入復雜的過程描述。在細節之處,我們可以看到C-F控制流中也默認給出了“Default”分支。在實際的建模中,對于Case結構,C-F控制流以縱向分布,多判斷的擴展遠比N-S圖的橫向布局清晰。

3.3 ? 循環結構的建模與實現

如圖5所示C-F的循環結構,其中圖5(a)為While循環結構,圖5(b)為DoWhile循環結構,可以直觀顯式地完成N-S的While循環條件和Until循環條件的建模,同時可以根據不同的參數和變量完成動態測試,我們在后面的集成動態測試中給出案例分析。此外WF控制流中也給出了ForEach的建模方法。

4 ? 集成動態測試(Integrated dynamic testing)

前面我們分析了C-F可視化建模的基本結構,下面將以一個典型的登錄測試過程完成測試應用。主要關注集成應用的可視化便捷性、動態測試的參數、作用域和執行的過程。更為方便的是對于復雜業務邏輯,每一個控制流都可以作為集成的組件,直接進行可視化再集成。如圖6控制流的集成應用所示,集成使用了C-F控制流的基本結構,最外圍是一個順序結構(Sequence),在此內部順序地完成“inputPassword”變量的賦值和If結構;進入If結構中可視化地給出了“inputPassword==password”判斷條件,可以根據動態測試的需要,靈活的修改判斷條件,條件滿足輸出“welcome!”,否則進入Else任務;在Else任務中,又采用了一個Sequence結構用于嵌入復雜的DoWhile循環結構和順序執行最后的提示信息“please enter next day!”;在嵌入的DoWhile循環結構中順序的執行判斷密碼輸入的次數“inputCounter = inputCounter +1”語句,用于計算輸入密碼的次數和頻率,并順序地給出每次輸入的提示信息。至此,一個顯式的N-S圖靜態過程設計被可視化地建模完成,根據模型的邏輯結構可以靜態地分析邏輯關系,但對于復雜的業務流程顯然是不夠的,于是我們試圖引入動態的測試和分析。

如圖7所示C-F組件動態測試,借助WF的可視化實現,可以很方便地實現集成動態測試。在圖7(a)中給出了項目集成的更高層級的集成組件單元,將C-F中的過程流程封裝成可以進一步可視化建模的組件,相當于一個功能黑盒參與更復雜的業務過程測試。圖7(b)所示采用組件化的可視化建模,圖中的Sequence_Workflow、If_Condition_Activity、Case_Condition_Activity、While_Activity等不再是基本的結構,而是可以包含復雜業務邏輯的組件功能單元,比如可以是一個疫情狀態檢查的組件“YiQingStateChecking_Activity”或者完成訂單任務的“Order_Activity”等等,都可以在可視化建模完成后進行集成封裝??梢暬膭討B集成測試,需要方便的可視化的動態參數修改,在圖7(d)中,不僅可以動態的設置參數的變量類型和值,也可以隨時設置并查看變量的作用域,比如password和inputPassword的作用域在Sequence基本結構中,而inputCounter變量的作用域在DoWhile基本結構中,同時還可以可視化的輸入或導入動態的參數和變量,可以方便地實現可視化的動態測試。圖7(c)給出了集成動態測試的結果,每一個過程和組件執行都顯式可見,可以有效地幫助復雜業務邏輯的驗證和測試,達到了預期的效果。

5 ? 結論(Conclusion)

通過N-S和C-F可視化建模分析,我們將靜態的N-S圖無縫地轉換成動態可視化的C-F圖,顯式地實現參數的輸入、輸出和處理過程,實現了業務邏輯和算法的正確性和有效性驗證。對于較為復雜的業務流程,提供快速可視化的清晰驗證,可以及時發現算法分析的錯誤。解決了傳統N-S圖的靜態過程描述,缺少動態可視化的邏輯關系驗證問題,在N-S圖和編碼之間起到橋梁作用。在實際的建模實現過程,快速清晰、高效,易于理解和應用,具有實際意義。

參考文獻(References)

[1] 張海藩,牟永敏.軟件工程導論(第6版)[M].北京:清華大學出版社, 2013:117-128.

[2] 鄧德祥.結構化控制流程圖(N-S圖)的改進與模塊化程序設計的設想[J].計算機研究與發展,1995,32(12):21-26.

[3] 劉正余,蘇守寶,楊洋,等.N-S流程圖分析及其在算法描述中的應用[J].井岡山大學學報(自然科學版),2010,31(06):70-72;81.

[4] Yongliang Li, Huaiqing Zhang, Hongbo Ju, et al. Visual simulation of quantitative thinning in a Chinese fir plantation based on workflow foundation[J]. Applied Engineering in Agriculture, 2015,31(3):339-349.

[5] Microsoft. WindowsWorkflowFoundation[EB/OL]. https://docs.microsoft.com/en-us/dotnet/framework/windows-workflow-foundation, 2017-03-30.

[6] Microsoft. ProceduralWorkflows[EB/OL]. https://docs.microsoft.com/en-us/dotnet/framework/windows-workflow-foundation/procedural-workflows#controlling-execution-flow, 2017-03-30.

[7] 何隆.基于WF的工作流框架的設計和應用[D].重慶大學,2015.

[8] 鐘委明.基于WF可視化工作流編輯器的設計與實現[D].中山大學,2012.

作者簡介:

孔令東(1973-),男,博士,講師.研究領域:軟件工程和工作流技術.

猜你喜歡
控制流工作流
抵御控制流分析的Python 程序混淆算法
工控系統中PLC安全漏洞及控制流完整性研究
基于返回地址簽名的控制流攻擊檢測方法
抵御控制流分析的程序混淆算法
基于Petri網數據流約束下的業務流程變化域分析
基于工作流2.0的智慧教室設計與研究
工作流在電力生產管理信息系統中的設計和應用
“奔向共贏、做到最好”行業信息化研究方法論
工作流技術在醫療信息整合工程中的應用分析
基于工作流的水運應急信息管理平臺設計 
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合