Skip to main content

Fujitsu

English | 日本語

China

本技术介绍参考了以下链接
English

2016年4月6日

世界首例将程序代码中的业务逻辑复杂度进行可视化的技术
将复杂度进行量化的技术能够提高现有大规模业务应用程序的利用率

株式会社富士通研究所(注1)(以下简称,富士通研究所)开发了世界首例可将大规模复杂业务应用程序中的业务逻辑复杂度进行可视化的技术。过去,在从程序规模或者条件分支语句数量等参数中发现重要元素时,很难将执行相关处理的业务逻辑和程序数据分享、格式检测处理等控制逻辑进行区分。

开发背景

企业中使用的业务应用程序往往经过了多年的开发和维护,具备多功能性和复杂性,这时很难对功能强化与改善等不断变化的业务环境做出迅速响应。企业需要花费大量的时间和精力去分析需要添加新功能的应用程序,尤其是在项目资产由其他公司开发和维护的情况下。

课题

负责开发和维护程序代码的人员需要理解业务应用程序中反映企业工作流程的业务逻辑,对业务应用程序进行分析并及时掌握现状。但当应用程序中的代码量达到数千或者数万条时,相应的分析过程是非常耗时的。通常,为了掌握现状需要对设计文档进行重写,但是,由于无法区分执行业务流程的业务逻辑和执行程序间数据共享、格式检测处理的控制逻辑,因此无法通过代码规模或者条件分支语句数量等参数发现其中包含的重要元素。此外,针对大型的业务应用程序,业务逻辑会散布于众多区域,因此,要想判断通过哪个业务逻辑了解现状,需要经验非常丰富的人员才行。

开发的技术

富士通研究所针对应用程序资源,开发出一种可通过简易分析从而掌握源程序特征,实现业务逻辑复杂度的可视化技术。当需要对应用程序进行改善,提高性能或者进行移植时,本技术可以优先分析开发人员认为难理解,特别复杂的业务逻辑。

开发的技术具有以下特点:

1. 自动识别程序代码中的业务逻辑

业务系统执行业务逻辑,业务逻辑使管理人员输入的业务数据产生业务相关的决策和相应计算结果。本技术能够自动识别程序代码中的业务逻辑(图1)。

业务数据是输入和输出数据的一部分,因此将程序的输入输出数据作为业务数据进行处理。对业务数据进行的条件判断和计算处理,都被视为业务逻辑。但由于检查处理不包含条件判断,所以不属于业务逻辑。

图1 业务应用程序中的业务逻辑

图1 业务应用程序中的业务逻辑

2. 量化业务逻辑的复杂度

“决策表格”是指将条件组合和对应结果通过表格形式进行模型化。富士通研究所专注于决策表格的大小与业务逻辑负责度之间的复杂性,定义了三个决定决策表格大小的指标:与条件相关的元素个数、条件分支个数以及与计算相关的元素个数(图2)。

图2 基于决策表格的业务逻辑复杂度指标

图2 基于决策表格的业务逻辑复杂度指标

制定决策表格需要进行详细分析,因此不适用于大规模资产。富士通研究所开发了一种可以不用制定决策表格,基于程序代码中的变量和条件分支个数去近似计算对应这些指数的特征值的方法,该方法可以对大规模资产进行分析。

程序分析的结果表明,业务逻辑的复杂度越高,与业务相关的判断和计算处理越多。以约1200个COBOL语言编写的程序为对象,将业务逻辑的复杂度分为高、中、低,在公司内部进行测试。测试结果证实,进行业务计算的程序复杂度标记为高,而进行格式检测的程序复杂度标记为低。

图3 量化业务逻辑复杂性的事例

图3 量化业务逻辑复杂性的事例


效果

基于本技术,可以对各种业务应用程序进行现状分析,针对业务环境变化的功能提高与改善,也可做出迅速响应。在公司内部测试中,研究人员从代码行数的角度证实了在被分析的源程序中约有30%不包含业务判断或计算。例如在重新构建系统时需要进行初始分析,上述结果能够帮助缩小分析范围,将更多精力放在包含较高业务逻辑复杂性的代码部分。

此外,将本技术用于富士通研究所的另一项技术“将软件的功能结构自动进行地图化的软件地图(注2)”,业务逻辑复杂性可以用楼层高度表示。地图上的区域表示功能单元,可以直观地确认是否有复杂业务逻辑,因此无论程序大小如何,研究人员都能发现需要优先处理的部分。


今后

富士通研究所目标在2016年将本技术投放市场,致力于将该技术应用于各种行业与多语言业务系统分析。

注释

注1 株式会社富士通研究所:
社长 佐佐木繁
总公司所在地 日本神奈川县川崎市
注2 软件地图:
本技术已装载到富士通提供的资产分析服务中。
可参考以下链接:
http://www.fujitsu.com/global/about/resources/news/press-releases/2012/0229-01.html
http://www.fujitsu.com/global/about/resources/news/press-releases/2013/0513-02.html