完整团队
•客户、管理者、开发紧密工作在一起。
•客户
–指定义产品特性并排列特性优先级的人或团体。
–同一公司的业务分析师、质量保证专家、市场专家;用户团体的代表;支付开发费用的人。
–都是能和团队一起工作的成员。
•客户或能代替客户的人最好和开发在同一个房间工作。
用户故事
•了解需求只要做到能估算的程度就够了。
•必须知道存在很多细节及细节分类,但不必知道特定细节。
•看到新系统的问世是关注需求的最好时刻。
•和客户反复讨论获取需求细节,但不记录细节,只记录一些有共识的言语在卡片上用来提醒这次交谈,并作相应的需求评估。估算是基于在和客户交谈时得到的对细节的理解进行的。
•客户根据故事优先级及估算代价来安排时间。
短交付周期
•迭代计划
–每次迭代2周。
–迭代是一次小交付,可能会被加入到产品中,也可能不会
–迭代由一组用户估算组成,这些故事是客户根据开发人员确定的预算选出来的
–迭代开始,客户就同意不再改变故事的定义和优先级
–开发人员将故事分解成任务并按优先级开发
•发布计划
–3个月(6个迭代)的工作量一次大的交付,加入产品中
–发布计划是可变的。客户可以随时改变发布内容,但尽量不要更改一次迭代
验收测试
•记录用户故事的细节,描述每个特性的细节
•在用户故事实现之前或同时编写
•可自动、反复运行
•成为真正的需求文档
•故事的所有验收测试通过,故事才算开发完成。
•一旦一个测试通过,就不允许其再次失败
•系统不能工作的状态不允许超过几小时
•单元测试验证了系统中小的组成单元的正确性,是白盒测试
•验收测试是用来验证系统满足客户需求的黑盒测试
•验收测试由不了解系统内部机制的人编写。如客户、业务分析师、测试、质量保证。
•验收测试能自动执行,通常使用一种特定的规格描述语言编写,这种语言比较适合非技术人员阅读和使用。
•验收测试是真正的需求文档
•验收测试使系统在架构层面解耦
•促使作出优良的架构决策
•在未作任何设计和未写任何代码时,写验收测试
•基于意图编程,即按想象的样子去编写
•FitNesse
•单元测试和验收测试是可执行的需求文档
结对编程
•代码由结对的人在同一工作站完成
•一个写代码、一个观察并发现错误和改进的地方
•频繁互换角色
•结对的搭档要经常轮换
•极大促进知识在团队的传播
TDD
•TDD三定律
–在写产品代码前,先写单元测试
–一旦在写的单元测试不通过或编译失败,就停止写
–一旦单元测试通过,就停止写产品代码
•先写一个失败的单元测试,再写代码使其通过
•编写测试代码和业务代码之间的更迭在几分钟
•测试代码循序渐进的对代码编写进行指导
•有利于重构
•为提高可测性,有利于解除各模块的耦合
•保证行为正确,放心修改代码
•从调用者角度去观察将开发的代码,开发的接口更易于调用(使用)
•提高可测性
•测试是API使用手册
Collective ownership
•任何人可以签出任意模块进行修改
•不对某一特定模块负责,需要参与各个不同方面的工作
•不会被限制在自己的专业领域
持续集成
•每天进行多次构建
•所有测试都通过才算完成签入
•需要合并代码和解决冲突
可持续的开发速度
•软件项目是马拉松长跑
•有意识到保持稳定、适中的速度
•不允许加班(发布前例外)
开放的工作空间
•开放的房间
•两把椅子
•状态图、任务明细表、UML
•嗡嗡声
•了解对方工作状态
•激励讨论
•在充满积极讨论的屋子里工作,工作效率不会降低反而会成倍提高
计划游戏
•确定项目持续时间、花费成本
•客户发现特性->分解成用户故事
•开发用“点数”估算
•开发估算初始速度->几个迭代后获得平均速度
•速度
–已经实现的故事的估算之后
–跟踪速度是最为重要的管理手段之一
•当开发速度变得准确时,可调整发布计划
迭代计划
•迭代周期1-2周
•用户故事的实现顺序由开发决定
•迭代开始后,客户不能改变迭代期内的故事
•即使没有实现所有的故事,迭代也要在指定的日期结束
•计算本次迭代的速度,用于下一次迭代
任务计划
•开发将故事分解成任务,一个任务在4-16小时能完成
•迭代到一半时,应有半数故事已完成
•迭代要完成的是故事,不是任务
跟踪
•速度图
•余量图
•这2图是所有敏捷方法的真正实质所在
简单设计
•尽可能简单、有表达力
•仅关注本次迭代中的用户故事
•不断变迁系统设计,使之达到最优
•XP团队的系统可能不从基础设施开始,先以最简单的方式实现第一个用户故事,但迫切需要时才引入数据库、中间件等基础设施
XP设计指导原则
•考虑能够工作的最简单的事情
–能使用文件,不使用DB
–能使用socket,不使用ORB、WS
–能不用多线程就不用
•你不需要它
–只有在有证据,或者有十分明显的迹象表明现在引入这些基础设施比继续等待更加合算时,才引入
•消除重复
–不能容忍重复代码
–使用函数、基类、抽象、模板方法
重构
•是一些小改造,改进系统结构
•改造后跑单元测试
•持续进行,每隔一个小时或半个小时就要去做的
•软件模块的三项职责
–能完成所需的功能
–能应对变化
–能使阅读者易理解
隐喻(metaphor:比喻)
•隐喻是系统的全局视图,是系统的愿景
•归结为一个名字系统,提供系统组成元素的词汇表
•给某个模块命名、打比方
TDD、设计、编程
•TDD与设计
–TDD——自上而下的测试优先设计
–关注具有实际行为的对象(上),而不是仅仅存储数据的对象(下)
–
•与TDD相关的两种编程方式
–基于意图的编程
–基于巧合的编程
分享到:
相关推荐
Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...
通过阅读和学习这些JAVA学习笔记,开发者不仅可以掌握JAVA编程的基本技能,还能深入了解其设计理念,从而更好地应对各种实际开发问题。不断更新和完善自己的JAVA知识体系,对于成为一名优秀的JAVA开发者至关重要。
通过阅读这些笔记,学习者不仅可以掌握前端开发的基本技能,还能了解到实际开发中可能会遇到的问题和解决策略。 文件列表中的"CSS1"和"CSS2"可能包含了一些CSS的实例或练习,"html"文件夹可能包含了HTML页面示例,...
这篇压缩包文件“上海初三英语阅读精讲笔记1——阅读A篇题型-原创.rar”显然是针对中国上海市初中三年级学生的一份英语学习资料,重点在于提高学生的阅读理解能力。其中包含了一个PDF文档,名为“上海初三英语阅读...
S7-200 Smart入门笔记1——流水灯 按钮 S7-200 Smart入门笔记1——流水灯 定时器 S7-200 Smart入门笔记2——读时钟 S7-200 Smart入门笔记3——呼吸灯 S7-200 Smart入门笔记4——全局变量和局部变量 S7-200 Smart入门...
标题中的“论文笔记模板——自用xmind模板.zip”表明这是一个使用XMind软件创建的个人使用的论文笔记模板,被压缩成ZIP格式以便于存储和分享。XMind是一款强大的思维导图和头脑风暴软件,它可以帮助用户整理思路,...
**思源笔记插件——汇总散落在整个工作空间的任务 Siyuan Note Plugin** 思源笔记(Siyuan Note)是一款开源的个人知识管理系统,它以其强大的笔记组织功能和灵活的自定义能力受到许多用户的喜爱。在日常工作中,...
记忆笔记一——文化生活二 .pdf
读书笔记——AGoodManIsHardToFind.pdf 读书笔记——AGoodManIsHardToFind.pdf 是一篇关于美国南方女作家 Flannery O'Connor 的读书笔记。该笔记主要讨论了 O'Connor 的小说《好人难寻》(A Good Man Is Hard to ...
本资源提供了一份“论文笔记模板——自用xmind模板”,旨在帮助用户以更有序的方式整理和记录论文阅读心得。 Xmind是一款强大的思维导图软件,它以其直观的界面和丰富的功能深受用户喜爱,尤其适用于整理复杂信息和...
学习笔记之——基于pytorch的FSRCNN 把我的代码上传了,后续有更正会更新这个代码
公开课笔记3——局部加权回归、逻辑斯蒂回归、感知器算法 公开课笔记4——牛顿方法、指数分布族、广义线性模型 公开课笔记5——生成学习、高斯判别、朴素贝叶斯 公开课笔记6——NB多项式模型、神经网络、SVM初步 ...
读书笔记:数学之美读书笔记——吴军博士2020年寒假大三上学期
Spring.NET学习笔记22——整合WCF(应用篇) http://www.cnblogs.com/GoodHelper/archive/2010/05/15/SpringNet_Wcf.html
个人网课学习笔记
刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
【上海初三英语阅读精讲笔记1——阅读A篇题型-原创.pdf】是一份针对初三学生英语阅读理解的专项训练资料,旨在提升学生的阅读技能,尤其是处理不同类型阅读题目的能力。以下是笔记中涉及的主要知识点: 1. **语篇...
刘冬编写的Spring.NET学习笔记21——整合WebService的例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/19/SpringNet_WebService.html
刘冬编写的Spring.NET学习笔记26——整合NVelocity例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_NVelocity.html