一、什么是敏捷开发?
一种以人为核心,持续迭代的开发方法
迭代:将一个大任务分解为多个小任务,将任务进行分期开发,每一期完成
后进行评审和总结
二、敏捷开发分为哪些呢?
Scrum (增量开发),注重开发过程
XP (极限编程),注重结果
三、敏捷开发 Scrum 怎么理解?
Scrum 将开发任务分为多个周期 (Sprint),
需要先对每个 Sprint 确定需要完成的需求
几个基本术语:
冲刺周期 (Sprint):中文译为冲刺、短跑,
是 Scrum 的专有术语,冲刺周期,通俗的
讲就是实现一个“小目标”的周期,一般需要
2-6 周时间
用户故事 (User Story):用户的外在业务需
求,拿银行系统来举例的话,一个 Story
可以是用户的存款行为,或者是查询余额
等等,也就是所谓的小目标本身
开发任务 (Task):由故事拆分成的具体开
发任务
四、Scrum 里面的成员包括?
产品负责人(Product Owner):与客户沟通
需求,交付日期,与团队沟通需求,考虑
团队研发实力
流程管理员(Scrum Master):负责整体进度,没有行政权力,不帮团队做决定,但
需要提出建议
团队成员(Scrum Team):一般是自组织的,一般 5-9 人 (设计师,程序员,架构
师,测试等)
五、Scrum 工件包括?
产品需求列表 (Product Backlog):产品首
先将需求按照优先级进行排列,产生一个
Product Backlog
迭代需求列表 (Sprint Backlog):有了
Product Backlog,我们需要通过 Sprint
Planning Meeting (Sprint 计划会议) 挑选
出用户故事 (Story) 作为每次迭代完成的
目标
冲刺燃尽图 (Sprint burn down):它表示
的是剩余工作量与剩余时间的关系,用于
提醒大家项目进度和要完成的任务,说白
了就是记录当前周期的需求完成情况
六、Scrum 会议包括?
需求会议(Sprint Plan Meeting: Sprint):主要
由产品负责人和团队共同确定需求
每日站会(Daily Standup Meeting):只有团队成员才可以发言,其他人只能旁听,每个人都
需要回答三个问题:
① 昨天完成了什么;
② 今天打算完成什么;
③ 工作中遇到什么问题;
可以将三点内容写成标签放到任务版上(可以用JIRA)
审核会议(Review Meeting):运营人员,产品,邀请的用户操作后进行的功能评审
回顾会议(Retrospective Meeting):总结一段时间后的开发遇到的问题,以便之后的迭代中
进行改进
开发一个 Sprint 时需要进行需求(Sprint 需求
会议确定),开发,测试等工作,需要每天开
Scrum 站会,主要让成员明白现在的开发情
况,进度,和提出遇到的问题 Sprint 时间结
束时,需要得出一个产品版本,用户会去用,
使用后进行反馈
六、敏捷开发和瀑布式开发区别?
1. 工作方式:
瀑布式开发:
① 重视和强调过程文档,以文档驱动项目,
将软件项目开发周期严格划分为几个固定
阶段 (需求分析,系统设计,软件设计,
编码,测试,交付),每个阶段结束都有
对应的详细文档作为输出;
② 上一个阶段的输出就是下一个阶段的输
入,直至完成整个开发流程
敏捷开发:
① 更加强调人和协作 (团队之间,客户与团
队之间),在高度协作的环境中使用迭代方
式进行增量开发
② 客户可对每次迭代的成果提出修改意见,
开发人员进行调整和完善
③ 进行多次迭代直至完成完整产品交付
2. 优点:
瀑布式:
① 每个阶段目的明确,阶段人员完全专注
于该阶段的工作,有助于提高阶段效率
② 由于存在详细的过程文档,在早期就能
明确提出项目的范围和概况,能够更有
效的组织和调配资源开展项目
敏捷开发:
① 阶段性成果可以在开发过程中被客户查
验,从而降低软件开发风险性
② 灵活性高,需求的变更可在任何时候进
行
3. 缺点:
瀑布式开发:
① 开发过程中大量的文档,极大的增加了
工作量
② 项目后期才能展示成果给客户,增加了
项目开发的风险
③ 需求变更成本高
敏捷开发:
① 最终交付的内容无法预测,预期和实际
完成的内容经常会有很大差异
② 敏捷需要高水平的协作以及开发人员和
用户之间的定期沟通,业务和IT人员在
沟通前需要做大量的准备工作,在很多
情况下,业务的沟通时间无法保证
适用项目:
瀑布式开发:软件需求十分明确并且不会
有频繁变化的项目
敏捷开发:需求不明确、具有创新性或者
需要抢占市场的项目