軟考必考題型之UML圖形

概念

統一建模語言(英語:Unified Modeling Language,縮寫 UML)是非專利的第三代建模和規約語言。UML是一種開放的方法,用於說明、可視化、構建和編寫一個正在開發的、面向對象的、軟件密集系統的製品的開放方法。UML展現了一系列最佳工程實踐,這些最佳實踐在對大規模,複雜系統進行建模方面,特別是在軟件架構層次已經被驗證有效。

  • 在UML系統開發中有三個主要的模型:
    1. 功能模型:從用戶的角度展示系統的功能,包括用例圖。
    2. 對象模型:採用對象,屬性,操作,關聯等概念展示系統的結構和基礎,包括類別圖、對象圖。
    3. 動態模型:展現系統的內部行爲。包括序列圖,活動圖,狀態圖。
  • UML圖,包括用例圖、協作圖、活動圖、序列圖、部署圖、組件圖、類圖狀態圖,是模型中信息的圖形表達方式,但是UML模型獨立於UML圖存在。

軟考中UML圖相關的題目歷年卷面佔的分值比重很高,下面分別列舉常考的圖形。

用例圖

用例圖是指由參與者(Actor)、用例(Use Case),邊界以及它們之間的關係構成的用於描述系統功能的視圖。它以圖形化的方式將系統描述成用例、參與者及其之間的關係。用例圖在高層交流了系統必須處理的業務事件的範圍,是描述系統與其他外部系統以及用戶之間交互的圖形。發起或觸發用例的外部用戶稱爲參與者。爲了完成某些業務任務,參與者發起系統活動,即用例。在構建用例圖時,常用的方式是先識別參與者,然後確定用例以及用例之間的關係。

簡單模擬ATM服務構建的用例圖如下
ATM用例圖
上圖表示有三個用戶管理員、用戶、銀行和九個用例,
用例的連接關係表示如下圖
用例圖連接關係

關聯管理: 表示用戶與用例之間的通信
泛化關係: 可以理解爲繼承,子用例將繼承父用例的所有結構、行爲和關係。
包含關係: 用來把一個較複雜用例所表示的功能分解成較小的步驟。
擴展關係: 擴展關係是指用例功能的延伸,相當於爲基礎用例提供一個附加功能

協作圖

協作圖強調參加交互的對象的組織。產生一張協作圖,首先要將參加交互的對象作爲圖的頂點,然後把連接這些對象的鏈表示爲圖的弧,最後用對象發送或接收的消息來修飾這些鏈。這就提供了協作對象的結構組織語境中觀察控制流的一個清晰的可視化軌跡。簡單說就是,對象和對象之間的調用關係,體現的是一種組織關係。

  1. 下面以借書業務,簡單構建一張協作圖:
    借書協作圖
    圖中邏輯如下

用戶輸入圖書id,發起借書請求
根據圖書目錄中的id確認該書可以借閱,計算歸還時間,生存借閱記錄。
若用戶不能借閱,告知用戶拒絕原因。

  1. 協作圖的消息有以下幾種
    協作圖消息

活動圖

UML活動圖用於構建系統的活動。建模用例執行過程中對象如何通過消息相交互,將系統作爲一個整體或者幾個子系統進行考慮。對象在運行時可能會存在兩個或多個併發運行的控制流,爲了對併發控制流進行建模,UML中引入同步對概念,用同步棒————黑色粗線條表示併發分支與合併。

活動圖的考點在於併發數量,如下

  1. (2013年下半年例題)在如下所示的UML活動圖中,能同時運行的最大線程數量爲?
    活動圖
    同步棒中的活動是併發執行的,所以這道題的答案是2。

序列圖

UML序列圖以二維圖的形式顯示對象之間的交互,縱軸自上而下表示事件,橫軸表示要交互的對象,主要體現對象間消息傳遞的時間順序,強調參與交互的對象及其消息交互的時序。序列圖中包括的建模元素主要有:活動者、對象、生命線、控制焦點和消息。其中對象名稱標有下劃線;生命線表示爲虛線,豎直向下延伸;消息表示爲箭頭;控制焦點有薄矩形表示。

構建一個簡單的序列圖
序列圖
再來看看微信支付的序列圖
微信支付時序圖
序列圖中的消息是從一個對象的生命線到另一個對象生命線的箭頭,用從上而下的時間順序來安排。一般分爲同步消息、異步消息和返回消息。在圖中的表示如下
消息圖例

部署圖

部署圖(deployment diagram,配置圖)是用來顯示系統中軟件和硬件的物理架構。從部署圖中,您可以瞭解到軟件和硬件組件之間的物理關係以及處理節點的組件分佈情況。使用部署圖可以顯示運行時系統的結構,同時還傳達構成應用程序的硬件和軟件元素的配置和部署方式。

部署圖在近些年考試中並沒有出現過,這裏只簡單畫圖示例,不做說明了
部署圖

組件圖

組件圖是用來反映代碼的物理結構。從組件圖中,您可以瞭解各軟件組件(如源代碼文件或動態鏈接庫)之間的編譯器和運行時依賴關係。使用組件圖可以將系統劃分爲內聚組件並顯示代碼自身的結構。

組件圖的考點是只要能認出圖形是組件圖就必定拿分,記住下圖矩形右上角的小圖形就可以。
組件圖

類圖

類圖是類的結構及類之間關係的一種表現形式。

下面以一個裝飾模式的簡單類圖示例:

  1. 在UML類圖中,類使用包含類名、屬性和方法且帶有分割線的矩形來表示。如下圖表示Decorator類,包含invoice屬性,包含兩個方法Decorator和printInvoice。
    Decorator

方法前的+ 表示 public,- 表示 private,# 表示 protected。
屬性的完整表達方式爲: 可見性 名稱 :類型 [ = 缺省值]
方法的完整表達方式爲: 可見性 名稱(參數列表) [ : 返回類型]
表達式中括號裏的內容是可選的。

  1. 類圖也能表示類之間的關係,如下圖表示Invoice有一個子類Decorator,Decorator有兩個子類HeadDecorator和FootDecorator。
    裝飾
    關係間的連接表示如下圖
    關係表示
    類圖的考點往往在於設計模式,本章節只對類圖的基本特徵做以描述,在下一個章節【軟考重點題型之設計模式 】中會列舉常用設計模式類圖。

狀態圖

狀態圖主要用於描述對象、子系統、系統的生命週期。通過狀態圖可以瞭解到一個對象所能達到的所有狀態及對象收到的事件對對象狀態對影響等。針對具有可標記的狀態和複雜的行爲的對象構建狀態圖。狀態有可能有嵌套的子狀態,其子狀態可以是一個狀態圖。

狀態圖以實心圓表示起點,圓形內嵌圓點表示終點,圓角矩形表示狀態,連接線表示事件。

狀態圖的考點一般是根據題意補全狀態或事件名稱和狀態的遷移,也是比較簡單的,下面舉出兩個例子。

  1. (2013年下半年例題) 某航空公司將乘客分爲以下四種:
    • 非會員: 不累計航程,辦理會員卡後即可升級爲普通會員
    • 普通會員: 每年累計里程達到25000但不滿50000,自動升級爲銀卡會員;累計里程達到50000以上,自動升級爲金卡會員。
    • 銀卡會員:每年累計里程不足25000,自動降爲普通會員;累計里程達到50000以上,自動升級爲金卡會員。
    • 金卡會員:每年累計里程不足25000,自動降爲普通會員;累計里程達到25000不足50000,自動降爲銀卡會員。

根據題目描述構建的狀態圖如下
會員積分狀態圖
2. (2016年下半年例題)如下圖示狀態B內嵌了B1、B2、B3和B4。當激活狀態是B且內嵌爲狀態B2時,如果發生e2事件,則轉移到C3狀態;如果當前激活狀態B的子狀態不是B2,事件e2發生後不會激發狀態轉換。B中內嵌的兩個結束狀態均達到時,會離開狀態B。
嵌套狀態圖示例

先寫到這裏,以後有更多理解時再回來修改。文中如有不當之處,歡迎指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章