王議平
(天津中德應(yīng)用技術(shù)大學 天津市 300350)
軟件產(chǎn)品的質(zhì)量是決定軟件產(chǎn)品穩(wěn)定性的一大重要因素。而要提高軟件質(zhì)量就必須增強對軟件技術(shù)研究重視程度,因為控制的前提是可以被測量,若不可測量控制也就無從說起。如今,軟件工程研究的一個重要發(fā)現(xiàn)地方是軟件度量技術(shù),經(jīng)過多年發(fā)展,軟件度量技術(shù)為我們創(chuàng)造出一種度量方法,這樣為我們在像耦合性和代碼行數(shù)的軟件內(nèi)部屬性的分析中提供了一些幫助,這同時給我們提供了一種控制軟件開發(fā)的方法,使得像可維護性和可靠性的軟件產(chǎn)品外部屬性得到一定的提升,讓人們能夠從非主觀的角度來分析以及測評軟件的三大過程:設(shè)計、生產(chǎn)、使用狀況。一般來說,軟件內(nèi)部質(zhì)量的屬性是可測的,但是想更加有力的得到軟件產(chǎn)品的外部質(zhì)量屬性是非困難的,這其中就得借助軟件質(zhì)量測評技術(shù),在軟件質(zhì)量內(nèi)外部屬性中建立一種聯(lián)系。獲得高質(zhì)量軟件有許多種方法,而在軟件開發(fā)的生命周期中運用質(zhì)量測評技術(shù)是一種重要的方法。我們可以在獲取軟件度量技術(shù)質(zhì)量內(nèi)部屬性數(shù)據(jù)、科學應(yīng)用數(shù)據(jù)分析技術(shù)和檢測規(guī)定的質(zhì)量預(yù)測模型上,得到一些無法直接獲取的質(zhì)量外部屬性,以及從用戶對軟件質(zhì)量需求出發(fā),把對質(zhì)量內(nèi)部屬性的測評放到軟件開發(fā)的過程中,并結(jié)合這兩大因素給他他們的聯(lián)系。同時,軟件的效率和成本極大程度受科學、有效和及時的質(zhì)量測評的影響。所以,為理解什么是軟件質(zhì)量測評模型,我們先介紹計算機軟件度量的基本理論,隨之系統(tǒng)介紹有著強大數(shù)據(jù)分析能力的人工神經(jīng)網(wǎng)絡(luò)技術(shù)外構(gòu)建軟件質(zhì)量預(yù)測模型中的應(yīng)用。
我們普遍認為,在從現(xiàn)實世界或者是經(jīng)驗世界中進入數(shù)學世界的過程叫做度量,這其實也是一種映射過程,依據(jù)這種映射我們可以更方便地了解實體哥實體的屬性之中的聯(lián)系。在軟件質(zhì)量度量方法論操作中隊度量的定義是:度量是一個函數(shù),它的輸入是軟件數(shù)據(jù),輸出是單一的數(shù)值,能用以解釋軟件所具有的一個給定屬性對軟件質(zhì)量影響的因素。簡單來說就是,軟件質(zhì)量度量是對某些引起軟件質(zhì)量屬性變化的一種定量測量。
測量是一種不同于標準但類同于估價或者確定值的方法,測量有著很多種刻度,如比率,等間隔、序號、名稱等,刻度之間也是不同的,它的前者比后者者更能反映事物的屬性。這之中能最大程度體現(xiàn)信息和有最強靈活性的刻度是比率刻度,這其中包括了絕對的0 店,這能夠支持各類信息的分析如車輛中的LOC 和錯誤數(shù)都屬于比率度量。而與之稍遜一籌的是等間隔刻度,它以點為基礎(chǔ),給出了一個點飯另一個點距離的概念,是能夠保持外相間數(shù)字點間的距離。這種特性也提供夠了接下來要講的序號刻度所不能提供的信息,像平均值等會。但值得一提的是,等間隔刻度中無絕對的0 點,所以比率是沒有意義的,因此在比較時我們要充分注意這一點。舉個例子,昨天20 度,今天10 度,我們不能說今天比昨天冷兩倍。眾所周知,序號刻度肯定和序號相關(guān),它是把各個項目分為像上,中,下等不同的等級,舉個例子,它把程序的失敗的嚴重程度由大向小分為,災(zāi)難性、中等、小。最后是名稱刻度,這是一種常規(guī)的項目分類刻度,可以把程序語言分為:C、Ada、Fortran 等。
在IEE 1061:1998 中給出軟件質(zhì)量度量的定義是軟件度量是為軟件質(zhì)量屬性進行量化測量。它對軟件生命周期過程中的階段產(chǎn)品實施嚴格度量進行了突出強調(diào),同時它也會分階段對軟件度量水平進行系統(tǒng)評估,這有利于在軟件質(zhì)量問題萌芽時就解決它,同時它也能給管理進行有效的預(yù)見,軟件質(zhì)量度量在很多個軟件生產(chǎn)加工過程中都要用到,如軟件的采購,選用、測評、以及評優(yōu)。值得一提的是,若想保障軟件質(zhì)量度量能夠最大程度地發(fā)揮其作用,就必須運用科學、有效的、質(zhì)量度量過程。在IEE 1061:1998 中,軟件質(zhì)量度量過程被分為4 個階段,這也是一套比較詳細具體的質(zhì)量度量方法。
質(zhì)量需求在一定程度上能夠反映在具體應(yīng)用的特定環(huán)境下其對軟件產(chǎn)品質(zhì)量的具體要求。而隊質(zhì)量需求的一般定義應(yīng)該要在軟件開發(fā)的前期甚至是未開發(fā)之前,因為它在構(gòu)建軟件質(zhì)量和進行軟件質(zhì)量客觀評價的基礎(chǔ)。質(zhì)量需要規(guī)定把可定量解釋為所需質(zhì)量特性地非間接度量以及非直接度量的預(yù)期值。而衡量一個最終產(chǎn)品的質(zhì)量是否達到了質(zhì)量需要需要借助直接度量預(yù)期值。
軟件質(zhì)量測量在軟件特性和其子特性的描述中常常很難進行直接的測量,只能進行間接測量,這就需要具體確定與之相關(guān)的度量元(又名為可度量特性)。在預(yù)備度量時期,我們要充分考慮內(nèi)外部的運用環(huán)境為各個軟件開發(fā)的過程和其最后產(chǎn)品分類確定合理的度量元,構(gòu)建出度量元、質(zhì)量子特性、質(zhì)量特性的映射模型,在此基礎(chǔ)上進行測量評估并在合理的評估準則下進行。
進行度量結(jié)果的整理需要精確確認可度量特性詳細指標,還需要對其結(jié)果做出正確的評估并得出正確的結(jié)論,在此基礎(chǔ)上進行哪些可度量特性指標能夠與現(xiàn)在軟件質(zhì)量度量活動相適應(yīng),以及能運用到軟件質(zhì)量特性值的預(yù)測之中。在這之后,我們需要結(jié)合預(yù)測值和度量值來進行準確的判斷,即是否要進一步進行分析和度量。
構(gòu)建質(zhì)量預(yù)測模型需要借助度量技術(shù),其大概分為:明確待預(yù)測值的質(zhì)量屬性和有關(guān)的度量指標、系統(tǒng)使用軟件度量技術(shù)從而得到構(gòu)建預(yù)測模型的初始數(shù)據(jù),并且科學使用數(shù)據(jù)分析技術(shù)來建立和檢驗?zāi)P瓦@幾步。而科學挑選數(shù)據(jù)分析技術(shù)去進行建模是這幾步中最重要的一步,通過合理挑選數(shù)據(jù)技術(shù)建模能夠構(gòu)建出比較符合預(yù)期的預(yù)測模型,這為之后的準確預(yù)測軟件質(zhì)量打好了地基。
當今世界科學技術(shù)迅速發(fā)展,人們對質(zhì)量測評技術(shù)的研究也大大加深,我們也加大了對質(zhì)量預(yù)測技術(shù)的使用,使其被應(yīng)用到更多的領(lǐng)域之中,這也使得它會被逐漸的完善,逐漸向前發(fā)展。軟件質(zhì)量測評常用的數(shù)據(jù)分析技術(shù)主要有以下幾點:一是建立在案例的推理(CBR)技術(shù),二是建立在數(shù)理統(tǒng)計的多元線性回歸和線性回歸技術(shù)以及建立在數(shù)據(jù)挖掘的人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANN)技術(shù)。但由于ANN 技術(shù)有著巨大的優(yōu)勢:能完美地展現(xiàn)出模型系數(shù)、更能夠展現(xiàn)非線性復(fù)雜關(guān)系,這也使它被廣泛運用,所以ANN 是本文介紹的一個重點。
我們對神經(jīng)網(wǎng)絡(luò)進行了簡單的定義;模仿我們?nèi)四X信息決策處理模式的比較高級的非傳統(tǒng)的智能型計算方式。提到人工神經(jīng)網(wǎng)絡(luò)就不得不說它的最大特性——非常強大的學習功能其,眾所周知,歷史數(shù)據(jù)與軟件度量有著千絲萬縷的關(guān)系,而進行度量模型的構(gòu)建的存在意義就是找到它們的隱形關(guān)系??梢赃@么說,解決質(zhì)量預(yù)測模型構(gòu)建問題,用神經(jīng)網(wǎng)絡(luò)再合適不過了。
神經(jīng)網(wǎng)絡(luò)最小的組成部分是神經(jīng)元,它負責接受外界傳來的信息并傳遞另外一個信息。而目前說介紹個大部分是固定輸出、多向輸出的模型,而輸入便運用軟件度量技術(shù)來獲取我們所需的構(gòu)建預(yù)測模型的質(zhì)量內(nèi)部屬性數(shù)據(jù),但是用戶通常更加注重輸出,而輸出又是一般度量手段不能直接獲得的質(zhì)量外部屬性。
上段提到神經(jīng)元是神經(jīng)網(wǎng)絡(luò)最小的組成部分,而神經(jīng)網(wǎng)絡(luò)則是由這些最小不能通過不同排列方式組合成的。但神經(jīng)網(wǎng)絡(luò)又各不相同,它們依據(jù)神經(jīng)元之間的各類關(guān)系大致可分為兩種類型:互聯(lián)網(wǎng)絡(luò)模型以及分層網(wǎng)絡(luò)模型。輸出端和輸入端是依據(jù)質(zhì)量預(yù)測模型建模的兩個重要特征,這時候我們需要運用分層模型來進行建立,它可再輸入層中加入樣本輸入,在中間層的作用下被輸送到輸出層。我們現(xiàn)在大部分是用的是一種叫多層感知機(Perception)的模型,它具有較強的學習功能,為了得到相應(yīng)的預(yù)輸出期值,它會調(diào)整和改變權(quán)值。而對于學習方式來說我們大致分為兩大方式:有教師學習以及無教師學習。將預(yù)計輸出作為教師信號的有教師學習可以靈活地平衡實力輸出和預(yù)期輸出,以此調(diào)整到合理的權(quán)值。而根據(jù)應(yīng)用特點,我們采用有教師的學習方法。這里介紹一個新概念:隱層,它是潛伏在多層網(wǎng)絡(luò)輸入層和輸出層之間的被增加地若干神經(jīng)元。而通過改變各陳之間的權(quán)值,可以使得輸出哥輸入的關(guān)系發(fā)生改變。
反向傳播算法是比較早提出的算法,這是著名學者Rmumelhart提出的,他的反向傳播算法為我們更好地處理多層網(wǎng)絡(luò)提供了方向。該書介紹,它地學習過程由兩部分組成:正向傳播以及反向傳播。正向傳播的定義是輸入信號從輸出層經(jīng)隱陳處理到達輸出層。而反向傳播則是期望值和輸入值不同一,這時誤差信號會原路返回,各層會依據(jù)上層傳播出來的誤差信號修改權(quán)重,以吃來達到最小的誤差。
當然,神經(jīng)網(wǎng)絡(luò)在當今的實現(xiàn)可以借助一些比較特別的方法,如數(shù)據(jù)包里的工具箱,像MathWorks 出品的MatLab,使用者這些工具能夠有很大的推力使得有關(guān)神經(jīng)網(wǎng)絡(luò)的基本功能得以實現(xiàn),同時我們也可以運用它的反向傳播網(wǎng)絡(luò)(BP 網(wǎng)絡(luò))進行訓(xùn)練模型。在進行訓(xùn)練模型時,我們要確定BP 網(wǎng)絡(luò)的基本要素(各陳神經(jīng)元的具體個數(shù)、網(wǎng)絡(luò)的具體層數(shù)、帶路輸出輸入的樣本數(shù)據(jù)等)
上段提到人工網(wǎng)絡(luò)是一種對信息的處理機制,是模擬人腦而形成的智能計算模式。追溯人工神經(jīng)網(wǎng)絡(luò)的應(yīng)用可以到上世紀九十年代。在那個時候,人工神經(jīng)網(wǎng)絡(luò)技術(shù)就被應(yīng)用在軟件質(zhì)量預(yù)測之中。經(jīng)過多年的發(fā)展,國外已經(jīng)比較成熟地掌握了人工神經(jīng)網(wǎng)絡(luò)的軟件質(zhì)量預(yù)測模型技術(shù),同時也得到了更好的應(yīng)用。但我國對于這方面的研究還比較得遲,所以成果還是不太明顯?,F(xiàn)如今,我國大體主攻人工神經(jīng)網(wǎng)在軟件質(zhì)量預(yù)測中的兩大方向:一是基于軟件錯誤報告,構(gòu)建軟件質(zhì)量預(yù)測模型。二是基于軟件質(zhì)量預(yù)測模型的軟件質(zhì)量預(yù)測模型技術(shù)。由于走勢比較明顯BP 神經(jīng)網(wǎng)絡(luò)被社會各界廣泛使用,但隨著社會發(fā)展傳統(tǒng)BP 神經(jīng)網(wǎng)絡(luò)的缺點也顯現(xiàn)出來,如學習的效率不高、收斂的速度不快、很容易陷入極小值等不足。所以它不能完全地輔助軟件的可靠性分析。但是人工神經(jīng)網(wǎng)絡(luò)的種類也更多,并不是只有BP一種,即使它用途很廣但這難逃被淘汰的事實。我們也可以運用向量的思維量化神經(jīng)網(wǎng)絡(luò)的軟件預(yù)測模型,這也是我們研究的一大重要方向。
綜上所述,軟件的質(zhì)量一定程度上牽制了系統(tǒng)的可靠性和維護性,如果能跨越這一限制,在產(chǎn)品開發(fā)的初始階段發(fā)現(xiàn)并判定軟件的質(zhì)量,就能夠在一定程度上采取合理的彌補措施。因為軟件質(zhì)量預(yù)測模型的準確性有待商榷,我們就對網(wǎng)絡(luò)軟件質(zhì)量預(yù)測模型在向量量化中進行了探討,展現(xiàn)出它獨特的優(yōu)越性,有較好的準確性及穩(wěn)定性。軟質(zhì)量預(yù)測技術(shù)的根本是軟件質(zhì)量度量技術(shù),軟件質(zhì)量度量技術(shù)為軟件開發(fā)過程和提高產(chǎn)品的質(zhì)量提供了一種量化測量的方法:而軟件質(zhì)量評測技術(shù)的關(guān)鍵是構(gòu)建出軟件質(zhì)量預(yù)測模型,而預(yù)測模型的建立需要科學有序地應(yīng)用數(shù)據(jù)分析技術(shù)并在度量的基本上進行。我們可以通過預(yù)測得到不能直接得到的質(zhì)量外部屬性,從而得到更高質(zhì)量的軟件。當今我們運用較多的是ANN 技術(shù),其獨特的優(yōu)越性(如能夠支持模型系數(shù)不確定的情況、能夠展現(xiàn)非線性關(guān)系)讓其得到了更多人的青睞。