进阶方法包括极限编程、自适应开发、水晶方法、特征驱动开发等,他们都认为传统的软件工程方法文档量太“重”了,成为“重量级”方法,而敏捷方法则是“轻量级”方法。
一、极限编程
极限编程由价值观、原则、实践和行为四个部分组成,它们彼此相互依赖、关联,并通过行为贯穿于整个生命周期。
四大价值观
沟通
如果小组成员之间无法做到持续的、无间断的交流,那么协作就无从谈起。
简单
“够用即好”,尽量地简单化。
反馈
向团队内部、客户、管理层反馈,通过持续、明确的反馈来暴露软件状态的问题。
勇气
每时每刻都在变化,需要有勇气来面对快速开发,甚至重新开发。
在四大价值观之下,隐藏着一种更深刻的东西,那就是尊重。因为这一切都建立在团队成员之间相互关心、相互理解的基础之上。
五大原则
快速反馈
简单性假设
逐步修改
提倡更改
优质工作
12个最佳实践
计划游戏
先快速指定一份概要的计划,随着细节不断清晰,在逐步完善计划。
小型发布
持续集成,小步快走
隐喻
简单设计
简单不是忽略设计,而是认为设计不应该在编码前一次性完成。
测试先行
重构
要有重构的勇气,目的是降低变化引起的风险、使得代码优化更加容易。
结对编程
降低了沟通成本,提高了工作质量。
集体代码所有制
每个人都拥有全部代码,也都需要对全部代码负责。
持续集成
每周工作40小时
现场客户
将客户请到现场,时刻保证“客户负责业务决策,开发团队负责技术决策”。
编码标准
确保代码清晰,便于交流指导。
二、特征驱动开发FDD
FDD也是一个迭代的开发模型,弱化了过程在软件开发的地位。FDD强调软件开发不可缺少的三个要素:人、过程、技术。
FDD角色
项目经理
是开发的组织者,同时对外沟通
首席架构设计师
系统架构设计
开发经理
负责团队日常开发,解决开发中的技术问题和资源冲突。
主程序员
带领小组完成特征的详细设计和构建工作,要求有一定工作经验病能带动小组工作。
程序员
开发
领域专家
对业务领域精通的人,一般是客户、系统分析员等。
FDD核心过程
开发整体对象模型
业务建模,强调系统的完整地面向对象建模。
构造特征列表
特征是一个小的、对客户有价值的功能,特征包括动作、结果、目标,颗粒度最好在两周之内。
计划特征开发
项目经理根据特征列表、特征之间的关系安排开发任务。
特征设计
主程序员带领小组进行详细设计,为构建做准备。
特征构建
特征设计和构建合起来就是实现阶段,这两个阶段反复迭代,直到开发完成。
FDD主张个体所有对系统开发更有帮助。
三、Scrum
1 | 特点: |
(1)五个活动
产品待办事项列表梳理
Sprint计划会议
固定时长:推荐时长是每周对应两小时或者更少。
一、需要完成那些工作:由开发团队根据当前产品增量的状态、团队过去的工作情况、团队生产力及代办事项优先级决定。
二、如何完成工作:工作拆分成小的单元,每个单元不超过一天。
每日Scrum会议
团队内部沟通
固定时长,不超过15分钟
我完成了什么,我要做什么,我的阻碍
Sprint评审会议
固定时长:推荐时长是每周对应一个小时。
会议邀请其他相关干系人参加。
会议内容:演示产品增量、新想法,调整产品待办事项列表。
Sprint回顾会议
固定时长:推荐时长是每周对应一个小时。
回顾团队在流程人际关系及工具方面做得情况,识别出好的,不好的,找出潜在改进事项。
(2)五大价值观
承诺
愿意对目标作出承诺
专注
把心思和能力用到承诺的工作上
开放
项目中的一切开放给每个人看
尊重
每个人都有他独特的背景和经验
勇气
有勇气做出承诺,履行承诺,接受别人的尊重
四、水晶方法Crystal
水晶方法Crystal家族包括Crystal Clear、Crystal Yellow、Crystal Orange、Crystal Red。
最常用的是Crystal Clear——透明水晶方法。
透明水晶方法七大体系特征
1 | 经常交付 |
五、其他敏捷方法
开放式源码:
1 | 开发人员地域分布广 |