工业软件开发方法论

2019-03-25 10:28:51分类:软件开发8531

  工业软件是相对比较宽泛的一个概念,从研发、生产、仓储到管理等都是工业软件的组成部分。同时工业软件也是客户个性化需求较高的软件,会因为使用者的模式、特征、甚至是产品品类不同具有巨大的差异。例如:汽车制造的MES系统和服装个性化定制的MES系统具有天壤之别。

  由于工业软件的特点决定了工业软件的开发、交付与实施都周期比较长,成本比较高。并且造成很多失败的案例。

  那么,作为当今智能制造升级核心的工业软件如何开发才能走出作坊的误区,并且能够做到在保证软件质量的前提下进行高效交付呢?作为最早从事服装个性化定制MES系统的开发者,昱辰泰克十多年来总结出一套软件系统开发的方法论。简单来说就是三个化:共性平台化、知识模块化、个性客户化。
 

工业软件开发
 

  首先,工业软件是典型的2B市场,对于2B市场面对的企业来说,需求的差异造成无法形成标准的软件产品进行销售(CAD等工具软件除外),特别是像MES这样的软件,由于直接参与到企业的管理流程、工艺流程和生产流程之中,所以可以说没有任何一套软件可以在不同的企业间使用。这就要求软件架构师在规划产品时给客户化留出空间。我们要承认差异化的存在,并且要用架构来应对客户的差异化,绝对不能掩耳盗铃地认为自己可以开发出一套放之四海而皆可应用的工业软件系统。

  其次,我们承认不同企业对工业软件(我们以MES为例)的诉求不同,那么我们就需要为专门的客户进行软件的客户化,软件的客户化分为两个层级,浅层的客户化是进行功能配置,深层次的客户化是进行功能开发。这样我们把我们的MES软件系统分解为可客户化的功能和需要专门开发的功能。

  第三,由于昱辰泰克仅开发时尚行业的MES系统,借用行业的约束条件,我们的行业专家就可以抽象不同类型的企业特征,把这些行业特征定义为知识,通过软件开发把抽象出来的知识进行模块化,之所以把知识进行模块化的最核心的原因是有些知识具有互斥性,也就是说,使用了知识A就不能使用知识B,所以需要把知识模块化有利于后期的配置,在具体实施的时候使能某些知识,更好地为具体的客户服务。

  第四,行业中具有的共性属性,例如服装智能制造中所需要的灵活的流程、订单到裁单的归集与分解、工艺流程与生产流程的匹配等都属于共性的内容,这些内容所有企业都需要,差别仅仅是复杂度的不同,那么这些功能我们定义为平台属性,通过软件的灵活性实现,例如:通过BPM系统实现流程的可定义等。

  最后,当我们把工业软件的共性部分进行平台化,知识部分进行模块化,并且个性部分通过客户化进行交付后,我们会遇到很多个性化的要求,我们再在这些个性化的要求中寻找共性或知识,通过PDCA流程,把可以抽象到平台的功能加入到平台,把可以抽象为知识的开发为知识模块,并且所有的平台功能和知识模块都使用微服务的原则开发。这样的一个迭代流程会使产品越来越适合更多用户的需求。按照我们在服装智能制造十年的研发经验,大概三到五年需要一次重构(我们十年时间已经重构过三次,现在我们服装智能制造MES系统的主线版本是4.3),重构需要特别注意的是对兼容的甄别,例如我们在版本4中为了更好地支持客户体验,用户界面全部使用HTML5的特征,就会造成对以前使用老版本的Windows系统不兼容,实践证明,这个取舍是值得的,因为随着客户的要求越来越高,重视客户体验一定会成为未来的趋势。

  通过站在不同的抽象层级把工业软件分解为平台、模块和客户化,既满足了客户价值的体现,又能降低我们的交付难度,并且随着时间的推移,能够让自己的产品不停地进化,从而提升产品在市场上的竞争力。我们称之为工业软件开发的方法论。

上一篇:下一篇: