VB在主从架构盛行的年代,与Delphi并驾齐驱,是企业广泛采用的程序语言。然而在微软推出新一代的.NET技术之后,由于VB转换为面向对象的技术有实际上的困难,因此在微软宣布终止VB技术支持之后,企业的VB系统面临迟早必须重写的命运。
然而行之有年的系统,冒然改写的风险,在于长久累积的营运知识,若隐藏在密密麻麻的程序逻辑中,没有文件化的信息可参考的话,任何幅度的更动,都必须回头查阅程序代码。
数小时内拆解VB程序各项结构
要解决这样的问题,可以选择具备逆向工程机制的软件产品,反向剖析系统的设计架构。以VB To Xupper为例,它可解构VB程序相关的使用者接口、程序逻辑与数据库结构,转入至Xupper。该套工具主要由松技网络数据库与肯美信息两家公司合作研发。
Xupper中的模型图,大部分均可透过VB to Xupper转换器全部转入Xupper,包括实体关联图、数据字典、系统架构图、数据储存库矩阵关联图、GUI及程序逻辑图等。不过该功能并不处理商业流程图与业务规则,因为这两项本是设计阶段需要自制的部分,无法逆向产出。
实际操作VB To Xupper转换的步骤并不困难。在这套系统中,解读数据库结构只需2个步骤,而VB程序的转入则包括转入GUI、程序与数据库关联图及程序流程图,需3道手续。
转入所需的时间依系统规模而定,简单的数据结构或单一VB档案,约在数分钟内完成。若以松技网络数据库本身的Firmus ERP为例,整套产品转入耗时约2~3小时。
解读数据库,勾勒架构设计
Xupper的数据字典模块罗列数据库所有的字段名称与解释,而表格关联图则显示每个数据表所包含的字段。VB to Xupper解读数据结构的顺序,是先读取字段转入数据字典,再转入ERD目录,最后组合字段完成表格关联图。
这样的设计与产品研发地的习惯有关,Xupper是日本公司研发的产品,当地对于正规化的要求很高,数据结构的设计必须先决定字段命名,再决定字段所属的数据表,最后才画关联图。
而且字段名称不能重复,在数据字典中,即使不同数据表的字段,命名也不允许重复。这样的作法,与台湾多数的数据结构设计习惯不同,所以利用VB to Xupper逆向解构数据结构时,可能发生字段名称相同的情况,此时,VB to Xupper便会发出警告讯息。
举例来说,在不同数据表具备相同字段名称的情况下,若字段的长度设定不同,例如同样是「Name」字段,有的长度是10,有的长度却是8,那么在转入Xupper时,系统将自动取最大长度,以统一长度规格。
其次,字段名称相同在Xupper中是不合法的设计,因此顾问团队将针对客户的情况,弹性调整转入Xupper的方式,在不影响现行数据结构的情况下,区隔字段的命名。
从画面、数据表关联到程序逻辑,逐步拆解设计逻辑
转入数据结构之后,下一步是解读程序代码,步骤包括转入GUI、分析每个程序所使用的数据表,以及程序逻辑。「转入GUI」功能将GUI转入Xupper,可以帮助开发者整理GUI之间的关联性,并在Xupper中模拟执行,了解每个控件将触发的画面或者程序。
而程序与数据库的关联性,则透过Xupper的分析矩阵图,则以C(Create)、R(Read)、U(Update)、D(Delete)标示每一只程序对每个数据表做了哪些处理。
程序逻辑的部分,VB to Xupper则解读程序代码,将业务处理流程的逻辑转入DLCP(Data Life Cycle Procedure)模块。用意是将较难理解的程序代码,转化成图形化的流程图,并提供程序代码与流程图的对照。
COBOL程序也有逆向转换工具
然而,系统的逆向工程很难单靠工具完成,仍有客制化及辅导的需求,松技与肯美两家供货商均能提供相关的顾问咨询服务。
松技网络数据库当初开发转换器的目的,是为了提取多年以来累积在程序代码中的产业知识,作为后续转向ASP.NET的基础。很快地,他们发现企业VB系统升级的需求不在少数,此外,金融界COBOL程序逆向工程的需求也很殷切,因此也开发出COBOL程序转入Xupper的工具。这些逆向工程的机制,对Xupper而言,将扩展出更多元的应用。