软件构架实践(第2版)学习笔记
一、軟件架構、架構模式、參考模型、參考架構
1、對于軟件架構定義有很多種,通用的定義是:某個軟件或計算機系統的軟件架構是該系統的一個或多個結構,他們由軟件元素,這些元素的外部可見屬性以及這些元素之間的關系組成。
這里所說的某個元素的“外部可見屬性”是指其他元素對該元素所做的假設,如它所提供的服務、性能特征、錯誤處理、共享資源的使用,等等。
其他的定義包括:架構是一種高層設計。架構是系統的總體結構。架構是一個軟件或系統的組件、組件之間的相互關系以及管理其設計和演變的原理和方針的結構。架構是組件和連接器。
2、架構模式是對元素和關系類型以及一組對其使用方式的限制的描述。
3、參考模型是一種考慮數據流的功能劃分。
4、參考架構是映射到軟件元素(它們相互協作,共同實現在參考模型中定義的功能)及元素之間數據流上的參考模型。
5、軟件架構、架構模式、參考模型、參考架構之間的關系:
6、軟件架構的重要性
?? (1)、架構是涉眾進行交流的手段。
?? (2)、架構是早期設計決策的體現。
?? (3)、架構是可傳遞、可重用的模型。
7、架構定義中指出系統由多種結構構成的,下面列出一些常見的結構。
| 軟件結構 | 關系 | 適用環境 |
| 分解 | 是一個子模塊;與之共享秘密 | 資源分配、項目結構化和規劃;信息隱藏、封裝;配置控制 |
| 使用 | 要求正確出現 | 設計子集;設計擴展 |
| 分層 | 要求正確的出現、使用服務、提供抽象 | 增量式開發;在“虛擬機”可移植性之上實現系統 |
| 類 | 是一個實例;共享訪問方法 | 在面向對象的設計系統中,從一個公共的模版中產生快速的、相近的實現 |
| 客戶機-服務器 | 與之通信;依賴于 | 分布式操作;關注點分離;性能分析;負載平衡 |
| 進程 | 與之并發運行、可能會與之并發運行;排除;優先于等 | 調度分析;性能分析 |
| 并發 | 在相同的邏輯線程上運行 | 確定存在資源爭用,線程可以交叉、連接、被創建或被殺死的位置 |
| 共享數據 | 產生數據;使用數據 | 性能;數據完整性;可修改性 |
| 部署 | 分配給;移植到 | 性能、可用性、安全性分析 |
| 實現 | 存儲在 | 配置控制、集成、測試活動 |
| 工作分配 | 分配到 | 項目管理、最佳利用專業技術、管理通用性 |
二、質量屬性
系統從設計、實現到部署的整個過程中考慮質量屬性的實現。質量屬性包括下列三類:
(1)、系統的質量屬性。(可用性、可修改性、性能、安全性、可測試性和易用性)
(2)、受架構影響的商業屬性。(上市時間、成本和收益、所希望的系統生命期的長短、目標市場、推出計劃、與老系統的集成)
(3)、與架構本身相關的一些質量屬性。(概念完整性、正確性與完整性、可構建性)
六個質量屬性的戰術列表:
?
?
?
?
?
?
?
戰術與架構模式的關系
Active Objcet設計模式將方法執行從方法調用中分離出來,以增強并發,并簡化對駐留在其自身控制線程中的對象的同步訪問。
該模式由6個元素組成:代理,它提供了允許客戶對主動對象調用公共訪問方法的接口;方法請求,它定義了用于執行主動對象的方法的一個接口;激活接口,它維持了掛起方法請求的一個緩沖器;調度程序,它決定接下來執行什么方法請求;附屬,他定義可建模為主動對象的行為和狀態;將來,它允許客戶獲得方法調用的結果。
該模式的動機就是增強并發性——這是一個性能目標。因此其主要目的就是實現“引入并發“性能戰術。然而,還要注意該模式包含的其他戰術。
●???? 信息隱藏(可修改性)。每個元素都選擇了它將實現的責任,并將其實現隱藏在接口后面。
●???? 仲裁者(可修改性)。該代理充當著把變化緩沖到方法調用中的仲裁者。
●???? 綁定時間(可修改性)。主動對象模式假定對該對象的請求在運行時到達該對象。然而,并沒有確定客戶機與代理的綁定時間。
●???? 調度策略(性能)。調度程序實現一些調度策略。
對設計師來說,分析過程包括理解嵌入在實現中的所有戰術;設計過程包括在關于哪些戰術最和將實現系統期望的目標方面,做出一個明智的選擇。
?
架構模式和樣式
軟件中架構模式與建筑物中的架構樣式類似,它由幾個將他們組合起來以維持架構完整性的關鍵特性和規則組成。架構模式由以下幾個因素確定:
●???? 一組元素類型(如數據存儲庫或計算數學函數的組件)
●???? 指出其相互關系的元素的拓撲布局。
●???? 一組語義限制(如管道——過濾器樣式中的過濾器是純數據轉化器——他們以增量形式將其輸入流轉換為輸出流,但并不控制上游流或下游元素)。
●???? 一組交互機制(如子例程調用、事件——調閱者、黑板)、他們確定元素將如何通過允許的拓撲進行協調。
架構模式和戰術之間是什么關系呢?正如已經說明的那樣,我們把戰術看作是設計的基本“構建塊”,并根據該戰術創建架構模式和策略。
三、設計架構
幾乎在我們遇到的所有成功的面向對象系統中都具有但失敗的系統中缺少的兩個特性是:存在一個強大的構架構想,應用管理良好的迭代式增量開發周期。
功能、質量和商業需求的某個集合“塑造”了構架。我們把這些塑造需求稱為“構架驅動因素”
。
構架設計必須按需求分析進行,但不需要在需求分析完成后在開始構架設計。實際上,在確定了關鍵的構架驅動因素后,就可以開始構架設計了。當設計了構架的足夠多的部分后,就可以開始開發骨架系統了。該骨架系統在上面進行迭代開發(以及其在任何一個點交付的能力)的框架。組織結構對構架產生影響。
屬性驅動的設計(ADD)是一個用于設計構架以滿足質量需求和功能需求的方法。ADD把一組質量屬性場景作為輸入,并使用對質量屬性實現和構架之間的關系的了解,對構架進行設計。
ADD步驟:
(1)?????? 選擇要分解的模塊。
(2)?????? 根據這些步驟對模塊進行求精。
(3)?????? 對需要進一步分解的每個模塊重復上述步驟。
?
四、構架編檔
構架編檔是創建構架的最有價值的一步。即使構架非常完美,但如果沒有人理解它,或主要的涉眾誤解了它,它也沒有什么用處。如果您創建了一個非常強大的構架,那么,就必須用足夠的細節明確地描述它,并以一種其他人可以快速找到所需要信息的方式對其進行組織。否則,構架不會有什么用處,您所付出努力就白費了。捕獲構架信息的描述方式采用UML表示法。
?
五、軟件構架重構
構架重構是一種解釋、交互和迭代的過程,涉及許多活動;它不是自動進行的。它需要反向工程專家和設計師具備相關技能并投入精力,這在很大程度上是因為沒有在源代碼中清楚地表示構架構件。
軟件構架重構由以下活動組成,這些活動以迭代的方式進行:
(1)?????? 信息提取。
(2)?????? 數據庫構造。
(3)?????? 視圖融合。
(4)?????? 重構。
?
?
六、分析構架
構架評估的一些基本問題——原因、時間、成本、收益、技巧、計劃內、計劃外、前置條件以及結構。
每個基于構架的開發方法中都應該進行構架評估。
在生命周期中盡可能早的評估軟件質量幾乎總是經濟高效的。
評估成本就是需要參與評估的人員所付出的時間。
成功評估應該具有如下屬性:
(1)、表述清楚的構架目標和需求。
(2)、可控制的范圍。
(3)、經濟高效。
(4)、關鍵人員的可用性。
(5)、稱職的評估小組。
(6)、可管理的期望。
?
ATAM一種進行構架評估的綜合方法,ATAM是評估軟件構架的一個健壯的方法。在該方法中,項目決策者和涉眾要清晰地闡述一個準確的質量屬性需求列表(以場景的方式),并說明與實現每個高優先場景相關的構架決策。然后,把這些決策確定為有風險決策或無風險決策,以找到構架中任何存在問題的地方。
ATAM不是需求評估。
ATAM不是代碼評估。
ATAM不包括實際的系統測試。
ATAM不是一個準確的手段,但它識別了構架中可能存在風險的區域。這些風險包含在敏感點和權衡中。
ATAM活動的4個階段:
在第0階段(合作關系和準備)確定細節:人員名單,時間,地點;評估小組獲取資料并進行初步了解分析。
第1階段,評估階段,決策者參與,小組開始信息收集與分析;耗時約1周。1~2周中斷期,評估小組進一步以非正式方式了解構架。
第2階段,評估階段,涉眾參與,分析繼續;約2天。
第3階段,后續階段,生成最終報告,進行評估活動總結;1周。
評估階段的步驟:
第1步:ATAM方法的表述。評估負責人向決策者表述ATAM方法,使大家理解其過程,了解角色布局。
第2步:商業動機的表述。決策者介紹系統商業動機、重要功能、各種限制(任何相關的技術、管理、經濟和政治限制)、商業目標和上下文、主要的涉眾、驅動因素等。
第3步:構架的表述。首席設計師或架構小組介紹構架,技術限制、所用模式等。
第4步:對構架方法進行分類。評估小組利用所有已知信息對構架方法進行分類。
第5步:生成質量屬性效用樹。生成質量屬性效用樹,捕獲詳細的需求信息,為每個場景分配一個級別,如(高,中),前者為重要度,后者為實現難易度,重點放在(高,高)的場景;此處場景具備刺激、環境、響應三要素就可以了。
第6步:分析構架方法。評估小組分析所有重要場景,設計師解釋如何支持該場景,檢查所用構架方法,分析風險點、權衡點、敏感點。
經過一段中斷期,第2階段開始,此時涉眾開始參與;首先仍然需要一個對ATAM方法的介紹,并使涉眾了解已有的成果。
第7步:集體討論并確定場景的優先級。集體討論并分析場景的優先級,以了解更廣泛的涉眾的想法;該過程可能產生新的場景;使用“有限票數法”投票確定每個場景的優先級——此處不考慮實現難度。
第8步:分析構架方法。分析新的高優先級的場景,構架師解釋構架是怎么滿足各場景的。
第9步:結果表述。總結評估結果,評估負責人展示該結果。
?
CBAM構架設計決策制定的定量方法
為了經濟地制定決策,我們開發了一個對軟件系統進行經濟建模的方法,主要是對其構架進行分析。該方法即成本收益分析方法(CBAM),它在ATAM上構建,用來對構架設計決策的成本和收益進行建模,是優化此類決策的一種手段。CBAM提供了對技術和經濟問題以及構架決策的評估。
CBAM的思想就是構架策略(構架戰術的集合)影響系統的質量屬性,反過來這些質量屬性又會為系統的涉眾帶來一些收益,我們把該收益稱為“效用”。每個構架策略都為涉眾提供了某一特定級別的效用。此外,每個構架策略都有成本,并需要花時間去部署。從此,CBAM可以協助涉眾根據其投資回報(ROI)選擇構架策略,投資回報是收益和成本的比。
CBAM是一種迭代式獲取過程,它與決策分析框架結合在一起。它采用場景來表示各種質量屬性。涉眾通過獲取效用—響應曲線來理解系統的效用如何隨著質量屬性的變化而變化,從而對決策進行分析。在達成一致的基礎上,該方法允許涉眾進行討論,以在涉眾之間進行澄清。設計決策的可跟蹤性允許設計過程隨著時間的推移而不斷得到更新和改進。
1、? 場景的變體
CBAM使用場景來表示和表達具體的質量屬性。把場景結構分成3個部分:刺激(與系統交互)、環境(系統此時的狀態)、響應(所導致的可度量的質量屬性)。
2、? 效用—響應曲線
最好情況的質量屬性級別,最好指繼續提高質量屬性也不能帶來效用的提升,此時效用值取100(如1秒);
最壞情況的質量屬性級別,最壞指如果質量屬性低于該值,系統將毫無價值(如10秒);
本場景(曲線表現的是某個場景)當前的響應與效用級別(當前是5秒,用戶愿意付錢50);期望的效用級別(如果能達到3秒,用戶愿意支付80)確定每個屬性的權重,構架師選擇策略,考慮策略對每個屬性的影響,計算獲得的總收益與成本;
3、? 場景的優先級
4、? 構架策略
CBAM實現步驟:
步驟1、整理場景:根據商業目標確定優先級,選擇優先級別最高的前1/3的場景。
步驟2、對場景進行求精:確定每個場景的最好、最壞、當前、期望情況的質量響應級別——此步僅處理響應級別,期望值有可能等于最好值。
步驟3、確定場景優先級:去掉優先級低的一半場景。
步驟4、為每個場景的當前級別和期望級別分配效用。
步驟5、為場景開發構架策略,并確定質量屬性響應級別。
步驟6、使用內插法確定所期望的構架策略效用值。
步驟7、計算從某個構架策略中獲取的總收益。
步驟8、根據受成本限制影響的ROI選擇構架策略。
步驟9、運用直覺來確認所得到的結果。
?
七、軟件產品線
基于構架的開發模式,即軟件產品線,由于越來越多的組織發現采用產品線可以在成本、進度、質量方面實現數量級的改進,因此該方法日益受到青睞。
創建一個成功的產品線取決于軟件工程、技術管理和組織管理的協調策略。
軟件線實現需要考慮3件事情:
確定變化點
支持變化點
對產品線構架的適宜性進行評估
?
八、開發案例分析
本書中案例都是些難度大、實時性要求高、安全性要求高的系統開發案例。
空中交通管制:高可用性設計案例分析????????????????? 詳見P113
飛行模擬:構架可集成案例分析??????????????????????????? 詳見P153
Nightingale系統:應用ATAM的案例分析??????? 詳見P243
NASA ECS項目:引用CBAM的案例分析????????????? 詳見P267
萬維網:可互操作性案例分析??????????????????????????????? 詳見P277
CelsiusTech公司:產品線開發案例分析???????????????? 詳見P315
J2EE/EJB:工業標準計算基礎結構案例分析?????????? 詳見P343
Luther構架:使用J2EE的移動應用案例分析???????? 詳見P365
轉載于:https://www.cnblogs.com/ajian005/archive/2012/10/28/2753903.html
總結
以上是生活随笔為你收集整理的软件构架实践(第2版)学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 2065 红色病毒问题
- 下一篇: ASP.NET防伪令牌与JSON有效载荷