传统行业里的流水作业大家都知道是怎么一回事,企业为了压缩人力成本,想尽一切办法加快产品的出厂时间和产品生产率,为了达到这个目标很多企业产用一机械流水化作业,在这个流水作业中采用了SOP就是标准操作,规范统一每一个环节的员工操作,通过简单重复的作业标准来提高生产效率。
其实软件行业也是可以采用这种方式,提高软件的质量及生产效率,众所周知在软件质量管理体系里,有CMM,CMMI,ISO等标识,这些标识其实是为了提升软件企业的能力,是软件成熟度的一个考核,这些流程是比较重型的,很多企业是为了拿单而去过这些等级,最终是怎么样也就可想而知了。
说说我们研发中的SOP吧,先看看为什么要采用SOP,在团队软件开发过程中,有几个重要的流程是一定要去走的,不管你采用什么样的开发方式还是采用传统的还是敏捷的方式。
1、软件需求的过程
软件需求的过程也是可以标准化的,虽然软件需求的获取层可以多样化,但软件需求的整个流程是一致的,有些细节上的工作可以不一样或都可以省略但需求的产品,用户需求文档和软件需求文档是不可少的部份。
所有项目和产品的来源都来自需求,如果需求错了,可想而知下面的工作全是错的,无论你有什么样的软件开发方式都是错的,而且需求的变更也是需要管理的,项目或产品的升级修改都依懒于变更文档,如果没有记录变更,那么这个产品就没有了方向脱节了。而软件需求的文档其实就是一份SOP手册,告诉相关的开发人员如何编写软件去满足项目和软件的需求,这份文档与人无关,那怕换一个人也是同样的文档说明,这是一个标准化的文档不能出现多种形式的需求文档,这样不利用统一识别需求和阅读。
2、软件开发的配置管理
在团队合作开发时,常常会遇到工作的相互依懒性,当你的工作进行分组的同事,必须考虑的是工作的依懒性,如何解决软件研发过程中的工作依懒,在CMM里面其实也有提过,就是软件配置,可以配置统一的开发管理环境像采用软件版本控制器VSS,SVN等,统一BUG管理,统一测试环境,这些都属于软件配置层面,统一配置的目的是为了解决工作中需要的协调和依懒。好比流水线作业中的每一条生产品,统一的生产作业线。
3、软件统的架构设计
软件系统的架构对于一个项目或一个产品来说肯定是统一的,当然也有些大型的应用,像互联网产品它可能有多个不同的系统架构或平台的应用,但在同一个应用或同一个系统里面软件架构肯定是统一的。
统一架构有利于系统的扩展和管理,统一的架构有利于提升研发团队的生产效率,在系统的架构层具体实现中可以封装很多应用,对于开发来说是一个统一的平台。在统一的平台下面有利于开发的管理,有利于系统的扩展与外部应用的整合。
4、软件产品的发布。
软件产品发布的统一有利于产品的发布的稳定,建立标准的统一的发布流程,可以提高产品发布的效率同时也可以减少软件产品发布或升级过程中的错误,特别是像互联网产品的应用,它的功能模块的依懒性会比较大,一但一个地方错了,相关连的应用都有可能发生错误。
虽然软件行业还没有传统企业的SOP应用的广泛和成熟,也不防可以借鉴下传统企业的作法,对于互联网产品不需要重型的流程像CMMI这样的质量保证,需要的是敏捷更多些,以满足市场的变化,用户需求的需要。但对于这几个关键的流程也是可以进行SOP以降低软件的风险提升软件的生产效率。
有关更多的软件研发博文可以看看这个博客