軟件的自動風險分析的制作方法
【專利說明】軟件的自動風險分析
[0001] 背景
[0002] 軟件的測試通常是與軟件的開發(fā)同時進行的,以便改善軟件在軟件的生命周期的 相對前期的質(zhì)量。然而,軟件中的缺陷普遍在缺陷被引入軟件的開發(fā)周期之后進行的開發(fā) 周期中被發(fā)現(xiàn)。在這種情況下,標識和分析缺陷可能相對具有挑戰(zhàn)性。
[0003] 隨著軟件開發(fā)從一個周期進展到另一周期,追蹤缺陷到特定的開發(fā)周期允許對在 特定周期中開發(fā)的軟件中的特征的質(zhì)量的評估和理解。不能這樣做的困難之一是可能引入 各種問題中的任意一種。例如,當導致缺陷的具體的軟件代碼改變未知時,風險評估和過程 糾正可能變得相對困難。將用于解決該缺陷的資源轉(zhuǎn)移到軟件的正確組件和/或合適的工 程團隊可能變得相對困難。被采用供工程團隊使用的對于進程的有效性的反饋可能變得相 對有限。基于特定模式的缺陷的對于個人和他們的團隊的反饋可能變得相對有限。對于 軟件質(zhì)量的進行中的改善可能變得不切實際,因為如果引起缺陷的具體代碼改變是未知的 話,則對于現(xiàn)有缺陷的根本原因分析效果變得不太有效。
[0004] 已進行了各種嘗試來手動地解決這些問題。例如,諸如Visual Studio?團隊服 務器(VSTS)或者Product Studio?之類的追蹤工具依賴于缺陷尋找者將缺陷鏈接到軟件 特征或軟件開發(fā)周期的有效性。提交缺陷的人通常將附加信息與該缺陷相關(guān)聯(lián),從而將缺 陷鏈接到之前發(fā)布的特征和/或之前的開發(fā)周期。使用這一信息,選擇性的缺陷通常按分 類來分析或單獨的實踐來分析,以創(chuàng)建對于鏈接到過去的開發(fā)周期的缺陷的手動報告。然 而,找到缺陷的人可能不是在軟件的開發(fā)周期期間測試該軟件特征的人。如果找到缺陷的 人不具有以上提及的信息,則這人可能不能準確地將缺陷鏈接到產(chǎn)品特征。此外,這樣的手 動技術(shù)傳統(tǒng)來說是不可縮放的,這可能導致這類技術(shù)相對不太有效。
[0005] 概述
[0006] 在此描述了用于執(zhí)行對軟件的自動風險分析等的各種方法。例如,可在軟件的開 發(fā)期間自動對軟件執(zhí)行這一風險分析。風險分析的目的是確定軟件程序的風險。風險是能 夠?qū)浖绦虻膱?zhí)行帶來負面影響的因素。
[0007] 描述了示例方法。根據(jù)這一方法、軟件程序的多個源代碼文件與包括在軟件程序 的經(jīng)編譯的表示中的二進制碼相關(guān)以提供第一相關(guān)性。對于多個時間段中的每個時間段, 在各個時間段期間發(fā)生的對于多個源代碼文件中的源代碼文件的改變被基于第一相關(guān)性 而映射到軟件程序的經(jīng)編譯的表示中的缺陷以提供缺陷映射。確定軟件程序的屬性。屬性 至少包括代碼覆蓋和/或代碼復雜度。對于每個時間段,確定該時間段的缺陷映射和屬性 之間的中間關(guān)系。對應于第一時間段的中間關(guān)系被相關(guān)于對應于第二時間段的中間關(guān)系以 提供時間關(guān)系。多個因素的各個子集將干擾軟件程序的執(zhí)行的可能性基于該時間關(guān)系來確 定。
[0008] 描述了一種示例系統(tǒng),該系統(tǒng)包括相關(guān)邏輯、缺陷映射邏輯、屬性確定邏輯、關(guān)系 邏輯、時間分析邏輯、以及風險分析邏輯。相關(guān)邏輯被配置成將軟件程序的多個源代碼文件 與包括在軟件程序的經(jīng)編譯的表示中的二進制碼相關(guān)以提供第一相關(guān)性。缺陷映射邏輯被 配置成對于多個時間段中的每個時間段,基于第一相關(guān)性將在各個時間段期間發(fā)生的對于 多個源代碼文件中的源代碼文件的改變映射到軟件程序的經(jīng)編譯的表示中的缺陷以提供 缺陷映射。屬性確定邏輯被配置成確定軟件程序的屬性,屬性至少包括代碼覆蓋和/或代 碼復雜度。關(guān)系邏輯被配置成對于每個時間段,確定該時間段的缺陷映射和屬性之間的中 間關(guān)系。時間分析邏輯被配置成將對應于第一時間段的中間關(guān)系與對應于第二時間段的中 間關(guān)系相關(guān)以提供時間關(guān)系。風險確定邏輯被配置成基于時間關(guān)系來確定多個因素的各個 子集將干擾軟件程序的執(zhí)行的可能性。
[0009] 描述了一種包括計算機可讀介質(zhì)的計算機程序產(chǎn)品,所述計算機可讀介質(zhì)具有記 錄于其上的計算機程序邏輯,所述計算機程序邏輯用于使得基于處理器的系統(tǒng)能夠執(zhí)行對 軟件程序的自動風險分析。計算機程序產(chǎn)品包括第一程序邏輯模塊、第二程序邏輯模塊、第 三程序邏輯模塊、第四程序邏輯模塊、第五程序邏輯模塊、以及第六程序邏輯模塊、。第一程 序邏輯模塊用于使得基于處理器的系統(tǒng)能夠?qū)④浖绦虻亩鄠€源代碼文件與包括在軟件 程序的經(jīng)編譯的表示中的二進制碼相關(guān)以提供第一相關(guān)性。第二程序邏輯模塊用于使得基 于處理器的系統(tǒng)能夠?qū)τ诙鄠€時間段中的每個時間段,基于第一相關(guān)性將在各個時間段期 間發(fā)生的對于多個源代碼文件中的源代碼文件的改變映射到軟件程序的經(jīng)編譯的表示中 的缺陷以提供缺陷映射。第三程序邏輯模塊用于使得基于處理器的系統(tǒng)能夠確定軟件程序 的屬性,屬性至少包括代碼覆蓋和/或代碼復雜度。第四程序邏輯模塊用于使得基于處理 器的系統(tǒng)能夠?qū)τ诿總€時間段,確定該時間段的缺陷映射和屬性之間的中間關(guān)系。第五程 序邏輯模塊用于使得基于處理器的系統(tǒng)能夠?qū)诘谝粫r間段的中間關(guān)系與對應于第 二時間段的中間關(guān)系相關(guān)以提供時間關(guān)系。第六程序邏輯模塊用于使得基于處理器的系統(tǒng) 能夠基于時間關(guān)系來確定多個因素的各個子集將干擾軟件程序的執(zhí)行的可能性。
[0010] 提供概述以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念的選 集。本
【發(fā)明內(nèi)容】
并不旨在標識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制 所要求保護主題的范圍。此外,注意到本發(fā)明不限于在詳細描述和/或本文的其它章節(jié)中 所述的特定實施例。本文呈現(xiàn)這些實施例僅用于說明性的用途?;诒疚乃拿枋?, 其它實施例對于相關(guān)領(lǐng)域的技術(shù)人員將是顯而易見的。
[0011] 附圖簡述
[0012] 本文結(jié)合的并且組成本說明書的一部分的附圖示出了本發(fā)明的各實施例,并且還 與本描述一起用于解釋所涉及的原理以及使相關(guān)領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)和使用所公開 的技術(shù)。
[0013] 圖1是根據(jù)一實施例的示例自動風險分析系統(tǒng)的框圖。
[0014] 圖2描繪了根據(jù)一實施例的用于執(zhí)行對軟件程序的自動風險分析的示例方法的 流程圖。
[0015] 圖3是根據(jù)一實施例的自動風險分析器的示例實現(xiàn)的框圖。
[0016] 圖4描繪了其中可實現(xiàn)各實施例的示例計算機。
[0017] 通過下面的結(jié)合附圖對本發(fā)明進行的詳細說明,所公開的技術(shù)的特點和優(yōu)點將變 得更加顯而易見,在附圖中,類似的附圖標記在整個說明書中標識對應的元素。在附圖中, 相同的參考標號一般指相同的、功能上相似的和/或結(jié)構(gòu)上相似的元素。其中元素第一次 出現(xiàn)的附圖由對應的參考標號中最左側(cè)的數(shù)字指示。
[0018] 詳細描述
[0019] I.序言
[0020] 以下詳細描述參考示出本發(fā)明的示例性實施例的附圖。但是,本發(fā)明的范圍不限 于這些實施例,而是由所附權(quán)利要求書定義。因此,諸如所示實施例的修改版本之類的在附 圖所示之外的實施例仍然由本發(fā)明所包含。
[0021] 本說明書中對"一個實施例"、"實施例"、"示例實施例"等的引用指的是所述實施 例可包括特定的特征、結(jié)構(gòu)或特點,但是每一實施例不一定包括該特定的特征、結(jié)構(gòu)或特 點。此外,這些短語不一定指相同的實施例。此外,當結(jié)合實施例描述具體特征、結(jié)構(gòu)或特性 時,應當理解在相關(guān)領(lǐng)域的技術(shù)人員的知識范圍內(nèi)能夠結(jié)合其他實施例來實現(xiàn)具體特征、 結(jié)構(gòu)或特性,無論是否被顯式地描述。
[0022] II.示例實施例
[0023] 本文描述的示例實施例能夠執(zhí)行對軟件程序的自動風險分析。例如,可在軟件程 序的開發(fā)期間自動對軟件程序執(zhí)行這一風險分析。風險分析的目的是確定軟件程序的風 險。風險是能夠?qū)浖绦虻膱?zhí)行帶來負面影響的因素。風險分析涉及多個操作,所有的 操作可并行執(zhí)行,所有的操作可依次執(zhí)行,或者一些操作可并行執(zhí)行而另一些可依次執(zhí)行。
[0024] 對于測試中的軟件程序,可分析軟件程序的二進制碼和軟件程序的每一個子例程 (又稱函數(shù))的符號。軟件程序的二進制碼是軟件程序的經(jīng)編譯的表示的組件。二進制碼 可與軟件程序的源代碼文件相關(guān)。源代碼文件可與軟件程序的函數(shù)相關(guān)。
[0025] 對于對軟件程序的源代碼作出的任何改變,該改變可被分析并與由該改變導致的 缺陷的列表相關(guān)??删S護具體的源代碼改變和具體的缺陷之間的映射。術(shù)語"相關(guān)"和"映 射"在此被互換地使用。如果對源代碼的改變與軟件程序的新功能和/或軟件程序的現(xiàn)有 特征的增強有關(guān),則該改變可被分析并與該改變所導致的增強和/或增加的列表相關(guān)。可 維護具體的源代碼改變和具體的增強和/或增加之間的映射??蓪υ创a作出的改變分 析屬性,屬性包括但不限于作出該改變的開發(fā)者、作出該改變的日期和/或時間等。在一段 時間上,以上提及的相關(guān)可被迭代地改善。軟件程序的各個屬性(例如質(zhì)量度量)之間的 關(guān)系可使用此處描述的相關(guān)中的任意一個來進行相關(guān)和/或通過將相關(guān)與其它屬性映射 來進行相關(guān)。
[0026] 在兩個時間段之間,可使用以上提及的相關(guān)性中的任意一個通過每個其它改變來 重新分析對源代碼的每個改變,以收集與各種相關(guān)性中的任意一個有關(guān)的信息,信息包括 但不限于,代碼增強與代碼缺陷的相關(guān)性(例如,增強"abc"導致九個缺陷)、代碼缺陷與代 碼缺陷的相關(guān)性(例如,修補缺陷"xyz"致使或引入十一個其它缺陷)、代碼缺陷與代碼攪 動的相關(guān)性(例如從代碼攪動的角度來說在特定時間修補缺陷"xyz"過于冒險)、代碼覆蓋 與代碼缺陷的相關(guān)性、代碼覆蓋與代碼增強的相關(guān)性、代碼復雜度與代碼缺陷的相關(guān)性、代 碼復雜度與代碼增強的相關(guān)性等等。如此處所使用的"代碼攪動"(也稱攪動率)指示軟件 程序中的函數(shù)在指定的時間段期間被改變的次數(shù)。"代碼覆蓋"指示由一個或多個軟件測試 所測試的軟件程序的量。"代碼復雜度"指示