基于 Petri 網的軟件過程支撐環境設計
摘要
在軟件的生存周期中,軟件過程是整個軟件開發實施的核心。成功實施的軟件項目必須基于一個良好的軟件過程元模型與相應的軟件過程支撐環境。本論文為提出了 一個基于 XML Schema 定義的以活動為中心的軟件過程定義語言 SPDL,設計并初步實現了其基于 Petri 網理論進行軟件過程執行控制的支撐環境。
關鍵詞: Petri 網,軟件過程,過程模型,SPDL
Abstract
Software process is the core of development in software life cycle. Successful software project must base on a good software process meta model and a corresponding support environment. The thesis presents a XML Schema-based and activity-centric software process definition language SPDL, then designs and implements a execution controlling support environment based on the Petri net theory.Keywords: Petri net, software process, process model, SPDL
第 1 章 緒論
1.1 軟件過程與過程建模
軟件過程是軟件生存周期中所涉及的一系列相關過程。過程是活動的集合,活動是任務的集合,任務是把輸入轉換為輸出的操作[3]。軟件過程模型是軟件過程的靜態描述,是軟件過程執行的依據。軟件過程是軟件過程模型的執行實例,它是軟件過程模型的動態表現。
在進行具體軟模塊時,都需要對其進行建模,根據 L. Osterweil 提出的“軟件過程也是軟件”[3]的觀點出發,軟件過程需要建模是自然的。目前,對軟件模塊進行建模時最為常用的建模工具是 UML[1],它提供了對面向對象軟件模塊進行建模的統一標準。
1.3 軟件過程支撐環境現狀
對于軟件過程建模來說,目前尚未形成類似 UML 影響力的建模工具。OMG 提出了 SPEM(Software Process
Engineering Meta-Model )[16] 用于描述軟件過程模型,文獻[17]提出了基于 SPEM 的 CMM
軟件過程元模型,但都卻缺乏一個軟件過程執行、過程演化的執行支撐環境。
在文獻[3]中提出了一個的軟件并行開發模型及其控制模型,并基于 Petri 網理論對這些模型進行了精確定義,表明了 Petri 網理論是解決軟件過程建模與執行控制的有效途徑。
1.3 本課題的研究內容及意義
1.3.1 研究內容
-
軟件過程與軟件過程模型
軟件過程是指軟件生存周期中所涉及的一系列相關過程,軟件過程模型是軟件過程的靜態描述。如何準確地描述軟件過程模型是重中之重。 -
軟件過程控制
為了精確地進行軟件過程執行控制,基于 Petri 網的軟件過程模型描述與軟件過程控制是解決這一問題的有效途徑之一。
-
軟件過程支撐環境
軟件過程建模、軟件過程模型修改(模型演化)、軟件過程執行管理最終的目的是為了提高軟件生產率,所以提供一個高質量的支撐環境是必然的。
1.3.2 意義
近年來,隨著社會對軟件需求的與日俱增,如何控制軟件生產過程以及如何持續地改進、演化軟件過程就成為了軟件工程研究的核心問題之一。我認為提出一個精確 的軟件過程定義語言,并實現針對此語言可用的軟件過程支撐環境是非常有必要的。在該支撐環境下,軟件開發者:
- 能夠準確地定義軟件生存周期涉及的各類軟件過程模型
- 能夠根據定義的軟件過程模型精確地完成相應的軟件過程
- 在發現已定義的軟件過程模型有缺陷時能夠將其及時修正
1.4 Petri 網簡介
Petri 網是一種用于描述離散的、分布式系統的數學建模工具。1962 年,Carl Adam Petri 以其著名的論文“ Kommunikation mit Automaten ”獲得博士學位。在該論文中,他正式提出了 Petri 網論,這一年被視作 Petri 網的誕生之年。1970 年以后,Petri 又將他的網論發展為通用網論。現在,世界各地有許多科研人員專注于 Petri 網的研究,每年都舉行 Petri 網國際會議。Petri 網含有五個基本元素:
-
place(庫所)
一般用圓圈表示,可以形容為容納標碼的場所。它可以有容量限制也可以假設為容量無窮大。 -
transition(變遷)
一般用矩形或者一條短線表示,描述了從一個狀態到另一狀態的變化。變遷的發生是發生一般是原子性的,即不可中斷。 -
arc(有向?。?
一般用一段有向弧表示,從庫所指向變遷或者由變遷指向庫所,表征了兩者之前一種偏序關系。弧上可以設定權值大小,即一次性消耗的資源數目。 -
token(標碼)
即網系統中的資源,標碼的數目即資源數。在活的網系統中,資源可以在庫所變遷中不斷流動。 -
marking(標記)
記錄了 Petri 網中 token 的分布情況,描述了 Petri 網的狀態。
第 2 章 軟件過程定義語言
2.1 SPDL 概述
軟件過程定義語言 —— SPDL 是一種面向軟件過程建模者、以活動為中心的模型定義語言。它具有如下特征:- 涵蓋了軟件過程所涉及的基本元素,對這些元素的關聯、功能、信息進行了描述
- 能夠對軟件過程中的活動進行并行描述
- 能夠對軟件過程中涉及的角色進行統一的職責描述,定義各角色的權限
- 使用 XML 作為過程模型描述載體,具有良好的可讀性與互操作性
2.2 SPDL 元模型
元模型(meta-model)是用來定義語義模型的構造(construct)和規則(rule)的,通常稱為定義表達模型的語言的模型[1]。軟件過 程定義語言 —— SPDL 的元模型是用于描述軟件過程模型中的各個元素、元素之間的關系以及元素屬性的。
對象管理組織(OMG)使用元對象設施(Meta-Object Facility, MOF)對 UML 進行元模型建模[4]。MOF 是一個 4 層體系結構的模型驅動工程[5], 如下圖:
圖 2.1 MOF 模型
效仿 UML 的元模型建模方法,得出 SPDL 元模型建模體系結構 如下圖:
圖 2.2 SPDL 模型
下圖是 SPDL 的類設計(為簡潔起見,所有類圖都隱去了屬性以及操作)
圖 2.3 SPDL 類圖
2.2.1 XML Schema
附錄1
2.3 模型變換
2001 年,對象管理組織(OMG)提出了 MDA[2] 開發的概念,其中提到下面兩種類型的模型:
-
PIM(平臺獨立的模型,Platform Independent Model)
此類模型不與任何具體特定的平臺技術相關。例如,當我們在討論 SPDL 概念時,我們只關心什么是過程定義、什么是活動定義、什么是任務定義,而不會去關心 SPDL 的支撐環境是如何實現這些概念。
-
PSM(平臺特定的模型,Platform Specific Model)
此類模型非常重視給定平臺的特殊性與平臺的能力,讓模型變換以及代碼生成成為可能。例如,一個銀行應用的 PIM 可以使用 UML 來建模,然后變換這個 PIM UML 模型到 PSM Java EJB 模型以及生成絕大部分的 Java 代碼。
圖 2.4 模型變換原理概要
2.3.2 SPDL 實例的 Petri 網圖生成
Petri 網可以從兩個層次去描述,一是靜態層次,即 Petri 網圖;二是動態層次,即標記網。本節主要闡述 Petri 網圖及其生成。
下面給出 Petri 網圖的形式定義及其基本術語。
定義 1.1 [3] 如果三元組 (S, T, W) 稱為一個 Petri 網圖,那么
- S 是庫所的有限集合
-
T 是變遷的有限集合
- S ∪ T ≠ Φ,且 S ∩ T = Φ
- W: (S × T) ∪ (T × S) → N 為弧的多重集
流關系是弧的集合:F = {(x, y) | W(x, y) > 0}。在一些介紹 Petri 網相關文獻中,弧的重度只定義為 1,并在定義 Petri 網圖時使用 F 代替了 W。
定義 1.2 [3] 設 N = (S, T, F) 為一個 Petri 網圖,x ∈ S ∪ T,則
- . x = {y ∈ S ∪ T | (y, x) ∈ F}
- x . = {y ∈ S ∪ T | (x, y) ∈ F}
- . x . = . x ∪ x .
根據定義 1.1, Petri 網圖的 UML 建模如下:
圖 2.6 Petri 網 圖類圖
根據 SPDL 的元素結構,可以將其定義的軟件過程模型分為如下三種基本結構:
- 順序結構
- 選擇結構
- 并行結構
在實際的軟件過程建模中,一般需要組合這三種基本結構從而定義出實用的軟件過程模型。
2.3.2.1 基元塊
基元塊使用 Petri 網刻畫了 SPDL 過程模型中的基本結構?;獕K有以下幾類:
-
順序塊
刻畫了活動 e i 與 e j 是依次串行進 行的,如圖所示。
圖 2.7 順序塊
-
選擇塊
刻畫了活動 e i 與 e j 是有選擇地進 行,如圖所示。
圖 2.8 選擇塊
-
并行塊
刻畫了活動 e i 與 e j 是并行進 行的,如圖所示。
圖 2.9 并行塊
2.3.2.2 Petri 網圖生成
下面各圖分別展示了順序、選擇與并行結構的 Petri 網圖生成實例。
-
順序結構
圖 2.10 順 序結構的 Petri 網圖生成
-
選擇結構
圖 2.11 選擇 結構的 Petri 網圖生成
-
并行結構
在進行并行結構的 Petri 網圖生成時,將生成 Join 庫所隊列結構。這個結構是一個順序塊,其中庫所的個數與變遷的個數都等于并行活動個數 - 1。
2.4 基于 SPDL 的軟件過程建模方法
基于 SPDL 進行軟件過程建模時有兩種基本策略:
-
自頂向下
從過程開始建模,發現過程模型中所需要的活動不存在時進行活動建模、任務建模等。 -
自底向上
從參與者、屬性等開始建模,最后將這些實體組合成過程。
這兩種策略在建模時是交替使用的,自頂向下的策略可以看作是對過程建模的逐步精化;自底向上的策略可以看作是對過程元素的復用。
下面是基于 SPDL 的軟件過程建模方法的 UML 用例圖。
圖 2.13 建 模方法 UML 用例圖
圖 2.14 建模方 法 UML 活動圖
第 3 章 軟件過程執行控制
3.1 過程生存周期
過程是從無到有的,首先經過過程建模,得到一個原始的過程模型。該過程模型部署后執行時將得到過程實例,在過程實例的執行期對其進行監控,并針對過程執行中的數據、問題進行分析,可以得到一個改進的過程模型,最終將原始的過程模型進行重建模,并反復這個過程。
綜上,軟件過程是動態的,根據過程執行的反饋,按需修改過程模型,達到進一步提高軟件生產率的目標。軟件過程的生存 周期如下圖所示。
圖 3.1 軟件過程生存周期
3.2 過程執行控制
SPDL 為建模者提供了一種軟件過程模型的定義語言。在軟件過程模型實例化出一個軟件過程后必須精確地控制其執行,而基于 Petri 網的過程控制正是解決這一問題的有效途徑之一。
在執行的過程中,活動的完成將導致過程的完成或者導致下一 個活動的創建,該執行控制是基于 Petri 網進行控制的。在一次點火后,將改變過程狀態,生成新的活動,如下圖所示。
3.2.1 標記網初始化
標記網用于描述 Petri 網圖的狀態的,在軟件過程支撐環境中用于描述過程的狀態。
下面給出標記網的形式定義及其基本術語。
定義 1.3 [3] 設 N = (S, T, F) 為一個 Petri 網圖,∑ = (S, T, F, M) 稱為一個標記網,其中
- M ? S,稱為 N 的一個標記或一個瞬態
- 若 S ∈ T,且 . x ? M,x . ∩ M = Φ,稱事件 x 為可觸發的
- 若事件 x 被觸發(稱為點火),則標記網 ∑ 轉化為 ∑' = (S, T, F, M'),其中 M' = (M - . x) ∪ x . ,M' 也是 N 的一個標記,∑' 也是一個標記網
使用一個給定的過程模型實例化一個過程時就是在與給定的過程模型對應的 Petri 網圖中初始化一個標記網的過程。
過程實例化的 UML 時序圖如下:
圖 3.3 過 程實例化 UML 時序圖
3.2.2 點火控制
當一個過程執行時,其中某一個活動滿足了其完成條件時將觸發一次對應此活動的變遷的點火。如果點火順利完成,則相關標碼也會被成功移動,并生成對應的活動或結束整個過程。根據基元塊類別,可以將點火控制分為如下三類:
- 順序塊點火
- 選擇塊點火
- 并行塊點火
在控制這三種基本結構中的變遷點火時都基于如下步驟概要:
- 檢查變遷的點火條件是否滿足,如果滿足進行步驟 2;如果不滿足則退出點火
- 在輸入庫所中根據需要完成活動所在的過程選出對應標碼將標碼
- 從輸入庫所移到輸出庫所,即進行點火
-
順序塊點火
圖 3.4 順序塊點火
-
選擇塊點火
點火 Activity 1[Choice],說明在過程執行時選擇了 Activity 1。
-
并行塊點火
在完成 Start Activity 活動時將引起其相關聯的 Petri 網的執行:與這個完成活動的過程相關聯的標碼將與 Start Activity[Start] 庫所移動到 Fork 庫所。
當標碼移動到 Fork 庫所時,自動進行一次 Fork 變遷點火。
當 各并行的活動之一完成時,其對應的變遷的輸入庫所中的標碼將被移動到 Join 輸出庫所。此時,變遷 Activity 2 是不能被點火的,如果活動 Activity 2 在這個時刻完成,其對應的變遷 Activity 2 的點火將在變遷 Join 自動點火后進行。
當標碼移動到 Join 庫所時,自動進行一次 Join 變遷點火,使得這一標碼進入 Join 庫所隊列中。如果并行活動個數為 n,則在這個庫所隊列中進行(n - 2)次點火,使得標碼移動到隊列的尾部庫所(Join Queue n-1)。
當各并行的活動之一完成時,其對應的變遷的輸入庫所中的標碼將被移動到 Join 輸出庫所。此時,若不能進行變遷 Join 點火,說明所有的并行活動已經完成,因為 Join 庫所隊列已經放置滿了標碼。
圖 3.11 并行塊點火(5)
并行活動已完成后,點火 Join 庫所隊列隊尾變遷,結束整個并行塊。
圖 3.12 并行塊點火(6)
3.3 歷史追蹤
根據軟件過程的結構[6],將歷史記錄分為如下三個部分:
-
過程歷史
記錄了過程在某一操作發生時的關鍵數據。例如過程創建 / 完成,過程的活動執行路徑,優先級變更等。 -
活動歷史
記錄了過程中的活動在某一操作發生時的關鍵數據。例如活動創建 / 完成,活動所有者變更等。 -
任務歷史
記錄了活動中的任務在某一操作發生時的關鍵數據。例如任務創建 / 完成,參與者、優先級變更等。
第 4 章 軟件過程支撐環境設計
4.1 BeyondTrack 項目簡介
ByondTrack 是一個基于JavaEE 平臺的 B/S
結構的軟件過程支撐環境。在該環境下,使用者可以進行:
- 可視化的軟件過程建模
- 自定制過程變量
- 過程變量粒度的權限管理
- 過程任務、參與者管理
- 基于 Wiki 的文檔管理
- 追蹤過程事件歷史
4.2 體系結構設計
BeyondTrack 項目涉及到的主要技術以及相應的使用情況如下:
- 在 SPDL 處理上使用 JAXB 2.0(JSR 222)
- 在應用框架上使用 JBoss Seam 框架[8](2.1.1.GA),該框架為 Java Context and Dependency Injection(JSR 299)[9]的超集實現
- 數據庫持久化方面使用 JPA 1.0 (a part of JSR 220)[10]的 Hibernate[14] 實現,使用 Seam 托管的實體管理與事務管理
- 表現層選擇了 JSF 1.2(JSR 252)[11]的 RichFaces[12] 實現,以 Facelets[13] 作為 JSF 視圖定義框架
這里簡述一下選擇 JBoss Seam 框架的原因:
- 優秀的組件作用域與組件生存周期管理
- Annotation-based 組件配置,框架配置非常簡潔
- 整合了很多應用功能,例如規則引擎、工作流引擎、PDF 生成等
- 是一個 full-stack 的應用框架,提供了表現層、業務邏輯層與數據持久化層的整體解決方案
- 是 Java 企業級應用框架的"準規范"
高層組件設計如下:
結論
軟 件過程模型是軟件項目進行可控實施的基本保證,一個優良的、項目規模適用的軟件過程元模型是軟件過程模型建模的必要條件。使用 SPDL 能夠描述簡單的(順序 / 選擇 / 并行)軟件過程模型,并在 BeyondTrack 系統中得到過程建模、部署、執行、優化全生存周期的全支撐,在一定程度上提高了軟件開發效率。 在進一步的工作中,將繼續完善 SPDL 元模型,使之能夠描述更復雜的軟件過程(例如子過程),并加入對活動變遷條件的定義,使之在基于 Petri 網的過程執行控制時能夠自動或半自動地進行。致謝
在此衷心感謝我的導師李彤博士,正是有了他辛勤的工作,細心的指導和嚴格的要求,才有了本篇論文的順利完成。感謝金峰軟件公司,在那里我學習到了很多學校里學不到的軟件工程實踐與經驗。
感謝 BeyondTrack 項目組的成員,大家一起齊心協力,成功地完成了這個項目。這里特別感謝趙禹同學,他給出了很多細心的建議,在項目實現上也盡心盡責。
最后感謝我的家人,是你們深情的教誨和無微不至的關懷,才有了我今天的成績,對你們的感激之情無論用多少語言都無法表達!
參考文獻
[1] Rumbaugh J, Jacobson I, Booch G. The Unified Modeling Language Reference Manual. AddisonWesley Longman, Inc., 1999
[2] OMG. MDA Guide Version 1.0.1, document no: omg/2003-06-01, 2003
[3] 李彤, 孔兵, 王黎霞等. 軟件并行開發過程. 北京:科學出版社, 2003
[4] http://en.wikipedia.org/wiki/Metamodeling
[5] http://en.wikipedia.org/wiki/Model-driven_engineering
[6] ISO/IEC 12207, SOFTWARE LIFE CYCLE PROCESSES
[7] JSR 222, Java TM Architecture for XML Binding (JAXB) 2.0
[8] http://www.seamframework.org
[9] JSR 299, Web Beans
[10] JSR 220, Enterprise JavaBeans TM 3.0
[11] JSR 252, JavaServer Faces 1.2
[12] http://www.jboss.org/jbossrichfaces
[13] http://facelets.dev.java.net
[14] http://www.hibernate.org
[15] http://www.w3.org/XML/Schema
[16] http://www.omg.org/technology/documents/formal/spem.htm
[17] 基于SPEM的CMM軟件過程元模型, 2005 Journal of Software, Vol.16, No.8
附錄
1 SPDL XML Schema
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
