6

上位机图像处理和嵌入式模块部署(插件式软件开发)

 7 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/135946140
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        读书的时候,上课的老师一般都会说,软件=数据结构+算法。从功能上面说,这么讲是没有问题的。但是从产品角度说,这么谈是不合适的。对于程序员来说,他们开发软件,如果只是从自己的角度去开发客户需要的功能,而不是从使用者的角度去思考,最终只会开发出一个四不像出来。只有开发者放低自己的姿态,把自己带入到使用者的角色当中去,才能开发出客户需要且合格好用的软件。在这过程中,软件开发的第一原则是稳定,第二原则是处理速度快、性能好,第三原则就是好用。

        前一段时间,一个偶然的机会看到了QMacVisual的机器视觉软件,发现它的插件式开发思维非常好。所以初步看了一下它的操作流程,学到很多。

a2a8cb9b2bc848258542134b81774623.png

1、插件式开发需要统一的接口

        所谓插件式开发,一般要求接口是统一的。这样,就算后期添加了新的代码,也不会对整个软件的主流程造成影响。此外由于接口统一,后续添加新的算法、新的模块,开发人员即使不了解全局软件,也能开发出新的功能。

2、图像处理比较适合插件式开发

        图像算法有它自己的特点,就拿机器视觉来说。除了极少数直接对像素进行处理的算法之外,剩下来的算法接口一般就是一个输入,一个输出。输入的是一幅图像,输出的是另外一幅图像。只有在最后输出结果的时候,才会从图像中输出我们想要的信息,比如说长度、宽度、高度、大小、位置、好坏、有没有毛刺等等。在这之前的动作,就跟流水线一样,每一个步骤的输入和输出都是一样的,所以这也为插件的开发打下了一个基础。

3、插件开发有利于使用者的使用

        如果不是插件开发,开发的功能很大可能是根据客户现场环境进行定制处理的。但是客户的环境,是多种多样的,很多时候是根本没有办法穷举的。然而如果采用了插件开发之后,就相当于我们提供给客户的功能就是原子功能,客户或者集成商拿到这些原子功能,就可以自由组合、自由搭配,最终搭配出客户自己需要的功能。也就是说,插件开发为这样一种应用模式提供了一种可能。

4、插件开发的软件质量更高

        和一般的软件开发相比较,插件开发式的软件,主流程更加简单。因为具体的功能都是由插件来完成的,所以就算出问题,那么插件本身出问题的概率更大。主流程因为比较简单,它只负责不同模块的衔接和调度,本身内容比较少,就算出问题,那也是几个关键点出问题,本身的风险很小的,质量也是比较容易可控的。而且,随着插件开发得越来越多,那么主流程只会越来越稳定,出问题的概率就更低了。

5、方便调试

        实际开发的时候,我们还发现,插件式的功能开发往往更加容易调试。因为本身流程简单,输入、输出的接口也是高度统一的,所以如果需要测试,或者是定位客户现场的故障,只需要把当时的input data保存下来就可以。拿到这些input data,我们可以把它copy 到插件当中进行调试,只要拿到的input data没有问题,那么现场的故障几乎可以100%调试出来,这比复杂的大型软件调试,要容易得多。

6、降低了开发人员的能力要求

        对于上位机的开发,如果涉及到算法的部分,很多时候都会要求c/c++的开发。但是目前招聘市场上面前端、php、java、app的候选者很多,但是合格的c语言工程师,特别是合格的c++语言工程师,其实很难找到的,或者说即使找到了,用人成本也是非常可观的。所以,与其把重心放在招聘资深的c/c++软件工程师上面,不如优化软件框架,降低软件开发的难度,这样就可以有更多的候选者能够匹配上岗位,加速软件的迭代和开发。因为对于开发者来说,他甚至都不需要知道整个软件的全部流程,仅仅开发插件,就可以保证整个软件按照之前设计的思路,正常地运转起来。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK