<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你一定要掌握的畫圖技巧

          共 2970字,需瀏覽 6分鐘

           ·

          2023-06-25 07:47

                
          您好,我是路人,更多優(yōu)質(zhì)文章見個人博客:http://itsoku.com
          ?
          架構(gòu)師是不是要經(jīng)常畫架構(gòu)設(shè)計圖?
          ?

          前幾天有位讀者這樣問我,我思考了一下,簡單給了個答復(fù)。不過覺得還是有必要認(rèn)真總結(jié)一次寫出來 ,希望對大家有所啟發(fā)。

          那么,在開發(fā)人員的必備能力圖譜中,都需要畫哪些常用的圖?

          上車吧,系好安全帶!


          思維導(dǎo)圖

          思維導(dǎo)圖又叫腦圖,使用一個中央關(guān)鍵詞或想法引起形象化的構(gòu)造和分類的想法,是一種結(jié)構(gòu)化思維的樹形發(fā)散圖

          不止是開發(fā)人員,所有人都應(yīng)該掌握思維導(dǎo)圖。我們技術(shù)人員一般使用思維導(dǎo)圖做需求拆解、領(lǐng)域模型分析、業(yè)務(wù)/技術(shù)規(guī)劃等。平時技術(shù)棧的積累、讀書筆記也可以通過思維導(dǎo)圖很直觀地表達(dá)出來。

          比如,我用思維導(dǎo)圖組織我的寫作邏輯,形成這篇文章的寫稿:

          △ 劇透一下后面的內(nèi)容


          有什么想法需要記錄下來,用思維導(dǎo)圖就對了,它可以不斷鍛煉我們的結(jié)構(gòu)化思維。

          思維導(dǎo)圖的難點(diǎn)在于,看待一個事物有很多個維度,我們應(yīng)該用什么維度去合理細(xì)分每個節(jié)點(diǎn)


          UML圖

          熟練運(yùn)用UML是架構(gòu)師的基本功之一。

          先總結(jié)四個要點(diǎn):

          • 要點(diǎn)一:聚焦關(guān)注點(diǎn),關(guān)注粗粒度

          • 要點(diǎn)二:清晰的業(yè)務(wù)邊界

          • 要點(diǎn)三:實(shí)體關(guān)系明確

          • 要點(diǎn)四:窮舉變化,避免過程遺漏

          UML圖分類特別多,有用例圖、類圖、時序圖、活動圖、狀態(tài)圖等等,但我們常用的不會特別多,類圖、時序圖、活動圖、狀態(tài)圖就完全夠用了。

          1. 類圖

          類圖我只畫其中兩種,第一是領(lǐng)域模型設(shè)計,第二種是表實(shí)體關(guān)系設(shè)計。

          近幾年DDD(領(lǐng)域驅(qū)動設(shè)計)又開始火了起來,基于DDD指導(dǎo)的領(lǐng)域建模是我常用的設(shè)計技巧。表設(shè)計關(guān)注每個字段的屬性、類型、長度等與數(shù)據(jù)庫強(qiáng)相關(guān)的維度,不太適合用圖表示,但可以表之間的核心聯(lián)系,我用得比較少;與表設(shè)計不同,模型設(shè)計關(guān)注核心屬性、行為與模型之間的關(guān)系,它不需要表述細(xì)粒度的非核心屬性和非核心行為,避免增加理解負(fù)擔(dān)。比如通用的創(chuàng)建時間、修改時間、邏輯刪除等字段,就沒必要體現(xiàn)在模型設(shè)計上了。

          我們都知道實(shí)體之間一般有四種關(guān)聯(lián)關(guān)系,實(shí)體關(guān)系從強(qiáng)到弱依次是:

          組合 > 聚合 > 依賴 > 關(guān)聯(lián)

          在領(lǐng)域建模中,我只用到依賴、關(guān)聯(lián)兩種弱關(guān)聯(lián)關(guān)系。對于組合、聚合這種強(qiáng)關(guān)聯(lián)關(guān)系,模型設(shè)計中可以用一個字段來代替,比如收貨人省、市、區(qū),設(shè)計的時候就可以用“收貨人地址信息”來代替。如果模型設(shè)計的粒度太細(xì)的話,不能扛住細(xì)粒度的變化,這樣一來,你就得不斷修改設(shè)計圖,后期模型多了將是一個維護(hù)災(zāi)難;使用依賴關(guān)系則可以指導(dǎo)下一步的表設(shè)計。

          △ 模型設(shè)計案例(脫敏)


          2. 時序圖

          時序圖用于分析復(fù)雜業(yè)務(wù)流程,一般簡單的CRUD并不需要畫時序圖。時序圖也不需要把所有時序都細(xì)化,還是一句話:聚焦關(guān)注點(diǎn),只關(guān)注核心時序。對于多個系統(tǒng),有多條生命線。注意一點(diǎn),角色不是生命線,角色可以使用小圓點(diǎn)表示角色操作入口。對于時序過多的流程,可以合理拆分時序圖,或使用水平泳道劃分業(yè)務(wù)階段,否則你的時序圖會特別長,同事根本沒耐心看完。

          △ 時序圖案例(脫敏)


          3. 活動圖

          活動圖和產(chǎn)品經(jīng)理出的流程圖差不多,都是動態(tài)圖,活動圖相對時序圖關(guān)注更粗粒度的業(yè)務(wù)流程變化,其中一個活動可能包含多個時序。活動圖可以通過縱向泳道和橫向泳道劃分,縱向泳道表示系統(tǒng),橫向泳道表示業(yè)務(wù)階段。

          △ 活動圖案例(脫敏)


          4. 狀態(tài)圖

          狀態(tài)圖又叫狀態(tài)機(jī),表示對象的某個狀態(tài)躍遷到另一個狀態(tài)的集合,比如銷售訂單的訂單狀態(tài)、采購訂單明細(xì)的采購狀態(tài)、結(jié)算單的結(jié)算狀態(tài)等。

          狀態(tài)圖有兩個因素需要我們關(guān)注——

          1. 狀態(tài):當(dāng)前對象所處的穩(wěn)定狀態(tài)

          2. 躍遷條件:狀態(tài)轉(zhuǎn)移前觸發(fā)的一系列過程

          在對象的設(shè)計過程中,狀態(tài)的枚舉值不宜過多,狀態(tài)過多時考慮拆分多個狀態(tài)屬性或使用多條記錄代替。

          表示狀態(tài)的屬性一般不超2個,避免有業(yè)務(wù)關(guān)聯(lián)的狀態(tài)(枚舉值)產(chǎn)生復(fù)雜的笛卡爾積。

          躍遷條件復(fù)雜的情況下,圖不好表達(dá)雙向狀態(tài)轉(zhuǎn)移,一般使用狀態(tài)圖+狀態(tài)表來窮舉狀態(tài)變化過程。

          編碼過程中,注意狀態(tài)遷移的時序問題,必要時做冪等處理,防止數(shù)據(jù)并發(fā)寫產(chǎn)生的問題。

          △ 狀態(tài)圖+狀態(tài)表案例(脫敏)


          狀態(tài)表是包含初態(tài)、次態(tài)的笛卡爾乘積二維關(guān)聯(lián)表,避免分析過程遺漏。


          架構(gòu)圖

          什么是架構(gòu)圖

          架構(gòu)圖其實(shí)有很多種——系統(tǒng)架構(gòu)圖、網(wǎng)絡(luò)架構(gòu)圖、業(yè)務(wù)架構(gòu)圖等等,我們要面對不同的人講不同的架構(gòu)。大家不要局限于本文的系統(tǒng)架構(gòu)圖。

          (系統(tǒng))架構(gòu)圖是為了抽象地表示軟件系統(tǒng)的整體輪廓和各個組件之間的相互關(guān)系約束邊界,以及軟件系統(tǒng)的物理部署和軟件系統(tǒng)的演進(jìn)方向的整體視圖。

          架構(gòu)圖的作用

          一圖勝千言。要讓干系人理解、遵循架構(gòu)決策,就需要把架構(gòu)信息傳遞出去。架構(gòu)圖就是一個很好的載體。

          • 解決溝通障礙

          • 達(dá)成共識

          • 減少歧義

          畫架構(gòu)圖的目的

          為了梳理現(xiàn)有整體業(yè)務(wù),更好地了解各個組件、服務(wù)在整個系統(tǒng)中發(fā)揮的作用,對不合理的地方進(jìn)行優(yōu)化改造。

          我總結(jié)出來以下四點(diǎn):

          1. 系統(tǒng)架構(gòu)圖是總結(jié)出來的,不是設(shè)計出來的——架構(gòu)會持續(xù)演變

          2. 架構(gòu)圖是已有框架/技術(shù)學(xué)習(xí)的快照——你畫不出來你認(rèn)知不到的邊界

          3. 畫架構(gòu)圖是學(xué)習(xí)優(yōu)秀架構(gòu)的思考鍛煉過程——你不畫沒總結(jié)過就是原地踏步

          4. 系統(tǒng)架構(gòu)成形以后,需要把精力花在業(yè)務(wù)架構(gòu)上——過多關(guān)注設(shè)計本身會讓你偏離業(yè)務(wù)

          畫架構(gòu)圖給我的啟發(fā)

          大部分情況下我們還是在單系統(tǒng)上開發(fā),因此我們可以“大材小用”——把大組件的思想指導(dǎo)單系統(tǒng)開發(fā)

          我嘗試用半天時間畫了一下系統(tǒng)架構(gòu)設(shè)計圖(在這之前也嘗試畫過一些別的架構(gòu)圖),發(fā)給了我們技術(shù)總監(jiān)過目,看看我理解得對不對。

          △ 架構(gòu)圖案例(脫敏)

          大佬沒有點(diǎn)評好與不好,只是說電商的技術(shù)框架都差不多,然后把下半年的業(yè)務(wù)規(guī)劃文檔發(fā)給了我。
          我理解的潛臺詞就是,架構(gòu)師熟悉這些框架技術(shù)是基本能力,沒必要單獨(dú)拎出來講,技術(shù)最終是服務(wù)于業(yè)務(wù)的,把精力放在業(yè)務(wù)規(guī)劃拓展才是重要之舉。圖畫得再好看,如果不能落地,系統(tǒng)架構(gòu)師就變成了“PPT架構(gòu)師”。
          然鵝,作為一名合格的開發(fā)人員,畫思維導(dǎo)圖、UML圖、架構(gòu)圖,只是體現(xiàn)設(shè)計能力的地方,實(shí)際上我們更要鍛煉基本功——不斷學(xué)習(xí)基本設(shè)計模式、優(yōu)秀的框架思想、服務(wù)拆分/聚合的藝術(shù)等等。

          ↓ 點(diǎn)擊閱讀原文,直達(dá)個人博客

           你在看嗎

          瀏覽 48
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产成人综合视频 | 欧美日韩毛片 | 国产精品─色哟哟 | 欧美少妇做爱 | www.一区二区三区四区 |