听说你的MES系统又失败了?
前些日子,一位前同事跟我抱怨,他们做的MES系统,凉凉了。这样的话,我从不同人口中听到过不止一次。
我们做的系统,做到一半做不下去了......
我们的系统,工人都不爱用......
不只是MES,所有制造业的软件都有可能失败,因为企业的业务各不相同。不可能有一个套路来遵循。不过仍然有一些基本的要点要做好,尽量规避可能产生的风险。
专业的业务顾问
做过MES/MOM系统的人,都会知道业务顾问的重要性。一个优秀的业务顾问,是项目成功的关键因素。如果很不幸,你们的业务顾问不给力,那你们这个项目实施过程,恐怕会异常艰难,最后可能会,没人使用,一首凉凉送给你。为什么呢?我们的系统,是给车间使用的。如果最后,不满足车间工人的需求,或者从一开始,我们的项目,目标就不清晰。那么失败几乎就是注定。MOM系统涉及到生产计划、生产过程、质量、物流、设备等众多模块。从需求调研开始,就要兼顾全局,考虑与其他系统的整合。尤其是ERP/SAP,所以,业务顾问的业务视野和高度,直接决定了是否能够顺利实施。
选择好的平台
每个企业的业务流程都不同,即使同一个行业,也会有差别。很多公司认为,应该完全定制化,从0打造出一个完全适合自己的系统。我想说,理想很丰满,现实很骨感。首先,企业很少有能够参与开发的资源,其次,随着业务的更改,维护系统原有代码会非常困难,成本极高。所以,最好是选择大公司的成熟产品,在平台基础上定制开发。会大大降低开发成本,同时可以快速培养自己的维护人员。
不过分承诺
行业普遍情况,销售人员过分夸大产品功能。承诺所有需求都能实现,吹的完美无缺。然而,在实施过程中会发现,有些功能非常棘手。越来越多的需求无法满足,导致延迟交付,客户由期望转为失望。后果我想,不会太好。
需求控制
做这种系统性的项目,新增需求和需求变更,是不可避免的。对于需求的把控一定要到位。这也是我第一步强调业务顾问的重要性。见过很多,在实施过程中,新增的需求或变更太多,完全打乱了项目正常的进度。各项业务之间,总会有千丝万缕的关系。过多的变更和新增需求,会打乱系统最初的规划。导致实施成本超支,严重的甚至无法交付。
分阶段实现
一口吃成一个胖子是不可能的。同理,想一步到位实现MES/MOM系统所有功能也是非常困难的。项目实施前要规划好每一个阶段的目标。这样可以有效降低,实施过程的风险。更容易的控制项目的走向。
由高层领导推动
高层领导一定要参与项目,因为MES/MOM项目涉及多部门协作,及业务的复杂性和多变性。高层领导参与,一方面可以使项目更容易往前推进,另一方面由领导对阶段性的成果进行审核,避免项目后期遭到上层领导质疑。
生产部门参与
虽然我们做的是IT项目,但是我们的使用者和业务是来自于生产部门。要让生产部门人员参与其中,作为项目成员一分子。这样,我们的业务就不会偏离,也能满足使用者的需求。在上线时会更容易推行。
考虑好已有系统
MOM不是一个单独的系统,是一个平台层,要对接生产企业各种系统。在开始前,要对各个已有系统分析调研,做好后期接口规划。如果最后,无法对接其他系统,那么对客户来说将会是一个非常不好的体验。
做好上线测试
系统在上线前,一定要做好测试,修复各种遗留问题。没有完整的测试就上线,在生产环境发生问题,会让使用者很沮丧。问题越多,客户越抵触。而生产环境数据也很珍贵,错误的逻辑可能会造成比较大的损失。
做好培训及支持工作
所有的使用者必须要经过培训,通过培训,能了解他们的工作发生了什么样的变化,有什么优化。提升使用者对系统的热情。也能打消初次使用系统手足无措而导致的抵触心理。同时,要有专门的支持人员,深入车间现场,为用户解决问题。一来可以与用户交朋友,互相理解,也能让他们看到我们对系统的用心,让用户乐意去使用我们的系统。
结语
相信遵循以上十点,我们的项目一定能够顺利实施交付,并且达到较高的客户满意度。当然,要做到这些并不容易,需要项目团队及客户互相配合,齐心协力来完成。
听说你的MES系统又失败了?的更多相关文章
- 你的MES系统又失败了?正确的打开方式在这里
都知道MES实施艰难,真正成功的很少:有人戏称:10个MES,7个失败.1个不死不活.1个伪成功,最后一个仍需努力. 导致MES实施失败的原因有很多,所谓“成功的MES是一样的,失败的MES各有各的失 ...
- 别忘了在使用MES系统之前,还有关键一步!
如果你是不熟悉工业自动化领域的专业人士,又或者是从IT或其他背景进入到操作技术(OT)领域的相关人士,那么我相信你不会后悔读到这篇文章. 我们都想做到智能化生产,想将MES系统,APS系统应用到生产过 ...
- MES系统与喷涂设备软件基于文本文件的数据对接方案
产品在生产过程中除了记录产品本身的一些数据信息,往往还需要记录下生产设备的一些参数和状态,这也是MES系统的一个重要功能.客户的药物支架产品,需要用到微量药物喷涂设备,客户需要MES系统能完整记录下每 ...
- 企业信息化建PLM系统、ERP系统、MES系统是单个逐步建设好,还是同时上比较好?
企业信息化建PLM系统.ERP系统.MES系统肯定是单个逐步建设好啊,不仅仅是各个系统单独建设,系统内各模块的实施也应该先后逐步推进,切不可想着一口吃个大胖子,一股脑的全上,求全求快是很多系统实施失败 ...
- 【详解】ERP、APS与MES系统是什么?
ERP是什么?MES是什么?APS又是什么?无论他们有什么功能,对企业有什么意义,不过都是计算机在读写一些数据而已.实际上这一切的本质不过是数据在硬盘和内存中快速的读和写. ERP是--,APS是-- ...
- MES系统学习
MES系统是当今制造型企业信息化的热点,而统一建模语言UML是面向对象建模的标准语言,在软件工程发挥着重要作用.MES系统如何进行UML建模呢,今天和大家重点讨论一下MES系统的UML建模方法,请看本 ...
- Win7 & Win 8系统更新失败的解决
转自:Win 8系统更新失败的解决(原创) 这几天win 8又出了一大堆更新,而且是一更新完就要重启,重启之后照例要进入更新包的安装过程.不爽的是,屡屡在重启后出现"配置Windows更新失 ...
- 浅谈MES系统SMT的JIT功能(一):JIT原理
前段时间帮忙客户实现了MES系统的SMT线上的JIT功能(JIT功能只适合电子行业的生产线),今天就来谈谈JIT功能是什么,为什么工厂车间需要用到JIT等等一些经验 首先说说JIT: 准时制生产方式( ...
- C#C/S框架演示 (MES系统)
之前做过一个MES系统,发一些里面的截图.如果有朋友也用这个框架.或者有兴趣可以一起学习学习.使用开发工具VS2013,数据库SqlServer2008和Oracle11C.插件dev15.2,开发模 ...
随机推荐
- Linux时间子系统之四:Timer在用户和内核空间流程
用户空间应用中创建一个Timer(alarm/setitimer/POSIX Timer等等),然后程序继续执行: 内核进入创建/设置Timer系统调用,开始计时,在超时后通过何种方式通知用户空间: ...
- 阅读GIC-500 Technical Reference Manual笔记
GIC-500是ARM GICv3的一个实现,它只支持ARMv8核和实现了GIC Stream协议的GIC CPU Interface,比如Cortex-A53. 关于GIC有四份相关文档:<C ...
- How to set spring boot active profiles with maven profiles
In the previous post you could read about separate Spring Boot builds for a local development machin ...
- Python Redis 的安装
安装 可以去pypi上找到redis的Python模块: http://pypi.python.org/pypi?%3Aaction=search&term=redis&submit= ...
- 笔记一下NODEJS建站
1:npm的使用 -g的包安装用于命令行 --save用于建立依赖 建立依赖后的包只要使用npm install就可以直接全部安装 2:EJS和JADE模板 3:使用Mongoose对Mongodb进 ...
- 跟我学ASP.NET MVC之八:SportsStrore移动设备
摘要: 现在的web程序开发避免不了智能手机和平板电脑上的使用,如果你希望发布你的应用程序给更广大客户使用的话,你将要拥抱可移动web浏览器的世界.向移动设备用户发布一个好的使用体验是很困难的-比只是 ...
- Python中的r+和a+
问题描述 我打算更改文件user_list2中的内容, 本来的想法是加一个temp 文件. 先把user_list2的内容读取并修改后写入temp, 之后再写回来. 但是在读取内容并修改后写入temp ...
- Python 作用域, 局部与全局变量
全局与局部变量 在子程序(函数)中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量 全局变量作用于整个程序, 局部变量作用域是定义该变量的子程序 当全局变量与局部变量重名时: 在定义局部 ...
- Django—models相关操作
一.在django后台admin管理页面添加自己增加的表结构 通过终端命令:python3 manage.py makemigrations, python3 manage.py migrate 我们 ...
- lease.go
package ) type:]...) :]...) )*time.Second) ) go func() { select { case <-stop ...