想弄明白問題
- 軟件架構(gòu)是什么,為什么要有;
- 如何定義好的架構(gòu),有哪些指標(biāo);
- 如何實(shí)現(xiàn)好的軟件架構(gòu)。
讀后感
軟件架構(gòu)是什么,為什么要有
參照第15章的描述,
軟件架構(gòu)這項(xiàng)工作的實(shí)質(zhì)就是規(guī)劃如何將系統(tǒng)切分成組件,并安排組件之間的排列關(guān)系,以及組件之間互相通信的方式。
為什么要這么做,
設(shè)計(jì)軟件架構(gòu)的目的,就是為了在工作中更好地對(duì)這些組件進(jìn)行研發(fā)、部署、運(yùn)行以及維護(hù)。
具體來說,根據(jù)單一職責(zé)原則,切分系統(tǒng)成多個(gè)組件,利用依賴反轉(zhuǎn)原則調(diào)整組件的依賴關(guān)系,根據(jù)同步還是異步設(shè)計(jì)組件之前的通信接口。這么做的目的很簡(jiǎn)單:降低開發(fā)、部署、運(yùn)行以及維護(hù)的成本,用最少的人力和物力來完成系統(tǒng)的構(gòu)建和維護(hù)。
如何定義好的架構(gòu),有哪些指標(biāo)
書里面給了三個(gè)指標(biāo):不穩(wěn)定性(A)、抽象性(I)、距離主序列線的距離(D)。
- A: 假設(shè)
表示該組件依賴的組件數(shù)量,
表示該組件被依賴的組件數(shù)量,那么
,當(dāng)前組件依賴的其它組件越多,則越不穩(wěn)定;
- I: 假設(shè)
表示組件內(nèi)抽象類的數(shù)量,
表示具體實(shí)現(xiàn)類的數(shù)量,則
,當(dāng)前組件內(nèi)的抽象類占比越高,則越抽象;
- D: 先定義主序列線,以A為縱軸,I為橫軸,只取第一象限,則主序列線為
A+I-1=0的線段,D表示當(dāng)前組件距離主序列線的距離,值越小,說明設(shè)計(jì)越好。
如何實(shí)現(xiàn)好的軟件架構(gòu)
這里引入了一個(gè)概念:層次,一個(gè)組件的層次越高,它距離輸入/輸出的距離也就越遠(yuǎn)。
在項(xiàng)目初期,需要保持架構(gòu)的可選項(xiàng),延遲策略無關(guān)的決策,比如選用什么數(shù)據(jù)庫、web框架、展示界面等。將修改原因、修改時(shí)間、相同層次的代碼定義到一個(gè)組件,并通過定義抽象類的方式,讓低層次的組件依賴高層次的組件。