“當你能夠測度你所說的并將其用數(shù)字表達出來,你就對它有了一些了解;但當你不能測度,不能用數(shù)字表達它時,你對它的了解就很貧乏.你在思想上還遠沒有進入科學的階段” ——Load Kelvin
軟件質(zhì)量判定遇到的問題
判斷和衡量代碼質(zhì)量一直是開發(fā)過程中令人苦惱的問題,在同樣完成功能的情況下,如何判別一種寫法比另一種寫法好呢?在代碼重構(gòu)的過程中,如何確定代碼質(zhì)量是在不斷的改進當中呢?引入一種設計模式以后,代碼真的變的比以前好了嗎?
大部分時候我們憑感覺和經(jīng)驗做這些事情,我們使用很多模糊的詞語來描述我們的判斷,比如這樣做以后,代碼的可維護性更好,可擴展性提高等等。在越來越注重代碼設計的今天,很多人開始使用更感性化,更形而上學的詞語來形容軟件質(zhì)量,我們會聽到評價軟件結(jié)構(gòu)很優(yōu)雅,帶來美的享受,甚至一些設計原則被提升到了哲學高度,:)。
不得不承認這些詞語的描述確實很符合我們看到一段高質(zhì)量代碼的心境,但是這些新詞語的出現(xiàn)并沒有幫助我們解決軟件質(zhì)量判定中遇到的問題,因為這些感性的判定,由于每個人的經(jīng)驗不同,經(jīng)歷不同,所得出的結(jié)論也不盡相同。
軟件度量能解決的問題
眾所周知,度量對任意一個工程產(chǎn)品研制都是很重要的,度量讓人們更加 了解產(chǎn)品,可以評價產(chǎn)品,衡量產(chǎn)品質(zhì)量從而進行改進。對于軟件產(chǎn)品也一樣,只有定性的評估是不夠的,只有通過定量的評估才可以根本的解決評估軟件產(chǎn)品質(zhì)量這樣的問題。然而,軟件產(chǎn)品的度量卻非常困難,對它的測量可能永遠無法做到和物理產(chǎn)品一樣的完美,但是,軟件測量仍然具有重要的意義。
要度量軟件質(zhì)量,首先需要定義軟件質(zhì)量要素,比如,軟件的功能性(functionality)、可用性(usability)、可靠性(reliability)、性能(performance)和支持度(supportability)都衡量軟件質(zhì)量的要素。不過,要真正定量的從技術(shù)上度量這些要素,就是非常困難的了。
軟件度量工作首先需要確定能夠表示軟件質(zhì)量的各種屬性和指標;然后,分析軟件,收集數(shù)據(jù);接著運用公式換算代碼的各種指標值;最后,通過這些指標就可以分析代碼的質(zhì)量。確定哪些屬性和指標可以表示軟件質(zhì)量,收集哪些數(shù)據(jù),如何用公式推導指標,都是軟件度量這門科學的研究重點。它所確定的各種軟件度量指標為我們了解軟件屬性,衡量軟件質(zhì)量提供了科學的依據(jù)。
軟件度量經(jīng)歷了幾十年的發(fā)展,在軟件的各個方面和領域都開發(fā)出了各種度量套件。有針對分析模型的度量,體系結(jié)構(gòu)設計的度量,構(gòu)件級設計的度量,界面設計的度量,以及源代碼級的度量等等,要了解這些度量套件如何進行質(zhì)量測量可以參考相關的資料。不過,這些度量套件并不是都具備實際的操作意義,有些度量就太復雜不可操作,或者脫離實際很難理解。但是也有一些度量套件具備很實際的指導意義。本文打算介紹的構(gòu)件級度量套件和源碼級度量套件都是很有意義的。
軟件度量可以幫助我們理解軟件屬性,衡量軟件質(zhì)量,但是,軟件度量并沒有真正的去測量軟件質(zhì)量,而是測量軟件質(zhì)量的表現(xiàn),因此,仍然需要我們?nèi)シ治龃_定所測量的指標和軟件質(zhì)量的準確關系。
構(gòu)件級和源碼級的度量
構(gòu)件級的軟件度量集中評價軟件構(gòu)件的特性,它主要包括3C測量,既:內(nèi)聚度(coheion),耦合度(coupling),和復雜度(complexity),這組測量指標貼切的描述了構(gòu)件設計質(zhì)量,我們也能看出各種設計模式和設計原則都在想辦法平衡這些元素。
內(nèi)聚度和耦合度可以通過考察構(gòu)件的輸入,輸出參數(shù)的性質(zhì)和個數(shù),全局變量,被調(diào)用模塊的個數(shù)(扇出),調(diào)用的外部模塊數(shù)(扇入),得出測量數(shù)據(jù)。分析公式就不列舉在這里了,公式的大概含義是如果一個模塊有少的輸入?yún)?shù),且都是數(shù)據(jù)型的參數(shù),沒有訪問全局數(shù)據(jù),被單一的模塊調(diào)用,可以預計這個模塊將有低的耦合度。關于復雜度還有一個著名的測量指標——環(huán)復雜度,它基于構(gòu)件控制流圖進行分析。
源碼級的軟件度量主要評價代碼復雜度,Halstead測量套件被稱為“最著名和研究最完全的軟件復雜度復合度量之一”。它通過研究源代碼中的操作符和操作數(shù),開發(fā)出了一系列指標,可以描述代碼的實際體積,開發(fā)工作量,開發(fā)時間,甚至軟件中被預測的錯誤數(shù)。 很多軟件測量工具都提供象耦合度,環(huán)復雜度,Halstead測量套件,扇入扇出數(shù),等指標的自動統(tǒng)計,透過這些指標,我們可以掌握代碼的內(nèi)部特性,分析每次代碼改動對代碼質(zhì)量的影響。一些停留在定性描述上的質(zhì)量改進,完全可以通過數(shù)據(jù)得到印證。比如某部分代碼采用設計模式以后提高了內(nèi)聚力,降低了耦合度,某塊職責眾多,特別復雜的代碼被拆散,所拆出的各個模塊的復雜度都很低,易于維護。那么通過度量數(shù)據(jù)一定可以反應出這些特性,比如,源碼級的復雜度指標降低,構(gòu)件級的耦合度指標降低等等。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請以權(quán)威部門公布的內(nèi)容為準!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學生提供專業(yè)、高質(zhì)量的課程和服務,解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學員考試保駕護航。面授、直播&錄播,多種班型靈活學習,滿足不同學員考證需求,降低課程學習難度,使學習效果事半功倍。
發(fā)表評論 查看完整評論 | |