主頁 > 軟體工程 > 你必須學UML之理論篇

你必須學UML之理論篇

2022-08-26 11:47:08 軟體工程

1.前言

對于當前社會背景下從事軟體開發的作業者而言,“寫代碼”實際上并不是唯一的作業,特別在一些中小型的企業當中,這些企業往往對于開發者的要求,不單單停留在寫代碼完成相應功能上,在實際的軟體專案作業開展期間,企業往往會節省成本需要你“身兼多職”,

基于這種市場現象而言,我對當下社會作為一個合格軟體開發者的定義,更偏向另一種稱謂:即“問題解決者”,解決以業務軟體為中心的各式各樣的問題,所以在編碼作業之外還會參與:需求分析、專案設計、測驗、專案部署等作業,除了參與多方面職能的作業之外,還需要你會多項技能,其中主要包括:制作檔案、畫圖(UML建模)、溝通技巧,甚至還需要你會PS,(P過圖的程式員請留言)

以下是你作為軟體開發者可能會撰寫的檔案,檔案其中會包含著大量各式各樣用UML繪制的模型圖:

在軟體領域的眾多作業中,使用畫圖(UML建模)是最為基本、關鍵的技能,UML繪制建立的模型圖,不僅會作為我們在開發前期與客戶協商確定的“藍本”,還會是團隊內部敲定方案的“參照物”,還會是軟體開發的“依據”,還會是制作各類檔案的關鍵元素,從這樣來看,畫圖(UML建模)涉及軟體開發的方方面面,并貫穿整個軟體生產的生命周期,

所以對于UML建模在軟體作業中的地位可見一斑,并且在結合當下市場的作業環境,我認為“不會畫圖的程式員,不是一個合格的程式員”,綜上所述,我打算圍繞UML建模這門手藝開展系統性的介紹,本篇將先理論概念作為開端,促使你對UML的認識有所覺悟,在順帶提一句,你知道什么是“軟體危機”嗎?


2.設計的重要性

早些年剛接觸編程的王小菜,收到的第一個任務是實作某管理系統的登錄模塊,自信滿滿的他為了展現自己的實力,第一時間就是打開IDE進行編碼,并在一天內迅速的完成了任務,然而在交付演示的程序中,專案經理發現除了常規的登錄和注冊之外,登錄模塊還又很多功能沒有完善,例如:登錄安全的措施、忘記密碼的措施、身份驗證機制、單點登錄的實作等等,這些缺失考慮的功能,導致王小菜一次又一次的進行返工,從原本預計一天內完成的登錄模塊,卻足足花費了他一周的時間,他還時常加班修復一些Bug,

通過上面的事例,你是否也曾發現過“王小菜”的身影,對于大多數剛從事軟體開發的從業者而言,在實際的作業中,在一開始接收到需求或開發任務后,就利馬直接開始上手寫代碼,深怕難以體現自己的開發效率,對于開發的功能是想到哪一塊就寫到哪一塊,毫無規劃可言,

其實軟體的制作就是一種工程,和我們建筑高樓大廈是一樣的道理,所以在制作前必須進行合理的設計,并對軟體進行建模和管理,不能一上來就開始盲目的寫代碼,對于任何業務需求、功能設計必須先分析、規劃之后才能開始編碼,在寫代碼事情必須明白:要做什么?做成什么樣?怎么去做?

為了避免這種“先斬后奏”的開發方式,我們必須在編碼之前通過UML進行建模用于分析和設計,只有經過合理規劃和設計,才能最大程度上減少,客戶一而再再而三的返工要求,或是頻繁的變動需求,


3.模型

在介紹UML之前,我們必須先理解什么是模型,理解模型的概念是理解UML建模的基礎,

模型從概念上描述:它是通過形象化的手段,對現實世界事物簡化描述的一種方式,簡單來概括,模型是對現實時間的簡化,為什么使用模型?因為通常某些復雜的事物或軟體系統,在描述和實作上是非常復雜的,在事物或軟體完成之前,通過文字我們不可能將這些事物理解清楚,所以通過使用模型可以對復雜的事物進行抽象化、形象化,以便我們可以更好的理解、更好的進行分析設計作業,

這個道理可以通過現實生活中的一個場景形象的類比,那就是我們購房的例子,在當下的社會背景下,我們大多數人購買新房的時候,新房往往都還沒有建造出來,開發商為了讓消費者提前買到房,它們往往會在售樓部搭建各式各樣的房屋沙盤模型,其中有室外的、室內的、全景的,以便消費者能在房屋沒有建造完成之前,就能夠感受房屋最終建造的效果,除此之外,在生活中使用模型來形象化描述現實世界事物的方式比比皆是,你可以想到有哪些?

結合上面的例子和概念,在軟體工程中也是同理的,我們為了讓客戶能夠直觀的理解軟體的構思、為了軟體能夠更好的分析和設計、為了開發人員能夠更好的實作軟體功能,所以我們會根據業務需求并結合面向物件的分析與設計思想(OOA/D),將軟體工程中不同階段、不同場景,通過UML來繪制建立模型,所以,通過UML建模可以將我們對軟體的構思、設計、概念以一種圖形化的方式表達出來,

 

使用UML建模可以為我們構建軟體專案帶來很大好處,但是使用UML有時并不是必須的,這也要取決于軟體專案的規模和體量,通常我們構建企業中大型的資訊管理軟體,其中存在復雜的業務場景,所以我們必須使用UML建模,但是如果面對的軟體體量很小,沒有什么業務,我們可以選擇簡化或省略UML建模,所以UML的重要程度是取決于軟體專案規模決定的,規模越大UML建模的重要性越大,反之越小,


4.簡介

早在20世紀90年代就出現了UML,由于其簡單、統一,又能夠表達軟體設計中的動態資訊和靜態資訊,目前已經成為可視化建模語言事實上的工業標準,這就相當于你吃中餐默認的餐具是筷子,而軟體建模就默認使用UML,其地位不言而喻,

UML簡稱可以翻譯為兩種形式:1.UML(You Must Learn)、2.UML(Unified Modeling Languang),第一種是從其重要程度巧譯而成的“你必須學”,第二種則是官方的定義“統一建模語言”,UML是物件管理組織(OMG)指定的一個通用的、可視化的建模語言標準,它可以用來:可視化、描述、構造和檔案化軟體專案中的各種單元(業務、功能、演算法、流程等等),

UML并不像我們的編程語言那樣五花八門,UML在建模語言中是統一的,就是說不同領域、不同技術堆疊使用的建模語言大多數都是UML,因為UML是從所有軟體建模語言的基礎上提煉的精華,幾集百家之所長,它是軟體建模語言的集大成者,UML還突破了軟體的限制,廣泛吸收了其他領域的建模方法,不僅可以用于軟體領域的建模,還可以用于其他領域的建模作業,由此可見,UML是一種統一化極具廣泛性的軟體建模語言,


5.結語

UML從理論上其實可以“羅里吧嗦”的引出很多概念性的東西,對于理解UML這些概念而言,我們覺得其中最為重要的是,通過這些概念喚醒你的覺悟,深刻去體會軟體設計的重要性,不要需求任務一來就立馬上手開始寫代碼,我們需要思考和分析,懂得設計和分析的人大多數都會有一個感觸:在做一個專案或一個需求時,如果有良好的設計,其實編碼的作業量放到整個軟體生命周期上不會超過一半,

對于UML的知識體系來說其實可以單獨作為一門學科的,是屬于軟體設計范疇的,當然作為軟體開發者不可能花費太多精力,將UML所有細節都了然于心,我們應當遵循“二八定律”根據日常作業中經常使用的部分進行深入即可,我個人覺得對于UML學習比較重要的幾點如下:

  • 能夠從不同的視角、維度繪制不同的圖形,
  • 能夠清楚知道在軟體專案的不同階段繪制什么型別的圖,
  • 能夠根據面向的用戶繪制不同層次的圖形,也就是能夠把握圖形呈現的抽象程度,
  • 能夠根據業務需求和設計思想繪制常用的圖形,其中包括但不限:類圖、用例圖、活動圖等,

文章主要作為UML系列的開篇主要以理論為主,在后續的UML系列文章中,我主要從實踐操作性出發,介紹如何具體繪制軟體開發中常用的模型,我相信只有在實踐中才能更好的掌握UML建模的能力,

知識改變命運

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/502760.html

標籤:其他

上一篇:你必須學UML之理論篇

下一篇:AppCube視角淺析: 艾瑞咨詢《2022年中國低代碼行業研究報告》

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more