軟件系統網絡化建模、質量度量與保證
軟件開發活動中,質量問題層出不窮。例如軟件功能沒有滿足用戶的需求,軟件 不健壯,由于低可靠性而引起的經常性失效,交付有缺陷的軟件產品,需求不完整 亦或概念模糊等。多數情況下,軟件產品問題發生原因是質量監控人員沒有及時發 現問題并且修正,包括未對設計與需求進行評審或者評審方案不具備有效性,導致 開發過程中常常帶著問題進入下一階段的研發。因此需要花費更多的人力物力和時 間來糾正問題。因而,軟件質量保證是解決上述問題的有效手段之一。
經過長期的研究和實際案例分析,雖然現有軟件質量度量方法的有效性已經在 實踐中得到了檢驗,它們依然存在著許多不足之處,如傳統的方法側重于微觀層面 的統計,使得開發人員難以在較高層次分析和度量軟件體系結構的全局特性;現有 的質量模型企圖以單一模型廣泛地應用于軟件和信息系統的開發過程,但這與質量 本身的特征多樣性相背離;軟件質量模型設計的初衷沒有考慮其在軟件開發過程中 的應用場景,并未對軟件開發中的特定活動提供相應支持。因此開發出一個操作性 強,具有較高應用價值且能夠高效地發現質量隱患的模型仍是一個開發性的課題。本文圍繞著軟件質量模型構建、質量保證及質量改善開展工作,主要的研究內容包括:
(1) 針對現有的軟件質量模型均以靜態視角描述軟件某單一維度結構特征的局 限性,本文從多粒度、多類型依賴關系及多功能剖面等角度出發,提出了多維度軟 件網絡模型。并結合概率風險分析理論評估軟件設計的缺陷及軟件模塊的風險,借 助于多維度網絡模型將軟件系統映射為多功能剖面,使用故障樹模型分析不同功能 剖面上節點的組合失效因果鏈,給出了一種基于故障樹分析的可靠性度量方法。通 過實驗分析,驗證了上述方法可以有效檢測軟件高風險的關鍵節點,詮釋了軟件系 統拓撲結構因素與系統可靠性的相關性,可作為軟件設計早期階段確保軟件設計質 量的指導準則。
(2) 在軟件集成測試的場景之中,基于多維度軟件網絡模型,結合軟件風險分析 方法提出了一種兼顧測試成本與測試效率的集成測試序列生成算法。利用成本收益。分析方法,在生成測試用例的過程中保證兩條原則:一是為高風險的類賦予較高權 重,二是最小化測試樁復雜度。在此基礎上,我們從構造測試樁的成本和測試序列 對軟件系統運行風險的影響兩個方面,提出了評估測試序列優劣的度量方案及針對 集成測試序列合理分配測試資源的方法。通過與現有算法的實驗對比分析,證明了 所提出算法生成的類級集成測試序列,既能夠保證風險因子高的節點優先被測試, 又降低了構造測試樁的總復雜度,有效地降低了測試代價。
(3) 將本文提出的軟件質量模型應用于軟件回歸測試的場景之中,以保障軟件產 品質量。在多維度軟件網絡模型基礎上,結合可靠性度量方法提出了一種基于動態 反饋機制的自適應測試用例優先級排序技術。在計算測試用例優先級的過程中,利 用已經執行的測試用例對軟件可靠性變化信息進行動態反饋,以不斷更新系統的可 靠性數值,進而高效地定位到軟件缺陷,提高故障檢測效率。通過在不同的軟件系 統的實驗分析,驗證了所提出的自適應優先級排序技術具有較高的穩定性,尤其對 于嚴重故障具有較強的檢測能力,同時可以兼顧最大化軟件系統的可靠性。
(4) 為了從軟件體系結構的角度得到最佳的功能分布,基于多維度軟件網絡模型 提出了一種系統級別的自動化重構技術。將軟件系統映射成多依賴關系類型網絡和 方法級加權依賴網絡,借助于前者我們完成了重構預處理操作,借助于后者我們利 用加權聚類算法,根據“高內聚、低耦合”原則對系統的模塊進行重新劃分。為了移除 非繼承體系和繼承體系內部由內聚和耦合性引起的代碼壞味道,提出三種不同類型 的重構建議(包括搬移函數、搬移方法和提煉類重構的操作)。經過世界知名軟件公司 軟件質量評估專家的評估和驗證,證明了自動化重構算法的有效性。
多層圖分析技術研究
近年來,越來越多的領域都使用“圖”來表示和管理數據,稱為“圖數據”。針對 圖數據的分析可以發現其中的結構特征、頻繁模式、演變規律等有用的知識,具有 重要的科研意義和應用價值。隨著研究的深入,人們發現現實世界的圖數據往往 包含數據對象間多種類型的關系。例如,社交網絡數據包括多個社交媒體組成的 網絡;交通網絡數據涵蓋了多種交通工具組成的網絡。這種圖數據稱為“多層圖”, 其每一層包含了數據對象間某種特定類型的關系。
多層圖分析可以發現準確可靠、價值更高的知識。然而,多層圖分析面臨兩 方面的挑戰:一方面,單層圖上的計算語義在多層圖場景下不再適用,多層圖上 的計算語義更加復雜;另一方面,多層圖分析涉及多個圖層上的計算任務,使得 問題的固有計算復雜性大大增加。現有的多層圖分析方法在計算語義和算法設計 兩個方面都存在缺陷,不能很好的解決多層圖分析的有關問題。
本文綜合運用數據分析的相關理論、技術和方法,對于多層圖分析進行了系統研究。本文同時考慮了無概率的普通多層圖和帶概率的多層圖,從圖數據的稠 密性、可靠性、傳播性和相似性四方面重要性質出發,對多層圖分析領域中的一 系列重要問題進行了深入研究,主要研究成果如下:
本文研究了多層圖上的多樣化稠密區域發現問題,該問題在生物蛋白復合 體檢測和社區發現上具有重要應用。在無概率的普通多層圖模型基礎上,本文提 出了一種新的稠密區域概念 d-Coherent-Core(簡稱 d-CC),設計了兩種近似比為 1/4 的高效搜索算法來求解該 NP-難問題,算法在結果質量和執行時間兩個方面 均優于基于準團的傳統算法。d-CC 概念同時刻畫了稠密區域的稠密度和支持度兩 方面重要特性,滿足唯一性、包含性和層次性 3 個重要數學性質。自底向上和自 頂向下兩種搜索算法采用了高效的搜索策略和剪枝方法,分別適用于支持度參數 較小和較大兩種情況。真實數據上的實驗結果表明:自底向上和自頂向下兩種搜 索算法是高效、準確的。
本文研究了多層圖上的 top-k 可靠頂點搜索問題,該問題在通信網絡中具 有重要的研究意義,相比基于閾值的搜索問題自適應性更好。本文給出了一種圖 層帶概率的多層圖模型,提出了一種新的多層圖計算框架——共享計算,其可以 有效利用多層圖不同圖層間的重疊結構以減少搜索代價、提高算法效率。基于此,本文設計了求解 top-k 可靠頂點搜索問題的共享 BFS 精確算法和隨機算法。真實 數據上的實驗結果表明:共享 BFS 精確算法具有很高的效率和擴展性;共享 BFS 隨機算法具有很高的準確率。
本文研究了多層圖上的影響力最大化問題,該問題在病毒式營銷和輿情控 制中應用廣泛。為描述影響力最大化問題中的圖數據,本文給出了一種帶概率的 多層圖模型,其可以表示由于邊的不確定性而形成的多層圖。針對已有算法的缺 陷,本文設計了一種能夠同時達到高時間效率、高結果質量、低內存開銷和高健 壯性的影響力最大化算法,具有線性的時間和空間復雜度。該算法采用高質量的 分數估計方法和增量式的分數更新方法,在實際社交網絡中表現出良好的性能和 很高的擴展性。
本文研究了多層圖上 SimRank 頂點相似性測度問題,該問題是推薦系統、 實體識別等眾多應用的基礎。在帶概率的多層圖模型基礎上,本文嚴格給出了符 合其可能世界語義的 SimRank 相似性測度定義,設計了高效、準確的計算頂點間 SimRank 相似性的方法。同時,作為 SimRank 相似性測度的基礎,本文提出了多 層圖上隨機游走的定義,嚴格證明了這一定義滿足馬爾可夫性,設計了計算隨機 游走概率的高效算法。真實數據上的實驗結果表明:本文提出的 SimRank 算法是 高效、準確的;本文提出的 SimRank 測度比傳統測度在實際應用中效果更好。
基于軌跡分析的微服務故障定位
微服務架構通過一組獨立開發、獨立部署且通過應用程序編程接口(API) 相互通信的松耦合服務來實現軟件應用。由于其在并行開發、快速交付、靈活伸 縮等方面的優勢,微服務架構已經成為云原生應用的主流選擇。微服務系統運行 時環境具有高度的復雜性和動態性,且服務之間存在很多復雜的異步調用鏈,因 此微服務系統的故障分析和調試難以通過傳統方法來實現,從而成為企業微服務 開發面臨的一個重要挑戰。
微服務系統作為一種新的基于云的軟件系統形態,其軟件故障特點還缺少相 應的總結,同時也缺少公開的微服務系統(如開源項目)可供研究。為此,本文針對微服務系統開發實踐進行了一次工業調研,系統了解了工業界微服務系統的 特點,收集了一組典型微服務故障案例以及相應的故障分析與調試實踐方法,并 對實踐問題和挑戰進行了分析。在此基礎上,我們開發了一個中等規模的微服務 基準系統,重現了 22 個工業故障案例,并通過開源社區進行了發布。基于這一 開源微服務基準系統以及相應的故障案例,我們開展了一系列微服務故障輔助定 位方法和技術研究。
首先,我們對業界廣泛采用的基于微服務日志及執行軌跡可視化的故障定位 方法進行了研究。我們在分析和評估現有的工業界微服務調試實踐的基礎上,基 于已有的分布式可視化調試工具提出了多種微服務系統故障定位策略,構建了相 應的執行軌跡可視化分析工具并進行了實驗分析。結果表明,采用適當的執行軌 跡可視化工具和策略可以改善目前微服務調試的工業實踐,同時進一步的改進需 要數據驅動的智能化軌跡分析和可視化方法的支持。
其次,我們針對微服務系統在服務實例、環境配置、異步交互等方面存在復 雜故障因素組合,從而導致故障難以復現和定位的問題,提出了一種基于增量調 試算法的自動化微服務系統故障定位方法。該方法定義了多個維度的故障因素, 通過優化的故障因素組合搜索與試探執行高效地尋找導致一個給定故障的最小 故障因素集合,從而輔助開發人員進行故障定位。為此,我們還設計并實現了一 個系統基礎設施層,用于支持增量調試過程中的微服務系統按需部署和運行控制。實驗結果表明,該方法能夠有效地識別導致故障的最小故障因素集合,為故障根 源診斷提供有效支持,同時其優化執行策略使得該方法具有良好的執行效率和可 伸縮性。
最后,我們針對微服務系統生產環境中的故障發現和定位問題,提出了一種 基于執行軌跡日志機器學習的微服務潛在錯誤與故障根源預測方法 MEPFL。該方 法從執行軌跡日志(一種特殊的微服務系統日志)中提取微服務故障相關的一些。特征,基于這些特征并通過故障注入的方式構建微服務故障預測模型,對微服務 的潛在錯誤、故障位置(所在微服務)和故障類型進行預測。該方法將執行軌跡 和微服務兩個層次的模型相結合進行綜合預測,從而適應不同的情況。實驗結果 表明,MEPFL 在潛在錯誤、故障微服務和故障類型的預測方面具有較高的準確性, 并能有效地應用于工業界的真實故障案例。
搜索引擎中的實體推薦關鍵技術研究
搜索引擎是獲取信息的重要工具。近年來,為了更好地滿足用戶的信息獲取 需求,搜索引擎從最初只能被動地根據查詢返回相關網頁,逐步改進到能夠主動 地根據查詢提供相關信息推薦。實體推薦,即以實體為粒度進行信息推薦,是其 中推薦粒度最細且信息量最豐富的一種信息推薦形式。實體推薦旨在為用戶提供 與其查詢存在直接或間接關系的實體列表,能夠幫助用戶拓展知識面,因而越來 越受到用戶的歡迎。因此,實體推薦不僅成為現代搜索引擎必不可少的功能之一, 也正成為學術界重視的研究問題。
在搜索引擎實體推薦系統中,不僅需要為用戶提供與其查詢相關的實體推薦 結果,還需要對實體推薦結果進行恰當且合理的解釋以幫助用戶更好地理解推薦 結果。相應地,搜索引擎中的實體推薦研究主要包含以下兩個方面:(1)實體推薦算法,其目標是獲取與查詢相關的實體集合并對其進行排序;(2)實體推薦的可 解釋性,其目標是為實體推薦結果生成推薦理由,以提升推薦結果的可信度。針 對上述問題,本文研究了實體推薦算法的改進以及推薦理由的生成兩個方面的關 鍵技術,具體包括:(1)適用于搜索引擎的大規模實體推薦算法,以及基于上下文 優化實體推薦算法的具體策略;(2)實體對推薦理由的識別,以及實體推薦理由 的生成。本研究的主要內容包括以下幾個方面:
1. 基于排序學習與信息新穎性增強的實體推薦。構建適用于搜索引擎的大規 模實體推薦系統主要面臨以下 4 個挑戰:查詢與實體規模龐大、查詢的領域無關 性、用戶實體點擊數據極其稀疏以及很難為用戶推薦具有信息新穎性的實體。針 對上述挑戰,本文提出了一種基于排序學習框架的實體推薦算法,并圍繞信息新 穎性設計了相關特征與優化目標。一方面可以靈活地對召回與排序進行分階段優 化,另一方面可以直接基于查詢并面向信息新穎性構建多種粒度的排序特征,進 而能針對不同用戶偏好以及任何類型的查詢,為用戶提供個性化且兼具信息新穎 性的實體推薦結果,因此能夠大幅顯著提升實體推薦效果以及用戶參與度。
2. 基于深度多任務學習的上下文相關實體推薦。針對目前實體推薦方法普遍 忽略上下文信息以及上下文相關實體點擊數據存在數據稀疏問題,本文提出了一 種基于深度多任務學習的上下文相關實體推薦模型。一方面可以借助于上下文相 關文檔排序這一輔助任務中的大規模多任務交叉數據,另一方面可以基于多任務 學習來實現知識遷移,進而有效緩解數據稀疏問題并提升實體推薦結果的相關性,因此能夠顯著提升推薦效果。
3. 基于卷積神經網絡的實體對推薦理由識別。當推薦實體與查詢實體之間存 在確定的實體關系時,將能夠翔實地描述該實體對之間的關系的句子作為推薦理 由(簡稱為實體對推薦理由)展現給用戶,可以幫助用戶理解兩個實體間的關系, 從而提升推薦結果的可信度。目前的實體對推薦理由識別方法嚴重依賴于人工標 注的數據集以及人工設計的排序特征,從而導致識別出的實體對推薦理由的質量 較低。針對上述問題,本文提出了一種基于卷積神經網絡的實體對推薦理由識別 方法。一方面可以借助于搜索引擎點擊日志自動構建大規模訓練數據,另一方面 可以通過卷積神經網絡自動學習排序特征,進而顯著提升排序效果并帶來實體對 推薦理由質量的顯著提升。
4. 基于機器翻譯模型的實體推薦理由生成。當推薦實體與查詢之間不存在可 歸類的關系時,將能夠刻畫推薦實體特點的簡短描述作為推薦理由(簡稱為實體 推薦理由)展現給用戶,可以幫助用戶理清當前實體與查詢間的關聯,從而提升 推薦結果的可信度。然而,前人在實體推薦理由生成研究上鮮有涉獵。為此,本文 提出了基于機器翻譯模型的實體推薦理由生成方法,尤其是提出了一種由實體信 息指導的基于序列到序列學習的實體推薦理由生成模型。一方面可以有效識別并 保留源句子中的重要信息,另一方面可以指引模型生成與實體相關的結果,從而 能夠生成質量更高的實體推薦理由。
在應用方面,上述研究成果已在百度搜索引擎得到了大規模應用,取得了重 大的經濟效益和社會效益,并獲得了 2017 年中國電子學會科技進步一等獎。
數據稀疏和冷啟動是當前推薦系統面臨的兩大挑戰. 以知識圖譜為表現形式的附加信息能夠在某種程度上緩解數據稀疏和冷啟動帶來的負面影響, 進而提高推薦的準確度. 本文綜述了最近提出的應用知識圖譜的推薦方法和系統, 并依據知識圖譜來源與構建方法、推薦系統利用知識圖譜的方式, 提出了應用知識圖譜的推薦方法和系統的分類框架, 進一步分析了本領域的研究難點. 本文還給出了文獻中常用的數據集. 最后討論了未來有價值的研究方向.
//www.aas.net.cn/cn/article/doi/10.16383/j.aas.c200128
推薦系統推薦系統是一種向目標用戶建議可能感興趣物品的軟件工具. 隨著網絡與現實信息的爆炸式增長, 越來越多的在線服務商為用戶提供商品、音樂、電影等(以下統稱為物品)的推薦服務. 推薦系統能夠滿足用戶的個性化需求, 為在線服務商帶來巨大商業價值. 同時, 推薦方法與系統的研究促進了偏好挖掘、大數據處理、決策支持等領域的相關理論和實踐的飛速發展, 其學術價值也引起了廣泛的關注.
推薦系統面臨的重要挑戰主要是數據稀疏性問題和冷啟動問題. 數據稀疏問題指的是相對于數量龐大的用戶和物品, 僅有少量的物品獲得了用戶的評價或者購買, 難以據此獲得相似的用戶或相似的物品, 使得傳統推薦方法失效了. 冷啟動問題指的是系統由于并不知道新加入用戶的歷史行為, 無法給他們推薦物品, 同樣新加入的物品也由于沒有被用戶評價或購買過而無法被針對性的推薦.
推薦系統中通常利用附加信息來解決上述問題, 以提高性能. 附加信息(一般也稱上下文信息)分為顯式信息和隱式信息[1]. 顯式信息是通過諸如物理設備感知、用戶問詢、用戶主動設定等方式獲取的與用戶、物品相關聯的上下文信息. 隱式信息即利用已有數據或周圍環境間接獲取的一些上下文信息, 例如可根據用戶與系統的交互日志獲取時間上下文信息.
近年來, 利用以知識圖譜為表示形式的附加信息的推薦方法受到了學者們的關注. 知識圖譜最初用于提升搜索系統的性能[2], 刻畫了海量實體之間的多種關系, 具有網狀結構, 能夠用于推薦系統中來增強用戶、物品之間聯系的認知與解釋, 從而提高推薦準確度. 本文綜述了2015年~2019年發表在DLRS、RecSys、KDD、CIKM、NIPS、TIST、UMAP、SIGIR等會議和期刊中的利用知識圖譜的推薦方法的文獻, 共23篇. 在利用知識圖譜的推薦系統中, 通常首先將收集到的用戶信息、物品信息、在利用知識圖譜的推薦系統中, 通常首先將收集到的用戶信息、物品信息、用戶歷史行為等數據或者一些相關的外部數據表示成知識圖譜的形式. 然后, 設計推薦算法, 利用知識圖譜生成推薦. 此類推薦系統通常包含知識圖譜構建和利用知識圖譜產生推薦兩個環節. 本文根據這兩個環節中構建知識圖譜數據的不同來源, 以及推薦方法中利用知識圖譜信息的不同形式提出了分類框架, 并據此對相關文獻進行了分類綜述, 詳情請參看本文第三章. 與本文最為相關是文獻[3]. 該文獻綜述了2009年~2017年16篇利用知識圖譜的推薦方法的文獻. 本文在綜述的文章數量上超過了文獻[3]. 此外, 本文提出文獻分類框架能夠更好地覆蓋新提出的方法.
本文第一章介紹了利用知識圖譜的推薦方法的相關背景知識; 第二章對利用知識圖譜的推薦方法文獻進行分類與綜述; 第三章整理了目前常用的推薦系統數據集和知識圖譜數據集; 第四章、第五章分別討論了應用知識圖譜的推薦系統的研究難點與發展前景; 最后, 在第六章中對全文進行了總結.
隨著開放科學和開放資源的雙重運動將越來越多的科學過程帶入數字領域,科學本身的元科學研究(包括數據科學和統計)出現了新的機會。未來的科學很可能看到機器在處理、組織甚至創造科學知識方面發揮積極作用。為了使這成為可能,必須進行大量的工程努力來將科學工件轉化為有用的計算資源,并且必須在科學理論、模型、實驗和數據的組織方面取得概念上的進展。本論文的目標是將數據科學的兩大主要產物——統計模型和數據分析——數字化和系統化。使用來自代數的工具,特別是分類邏輯,在統計和邏輯的模型之間進行了精確的類比,使統計模型在邏輯意義上被視為理論的模型。統計理論,作為代數結構,服從機器表示,并配備了形式化不同統計方法之間的關系的形態。從數學轉向工程,設計和實現了一個軟件系統,用于以Python或R程序的形式創建數據分析的機器表示。表示的目的是捕獲數據分析的語義,獨立于實現它們的編程語言和庫。