http://blog.csdn.net/byxdaz/article/details/4848270 本書的目標(biāo)是向軟件架構(gòu)師提供實用的指南和技術(shù),以更快地得到好的系統(tǒng)結(jié)構(gòu)設(shè)計。我們的哲學(xué)是不應(yīng)該致力于設(shè)計理想化的系統(tǒng)結(jié)構(gòu),而是應(yīng)該仔細(xì)地評估和權(quán)衡所有技術(shù)、市場、人員、成本方面的問題,從而獲取一個好的解決方案。
一、軟件體系結(jié)構(gòu)術(shù)語 系統(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)用在一個特定領(lǐng)域) 產(chǎn)品線系統(tǒng)結(jié)構(gòu)(應(yīng)用在一個組織的一組產(chǎn)品) 軟件系統(tǒng)結(jié)構(gòu)(應(yīng)用在軟件系統(tǒng)或者產(chǎn)品) 二、4種視圖 1、一個軟件體系結(jié)構(gòu)有4種截然不同的視圖:概念視圖、模塊視圖、執(zhí)行視圖、代碼視圖。
使用這個4種視圖提供了一種設(shè)計軟件系統(tǒng)結(jié)構(gòu)的系統(tǒng)化方法,幫助架構(gòu)師設(shè)置優(yōu)先級,分析權(quán)衡,并保證沒有缺漏。
2、不同視圖強調(diào)的不同工程關(guān)注點: 在概念視圖中,問題和解決方案主要通過領(lǐng)域術(shù)語來考慮的。對于特定的軟件及硬件技術(shù),它們應(yīng)當(dāng)是相對獨立的。概念視圖的工廠關(guān)注點包括: 系統(tǒng)如何滿足需求?
商用構(gòu)件怎樣組裝成整體,怎樣在功能層上與系統(tǒng)的其他部分交互? 領(lǐng)域特定的硬件和軟件如何融入系統(tǒng)? 功能是如何被分割并進(jìn)入產(chǎn)品個版本的? 系統(tǒng)如何與之前版本的產(chǎn)品合并?它如何支持未來的版本? 如何支持產(chǎn)品線? 如何將由需求或領(lǐng)域中所做的變動引起的影響最小化? 在模塊視圖中,概念視圖中的構(gòu)件和連接子被映射為子系統(tǒng)和模塊。在這里,架構(gòu)師強調(diào)的是如何用現(xiàn)有的軟件平臺以及技術(shù)實現(xiàn)概念的解決方案。主要的工程關(guān)注點有如下幾點: 產(chǎn)品是如何映射到軟件平臺的? 使用了什么樣的系統(tǒng)支持或系統(tǒng)服務(wù)?具體是在什么地方? 怎么支持測試? 如何降低模塊間的依賴性? 如何將模塊與子系統(tǒng)的復(fù)用最大化? 當(dāng)商用軟件、軟件平臺或標(biāo)準(zhǔn)發(fā)生變動時,采用何種技術(shù)在封裝產(chǎn)品時可以將它們與產(chǎn)品進(jìn)行隔離? 執(zhí)行視圖描述模塊如何映射到運行時平臺說提供的元素,以及這些又如何映射到硬件體系結(jié)構(gòu)。執(zhí)行視圖定義系統(tǒng)的執(zhí)行時實體及其屬性,比如內(nèi)存使用和硬件分配。對于執(zhí)行視圖,其工程關(guān)注點如下: 系統(tǒng)如何滿足性能、恢復(fù)及重新配置方面的需求? 如何平衡資源的使用(例如:負(fù)載平衡)? 如何達(dá)到必需的并發(fā)、復(fù)制及分布,而不過度增加控制算法的復(fù)雜度? 如何使運行時平臺的改變所引起的影響到達(dá)最??? 在代碼體系結(jié)構(gòu)視圖中,架構(gòu)師決定執(zhí)行視圖中的執(zhí)行時實體如何映射到部署構(gòu)件(例如:可執(zhí)行構(gòu)件),決定模塊視圖中的模塊如何映射到源構(gòu)件,以及部署構(gòu)件如何從源構(gòu)件生成。代碼視圖中重要的工程關(guān)注點如下: 如何降低產(chǎn)品升級的時間和費用? 如何管理產(chǎn)品版本及發(fā)布? 如何降低構(gòu)造時間? 需要什么工具支持開發(fā)環(huán)境? 如何支持集成與測試?
三、全局分析 全局分析是在定義概念、模塊、執(zhí)行和代碼系統(tǒng)結(jié)構(gòu)視圖之前進(jìn)行的,并貫穿整個系統(tǒng)結(jié)構(gòu)的設(shè)計過程。 全局分析從識別影響體系結(jié)構(gòu)設(shè)計的因素來分成3類:組織因素、技術(shù)因素、產(chǎn)品因素。 組織因素分成5類:管理;員工技能、興趣、能力、缺點;過程與開發(fā)運行環(huán)境;開發(fā)進(jìn)度;開發(fā)預(yù)算。 技術(shù)因素包括:通用和專用的硬件;操作系統(tǒng)、用戶界面、設(shè)計模式等軟件技術(shù);模版和框架等體系結(jié)構(gòu)技術(shù);圖像、數(shù)據(jù)庫、數(shù)據(jù)格式、算法和技術(shù)之類的標(biāo)準(zhǔn)。 產(chǎn)品因素是描述了產(chǎn)品的功能需求、用戶可見的特征和產(chǎn)品的性能等質(zhì)量方面的需求。比如:功能特征;用戶界面;性能;依賴性;錯誤監(jiān)測、報告、修復(fù);服務(wù)和價格等。 全局分析是在每一種體系結(jié)構(gòu)設(shè)計視圖中都要進(jìn)行的一種行為。在全局分析過程中建立的問題卡片要用在每一個視圖設(shè)計的核心設(shè)計任務(wù)中。在進(jìn)行核心設(shè)計任務(wù)時,做出的決策應(yīng)當(dāng)可以返回到全局分析,以增加和修改因素、問題和策略。 總結(jié)策略:
四、概念體系結(jié)構(gòu)視圖
清楚了概念體系結(jié)構(gòu)的結(jié)構(gòu)視圖之后,可以推論或預(yù)測重要的系統(tǒng)屬性。概念視圖可以用于: 實用環(huán)境及場景。 性能評估。 安全性及可靠性分析。 獨立于監(jiān)測的目標(biāo)。 理解靜態(tài)及動態(tài)系統(tǒng)配置。 工作量評估(初步;不包括基礎(chǔ)設(shè)施)。
五、模塊體系結(jié)構(gòu)視圖
明確了一個模塊視圖,就開始了對重要系統(tǒng)屬性的關(guān)注。對模塊視圖的描述,有以下用途: 管理模塊接口。 變化影響分析。 接口約束的一致性檢查。 管理配置。 評估成果。
子系統(tǒng)包含0和多個子系統(tǒng)、0和多個模塊;模塊之間的關(guān)系是通過接口來實現(xiàn)的。模塊也存在包含關(guān)系、使用關(guān)系。
六、執(zhí)行體系結(jié)構(gòu)視圖
多個運行時實體;運行時實體依賴于模塊;資源平臺依賴于硬件資源。 通信機制包括DCOM(分布式構(gòu)件對象模型)、IPC(進(jìn)程通信)、RPC(遠(yuǎn)程過程調(diào)用)等。 資源包括地址空間、內(nèi)存池、定時器、代理、端口等。 執(zhí)行視圖通常由下面人員使用: 架構(gòu)師,設(shè)計系統(tǒng)運行時間的特性,以使得設(shè)計符合需求,并能夠適應(yīng)期望的改變。 開發(fā)人員,提供正確的實現(xiàn)。 測試人員,他們需要知道系統(tǒng)的運行時間的特性并計劃進(jìn)行測試。 維護(hù)人員,決定運行時間平臺的改變?nèi)绾斡绊懴到y(tǒng),或者需求的改變?nèi)绾斡绊懴到y(tǒng)的運行時間特性。
七、代碼體系結(jié)構(gòu)視圖
代碼體系結(jié)構(gòu)視圖的應(yīng)用: 一旦代碼體系結(jié)構(gòu)視圖被明確地描述出來,它就可以有許多不同的用途: 對于模塊視圖和執(zhí)行視圖中的元素的可追蹤性。 對于特定開發(fā)任務(wù)所需要的所有構(gòu)件的透明訪問。 構(gòu)造部分系統(tǒng)。 管理構(gòu)件的版本和發(fā)布。 保持體系結(jié)構(gòu)的設(shè)計決策,及時發(fā)現(xiàn)違反決策的情況。 代碼體系設(shè)計活動: 代碼組由源代碼構(gòu)件、二進(jìn)制構(gòu)件、庫、執(zhí)行(運行時實體)、配置描述等組成。 源代碼構(gòu)件依賴于模塊和接口。 代碼組依賴于子系統(tǒng)和分層。
八、軟件體系架構(gòu)模式 軟件設(shè)計的一個核心問題是能否使用重復(fù)的體系架構(gòu),即能否達(dá)到體系架構(gòu)級的軟件重用。也就是說,能否在不同的軟件系統(tǒng)中,使用同一體系架構(gòu)?;谶@個目的,許多學(xué)者們開始研究和實踐軟件體系架構(gòu)的模式問題。在<Pattern-Oriented Software Architecture (面向模式的軟件體系架構(gòu)) >中首次提出了8種體系結(jié)構(gòu)模式: 層(Layers)、管道和過濾器(Pipes and Filters) 、黑板(Black board )、代理者(Broker)、模型-視圖-控制器(Model-View-Controller)、表示-抽象-控制(Presentation-Abstraction-Control)、微核(Microkernel)、映像(Reflection)。
|
|