楊 濤,石 琳,宋夢蝶,李守斌,王 青
(1.中國科學(xué)院軟件研究所 互聯(lián)網(wǎng)軟件技術(shù)實驗室,北京 100190; 2.中國科學(xué)院大學(xué),北京 100190;3.中國科學(xué)院軟件研究所 總體部,北京 100190) (*通信作者電子郵箱wq@itechs.iscas.ac.cn)
支持多工具協(xié)同的流程管理系統(tǒng)的設(shè)計與實現(xiàn)
楊 濤1,2,3,石 琳1,3,宋夢蝶1,2,3,李守斌1,3,王 青1,3*
(1.中國科學(xué)院軟件研究所 互聯(lián)網(wǎng)軟件技術(shù)實驗室,北京 100190; 2.中國科學(xué)院大學(xué),北京 100190;3.中國科學(xué)院軟件研究所 總體部,北京 100190) (*通信作者電子郵箱wq@itechs.iscas.ac.cn)
軟件開發(fā)流程中越來越依賴各種計算機輔助軟件(CAS)。在使用多種工具的情況下,會遇到開發(fā)流程不可定制、流程數(shù)據(jù)不一致和流程管理效率低等問題。針對這些問題提出了一個支持多工具協(xié)同工作的軟件開發(fā)過程管理系統(tǒng)。通過分析軟件開發(fā)過程,研究支持快速迭代、偏向流程管理的軟件工程開發(fā)模式,結(jié)合工作流思想設(shè)計分層架構(gòu)的軟件開發(fā)過程管理系統(tǒng)。該系統(tǒng)經(jīng)過嚴(yán)格的測試用例檢測,在設(shè)計的576個測試用例下通過率達(dá)到85%,能夠完成工具協(xié)同的大部分需求,包括流程可定義、保持?jǐn)?shù)據(jù)一致和開發(fā)流程管理。該系統(tǒng)在7個軟件開發(fā)組,共約200人的規(guī)模下推廣試用。根據(jù)管理組、開發(fā)組和測試組的反饋結(jié)果,該系統(tǒng)比傳統(tǒng)方式節(jié)省了每周例會的時間,方便了開發(fā)任務(wù)的管理,從而提高了開發(fā)效率。
軟件工程;軟件開發(fā)流程;流程管理;工作流;計算機輔助軟件
在傳統(tǒng)的軟件工程中,軟件開發(fā)生命周期是一個十分重要的概念。隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,軟件開發(fā)節(jié)奏日益加快,快速迭代式的開發(fā)逐漸成為主流。在現(xiàn)代的軟件開發(fā)環(huán)境下,多人多地點參與的項目也日漸增多,復(fù)雜情況下的軟件開發(fā)需要考慮信息的對等、開發(fā)流程的定制、開發(fā)任務(wù)的分配以及管理等問題。在協(xié)同開發(fā)過程中,面對的開發(fā)流程和工作環(huán)境各不相同,單純依靠傳統(tǒng)的軟件開發(fā)模式,信息和數(shù)據(jù)的流轉(zhuǎn)基本靠人工來進行,效率較低,因此,通過研究軟件開發(fā)流程,將開發(fā)項目進行解耦,降低各個模塊之間的耦合度,來解決此類問題。
與此同時,隨著計算機軟件技術(shù)的發(fā)展,各種類型的信息系統(tǒng)和計算機輔助軟件(Computer-Aided Software, CAS)也被廣泛地使用以支持這些工作,但這些軟件和系統(tǒng)基本上是獨立運行的,相互之間缺乏必要的交互、協(xié)作與感知,從而使得它們在協(xié)調(diào)多個人的活動、協(xié)同完成某個共同的任務(wù)方面有著比較嚴(yán)重的不足。這也是工作流管理系統(tǒng)(Workflow Management System, WfMS)自進入20世紀(jì)90年代以來吸引了來自研究機構(gòu)與產(chǎn)業(yè)界廣泛關(guān)注的重要原因[1-4]。
本文從分析軟件開發(fā)過程的角度,研究支持快速迭代、偏向流程管理的軟件工程開發(fā)模式,提出一種基于工作流的支持多工具協(xié)同工作的軟件開發(fā)過程管理模型,致力于讓處于軟件開發(fā)過程中的用戶可以自由定制軟件開發(fā)流程,選擇適合的計算機輔助軟件,通過工作流來推動軟件開發(fā)生命周期中的數(shù)據(jù)進行自動流轉(zhuǎn)。該模型的靈活性和流程管理功能,讓軟件開發(fā)過程中的步驟更加直觀,開發(fā)流程管理更加方便,在一定程度上提高了軟件開發(fā)效率。根據(jù)設(shè)計這個框架的思想和實際需求,本文開發(fā)了流程管理系統(tǒng),并在7個軟件開發(fā)組織,共約200人的規(guī)模下推廣試用,證實了該方案的可行性。
工作流技術(shù)發(fā)源于20世紀(jì)六七十年代,其當(dāng)初主要目的是辦公自動化和無紙化。后來工作流的思想被應(yīng)用到各個行業(yè)中,通過工作流的思想來實現(xiàn)不同行業(yè)的操作流程,在提高效率的同時,也讓這些行業(yè)具體的操作流程逐漸變得規(guī)范。在過去的幾十年間,不同的學(xué)者們研究了不同行業(yè),如李志民等[5]研究的基于工作流的大型倉庫物流監(jiān)控系統(tǒng);李鵬等[6]研究的基于工作流技術(shù)的辦公自動化系統(tǒng)在醫(yī)院中的應(yīng)用;張宏等[7]研究的基于系統(tǒng)動力學(xué)的高速公路維護管理系統(tǒng)等[8]。本文的研究目標(biāo)是軟件工程領(lǐng)域,針對軟件開發(fā)日益成熟的開發(fā)模式和廣泛使用的軟件開發(fā)輔助工具,提供一種能夠提高軟件開發(fā)效率,有利于軟件開發(fā)流程規(guī)范性的軟件工程輔助工具集成方案。
1.1 工作流
工作流技術(shù)的標(biāo)準(zhǔn)化組織工作流管理聯(lián)盟 (Workflow Management Coalition, WfMC)于1993年成立。WfMC所給的定義為:工作流是一類能夠完全或者部分自動執(zhí)行的經(jīng)營過程,根據(jù)一系列過程規(guī)則,文檔、信息或任務(wù)能夠在不同的執(zhí)行者之間傳遞、執(zhí)行[9]。
工作流技術(shù)為工作流自動化和構(gòu)建流程應(yīng)用提供基礎(chǔ)平臺,實現(xiàn)了流程邏輯與業(yè)務(wù)邏輯的分離,支持業(yè)務(wù)流程的分析和規(guī)范化定義以及業(yè)務(wù)單元的自動組裝,降低了復(fù)雜流程應(yīng)用的開發(fā)難度,提高了應(yīng)用系統(tǒng)的管理效率。
1.1.1 工作流管理系統(tǒng)
工作流管理的主要目標(biāo)是通過對相關(guān)的人力資源、信息資源的調(diào)用,來協(xié)調(diào)和完成業(yè)務(wù)過程中的各個環(huán)節(jié),讓業(yè)務(wù)按照一定的邏輯順序依次執(zhí)行,實現(xiàn)業(yè)務(wù)流轉(zhuǎn)的自動化。
工作流管理系統(tǒng)主要具備以下3個功能特征:
1)工作流定義功能。
主要是對業(yè)務(wù)處理過程的計算機定義,提供了一種或多種分析、建模、系統(tǒng)定義技術(shù),將一個現(xiàn)實世界的業(yè)務(wù)處理過程轉(zhuǎn)換成計算機可處理的定義。
2)運行控制功能。
對過程的定義進行解釋,創(chuàng)建并控制過程的運行實例,調(diào)度過程的各種行為步驟,調(diào)用適當(dāng)?shù)娜斯ず虸T應(yīng)用程序資源。
3)運行交互接口。
提供與人員或IT應(yīng)用程序工具進行交互接口來處理各種活動步驟,例如確定過程的狀態(tài),調(diào)用應(yīng)用程序工具,傳遞應(yīng)用程序數(shù)據(jù)等[10]。
1.1.2 術(shù)語介紹
在該系統(tǒng)中,由于采用了工作流,有一些重要實體定義如下。
1)流程定義(延伸為模板)。
一個圖形流程定義,代表工作流的流程邏輯元素以及各元素之間的關(guān)系。工作流模板跟流程圖很類似,將一系列步驟按照一定的邏輯組織在一起,按照工作流定義語言形成一定的文本結(jié)構(gòu),能被工作流引擎所識別。工作流模板的定義方式最常見的就是圖形拖拽,工作流定義語言也有很多種,可擴展標(biāo)記語言(eXtensible Markup Language, XML)比較常見。圖1給出的就是工作流模板的樣例。
圖1 工作流模板
2)活動。
活動是組成流程定義中的一個邏輯步驟的任務(wù)(自動任務(wù)或人工處理)?;顒拥捏w現(xiàn)是任務(wù)節(jié)點,等待被分配任務(wù)的人去完成,是工作流流轉(zhuǎn)中工作流最關(guān)心的部分,也是跟工作流對接的業(yè)務(wù)最相關(guān)的部分。在模板被實例化以后,任務(wù)節(jié)點就具有了實際的意義。
3)活動所有者。
活動所有者是有權(quán)宣布一個活動結(jié)束,然后推進工作到流程中的下一個活動的參與者。
4)流程實例。
一個流程實例,通常稱為工作,是一個流程定義的運行實例。對于工作流引擎,只要是符合工作流定義的模板都可以被實例化,形成一個流程實例,就像操作系統(tǒng)分配的一個進程一樣。這個流程實例能夠攜帶被實例化時所賦予的信息在工作流引擎的推動下進行流轉(zhuǎn)。
5)流程上下文變量。
保存每一個流程運行的上下文信息。通常在流程定義中聲明這些變量,然后在流程實例生成時被實例化。
6)參與者。
參與者是以下類型之一:資源集、特定資源、組織單元、角色(一個人在組織內(nèi)部的作用)、人或系統(tǒng)(自動代理)。
1.2 計算機輔助軟件集成的開發(fā)環(huán)境
在軟件即服務(wù)(Software as a Service, SaaS)[11]的思想下,可以將軟件開發(fā)不同階段的輔助工具抽象成一個個不同的服務(wù)。從廣義上來說,可采用四級模型來說明軟件即服務(wù)應(yīng)用的成熟度,對于第二級成熟度而言,軟件及服務(wù)需要可配置[12]。
為了更簡明地闡述,本文簡化軟件工程開發(fā)模型為3個步驟:項目管理、代碼管理和缺陷管理。每個步驟下都有各種特色的計算機輔助軟件來輔助軟件開發(fā)過程,這些軟件的集成在軟件開發(fā)中扮演了十分重要的角色[13]。
軟件開發(fā)人員根據(jù)需求,設(shè)計的流程如圖2所示。
軟件開發(fā)者在設(shè)計開發(fā)流程的時候可以自由選擇不同的節(jié)點來完成不同的功能,而這些節(jié)點的背后就是一個個計算機輔助軟件提供的功能。在這樣一個靈活定制的流程之下,高效地實現(xiàn)軟件開發(fā)過程的自動流轉(zhuǎn)。
現(xiàn)有研究中,軟件開發(fā)輔助工具的集成已有相關(guān)研究,但是大部分的研究都是著力于輔助工具的硬性集成,偏向于研究一個支持某些軟件開發(fā)輔助工具的開發(fā)平臺,例如郭慎平[14]研究的基于Eclipse的嵌入式開發(fā)工具的研究與實現(xiàn)。在該平臺上對軟件開發(fā)過程中的任務(wù)和數(shù)據(jù)進行管理,包括任務(wù)分配和權(quán)限管理等。
圖2 簡化的軟件開發(fā)流程
1.3 研究意義
現(xiàn)有方案的劣勢就是軟件開發(fā)輔助工具的耦合性很高,不便于后期更換軟件或者版本,可擴展性和可維護性較低。
結(jié)合工作流的思想,針對這種能夠提高開發(fā)效率的平臺,本文與現(xiàn)有研究的區(qū)別主要體現(xiàn)在3個方面。
1)軟件開發(fā)流程可定制。
傳統(tǒng)的系統(tǒng)擁有固定的軟件開發(fā)流程,工具之間的耦合度很高,不便于后期更換軟件或者升級版本;本文設(shè)計的系統(tǒng)允許用戶定制不同的軟件開發(fā)流程,并選用不同的工具來實現(xiàn)。
2)軟件開發(fā)數(shù)據(jù)一致性。
傳統(tǒng)的系統(tǒng)在工具對接和數(shù)據(jù)流轉(zhuǎn)方面多采用硬性集成,通過工具間的接口對接的方式進行數(shù)據(jù)互聯(lián);不同工具的數(shù)據(jù)要求格式不盡相同,傳統(tǒng)系統(tǒng)在工具對接時處理這些數(shù)據(jù),各個對接之間的數(shù)據(jù)格式各異。本文采用的方法是在工作流中統(tǒng)一數(shù)據(jù)格式;這些信息的統(tǒng)一有利于信息的流轉(zhuǎn)和重要信息的提取,在本文3.3節(jié)有詳細(xì)介紹。
3)引入工作流來管理開發(fā)流程。
項目開發(fā)過程可以分成項目管理模塊、開發(fā)模塊、測試模塊、文檔管理模塊、集成模塊、驗證模塊等。充分利用不同計算機輔助軟件所提供的功能來完成和支撐軟件開發(fā)過程中在這個階段的需求[15]。
本文設(shè)計的基于工作流的支持多工具協(xié)同的軟件開發(fā)過程管理模型,是以工作流引擎為核心,來支撐軟件開發(fā)過程中的各種需求。圖3是該模型總體設(shè)計的基礎(chǔ)架構(gòu)。
本文的重點是工作流引擎的開發(fā)和流程管理與監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)。架構(gòu)中的各類工具應(yīng)用了面向服務(wù)和設(shè)計模式中代理模式的思想,通過服務(wù)代理中間件的方式實現(xiàn)與工作流最大限度的解耦。邵虹等[16]的工作中有詳細(xì)介紹。根據(jù)圖3的系統(tǒng)設(shè)計分析,需要設(shè)計和實現(xiàn)以下兩個方面。
1)工作流引擎。
①選擇合適的工作流引擎;
②開發(fā)基于工作流引擎的RESTful API(REpresentational State Transfer Application Programming Interface)。
2)流程管理。
①確定流程可定制化方案,提供流程定制服務(wù);
②提供可視化的流程和任務(wù)管理服務(wù);
③擴展設(shè)計數(shù)據(jù)庫來支撐數(shù)據(jù)的存儲和流轉(zhuǎn)。
圖3 系統(tǒng)設(shè)計架構(gòu)
2.1 工作流引擎
2.1.1 WorkFlow Engine & WorkFlow API
在架構(gòu)圖3中,工作流引擎(WorkFlow Engine)是一個核心部分。不同于張海軍等[17]提出的基于面向服務(wù)架構(gòu)(Service-Oriented Architecture, SOA)的企業(yè)應(yīng)用集成框架,工作流的加入對推動任務(wù)自動化流轉(zhuǎn)有著非常高效的作用。使用工作流的好處是,高可維護性以及擴展性。如果一個系統(tǒng)中只用到了一個流程,且變動的可能性不大,基本不需要考慮工作流。在本文架構(gòu)設(shè)計中,靈活的流程配置和服務(wù)選擇是它的特點,工作流引擎在該框架下起到了核心的作用[18]。
工作流可以將整個流程中不同的操作以一定的邏輯銜接起來,并且讓信息在其中自動流轉(zhuǎn)。系統(tǒng)會處理自動流轉(zhuǎn)的任務(wù),剩下的任務(wù)用某種方式通知需要處理的人,讓人介入,而不需要人主動去關(guān)注現(xiàn)在應(yīng)該做哪個步驟。
工作流引擎與靈活定制的流程相結(jié)合,并且流程可以靈活選擇相應(yīng)的服務(wù),就必須將工作流當(dāng)成一種服務(wù)來提供給軟件開發(fā)輔助軟件使用。對于制定的任何流程,以及選定的何種輔助軟件,只要這些軟件需要在流程中自動流轉(zhuǎn)傳遞信息的時候,就需要跟工作流進行接口對接[19]。根據(jù)工作流引擎的特點,開放出應(yīng)用程序接口(Application Programming Interface, API)來供服務(wù)進行調(diào)用和對接十分必要。
圖4所展示的就是工作流引擎以及工作流引擎API之間的關(guān)系,對應(yīng)架構(gòu)中的WorkFlow Engine 和 WorkFlow API兩層。將提供功能API與工作流內(nèi)核分離的另外一個好處就是提高了工作流自身的靈活性和可擴展性。由于流程的可定制性和服務(wù)的可選擇性,未來的流程可能更加復(fù)雜,服務(wù)種類可能更多,對工作流的功能要求可能更復(fù)雜,單獨將提供功能API作為架構(gòu)的一部分,會有利于后期的擴展、開發(fā)和維護。
圖4 工作流引擎參考模型
2.1.2 流程定義語言擴展
為了使工作流管理系統(tǒng)具有良好的互操作性,首先必須對工作流模型中公共的實體、屬性以及實體間的關(guān)系作一個規(guī)范。工作流管理聯(lián)盟于1999年提出了工作流過程定義語言 (Workflow Process Definition Language, WPDL),包括流程的節(jié)點、流轉(zhuǎn)方向、判斷條件、負(fù)責(zé)人等。合理的流程定義語言不僅能夠幫助工作流引擎更好地工作,更能夠讓使用者輕松明確地制定自己需要的流程[20]。根據(jù)本文設(shè)計的架構(gòu),需要對流程定義語言進行改進和設(shè)計,來支持服務(wù)和工具等更多的功能。
2.1.3 工作流模板庫
1)模板制作。
設(shè)計模板定制平臺,向用戶提供可操作的用戶界面(User Interface, UI)來定制屬于自己的軟件開發(fā)流程。設(shè)計合適的拖拽界面,根據(jù)需求定義適當(dāng)?shù)墓ぷ髁髂0骞?jié)點和流程語言是該部分的重點。
2)模板管理。
由于工作流模板的高復(fù)用性和可編輯性,建立一個模板庫對于提高用戶定制模板效率有著重要作用。每個用戶建立的模板都可以被保存至模板庫,用戶在自定義模板的時候也可以從模板庫直接導(dǎo)入相似模板進行修改,達(dá)到事半功倍的效果。
3)模板權(quán)限控制。
在軟件開發(fā)過程中,用戶權(quán)限角色化對于軟件開發(fā)過程管理是有幫助的,因此根據(jù)用戶的權(quán)限來相應(yīng)地建立模板庫的權(quán)限對于保護軟件開發(fā)過程中信息的安全性和私密性有著重要作用。
2.2 流程任務(wù)管理與監(jiān)控
所謂流程任務(wù)管理與監(jiān)控,就是對前面提到的工作流實例、任務(wù)等元素進行管理。完善的管理能夠讓工作流支撐的業(yè)務(wù)流程事半功倍。
2.2.1 流程部署
當(dāng)用戶部署工作流模板時,工作流會根據(jù)工作流模板所攜帶的信息部署生成一個工作流實例。在本文的設(shè)計中,針對軟件開發(fā)過程的流程的部署會包含其他的信息。當(dāng)給定一個工作流實例的時候,本文架構(gòu)首先會分析這個工作流實例所需要完成的步驟,完成每個步驟所參與的輔助軟件。除此之外,針對流程部署,采集一些其他的軟件開發(fā)過程相關(guān)輸入(如項目相關(guān)初始數(shù)據(jù)、流程節(jié)點負(fù)責(zé)人、軟件開發(fā)流程時間限制以及一些閾值等)。
2.2.2 流程管理
流程部署之后,流程實例中就包含一個個任務(wù)等待執(zhí)行,這些任務(wù)會按照設(shè)定的執(zhí)行邏輯,根據(jù)一定的條件進行執(zhí)行。這些任務(wù)實質(zhì)的內(nèi)容就是通過任務(wù)節(jié)點關(guān)聯(lián)的軟件開發(fā)工具去完成相應(yīng)的軟件開發(fā)需求。軟件開發(fā)過程有序進行的前提就是對這些任務(wù)進行高效的管理,同時給用戶提供便捷的服務(wù)。
1)待處理任務(wù)。
在設(shè)定好的軟件開發(fā)流程(模板)中,每個節(jié)點即為一個任務(wù),每個任務(wù)或是自動流轉(zhuǎn)或是有任務(wù)負(fù)責(zé)人,根據(jù)軟件開發(fā)流程化的特性,給所有負(fù)責(zé)人發(fā)送相關(guān)的任務(wù)信息,并提供查詢?nèi)蝿?wù)的接口。這樣會大大提高流程中節(jié)點負(fù)責(zé)人的工作效率。
2)人工處理。
軟件開發(fā)過程中,不同的任務(wù)有不同的執(zhí)行方式:與工具對接的自動流轉(zhuǎn)和與用戶操作相關(guān)的人工處理。與用戶操作相關(guān)的人工處理需要用戶的參與,從用戶那里獲得相關(guān)數(shù)據(jù),流程再根據(jù)相應(yīng)的邏輯進行流轉(zhuǎn)。
3)添加子流程。
當(dāng)一個節(jié)點任務(wù)過于復(fù)雜,可以將這個任務(wù)單獨處理為一個流程。面對這種情況,在當(dāng)前任務(wù)下面創(chuàng)建子流程是本文設(shè)計的一個亮點之一。子流程的創(chuàng)建機制與父流程相同,需要著重考慮和設(shè)計的是子流程與父流程執(zhí)行狀態(tài)的同步、數(shù)據(jù)的交互和節(jié)點負(fù)責(zé)人之間的任務(wù)傳遞。
2.2.3 流程控制
一個流程實例(Process Instance, PI)就是一個軟件開發(fā)流程的簡要概括。完善的流程控制會讓軟件開發(fā)過程進行的更加順利。
1)已發(fā)起流程。
通過已發(fā)起流程,用戶可以查看當(dāng)前已經(jīng)發(fā)起的流程,以及流程的一些信息。對應(yīng)過來就是當(dāng)前已經(jīng)啟動的軟件開發(fā)項目以及各個項目的進展。
2)流程監(jiān)控。
軟件開發(fā)流程狀態(tài)包括流程進展、耗時、產(chǎn)出、負(fù)責(zé)人以及接下來的動作活動等這些信息。通過圖表的形式將流程的狀態(tài)和流程的數(shù)據(jù),與流程執(zhí)行過程中數(shù)據(jù)的傳遞直觀地展現(xiàn)出來,這對控制軟件開發(fā)過程會有很大的幫助。
3)終止流程。
對于廢棄的項目或者需要重新作出調(diào)整的項目,提供一個終止流程并保存之前相關(guān)數(shù)據(jù)的功能十分必要。
2.2.4 數(shù)據(jù)統(tǒng)計
在本文設(shè)計的系統(tǒng)中,會收集軟件開發(fā)過程中幾乎所有的數(shù)據(jù),對這些數(shù)據(jù)的分析將會對以后的軟件開發(fā)過程有很大幫助。
1)工具使用統(tǒng)計。
在用戶設(shè)定模板進行軟件開發(fā)的時候,模板中會帶有使用何種軟件工程輔助工具來幫助開發(fā)的信息。對這些信息的統(tǒng)計能夠得出在不同開發(fā)階段使用不同軟件開發(fā)輔助工具的偏好,有利于優(yōu)化和推廣這些軟件開發(fā)輔助工具。
2)數(shù)據(jù)流量統(tǒng)計。
每個任務(wù)流轉(zhuǎn)時所攜帶的信息可以在執(zhí)行任務(wù)流轉(zhuǎn)的功能中進行統(tǒng)計和記錄。這些跟軟件開發(fā)相關(guān)的數(shù)據(jù),可以用來分析軟件開發(fā)過程中的行為偏好、開發(fā)過程的側(cè)重點等,對于優(yōu)化開發(fā)流程有一定的潛在價值。
3)模板使用統(tǒng)計。
記錄每一次模板的使用情況,針對經(jīng)常使用的模板可以進行優(yōu)化以及抽象成樣例模板,方便用戶進行模板定制。
2.3 數(shù)據(jù)庫設(shè)計
本文設(shè)計了存儲流程定義的表task_defined,它用來存儲流程定義XML文件的名稱、流程定義圖片的名稱、更新的時間以及創(chuàng)建該流程定義的用戶的編號和所在組號。
本文設(shè)計了流程實例的表task_instance,用來存儲流程實例的相關(guān)信息。每條記錄存儲的信息包括流程實例編號、狀態(tài)、標(biāo)題、創(chuàng)建時間、創(chuàng)建該流程實例的用戶編號、用戶名以及該流程實例中所有任務(wù)名稱和對應(yīng)任務(wù)的負(fù)責(zé)人,還包括該流程實例對應(yīng)的外部鏈接工具的編號。
本文設(shè)計了存儲對接外界工具的iscas_tool表,它用來存儲工具編號、工具描述、工具圖標(biāo)、工具唯一識別信息、工具名稱、工具對接統(tǒng)一資源定位符(Uniform Resource Locator, URL)等工具相關(guān)的信息。
除了上面設(shè)計的數(shù)據(jù)表之外,流程管理系統(tǒng)主要還應(yīng)用了Java業(yè)務(wù)流程管理(Java Business Process Management, jBPM)的18張數(shù)據(jù)表,在此就不列入數(shù)據(jù)表設(shè)計的范疇。
3.1 流程可定制化方案——流程定制平臺
在工作流的選擇上,本文選擇了目前主流且功能能完全符合本文需求的jBPM[21]。jBPM是最適合擴展的代表,是在所有開源引擎中最適宜被商業(yè)化應(yīng)用的一款。jBPM使用了開源框架Hibernate3, 支持當(dāng)前大多數(shù)流行的數(shù)據(jù)庫, jBPM將數(shù)據(jù)的管理職能分離出去,自己專注于商務(wù)邏輯的處理。使用jBPM流程定義語言(jBPM Process Definition Language, jPDL),直觀易懂,可以手工修改。它文檔豐富,用戶群最大,開源組織十分活躍,被JBoss收購后發(fā)展趨勢良好[22]。
jBPM本身有Eclipse中的流程定義插件,結(jié)合框架的需求和用戶友好性的考慮,在實現(xiàn)過程中開發(fā)設(shè)計了自己的流程設(shè)計器,能夠方便生成和導(dǎo)出XML文件。
流程定制方案上,用戶可以自主選擇不同的節(jié)點,包括開始節(jié)點、結(jié)束節(jié)點、任務(wù)節(jié)點、分支聚合節(jié)點、判斷節(jié)點等[23]。值得一提的是,在案例中本文設(shè)計的流程定義平臺上,任務(wù)節(jié)點是任務(wù)處理的核心所在,這個節(jié)點能夠攜帶很重要的信息,如標(biāo)識任務(wù)節(jié)點、節(jié)點使用工具、節(jié)點負(fù)責(zé)人等,本文也在基于XML的流程定義語言上擴充了自己的元素。
圖5是本文實現(xiàn)的流程定制平臺。
在用戶設(shè)計完成流程之后,需要對流程的合理性進行驗證,參考一些文獻(xiàn)以及jBPM的一些機制,因不是本文重點,在此就不作贅述[24]。
圖5 流程定制平臺
3.2 任務(wù)管理與監(jiān)控方案——任務(wù)管理系統(tǒng)
jBPM本身就提供了很多的用戶查詢交互接口,通過應(yīng)用程序接口調(diào)用的形式給出。本文設(shè)計的任務(wù)管理系統(tǒng),用來展示在這個框架下與用戶定義流程相關(guān)的內(nèi)容。從功能模塊劃分,將該系統(tǒng)分為3個部分:流程部署、流程任務(wù)管理和數(shù)據(jù)統(tǒng)計。
1)流程部署模塊。
系統(tǒng)可以根據(jù)開發(fā)模板的特性和開發(fā)流程的不同需求,傳遞相關(guān)數(shù)據(jù)來支撐開發(fā)過程中所需的功能。如圖6所示。
圖6 流程部署
2)流程任務(wù)管理模塊。
如圖7所示,流程任務(wù)管理包括任務(wù)列表、模板庫和流程監(jiān)控。流程監(jiān)控向使用者展示包括流程進度、流程數(shù)據(jù)流等,流程當(dāng)前狀態(tài)以及提供終止流程等操作。
圖7 流程管理
3)數(shù)據(jù)統(tǒng)計模塊。
數(shù)據(jù)統(tǒng)計模塊對所有服務(wù)的使用、工具的調(diào)用、流轉(zhuǎn)的數(shù)據(jù)提供統(tǒng)計和分析功能,便于改進流程;可以針對流程中任何一次的數(shù)據(jù)流轉(zhuǎn)進行數(shù)據(jù)追蹤。這些數(shù)據(jù)同時可以持久化到本地或者其他數(shù)據(jù)平臺,進行數(shù)據(jù)挖掘和機器學(xué)習(xí)等相關(guān)分析。
流程管理系統(tǒng)的設(shè)計旨在讓使用者有更好的用戶交互界面可以對流程進行設(shè)計和定制;對任務(wù)進行可視化、操作和監(jiān)控;對工具和服務(wù)進行注冊和驗證;對通過流程的數(shù)據(jù)流進行統(tǒng)計、分析、追蹤和統(tǒng)計。
3.3 數(shù)據(jù)的交互和流轉(zhuǎn)實例
假設(shè)簡化開發(fā)流程如圖8所示。
圖8 開發(fā)流程
Fig. 8 Flow chart of development
軟件開發(fā)流程中,雖然使用了很多支持工具,但是有很多信息具備一致性的性質(zhì),例如項目名稱、參與人員、開發(fā)組信息等。在該開發(fā)流程之下,設(shè)計數(shù)據(jù)流轉(zhuǎn)過程如圖9所示。
圖9 數(shù)據(jù)流轉(zhuǎn)示意圖
數(shù)據(jù)的傳輸分為兩個部分:Content和Taskdata。Content為全局?jǐn)?shù)據(jù),從發(fā)起流程開始,數(shù)據(jù)量會不斷擴大;Taskdata為增量數(shù)據(jù),每個任務(wù)節(jié)點產(chǎn)生的數(shù)據(jù)。
每個任務(wù)節(jié)點調(diào)用工作流接口結(jié)束任務(wù)的時候,會傳遞自己產(chǎn)生的數(shù)據(jù)到工作流。工作流將它合并到Content中,并傳遞到下一個任務(wù)節(jié)點。
在每個Taskdata傳遞回來的數(shù)據(jù)中,為確保數(shù)據(jù)能夠合并到Content中并解決重復(fù)更新問題,必須對Taskdata傳遞的內(nèi)容格式作出約束。系統(tǒng)中會設(shè)計通用詞表,Taskdata根據(jù)通用詞表來標(biāo)志自己傳遞回的數(shù)據(jù)。
3.4 系統(tǒng)測試
系統(tǒng)在超過7個開發(fā)組中推廣使用,并且委托測試組根據(jù)要求對系統(tǒng)主要功能進行了嚴(yán)格的測試,測試用例通過率超過80%以上為合格。
3.4.1 測試結(jié)果
表1為系統(tǒng)的測試結(jié)果。該測試結(jié)果為系統(tǒng)第一個版本的測試結(jié)果。功能測試中,針對系統(tǒng)主要功能,設(shè)計576個測試用例,執(zhí)行576個測試用例,無致命缺陷,無嚴(yán)重缺陷,有65個一般缺陷。測試用例通過率超過85%,達(dá)到合格標(biāo)準(zhǔn)。經(jīng)過調(diào)查問卷和周期性會議討論的形式,使用者反映在項目開發(fā)效率上已經(jīng)有很大的提升,對軟件開發(fā)效率的提高有著很大的幫助。
3.4.2 用戶反饋
相比較傳統(tǒng)軟件開發(fā)模式,該系統(tǒng)從不同用戶角度給軟件開發(fā)帶來了便利,提高了效率。
1)管理組組員。
該系統(tǒng)所提供的實時動態(tài)流程監(jiān)控,能夠讓管理組的用戶時刻了解流程的動態(tài),包括當(dāng)前開發(fā)的任務(wù)、任務(wù)的進度、任務(wù)耗時以及任務(wù)產(chǎn)出等軟件開發(fā)過程中產(chǎn)生的所有信息,同時該系統(tǒng)也給管理組提供方便的操作接口,可以直接對任務(wù)內(nèi)容和任務(wù)執(zhí)行隊伍進行校正和停止。管理者反饋,通過系統(tǒng)所能獲得和掌控的信息比每周例行召集開發(fā)組長開會獲取的信息還要豐富,既簡便也實用,提高了工作效率。
表1 測試用例執(zhí)行結(jié)果
2)各小組組長。
開發(fā)組、測試組、集成組組長也表示該系統(tǒng)的靈活性也提高了他們的工作效率。開發(fā)組組長需要基于Gitlab開源工具來管理和評審代碼,在該系統(tǒng)平臺下,只需將Gitlab注冊到系統(tǒng)中,在部署流程任務(wù)的時候就可以讓組員使用Gitlab進行代碼托管,任務(wù)的產(chǎn)出會放在Gitlab上,方便了代碼的整合、管理和評審。同時,子父流程功能也能夠讓組長在分配任務(wù)的時候適當(dāng)確定任務(wù)的粒度,可以將不同任務(wù)進行細(xì)分,該系統(tǒng)使用起來十分符合實際需求。
3)各小組組員。
打開系統(tǒng)就能知道自己的任務(wù)內(nèi)容,任務(wù)進展和任務(wù)產(chǎn)出,同時能夠知道上游任務(wù)相關(guān)人員相關(guān)的任務(wù)產(chǎn)出和可以使用的相關(guān)資源,節(jié)省去了一部分頻繁接洽和郵件商討的時間,提高了工作效率。
基于工作流的支持多工具協(xié)同工作的軟件開發(fā)過程管理模型致力于現(xiàn)代軟件開發(fā)流程的自動化,提供自由可定制開發(fā)流程的方案,對軟件開發(fā)流程進行全方位的管理與監(jiān)控,對流程中的數(shù)據(jù)進行統(tǒng)一的統(tǒng)計、分析和追蹤。它可以有效地解決現(xiàn)有的軟件開發(fā)過程中的3個問題。
1)軟件開發(fā)流程可配置。
分析軟件開發(fā)過程的步驟并分解,降低各個模塊之間的耦合性,提升軟件開發(fā)過程的靈活性和便捷性,使得軟件輔助軟件的參與不顯得十分僵硬。
2)流程數(shù)據(jù)不一致。
通過將工具與工作流對接的方式,將軟件開發(fā)流程中的數(shù)據(jù)統(tǒng)一到工作流中進行流轉(zhuǎn),達(dá)成了流程數(shù)據(jù)的一致性。
3)支持多工具協(xié)同的流程管理。
解決了軟件開發(fā)過程中同時使用多種工具所帶來工具數(shù)據(jù)和開發(fā)流程信息管理的問題。建立支持多種工具協(xié)同工作的軟件開發(fā)過程管理平臺,規(guī)范了多種工具下的開發(fā)流程管理,經(jīng)理論分析和實踐驗證,在一定程度上提高了軟件開發(fā)效率。
在目前架構(gòu)設(shè)計中,工作流引擎對工具開放的API的規(guī)范性和通用性還有待提高,如何完善這樣的工具與工作流對接標(biāo)準(zhǔn)是接下來的研究重點。這將會大大促進工具接入的效率,也有利于該模型的推廣。
References)
[1] 史美林,楊光信,向勇,等.WFMS:工作流管理系統(tǒng)[J].計算機學(xué)報,1999,22(3):325-334.(SHI M L, YANG G X, XIANG Y, et al. WFMS: workflow management system [J]. Chinese Journal of Computers, 1999, 22(3): 325-334.)
[2] BAINA K, BENALI K, GODART C. DISCOBOLE: a service architecture for interconnecting workflow processes [J]. Computers in Industry, 2006, 57(8/9): 768-777.
[3] 范玉順.面向服務(wù)的企業(yè)建模和工作流管理研究[J].中國計算機學(xué)會通訊,2006,2(3):77-79.(FAN Y S. Research on service-oriented enterprise modeling and workflow management [J]. Communications of CCF, 2006, 2(3): 77-79.)
[4] LIU B, FAN Y S. Research on architecture and key technology for service-oriented workflow performance analysis [C]// Proceedings of the 2007 International Workshop on Process Aware Information Systems. Berlin: Springer, 2007: 540-545.
[5] 李志民,趙一丁.基于工作流的大型倉庫物流監(jiān)控系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2016,39(6):66-69.(LI Z M, ZHAO Y D. Design of large warehouse logistics monitoring system based on workflow [J]. Modern Electronics Technique, 2016, 39(6): 66-69.)
[6] 李鵬,辛海燕,苗元青,等.基于工作流技術(shù)的辦公自動化系統(tǒng)在醫(yī)院中的應(yīng)用[J].齊魯醫(yī)學(xué)雜志,2016,31(1):96-98.(LI P, XIN H Y, MIAO Y Q, et al. Application of office automation system in hospital based on workflow technology [J]. Medical Journal of Qilu, 2016, 31(1): 96-98.)
[7] 張宏,任芳敏,鄭榮貝.基于系統(tǒng)動力學(xué)的高速公路維護管理系統(tǒng)仿真研究[J].系統(tǒng)仿真學(xué)報,2016,28(3):676-682.(ZHANG H, REN F M, ZHENG R B. Simulation research for highway maintenance management system based on system dynamics [J]. Journal of System Simulation, 2016, 28(3): 676-682.)
[8] 高愛華,王壽喜,趙昆鵬,等.天然氣管道工程計算集成應(yīng)用平臺開發(fā)[J].天然氣工業(yè),2015,35(7):85-90.(GAO A H, WANG S X, ZHAO K P, et al. Development of an integrated application platform for natural gas pipeline engineering calculation [J]. Natural Gas Industry, 2015, 35(7): 85-90.)
[9] Workflow Management Coalition. Workflow Client Application Program Interface (WAPI) Specification.WflVIC-TC- 1009,Version1.2 [EB/OL]. [2017- 01- 03]. http://www.wfmc.org/what-is-bpm.
[10] 趙瑞東,陸晶,時燕.工作流與工作流管理技術(shù)綜述[J].科技信息(科學(xué)·科研),2007,24(8):105-107.(ZHAO R D, LU J, SHI Y. Workflow and workflow management technology [J]. Science & Technology Information, 2007, 24(8): 105-107.)
[11] 耿冰,于修理.SaaS與傳統(tǒng)軟件的比較研究[J].沈陽師范大學(xué)學(xué)報(自然科學(xué)版),2009,27(1):84-86.(GENG B, YU X L. Comparison between SaaS and conventional software [J]. Journal of Shenyang Normal University (Natural Science), 2009, 27(1): 84-86.)
[12] 許四平.SaaS軟件即服務(wù)模型研究[J].硅谷,2009,8(4):9-9.(XU S P. Research on SaaS software as a service model [J]. Silicon Valley, 2009, 8(4): 9-9.)
[13] 劉偉,朱曉非,聶亞平.淺談軟件工程和CASE工具的運用[J].中國科技信息,2012,24(14):90.(LIU W, ZHU X F, NIE Y P. Application of software engineering and CASE tools [J]. China Science and Technology Information, 2012, 24(14): 90.)
[14] 郭慎平.基于Eclipse的嵌入式開發(fā)工具的研究與實現(xiàn)[D].武漢:武漢理工大學(xué),2009.(GUO S P. Design and implementation of Web application development platform auxiliary tool based on Eclipse plug-in technology [D]. Wuhan: Wuhan University of Technology, 2009.)
[15] 葛中澤.基于事件驅(qū)動的高效柔性工作流引擎設(shè)計[J].鄂州大學(xué)學(xué)報,2014,21(12):99-101.(GE Z Z. Design of efficient and flexible workflow engine based on event driven [J]. Journal of Ezhou University, 2014, 21(12): 99-101.)
[16] 邵虹,張雷,崔文成,等.面向服務(wù)的工作流管理系統(tǒng)研究[J].計算機集成制造系統(tǒng),2008,14(11):2212-2216.(SHAO H, ZHANG L, CUI W C, et al. Service-oriented workflow management system [J]. Computer Integrated Manufacturing Systems, 2008, 14(11): 2212-2216.)
[17] 張海軍,史維峰,劉偉.基于SOA企業(yè)應(yīng)用集成框架研究與實現(xiàn)[J].計算機工程與設(shè)計,2008,29(8):2085-2088.(ZHANG H J, SHI W F, LIU W. Research and implementation enterprise application integration framework based on SOA [J]. Computer Engineering and Design, 2008, 29(8): 2085-2088.)
[18] 劉明忠,薛恒新,黃慧君,等.支持跨企業(yè)協(xié)作的柔性工作流系統(tǒng)建模研究[J].計算機集成制造系統(tǒng),2004,10(11):1356-1363.(LIU M Z, XUE H X, HUANG H J, et al. Research on flexible workflow system modeling supporting cross-enterprise collaboration [J]. Computer Integrated Manufacturing Systems, 2004, 10(11): 1356-1363.)
[19] 蔡孝武,韓永國,藍(lán)科.一種輕量級工作流引擎的研究與設(shè)計[J].計算機工程,2010,36(20):78-82.(CAI X W, HAN Y G, LAN K. Research and design of lightweight workflow engine [J]. Computer Engineering, 2010, 36(20): 78-82.)
[20] 張中林,殷新春,陳崚.基于XML的工作流定義語言的研究[J].揚州大學(xué)學(xué)報(自然科學(xué)版),2002,5(3):48-52.(ZHANG Z L, YIN X C, CHEN L. Research of workflow definition language based on XML [J]. Journal of Yangzhou University (Natural Science Edition), 2002, 5(3): 48-52.)
[21] JBoss jBPM. [2017- 01- 03]. http://www.jboss.org/jbpm.2011.
[22] 何鑫.jBPM4工作流引擎在辦公自動化系統(tǒng)中的應(yīng)用[J].網(wǎng)絡(luò)與信息,2010,24(12):43.(HE X. Application of jBPM4 workflow engine in office automation system [J]. Network and Information, 2010, 24(12): 43.)
[23] 劉怡,張子剛,張戡.工作流模型研究述評[J].計算機工程與設(shè)計,2007,28(2):448-451.(LIU Y, ZHANG Z G, ZHANG K. Overview of workflow models [J]. Computer Engineering and Design, 2007, 28(2): 448-451.)
[24] 王霞,王剛,周立東.改進的工作流合理性驗證方法[J].計算機工程與應(yīng)用,2012,47(33):43-45.(WANG X, WANG G, ZHOU L D. Improved verification method for rationality of workflow [J]. Computer Engineering and Applications, 2011, 47(33): 43-45.)
This work is partially supported by National Natural Science Foundation of China (61432001, 91318301, 91218302).
YANGTao, born in 1992, M. S. candidate. His research interests include software tools servitization and flexible integration, workflow.
SHILin, born in 1985, Ph. D., assistant research fellow. Her research interests include empirical software engineering, requirement engineering, software evolution.
SONGMengdie, born in 1990, M. S. candidate. Her research interests include data resource servitization.
LIShoubin, born in 1987, M. S., engineer. His research interests include machine learning, software automation.
WANGQing, born in 1964, Ph. D., research fellow. Her research interests include software process method and technology, empirical software engineering.
Designandimplementationofprocessmanagementsystemsupportingmulti-toolcollaboration
YANG Tao1,2,3, SHI Lin1,3, SONG Mengdie1,2,3, LI Shoubin1,3, WANG Qing1,3*
(1.LaboratoryforInternetSoftwareTechnologies,InstituteofSoftware,ChineseAcademyofSciences,Beijing100190,China;2.UniversityofChineseAcademyofScience,Beijing100190,China;3.GeneralDepartment,InstituteofSoftware,ChineseAcademyofSciences,Beijing100190,China)
The software development process is increasingly depending on various Computer-Aided Software (CAS). Simultaneously using these tools bring some problems, including non-customized development process, inconsistent process data and inefficient process management. To deal with these problems, a software development process management system that supports multi-tool collaboration was proposed. The hierarchical architecture system was developed on workflow design by analyzing software development process and studying the software engineering development model that supports fast iteration and tends to process management. Besides, the system was rigorously tested under 576 test cases. As a result the pass rate is 85%, which is able to meet the majority of tool collaboration needs, including definable development process, consistent interaction data and available process management. The system has been used by seven development teams with about 200 developers. The feedback results from the managers, developers and testers show that this system saves the time of weekly meetings, facilitates the management of development tasks, and significantly improves the development efficiency.
software engineering; software development process; process management; workflow; Computer-Aided Software (CAS)
TP311.5
:A
2017- 01- 06;
:2017- 03- 03。
國家自然科學(xué)基金資助項目(61432001, 91318301, 91218302)。
楊濤(1992—),男,安徽安慶人,碩士研究生,主要研究方向:軟件工具服務(wù)化與柔性集成、工作流; 石琳(1985—),女,吉林長春人,助理研究員,博士,主要研究方向:經(jīng)驗軟件工程、需求工程、軟件演化; 宋夢蝶(1990—),女,遼寧大連人,碩士研究生,主要研究方向:數(shù)據(jù)資源服務(wù)化; 李守斌(1987—),男,山東濰坊人,工程師,碩士,主要研究方向:機器學(xué)習(xí)、軟件自動化; 王青(1964—),女,重慶人,研究員,博士,CCF高級會員,主要研究方向:軟件過程方法與技術(shù)、經(jīng)驗軟件工程。
1001- 9081(2017)07- 2019- 08
10.11772/j.issn.1001- 9081.2017.07.2019