0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UML精準(zhǔn)入門(mén)指南1

jf_78858299 ? 來(lái)源:蝸?;ヂ?lián)網(wǎng) ? 作者:蝸牛互聯(lián)網(wǎng) ? 2023-05-05 11:16 ? 次閱讀

一、前言

談到面向?qū)ο蠹夹g(shù)的分析和設(shè)計(jì),自然就離不開(kāi) UML。對(duì)于 UML 這個(gè)概念,很多程序員朋友耳熟能詳,也有在用,但在工作中,一些朋友其實(shí)并不擅長(zhǎng)使用 UML 甚至對(duì) UML 這個(gè)東西模棱兩可,也包括我自己。因此我希望可以結(jié)合自己的經(jīng)驗(yàn)和實(shí)踐,寫(xiě)一篇 UML 的入門(mén)文章,幫助做面向?qū)ο蟮某绦騿T朋友能更好的利用它,從而順利完成自己的編程設(shè)計(jì)工作。

以下是本文大綱。

圖片

二、從一個(gè)示例開(kāi)始

先舉個(gè)現(xiàn)實(shí)世界的例子。我們上大學(xué)的時(shí)候,作為學(xué)生,每人都有一張學(xué)生證,會(huì)歸屬到一個(gè)班級(jí),上學(xué)時(shí)可能會(huì)用到自行車(chē)。很多同學(xué)還會(huì)考駕照,挑放假時(shí)間練車(chē),車(chē)可能是轎車(chē)也可能是皮卡。

如果想通過(guò)在線的方式記錄以上的信息和行為,在軟件世界中如何表達(dá)呢?

相信很多朋友的操作是,找到這段話(huà)里的主語(yǔ)和賓語(yǔ),也就找到了這個(gè)例子中涉及的角色,然后通過(guò)動(dòng)詞來(lái)判斷各個(gè)角色之間的關(guān)系和能力,最后用代碼的方式來(lái)表達(dá),產(chǎn)出可執(zhí)行的程序。

像下圖這樣,識(shí)別出關(guān)鍵的實(shí)體和它們之間的關(guān)系。

圖片

用軟件工程的方式,解決現(xiàn)實(shí)中的問(wèn)題,是信息時(shí)代最明顯的特點(diǎn),這讓我們的生活和工作變得更加便利。

但現(xiàn)實(shí)世界錯(cuò)綜復(fù)雜,靈活多變,每個(gè)人的理解可能會(huì)有不同,從現(xiàn)實(shí)世界到軟件世界的映射,就變得困難重重,一團(tuán)亂麻。

如何讓現(xiàn)實(shí)世界到軟件世界映射變的簡(jiǎn)單容易,這就是 UML 要解決的問(wèn)題。

三、什么是 UML?

UML 全稱(chēng)是 Unified Modeling Language(統(tǒng)一建模語(yǔ)言),它以圖形的方式來(lái)描述軟件的概念。

3.1 為什么稱(chēng)為語(yǔ)言

先說(shuō)語(yǔ)言,為什么稱(chēng)為語(yǔ)言?

名稱(chēng)的落腳點(diǎn)是語(yǔ)言。既然是語(yǔ)言,那么它就會(huì)具備語(yǔ)言的特性,比如結(jié)構(gòu)上它由詞匯和語(yǔ)法構(gòu)成,功能上它能解決溝通問(wèn)題。

你熟知的語(yǔ)言里比較多的應(yīng)該是漢語(yǔ)和英語(yǔ),如果從事軟件行業(yè),C 語(yǔ)言和 Java 語(yǔ)言你應(yīng)該也不會(huì)陌生。英語(yǔ)和 Java 語(yǔ)言明顯都是語(yǔ)言,卻常常不被放在一起討論,為什么?因?yàn)樗鼈兪遣煌S度的語(yǔ)言。英語(yǔ)是解決現(xiàn)實(shí)世界中人與人之間溝通問(wèn)題的人類(lèi)語(yǔ)言,Java 是解決軟件世界中程序員與計(jì)算機(jī)之間溝通問(wèn)題的計(jì)算機(jī)語(yǔ)言。

人類(lèi)語(yǔ)言本質(zhì)上是事實(shí)和觀點(diǎn)的表達(dá),計(jì)算機(jī)語(yǔ)言本質(zhì)上是0 和 1 的表達(dá)。前者的表達(dá)形式是難以確定的,而且可能會(huì)產(chǎn)生歧義,所以才會(huì)有「被誤解是表達(dá)者的宿命」這樣的觀點(diǎn), 但后者就是確定性無(wú)歧義的 0 1 表達(dá)。

這么看來(lái),UML 的目標(biāo)是通過(guò)一定結(jié)構(gòu)的表達(dá),來(lái)解決現(xiàn)實(shí)世界到軟件世界的溝通問(wèn)題。

3.2 什么是建模

再說(shuō)建模,模是什么,需要怎么建?

建模簡(jiǎn)單講,是指通過(guò)抽象的方式解決某個(gè)領(lǐng)域的問(wèn)題。各個(gè)抽象角度共同組成了一個(gè)問(wèn)題領(lǐng)域。

圖片

對(duì)于傳統(tǒng)模型而言,建造它是為了證明這個(gè)問(wèn)題領(lǐng)域下某件事物能否工作。當(dāng)然它有前提,即建造模型的成本遠(yuǎn)遠(yuǎn)低于建造實(shí)物的成本。比如造飛機(jī)或造高樓。

對(duì)于軟件模型而言,建造它是為了與他人溝通,也為了保存這個(gè)問(wèn)題領(lǐng)域下軟件設(shè)計(jì)的最終成果。當(dāng)然它也有前提,就是模型比代碼更說(shuō)明問(wèn)題。

比如購(gòu)物這個(gè)問(wèn)題,甲可以在淘寶上買(mǎi)衣服,乙可以在亞馬遜上買(mǎi)書(shū),丙可以在京東上買(mǎi)手機(jī)。

誰(shuí)買(mǎi)東西?是甲、乙和丙,他們都能抽象成人。

買(mǎi)什么東西?有衣服、書(shū)和手機(jī),它們都能抽象成貨。

在哪里買(mǎi)?在淘寶,亞馬遜和京東,它們都能抽象成場(chǎng)。

整體抽象一下就是人到場(chǎng)里買(mǎi)貨。所以購(gòu)物這個(gè)場(chǎng)景所抽象出來(lái)的人貨場(chǎng),就用來(lái)解決零售領(lǐng)域的問(wèn)題。當(dāng)然還可能會(huì)有些規(guī)則,比如成為注冊(cè)會(huì)員才能發(fā)生交易。

我們會(huì)發(fā)現(xiàn),一個(gè)特定的事件(比如購(gòu)物)里,會(huì)有特定的人的行為(比如甲乙丙要上電商網(wǎng)站),會(huì)有特定的物(比如貨),有特定的規(guī)則(比如注冊(cè)會(huì)員),共同完成購(gòu)物這件事。

特定的事 = 特定的人的行為 + 特定的物 + 特定的規(guī)則

在人貨場(chǎng)這個(gè)抽象角度里,就會(huì)涉及到很多特定的事,包括會(huì)員注冊(cè),會(huì)員下單,會(huì)員支付,商家發(fā)貨,快遞公司郵寄等等。

圖片

模簡(jiǎn)單講,就是人、事、物和規(guī)則。

人是一切的中心,人要做事,做事就會(huì)使用一些物并產(chǎn)生另一些物,同時(shí)做事需要遵循一定的規(guī)則。

人驅(qū)動(dòng)系統(tǒng),事體現(xiàn)過(guò)程,物記錄結(jié)果,規(guī)則是控制。

建立模型的關(guān)鍵就是弄明白有什么人,什么人做什么事,什么事產(chǎn)生什么物,中間有什么規(guī)則,再把人、事、物之間的關(guān)系定義出來(lái),一個(gè)模型也就基本成型了。

3.3 統(tǒng)一的意義在哪

統(tǒng)一的普遍意義是形成標(biāo)準(zhǔn)。所謂標(biāo)準(zhǔn),就是所有人都明白的表述,所有人都遵從的格式。標(biāo)準(zhǔn)可以讓信息在人群中無(wú)障礙地流通,即使這些信息來(lái)自不同地域、不同文化、不同社會(huì)或不同組織。

比如美元作為國(guó)際統(tǒng)一使用的貨幣方便了全球的經(jīng)濟(jì)貿(mào)易,我們國(guó)家普及普通話(huà)方便了不同地區(qū)的交流溝通。

在軟件世界,任何一種組件化開(kāi)發(fā)模式背后都有一個(gè)標(biāo)準(zhǔn)在規(guī)范和指導(dǎo),比如 Java 的 JSR 標(biāo)準(zhǔn)。有了標(biāo)準(zhǔn),編程就容易組件化,協(xié)作效率也會(huì)提升很多。對(duì) UML 來(lái)說(shuō),這就是統(tǒng)一的意義。

四、為什么需要 UML

一個(gè)軟件項(xiàng)目要經(jīng)歷業(yè)務(wù)調(diào)研、立項(xiàng)、需求采集、架構(gòu)設(shè)計(jì)、編碼開(kāi)發(fā)和測(cè)試驗(yàn)證等多個(gè)環(huán)節(jié)。

每個(gè)環(huán)節(jié)可能角色并不相同,同樣的文檔同樣的話(huà)語(yǔ)越向后傳遞就越容易失真。因此就容易出現(xiàn)最終交付的產(chǎn)品不是客戶(hù)真正想要的這種情況。

如何避免角色間信息傳遞的失真,保證信息能被準(zhǔn)確的傳達(dá)和準(zhǔn)確的理解?一種好的辦法就是大家使用標(biāo)準(zhǔn)化的語(yǔ)言。

統(tǒng)一建模語(yǔ)言(UML)就試圖用標(biāo)準(zhǔn)化的語(yǔ)言來(lái)覆蓋整個(gè)軟件過(guò)程,讓不同團(tuán)隊(duì)不同角色可以用相同的語(yǔ)言順暢的溝通。

在信息傳播方面,圖形相對(duì)于文字,人腦的接受能力顯然更強(qiáng)。因此,UML 采用了「可視化」的圖形方式來(lái)定義語(yǔ)言。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    諾基亞Nokia N95-1快速入門(mén)指南

    諾基亞Nokia N95-1快速入門(mén)指南
    發(fā)表于 11-26 18:24 ?22次下載

    StoneOS_5.5R1_新手入門(mén)指南

    StoneOS_5.5R1_新手入門(mén)指南
    發(fā)表于 09-07 08:28 ?5次下載
    StoneOS_5.5R<b class='flag-5'>1</b>_新手<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    FPB-RA6E1-快速入門(mén)指南

    FPB-RA6E1-快速入門(mén)指南
    發(fā)表于 01-13 19:14 ?1次下載
    FPB-RA6E<b class='flag-5'>1</b>-快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    RZ/N1 GOAL POWERLINK 快速入門(mén)指南

    RZ/N1 GOAL POWERLINK 快速入門(mén)指南
    發(fā)表于 03-14 20:05 ?0次下載
    RZ/N<b class='flag-5'>1</b> GOAL POWERLINK 快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    ADC1X40D 快速入門(mén)指南

    ADC1X40D 快速入門(mén)指南
    發(fā)表于 04-10 19:19 ?0次下載
    ADC<b class='flag-5'>1</b>X40D 快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    瑞薩電子 R8C/1B 入門(mén)套件快速入門(mén)指南

    瑞薩電子 R8C/1B 入門(mén)套件快速入門(mén)指南
    發(fā)表于 04-28 19:05 ?1次下載
    瑞薩電子 R8C/<b class='flag-5'>1</b>B <b class='flag-5'>入門(mén)</b>套件快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    UML精準(zhǔn)入門(mén)指南2

    自己。因此我希望可以結(jié)合自己的經(jīng)驗(yàn)和實(shí)踐,寫(xiě)一篇 UML入門(mén)文章,幫助做面向?qū)ο蟮某绦騿T朋友能更好的利用它,從而順利完成自己的編程設(shè)計(jì)工作。
    的頭像 發(fā)表于 05-05 11:17 ?812次閱讀
    <b class='flag-5'>UML</b><b class='flag-5'>精準(zhǔn)入門(mén)</b><b class='flag-5'>指南</b>2

    UML精準(zhǔn)入門(mén)指南3

    自己。因此我希望可以結(jié)合自己的經(jīng)驗(yàn)和實(shí)踐,寫(xiě)一篇 UML入門(mén)文章,幫助做面向?qū)ο蟮某绦騿T朋友能更好的利用它,從而順利完成自己的編程設(shè)計(jì)工作。
    的頭像 發(fā)表于 05-05 11:17 ?742次閱讀
    <b class='flag-5'>UML</b><b class='flag-5'>精準(zhǔn)入門(mén)</b><b class='flag-5'>指南</b>3

    EK-RA2E1 – 快速入門(mén)指南

    EK-RA2E1 – 快速入門(mén)指南
    發(fā)表于 07-04 19:40 ?0次下載
    EK-RA2E<b class='flag-5'>1</b> – 快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    EK-RA2L1-快速入門(mén)指南

    EK-RA2L1 - 快速入門(mén)指南
    發(fā)表于 07-04 19:53 ?0次下載
    EK-RA2L<b class='flag-5'>1</b>-快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    EK-RA4M1 – 快速入門(mén)指南

    EK-RA4M1 – 快速入門(mén)指南
    發(fā)表于 07-04 20:54 ?0次下載
    EK-RA4M<b class='flag-5'>1</b> – 快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    RA6T1 CPU 卡快速入門(mén)指南

    RA6T1 CPU 卡快速入門(mén)指南
    發(fā)表于 07-05 18:36 ?0次下載
    RA6T<b class='flag-5'>1</b> CPU 卡快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    RZ/N1 GOAL POWERLINK 快速入門(mén)指南

    RZ/N1 GOAL POWERLINK 快速入門(mén)指南
    發(fā)表于 07-05 20:32 ?0次下載
    RZ/N<b class='flag-5'>1</b> GOAL POWERLINK 快速<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    tinyAVR 1系列入門(mén)指南

    電子發(fā)燒友網(wǎng)站提供《tinyAVR 1系列入門(mén)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 09:21 ?0次下載
    tinyAVR <b class='flag-5'>1</b>系列<b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>

    BQ27546-G1入門(mén)指南

    電子發(fā)燒友網(wǎng)站提供《BQ27546-G1入門(mén)指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 09:52 ?0次下載
    BQ27546-G<b class='flag-5'>1</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>指南</b>