![]() |
VOOZH | about |
複雜度度量可以用來評估開發和測試活動,決定應該對哪裡進行重構以提升質量和預防問題。在QA&Test 2014 conference大會上,來自於英特爾的Shashi Katiyar就有效利用針對軟體質量改進的複雜度度量提出了自己的見解。
複雜度是一種不同的軟體元素間交互的度量。按照Shashi的說法,軟體複雜度直接反映了軟體的質量和成本:如果代碼複雜度比較高,那麼這段代碼的質量就會比較低,而且它的維護成本也會比較高。
Shashi提出,如果軟體產品中有複雜的代碼,那麼組織會面臨以下的問題:
你可以使用McCabe圈複雜度來度量複雜度。這種度量規定了代碼中線性獨立的路徑條數,它反映了測試難度和軟體的可靠性。它可以用來評估開發和維護工作量。
基於複雜度數據,你掌握要覆蓋所有路徑最少需要多少測試用例。複雜度數據可以幫助你去:
Shashi解釋說,你在軟體系統的管理中做到更具可預測性:
在任何軟體產品開始工作之前,如果有人知道它是一個複雜的模塊,那麼就有可能在評估期為它賦予一些額外的時間。了解了複雜度能夠預先幫助項目團隊去進行評估,這種做法要勝過在開發和測試期去關注它,從而確保不會讓產品的質量做出妥協。
英特爾收集了複雜度度量和模塊變更數量的數據。這些複雜度數據結合了客戶記錄的缺陷。如果一個模塊是複雜的,並且由於缺陷進行了大量的變更,那麼就決定去重構它。在重構之前他們確保有覆蓋這些代碼的測試用例。這種工作方式增加了重構的投資收益率。
Shashi探討了他所看到的軟體開發複雜度與質量相關的挑戰:
在競爭激烈瞬息萬變的環境中,公司通過為它的用戶提供更多的特性來努力使它的服務有所不同。這就導致了大量的代碼行和複雜度,這是個大挑戰。如果未採用適當的預防措施去管理產品的複雜度,那麼很快這些產品就將成為難以維護的產品。隨著時間的推移,很多公司都不在使用老代碼和老技術了,他們知道自己的系統太複雜了,把它們進行新技術的移植是一項極其複雜的任務。
「在高複雜度的環境中,創新和開發高質量軟體是極其重要的」Shashi說。「組織可以設定去減少所有高複雜度程序的複雜度,更加頻繁地變更以改進他們軟體的質量」。
查看英文原文:Using Complexity Measurements to Improve Software Quality
您好,朋友!您需要註冊一個InfoQ帳號或者登錄才能進行評論。在您完成註冊後還需要進行一些設置。