和詞匯是否前后一致。
5、是否存在一些形容詞、比較性詞語,比如:容易的、快速的、方便的、有效的、許多、很少、簡單、復(fù)雜、最新的,界面友好的,減少、擴大,不小于等等,需要將描述性詞語進行量化,并且給出具體值或者范圍,要不然不同的人根據(jù)不同的理解就會得出不同的結(jié)果,最終可能跟用戶最初的要求有偏差,那“炒回鍋肉”的事情就不可避免地會發(fā)生。
另外保證需求質(zhì)量的一個很重要的因素就是需求是否細化,如果需求不細化也會很容易造成代碼的返工,于是就出現(xiàn)了我們的程序員盡管總是加班加點卻總是不能如期的完成任務(wù)的情景。那么我們怎樣才能判斷需求細化的程度呢?需求細化程度確實很難把握,什么樣的需求可以算是比較細了,不用再進行細化了呢?哪些需求又太粗了呢?答案是需求是否可以寫出相應(yīng)的測試用例,如果寫不出來,就說明需求還不是很細,還需要再進行細化。
2、設(shè)計
軟件架構(gòu)設(shè)計在軟件產(chǎn)品開發(fā)周期中占有很重要的位置,我們開發(fā)出來的軟件產(chǎn)品在開發(fā)伊始到產(chǎn)品發(fā)布會涉及到方方面面的角色,例如:用戶、項目管理人員、程序員、測試員、維護人員等等。不同的角色對架構(gòu)設(shè)計的要求也不相同。例如用戶關(guān)心的是需求,因此我們的設(shè)計對需求的覆蓋率是多少?對于程序員來說模塊是否清晰,類的功能是否單一等等,對于測試人員來說系統(tǒng)的是系統(tǒng)的可測試性。對于維護人員來講系統(tǒng)的擴展性、可維護性如何?一個高質(zhì)量的軟件架構(gòu),應(yīng)該最大限度的考慮并滿足不同角色的不同要求。正是因為有這些要求,我們在進行軟件設(shè)計的時候,應(yīng)該進行全面的考慮。一般用來衡量軟件設(shè)計質(zhì)量的標準可以從以下幾個方面來考慮:
1)、功能性:包括完全性、正確性、安全性、兼容性、互用性。完全性包括功能點覆蓋率,重點功能點覆蓋率,優(yōu)先功能覆蓋率。正確性包括需求一致度。安全性根據(jù)軟件需求的不同有不同的安全性要求。
2)、效率:包括產(chǎn)品運行的時間效率和利用的硬件資源兩方面來考慮。
3)、維護性:包括架構(gòu)的可改正性,可擴充性以及可測試性。如果用戶的一個很小的需求變更會引起架構(gòu)設(shè)計很大的變化,那么這樣的架構(gòu)設(shè)計的可改正性和可擴充性就比較差。
4)、可移植性:包括硬件的獨立性、軟件獨立性、可安裝性、可重用性。軟件設(shè)計是否模塊化、每個模塊的可復(fù)用性如何都是應(yīng)該考慮的因素。
5)、可靠性:包括缺陷數(shù)量、容錯性、可用性。
6)、使用性:包括可理解性、易學習性、可操作性、易溝通性。我們軟件的最終目的是讓用戶來使用的,如果易用性不好,可操作性不好都會影響用戶對軟件的接納程度。因此在軟件的可使用性也是非常重要的。
3、編碼
代碼質(zhì)量的一個很重要的標準就是代碼的可讀性及規(guī)范性,可讀性不一定是簡單的代碼,而是容易理解的代碼,因為過于復(fù)雜的代碼難以測試和維護,同時出錯的幾率也會更高。如果一個方法內(nèi)部的代碼很長,而且使用了很多令人難以理解的數(shù)據(jù)集,這樣就會帶來代碼維護的困難,因為很少有人能夠有效地分析它們,因此也就是最容易出現(xiàn)缺陷和錯誤的地方。類之間的耦合度會造成類與類之間的相互關(guān)聯(lián),當一個類發(fā)生改變時會使其他的類發(fā)生意想不到的變化,一般從導入類的個數(shù)判斷類之間的耦合度,如果導入類的個數(shù)很多,每一個導入類發(fā)生變化都會影響到該類本身,另外如果該類的public方法太多也會導致類之間的高耦合性增加。
也許有的程序員會認為寫出可讀、規(guī)范的代碼會影響工作進度。的確,對于程序員個體短時間來說為代碼寫上注釋是要花費些時間,但如今軟件開發(fā)是多人協(xié)作周期很長的過程,寫過程序的人都知道,如果自己寫了不規(guī)范的代碼,隨著自己所寫的代碼越來越多,到后來需要修改某個前期寫的模塊時都不知道自己當初是怎么想的了,讀自己的代碼也需要花很長時間才讀懂。況且如果隨著人員的調(diào)動等其他原因,往往維護代碼的程序員已不是當初寫代碼的人,很多情況就是讀懂了一段糟糕的代碼還比重新寫出一段代碼花費的時間還長,嚴重影響工作效率(有些時候還影響維護人員的心情),反過來,如果大家都講究把代碼寫成規(guī)范可讀的,無疑對于整個組織來說提高總體工作效率是非常有用的。
代碼質(zhì)量另一個非常重要的衡量手段就是測試,通過統(tǒng)計測試代碼所產(chǎn)生的缺陷情況,如嚴重等級分布、缺陷曲線的變化等可以從一個方面來簡單地評估代碼質(zhì)量。