十二个原则
我们最重要的目标是,通过<b>尽早持续地交付有价值的软件</b>来满足客户的需求。
持续尽早向客户交付软件
<b>欢迎</b>对需求提出<b>变更</b>,即使在项目开发后期也不例外。敏捷过程要善于利用需求变更,帮助客户获得竞争优势。
拥抱变化
要<b>不断交付可用的软件</b>,周期从几周到几个月不等,且越短越好。
频繁的发布可用软件
项目实施过程中,业务人员与开发人员必须始终<b>在一起通力协作</b>。
客户与开发在一起
要善于<b>激励</b>项目人员,给予他们所需要的环境和<b>支持</b>,并<b>相信</b>他们能够完成任务。
以人为本
无论是对团队内还是团队间,最有效的沟通方法是<b>面对面的交谈</b>。
<b>可用的软件</b>是衡量进度的主要指标。
衡量开发过程的标准是交付可用的软件
敏捷过程提倡可持续的开发。项目发起人、开发人员和用户应该都能够始终<b>保持步调稳定。</b>
稳定的开发速度
对技术的<b>精益求精</b>以及对设计的<b>不断完善</b>将提高敏捷性。
敏捷高效的设计
要做到<b>简洁</b>,即尽最大可能减少不必要的工作,这是一门艺术。
简单有效,效能为上
最佳的架构、需求和设计将出自于<b>自组织</b>的团队
重视teamwork
团队要<b>定期反省</b>怎样做才能更有效,并相应地<b>调整团队的行为</b>
积极调整
项目开发生命周期
预测型生命周期
定义:传统方法,提前进行大量计划工作,然后一次性执行。执行是一个连续的过程。
特点:(瀑布、统一交付)
需求:固定
活动:完整项目一次性执行
交付:一次性交付
目标:管理成本
适用场景:
充分了解拟交付产品
有厚实的行业实践基础
整批一次性交付产品有利于相关方
迭代型生命周期
定义:允许对未完成的工作进行反馈,从而改进和修改相应工作任务。
特点:(重复、循环)
需求:动态
活动:重复执行直到取得正确成果
交付:一次性交付
目标:正确的结果
增量型生命周期
定义:向客户提供各个已完成的交付成果,从而可以立即使用。
特点:(渐进、持续交付)
需求:动态
活动:每个增量执行一次
交付:多次交付
目标:速度
适用场景:
管理日常风险
应对小的需求变更,难以处理影响到架构的变更
敏捷型生命周期
定义:敏捷方法,既有迭代,也有增量,便于完善工作,频繁交付。
特点(小步迭代、快速试错):
需求:动态
活动:重复执行直到取得正确成果
交付:多次交付
目标:得到客户反馈持续交付价值
适用场景:
根据Stacey矩阵分析,需求不确定但技术确定 或 需求确定但技术不确定 的情况下使用
出现繁杂问题,需要小步迭代,快速验证试错
混合型生命周期
定义:预测型+敏捷型
使用场景:
传统到敏捷转型过渡期
使用每种生命周期的优点