【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
读书的时候,上课的老师一般都会说,软件=数据结构+算法。从功能上面说,这么讲是没有问题的。但是从产品角度说,这么谈是不合适的。对于程序员来说,他们开发软件,如果只是从自己的角度去开发客户需要的功能,而不是从使用者的角度去思考,最终只会开发出一个四不像出来。只有开发者放低自己的姿态,把自己带入到使用者的角色当中去,才能开发出客户需要且合格好用的软件。在这过程中,软件开发的第一原则是稳定,第二原则是处理速度快、性能好,第三原则就是好用。
前一段时间,一个偶然的机会看到了QMacVisual的机器视觉软件,发现它的插件式开发思维非常好。所以初步看了一下它的操作流程,学到很多。

1、插件式开发需要统一的接口
所谓插件式开发,一般要求接口是统一的。这样,就算后期添加了新的代码,也不会对整个软件的主流程造成影响。此外由于接口统一,后续添加新的算法、新的模块,开发人员即使不了解全局软件,也能开发出新的功能。
2、图像处理比较适合插件式开发
图像算法有它自己的特点,就拿机器视觉来说。除了极少数直接对像素进行处理的算法之外,剩下来的算法接口一般就是一个输入,一个输出。输入的是一幅图像,输出的是另外一幅图像。只有在最后输出结果的时候,才会从图像中输出我们想要的信息,比如说长度、宽度、高度、大小、位置、好坏、有没有毛刺等等。在这之前的动作,就跟流水线一样,每一个步骤的输入和输出都是一样的,所以这也为插件的开发打下了一个基础。
3、插件开发有利于使用者的使用
如果不是插件开发,开发的功能很大可能是根据客户现场环境进行定制处理的。但是客户的环境,是多种多样的,很多时候是根本没有办法穷举的。然而如果采用了插件开发之后,就相当于我们提供给客户的功能就是原子功能,客户或者集成商拿到这些原子功能,就可以自由组合、自由搭配,最终搭配出客户自己需要的功能。也就是说,插件开发为这样一种应用模式提供了一种可能。
4、插件开发的软件质量更高
和一般的软件开发相比较,插件开发式的软件,主流程更加简单。因为具体的功能都是由插件来完成的,所以就算出问题,那么插件本身出问题的概率更大。主流程因为比较简单,它只负责不同模块的衔接和调度,本身内容比较少,就算出问题,那也是几个关键点出问题,本身的风险很小的,质量也是比较容易可控的。而且,随着插件开发得越来越多,那么主流程只会越来越稳定,出问题的概率就更低了。
5、方便调试
实际开发的时候,我们还发现,插件式的功能开发往往更加容易调试。因为本身流程简单,输入、输出的接口也是高度统一的,所以如果需要测试,或者是定位客户现场的故障,只需要把当时的input data保存下来就可以。拿到这些input data,我们可以把它copy 到插件当中进行调试,只要拿到的input data没有问题,那么现场的故障几乎可以100%调试出来,这比复杂的大型软件调试,要容易得多。
6、降低了开发人员的能力要求
对于上位机的开发,如果涉及到算法的部分,很多时候都会要求c/c++的开发。但是目前招聘市场上面前端、php、java、app的候选者很多,但是合格的c语言工程师,特别是合格的c++语言工程师,其实很难找到的,或者说即使找到了,用人成本也是非常可观的。所以,与其把重心放在招聘资深的c/c++软件工程师上面,不如优化软件框架,降低软件开发的难度,这样就可以有更多的候选者能够匹配上岗位,加速软件的迭代和开发。因为对于开发者来说,他甚至都不需要知道整个软件的全部流程,仅仅开发插件,就可以保证整个软件按照之前设计的思路,正常地运转起来。