《度量驅動的軟體重構技術研究》是依託南京大學,由陳林擔任項目負責人的青年科學基金項目。
基本介紹
- 中文名:度量驅動的軟體重構技術研究
- 項目類別:青年科學基金項目
- 項目負責人:陳林
- 依託單位:南京大學
項目摘要,結題摘要,
項目摘要
重構是推進軟體演化,改善軟體內部結構,提高軟體質量的重要手段。儘管人們已經提出了多種支持重構的方法,然而現有研究表明,自動化重構方法的研究仍很欠缺。主要問題在於:現有方法大多數圍繞少量的特定重構,通過手工選定重構種類,然後自動或半自動實施重構。對於重構的選定和效果評價,主要依靠經驗。對於實施重構的前因後果,少見有定性或者定量的分析。所謂前因,即為什麼要重構,如何識別可重構代碼;所謂後果,即如何分析重構的影響,如何評判、追蹤和控制重構後代碼質量。本課題在軟體度量技術和依賴性分析基礎上研究重構,以期支持持續的軟體演化。為此,我們主要進行以下方面研究:(1)支持重構的軟體度量技術研究,研究度量與重構的關聯關係;(2)基於度量結果的軟體重構技術研究;(3)基於依賴分析技術的重構影響及正確性分析;(4)大規模開源軟體實證研究和重構工具研發。
結題摘要
重構是推進軟體演化,改善軟體內部結構,提高軟體質量的重要手段。儘管人們已經提出了多種支持重構的方法,然而現有研究表明,自動化重構方法的研究仍很欠缺。主要問題在於:現有方法大多數圍繞少量的特定重構,通過手工選定重構種類,然後自動或半自動實施重構。對於重構的選定和效果評價,主要依靠經驗。本課題在軟體度量技術和依賴性分析基礎上研究重構,深入研究了實施重構的“前因後果”,即為什麼要重構,如何識別可重構代碼,以及如何評判、追蹤和控制重構後代碼質量。以期支持持續的軟體演化,主要取得了以下方面研究成果: (1) 支持重構的軟體度量技術研究,研究度量與重構的關聯關係。 深入研究了軟體的結構化度量與複雜性度量,重點研究了內聚性與耦合性度量。通過實驗驗證了面向對象軟體結構化度量與單元可測試性、可重構代碼檢測之間的聯繫。該研究證實了軟體規模、複雜性與耦合性度量對單元測試工作量以及可重構代碼檢測的導向性作用。 (2) 基於度量結果的軟體重構技術研究。 提出了一種基於複雜網路劃分的待重構代碼識別方法,將社區網路中的社團識別方法用於原始碼分析中,發現同樣可以在原始碼中發現社團。將原始碼中的方法及方法間依賴抽取出來,構建了方法依賴圖,然後在依賴圖上利用社團識別方法,通過與設計良好的軟體對比,發現所識別的社團結構與原有的類(包)設計非常相似。 (3) 基於依賴分析技術的重構影響及正確性分析。 分別研究了兩種重構正確性分析方法:面向重構的測試方法與基於依賴性影響分析的重構錯誤檢測方法。提出了一種有限資源約束下的測試用例優先權方法,不僅考慮了組合權重,也考慮了測試資源的消耗,提出了一種新的組合測試優先權度量模型,並給出了該度量模型的物理意義。探索了在W e b 服務組合中, 用戶需求改變導致服務組合需要重構的情況,提出了一種用戶需求驅動的測試方法。 (4)大規模開源軟體實證研究和重構工具研發。 我們在以上研究內容中進行了大規模的開源軟體實證研究,並實現了相應的重構原型工具,申請了兩項專利,獲得兩項軟體著作權授權。