康劍
摘要:本文目標提出一個在反向工程領域中的商業智慧概念及其恢復方法。我們發現在用反向工程技術分析已有程序時,反向技術本身缺乏一種主動理解程序的智慧,進而不能夠運用這種智慧實現更好的進行程序理解。我們將這種智慧稱之為商業智能,我們希望通過所提出商業智能恢復方法,使反向技術具備主動恢復商業智慧的能力,從而幫助反向工程技術更好的理解程序本身。
關鍵詞:程序理解;反向工程;商業智能
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1007-9416(2017)05-0244-01
1 簡介
反向工程技術是用以理解程序的重要方法,反向技術期望抽取程序中的有用要素信息,并用這些要素信息進一步建立程序的抽象結構,借此進一步描繪出軟件設計的原型。這些要素信息包括:項目、組件、模塊、架構、特性、需求等等。然而,當前反向技術停滯在代碼理解階段,比如:系統分解技術、程序分解技術、程序轉換技術、程序抽取技術等,這些技術目前,仍然不能達到軟件特性理解和軟件需求理解的高度。
2 介紹現有的商業智能恢復方法
2.1 程序抽取方法
程序抽取方法是常見的基于數據流分析的方法,且已成為多種程序理解工具的基礎功能。程序當中特別的字段,以及特別變量都可以在數據流的節點上得以體現。比如,當你希望查找到某個程序中存在的語法錯誤時,你不需要等待整個程序運行完畢,你會選擇截取整個完整程序中某單獨一段程序加以執行,即可有效尋找這段程序中存在的語法問題。
2.2 線性程序分割方法
傳統的程序分割方法是非線性的,這是因為通常情況下,程序分割能力一定受到計算機資源的限制,且難以滿足在線實時的程序分割需求。本文中,我們設想一種線性程序分割方法,它可以基于程序的不同類型提出將源程序按照商業智能模塊進行分割。并且,因為商業模塊具備線性邏輯分析的基礎,這種線性程序分割方法就可以達到線性分割理解程序的目的。同時,在進行程序分割時,商業智能模塊和源程序模塊必然存在一一對應的關系,這樣就避免了重復使用計算資源和侵占計算資源,進而又實現自動化效率提升的目標。
2.3 商業智能矩陣分解方法
商業智能矩陣分解方法是建立在數據模型基礎之上的一種軟件理解方法。這種方法的實質在于解釋:分解后所獲得的商業數據及其結果,與分解過程中的所選擇的假設條件和方法是存在必然的關聯關系。在面對大段程序代碼的時候,這種方法就凸顯出它必然優勢,因為最開始的程序理解和程序分解工作是從頂層出發的,這就要求程序分解方法必須具備有效的追蹤功能,追蹤何時何處拆分,和何時何處組合,最終能夠找到變化路徑并恢復程序原形。
3 提出商業智能恢復方法
3.1 商業智能恢復與反向工程之間的關系
商業智能恢復和反向工程間存在著5層級關系,這既代表商業智能恢復的5個層級,也代表著反向工程的5個層級,且每個層級的商業智能恢復方法和每個層級的反向工程方法都存在一對一關系:
(1)程序代碼反向工程與商業智能數據恢復保持一致。給定一段源代碼,我們一定可以確定商業數據一定嵌入在該段程序的代碼中間。(2)程序結構反向工程與商業算法恢復保持一致。用程序分割方法從代碼中抽取程序結構,就是將不同種定義對象標注出來,再將其關系結構提取出來。商業算法同樣可以解釋不同程序模塊之間的聯系,從而解釋程序結構。組件模型的反向工程與商業智能的數據模型恢復保持一致。商業智能的算法設計就在這個區間內實現。對于程序本身來說,這相當于程序的控制流程,用來解釋項目與組件之間的關系。架構反向工程與商業智能物理模型恢復保持一致。商業智能的物理模型是與軟件架構保持一致的,這個架構可以有效的將組件與軟件需求聯系起來。(3)需求反向工程與商業智能邏輯恢復保持一致。簡單來說,軟件的需求就是商業邏輯本身,只不過是通過功能定義加以實現的。
3.2 一種線性程序分割方法
我們首先需要定義商業智能的基本組成。商業智能是由一個個相關聯的概念信息組成的,每一個獨立的概念信息又可以稱之為一個單元,若干個強關系的單元組成了一條規則,若干條強關系的規則組成了一個模型。我們再將所有這些找到的單元、規則、模型都放在一個數據庫內,進而組成了商業智能數據庫。有了這個商業智能數據庫,我們就具備了運用商業智能的進行程序線性分析和理解程序的基礎。
3.3 構建商業智能矩陣
在一個標準的矩陣中間,商業智能單元1和程序段1存在著一一對應的強關系,但同時,商業智能單元1可能又與程序段2、3、4等存在著某種弱關系。商業智能矩陣方法是最佳的尋找強弱關系的方法,并且能夠幫助軟件理解工具在最快時間找到一條關系度最強的商業邏輯主線,這條商業邏輯主線在最大可能程度上,就是這個軟件程序的設計需求或性能描述的一部分。
4 結語
反向工程仍然是程序理解的重要方法,但是我們確信沒有商業智能恢復的幫助,反向工程對于程序的理解能力,仍將停留在代碼分析的層面,這無法達到我們對程序設計需求和功能特性理解的高度。但我們仍然需要更深入研究商業智能的恢復方法,使之針對具體問題行之有效,更快更準,比如說:系統軟件網頁化、云端服務智能終端化等等。endprint