《架構(gòu)師訓(xùn)練營》之架構(gòu)與視圖

極客時間《架構(gòu)師訓(xùn)練營》第一章學(xué)習(xí)筆記

什么是軟件架構(gòu)

軟件架構(gòu)是有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個方面的設(shè)計(jì) ——維基百科

Architecture

軟件架構(gòu)包括上圖的系統(tǒng)、架構(gòu)、文檔、相關(guān)方等等元素。任何系統(tǒng),無論大小皆擁有軟件架構(gòu),并且需要做專門的軟件設(shè)計(jì)。軟件設(shè)計(jì)真正目的其實(shí)是降低成本,因?yàn)樵O(shè)計(jì)成本一般會低于實(shí)現(xiàn)。當(dāng)然,軟件設(shè)計(jì)的核心并不在于系統(tǒng)或是架構(gòu)本身,而在于利益相關(guān)方(stakeholder)。在軟件設(shè)計(jì)的不同時段,設(shè)計(jì)文檔應(yīng)該根據(jù)評審的參與者(相關(guān)方)的不同,應(yīng)用不同的設(shè)計(jì)圖紙。

架構(gòu)師就是這個軟件設(shè)計(jì)的負(fù)責(zé)人,職責(zé)便是通過架構(gòu)設(shè)計(jì)理清業(yè)務(wù)邏輯:對上交給組織一份宏觀的系統(tǒng)概況;對下幫助開發(fā)人員降低噪音,提高軟件開發(fā)效率和質(zhì)量。

架構(gòu)視圖

軟件架構(gòu)包括:元素、形式、關(guān)系/約束。由于單一的視圖很難完整地表述架構(gòu),所以需要多種形式的圖紙來表述各個方面的設(shè)計(jì)意圖,因此需要一份完備的視圖集,業(yè)界常采用的方法就是4+1 視圖。

4+1視圖

4+1 視圖分別是:

  • 邏輯視圖:設(shè)計(jì)的對象模型
  • 過程視圖:撲捉設(shè)計(jì)的并發(fā)和同步特征
  • 物理視圖:描述軟件到硬件的映射,反映了部署特征
  • 開發(fā)視圖:描述開發(fā)環(huán)境中,軟件的靜態(tài)組織結(jié)構(gòu)
  • 場景視圖:描述用例的場景

UML 模型

建模是對一個系統(tǒng)的完整抽象;在計(jì)算機(jī)開發(fā)中,實(shí)現(xiàn)從領(lǐng)域問題到計(jì)算機(jī)系統(tǒng)的映射,以便從抽象出更易得的解決方案。UML 就是在面向?qū)ο箝_發(fā)中最常用的建模手段。UML 圖有大約 10 種,其中常用的有 7 種,這些例圖可以映射上文提到的 4+1 視圖。

  • UML 中的通用元素有:類、對象、節(jié)點(diǎn)、包、組件等等:

    UML元素
  • 元素之間的關(guān)系又有:關(guān)聯(lián)、依賴、泛化、聚合等等:

    UML關(guān)系
  • UML 中的消息:簡單消息、同步消息、異步消息

用例圖

Use Case 是系統(tǒng)分析階段最常用的模式。在宏觀上給出系統(tǒng)的總體輪廓,一般是 PM 來寫。每個 Use Case 的元素不宜過多,總數(shù)控制在十個左右;可以自頂而下逐步細(xì)化。

Use Case

時序圖

時序圖用以描述對象之間的動態(tài)交互行為,是穿插于開發(fā)各個階段重要的視圖。時序圖有兩個軸:橫軸表示對象;縱軸表示時間。

時序圖

時序圖有兩種形式,一般格式和實(shí)例格式:

  • 一般格式:描述所有情節(jié),包括分支、條件和循環(huán),比較復(fù)雜
  • 實(shí)例格式:描述一次可能的交互,沒有分支判斷,僅僅顯示特定情節(jié)的交互

泳道圖

泳道圖是活動圖里最常使用的視圖。它用以描述完成活動的對象以及活動;泳道圖的最大特色就是顯示分組機(jī)制,可以描述跨系統(tǒng)的交互互動:

泳道圖

狀態(tài)圖

狀態(tài)圖用來描述特定對象的所有可能態(tài),是 PM 在需求設(shè)計(jì)階段重要的工具,開發(fā)階段會進(jìn)一步把狀態(tài)圖的內(nèi)容轉(zhuǎn)化為特定的方法和條件判斷:

狀態(tài)圖

組件圖 & 部署圖

組件圖和部署圖提供了物理層面的建模,描述子系統(tǒng)間的關(guān)系,是架構(gòu)師最早該寫的一份視圖:

組件圖
部署圖

視圖與整體設(shè)計(jì)

開發(fā)的不同階段,我們可以依據(jù)不同的現(xiàn)實(shí),書寫不同的視圖,下面是各個階段常用到的視圖:

  • 需求分析階段: 用例圖、活動圖、狀態(tài)圖、時序圖

  • 概要設(shè)計(jì)階段(子系統(tǒng)級別):部署圖(架構(gòu)師第一張圖)、序圖、活動圖、組件圖、時序圖

  • 詳細(xì)設(shè)計(jì)階段(方法和類級別):類圖、時序圖、狀態(tài)圖、活動圖

當(dāng)然,視圖的意義不在于多,而在于正確的抽象業(yè)務(wù);以最少的視圖抽象出最完整的現(xiàn)實(shí),才是一個架構(gòu)師的能力所在。

小結(jié)

第一周的課程除了開場白之外,主要還是集中在怎么寫架構(gòu)設(shè)計(jì)文檔上,其中 UML 建模是課程的重中之重吧。架構(gòu)設(shè)計(jì)文檔是團(tuán)隊(duì)中交流、協(xié)同工作的重要依據(jù);熟練掌握這些技能,可以極大的改善開發(fā)體驗(yàn);當(dāng)然也是架構(gòu)師的一項(xiàng)必備技能。

這次課程中,老師提到了一個很有趣的現(xiàn)象:很多中小企業(yè)在開發(fā)階段是完全沒有架構(gòu)設(shè)計(jì)文檔的。一不小心被說中了,我廠就是這種現(xiàn)狀——開發(fā)全靠“口口相傳”;上了一次課,感觸還是挺深刻的。之后的工作中,我也想慢慢嘗試加入 UML 設(shè)計(jì);人微言輕,自然很難改變一個團(tuán)隊(duì)的氛圍,但至少自己的代碼要為自己負(fù)責(zé)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容