zoukankan      html  css  js  c++  java
  • 41 软件工程实施-以数字化测量系统为例

    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 单元测试

       系统每一部分代码在整合进系统中之前,必须要经过严格的单元测试。

  • 相关阅读:
    条款27: 如果不想使用隐式生成的函数就要显式地禁止它
    条款26: 当心潜在的二义性
    条款23: 必须返回一个对象时不要试图返回一个引用
    条款22: 尽量用“传引用”而不用“传值”
    条款21: 尽可能使用const
    【转】我的算法学习之路
    【转】基于Linux下的TCP编程
    条款十九: 分清成员函数,非成员函数和友元函数
    【c++】C语言中volatile关键字的作用
    innerHTML,innerText,outHTML,outText区别
  • 原文地址:https://www.cnblogs.com/ghjnwk/p/10426516.html
Copyright © 2011-2022 走看看