本發明涉及基于擴展的UML2序列圖的中斷驅動系統建模方法。中斷驅動系統設計人員可以采用該方法簡單直觀地描述中斷驅動系統。本發明屬于軟件工程,系統設計領域。
背景技術:
統一建模語言(UML,Unified Modeling Language)是一個支持模型化和軟件系統開發的圖形化語言,為軟件開發的所有階段提供模型化和可視化支持,是面向對象軟件的標準化建模語言。因其簡單、統一的特點,而且能清晰地表達軟件系統設計相關的信息,目前已成為可視化建模語言的工業標準。UML2序列圖(UML2Sequence Diagram)是一種UML行為圖,它通過描述對象之間發送消息的時間順序來描述多個對象之間的動態協作。利用UML2序列圖可以形象、具體地描述系統的交互行為。
中斷驅動系統被廣泛應用于汽車電子、航天電子、環境工程等多個領域中。在中斷驅動系統中,實時控制、故障自動處理、設備與設備間的數據傳送往往采用中斷驅動的方式實現。這主要是因為:(1)中斷開銷小,能夠適應系統硬件資源相對有限的條件;(2)中斷響應快,能夠滿足許多系統的實時性需求。但是對于復雜多樣的中斷驅動系統,目前沒有簡單易用的可視化圖形建模方法。
技術實現要素:
本發明目的是,提出一種基于UML2序列圖,通過擴展UML2序列圖的描述能力,使之能夠描述中斷驅動系統。為中斷驅動系統設計人員提供了直觀形象、易于理解的建模方法;清晰簡潔的表達系統設計的相關信息,利于中斷驅動系統的建模與設計以及相關的模型驗證、模型轉換以及模型到代碼的生成。
本發明技術方案是:一種基于擴展的UML2序列圖的中斷驅動系統建模方法,其特征包括如下步驟:
步驟1:擴展UML2序列圖,新增中斷交互操作類型用于描述中斷的發生和響應處理;
步驟2:將中斷驅動系統的執行流程劃分為一個中斷外交互和若干個中斷內交互;
步驟3:根據UML2序列圖規范對中斷外的流程進行建模;
步驟4:根據步驟1中定義的中斷組合片段對中斷的發生和響應處理進行建模;
步驟5:對中斷驅動系統的時間約束進行建模;
步驟1中的UML2序列圖由交互對象、生命線、消息、組合片段等元素構成,為一個二維圖;橫向軸依次列出交互對象;縱向是時間軸;時間沿豎線向下延伸,用于描述對象交互發生的時間先后順序;交互對象用生命線來表示,圖形為一個矩形加底部的一條垂直虛線。矩形內標注對象名,垂直線既表示對象的生命周期也表示時間軸;對象之間的交互用消息描述;消息是對象間的一種通信機制,由發送對象向另一個或其他幾個接收對象發送信號;其圖形描述為一條帶箭頭的線,起點在發送對象的生命線上,終點即箭頭端在接收對象的生命線上;消息名放置在帶箭頭的線上面,消息的發送和接收事件都有唯一的事件名,分別放置在帶箭頭的線的起點和終點;在UML2序列圖中選擇和迭代復雜的控制流用組合片段表示;不同的組合片段的功能由其交互操作類型決定;在UML2規范中,已定義的組合片段的交互操作類型片段有表示循環的loop、表示控制流的分支中二選一的alt和表示該片段內控制流為可選的opt,交互操作類型片段的圖形描繪方式符合UML2規范;
擴展UML2序列圖,新增中斷交互操作類型用于定義一種新的中斷組合片段;中斷組合片段的語法遵循UML2組合片段的描述規范:如圖1所示,由一個矩形方框表示組合片段的邊界;在矩形方框的左上角五邊形中,字符串int表示該組合片段的交互操作類型是中斷;p表示中斷優先級、為非負整數;id為可選內容,描述了該中斷組合片段的名稱;位于方框左上角五邊形下方的condition為條件表達式,是可選內容,其值為布爾型;
UML2序列圖中對象交互所產生的消息收發事件在時間上具有先后關系,這種時間上的先后關系構成時間上的偏序關系;在序列圖中基于以下兩條規則確定事件發生的偏序關系:1)同一條消息的發送事件先于接收事件;2)在同一條生命線上且同處于某一中斷組合片段內或都處于中斷組合片段外的兩個事件,位于生命線上方的事件先于下方的事件。由于中斷的發生和處理在時間上具有不確定性,為了表達這種不確定性,規定發生在中斷組合片段內的事件與中斷組合片段之外的事件不存在時間上的偏序關系,即規則3)發生在中斷組合片段內的事件與中斷組合片段之外的事件不存在偏序關系。以圖2為例,根據規則1,容易得到e1<e2、e2<e3等。根據規則2有e2<e6、e1<e12等,但因為e11處于中斷IRQ1內而e2處于中斷外,不能得到e2<e11;根據規則3,可以知道e11和e1,e2,...,e10都沒有偏序關系。。對于中斷優先級,規定高優先級的中斷片段的執行可以打斷低優先級的中斷的執行,但低優先級的中斷的執行不可打斷高優先級中斷的執行,這樣就可以對中斷優先級進行建模,并可以描述中斷嵌套。對于中斷響應的禁止和使能則使用變量賦值和條件表達式來建模。允許為消息的接收和發送事件綁定變量賦值操作,表示在消息的接收和發送時刻執行該變量賦值操作。變量賦值操作是可選的,在需要綁定變量賦值操作的事件名稱后添加一對大括號,括號內為相應的變量賦值語句。如果有多個賦值語句則在括號內用逗號分隔依次列出。變量對應于中斷屏蔽字,它的賦值用于控制中斷響應的開啟和關閉。條件表達式用于判斷中斷響應的開啟與關閉。若條件表達式為真則表示中斷組合片段所描述的中斷可以被響應和處理,反之則不可。條件表達式的表示格式為:變量名二元關系操作符變量值。支持的二元關系操作符有,等于(=)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)和小于等于(<=)。若條件表達式省略,則默認值為真(即默認中斷服務處于開啟狀態)。
步驟3具體化,根據UML2序列圖規范對中斷外的流程進行建模,其方法為,根據交互的控制流類型和先后順序,順序執行的對象交互用消息按時間軸從上到下表示,復雜的控制流用UML2序列圖規范中定義的組合片段表示;對系統中的循環控制流,在循環發生的位置添加loop組合片段;然后在loop組合片段方框內添加循環體,循環體內的交互可能是順序的對象交互也有可能是其他復雜的交互,如果是順序交互則在loop組合片段的方框內直接建模,如果有嵌套的復雜控制流,則在loop組合片段的方框內嵌套地添加其他組合片段。對系統中的選擇控制流可以在發生選擇的位置使用alt組合片段(控制流二選一)或者opt組合片段(opt組合片段內的控制流為可選)。alt組合片段和opt組合片段內的控制流如果是順序交互則在片段方框內直接建模,如果有嵌套的復雜控制流,則在片段的方框內嵌套地添加其他組合片段。最后添加變量賦值操作的交互事件,即根據步驟1定義的方法在事件名后添加賦值語句。對于圖2所表示的中斷驅動系統,完成步驟3后得到的中斷外流程模型如圖3所示。
步驟4具體化:根據步驟1中定義的根據中斷組合片段對中斷的發生和響應處理進行建模,其方法為:對步驟2得到的若干個中斷內交互(具體數量取決于系統內中斷的數量),對每個中斷,依次按下面的步驟處理:
4)在經步驟3所得的UML2序列圖中,選擇該中斷(可能)發生的位置,如果(可能)發生的位置不止一個,建模者根據對系統的理解,判斷最為可能的位置;或在幾個(可能)發生的位置中任意選擇一個。然后在該選擇的位置中添加中斷組合片段的框體,標出組合片段的操作類型int和名稱(可選)。
5)設置中斷優先級,如有中斷使能條件則在相應的位置添加條件表達式;
6)中斷內部的交互與系統中其他的交互不存在時間上的偏序關系,因此將中斷內的交互序列看作是一個在時間上相對獨立的子系統。在中斷組合方框內部,根據步驟3中對中斷外的流程進行建模的方法,對中斷內交互流程進行建模。
步驟5具體過程:對中斷驅動系統的時間約束進行建模。中斷驅動系統中的交互通常具有時間約束。時間約束描述,首先給出兩種時間約束模板:普通時間約束和投影時間約束。a≤e1–e2≤b為普通時間約束表達模板,其中e1和e2為兩個事件的名稱,代表事件發生的時間點,并且e2先于e1發生;a和b為實數并且0≤a≤b,b能取值到∞。e1–e2表示從事件e2發生的時間點到事件e1發生的時間點之間的時間間隔,如果期間發生中斷,它包含中斷執行的時間。a≤e1–e2≤b表達的語義為:系統在從發生事件e1到發生事件e2所經歷的時間不允許少于a個時間單位,不允許超過b個時間單位。a≤(e1–e2)↑≤b為投影時間約束表達模板,其中e1和e2為兩個事件的名稱,代表事件發生的時間點,并且e1和e2必須是同一個中斷組合片段的事件,或者e1和e2不屬于任何中斷組合片段,e2先于e1發生;a和b為實數并且0≤a≤b,b能取值到∞。
(e1–e2)↑表示的含義為,
·若e1和e2不屬于任何中斷組合片段,(e1–e2)↑則表示從事件e2發生的時間點到事件e1發生的時間點中系統用于執行非中斷任務所用的時間間隔。如果在事件e1和e2中間,有中斷事件的發生,那么中斷任務的執行所用的時間不計入內。
·若e1和e2是同一個中斷組合片段的事件,(e1–e2)↑則表示從事件e2發生的時間點到事件e1發生的時間點中系統用于處理e1和e2所在的中斷組合片段對應的中斷任務所用的時間間隔。如果在事件e1和e2中間,有高優先級的中斷事件發生,那么高優先級中斷任務的執行所用的時間不計入內。
a≤(e1–e2)↑≤b表達的語義為:(e1–e2)↑表示的時間間隔不允許少于a個時間單位,不允許超過b個時間單位。時間約束在模型中的描述方法是在序列圖中添加UML標注框,在標注框內依次列出對系統的時間約束。多條時間約束之間用換行符分割。
本發明的有益效果:
1)基于UML2序列圖的中斷驅動系統的建模方法擴展了UML2序列圖,使之能夠清晰準確地描述中斷驅動系統,清晰簡潔的表達系統設計的相關信息,為中斷驅動系統設計人員提供了直觀形象、易于理解的建模方法;有利于中斷驅動系統的建模與設計;
2)基于擴展的UML2序列圖的建模方法能夠清晰簡潔地表達系統設計的相關信息,有利于中斷驅動系統基于模型的建模設計、驗證和代碼生成等。
附圖說明
圖1為中斷組合片段語法圖示。
圖2為基于UML2序列圖的含中斷組合片段的系統模型。
圖3為基于UML2序列圖的中斷外交互的建模示例。
圖4為一個中斷驅動系統實例的基于擴展的UML2序列圖模型。
具體實施方式
下面將結合一個中斷驅動系統的實例,闡述使用本方法對該系統進行建模的實施過程。
首先介紹這個中斷驅動系統的實例。該系統情況如下:
1)系統中有3個交互對象:代理對象(Agent),中斷服務對象(Service)和外部設備對象(Peripheral)。
2)系統中有3個中斷IRQ1,IRQ2和IRQ3,他們的中斷優先級依次為1,1,2。中斷IRQ1包含的是一個順序交互序列;IRQ2為代理對象與中斷請求對象的交互,它含有一個循環控制結構;IRQ3為中斷請求對象與中斷服務對象的交互,它含有一個選擇分支結構。
3)中斷IRQ1在中斷請求對象和中斷服務對象完成初始化后開啟;中斷IRQ2在中斷請求對象完成初始化化后開啟;中斷IRQ3只能在中斷IRQ1內的消息m1和消息m4之間觸發。
4)若干對系統的時間約束:a)中斷服務對象初始化時間不少于2ms,不超過4ms;b)外部設備對象初始化時間不超過8ms;c)中斷IRQ1的運行時間(如果在此期間有其它中斷發生,不計其它中斷運行時間)不少于20ms,不超過40ms;d)中斷IRQ3的實際運行時間不超過5ms;e)中斷IRQ2的實際運行時間不超過20ms;f)系統運行的總時間不超過100ms。
對上述中斷驅動系統建模過程如下:
1)如圖4所示,繪制UML2序列圖方框并在右上角標注模型為SimpleModel;
2)在UML2序列圖SimpleModel內繪制系統中的3個交互對象的生命線并標注對象名:如圖4所示,在UML2序列圖方框內依次從左往右依次添加3條生命線,圖形為一個矩形外加底部的一條垂直虛線,依次在矩形框內標注對象名和對象類型,格式為對象名:對象類型。在這里,我們給3個交互對象分別起名為a:Agent,s:Service以及p:Peripheral。
3)將系統中的交互劃分為中斷外交互(e1,e2,…,e12)和中斷內交互IRQ1(e13,e14,…,e20),IRQ3(e21,e22,e23,e24)和IRQ2(e25,e26,e27,e28);
4)根據UML2序列圖規范在UML2序列圖SimpleModel內繪制中斷外交互;即在對象的生命線上,按照交互發生的時間順序依次添加消息,并標注消息名(ini0,ack0,int1,ack1,req,resp)和事件名(e1,e2,…,e12)。
5)根據發明內容中步驟4中描述的方法依次添加中斷組合片段IRQ1,IRQ2和IRQ3。然后,在中斷可能發生的位置添加中斷組合片段。中斷IRQ1和IRQ3在中斷服務對象和外部設備對象初始化之后才能觸發,因而在ack1之后添加中斷組合片段方框。中斷IRQ3只能在中斷IRQ1內觸發,故在IRQ1內添加中斷組合片段IRQ3。接著,在中斷組合片段方框添加中斷內交互。對于中斷IRQ3,我們按照步驟3所描述的方法操作:在IRQ3中斷片段內添加loop組合片段,然后在loop組合片段內添加消息m7和m8。對于中斷IRQ1,首先添加中斷IRQ1內的交互,標注消息名(m1,m2,m3,m4)和事件名(e13,e14,…,e20),然后在中斷IRQ3內添加alt組合片段,接著添加分支條件(u>0)并在該分支內添加消息m6并標注事件名e21和e22;在另一分支(else)內添加消息m6并標注事件名e23和e24。
6)在(5)中所添加的3個中斷組合片段中,對需要綁定變量賦值的事件添加變量賦值語句,然后分別對中斷IRQ1,IRQ2和IRQ3添加中斷使能條件表達式。在事件e1上添加變量賦值操作x=0,表示對象s未完成初始化,在事件e4上添加變量賦值操作x=1,表示對象s完成初始化;在事件e5上添加變量賦值操作y=0,表示對象p未完成初始化;在事件e8上添加變量賦值操作x=1,表示對象p完成初始化;在中斷IRQ1中添加中斷使能條件x==1&&y==1,表示該中斷必須在對象s和p完成初始化后才有可能發生;在中斷IRQ2中添加中斷使能條件x==1,表示該中斷必須在對象s完成初始化后才有可能發生。在中斷IRQ1內,對消息m1的發送事件e13添加變量賦值操作z=1,對消息m4的接收事件e20添加變量賦值操作z=0,然后為中斷IRQ3添加中斷使能條件z==1,表示只允許中斷IRQ3在消息m1和m4之間發生。
7)在序列圖的右下方添加標注框,在標注框內依次列出對系統的時間約束。對于約束a,我們用普通時間約束將其表示為2≤e4-e1≤4,并將該表達式添加到標注框內;同理,對于約束b,可表示為0<e8-e5≤8;對于約束c,我們采用投影時間約束將其表示為20≤(e20-e13)↑≤40;對于約束d,我們用兩條普通時間約束表達式表示:0<e22-e21≤5和0<e24-e23≤5;對于約束e和f,采用普通時間約束,可表示為0<e28-e25≤20和0<e12-e1≤100。最后將所有時間約束表達式添加到標注框內,中間以換行符隔開。
完成上述步驟所得的中斷驅動系統模型如圖4所示。