APP下载

程序理解中的商业智能恢复方法

2017-09-07康剑

数字技术与应用 2017年5期
关键词:商业智能

康剑

摘要:本文目标提出一个在反向工程领域中的商业智慧概念及其恢复方法。我们发现在用反向工程技术分析已有程序时,反向技术本身缺乏一种主动理解程序的智慧,进而不能够运用这种智慧实现更好的进行程序理解。我们将这种智慧称之为商业智能,我们希望通过所提出商业智能恢复方法,使反向技术具备主动恢复商业智慧的能力,从而帮助反向工程技术更好的理解程序本身。

关键词:程序理解;反向工程;商业智能

中图分类号: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

猜你喜欢

商业智能
什么是商业智能?它的定义和解决方案
关于实时商业智能的文献综述
商业智能在当下出版社中的运用
广东省高速公路联网综合信息商业智能系统