要回答这个问题,先让我们来看看什么是流程。
什么是流程?
流程是任何可重复的一组动作。流程通常由团队来决定,以确保事情会以某种方式完成。流程有很多其他名称:规则、指导方针、形式、程序或限制规定。
软件开发流程,就是软件开发过程中重复的一组动作,是软件开发应遵循的一套规则、程序或规定。
好的流程可以提高项目完工的机会,而且效益要大于成本。
好的软件开发流程可以让软件开发的收益大于所付出的成本。
那么什么才是好的软件开发流程?
下面列出了一些好的流程的特征,当你要建立或改进软件开发流程时,可以将其作为指导原则来使用。
1. 好的流程可以加速事情的进展
换句话说就是,好的流程办事会更加有效率。效率是衡量流程好坏的一个显著的特征。比如要完成一次软件变更,有的实施GJB5000A组织的流程通常是接收变更请求-变更影响分析-变更申请-产品库出库-受控库入库-受控库出库-开发库入库-开发库获取-实施更改-更改验证-开发库入库-开发库出库-受控库入库-受控库出库-产品库入库-产品库出库-交付使用。这样的流程还有什么效率可言,这还能是一个好的流程吗?软件变更流程的重要目的是控制变更和控制软件版本,只要不失去这个核心,省去几个环节又有什么关系?而且如果要进一步提高流程的效率,你还可以引入自动化构建工具,使你的流程更加完美。
2. 好的流程可以防止问题
制定流程的最重要的一个动机就是防止某种愚蠢的事情发生(或再次发生)。这一点对于编写体系的人来说尤其要注意。我们编写GJB5000A体系的时候,不仅仅是把现有的软件开发活动用文字记录下来,更重要的是要考虑我们制定的规程、指南能够帮助我们解决什么样的问题。如果编写体系的人没有这些思考,那么写出来的体系也不会有人执行,执行起来也没什么作用。
3. 好的流程可以让重要行动可见和可测量
制定流程的目的是能够控制项目的进程,让项目按照我们期望的路线前进。而要达到这一目的,就要使项目状态一目了然、清清楚楚。这就需要流程的设计能够帮助项目策划参数方便地测量和监控。
4. 好的流程应当包括修改或删除此流程的流程
流程必须有内置的机制,可以决定何时需要更新或者停止。
没有那种亘古长存、一成不变的流程。流程必须适应它所处的内外部环境。流程要持续改进,而且它也会迎来终止的那一天。
5. 好的流程应当受到影响的人会赞同
流程对于使用它的人来说,是一种束缚。所以,如果没有足够的好处,流程的增加和变动没人会欢迎。好的流程必须对那些使用它的人有帮助,赢得他们的支持。所以制定一个流程应当多听取受影响的人的意见,或者直接让受影响的人参与制定。
6. 好的流程一定是收益大于成本的
一个流程的制定要考虑它一旦执行,需要付出多少成本以及带来多少收益。你需要在试点过程中对其进行测算,如果成本高于收益,你必须要进行流程的优化,否则,你的流程很难推行下去。
这正是:
好的流程收益高,使用的人都说好
解决问题有效率,项目状态测得到