Python設計模式 - UML - 總覽

來源:互聯網
上載者:User

標籤:業界   general   wiki   協助   抽象   角色   mac   可視化   執行檔案   

 

說到設計模式就不得不涉及建模思想,說到建模思想自然而然會應用UML,目前業界開源的UML工具很多,用起來也非常便捷。近幾年來隨著軟體應用領域開發模式轉向快速迭代試錯,UML在敏捷開發,尤其是web及mobile開發領域應用越來越少。

就國內軟體行業發展現狀來說,穩定成熟的商業軟體鳳毛麟角,初具雛形的互連網App大行其道,競爭中的公司更看重的是快速佔領市場,小團隊快速迭代試錯,而不是長期、精心打磨同一款軟體產品,所以注重統一規範、充分需求分析、嚴密架構設計的UML顯得相對繁瑣,自然會被靈活敏捷的各類開發過程文檔取代,比如建模草圖、wiki、看板、注釋等輕文檔。

對于敏捷開發和傳統開發來說,不管是否廣泛使用UML工具,建模總是必不可少的,可以協助我們理清思路,更好地分析和設計易擴充、易維護的軟體架構。從當前市面上看,基於圖表的UML是熟悉建模思想及設計模式的最好選擇。

 

UML簡介

簡單地說,UML的核心是圖表,是與具體程式設計語言無關的設計規範,用來定義、細化、編寫、構造軟體系統中的要素,以可視化的圖形定義軟體開發中涉及到的參與者、實體、流程及它們之間的調用關係,覆蓋軟體開發所有階段的抽象表述。

UML的優勢在於分析、建模和整理設計思路。

 

建模思想

在最終設計和實現軟體系統之前,通常都需要劃一定的時間在不同的層次上抽象開發模型,稍微上點規模的項目,團隊協作是必不可少了,開發模型也可以協助團隊成員更好地溝通交流,所以不管是草圖還是UML,我們都需要對開發中的項目構建一些直觀、明確的文檔化記錄。建模的出發點有以下幾個方面:

        - 更好地理解使用者需求,避免曲解或遺漏
        - 更好地進行系統分析和設計,避免返工
        - 協助團隊交流和項目協同開發,避免埋坑
        - 協助提高開發速度和品質,降低溝通成本

 

UML常用圖

UML常用圖有13種,大體可以歸類為結構圖(Structure Diagrams)和行為圖(Behavior Diagrams)。

  • 結構圖:強調的是系統構建的靜態結構,包括類圖、對象圖、包圖、元件圖表、部署圖、組合結構圖

  

  類圖(Class Diagram)

    類圖是最常用的UML圖,也是其他UML圖的基礎。類圖用來顯示類、介面以及它們之間的靜態結構和關係。

  類圖中的元素:類,介面、關係、協作、約束、注釋、包

  類圖中的關係:泛化、實現、關聯、彙總、組合、依賴

 

  對象圖(Object Diagram)

     對象圖可以看作是類圖在系統某一時刻的鏡像。

     對象圖中的元素:對象、連結、包

     對象圖中的關係:泛化、實現、關聯、彙總、組合、依賴

 

  包圖(Package Diagram)

     包圖是對各個包及包之間關係的描述,展現系統中模組與模組之間的依賴關係。

     包圖中的元素:類、介面、組件、節點、協作、用例及其他包

     包圖中的關係:泛化、細化、依賴

 

  元件圖表(Component Diagram)

     元件圖表又稱構建圖,用來建模系統的各個組件,包括原始碼檔案、二進位檔案、指令檔、可以執行檔案之間的關係

     元件圖表中的元素:構件、介面、關係、連接埠、連接器

     組件中的關係:依賴、泛化

 

  部署圖(Deployment Diagram)

     部署圖是展示運行系統中的軟體和硬體的物理架構及處理節點的組件分布情況

     部署圖中的元素:結點、結點執行個體、結點類型、結點容器、物件、串連

     部署圖中的關係:依賴、關聯

 

  組合結構圖(Composite Structure Diagram)

     組合結構圖用來描述某一部分及其成員的組成結構關係,成員之間的串連關係,與外部組件的介面及協作

     組合結構圖的元素:組件、串連件、連接埠

     組合結構圖的關係:關聯、組合、泛化、依賴

 

  • 行為圖:強調系統中對象的動態行為,包括使用案例圖、活動圖表、狀態圖、互動概述圖、通訊圖、時序圖、時間圖

  

  使用案例圖(Use Case Diagram)

     使用案例圖從客戶角度展現需求模型中希望哪些參與者提供什麼樣的用例功能,以及功能模組之間的調用關係

     使用案例圖中的元素:參與者、用例、關係

     使用案例圖中的關係:關聯、包含、擴充、泛化

 

  活動圖表(Activity Diagram)

     活動圖表用來描述用例功能所要求進行的活動以及活動之間的約束關係,有利於對象間的流程式控制制

     活動圖表的元素:活動狀態、動作狀態、控制點、轉移、開始節點、終止節點、對象、物件流程、泳道

     活動圖表的關係:控制轉移、分支與合并、分叉與匯合

 

  狀態圖(State Machine Diagram)

     狀態圖用來描述特定對象所有可能的狀態,以及由各事件引發的狀態之間的轉換變化,強調從狀態到狀態的控制流程

     狀態圖的元素:狀態、轉換、事件、活動、動作

     狀態圖的關係:狀態與狀態之間有組合、轉換關係

 

  互動概述圖(Interaction Overview Diagram)

     互動概述圖是將活動圖表和時序圖嫁接在一起的圖,合并了時序圖片段和控制流程構造

     互動概述圖的元素:活動狀態、動作狀態、控制點、轉移、開始節點、終止節點、對象、物件流程、泳道

     互動概述圖的關係:控制轉移、分支與合并、分叉與匯合

 

  通訊圖(Communication)

     通訊圖描述發送和接受訊息的對象之間的合作及調用關係

     通訊圖的元素:對象、鏈、訊息

     通訊圖的關係:通過鏈讓訊息在不同對象間傳遞

 

  時序圖(Sequence Diagram)

     時序圖也叫順序圖表或順序圖,用來描述對象之間傳送訊息的時間順序

     時序圖的元素:角色、對象、生命線、控制焦點、訊息

     時序圖的關係:時序圖對象之間有約束關係

 

  時間圖(Timing Diagram)

     用來描述單個或多個對象隨時間變化或維持的狀態

     時間圖的元素:時間約束、期間約束、生命線、狀態、條件、事件

     時間圖的關係:事件之間有時間約束關係,狀態之間有轉移關係

 

 

UML常用符號

 

  • actor: 角色/參與者

 

 

 

  • usecase:用例

 

 

  • class diagram: 類圖 抽象類別用斜體表示

 

 

 

  • object diagram:對象圖

 

 

 

  • interface:介面

 

 

 

  • package: 包

 

 

 

  • start, end: 開始、結束

 

 

 

  • state: 狀態

 

 

 

  • component: 構件

 

 

 

  • node:節點

 

   

 

  • note: 注釋

 

 

 

  • <<include>>:內含項目關聯性

 

 

 

  • <<extend>>:擴充關係

 

 

 

  • generalization:泛化

 

 

 

  • dependency:依賴關係 注意箭頭指向:B依賴A

 

 

 

  • aggregation:彙總

 

 

 

  • composition:組合

 

 

 

  • association:關聯

 

 

        multiplicity: 多重性

        *            - 1    僅為1

              - *  從0到無窮大

              - 0..1  0 或者 1

                   - n..m  [n, m]之間的任何數

 

 

 

UML擴充與細化

正如本文開始所述,UML在快速迭代的互連網和移動互連網時代似乎沒有以前應用那麼廣泛,更多時候開發人員在隱性使用UML特性,比如說繪製類、包、用例、組件等草圖輔助設計,但不會花費大量時間製作正式的UML圖例同時因為需求的不斷變化而頻繁返工。而且面向介面編程在架構設計中應用越來越多,但介面特性在UML2.0中並沒有得到相應擴充和細化,所以當前軟體開發過程,尤其是web & mobile app的開發過程的特點需要UML進一步升級以適應軟體工程的發展。對於UML的擴充與細化,個人有以下方面不太成熟的看法,僅供參考:

  • 根據已實現代碼產生UML各類圖:其實這種功能在不少IDE中已經提供了,但是功能還不夠全面和易用
  • 細化UML圖在介面方面的規範和契約:這個嘗試在UML中暫時還沒有發現,在其他開發流程和工具中倒是有抽象且細化介面匯入、匯出、約束等契約
  • 在UML中擴充新的分支xUML(根據xUML自動產生代碼):這個需要豐富的程式碼程式庫支撐,暫時還不太容易做到,一旦抽象出基礎程式碼程式庫,應該會大大提升開發效率
  • 淘汰老化UML概念:UML常用的十三種圖中,常用的也就幾種,其他的規範和契約雖然都在但實用性越來越小,所以需要適當瘦身

 

Python設計模式 - UML - 總覽

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.