电竞比分网-中国电竞赛事及体育赛事平台

分享

《實(shí)用軟件體系結(jié)構(gòu)》學(xué)習(xí)筆記

 心不留意外塵 2016-07-23

 http://blog.csdn.net/byxdaz/article/details/4848270

本書的目標(biāo)是向軟件架構(gòu)師提供實(shí)用的指南和技術(shù),以更快地得到好的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。我們的哲學(xué)是不應(yīng)該致力于設(shè)計(jì)理想化的系統(tǒng)結(jié)構(gòu),而是應(yīng)該仔細(xì)地評(píng)估和權(quán)衡所有技術(shù)、市場(chǎng)、人員、成本方面的問(wèn)題,從而獲取一個(gè)好的解決方案。

 

一、軟件體系結(jié)構(gòu)術(shù)語(yǔ)

系統(tǒng)結(jié)構(gòu)風(fēng)格或者系統(tǒng)結(jié)構(gòu)模式

參考系統(tǒng)結(jié)構(gòu)或者領(lǐng)域特定的軟件系統(tǒng)結(jié)構(gòu)(應(yīng)用在一個(gè)特定領(lǐng)域)

產(chǎn)品線系統(tǒng)結(jié)構(gòu)(應(yīng)用在一個(gè)組織的一組產(chǎn)品)

軟件系統(tǒng)結(jié)構(gòu)(應(yīng)用在軟件系統(tǒng)或者產(chǎn)品)

二、4種視圖

1、一個(gè)軟件體系結(jié)構(gòu)有4種截然不同的視圖:概念視圖、模塊視圖、執(zhí)行視圖、代碼視圖。

使用這個(gè)4種視圖提供了一種設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)的系統(tǒng)化方法,幫助架構(gòu)師設(shè)置優(yōu)先級(jí),分析權(quán)衡,并保證沒(méi)有缺漏。

2、不同視圖強(qiáng)調(diào)的不同工程關(guān)注點(diǎn):

在概念視圖中,問(wèn)題和解決方案主要通過(guò)領(lǐng)域術(shù)語(yǔ)來(lái)考慮的。對(duì)于特定的軟件及硬件技術(shù),它們應(yīng)當(dāng)是相對(duì)獨(dú)立的。概念視圖的工廠關(guān)注點(diǎn)包括:

系統(tǒng)如何滿足需求?

 商用構(gòu)件怎樣組裝成整體,怎樣在功能層上與系統(tǒng)的其他部分交互?

領(lǐng)域特定的硬件和軟件如何融入系統(tǒng)?

功能是如何被分割并進(jìn)入產(chǎn)品個(gè)版本的?

系統(tǒng)如何與之前版本的產(chǎn)品合并?它如何支持未來(lái)的版本?

如何支持產(chǎn)品線?

如何將由需求或領(lǐng)域中所做的變動(dòng)引起的影響最小化?

在模塊視圖中,概念視圖中的構(gòu)件和連接子被映射為子系統(tǒng)和模塊。在這里,架構(gòu)師強(qiáng)調(diào)的是如何用現(xiàn)有的軟件平臺(tái)以及技術(shù)實(shí)現(xiàn)概念的解決方案。主要的工程關(guān)注點(diǎn)有如下幾點(diǎn):

產(chǎn)品是如何映射到軟件平臺(tái)的?

使用了什么樣的系統(tǒng)支持或系統(tǒng)服務(wù)?具體是在什么地方?

怎么支持測(cè)試?

如何降低模塊間的依賴性?

如何將模塊與子系統(tǒng)的復(fù)用最大化?

當(dāng)商用軟件、軟件平臺(tái)或標(biāo)準(zhǔn)發(fā)生變動(dòng)時(shí),采用何種技術(shù)在封裝產(chǎn)品時(shí)可以將它們與產(chǎn)品進(jìn)行隔離?

執(zhí)行視圖描述模塊如何映射到運(yùn)行時(shí)平臺(tái)說(shuō)提供的元素,以及這些又如何映射到硬件體系結(jié)構(gòu)。執(zhí)行視圖定義系統(tǒng)的執(zhí)行時(shí)實(shí)體及其屬性,比如內(nèi)存使用和硬件分配。對(duì)于執(zhí)行視圖,其工程關(guān)注點(diǎn)如下:

系統(tǒng)如何滿足性能、恢復(fù)及重新配置方面的需求?

如何平衡資源的使用(例如:負(fù)載平衡)?

如何達(dá)到必需的并發(fā)、復(fù)制及分布,而不過(guò)度增加控制算法的復(fù)雜度?

如何使運(yùn)行時(shí)平臺(tái)的改變所引起的影響到達(dá)最???

在代碼體系結(jié)構(gòu)視圖中,架構(gòu)師決定執(zhí)行視圖中的執(zhí)行時(shí)實(shí)體如何映射到部署構(gòu)件(例如:可執(zhí)行構(gòu)件),決定模塊視圖中的模塊如何映射到源構(gòu)件,以及部署構(gòu)件如何從源構(gòu)件生成。代碼視圖中重要的工程關(guān)注點(diǎn)如下:

如何降低產(chǎn)品升級(jí)的時(shí)間和費(fèi)用?

如何管理產(chǎn)品版本及發(fā)布?

如何降低構(gòu)造時(shí)間?

需要什么工具支持開發(fā)環(huán)境?

如何支持集成與測(cè)試?

三、全局分析

全局分析是在定義概念、模塊、執(zhí)行和代碼系統(tǒng)結(jié)構(gòu)視圖之前進(jìn)行的,并貫穿整個(gè)系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)過(guò)程。

全局分析從識(shí)別影響體系結(jié)構(gòu)設(shè)計(jì)的因素來(lái)分成3類:組織因素、技術(shù)因素、產(chǎn)品因素。

組織因素分成5類:管理;員工技能、興趣、能力、缺點(diǎn);過(guò)程與開發(fā)運(yùn)行環(huán)境;開發(fā)進(jìn)度;開發(fā)預(yù)算。

技術(shù)因素包括:通用和專用的硬件;操作系統(tǒng)、用戶界面、設(shè)計(jì)模式等軟件技術(shù);模版和框架等體系結(jié)構(gòu)技術(shù);圖像、數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、算法和技術(shù)之類的標(biāo)準(zhǔn)。

產(chǎn)品因素是描述了產(chǎn)品的功能需求、用戶可見(jiàn)的特征和產(chǎn)品的性能等質(zhì)量方面的需求。比如:功能特征;用戶界面;性能;依賴性;錯(cuò)誤監(jiān)測(cè)、報(bào)告、修復(fù);服務(wù)和價(jià)格等。

全局分析是在每一種體系結(jié)構(gòu)設(shè)計(jì)視圖中都要進(jìn)行的一種行為。在全局分析過(guò)程中建立的問(wèn)題卡片要用在每一個(gè)視圖設(shè)計(jì)的核心設(shè)計(jì)任務(wù)中。在進(jìn)行核心設(shè)計(jì)任務(wù)時(shí),做出的決策應(yīng)當(dāng)可以返回到全局分析,以增加和修改因素、問(wèn)題和策略。

總結(jié)策略:

問(wèn)題

應(yīng)用策略

進(jìn)度緊迫

復(fù)用內(nèi)部已有的、領(lǐng)域特性構(gòu)件

購(gòu)買而不是建立

使元素容易添加和刪除

技能不足

避免使用多線程

封裝多進(jìn)程

通用和領(lǐng)域特定硬件的改變

封裝領(lǐng)域特定硬件

封裝通用硬件

軟件技術(shù)的改變

使用標(biāo)準(zhǔn)

為外部構(gòu)件開發(fā)產(chǎn)品特定的接口

資源有限

限制活動(dòng)線程個(gè)數(shù)

用動(dòng)態(tài)的內(nèi)部線程見(jiàn)通信聯(lián)系

易用增加和刪除特性

按關(guān)聯(lián)尺度分離構(gòu)件和模塊

特性封裝到分開的構(gòu)件

分離用戶交互模塊

易用增加和刪除采集過(guò)程和算法

為圖像處理使用靈活的流水線模塊

為采集和圖像處理引入構(gòu)件

分離用戶交互模塊

高吞吐量

把獨(dú)立的控制線程映射到進(jìn)程

使用新增的CPU

實(shí)時(shí)采集性能

從沒(méi)有臨界時(shí)間構(gòu)件中分離出有臨界時(shí)間的

為模塊行為開發(fā)準(zhǔn)則

靈活的分配模塊到進(jìn)程

使用單速分析來(lái)預(yù)言性能

使用共享存儲(chǔ)進(jìn)行流水線階段之間通信

實(shí)現(xiàn)恢復(fù)

引入操作的恢復(fù)模塊

把全部數(shù)據(jù)放到恢復(fù)穩(wěn)定和容易達(dá)到的地方

實(shí)現(xiàn)診斷

制定一個(gè)錯(cuò)誤處理策略

減少錯(cuò)誤處理的工作

封裝診斷構(gòu)件

使用標(biāo)準(zhǔn)日志服務(wù)

體系結(jié)構(gòu)的完整性

保護(hù)模塊間的繼承

分離公共接口構(gòu)件

并發(fā)的開發(fā)工作

從源構(gòu)件中分離開發(fā)構(gòu)件

保護(hù)執(zhí)行視圖

采用階段開發(fā)

通過(guò)靜態(tài)庫(kù)來(lái)發(fā)布層

限制可使用的采集圖像類型

采用適當(dāng)?shù)某橄箝_發(fā)一個(gè)脫機(jī)的探測(cè)模擬器

使用一個(gè)靈活的建立過(guò)程

多樣性開發(fā)和目標(biāo)平臺(tái)

分離和封裝依賴目標(biāo)平臺(tái)的代碼

 

 

四、概念體系結(jié)構(gòu)視圖

 

 

清楚了概念體系結(jié)構(gòu)的結(jié)構(gòu)視圖之后,可以推論或預(yù)測(cè)重要的系統(tǒng)屬性。概念視圖可以用于:

實(shí)用環(huán)境及場(chǎng)景。

性能評(píng)估。

安全性及可靠性分析。

獨(dú)立于監(jiān)測(cè)的目標(biāo)。

理解靜態(tài)及動(dòng)態(tài)系統(tǒng)配置。

工作量評(píng)估(初步;不包括基礎(chǔ)設(shè)施)。

 

 

五、模塊體系結(jié)構(gòu)視圖

 

 

 

 

明確了一個(gè)模塊視圖,就開始了對(duì)重要系統(tǒng)屬性的關(guān)注。對(duì)模塊視圖的描述,有以下用途:

管理模塊接口。

變化影響分析。

接口約束的一致性檢查。

管理配置。

評(píng)估成果。


模塊體系設(shè)計(jì)活動(dòng)

子系統(tǒng)包含0和多個(gè)子系統(tǒng)、0和多個(gè)模塊;模塊之間的關(guān)系是通過(guò)接口來(lái)實(shí)現(xiàn)的。模塊也存在包含關(guān)系、使用關(guān)系。

 

六、執(zhí)行體系結(jié)構(gòu)視圖

多個(gè)運(yùn)行時(shí)實(shí)體;運(yùn)行時(shí)實(shí)體依賴于模塊;資源平臺(tái)依賴于硬件資源。

通信機(jī)制包括DCOM(分布式構(gòu)件對(duì)象模型)、IPC(進(jìn)程通信)、RPC(遠(yuǎn)程過(guò)程調(diào)用)等。

資源包括地址空間、內(nèi)存池、定時(shí)器、代理、端口等。

執(zhí)行視圖通常由下面人員使用:

架構(gòu)師,設(shè)計(jì)系統(tǒng)運(yùn)行時(shí)間的特性,以使得設(shè)計(jì)符合需求,并能夠適應(yīng)期望的改變。

開發(fā)人員,提供正確的實(shí)現(xiàn)。

測(cè)試人員,他們需要知道系統(tǒng)的運(yùn)行時(shí)間的特性并計(jì)劃進(jìn)行測(cè)試。

維護(hù)人員,決定運(yùn)行時(shí)間平臺(tái)的改變?nèi)绾斡绊懴到y(tǒng),或者需求的改變?nèi)绾斡绊懴到y(tǒng)的運(yùn)行時(shí)間特性。

 

 

七、代碼體系結(jié)構(gòu)視圖

代碼體系結(jié)構(gòu)視圖的應(yīng)用:

一旦代碼體系結(jié)構(gòu)視圖被明確地描述出來(lái),它就可以有許多不同的用途:

對(duì)于模塊視圖和執(zhí)行視圖中的元素的可追蹤性。

對(duì)于特定開發(fā)任務(wù)所需要的所有構(gòu)件的透明訪問(wèn)。

構(gòu)造部分系統(tǒng)。

管理構(gòu)件的版本和發(fā)布。

保持體系結(jié)構(gòu)的設(shè)計(jì)決策,及時(shí)發(fā)現(xiàn)違反決策的情況。

代碼體系設(shè)計(jì)活動(dòng):

代碼組由源代碼構(gòu)件、二進(jìn)制構(gòu)件、庫(kù)、執(zhí)行(運(yùn)行時(shí)實(shí)體)、配置描述等組成。

源代碼構(gòu)件依賴于模塊和接口。

代碼組依賴于子系統(tǒng)和分層。

 

八、軟件體系架構(gòu)模式

軟件設(shè)計(jì)的一個(gè)核心問(wèn)題是能否使用重復(fù)的體系架構(gòu),即能否達(dá)到體系架構(gòu)級(jí)的軟件重用。也就是說(shuō),能否在不同的軟件系統(tǒng)中,使用同一體系架構(gòu)?;谶@個(gè)目的,許多學(xué)者們開始研究和實(shí)踐軟件體系架構(gòu)的模式問(wèn)題。在<Pattern-Oriented Software Architecture (面向模式的軟件體系架構(gòu)) >中首次提出了8種體系結(jié)構(gòu)模式: 層(Layers)、管道和過(guò)濾器(Pipes and Filters) 、黑板(Black board )、代理者(Broker)、模型-視圖-控制器(Model-View-Controller)、表示-抽象-控制(Presentation-Abstraction-Control)、微核(Microkernel)、映像(Reflection)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多