樊波,袁國銘,周萍,成天華
軟件工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的一種軟件開發系統性工程。UML(Unified Modeling Language,統一建模語言)作為軟件工程最為重要的描述手段和工具,在整個軟件系統構建工程中起到了關鍵作用。它們的關系如圖1所示:

圖1 UML設計在軟件周期中的應用
其中的用例圖、活動圖、類圖、對象圖、狀態圖、活動圖、順序圖、協作圖、構件圖、部署圖以及數據包圖等等都是屬于UML中的設計方法圖[1-5]。
狀態圖是系統分析的一種重要工具,它通過建立類對象的生存周期模型來描述對象隨時間變化的動態行為。系統分析員在對系統建模時,最先考慮的不是基于活動之間的控制流,而是基于狀態之間的控制流,因為系統中對象的狀態變化最容易發現和理解。它常用到的圖符如表1所示:

表1 UML狀態圖圖符
狀態圖和活動圖都是用來描述對象的動態行為。狀態圖側重于從行為的結果來描述,也就是一個一個的狀態;活動圖側重于從行為的動作來描述,也就是一個一個的活動。對于同一個行為,可以使用狀態圖和活動圖從不同的角度來描述。例如,如圖2所示:

圖2 進程的狀態圖和活動圖
圖 2中分別用活動圖和狀態圖描述了一個進程的工作過程和狀態變化,該進程完成一個典型的計算過程,即:輸入數據、計算、輸出結果。其中圖2的(b)圖的活動圖比較好理解,進程從起點開始分別執行“輸入數據”、“計算”和“輸出結果”這3個活動,然后結束該進程。活動圖雖然比較好理解,但是它只側重動作的描述,并不能反映實際系統的變化。圖 2(a)是該進程的狀態圖,首先進程得到處理器后,變成“運行”狀態;當需要輸入數據時,進程提出輸入要求,進入“阻塞”狀態;輸入數據完成后,進程進入“就緒”狀態;等到進程再次被調度占有處理器時進程的狀態變為“運行”,進程進行相應的計算處理;得到計算結果后,進程提出輸出請求,進入“阻塞”狀態;輸出結果完成后,進程進入“就緒”狀態;等到進程又一次被調動占有處理器,這時進程的狀態變為“運行”,進程運行結束。狀態圖主要反映了動作對于系統產生的影響,反映了系統中類和對象屬性的實際變化,對于設計和實現人員理解系統的內部狀態有很大的作用。
行為圖主要用于描述系統的動態模型和組成對象間的交互關系,包括狀態圖和活動圖。其中狀態圖描述類的對象所有可能的狀態以及事件發生時狀態的轉移條件。通常,狀態圖是對類圖的補充。在實際中并不需要為所有的類畫狀態圖,僅需為那些有多個狀態其行為受外界環境的影響并且發生改變的類畫狀態圖。而活動圖描述滿足用例要求所要進行的活動以及活動間的約束關系,有利于識別并行活動[6-10]。
狀態圖一般用于對系統中的某些對象,比如類、用例和系統的行為建模。建模的時候要找出對象所處的狀態、觸發狀態改變的動作,以及對象狀態改變時應該執行的動作。具體的建模步驟如下:
(1)找出適合用模型描述其行為的類;
(2)確定對象可能存在的狀態;
(3)確定引起狀態轉換的事件;
(4)確定轉換進行時對象執行的相應動作;
(5)對建模的結果進行相應的精化和細化。
(1)找出證券交易系統涉及類
根據狀態圖建模設計的步驟要求,分析證券交易系統,發現本系統一共涉及以下幾個類(對象):股票,股民,證券系統,上市公司,證監會,銀行和證券營業所。
下面主要就股民和股票兩個類進行狀態圖的繪制。
(1)股民的狀態分析
股民一般指從事股票交易的個人投資者,一般公民一旦進入證券交易所開戶就成為股民。股民一般包括兩種狀態:不含有股票和持有股票狀態,在此為了方便區分,把持有股票狀態的股民稱為“股東”,開戶而未買入股票狀態的稱為股民。
(2)狀態圖的描述
通過對股票在證券交易系統中可能的狀態分析,我們繪制狀態圖如圖3所示:

圖3 股民狀態圖及交易子圖
(a)圖為股民整體的狀態圖,(b)圖為股民一天交易子狀態的狀態圖。
判斷兩個不同狀態之間的轉換的觸發事件(動作):買入股票,由股民變成了股東;賣出全部股票,又由股東變成了股民。如果是復合狀態,就應該觀察其子狀態圖,子狀態圖是復合狀態圖的展開,如圖 3(b)所示:注釋告訴我們這是股民一天的交易狀態圖,圖中有一個“ ”圖符,表明股東交易是從上一個交易日結束算起,再進行“買入股票”或者“賣出部分股票”動作,進入今天交易狀態。“ ”表明股東可以進行多次交易。
從開始到結束將狀態圖按箭頭指向梳理一遍:通過“開戶”動作“進入股市”,成為“股民”,再通過“買入股票”成為某個上市公司的“股東”,“買入/賣出”交易可以循環進行。直到股民到證券所要求“退戶”,辦理了相關手續后“退出股市”。
(1)股票的狀態分析
股票是國家正大力提倡的一種金融投資工具,下面分析一般股票的幾個狀態:
配送階段:公司在準備上市過程中,會根據證券法規的要求,分配一些原始股票給相關人員,我們把這階段的股票叫做“原始股票”,通常它的價格比較低。
股票自由交易:當公司獲準上市時,他會選擇某個交易時間正式“上市股票發行”,進而股票進入“自由交易”狀態。通常,由于中國特殊的國情,股票在定發行價時會有一個 10%~20%范圍的讓利(與他們根據財務報表算出來的價格比較)。這在中國叫做“打新股”,通常90%的新上市股票都會在上市第一天價格上漲超過10%的漲停幅度(新股第一天,沒有漲跌幅的限制)。進入自由交易狀態后,有如下幾種狀態:
1)交易時間狀態
這是指股票正常交易時間段,股票處于自由交易狀態(或買或賣),在中國交易時間為周一到周五:上午9:30~11:30;下午13:00~15:00;當然,此時的股票交易是受到監查的,如果異動太大,會實施緊急停牌。比如說:連續多個交易時漲停或是跌停;首個交易日漲跌太大。
2)非交易時間狀態
其它的時間,股票不交易,但股民可隨時登錄證券系統查看股票已披露信息。在這段時間,上市公司通常完成對股票的分紅,送股,增股,擴股(如果有的話),證券系統也會進行一些系統的維護工作:比如統計數據,更新或維修系統。
3)交易停止:
當股票交易出現異動被證監會下令實施“停牌”接受調查;上市公司召開股東大會;股票進入股改程序,股票在正常交易時間同樣不能交易。通常直到證監會發出復牌指令之后,股票才進入交易狀態。
4)ST股票狀態:
當上市公司連續兩年公布的財務報表都虧損時,證監會按相關法規,對對應股票進行“ST”警告處理。它的交易規則發生變化,比如:價格的漲跌幅為+5%或-5%(正常股票在中國為+10%和-10%),它的交易方式不變化,同時,它會受到證監會的更為嚴厲的監查。
5)股票退出二級市場
通常,在股票退出二級市場之前,還有一個一年的機會期,在此期間如果公司情況好轉,年終的財務報表不虧損,按規定將重新返回交易時間狀態或非交易時間狀態等,但虧損嚴重,按規定就退出二級股票市場。股民為此應該額外小心!但中國目前退市情況極為罕見。
股票市場上,股票的可能狀態全都在此展現,它們彼此轉換的活動也都表示了出來,本例的分析到此為止。
(2)狀態圖描述
通過對股票在證券交易系統中可能的狀態分析,我們繪制狀態圖如圖4所示:

圖4 股票自由交易狀態圖
圖4(a)圖為股票整體的狀態圖,圖4(b)圖為股票交易子狀態的狀態圖。需要注意圖中沒有繪出ST股票,但有正常股票的“交易停止”狀態,因為它們的觸發機制一致,故而沒有重新繪出。
從圖4中可以看出一個股票的狀態變化過程:公司在上市準備階段,進行原始股票的配置,一旦上市發行,就進入股票自由交易狀態,在交易過程中,出現非法交易,由證券系統按規定實施停牌,直到調查完畢。連續兩年虧損的上市公司,將被證券系統加上“ST”符號,表示“警告退市”。如果一年以后的財務報表依然沒有改變,將實施退市。
在實際的項目中,同一個對象不同的人在分析過程中,得到的狀態和事件可能不相同,這是正常的。對象狀態的個數與分析的詳細程度有關,另外還和用戶的要求有關。不過,只要能夠滿足用戶要求就可以了。
軟件工程設計是一項系統工程,其中包括了用例圖、活動圖、狀態圖、類圖等在內的多種軟件設計和開發模型,為了提高軟件開發者的程序開發效率,通過UML的多種不同工具共同完成了軟件開發的系統工程,其中如用例圖、活動圖等工具的使用,為軟件設計后續的詳細設計以及程序開發明確了前行的具體方向,提高了效率。
狀態圖是用來建模對象是如何改變其狀態的一種有用建模圖形。狀態定義為對象行為在某一時刻的快照(Snapshot)或者轉折點(Milestone),對于單個對象行為改變,狀態圖相對于活動圖有其天然優勢。尤其在如下系統中,比如:針對病人的醫療系統,針對醫院管理的醫院績效管理系統的開發和設計。狀態圖與活動圖的組合使用在可以預見的將來還將一直持續下去[11-17]。
[1] Fowler,M. UML精粹: 標準對象建模語言簡明指南(第3版)[M]. 北京:電子工業出版社,2012.
[2] 宋國順.軟件工程中UML建模的技術與分析[J].軟件導刊,2010,8:50-54.
[3] Larman,C. UML和模式應用(第 3版)[M].北京:機械工業出版社,2006.
[4] 袁國銘,李洪奇,樊波.關于知識工程的發展綜述[J].計算技術與自動化,2011,30(1):138-143.
[5] 袁國銘,劉瑞,樊波,等.UML用例圖在軟件工程中的步驟設計研究[J].微型電腦應用,2014,30(1):46-48.
[6] 樊波,袁國銘,成天華. UML活動圖在軟件工程設計中的應用研究[J].網絡新媒體技術,2015,4(6):41-46.
[7] 鄭山海.用意“美好”實現難[J].中國衛生, 2015,9:52-53.
[8] 王明曉.醫院院長必備十大技能[J].中國衛生,2015,4:64-66.
[9] 鄭山海.重慶事件與醫保盲區[J].中國衛生,2015,5:50-52.
[10] 樊波,袁國銘.中國中央衛生行政機構發展簡史[J].中華醫學圖書情報雜志,2014,3:31-33.
[11] 王明曉.以“霍桑試驗”和“鲇魚效應”激活醫院人力資源管理[J].醫院院長論壇-首都醫科大學學報(社會科學版),2014,2:40-42.
[12] 王明曉.建立股份制醫院的理論探討[J].中華醫院管理雜志,1988,12(06):338-340.
[13] 王明曉,高艷. 戰略管理與醫院員工培訓[J].中華醫院管理雜志,2007,12(06):427-428.
[14] 單文衛.新醫改背景下公立醫院績效管理模式的研究[J].醫學與社會,2012,25(01):58-60.
[15] 王明曉.實事求是科學決策[J].中國衛生產業,2009,12:23-25.
[16] 王明曉.新醫改方案也要在實踐中不斷完善[J].中國醫院,2007,9:28-30.
[17] 王明曉.公立醫院在堅持公益性中艱難前行[J].醫院院長論壇,2009,3:5-7.