金 靖,李 萌,華哲邦,宋懷達(dá),趙俊峰,謝 冰
1.北京大學(xué) 信息科學(xué)技術(shù)學(xué)院,北京 100871
2.北京大學(xué) 高可信軟件技術(shù)教育部重點實驗室,北京 100871
一種基于LDA和靜態(tài)分析的代碼功能識別方法
金 靖1,2,李 萌1,2,華哲邦1,2,宋懷達(dá)1,2,趙俊峰1,2,謝 冰1,2
1.北京大學(xué) 信息科學(xué)技術(shù)學(xué)院,北京 100871
2.北京大學(xué) 高可信軟件技術(shù)教育部重點實驗室,北京 100871
軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動的解決方案[1],而代碼復(fù)用是軟件復(fù)用中最主要的組成部分。隨著代碼復(fù)用技術(shù)不斷成熟和Internet上開源項目不斷豐富,軟件開發(fā)人員的開發(fā)行為也逐漸發(fā)生了變化。通用搜索引擎技術(shù)的發(fā)展以及各種軟件資源庫社區(qū)(如SourceForge(http:// www.sourceforge.net/)、Google Code(http://www.google. com/codesearch/)、Τrustie軟件資源庫(http://tsr.trustienet/)等)的壯大使得軟件開發(fā)人員可以迅速地從Internet上找到滿足特定功能的開源項目。如今,軟件開發(fā)人員在編程活動中越來越多地依賴于開源軟件項目提供的功能。
理想情況下,軟件開發(fā)人員可以將開源項目的文檔和代碼結(jié)合起來學(xué)習(xí)其功能點。然而,從Internet上可以找到大量開源項目的代碼,卻很少能夠找到項目的詳細(xì)文檔。即使較好的開源項目能夠提供用戶手冊,也不足以幫助使用者全面地理解項目的功能點。因此,需要研究一種以代碼為輸入、能夠自動識別功能點的方法來幫助使用者了解開源項目具備的功能點。
傳統(tǒng)的代碼分析技術(shù)(如控制流分析、數(shù)據(jù)流分析等)可以幫助使用者細(xì)粒度地理解項目代碼的工作機制。這些工作的受益對象一般是與項目開發(fā)、測試、維護(hù)相關(guān)的人員,這些人員往往已經(jīng)具備了項目的相關(guān)知識。……