架构之美-读书笔记之一
每次讀第一章都覺得不是很好懂,這些概念在別的地方都見過,唯一讓我覺得新穎的和流連忘返的就是品質關注點與功能需求的論述,先后關系。一般寫程序,首先考慮的是功能分解,模塊分解,實現,然后根據實際場景,再做出一些隱含的、默認的品質需求決定,無書面的思考和確認,而本書明確提出的品質關注點,并理順其中的關系,讓設計三思而后行。
架構之美 第一章
什么是架構?
架構應該是一組結構,來源于一組設計規則,能減少復雜性。常見定義是,每種結構由各種類型的組件和關系組成,它們如何組合、相互調用、通信、同步、及其其他交互。
以我的理解,簡單講:組件及組件間的關系。
架構存在的目的是什么?
確保利益相關人員的關注點能夠得到滿足,而在構想、計劃、構建和維護系統時,系統架構能夠處理復雜性。
為了對付復雜性,系統被分解為一些交互的組件。
而每種結構都有特定的關注點,如可變性和性能。各種關注點需要相互妥協、折中。
而架構師的工作就是:
1)滿足客戶需要
2)整個系統應用相同的設計原則
3)滿足法規和安全性需求
架構與需求的關系?
外部行為的描述,展示了產品如何與它的用戶、其他系統和外部設備之間的交互,這應該表現為需求。
結構描述,展示了產品如何劃分為多個部分,以及這些部分的關系
內部行為描述,用于描述組件之間的交互接口
需求一般理解為系統的功能,但其隱含的品質性要求,也需要架構考慮。
架構與設計的關系?
這個是針對架構師和開發者的工作區別而言。
架構是系統設計的一部分,架構忽略了系統的一些細節,更側重于系統如何組裝起來。而開發者更側重中部分組件的設計,不用太注意系統組件的裝配問題。
如何創建一個架構?
兩個優秀的實踐:
1. 讓利益相關人參與
2. 同時關注功能和品質
典型的利益相關人員:
1. 投資人、老板: 項目需要的資源、能否在工期內完成
2. 項目經理: 團隊、項目計劃、項目進度
3. 架構師、開發、測試人員: 項目的構建、以及維護和演進
4. 市場人員: 品質特點,超越競爭者
5. 用戶(包括最終用戶、安裝、管理等人員): 可用性
架構師需要與利益相關人員協作,理解他們的品質關注點,然后考慮折中,排列優先級。
如:
1. 安全性和性能。如對信息加密將加強安全性,但會損失性能。
2. 可變性與可用性。如利用配置文件,可以增加可變性,但會降低可用性。以及如何創建配置文件的格式。
為什么要首先給品質關注點排優先級?而不是從功能需求開始?
因為系統的功能分解通常有很多種方式,如從數據模型出發,和從業務模型出發會得到不同的系統架構,極端情況下,系統無分解,被開發成單一的軟件,可能會滿足所有需求,但不滿足品質關注點。如可變性、可擴展性、可維護性、可伸縮性等。
1. 可變性。將系統內的參數,轉移到配置文件中,便于修改。
2. 可以伸縮性、性能。將系統從單機遷移到分布式部署,從單線程轉移到多線程。
1)功能性(Functionality)
產品要像他們的用戶提供哪些功能?
2)可變性(Changeability)
軟件將來可能需要哪些改變?哪些改變不太可能發生,不需要特別容易進行這些改變?
3)性能(Performance)
產品將達到什么樣的性能?
4)容量(Capacity)
多少用戶將并發使用該系統?該系統將為用戶保存多少數據?
5)生態系統(Ecosystem)
在部署的生態環境中,該系統將與其他系統進行哪些交互?
6)模塊化(Modularity)
如何將編寫軟件的任務分解為工作指派(模塊),特別是這些模塊可以獨立地開發,并能夠準確而容易地滿足彼此需要?
7)可構建性(Buildability)
如何將軟件構建為一組組件,并能夠獨立實現和驗證這些組件?哪些組件應該復用其他的產品,哪些應該從外部供應商處獲得?
8)產品化(Producibility)
如果產品將以集中變體的形式存在,如何開發一個產品線,并利用這些變體的共性?產品線中的產品以怎樣的步驟開發?在創建一條產品線時,要進行哪些投資?開發產品線中不同的變體的選擇,預期會得到怎樣的回報?
特別是是否可能先開發最小的有用產品然后再添加(擴展)組件,在不改變以前編寫的代碼的情況下,開發產品線的其他成員?
9)安全性(Security)
產品是否需要用戶認證,或者必須限制對數據的訪問?數據的安全性如何得到保證?如何抵擋“拒絕服務”工具或者其他攻擊?
常見的幾種架構的結構 1. 信息隱藏結構。 ?包含關系 2. 使用結構。 層次關系 3. 進程結構。 共享 4. 訪問結構。 ?
文中使用了一個表格,很簡潔地表達了結構、組件、關系、品質關注點。
本章其他一些要點:
1. 架構要盡量簡單,但不要過于簡單。 盡量簡單可以便于修改。而過分犧牲簡單性的修改要抵制。
2. 系統設計需要保持概念完整性、一致性。
3. 優秀的架構示例:
A-7E OFP 艦載飛行處理器
朗訊53SS電話交換機
萬維網WWW
UNIX系統
總結
以上是生活随笔為你收集整理的架构之美-读书笔记之一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安徽大学软件工程考研历程
- 下一篇: 额温枪大揭秘-你的额温枪为什么测不准