1. 敏捷方法简介
敏捷是世界上使用最广泛,最受认可的软件开发框架之一。敏捷是一种软件开发的实践理念,建构一个自给自足且跨职能的团队致力于通过迭代进行持续交付,并通过收集最终用户的反馈在整个过程中发展。
在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。在欧美软件企业中,有近半数企业已采用敏捷方法进行开发。敏捷开发的流行绝非偶然,其最大的推动力是采用这种方法所能带来的受益。相关统计表明,敏捷开发可以将效率提高3~10倍,软件的质量也有更加可靠的保证;同时,还给团队内的每个成员提供了良好的发展机会,技术和合作水平都能得到相应提高。当然,敏捷的成功前提是其方法本身的适用性和团队对它的深入理解和合理运用。
敏捷开发过程是指任何开发过程与敏捷宣言相结合的概念,它是2001年由软件行业的17个领军人物开发的,反映了他们在软件开发中什么该做和不该做的经验方法。
敏捷开发包括多种软件开发方法,如:极限编程(XP)、Scrum、精益开发(LeanDevelopment)、DSDM、动态系统开发方法、特征驱动开发(FeatureDriverDevelopment)、水晶开发(CristalClear)等等。所有这些方法都具有以下共同特征,它们也是敏捷开发的原则:
图1 敏捷宣言
图2 敏捷技术
(1)迭代式开发。即整个开发过程被分为几个迭代周期,每个迭代周期持续的时间一般较短,通常为1到6周。
(2)增量交付。产品是在每个迭代周期结束时被逐步交付使用,每次交付的都是可以被部署、能给用户带来即时效益和价值的产品。
(3)开发团队和用户反馈推动产品开发。敏捷开发方法主张用户能够全程参与到整个开发过程中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。
(4)持续集成。新的功能或需求变化总是尽可能频繁地被整合到产品中。有些是在每个迭代周期结束的时候集成,有些则每天都在这么做。
(5)开发团队自我管理。人是敏捷开发的核心。敏捷开发总是以人为中心建立开发的过程和机制,而非把过程和机制强加给人。
2. 实施敏捷的价值
满足用户不断变化的需求是软件开发的长期无法解决的难题之一,经典的瀑布模式在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。敏捷方法满足需求的办法主要通过迭代。在每一次迭代周期结束时,都能交付用户一个可用的、可部署的系统,用户使用并体验该系统并反馈意见,在随后的迭代周期这些意见和需求的其他变化一起在产品中实现和集成。每次迭代周期应尽可能短,以便能及时地处理需求变化和用户反馈。
敏捷开发能给企业和用户带来以下好处:
1) 精确。瀑布模式通常会在产品起点与最终结果之间规划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想去的地方。而敏捷方法则采用小步快跑,每走完一步再调整并为下一步确定方向,直到真正的终点。
2) 质量。敏捷方法对每一次迭代周期的质量都有严格要求。一些敏捷方法如极限编程等,甚至使用测试驱动开发,即在正式开发功能代码之前先开发该功能的测试代码。这些都为敏捷项目的整个开发周期提供了可靠的质量保证。
3) 速度。敏捷团队只专注于开发项目中当前最需要的、最具价值的部分。这样能很快地投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态。
4) 丰厚的投资回报率。在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。
5) 高效的自我管理团队。敏捷开发要求团队成员必须积极主动,自我管理。在这样的团队中工作,每个团队成员的技术能力、交流、社交、表达和领导能力也都能得以提高。
3. 企业导入敏捷的准备
公司导入敏捷应做好如下准备:
1) 公司高层作为敏捷导入的推动者,引领全员进行敏捷变更。公司高层,能够协调各种组织级的问题,同时拥有乐于挑战经验丰富的开发团队,有公司高层担任敏捷导入的推动者,能大大提升敏捷变更的成功率。
2) 确定敏捷带教试点项目。在实施敏捷带教前,应选择1个有代表性项目作为带教实施的项目。该项目应考虑以下因素:
l 项目团队成员在3-9个;
l 项目周期不宜太长,建议周期在3-6个月的项目;
l 项目角色配置齐全,有需求人员、设计人员、编码人员、测试人员等;
l 项目成员要能全职投入本项目;
3) 提供敏捷带教项目合适的环境和资源。公司应为敏捷带教项目提供合适的项目环境,项目环境应考虑以下因素:
l 提供一个能容纳SCRUM团队成员在一起集中办公的区域,项目组成员可以坐在一起;
l 提供一间固定的会议室,能容纳15个人左右,主要用于培训和召开会议等;
l 提供可以清晰投影的投影仪,并确保可以清晰显示的投影屏幕;
l 提供项目工作需要的白板、白板笔、记事贴、翻页器;
l 提供开发、测试、配置管理等服务器和相关软、硬件环境。
4. 敏捷导入路线图
组织实施敏捷导入与变革,我们建议该过程需包含以下6个阶段:
1) 准备与策划:获取敏捷导入相关高层的承诺,引导全员进行敏捷变革;建立敏捷导入初始团队;进行敏捷导入与变革的策划;部署和建立敏捷信息化管理环境。
2) 培训与意识建立:实施敏捷技术培训,按照角色实施专业技术培训,获取和培育团队敏捷知识、技能和意识。
3) 角色扮演与模拟演练:基于特定的背景材料和案例以及敏捷项目管理软件,全角色扮演进行模拟沙盘实战演练,强化各角色敏捷技能。
4) 敏捷试点项目实施:敏捷教练与项目团队一道,对选定的试点项目进行实战。敏捷教练通常以带教的方式进行。
5) 流程固化与敏捷文化培育。固化过程实施成果,将敏捷实施的成果进行梳理和固化,以便在组织所有项目中推广先期的敏捷导入经验和成果,培育成员和组织的敏捷文化。
6) 总结与团队激励:总结组织导入敏捷的先进经验、识别改进提升的机会,对敏捷初始团队和相关干系人给予激励。
5. 赛宝认证中心助力企业敏捷转型
赛宝认证中心教练以组织导入敏捷技术路线为基本实施框架,以SCRUM为核心的敏捷方法技术,根据组织实际情况和具体需求制定实施方案。
1) 导入敏捷SCRUM模型
SCRUM注重组织和团队,敏捷更强调发挥个人的主观能动性,对于项目管理管理复杂、需求变更影响大、需要快速响应客户业务,SCRUM提供了很好的解决方法,通过SCRUM实施可以提高了团队的整体水平。
赛宝认证中心协助公司在组织研发内部导入敏捷SCRUM理论、实践和方法,通过敏捷带教方式建立完整的敏捷SCRUM研发管理流程、模板和范例。
2) 模拟沙盘实战演练
基于特定的背景材料和案例以及敏捷项目管理软件,全角色扮演进行模拟沙盘实战演练:
●productOwner角色实战
●ScrumMaster角色实战
●Srucmteam角色实战
模拟沙盘实战演练核心内容,但不限于:
●Sprint计划会议
●每日 Scrum 站会
●开发工作
●Sprint评审会议
●Sprint回顾会议
3) 搭建有效的专业环境
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。赛宝认证中心协助公司建立敏捷开发的环境,包括敏捷项目管理环境、持续集成环境、测试环境等。公司可以根据自身基础选择开源或商业软件作为敏捷工具。
4) 咨询与教练
赛宝认证中心带教教练和公司管理人员分析并选定一个软件研发项目,并与公司确定SCRUM团队成员。
赛宝认证中心带教教练与确定的软件研发项目团队一起工作,指导项目团队正确的使用敏捷的实践,包括:开展需求分析,制定发布计划和迭代计划,开展软件架构设计、开展持续集成,进行配置管理,进行软件测试等。
当项目团队达到独立开展工作的情况下,赛宝认证中心带教教练采用旁站指导,纠正敏捷团队各角色中的问题,并给予及时的纠正,帮助软件研发项目团队建立正确的工作习惯和工作方法。