《軟體設計重構》讀書筆記(1)

2021-07-25 18:03:38 字數 1291 閱讀 1794

看過許多關於物件導向軟體設計方面的書籍,那些書裡面告訴我如何利用物件導向的設計原則和設計模式,去設計出高內聚,低耦合的軟體系統。而《軟體設計重構》一書卻是從另外乙個角度出發,通過分類的方式向我展示了什麼樣的設計是有缺陷的,這種缺陷違反了那些設計原則和模式,如何將這種有缺陷的設計重構成好的軟體系統。

乙個軟體系統的設計包括如下的質量指標。

質量指標

定義可理解性

設計片段能夠被理解的難易程度。簡潔的設計能夠更容易的被理解。

可修改性

需要修改bug時,在不影響其他功能的前提下,對設計片段修改的難易程度。

可擴充套件性

需要增加新功能時,在不影響其他功能的前提下,對設計片段進行擴充套件的難易程度。

可重用性

在其他地方使用設計片段解決相同問題的難易程度。耦合度越底的模組可重用性越好。

可測試性

通過測試找出設計片段缺陷的難易程度。

可靠性在正確地實現功能並防止引入執行階段問題上,設計片段能夠提供多大的幫助。

軟體系統的技術債務指有意或無意的做出錯誤或非最優的設計決策所導致的債務。技術債務包括:**債務,設計債務,測試債務,文件債務等。技術債務主要是由於在特定的條件下,由於專案經理,專案架構師和專案開發人員的錯誤決策所導致的。如果軟體系統的技術債務不能即使被償還,會導致技術債務越積越多,到最後無力償還而整個軟體系統失敗,即技術破產。

設計缺陷是特定的設計結構,這些設計結構違反和基本的設計原則,給設計質量帶來了負面的影響。導致軟體系統發生設計缺陷的原因大概有如下幾種:

1)違反了軟體的設計原則。(參見ood常用的軟體設計原則)

2)不恰當的使用設計模式

3)未遵循最佳的實踐和過程

4)在物件導向設計過程中,使用過程性思維方式。

5)粘滯性,即為完成某項工作而遇到的阻力,需要付出的更多的時間和精力。包括軟體粘滯性和環境粘滯性。為了避免這些阻力,開發人員可能會採用權益之計,而不遵守正確的流程。

軟體設計就是一組設計決策,設計缺陷就是在設計過程中採用了錯誤的或不好的設計決策而導致的,進而導致了設計質量不好的軟體系統。如果對這些設計缺陷不能及時的發現並改正,就會導致技術債務的產生。技術債務的積累會導致最終的軟體專案的失敗。

設計缺陷的分類基於物件模型的4個主要元素:抽象,封裝,模組化和層次結構。

1)抽象:倡導通過精簡和概括來簡化實體。精簡指刪除不必要的細節,概括指找出並定義通用的主要特徵。

2)封裝:通過隱藏抽象的實現細節和隱藏變化來實現關注點分離和資訊隱藏。

3)模組化:通過集中和分解等方法建立高內聚低耦合的抽象。

4)層次結構:倡導通過分類,歸併,替換和排序等方法一層次方式組織抽象。

《軟體設計與實現》 讀書筆記

在需求分析中,要搞清楚 在設計與實現中,要搞清楚 在測試與發布階段,要搞清楚 分析和設計的方法 模型用來描述事物 事物的屬性 事物之間的關係以及各個事物之間的資訊傳遞。方法有 思維導圖 mind map 實體關係圖 entity relationship diagram 用例圖 use case d...

《實時控制軟體設計》讀書筆記

讀書筆記 在淺讀過 構建之法 現代軟體工程 第一章和鄒欣老師的一些博文後,我對以下四個方面有了一些粗陋的認識。構建之法 第一章中對軟體工程有著自己的理解。書中提到 軟體 程式 軟體工程 這一概念。同時,書中還指出軟體工程包含軟體需求分析 軟體設計 軟體構建 軟體測試和軟體維護這些領域。看過這些介紹後...

讀書筆記 軟體設計原則 設計模式

設計模式 可復用物件導向軟體的基礎 這些原則並不是必須要嚴格遵守的,但謹記這些原則會讓我們設計出更好的 christopher alexander說過 每乙個模式描述了乙個在我們周圍不斷重 生的問題,以及解決該問題的解決方案的核心 一般而言,乙個模式有四個基本描述 結構型模式 行為型模式 參考個人部...