工业软件,既是软件,又有工业业务背景,因此,工业软件既要具备软件的普遍能力,又要考虑工业领域的特殊性。
工业软件需满足高稳定性、高可靠性、高性能等软件的基本要求,也要理解工厂设备的特殊性、人员组织结构及岗位职责划分的目的性、业务的特殊性(精细化工和离散行业差异就较大)、生产环境的特殊要求(是否有易燃易爆或危害品)、当地的法律法规等众多因素。
因此,不同的工厂,不同地区的同一家工厂,对软件的需求可能都会有所不同。
但是,现状是很多国内工业软件,都不是严格按照软件开发的基本流程走的,它省略了一些重要的环节,比如省略了系统设计、模块设计、系统测试等(由于岗位缺失、成本管控、快速交付等多种实际因素导致)。实际上前几年的很多工业软件,都是从原有的硬件业务转型或者拓展出来的,业务理解和设计上他们经验丰富,但是软件开发对他们来说不算是老本行,做软件开发也是摸着石头过河,导致本身已经成熟的软件开发,在工业软件上的应用却落后很多。
许多工业软件的起步,都是以一个项目交付为契机开始的,因此,它从一开始就缺少了产品化的考虑,等到软件功能逐渐完善且代码量庞大时,才意识到产品化的重要性,这个时候开始向产品化转型,就会出现尾大不掉的问题,导致所有的产品化设计,都要兼容已有功能,产品化无法做出系统性的设计,就无法真正发挥它的价值,所有的产品化设计,更像是在修补以前的缺陷。
基于上述原因,工业软件想要实现产品化,从一开始,就要高度抽象工厂的业务模型,一方面尽可能将底层软件平台的能力做大做强,另一方面,要开放平台的二次开发能力和功能定制能力。
所以工业软件的架构师,必须是在软件行业有一定积累,并且在制造业也有丰富的从业背景。
总结一下: 1、工业软件的设计,一开始就要考虑产品化的设计,明确哪些属于平台需要提供的能力,哪些是可以在平台基础上进行二次开发; 2、工业软件的架构师,需要具备扎实的软件设计能力外,还需具备专业的业务能力
平台能力,小一点的功能,比如换肤、菜单名称可配置、软件logo可配置、登录页面背景图片可配置、前后端公共组件、字典功能;大一点的功能,比如工作流、高级表单、代码生成器,甚至低代码平台。
大的方面,要具备基本的人员管理、岗位管理、用户管理、角色及授权管理、菜单管理、工作流等基本功能;细节方面,人员要根据所在车间、所从事的业务流程、所具备的岗位不同,支持从多维度去授权。比如既要支持按照角色划分人员的权限,也要根据业务场景划分权限;
工业软件的难点在于,它与工厂内部的管理制度、岗位划分、业务规范和流程息息相关,根据某个工厂制定的业务流程,很难适用于第二个工厂,因为他们的操作流程或业务管理方式不同,导致很难复用同一个功能,因此,平台能力的构建尤为重要。