張亞旭
【摘 要】軟件建模是現代化的產物,是伴隨電腦的發明、軟件的應用而生發的一種設計術語。隨著軟件工程理論研究的深入和軟件技術的不斷發展,軟件分析建模也日益完善。盡管不同的軟件分析建模平臺的建模工作存在差異,但大體可以把軟件分析建模分成三類,即業務建模、數據建模和應用程序建模。本文軟件建模分析是基于源代碼語義分析結果。源代碼是相對目標代碼和可執行代碼而言的,是用匯編語言和高級語言寫出來的地代碼;目標代碼是指源代碼經過編譯程序產生的能被CPU直接識別二進制代碼;可執行代碼就是將目標代碼連接后形成的可執行文件,當然也是二進制的。
【關鍵詞】軟件工程;目標代碼;執行代碼;CPU
1 研究背景與意義
軟件產業作為拉動信息時代發展的動力引擎,是經濟社會發展的基礎性、戰略性和先導性產業,在推動信息化和產業化融合、促進產業結構調整和維護國家安全等方面發揮著重要作用。
語義分析是編譯過程的一個邏輯階段,語義分析的任務是對結構上正確的源程序進行上下文有關性質的審查,即進行類型審查。語義分析是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。軟件質量評估技術是軟件工程中非常重要的研究領域,由于軟件本身的復雜性和軟件技術發展迅速等原因,軟件質量評估技術在理論上和技術上都很不成熟。若能對軟件進行質量更科學、更客觀的評估,便可促使得到更加可靠、高效的軟件。
伴隨著軟件產業的高速發展,軟件倉庫中源代碼的數量和復雜性也隨之迅速增長,致使源代碼質量面臨著重大挑戰,其中所隱藏的問題也日益凸顯。在開發過程中,雖然可以通過代碼檢測技術診斷出許多代碼問題,但是隨著技術的進步及對軟件質量要求的提高,軟件質量管理不僅要求要檢測出代碼問題,而且要求綜合評估出軟件的綜合質量。
近幾年,隨著主題模型在軟件工程領域的應用的快速發展,以及軟件源代碼具有自然語言的部分特征的關鍵性質,諸多學者開始使用主題模型在代碼語義特征方面進行大量開創性工作,如源代碼中的語義定位和捕捉源代碼中潛在主題和類之間的關系等。通過主題模型技術計算得到度量元在質量特征中的條件概率分布以及質量特征在代碼源文件中的條件概率分布,并基于計算得到的條件概率分布建立代碼質量評估模型,以克服現有質量模型存在映射關系由專家知識得到的局限性,也即通過主題模型客觀地刻畫代碼質量與度量元之間復雜的映射關系。
2 國內外研究現狀
軟件的行為是指軟件運行表現形態和狀態演變的過程,因此很多學者在軟件正常運行時收集運行過程信息建立行為模型,然后根據待測行為與模型的偏離程度檢測異常。
隨著可信計算的發展,軟件行為可信性模型被很多學者深入研究,軟件行為建模又迎來了新的發展。新的建模方法向著多元分析的方向發展,所采集的行為信息不再局限于系統調用、參數及上下文。諸如引入行為軌跡、檢查點場景、時間戳和主觀邏輯拓展等概念,綜合分析軟件行為。同時,基于行為語義的建模分析也成為當前研究的熱點。付成功的從系統調用參數中解析出系統對象,賦予了狀態語義的含義。由于語義本身有其內在的邏輯,且更貼近用戶的實際操作,可以發現較為隱蔽的應用層攻擊,所以語義分析逐漸成為當前軟件行為和網絡行為研究者關注的熱點。
3 主題建模在軟件源代碼中的應用
建模方法根據建模時獲取行為信息方式的不同可以分為:
(1)動態建模:利用動態訓練的方法來建立軟件行為模型。大量運行軟件并記錄執行情況下的行為信息,構建軟件行為模型
(2)靜態建模:靜態模型直接對程序的源代碼或二進制代碼進行分析,提取出相關行為信息,建立相應的行為模型,不需要運行軟件。
(3)混合建模:混合模型是以靜態為主,動態為輔的建模方式,首先通過靜態分析的方法建立行為模型,然后利用動態分析方法對已建立的模型進行輔助修正。
主題模型是一種可以從文本預料庫中自動發現主題結構的算法。主題模型最早是由自然語言處理和信息檢索領域提出,作為自動檢索、查詢、聚類和結構化大型非結構化語料庫和非標記文檔的一種手段。主題模型使得人們可以以相對于原來更低維的方式表示文檔,這樣做可以發現潛在語義關系,更快速的分析文本。在主題模型中有三個重要的概念,即文檔、主題和單詞,其中主題表現為一系列相關單詞的組合。在主題模型發展過程中,有三個最為經典的模型,分別為潛在語義分析(Latent Semantic Analysis,LSA)模型、概率潛在語義分析(Probabilistic Latent Semantic Analysis,PLSA)模型和潛在狄利克雷分布(Latent Dirichlet Allocation,LDA)模型,它們在提出之后被廣泛應用。
潛在語義分析模型作為最早被提出的主題模型,其是在向量空間模型的基礎上發展而來,在一定程度上克服了向量空間模型未考慮文檔的深層次語義特征的缺點,較空間向量模型而言,潛在語義分析模型較好的處理了同義詞的情況。潛在語義分析模型的核心是利用了線性代數中的奇異值分解方法(Singular ValueDecomposition,SVD)將高維的文檔單詞矩陣(Ducument-Term矩陣)映射到低維向量空間中,即潛在語義空間。在映射過程中,語義相關的單詞就會被聚集在同個主題中,即表示同一個主題中的單詞與單詞之間存在潛在語義關系,之后便可以使用這些語義結構來表示文檔。
4 軟件質量評估
縱觀以往的軟件質量模型,大部分模型的建模過程分為兩步:首先將軟件質量進行分解,分解可直接進行度量的軟件度量元;其次利用根據專家知識得到的映射權重向上聚集計算得到軟件質量。仔細分析建模步驟可發現,大多模型的映射關系刻畫存在較大主觀性,從而可能導致映射權重的不確定性和映射關系刻畫不完全等問題。軟件質量是指軟件產品滿足客戶或用戶的需求或預期的程度,更進一步說是軟件產品滿足人們需求所規定和隱含的各種特征或特性的總和。早在上個世紀70年代中后期,Boehm和 Mccabe分別提出的 Boehm模型和 McCall模型成為軟件質量研究領域最早的質量模型,同時也為之后的軟件質量模型研究奠定了基礎。國內關于軟件質量的研究開始相對較晚,且主要集中于軟件可信方面。軟件可信性是軟件質量的一種特殊表現形式,它更關注的是使用層面的綜合化的質量屬性及其保障。雖然國內目前提出可信軟件評估模型也是使用“層次”法建立評估體系,并且能有效的應用于實際項目,但對于克服評估體系中的映射關系的復雜性與不確定性卻鮮有人涉及。
參考文獻:
[1]申夢圓.基于語義模式的源代碼跨過程分析研究與實現[D].西安電子科技大學,2018.
[2]顧逸圣,曾國蓀.基于語法和語義結合的源代碼精確搜索方法[J].計算機應用,2017,37(10):2958-2963.
[3]傅穎.基于主題建模的軟件可維護性評估模型研究[D].重慶大學,2016.
[4]方文淵.面向對象類源代碼的編程邏輯建模與應用[D].戰略支援部隊信息工程大學,2018.
[5]羅楊洋.源代碼結構質量評估子系統的研究與實現[D].重慶大學,2014.
[6]余海,李斌,王培霞,賈荻,王永吉.基于組合分類算法的源代碼注釋質量評估方法[J].計算機應用,2016,36(12):3448-3453+3467.
(作者單位:博智安全科技股份有限公司)