基本上所有的开发团队都会遭遇这个叫做开发流程的东西。流程经常不遭人待见,但往往又是必要的。这个东西就和上班本身一样:很少有人会真心地一大早从床上蹦起来直奔办公室,但9点一过,大伙都会出现。它不是实现你个人的价值(时常相反,可能还会束缚个人能力),它是要帮助团队实现集体价值。
流程并不指导如何开发优秀的软件,它只是帮助避免出现太差的软件而已。现实工作中,要做到大规模的优秀往往很难,但是大规模的失败倒是可以避免的。流程保障的正是后者。
那么,我们应该用什么样的流程呢?
流程的选择绝不是“别人用什么我也用什么”,或者“什么流行上什么”。选择和项目以及团队不契合的流程只会背道而驰。比如,一些团队不认真研究需求,随大流使用敏捷开发,硬是把原本可以做一次的工作变成了推倒重做好几次,导致开发人员长期加班、生产力下降,这是不可取的。
各种流程模型在团队规模、经验、产品类型、需求方面的属性都不同,我们需要综合了解后才能做出选择。甩手将军会在本篇以及中篇简单介绍四种常见开发流程的模型,并在下篇中聊聊如何去选择。
统一软件开发过程
统一软件开发过程(Rational Unified Process,简称RUP),这个流程旨在帮助开发团队在项目期限和项目经费较为确定的前提下,完成较高质量的软件开发。RUP和其它流程稍有不同,它其实是一套由Rational Software(后被IBM收购)开发的产品。只有买了这个产品,才能去执行完整版的RUP。但是没关系,应该没多少人在真的执行完整版的RUP,就算我们不买,也不影响团队参照这个统一流程进行开发。
RUP在开发中关照了六个重点:
迭代开发
需求管理
模块化架构
可视型软件建模
持续的质量管理
控制软件的变更
大体上,RUP在各个迭代中,让软件开发的重点逐渐从需求分析、设计转向设计实现、测试和部署。从下图可以可以看到:这些传统软件开发步骤在每一次迭代中都多多少少会碰到,但他们的侧重会随着软件开发的深入而逐渐转移。
RUP通过角色来规定个人在团队开发中起的作用。完整版的RUP设定了超过30个角色。这对一般的小规模团队来说有点太多了。通常,一个人需要扮演多个角色。这对团队对流程的熟悉程度也有一定要求。如果人手不够,也完全可以视情况砍掉几个角色。
另外,完整版的RUP设定了超过60个需要在开发过程中维护的文件,例如用例、术语表、部署计划等等(例如下图)。虽然不是每个文件都是必须的,但RUP的完整度看起来并不太适合人手不够的团队。
但可喜的是,RUP的工具链相当齐全。如果买了RUP产品的话,你就不再需要其它工具去管理开发过程了。不用去东拼西凑,倒是一个不错的卖点。
关于RUP的详情,可以查看:
https://en.wikipedia.org/wiki/Rational_Unified_Process
https://www.ibm.com/developerworks/rational/library/content/03July/1000/1251/1251_bestpractices_TP026B.pdf
团队软件开发流程
团队软件开发流程(Team Software Process,简称TSP)是由卡耐基梅隆大学软件工程学院的Watts Humphrey首先提出的。它由个人软件开发流程(Personal Software Process,简称PSP)转化而来,相当类似。TSP在每一个开发环节上都有相应的“剧本”,所以对开发人员对流程的熟悉度并不高,适合新手团队。
TSP规定五种角色:领队、开发负责人、计划负责人、质量流程负责人以及后勤负责人。这五种角色通常由不同的人扮演。成员在扮演角色的同时,也可以承担开发工作。
领队通常由团队里的老大扮演,他需要帮助并督促团队里的其他成员。总的来说,领队有六大职责:
督促鼓励团队成员各司其职
主持每周例会
每周向上级报告项目进度
分配开发任务
写项目笔记
带领团队总结开发周期进度,并写报告
开发负责人要保证团队开发出的产品能最低限度得满足客户需求。开发负责人的职责比较多,总结下来有:
负责团队的开发策略
在初期主持预估软件的大小和工时
主持维护软件需求文档
主持软件设计以及维护设计文档
带领团队进行开发、构造、集成、测试等等活动
主持设计面向用户或者客户的文档
和领队一起,总结开发周期进度
计划负责人要维护项目进度,保证项目不会大规模偏离预定进度。他的职责包括:
带领团队规划下个开发周期的开发任务以及时间表
监督团队开发进度,保证开发速度。
参与总结开发周期进度
质量流程负责人,顾名思义,就是要负责质量管理方面的事宜。他的职责有:
维护项目质量计划的文档
在发生一些质量问题时,及时告知领队以及团队其它成员。
带领团队定义软件开发流程中的各个活动,并负责定期思考流程改进的方案。
确定团队的软件开发标准(比如代码规范等等)
参与审核所有的软件需求变更
负责团队会议纪要
参与总结开发周期进度
后勤负责人,需要保证团队在开发过程中,所有要用的工具全都到位。另外一些别人估计不到的事宜,后勤也应该负责。主要职责有:
负责获取开发必须的工具(例如IDE的牌照)
主持审核所有的软件需求变更
维护软件漏洞记录
维护项目风险记录
参与总结开发周期进度
TSP对于文档维护的要求比较高,项目进行过程中可能要维护20份左右的各式文档。但好在各大活动里都有“剧本”支持,所以对新手来说不会手足无措。一般使用Excel表就足以开展TSP了。
关于TSP的详情,可以查看:
https://en.wikipedia.org/wiki/Team_software_process
https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=5287
我饿了
甩手将军写到这里感到饿的慌,本期就到此结束。下次我们再介绍两个当下比较流行的开发流程:极限编程和SCRUM。
甩手将军 下楼觅食
领取专属 10元无门槛券
私享最新 技术干货