復(fù)雜度度量可以用來評估開發(fā)和
測試活動,決定應(yīng)該對哪里進行重構(gòu)以提升質(zhì)量和預(yù)防問題。在QA&Test 2014 conference 大會上,來自于英特爾的Shashi Katiyar就有效利用針對
軟件質(zhì)量改進的復(fù)雜度度量提出了自己的見解。
復(fù)雜度是一種不同的軟件元素間交互的度量。按照Shashi的說法,軟件復(fù)雜度直接反映了軟件的質(zhì)量和成本:如果代碼復(fù)雜度比較高,那么這段代碼的質(zhì)量就會比較低,而且它的維護成本也會比較高。
Shashi提出,如果軟件產(chǎn)品中有復(fù)雜的代碼,那么組織會面臨以下的問題:
較高的缺陷風(fēng)險
難以增加新的功能
難以理解或維護這段代碼
難以驗證
你可以使用McCabe圈復(fù)雜度來度量復(fù)雜度。這種度量規(guī)定了代碼中線性獨立的路徑條數(shù),它反映了測試難度和軟件的可靠性。它可以用來評估開發(fā)和維護
工作量。
基于復(fù)雜度數(shù)據(jù),你掌握要覆蓋所有路徑最少需要多少測試用例。復(fù)雜度數(shù)據(jù)可以幫助你去: 集中力量搞好復(fù)雜的模塊
了解停止測試的時機
增加軟件的可測試性
Shashi解釋說,你在軟件系統(tǒng)的管理中做到更具可預(yù)測性:
在任何軟件產(chǎn)品開始工作之前,如果有人知道它是一個復(fù)雜的模塊,那么就有可能在評估期為它賦予一些額外的時間。了解了復(fù)雜度能夠預(yù)先幫助項目團隊去進行評估,這種做法要勝過在開發(fā)和測試期去關(guān)注它,從而確保不會讓產(chǎn)品的質(zhì)量做出妥協(xié)。
英特爾收集了復(fù)雜度度量和模塊變更數(shù)量的數(shù)據(jù)。這些復(fù)雜度數(shù)據(jù)結(jié)合了客戶記錄的缺陷。如果一個模塊是復(fù)雜的,并且由于缺陷進行了大量的變更,那么就決定去重構(gòu)它。在重構(gòu)之前他們確保有覆蓋這些代碼的測試用例。這種工作方式增加了重構(gòu)的投資收益率。
Shashi探討了他所看到的軟件開發(fā)復(fù)雜度與質(zhì)量相關(guān)的挑戰(zhàn): 在競爭激烈瞬息萬變的環(huán)境中,公司通過為它的用戶提供更多的特性來努力使它的服務(wù)有所不同。這就導(dǎo)致了大量的代碼行和復(fù)雜度,這是個大挑戰(zhàn)。如果未采用適當?shù)念A(yù)防措施去管理產(chǎn)品的復(fù)雜度,那么很快這些產(chǎn)品就將成為難以維護的產(chǎn)品。隨著時間的推移,很多公司都不在使用老代碼和老技術(shù)了,他們知道自己的系統(tǒng)太復(fù)雜了,把它們進行新技術(shù)的移植是一項極其復(fù)雜的任務(wù)。
“在高復(fù)雜度的環(huán)境中,創(chuàng)新和開發(fā)高質(zhì)量軟件是極其重要的”Shashi說。“組織可以設(shè)定去減少所有高復(fù)雜度程序的復(fù)雜度,更加頻繁地變更以改進他們軟件的質(zhì)量”。