定义:敏捷是指快速或适应性强的东西。基于迭代开发的软件开发方法称为“敏捷过程模型”。与瀑布模型不同,在软件测试的敏捷模型下,开发和测试操作都是同时进行的。
敏捷开发的核心价值
个体与交互重于过程和工具:强调高效沟通
可用的软件重于完备的文档:强调轻文档,文档不应该作为工作验收的标准
客户协作重于合同谈判:主动了解当下的需求
响应变化重于遵循计划:能够主动迎接变化。
轻文档、轻流程、重目标、重产出。
需求收集->设计需求->开发、迭代->测试->部署->审查、反馈
敏捷方法
Scrum
定义:Scrum是一种敏捷开发方法,专注于基于团队的开发环境中的任务管理。
Scrum Master:建立团队
Product Owner:创建产品积压工作
Scrum Team:团队组织和监督
Sprint:每次迭代都称为Sprint
Backlog:产品积压工作是一个列表,其中包含创建最终产品所需的所有信息
Sprint Backlog:开发里程碑
极限编程XP
当客户的需求或规格不断变化时,或者当他们不确定系统的功能时。
代码审查---测试---增量开发是有益的---简单---设计---集成测试
晶体方法论(水晶编程)
章程:创建开发团队,进行初步可行性分析,设计初始策略并微调开发方法是此阶段的一部分
循环交付:在主要开发期间,团队在两个或多个交付周期中更新和优化发布计划。通过一个或多个集成迭代地程序测试,实现需求的子集。一个完全集成的产品可供实际用户使用。
总结:此阶段包括部署到用户环境、部署后评审和反思等任务
动态软件开发方法(DSDM)
DSDM是一种软件开发快速应用程序开发技术,可提供敏捷的项目分发结构。用户必须主动连接才能使用DSDM,并且团队已被授予决策权限。DSDM采用以下技术:时间盒,MoSCoW规则,原型设计。
此方法涉及7个阶段,它们是:
项目前期
可行性研究
商业研究
功能模型迭代
设计和构件迭代
实现
项目后期
功能驱动开发(FDD)
功能驱动开发的主要目标是为客户提供及时更新的功能软件。在FDD的所有阶段,都需要报告和进度跟踪。“设计和构建”功能是此方法的核心。
生命周期:
构件模型
准备特征列表
根据功能进行规划
根据功能设计
根据功能构件
特点:
以客户为中心
短迭代是存在的,即FDD生命周期使用基本迭代和短迭代来有效地按计划完成工作,并保持大型项目的进行。
域模型和功能列表是在生命周期的前两个活动中构件的,而后两个活动则获得了70%以上的工作量
FDD确保定期向软件添加新功能,确保项目的长期成功。
精益软件开发(LSD)
即时生产的前提是精益软件开发过程的基础。其目标是在降低成本的同时加快软件开发速度。
开发过程:
摆脱浪费---促进学习---推迟承诺---及时交货---赋予团队全力---建立诚信---优化整个过程
敏捷模型
优势:
与客户进行一对一的沟通
持续交付
既高效又满足公司需求的设计
可以随时进行更新
减少了整体开发时间
客户满意度被定义为快速开发和交付有价值的软件
客户、开发人员和产品负责人经常会面,专注于客户的需求,而不是流程和工具
该产品开发迅速,并在几周内而不是一个月内定期提供
缺点:
对必要的设计和文档没有足够的关注
敏捷开发过程的成本比传统的开发成本略高
不适合小规模开发项目
项目专家有必要在会议期间做出批判性判断
如果项目经理不清楚他或她想要的要求和结果,项目很容易偏离轨道
一旦项目完成并且开发人员被分配到另一个项目,由于缺乏足够的文档,已完成项目的维护可能会变得具有挑战性。