可維護性的常見度量指標

2021-09-24 15:50:12 字數 1581 閱讀 6927

可維護性的常見度量指標

*****行數:指**中的行數。非常高的數值可能表明某種型別或方法試圖做太多工作,應該將其分解為幾個部分分別實現。同時,也表明型別或方法可能難以維護。

***可維護性指數:通過計算,得到乙個0~100的索引值,用以表示維護**的相對容易性,該索引值越大,表明程式越容易維護。該指數基於以下幾點進行計算:halstead卷(hc) + 環複雜性(cc) + 每個模組的平均**行數(loc)+ 每個模組注釋行的百分比(com)

計算公式:

***繼承的層次數:指擴充套件到類層次結構根目錄的類定義的數量。等級越深,就越難理解待定方法和字段在何處被定義或重新定義

***類之間的耦合度:通過引數、區域性變數、返回型別、方法呼叫、泛型或模板例項化、基類、介面實現,在外部型別上定義的字段以及屬性修飾來測量隊唯一類的耦合

良好的軟體設計應該具有高內聚性和低耦合度

高耦合度表明難以重用和維護(表明其與其他型別指尖存在很多相互依賴關係)

聚合度與耦合度

***耦合度:耦合指對模組之間的依賴關係的度量,如果兩個模組之間的變化可能需要另乙個模組的變更,則兩個模組之間存在依賴關係。其基於以下兩個因素:

①模組之間的介面數量(數量)②每個介面的複雜性(質量)

***聚合度:是衡量乙個模組的功能或責任的強烈程度的乙個指標。若乙個模組內的所有元素都朝著相同的目標努力,那麼它就具有很強的內聚力。

***最好的軟體設計應該是具有高聚合度和低耦合度。

solid

*** (srp) the single responsibility principle 單一責任原則

不應有多於1個的原因使得乙個類發生變化;乙個類,乙個責任

最簡單的原則,卻是最難做好的原則

*** (ocp) the open-closed principle 開放-封閉原則

對擴充套件性的開放 + 對修改的封閉

模組的行為應是可擴充套件的,從而該模組可表現出新的行為以滿足需求的變化。

但模組自身的**是不應被修改的;擴充套件模組行為的一般途徑是修改模組的

內部實現

如果乙個模組不能被修改,那麼它通常被認為是具有固定的行為

關鍵的解決方案:抽象技術(inheritance和composition)

*** (lsp) the liskov substitution principle liskov替換原則

子型別必須能夠替換其基型別,派生類必須能夠通過其基類的介面使用,客戶端無需了解二者之間的差異
*** (dip) the dependency inversion principle 依賴轉置原則

高階模組不應該依賴於低階模組,兩者都應該取決於抽象

抽象的模組不應依賴於具體的模組;具體應依賴於抽象

優點:將類合同正式化;根據前後置條件定義例行服務

*** (isp) the inte***ce segregation principle 介面聚合原則

客戶端不應依賴於它們不需要的方法,最主要的是解決「胖」介面,這是由於「胖」介面不夠聚合。

方法:「胖」介面可分解為多個小的介面;不同的介面向不同的客戶端提供服務;客戶端只訪問自己所需要的埠

軟體的可維護性和可復用性

軟體的復用 reuse 或重用擁有眾多優點,如可以提高軟體的開發效率,提高軟體質量,節約開發成本,恰當的復用還可以改善系統的可維護性。物件導向設計復用的目標在於實現支援可維護性的復用。在物件導向的設計裡面,可維護性復用都是以物件導向設計原則為基礎的,這些設計原則首先都是復用的原則,遵循這些設計原則可...

規範日誌來提公升系統可維護性

在系統中日誌大體可以分為兩類,一類是流水日誌,另一類是錯誤日誌,對於前一類由於在業務上會有需求,所以設計系統時一般都會考慮,但關於錯誤記錄內容很多情況下都不會納入設計範圍,這樣導致我們開發出來的系統可維護性很差,錯誤日誌幾乎沒有參考 甚至誤導維護人員。怎樣才能輸出良好的日誌資訊呢?我想可以從下面幾點...

資料系統的可靠性,可伸縮性,可維護性

資料密集型應用設計讀書筆記第一章。現在的資料密集型應用,趨勢是元件化。乙個系統裡,快取,資料庫,索引,和訊息佇列等都解耦開來,每個部分再針對需求選擇對應的元件。而應用業務 則負責維護元件之間的一致性。而乙個資料系統,非功能性需求的基礎目標有三個,可靠性,可伸縮性,可維護性。可靠性 reliabili...