想弄明白問題
- 軟件架構(gòu)是什么右冻,為什么要有装蓬;
- 如何定義好的架構(gòu),有哪些指標纱扭;
- 如何實現(xiàn)好的軟件架構(gòu)牍帚。
讀后感
軟件架構(gòu)是什么,為什么要有
參照第15章的描述乳蛾,
軟件架構(gòu)這項工作的實質(zhì)就是規(guī)劃如何將系統(tǒng)切分成組件暗赶,并安排組件之間的排列關(guān)系,以及組件之間互相通信的方式肃叶。
為什么要這么做忆首,
設計軟件架構(gòu)的目的,就是為了在工作中更好地對這些組件進行研發(fā)被环、部署糙及、運行以及維護。
具體來說筛欢,根據(jù)單一職責原則浸锨,切分系統(tǒng)成多個組件唇聘,利用依賴反轉(zhuǎn)原則調(diào)整組件的依賴關(guān)系,根據(jù)同步還是異步設計組件之前的通信接口柱搜。這么做的目的很簡單:降低開發(fā)迟郎、部署、運行以及維護的成本聪蘸,用最少的人力和物力來完成系統(tǒng)的構(gòu)建和維護宪肖。
如何定義好的架構(gòu),有哪些指標
書里面給了三個指標:不穩(wěn)定性(A)健爬、抽象性(I)控乾、距離主序列線的距離(D)。
- A: 假設表示該組件依賴的組件數(shù)量娜遵,表示該組件被依賴的組件數(shù)量蜕衡,那么,當前組件依賴的其它組件越多设拟,則越不穩(wěn)定慨仿;
- I: 假設表示組件內(nèi)抽象類的數(shù)量,表示具體實現(xiàn)類的數(shù)量纳胧,則镰吆,當前組件內(nèi)的抽象類占比越高,則越抽象跑慕;
- D: 先定義主序列線鼎姊,以A為縱軸,I為橫軸相赁,只取第一象限,則主序列線為
A+I-1=0
的線段慰于,D表示當前組件距離主序列線的距離钮科,值越小,說明設計越好婆赠。
如何實現(xiàn)好的軟件架構(gòu)
這里引入了一個概念:層次绵脯,一個組件的層次越高,它距離輸入/輸出的距離也就越遠休里。
在項目初期蛆挫,需要保持架構(gòu)的可選項,延遲策略無關(guān)的決策妙黍,比如選用什么數(shù)據(jù)庫悴侵、web框架、展示界面等拭嫁。將修改原因可免、修改時間抓于、相同層次的代碼定義到一個組件,并通過定義抽象類的方式浇借,讓低層次的組件依賴高層次的組件捉撮。