0 引言
迄今为止完成(或正在完成)三个数字化测量系统的开发,软件开发经验从无到有,建立了一些一般性的概念。希望以本篇为契机,对开发中积累的经验教训进行总结。
1 建立快速原型的理念
现代软件设计中一个至关重要的问题是,如何将甲方模糊的、不明确的、潜在的需求用清晰的工程语言表述出来,并体现在系统的表现层中。一个广为人知的工程解决方案是快速原型法。在项目开发的最初阶段,通过跟客户沟通,可以得到以下基本信息。
(1)系统的输入输出:根据系统的输入输出要求制定合理的技术路线,并衡量技术路线的可行性。以数字化测量系统为例,如下图所示。
(1.1)系统输入:被测工件CAD标准数模,该文件包含测量信息以及被测尺寸几何信息,是指导测量的基础文件;被测工件激光扫描点云文件,该文件采用手持式/旋转式激光扫描仪扫描获取,具备描述工件表面形状坐标信息的能力。
(1.2)系统输出:测量结果、符合性判读结论-报表形式。
(2)系统的功能需求:即系统是干什么的,能够从哪些方面简化人的工作。比如本人开发的数字化测量系统有以下作用。
(2.1)辅助工艺员指定数字检验作业规划:检验作业规划是检验作业的操作流程以及检验相关信息,提供了检验时所需的尺寸关联几何、检验方式、最佳视图等信息。
(2.2)自动测量功能:针对部分尺寸,要求具备自动测量的功能。
(2.3)经验数值存储功能:要求系统提供经验数值供工艺员运用。
(3)系统的技术/性能需求:性能需求通常对系统的硬件环境进行了限制,并给出系统运行时的空间和时间复杂度。同样以数字化测量系统为例。
(3.1)系统时间需求:检测规划生成时间不超过2min.
(3.2)系统运行在win7操作系统下。
(4)系统的使用场景:程序员需要理解是谁在使用这套系统,包含的应用场景有哪些,每个应用场景下分别对应哪些操作。
(4.1)工艺员:操作该系统制定检验规划,工艺员需要确认点云与模型的匹配关系正确性;利用经验数值制定非自动检测项的检验规划;指定自动检测项的尺寸关联几何等。
(4.2)检验员:操作系统对每一个检验实例进行检验,首先将扫描点云实例挂到检验规划结点下,然后调整检测参数,并执行检测,输出检验结论即可。
2 数据-算法-界面分离
(1)通过对输入输出以及技术路线的分析,厘清测量中的数据形式及其流动方向。以数字化测量系统为例,基于MBD的三维测量标注模型中包含测量的几何信息以及工艺信息。通过二次开发技术提取相关测量/工艺信息,以产品结构树结点为中心组织起来,存储到数据库中。基于这一数据的组织和流动方式,设计数据库表,完成数据层的搭建。
(2)基于数字化测量系统需要达到的目的,设计算法流程图,以驱动数据流动,达到系统运行目的。
(3)基于对产品使用场景的理解,以减少人机交互、尽量提高自动化与数字化程度为目标,设计业务流程,并在此接触上设计交互界面。
3 先文档,后编码
通过详细的前期设计,将项目中的基本问题厘清,这样写出来的代码逻辑清晰可靠,有理有据。另外,在系统不断完善的过程中,也应当不断更新文档,做到代码与文档一一对应。
4 单元测试
系统每一部分代码在整合进系统中之前,必须要经过严格的单元测试。