敏捷开发方法综述
在听了老师对敏捷开发的讲解后,我写了这篇博客来对敏捷开发的方法进行综述。
在“敏捷”的大旗下面,我们可以看到好几种软件开发的方法论。我们在这里剖析Scrum 这个方法论。
Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法:Scrum of Scrums.
其敏捷流程概述:
第一步:找出完成产品需要做的事情—Product Back-log。Backlog翻译成“积压的工作”、“待解决的问题”、“产品订单”,都可以。产品负责人主导大家对于这个Backlog进行增/删/改的工作。每一项工作的时间估计单位为“天”。
第二步:决定当前的冲刺(Sprint)需要解决的事情—Sprint Backlog。整个产品的实现被划分为几个互相联系的冲刺(Sprint)。产品订单上的任务被进一步细化了,被分解为以小时为单位。如果一个任务的估计时间太长(如超过16个小时),那么它就应该被进一步分解。订单上的任务是团队成员根据自己的情况来认领。团队成员能主导任务的估计和分配,他们的能动性得到较大的发挥。
第三步:冲刺(Sprint)。在冲刺阶段,外部人士不能直接打扰团队成员。一切交流只能通过Scrum大师(Scrum Master)来完成。这一措施较好地平衡了“交流”和“集中注意力”的矛盾。有任何需求的改变都留待冲刺结束后再讨论。冲刺期间,每天要开一个每日例会(Scrum Meet-ing),团队成员大多站着开会,所以又称每日立会。冲刺阶段是时间驱动的(Time-boxed),时间一到就结束。
每日站立会议有一些具体的指导原则:
会议准时开始。对于迟到者团队常常会制定惩罚措施(例如罚款,做俯卧撑,在脖子上挂橡胶鸡玩具)欢迎所有人参加,但只有猪可以发言。不论团队规模大小,会议被限制在15分钟。所有出席者都应站立。(有助于保持会议简短)会议应在固定地点和每天的同一时间举行。在会议上,每个团队成员需要回答三个问题:
今天你完成了哪些工作?明天你打算做什么?完成你的目标是否存在什么障碍?(Scrum主管需要记下这些障碍)
每一个冲刺完成后,都会举行一次冲刺回顾会议,在会议上所有团队成员都要反思这个冲刺。举行冲刺回顾会议是为了进行持续过程改进。会议的时间限制在4小时。
Scrum提倡所有团队成员坐在一起工作,进行口头交流,以及强调项目有关的规范(disciplines),这些有助于创造自我组织的团队。
Scrum的一个关键原则是承认客户可以在项目过程中改变主意,变更他们的需求,而预测式和计划式的方法并不能轻易地解决这种不可预见的需求变化。同样,Scrum采用了经验方法– 承认问题无法完全理解或定义,而是关注于如何使得开发团队快速推出和响应不断出现的需求的能力最大化。
这个特点看似不起眼,但其实它有效地断了各种延期想法的后路,很高明。
第四步:得到软件的一个增量版本,发布给用户。然后在此基础上又进一步计划增量的新功能和改进
总之,Scrum最大的好处是它非常容易学习,而且应用Scrum不需要太多的投入。