0%

开发方法(四)敏捷方法

进阶方法包括极限编程、自适应开发、水晶方法、特征驱动开发等,他们都认为传统的软件工程方法文档量太“重”了,成为“重量级”方法,而敏捷方法则是“轻量级”方法。

一、极限编程

极限编程由价值观、原则、实践和行为四个部分组成,它们彼此相互依赖、关联,并通过行为贯穿于整个生命周期。

四大价值观

沟通

如果小组成员之间无法做到持续的、无间断的交流,那么协作就无从谈起。

简单

“够用即好”,尽量地简单化。

反馈

向团队内部、客户、管理层反馈,通过持续、明确的反馈来暴露软件状态的问题。

勇气

每时每刻都在变化,需要有勇气来面对快速开发,甚至重新开发。
在四大价值观之下,隐藏着一种更深刻的东西,那就是尊重。因为这一切都建立在团队成员之间相互关心、相互理解的基础之上。

五大原则

快速反馈
简单性假设
逐步修改
提倡更改
优质工作

12个最佳实践

计划游戏

先快速指定一份概要的计划,随着细节不断清晰,在逐步完善计划。

小型发布

持续集成,小步快走

隐喻

简单设计

简单不是忽略设计,而是认为设计不应该在编码前一次性完成。

测试先行

重构

要有重构的勇气,目的是降低变化引起的风险、使得代码优化更加容易。

结对编程

降低了沟通成本,提高了工作质量。

集体代码所有制

每个人都拥有全部代码,也都需要对全部代码负责。

持续集成

每周工作40小时

现场客户

将客户请到现场,时刻保证“客户负责业务决策,开发团队负责技术决策”。

编码标准

确保代码清晰,便于交流指导。

二、特征驱动开发FDD

FDD也是一个迭代的开发模型,弱化了过程在软件开发的地位。FDD强调软件开发不可缺少的三个要素:人、过程、技术。

FDD角色

项目经理

是开发的组织者,同时对外沟通

首席架构设计师

系统架构设计

开发经理

负责团队日常开发,解决开发中的技术问题和资源冲突。

主程序员

带领小组完成特征的详细设计和构建工作,要求有一定工作经验病能带动小组工作。

程序员

开发

领域专家

对业务领域精通的人,一般是客户、系统分析员等。

FDD核心过程

开发整体对象模型

业务建模,强调系统的完整地面向对象建模。

构造特征列表

特征是一个小的、对客户有价值的功能,特征包括动作、结果、目标,颗粒度最好在两周之内。

计划特征开发

项目经理根据特征列表、特征之间的关系安排开发任务。

特征设计

主程序员带领小组进行详细设计,为构建做准备。

特征构建

特征设计和构建合起来就是实现阶段,这两个阶段反复迭代,直到开发完成。

FDD主张个体所有对系统开发更有帮助。

三、Scrum

1
2
3
4
5
特点:
Scrum是一个增量的、迭代的开发过程。
整个开发过程由多个短的迭代周期(Sprint)组成,每个周期建议2-4周。
由Backlog管理产品需求,Backlog是按商业价值排序的需求列表,每个需求通常是一个故事。
总是优先开发最客户最有价值的需求。

(1)五个活动

产品待办事项列表梳理

Sprint计划会议

固定时长:推荐时长是每周对应两小时或者更少。
一、需要完成那些工作:由开发团队根据当前产品增量的状态、团队过去的工作情况、团队生产力及代办事项优先级决定。
二、如何完成工作:工作拆分成小的单元,每个单元不超过一天。

每日Scrum会议

团队内部沟通
固定时长,不超过15分钟
我完成了什么,我要做什么,我的阻碍

Sprint评审会议

固定时长:推荐时长是每周对应一个小时。
会议邀请其他相关干系人参加。
会议内容:演示产品增量、新想法,调整产品待办事项列表。

Sprint回顾会议

固定时长:推荐时长是每周对应一个小时。
回顾团队在流程人际关系及工具方面做得情况,识别出好的,不好的,找出潜在改进事项。

(2)五大价值观

承诺

愿意对目标作出承诺

专注

把心思和能力用到承诺的工作上

开放

项目中的一切开放给每个人看

尊重

每个人都有他独特的背景和经验

勇气

有勇气做出承诺,履行承诺,接受别人的尊重

四、水晶方法Crystal

水晶方法Crystal家族包括Crystal Clear、Crystal Yellow、Crystal Orange、Crystal Red。
最常用的是Crystal Clear——透明水晶方法。
透明水晶方法七大体系特征

1
2
3
4
5
6
7
经常交付
反思改进
渗透式交流
个人安全
焦点
与专家用户建立方便的联系
配有自动测试、配置管理和经常集成功能的技术环境

五、其他敏捷方法

开放式源码:

1
2
开发人员地域分布广
查错排障高度并行,任何人都可以将补丁发给维护人