如何評價軟體寫的好還是壞?

2021-09-08 02:45:13 字數 1569 閱讀 6576

軟體自身是一種固化的思維,因此從本質上來看,軟體是不可度量的。

但這並不意味著軟體不需要度量,而只是說軟體中的度量大多都有一定限度。

應用各種度量資料的時候一旦跨過這種限度,結果就會適得其反。

對軟體「直觀可見的質量屬性」的度量比較簡單,比如:bug率,效能等,這裡就不提了。

這裡主要關注的是軟體的內在的,不直觀可見的質量屬性。

圈複雜度主要用於度量函式或方法,從《**大全》中可以找到圈複雜度的描述。

關於圈複雜度:tom mccabe曾經建議使用下面的方法來度量複雜度。在這一方法中為了計算複雜度首先要計算子程式中的決策點(decision points),規則如下:

從函式第一行一致往下通過程式

一旦遇到以下關鍵字或者同類的詞就加1:if,while,repeat,for,and,or

給case語句中的每一種情況加1                           --steve mcconell 《**大全》

很多靜態分析工具都直接提供對圈複雜度的度量,而圈複雜度本身歧義性很小,是非常難得的指標,高於15的**基本很難看懂。

但圈複雜度更適合用於度量編碼的結果,對高層設計則不太適用。

響應集是指類的各個方法直接呼叫的函式數目。響應集無疑的應該盡可能的小,根據得墨忒耳法則:某個物件的任何方法都應該只呼叫屬於以下情形的方法。

class demeter

};

---摘自《程式設計師修煉之道》

在度量包時可以用包內部類的數目除以包內類的總數,其比值用來表示包得內聚性。如果用r表示包內部得類關係數目,用n表示包內類總數。那麼:

h = (r+1)/n

不穩定性由輸入耦合度(ca)與輸出耦合度(ce)計算而來。

包得輸入耦合度是指處於包外部,但依賴於包內類的數目。

包得輸出耦合度是指包內部的依賴於包外部類的類數目。

這樣i = ce / (ca+ ce)

包的抽象性用抽象類的數目和包中所有類的數目進行計算。

假如說包中類的總數是nc, 抽象類的數目是na ,那麼抽象度a = na/nc

關係內聚性(h),不穩定性(h),抽象性(h)的進一步說明,請參見《敏捷軟體開發:原則,模式與實踐》一書。

這些度量指標無疑是有意義的,都可以用來評價軟體寫的好還是壞,但卻不解決這樣乙個問題:

如果乙個方案在關係內聚性(h),不穩定性(h),抽象性(h)上都有好的表現,複雜度有沒有提高?如果說複雜度因此而提高了,那麼這種額外支出的複雜度值不值得?

如果我們認為複雜度是軟體的根本問題,那麼在滿足需求的前提下,使軟體簡單化就是最關鍵的使命(比靈活性等重要)。既如此,究竟應該如何度量軟體的複雜度呢?

這是乙個需要進一步展開的話題,我完善後會進一步和大家分享。

理想流 + 軟體 = 《完美軟體開發:方法與邏輯》

理想流 + 人生 = ??

理想流 + 管理 = ??

理想流 = 以概念和邏輯推演本質,追求真理。

如何評價軟體的質量

如何評價軟體的質量 我們常說某某軟體好用,某軟體功能全 結構合理 層次分明。這些表述很含糊,用來評價軟體質量不夠確切,不能作為企業選購軟體的依據。對於企業來說,開發單位按照企業的需求,開發乙個應用軟體系統,按期完成並移交使用,系統正確執行使用者規定的功能,僅僅滿足這些是遠遠不夠的。因為企業在引進一套...

什麼軟體質量 如何評價軟體的質量

1.軟體質量 軟體質量是軟體的生命,它直接影響著軟體的使用和維護。通常軟體的質量有下面幾個方面來評價質量的優劣 1 軟體需求是衡量軟體質量的基礎,不符合需求的軟體就不具備質量。設計的軟體應在功能 效能等方面都符合要求,並能可靠地執行。2 軟體結構良好,易讀 易於理解,並易於修改 維護。3 軟體系統具...

六大快遞一起漲價的背後是好還是壞?

隨著雙十一這一年一度購物狂歡節的逼近,不僅電商平台上的各個商家摩拳擦掌,就連整個電商鏈條上的所有節點都為之瘋狂。而在這個關鍵時刻,快遞行業主動來了一場大 多個快遞公司宣布漲價。先是中通快遞宣布今年以來快遞業受運輸成本增加 人工成本提公升 原材料 等多種因素影響,同時為了進一步提公升服務質量,保障客戶...