1.關於概念架構和細化架構 1)層次:系統 用戶 業務 角度:功能 約束 質量屬性 2)架構=組件+交互 3)概念架構僅關注高層組件,對高層組件的“職責”進行了籠統的界定,並給出了高層組件之間的相互關係,其不涉及接口細節(只有抽象組件和抽象交互機制)。這些都是預習書本時玉帶的知識點。
對於什麼是架構?每個角色都有自己的關注點,不同涉衆看待軟件架構的視角自然也是不同的。不過也不是無跡可尋,大致可以從五個角度來劃分:邏輯(職責劃分) 物理(物理節點安排) 開發(程序單元組織) 數據(持久化設計) 運行(控制流組織)。也就是五視圖,每個試圖,一個思維,一組技術關注。這便是細化架構。
架構最重要的一點,就是它能把難以處理的大問題分解成便於管理的小問題。就劃分子系統策略,可歸納爲3種:
分層的細化:可簡單地概括爲MVC模式,模型(model)-視圖(view)-控制器(controller),它們各自處理自己的任務
分區的引入:引入分區,以便於支持深度優先的迭代開發
機制的提取:基於具體類的協作則算不上機制、基於具體類的協作則算不上機制、基於接口(或抽象類)的協作是機
制,實現不同的最終功能可以重用同一個機制。
而劃分子系統的依據4個重要原則:
職責不同的單元劃歸不同子系統
通用性不同的單元劃歸不同子系統
需要不同開發技能的單元劃歸不同子系統
堅固工作量的相對均衡,進一步切分太大的子系統
協作決定接口,"分"是手段,"合"是目的,不能合在一起支持更高層次功能的模塊,有何用?
設計模式是基礎,要站在各個角度看軟件架構。並且通過質疑“對不對”和“好不好”,可以發現新職責,或者調整協作方式。
開發架構的設計內容:(1)將“邏輯結構”映射爲程序單元開發技術選項:開發語言,平臺工具
要自主編寫的源程序可重用的庫、框架其他方式(shell腳本,平臺配置文件)
此外重用也是一個重點。