
在百度百科中,对敏捷开发这一字条做了释义,那就是:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。
换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
也许你看了这个概念词条仍然对这一概念并不是特别了解,那么今天小编就带你好好了解一下什么是敏捷开发?

敏捷开发是在2007年前后引入中国的,目前敏捷开发模式已逐步在互联网行业成为主流、走到今天很多传统的软件公司或者小作坊式的公司还在摸索前行,敏捷管理模式也开始走进更多的非软件行业。
敏捷的英文是Agile,它是是一套原则和价值观,并不是我们平时所见的具体的工作形式。
敏捷开发是一种以人为核心、迭代、循序渐进的开发理念。这与我们平常意义的瀑布流开发模式不同,不是以文档作为驱动,而是更注重人与人之间的沟通、交流。它的意义在于帮助整个团队做出更好的决策。
看看上面的宣言和原则就能看出敏捷是绝对的结果导向,去文档化,去流程化,高效沟通和合作是究极奥义。
举个栗子
因为这一概念让人不甚了解,那么我们可以看看它的具体工作方式:
ASD、AUP、DSDM、XP、FDD、Kanban、RAD、Scrum,都是实际意义上的敏捷开发的工作方法,其中Scrum和XP是国内最流行的两种。
其中Scrum把着力点放在了过程上,而XP则更倾向于实践和实战性,在实际应用中两者进行结合应用,采用 Scrum 方式也可以采用 XP 方式。

关于Scrum方式:
我们先来看一下Scrum 的开发流程:
首先我们需要确认一个 PB ( Product Backlog.即按优先顺序排列的一个产品需求列表)这是由 PO(Product Owner) 负责的
ST(Scrum Team) 会根据 PB 列表,进行工作量的预估和安排
有了 PB 列表,我们需要通过 Sprint Planning Meeting( Sprint 计划会议)来从中挑选出一个 Story 作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog
Sprint Backlog 是由 ST 去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成)
在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down
做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没有用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员
当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行演示会议,也称为评审会议,产品负责人和客户都要参加,每一个Scrum Team的成员都要向他们演示自己完成的软件产品。
最后就是回顾会议,也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中
再来看看XP方式:
极限编程(eXtreme Programming,简称XP)是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。其特性包含在12个最佳实践中。相较于Scrum重视过程,XP更加重视实践。

它有以下几个特点:
1. 计划游戏 ( Planning Game )快速制定计划、随着细节的不断变化而完善
2. 小型发布 ( Small Release )系统的设计要能够尽可能早地交付;
3. 系统隐喻( System Metaphor )找到合适的比喻进行团队沟通
4. 简单设计( Simple Design )只处理当前的需求使设计保持简单,设计不是一触而就的
5. 测试驱动( Test-driven )测试先行,先写测试代码再编写程序
6. 重构( Refactoring )重新审视需求和设计,重新明确地描述它们,以符合新的和现有的需求
7. 结对编程( Pair Programming )由两个程序员在同一台电脑上共同编写解决同一问题的代码
8. 集体所有权(Collective Ownership)每个成员都有更改代码的权利,所有的人对于全部代码负责。
9. 持续集成( Continuous Integration )提倡在一天中集成系统多次,而且随着需求的改变,要不断的进行回归测试,避免了一次系统集成的恶梦。
10. 每周工作40小时 ( 40-hour Week )项目团队人员每周工作时间不能超过40小时,加班不得连续超过两周,否则反而会影响生产率。
11. 现场客户( On-site Customer )至少有一名实际的客户代表在整个项目开发周期在现场负责确定需求、回答团队问题以及编写功能验收测试。
12. 编码标准( Code Standards )强调通过指定严格的代码规范来进行沟通,代码清晰、便于交流。
总而言之,敏捷开发是遵循着快速迭代、让测试人员和开发者参与需求讨论、编写可测试的需求文档、多沟通,尽量减少文档、做好产品原型、及早考虑测试等原则,是一种极为便捷和更加优越的一种开发方式,你都get了吗?
石榴科技
石榴科技专注企业级服务十八年,致力于为客户提供和打造优秀的互联网产品,用科技的力量为企业的发展助力。通过产品+解决方案+用户体验+咨询+实施+技术研发的模式,满足客户的需求。客户名单包括海尔,海信,kidsland,松下,雷士,山东移动,皇明太阳能,青岛市政府等知名客户。
售前QQ:1427668977
售前微信:shiliukeji007


