本發(fā)明涉及軟件工程領(lǐng)域,特別涉及一種基于統(tǒng)計模型的軟件復用度分析方法。
背景技術(shù):
1、隨著汽車產(chǎn)業(yè)的高速發(fā)展,“軟件定義汽車”已被視為推動汽車產(chǎn)業(yè)向智能化、網(wǎng)聯(lián)化轉(zhuǎn)型的關(guān)鍵力量。對于整車企業(yè)及相關(guān)供應鏈來說,軟件的研發(fā)成本、運行效率、安全要求等也在迅速提升,以應對越來越激烈的市場競爭。在這個背景下,汽車軟件的規(guī)模和復雜性都在急速攀升,相應在汽車軟件的質(zhì)量上也必然面臨巨大的挑戰(zhàn)。
2、影響軟件質(zhì)量的因素有很多,其中軟件復用與軟件質(zhì)量就存在密切的關(guān)系。軟件復用是指在軟件開發(fā)過程中,利用已開發(fā)完成的、經(jīng)過充分驗證的軟件組件或模塊來構(gòu)建新的軟件系統(tǒng),以提高開發(fā)效率和軟件質(zhì)量。通過軟件復用,可以縮減軟件開發(fā)和維護的花費,是提高軟件生產(chǎn)力和質(zhì)量的一種重要技術(shù)??蓮陀玫能浖啾炔荒軓陀玫能浖懈嗟馁|(zhì)量保障,因為復用程度的提高意味著效能的提高,也意味著被復用結(jié)構(gòu)體的影響范圍擴大,對其代碼質(zhì)量要求也會提升。
3、因此,無論從成本還是質(zhì)量方面考慮,軟件復用在高速發(fā)展的汽車電子領(lǐng)域,無疑都是極其重要的組成部分。但是,想要讓軟件復用在項目實踐中取得真正的成效,切實可靠地提升開發(fā)效率和軟件質(zhì)量,還是非常困難的。尤其是在“軟件模塊復用于目標項目的質(zhì)量預測”(后文簡稱為“軟件復用度”)分析方面,業(yè)內(nèi)尚處于探索階段。
4、近年來,隨著人工智能領(lǐng)域的快速發(fā)展,關(guān)于人工神經(jīng)網(wǎng)絡(luò)技術(shù)的研究和應用也在不斷發(fā)展,依靠bp等神經(jīng)網(wǎng)絡(luò)讓軟件質(zhì)量的預測成為可能,但對該領(lǐng)域的研究形成阻力的挑戰(zhàn)仍有很多,其中最重要的一點,就是軟件模塊與實際項目軟件質(zhì)量的關(guān)聯(lián)數(shù)據(jù)統(tǒng)計模型(后文簡稱為“復用統(tǒng)計模型”)設(shè)計。缺少了足夠全面、可靠、可分析的復用統(tǒng)計模型,對軟件復用度的分析也就成了無根之木。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的是克服現(xiàn)有技術(shù)缺陷,提供一種基于統(tǒng)計模型的軟件復用度分析方法,根據(jù)整車電子架構(gòu)尤其是智能駕艙、智能網(wǎng)聯(lián)產(chǎn)品的特點,設(shè)計適用、可靠的復用統(tǒng)計模型基本結(jié)構(gòu);在企業(yè)it系統(tǒng)及gerrit的支持下,設(shè)計相應的自動化數(shù)據(jù)管理程序,解決復用統(tǒng)計模型數(shù)據(jù)來源,以及相關(guān)自動化采集、存儲、管理問題,保證快速及有效地生成所需的數(shù)據(jù)矢量;最后,基于上述過程獲得目標的復用統(tǒng)計模型數(shù)據(jù)矢量集,完成對應預測模型的訓練,并使用預測模型完成對軟件復用度的分析。
2、本發(fā)明的目的是這樣實現(xiàn)的:一種基于統(tǒng)計模型的軟件復用度分析方法,包括以下步驟:
3、1)設(shè)計適用于智能駕艙、智能網(wǎng)聯(lián)系列產(chǎn)品項目的復用統(tǒng)計模型;
4、2)在企業(yè)it系統(tǒng)及gerrit中設(shè)計并植入自動化數(shù)據(jù)管理程序,統(tǒng)計gerrit內(nèi)項目履歷數(shù)據(jù);
5、3)通過bp神經(jīng)網(wǎng)絡(luò)訓練預測模型,通過預測模型實現(xiàn)軟件復用度分析。
6、進一步的,所述步驟1)具體包括:根據(jù)項目經(jīng)驗和項目歷史數(shù)據(jù),確定復用統(tǒng)計模型中的核心元素數(shù)據(jù);通過自動化工具采集和項目信息采集這兩種手段對八種核心元素數(shù)據(jù)進行采集,所述自動化工具采集是通過工具自動實施,對五種核心元素數(shù)據(jù)以“模塊”為單位進行采集;所述項目信息采集是手動實施,對于三種核心元素數(shù)據(jù)以“項目”為單位進行采集;
7、進一步的,所述五種核心元素數(shù)據(jù)包括模塊復用程度、模塊代碼變更行數(shù)、模塊代碼變更周期、模塊代碼故障率和模塊流程完成度;所述三種核心元素包括產(chǎn)品項目類型、軟件需求變更程度和軟件架構(gòu)變更程度。
8、進一步的,所述步驟2)具體包括:通過gerrit?query和python設(shè)計數(shù)據(jù)管理程序;用戶輸入表征項目的選項參數(shù)和固定格式的時間參數(shù),通過python腳本傳遞參數(shù),gerritquery命令獲取相關(guān)參數(shù)執(zhí)行命令行查詢gerrit數(shù)據(jù)庫,返回json格式數(shù)據(jù){x},python腳本處理json數(shù)據(jù),按照模板格式導出excel數(shù)據(jù)表。
9、進一步的,所述gerrit?query命令是以changes數(shù)據(jù)庫中updated的時間tupdated為查詢標準,gerrit?changes數(shù)據(jù)庫會記錄gerrit頁面內(nèi)對提交內(nèi)容的所有操作,并記錄頁面操作時間;當gerrit頁面對單筆提交進行merge操作,即submit入庫,gerrit?changes數(shù)據(jù)庫會以“change?has?been?successfully?merged”典型字符,即mmerged標識merge操作,并記錄操作時間mtime;通過提取數(shù)據(jù)庫內(nèi)的mtime,若mtime∈[sincetime,beforetime],則該單筆merged態(tài)數(shù)據(jù)為有效數(shù)據(jù)。
10、進一步的,所述步驟3)具體包括:
11、3-1)對復用統(tǒng)計元素進行權(quán)重計算,將各個復用統(tǒng)計元素的評價等級按照要求進行劃分,對由不同樣本計算的各平均值或方差進行檢驗,并將完成一致性檢驗的數(shù)據(jù)進行歸一化處理;
12、3-2)復用預測模型的建立:對數(shù)據(jù)模糊化處理,將軟件復用度分為較高、高、中等、低、較低這五種類型;對復用度指標體系的準則層使用模糊綜合評價進行歸一化處理后,通過建立自我學習的數(shù)據(jù)樣本,將模糊化后的樣本數(shù)據(jù)輸入bp神經(jīng)網(wǎng)絡(luò);利用bp神經(jīng)網(wǎng)絡(luò)建立自主學習模型來進行數(shù)據(jù)訓練。
13、進一步的,所述步驟3-1)具體包括:
14、首先將各個復用統(tǒng)計元素的評價等級按照下表進行劃分:
15、 等級 定義 1 x與y同樣重要 3 x比y稍微重要 5 x比y重要 7 x比y重要得多 9 x比y絕對重要 2、4、6、8 介于以上判斷中間
16、評價人員通過對各指標的互相比對,從而得到準則層的判斷矩陣a;
17、
18、其中,n是指標體系中準則層的指標個數(shù),aij是兩個指標之間相互比較得出的重要等級,同理準則層,方案層的判斷矩陣也能通過該計算獲??;
19、計算出所有判斷矩陣的最大特征值和相應的特征向量,然后對所得的每個判斷矩陣都需要進行一致性檢測;
20、通過公式計算得出一致性對比率的結(jié)果cr,從而對矩陣的一致性進行檢驗;其中,λmax是最大特征值,n是矩陣維數(shù),ci為一致性指標,ri是平均隨機一致性指標,ri指標的取值范圍下表所示:
21、 n 1 2 3 4 5 6 7 r1 0 0 0.58 0.89 1.12 1.24 1.32
22、如果cr<0.1即通過一致性檢驗的要求,反之即需要重新構(gòu)造新的判斷矩陣來滿足一致性檢驗;
23、歸一化處理:將數(shù)據(jù)轉(zhuǎn)換為0到1之間的小數(shù),根據(jù)上述復用性評價體系的層次順序,依次從最底層到最高層,根據(jù)判斷矩陣計算出每一層的最大特征值,然后再進行一致性檢驗,通過檢驗后再對其進行歸一化處理得出各層級的權(quán)重系數(shù)。
24、進一步的,步驟3-2)中所述對數(shù)據(jù)模糊化處理具體包括:
25、建立模糊集合:根據(jù)軟件復用度的影響因素建立可復用度評價指標集u={u1,u2,…,un}和指標的評價集v={v1,v2,…,vm};
26、建立隸屬度矩陣:如果有a位專家對指標集u={u1,u2,…,un}進行綜合評價,其中有b名專家對ui,i=1,2,…n給出的評價等級都為vi,則認定它的隸屬度為其中i,j分別指代的就是矩陣的元素定位,i取值范圍是1-n,j取值范圍是1-m,所以隸屬矩陣
27、建立權(quán)重集合:通過構(gòu)建的軟件復用度的各層級逐一分析再進行歸一化處理計算得出的權(quán)重系數(shù)來建立權(quán)重集合w={ω1,ω2,…,ωm};
28、計算綜合隸屬度向量:通過公式計算得出綜合隸屬度向量,其中ωj代表權(quán)重集合w中對應的第j位集合元素,代入公式進行計算,以此作為bp神經(jīng)網(wǎng)絡(luò)的輸入層數(shù)據(jù)。
29、進一步的,步驟3-2)中所述bp神經(jīng)網(wǎng)絡(luò)包括:輸入層、隱藏層和輸出層;將復用度指標計算出來的權(quán)重輸入進輸入層,然后經(jīng)前向傳播到隱含層,經(jīng)過數(shù)據(jù)處理后再傳遞進入輸出層。
30、進一步的,步驟3-2)中所述利用bp神經(jīng)網(wǎng)絡(luò)建立自主學習模型來進行數(shù)據(jù)訓練具體包括:選取函數(shù)作為激活函數(shù),依據(jù)軟件復用度評價指標的方案層,將x1、x2、…、xn作為輸入層神經(jīng)元,然后調(diào)節(jié)各輸入量所占比重的權(quán)值,選擇最方便的線性加權(quán)求和的方式得到神經(jīng)元凈輸入然后將net代入sigmoid激活函數(shù)中得到第j個神經(jīng)元的激活函數(shù)為其中θj為閾值,不斷修改各神經(jīng)元的權(quán)重找到最佳激活函數(shù);
31、通過kolmogorov定理來計算隱含層的神經(jīng)元個數(shù),其中m是輸入層神經(jīng)元個數(shù),n為輸出層神經(jīng)元個數(shù),α為1-10之間的常數(shù);訓練過程中采用梯度下降訓練函數(shù)沿著參數(shù)負梯度方向不斷調(diào)整神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,通過多次數(shù)據(jù)訓練,從而獲得最佳收斂網(wǎng)絡(luò)進行預測。
32、本發(fā)明采用以上技術(shù)方案,與現(xiàn)有技術(shù)相比,有益效果為:(1)設(shè)計了更適用于智能駕艙、智能網(wǎng)聯(lián)系列產(chǎn)品項目的復用統(tǒng)計模型,讓軟件模塊在復用過程中的可行性、質(zhì)量、成本等因素有了頗具參考價值的評估方法;
33、(2)在企業(yè)it系統(tǒng)及gerrit中,設(shè)計相應的自動化數(shù)據(jù)管理程序,解決復用統(tǒng)計模型數(shù)據(jù)來源,以及相關(guān)自動化采集、存儲、管理問題,保證快速及有效地生成所需的數(shù)據(jù)矢量;用于解決數(shù)據(jù)來源的即時性、可靠性等管理問題。
34、(3)基于上述過程獲得目標的復用統(tǒng)計模型數(shù)據(jù)矢量集,完成對應預測模型的訓練,并使用預測模型完成對軟件復用度的分析,為汽車軟件研發(fā)團隊對軟件模塊的選用、迭代、甚至重構(gòu)等工作提供有價值的指導意見。