软件开发过程中的浪费
精益制造要去除整个生产过程中的各种浪费活动,那么精益软件开发就要去除软件开发过程中的各种浪费活动。
那么,软件中的浪费活动有哪些呢?下面参考精益制造中的浪费活动总结一下软件开发过程中的浪费活动。
开发客户不需要的功能
有一种质量的定义就是要恰好满足用户的需求,既不能多,更不能少。可是对于一些技艺高超的人来说,他们在完成用户的需求之后,可能出于炫技或者自以为是为了用户着想而开发了一些用户本没有要求的功能,这就是软件开发过程中的一种浪费。
如果这个功能真有必要,那应当在需求开发的时候就提出来,并且得到用户的确认。
多任务交叉
软件开发人员同时承担多个任务,这是软件开发过程中常见的一种浪费活动。经验数据表明,让软件开发人员在多个任务之间进行切换要比专注于一件事情,浪费更多的工作量,开发效率大大的降低。
等待时间过长
如果没有一个合理的软件开发流程,就可能会造成软件开发人员有很长的、没有意义的等待时间。比如:如果一个评审活动事先没有组织好那么就可能会是评审活动不能如期举行;如果没有一个胜任的评审组织者,评审活动就不能高效地进行。如果一个配置管理流程没有做好分级控制,或者没有好的配管工具的支持,开发人员等待配置管理流程的时间也会很长。如果没有给测试人员均衡、合理地安排任务,所有的测试活动都到软件开发的后期才进行,那也会是使测试人员有很多无意义的等待时间。
过度测试
软件测试能够发现软件中存在的缺陷,提高交付质量。但是软件测试应以满足软件的质量需求为准,过度测试也是一种浪费。软件测试何时终止最为合适,可以参考《测试要发现多少个错误才终止?》。
让有瑕疵的工作产品流入下一流程
按照GJB5000标准的要求,验证和确认过程应当在整个软件开发过程中进行。如果让有瑕疵的工作产品进入下一流程,比如软件需求规格说明还有很多问题就开始了设计过程,那么就可能在后续的设计和开发过程中发生很多需求变更,给软件开发过程造成巨大的浪费,同时前面所做的不合格的需求验证和确认的活动也是一种浪费。
没有充分发挥软件人员的创造力
开发人员的创造力既可以使得开发出来的软件产品具有更高的质量水平,也可以使软件开发过程更加简洁、快速和有效。而如果没有把开发人员的创造力发挥出来,那就是一种巨大的浪费。
从事没有价值的活动
每个开发人员都愿意把自己的时间和精力放在提高软件产品质量上,但是没有一个人愿意去做一些没有价值的毫无意义的活动。作为软件开发流程的制定者,要尽可能地优化软件开发流程,去除一些没有意义的步骤和中间产品,让软件开发人员把精力都集中到提高软件产品质量上来。
这正是:
精益制造美于前,精益开发随后边
去除浪费多增效,制造经验可借鉴
参考书目:丰田模式(实践手册篇):实施丰田4P的实践指南,作者:【美】莱克(K. Liker, J.),【美】梅尔(Meier, D.),译者:王世权,出版社:机械工业出版社