摘 ?要:為解決傳統(tǒng)盒圖靜態(tài)過(guò)程描述缺少動(dòng)態(tài)邏輯關(guān)系驗(yàn)證問(wèn)題,研究工作流中控制流的可視化建模與實(shí)現(xiàn);通過(guò)分析盒圖和控制流的轉(zhuǎn)換關(guān)系,將靜態(tài)的盒圖無(wú)縫地轉(zhuǎn)換成可視化的動(dòng)態(tài)控制流模型,完成從盒圖靜態(tài)過(guò)程描述到控制流的可視化動(dòng)態(tài)建模、實(shí)現(xiàn)、測(cè)試和驗(yàn)證;實(shí)現(xiàn)快速構(gòu)建復(fù)雜業(yè)務(wù)流程的可視化分析模型并提前驗(yàn)證,解決了復(fù)雜業(yè)務(wù)過(guò)程模型在編碼之前的邏輯驗(yàn)證,在實(shí)際的建模中,邏輯關(guān)系清晰,便于驗(yàn)證。
關(guān)鍵詞:工作流;盒圖;控制流;動(dòng)態(tài)建模與測(cè)試
中圖分類號(hào):TP311.51 ? ? 文獻(xiàn)標(biāo)識(shí)碼: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)
模塊或者算法的詳細(xì)設(shè)計(jì),描述了業(yè)務(wù)邏輯實(shí)現(xiàn)的方法和步驟,其結(jié)果基本上決定了最終的程序代碼的質(zhì)量。N-S圖也稱為盒圖,作為過(guò)程詳細(xì)設(shè)計(jì)的工具,在算法和程序之間充當(dāng)橋梁的角色,可以指明控制流程、處理功能、數(shù)據(jù)組織及實(shí)現(xiàn)細(xì)節(jié),從而保證程序代碼的正確性[1-3]。然而,對(duì)于復(fù)雜的業(yè)務(wù)邏輯,在代碼實(shí)現(xiàn)之前僅僅使用N-S圖的靜態(tài)過(guò)程描述,無(wú)法快速完成邏輯關(guān)系的動(dòng)態(tài)測(cè)試和驗(yàn)證,期望尋求一種簡(jiǎn)明、快速、可視化的動(dòng)態(tài)建模與測(cè)試方案。
WF(Workflow Foundation)是一種可視化的工作流編程引擎,其過(guò)程控制流C-F(Control Flow),可以直觀地描述復(fù)雜的業(yè)務(wù)邏輯過(guò)程,實(shí)現(xiàn)對(duì)流程控制的可視化建模。借助WF的過(guò)程工作流,可以實(shí)現(xiàn)從N-S到C-F的無(wú)縫轉(zhuǎn)換,通過(guò)建模轉(zhuǎn)換不僅可以可視化地展示模塊的業(yè)務(wù)邏輯,而且可以動(dòng)態(tài)的完成測(cè)試以及實(shí)現(xiàn)[4-8]。如圖1本文技術(shù)路線所示,在算法分析到程序?qū)崿F(xiàn)之間,探索一種從N-S靜態(tài)過(guò)程描述到C-F的可視化動(dòng)態(tài)建模、測(cè)試和驗(yàn)證方式,解決復(fù)雜業(yè)務(wù)過(guò)程模型在編碼之前的邏輯驗(yàn)證,實(shí)現(xiàn)快速構(gòu)建復(fù)雜業(yè)務(wù)流程的可視化分析模型并提前驗(yàn)證,具有實(shí)際意義。
2 ? N-S圖和控制流的轉(zhuǎn)換(Transform between N-S diagram and control flow)
如圖2N-S和C-F控制流之間的結(jié)構(gòu)轉(zhuǎn)換圖所示,圖中我們典型地給出了順序、選擇、循環(huán)結(jié)構(gòu)的圖形表示和邏輯轉(zhuǎn)換,可以看出,N-S圖的基本結(jié)構(gòu)和C-F控制流在可視化靜態(tài)建模上具有一一轉(zhuǎn)換對(duì)應(yīng)關(guān)系,邏輯實(shí)現(xiàn)具有一致性。如圖2(b)中所示,對(duì)于選擇條件結(jié)構(gòu),N-S圖只能夠靜態(tài)地描述條件判斷任務(wù),而C-F控制流在顯式地描述靜態(tài)邏輯判斷結(jié)構(gòu)的同時(shí),可以方便地借助WF引擎,動(dòng)態(tài)的運(yùn)行給出的“Condition”或參數(shù),快速的驗(yàn)證邏輯關(guān)系和算法;同時(shí),在實(shí)際的算法描述中C-F控制流的規(guī)范性和可視化,也帶來(lái)建模的便利性和清晰性,尤其對(duì)于較為復(fù)雜的算法和邏輯關(guān)系分析,更具備優(yōu)勢(shì)。N-S優(yōu)勢(shì)在于靜態(tài)的過(guò)程設(shè)計(jì)和描述,C-F的控制流可以在可視化描述業(yè)務(wù)過(guò)程的同時(shí),進(jìn)一步的快速實(shí)現(xiàn)動(dòng)態(tài)測(cè)試驗(yàn)證,這將在后面的建模與集成應(yīng)用中詳細(xì)描述。
3 ? 可視化建模與實(shí)現(xiàn)(Visualization modeling and implementing)
3.1 ? 順序結(jié)構(gòu)的建模與實(shí)現(xiàn)
如圖3所示C-F的順序結(jié)構(gòu)建模與實(shí)現(xiàn),在Sequence控制流中顯式地完成了Sequence_Activity_1、Sequence_Activity_2、Sequence_Activity_3順序過(guò)程建模,其中Sequence_Activity_1給出了相關(guān)的順序說(shuō)明,Sequence_Activity_2活動(dòng)任務(wù)中給出了可以動(dòng)態(tài)測(cè)試的變量variable1,可以完成模型的動(dòng)態(tài)業(yè)務(wù)邏輯測(cè)試,Sequence_Activity_3顯式地給出了測(cè)試的輸出結(jié)果。在實(shí)際的測(cè)試中,變量的輸入可以方便的設(shè)置變量類型和作用域,可視化的模型一目了然,且邏輯關(guān)系清晰,我們會(huì)在隨后的集成測(cè)試中給出測(cè)試結(jié)果。相比較N-S圖中的靜態(tài)描述和直接的編碼實(shí)現(xiàn),C-F圖給了我們快速可視化的邏輯展示。
3.2 ? 選擇結(jié)構(gòu)的建模與實(shí)現(xiàn)
如圖4所示C-F的選擇結(jié)構(gòu)。其中4(a)圖為IF選擇結(jié)構(gòu),判斷條件“Condition”可以動(dòng)態(tài)的設(shè)置,根據(jù)判斷的條件可以顯式地執(zhí)行“Then”和“Else”業(yè)務(wù)邏輯,同時(shí),對(duì)于每一個(gè)“Then”和“Else”分支都可以顯式地嵌入更復(fù)雜的業(yè)務(wù)邏輯或算法分析,非常容易擴(kuò)展。圖4(b)為Switch-Case結(jié)構(gòu),可以根據(jù)“Expression”條件表達(dá)式,顯式地確定“Case”執(zhí)行的對(duì)應(yīng)任務(wù),對(duì)于每個(gè)“Case”也同樣可以嵌入復(fù)雜的過(guò)程描述。在細(xì)節(jié)之處,我們可以看到C-F控制流中也默認(rèn)給出了“Default”分支。在實(shí)際的建模中,對(duì)于Case結(jié)構(gòu),C-F控制流以縱向分布,多判斷的擴(kuò)展遠(yuǎn)比N-S圖的橫向布局清晰。
3.3 ? 循環(huán)結(jié)構(gòu)的建模與實(shí)現(xiàn)
如圖5所示C-F的循環(huán)結(jié)構(gòu),其中圖5(a)為While循環(huán)結(jié)構(gòu),圖5(b)為DoWhile循環(huán)結(jié)構(gòu),可以直觀顯式地完成N-S的While循環(huán)條件和Until循環(huán)條件的建模,同時(shí)可以根據(jù)不同的參數(shù)和變量完成動(dòng)態(tài)測(cè)試,我們?cè)诤竺娴募蓜?dòng)態(tài)測(cè)試中給出案例分析。此外WF控制流中也給出了ForEach的建模方法。
4 ? 集成動(dòng)態(tài)測(cè)試(Integrated dynamic testing)
前面我們分析了C-F可視化建模的基本結(jié)構(gòu),下面將以一個(gè)典型的登錄測(cè)試過(guò)程完成測(cè)試應(yīng)用。主要關(guān)注集成應(yīng)用的可視化便捷性、動(dòng)態(tài)測(cè)試的參數(shù)、作用域和執(zhí)行的過(guò)程。更為方便的是對(duì)于復(fù)雜業(yè)務(wù)邏輯,每一個(gè)控制流都可以作為集成的組件,直接進(jìn)行可視化再集成。如圖6控制流的集成應(yīng)用所示,集成使用了C-F控制流的基本結(jié)構(gòu),最外圍是一個(gè)順序結(jié)構(gòu)(Sequence),在此內(nèi)部順序地完成“inputPassword”變量的賦值和If結(jié)構(gòu);進(jìn)入If結(jié)構(gòu)中可視化地給出了“inputPassword==password”判斷條件,可以根據(jù)動(dòng)態(tài)測(cè)試的需要,靈活的修改判斷條件,條件滿足輸出“welcome!”,否則進(jìn)入Else任務(wù);在Else任務(wù)中,又采用了一個(gè)Sequence結(jié)構(gòu)用于嵌入復(fù)雜的DoWhile循環(huán)結(jié)構(gòu)和順序執(zhí)行最后的提示信息“please enter next day!”;在嵌入的DoWhile循環(huán)結(jié)構(gòu)中順序的執(zhí)行判斷密碼輸入的次數(shù)“inputCounter = inputCounter +1”語(yǔ)句,用于計(jì)算輸入密碼的次數(shù)和頻率,并順序地給出每次輸入的提示信息。至此,一個(gè)顯式的N-S圖靜態(tài)過(guò)程設(shè)計(jì)被可視化地建模完成,根據(jù)模型的邏輯結(jié)構(gòu)可以靜態(tài)地分析邏輯關(guān)系,但對(duì)于復(fù)雜的業(yè)務(wù)流程顯然是不夠的,于是我們?cè)噲D引入動(dòng)態(tài)的測(cè)試和分析。
如圖7所示C-F組件動(dòng)態(tài)測(cè)試,借助WF的可視化實(shí)現(xiàn),可以很方便地實(shí)現(xiàn)集成動(dòng)態(tài)測(cè)試。在圖7(a)中給出了項(xiàng)目集成的更高層級(jí)的集成組件單元,將C-F中的過(guò)程流程封裝成可以進(jìn)一步可視化建模的組件,相當(dāng)于一個(gè)功能黑盒參與更復(fù)雜的業(yè)務(wù)過(guò)程測(cè)試。圖7(b)所示采用組件化的可視化建模,圖中的Sequence_Workflow、If_Condition_Activity、Case_Condition_Activity、While_Activity等不再是基本的結(jié)構(gòu),而是可以包含復(fù)雜業(yè)務(wù)邏輯的組件功能單元,比如可以是一個(gè)疫情狀態(tài)檢查的組件“YiQingStateChecking_Activity”或者完成訂單任務(wù)的“Order_Activity”等等,都可以在可視化建模完成后進(jìn)行集成封裝??梢暬膭?dòng)態(tài)集成測(cè)試,需要方便的可視化的動(dòng)態(tài)參數(shù)修改,在圖7(d)中,不僅可以動(dòng)態(tài)的設(shè)置參數(shù)的變量類型和值,也可以隨時(shí)設(shè)置并查看變量的作用域,比如password和inputPassword的作用域在Sequence基本結(jié)構(gòu)中,而inputCounter變量的作用域在DoWhile基本結(jié)構(gòu)中,同時(shí)還可以可視化的輸入或?qū)雱?dòng)態(tài)的參數(shù)和變量,可以方便地實(shí)現(xiàn)可視化的動(dòng)態(tài)測(cè)試。圖7(c)給出了集成動(dòng)態(tài)測(cè)試的結(jié)果,每一個(gè)過(guò)程和組件執(zhí)行都顯式可見(jiàn),可以有效地幫助復(fù)雜業(yè)務(wù)邏輯的驗(yàn)證和測(cè)試,達(dá)到了預(yù)期的效果。
5 ? 結(jié)論(Conclusion)
通過(guò)N-S和C-F可視化建模分析,我們將靜態(tài)的N-S圖無(wú)縫地轉(zhuǎn)換成動(dòng)態(tài)可視化的C-F圖,顯式地實(shí)現(xiàn)參數(shù)的輸入、輸出和處理過(guò)程,實(shí)現(xiàn)了業(yè)務(wù)邏輯和算法的正確性和有效性驗(yàn)證。對(duì)于較為復(fù)雜的業(yè)務(wù)流程,提供快速可視化的清晰驗(yàn)證,可以及時(shí)發(fā)現(xiàn)算法分析的錯(cuò)誤。解決了傳統(tǒng)N-S圖的靜態(tài)過(guò)程描述,缺少動(dòng)態(tài)可視化的邏輯關(guān)系驗(yàn)證問(wèn)題,在N-S圖和編碼之間起到橋梁作用。在實(shí)際的建模實(shí)現(xiàn)過(guò)程,快速清晰、高效,易于理解和應(yīng)用,具有實(shí)際意義。
參考文獻(xiàn)(References)
[1] 張海藩,牟永敏.軟件工程導(dǎo)論(第6版)[M].北京:清華大學(xué)出版社, 2013:117-128.
[2] 鄧德祥.結(jié)構(gòu)化控制流程圖(N-S圖)的改進(jìn)與模塊化程序設(shè)計(jì)的設(shè)想[J].計(jì)算機(jī)研究與發(fā)展,1995,32(12):21-26.
[3] 劉正余,蘇守寶,楊洋,等.N-S流程圖分析及其在算法描述中的應(yīng)用[J].井岡山大學(xué)學(xué)報(bào)(自然科學(xué)版),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的工作流框架的設(shè)計(jì)和應(yīng)用[D].重慶大學(xué),2015.
[8] 鐘委明.基于WF可視化工作流編輯器的設(shè)計(jì)與實(shí)現(xiàn)[D].中山大學(xué),2012.
作者簡(jiǎn)介:
孔令東(1973-),男,博士,講師.研究領(lǐng)域:軟件工程和工作流技術(shù).