被包括在軟件程序的開(kāi)始點(diǎn)和軟件程序的結(jié)束 點(diǎn)之間的路徑數(shù)量。將會(huì)領(lǐng)會(huì),這樣的重新分析可使用過(guò)濾器基于軟件程序的軟件開(kāi)發(fā)生 命周期期間所延續(xù)下來(lái)的各個(gè)進(jìn)程來(lái)執(zhí)行。
[0027] 軟件程序的風(fēng)險(xiǎn)可基于觀測(cè)到的相關(guān)模式(諸如以上所討論的)來(lái)確定。
[0028] 與用于執(zhí)行分析軟件程序的風(fēng)險(xiǎn)的常規(guī)技術(shù)相比,在此描述的示例性技術(shù)具有多 種益處。例如,各示例技術(shù)可能能夠通過(guò)分析來(lái)自各種(例如所有)相關(guān)組件的輸入來(lái)自 動(dòng)地將軟件程序中的缺陷鏈接到引入該缺陷的原始的源代碼改變,相關(guān)組件包括但不限于 缺陷追蹤工具(例如,Product Studio?、Visual Studio?團(tuán)隊(duì)服務(wù)器(VSTS)等)、源控制 系統(tǒng)(例如,Source D印〇?、VSTS等)以及軟件程序的二進(jìn)制碼和/或符號(hào)。這類技術(shù)可 連續(xù)地執(zhí)行,并且結(jié)果可被保持對(duì)之前的開(kāi)發(fā)周期中的任意一個(gè)可用。
[0029] 確定將缺陷引入軟件程序的代碼改變可促成對(duì)軟件程序的風(fēng)險(xiǎn)評(píng)估以及在軟件 程序的開(kāi)發(fā)期間的過(guò)程糾正。這一確定可促成將用于解決該缺陷的資源轉(zhuǎn)移到軟件程序的 正確組件和/或合適的工程團(tuán)隊(duì)。這一確定可促進(jìn)提供關(guān)于進(jìn)程的有效性的反饋供工程團(tuán) 隊(duì)采用。這一確定可促進(jìn)提供基于特定模式的缺陷的關(guān)于個(gè)人和他們的團(tuán)隊(duì)的反饋。使用 該示例技術(shù),對(duì)于軟件程序的質(zhì)量的進(jìn)行中的改進(jìn)可以相對(duì)更可預(yù)期。該示例技術(shù)可比傳 統(tǒng)技術(shù)更可縮放得多。
[0030] 圖1是根據(jù)一實(shí)施例的示例自動(dòng)風(fēng)險(xiǎn)分析系統(tǒng)100的框圖。一般來(lái)說(shuō),自動(dòng)風(fēng)險(xiǎn) 分析系統(tǒng)100操作來(lái)響應(yīng)于從用戶(例如,軟件工程師、應(yīng)用開(kāi)發(fā)者等)接收的請(qǐng)求(例如 超文本傳輸協(xié)議(HTTP)請(qǐng)求)向所述用戶提供信息。信息可包括文檔(例如網(wǎng)頁(yè)、圖像、 視頻文件等等)、可執(zhí)行程序的輸出、和/或任何其他合適類型的信息。根據(jù)本文所描述的 示例實(shí)施例,自動(dòng)風(fēng)險(xiǎn)分析系統(tǒng)100執(zhí)行對(duì)軟件的自動(dòng)風(fēng)險(xiǎn)分析。關(guān)于對(duì)軟件的自動(dòng)風(fēng)險(xiǎn) 分析的技術(shù)的細(xì)節(jié)在以下討論中提供。
[0031] 如圖1所示,自動(dòng)風(fēng)險(xiǎn)分析系統(tǒng)100包括多個(gè)用戶系統(tǒng)102A-102M、網(wǎng)絡(luò)104、以及 多個(gè)服務(wù)器106A-106N。用戶系統(tǒng)102A-102M與服務(wù)器106A-106N之間的通信是使用公知 的網(wǎng)絡(luò)通信協(xié)議通過(guò)網(wǎng)絡(luò)104實(shí)施的。網(wǎng)絡(luò)104可以是廣域網(wǎng)(如因特網(wǎng))、局域網(wǎng)(LAN)、 另一類型的網(wǎng)絡(luò)、或它們的組合。
[0032] 用戶系統(tǒng)102A-102M是能夠與服務(wù)器106A-106N通信的處理系統(tǒng)。處理系統(tǒng)的示 例是包括能夠根據(jù)指令集操縱數(shù)據(jù)的至少一個(gè)處理器的系統(tǒng)。例如,處理系統(tǒng)可以是計(jì)算 機(jī)、個(gè)人數(shù)字助理等。用戶系統(tǒng)102A-102M被配置成向服務(wù)器106A-106N提供用于請(qǐng)求存 儲(chǔ)在服務(wù)器106A-106N上(或可通過(guò)其他方式訪問(wèn)的)的信息的請(qǐng)求。例如,用戶可使用 用戶所擁有的或以其他方式用戶可訪問(wèn)的用戶系統(tǒng)102上部署的客戶端(如web瀏覽器、 web爬行器、或其他類型的客戶端)來(lái)發(fā)起執(zhí)行計(jì)算機(jī)程序的請(qǐng)求。根據(jù)一些示例實(shí)施例, 用戶系統(tǒng)102A-102M能夠訪問(wèn)由服務(wù)器104A-104N托管(host)的域(如網(wǎng)站),使得用戶 系統(tǒng)102A-102M可訪問(wèn)通過(guò)所述域可用的信息。這樣的域可包括網(wǎng)頁(yè),所述網(wǎng)頁(yè)可作為超 文本標(biāo)記語(yǔ)言(HTML)文檔和在其中被鏈接的對(duì)象(如文件)來(lái)提供。
[0033] 將認(rèn)識(shí)到,任何一個(gè)或多個(gè)用戶系統(tǒng)102A-102M都可與任何一個(gè)或多個(gè)服務(wù)器 106A-106N通信。盡管圖1中用戶系統(tǒng)102A-102M被描繪為臺(tái)式計(jì)算機(jī),但是相關(guān)領(lǐng)域的技 術(shù)人員將理解用戶系統(tǒng)102A-102M可包括任何啟用客戶端的系統(tǒng)或設(shè)備,包括但不限于臺(tái) 式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、個(gè)人數(shù)字助理、蜂窩電話等等。
[0034] 服務(wù)器106A-106N是能夠與用戶系統(tǒng)102A-102M通信的處理系統(tǒng)。服務(wù)器 106A-106N被配置成執(zhí)行響應(yīng)于從用戶接收到請(qǐng)求而向用戶提供信息的計(jì)算機(jī)程序。例如, 信息可包括文檔(如網(wǎng)頁(yè)、圖像、視頻文件等等)、可執(zhí)行程序的輸出、或任何其他合適類型 的信息。根據(jù)某些示例實(shí)施例,服務(wù)器106A-106N被配置成托管各個(gè)網(wǎng)站,使得網(wǎng)站可由自 動(dòng)風(fēng)險(xiǎn)分析系統(tǒng)100的用戶訪問(wèn)。
[0035] 可由一個(gè)或多個(gè)服務(wù)器106A-106N執(zhí)行的一種示例類型的計(jì)算機(jī)程序是 開(kāi)發(fā)者工具。開(kāi)發(fā)者工具是一種可執(zhí)行關(guān)于程序代碼的診斷操作(例如,標(biāo)識(shí)問(wèn) 題源、調(diào)試、剖析、控制等)的計(jì)算機(jī)程序。開(kāi)發(fā)者工具的示例包括但不限于:web 開(kāi)發(fā)平臺(tái)(例如,Windows Azure Platform?、Amazon Web Services?、Google App Engine?、V'MWare?、Force.com? ^ )以及集成開(kāi)發(fā)環(huán)境(例如,Microsoft Visual Studio?、,丨Developer?、NetBeans?、Eclipse Platform?等)。應(yīng)該意識(shí)到, 在此描述的示例技術(shù)可使用開(kāi)發(fā)者工具來(lái)實(shí)現(xiàn)。
[0036] 出于說(shuō)明性目的,第一服務(wù)器106A被示為包括自動(dòng)風(fēng)險(xiǎn)分析器108。自動(dòng)風(fēng)險(xiǎn)分 析器108被配置執(zhí)行對(duì)軟件的自動(dòng)風(fēng)險(xiǎn)分析。例如,可在軟件的開(kāi)發(fā)期間自動(dòng)對(duì)軟件執(zhí)行 這一風(fēng)險(xiǎn)分析。例如,自動(dòng)風(fēng)險(xiǎn)分析器108可確定軟件的二進(jìn)制碼和軟件的源文件之間、源 文件和軟件的函數(shù)(即子例程)之間、對(duì)軟件的源代碼的改變和軟件的缺陷之間、對(duì)源代碼 的改變和被添加到軟件的新特征之間、對(duì)源代碼的改變和對(duì)軟件的現(xiàn)有特征的增強(qiáng)之間、 在軟件的各屬性(例如,與對(duì)軟件代碼的改變相關(guān)聯(lián)的屬性)之間等的相關(guān)性。這樣的相 關(guān)性可在多個(gè)時(shí)間實(shí)例(例如,周期間隔)處被確定。
[0037] 自動(dòng)風(fēng)險(xiǎn)分析器108可將對(duì)應(yīng)于第一時(shí)間實(shí)例的相關(guān)性和對(duì)應(yīng)于第二時(shí)間實(shí)例 的相關(guān)性作比較來(lái)確定與底層因素有關(guān)的各種時(shí)間關(guān)系中的任意一種。底層因素的示例 包括但不限于軟件的新特征、軟件的現(xiàn)有特征的增強(qiáng)、軟件中的缺陷、軟件中的函數(shù)的攪動(dòng) 率、軟件的代碼覆蓋、軟件的代碼復(fù)雜度等。
[0038] 自動(dòng)風(fēng)險(xiǎn)分析器108可基于時(shí)間關(guān)系來(lái)確定軟件的風(fēng)險(xiǎn)。每個(gè)風(fēng)險(xiǎn)可指示底層因 素中的一個(gè)或多個(gè)將要干擾軟件的執(zhí)行的可能性。例如,每個(gè)風(fēng)險(xiǎn)可指示一個(gè)或多個(gè)底層 因素可能干擾執(zhí)行的程度。
[0039] 將會(huì)認(rèn)識(shí)到,自動(dòng)風(fēng)險(xiǎn)分析器108可以是開(kāi)發(fā)者工具(或可被包括在開(kāi)發(fā)者工具 中),盡管示例實(shí)施例的范圍在這一方面不受限制。用于執(zhí)行對(duì)軟件的自動(dòng)風(fēng)險(xiǎn)分析的示例 技術(shù)在以下結(jié)合圖2和3來(lái)更詳細(xì)地討論。
[0040] 自動(dòng)風(fēng)險(xiǎn)分析器108可以按各種方式被實(shí)現(xiàn)為執(zhí)行對(duì)軟件的自動(dòng)風(fēng)險(xiǎn)分析,包括 用硬件、軟件、固件或其組合來(lái)實(shí)現(xiàn)。例如,自動(dòng)風(fēng)險(xiǎn)分析器108可以被實(shí)現(xiàn)為被配置成在 一個(gè)或多個(gè)處理器中執(zhí)行的計(jì)算機(jī)程序代碼。在另一示例中,自動(dòng)風(fēng)險(xiǎn)分析器108可被實(shí) 現(xiàn)為硬件邏輯/電子電路。在一實(shí)施例中,自動(dòng)風(fēng)險(xiǎn)分析器108可被實(shí)現(xiàn)在片上系統(tǒng)(SoC) 中。每個(gè)SoC可包括集成電路芯片,該集成電路芯片包括以下一個(gè)或多個(gè):處理器(如微控 制器、微處理器、數(shù)字信號(hào)處理器(DSP)等等)、存儲(chǔ)器、一個(gè)或多個(gè)通信接口、和/或用于執(zhí) 行其功能的進(jìn)一步的電路和/或嵌入式固件。
[0041] 出于說(shuō)明的目的而不旨在為限制,自動(dòng)風(fēng)險(xiǎn)分析器108被示為容納在第一服務(wù)器 106A中。將會(huì)認(rèn)識(shí)到,自動(dòng)風(fēng)險(xiǎn)分析器108 (或其任一部分)可被并入任何一個(gè)或多個(gè)用戶 系統(tǒng)102A-102M中。例如,自動(dòng)風(fēng)險(xiǎn)分析器108的客戶端側(cè)方面可被并入一個(gè)或多個(gè)用戶 系統(tǒng)102A-102M中,而自動(dòng)風(fēng)險(xiǎn)分析器108的服務(wù)器側(cè)方面可被并入第一服務(wù)器106A中。 在另一示例中,自動(dòng)風(fēng)險(xiǎn)分析器108可被分布在用戶系統(tǒng)102A-102M中。在又一示例中,自 動(dòng)風(fēng)險(xiǎn)分析器108可被并入用戶系統(tǒng)102A-102M中的單個(gè)用戶系統(tǒng)中。在另一示例中,自 動(dòng)風(fēng)險(xiǎn)分析器108可被分布在服務(wù)器106A-106N中。在又一不例中,自動(dòng)風(fēng)險(xiǎn)分析器108 可被并入服務(wù)器106A-106N中的單個(gè)服務(wù)器中。
[0042] 圖2描繪了根據(jù)一實(shí)施例的用于執(zhí)行對(duì)軟件程序的自動(dòng)風(fēng)險(xiǎn)分析的示例方法200 的流程圖。流程圖200可由例如圖1中顯示的自動(dòng)風(fēng)險(xiǎn)分析器108來(lái)執(zhí)行。為了說(shuō)明的目 的,根據(jù)一實(shí)施例參考圖3中示出的自動(dòng)風(fēng)險(xiǎn)分析器300描述了流程圖200,自動(dòng)風(fēng)險(xiǎn)分析 器300是自動(dòng)風(fēng)險(xiǎn)分析器108的示例。如圖3中所示,自動(dòng)風(fēng)險(xiǎn)分析器300包括中間分析邏 輯302、時(shí)間分析邏輯304、風(fēng)險(xiǎn)確定邏輯306、報(bào)告邏輯308、SDLC邏輯324、屬性邏輯326、 源控制存儲(chǔ)328、軟件組件存儲(chǔ)330、以及缺陷存儲(chǔ)332。中間分析邏輯302包括更新確定邏 輯310、選擇邏輯312、相關(guān)邏輯314、缺陷映射邏輯316、屬性確定邏輯318、關(guān)系邏輯320、 以及屬性邏輯322?;谟嘘P(guān)流程圖200的討論,其他結(jié)構(gòu)及操作的實(shí)施例對(duì)于相關(guān)領(lǐng)域的 技術(shù)人員將是顯而易見(jiàn)的。
[0043] 如圖2所示,流程圖200的方法在步驟202處開(kāi)始。在步驟202、軟件程序的多個(gè) 源代碼文件與包括在軟件程序的經(jīng)編譯的表示中的二進(jìn)制碼相關(guān)以提供第一相關(guān)性。例 如,二進(jìn)制碼可指示軟件程序的版本。根據(jù)這一示例,多個(gè)源代碼文件可基于二進(jìn)制碼所指 示的軟件程序的版本來(lái)標(biāo)識(shí)。在一個(gè)示例實(shí)現(xiàn)中,源控制存儲(chǔ)328存儲(chǔ)軟件程序的源代碼 文件334,而軟件組件存儲(chǔ)330存儲(chǔ)軟件程序的二進(jìn)制碼336。根據(jù)這一實(shí)現(xiàn),相關(guān)邏輯314 將源代碼文件334與二進(jìn)制碼336相關(guān)以提供第一相關(guān)性,該第一相關(guān)性被包括在相關(guān)性 344 中。
[0044] 在步驟204,對(duì)于多個(gè)時(shí)間段中的每個(gè)時(shí)間段,在各個(gè)時(shí)間段期間發(fā)生的對(duì)于多個(gè) 源代碼文件中的源代碼文件的改變被基于第一相關(guān)性而映射到軟件程序的經(jīng)編譯的表示 中的缺陷以提供缺陷映