`
fly_ever
  • 浏览: 152715 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

e书 agile patterns 读书笔记(2)

阅读更多

http://fly-ever.iteye.com/blog/251911

3,adopting agile practices :敏捷实践采纳策略
two tables;
Pattern to Business Value Mappings
practices and clusters that improve business value



Pattern to Smell Mappings
practices and clusters that alleviate smells



以商业价值为中心Be business-value focused
面向目标Be goal-oriented
采用迭代的方式来采纳实践Adopt iteratively
使用敏捷的方法来采纳实践Be agile about you adoption
测试驱动的采纳策略Test-Driven Adoption strategies:
this loop-set a goal,adopt a practice,then validate the practice against the expected goal-is a 'test-driven adoption strategy'



第二部分:模式
介绍:什么是模式
模式是被发现而不是被创造出来的。
本书中的模式以下面的格式来描述:
名称
描述:实践或者实践集合的一个简短介绍。
{依赖图:}一个表示内部依赖或者集合关系的图形。
商业价值:一个分好类的该实践或者实践集合能提升的商业价值描述。
Sketch概述:一个虚构的故事,用来描述这个模式在软件开发中应用的环境。
上下文环境:适应的前置条件和环境,环境为一系列不变量的集合:通过应用这个模式,这些问题不会变化。
Forces模式能解决的问题:
Therefore:模式描述
Adoption:
But:



Automated Developer Tests  (Abstract Pattern):
开发者写好一系列测试,来减少寻找和修复bug所用的花费——因此来提高代码质量——并且使得如果需求按增量式变化时能够适应设计的变化。Disciplined writing of tests encourages loosely coupled designs。



依赖于Test-First Development 和Test-Last Development 。代码集体所有。
商业价值:
通过在开发周期的早期发现错误来提高质量。灵活性和产品生命周期得到提示,通过创造一个用测试和重构构成的‘安全网’。早期价值是显而易见的,不太明显的好处是Automated Developer Tests也能减少推出市场的时间以及通过缩减开发时间而节约的开发成本。
概述:
采纳:执行实践时采取的步骤
1, 写的测试代码作为一个小组来提交。
这是一个人的问题而不是工具的问题。
认同测试代码和产品代码同样重要。
认同相对于一个没有测试代码的功能实现,没有功能实现更好。
认同耐心,在当前的项目基础上,可能需要花费2到6个月才能养成这个实践的习惯,并且明显的感受到该实践带来的好处。
2, 找一个易用的工具。
3, 象对待产品代码一样对待测试代码,测试代码也应该被好好设计。
4, 努力从其他地方得到帮助:同事,书籍,网络。简单的方法没必要测试。
5, 代码集体所有来支持团队开发。
6, 考虑结对编程来降低团队的学习曲线。
7, 从现在开始,写测试代码。虽然之前会花费很多时间,但是最后,他将提高你的速度。
8, 测试时的初始数据会与时俱增,两个方法解决这个问题:
a) 公有的初始代码放到公有类中,这些类承担创建类和测试数据的任务——他们是一种特殊的工厂类型。
b) 使用Mocks和Stubs来保持对象的简洁。
9, 两种方法都行,重要的是要达成共识,使用其中的一种方法并遵守它。
10, 使用Mock对象和Stubs来测试与外部通信的类。
11, 如果使用ObjectMother,避免添加太多新的工具。
但是:
这个实践是脆弱的,它需要团队中的每个人都执行。
测试代码也需要好的设计,需要好的质量。
测试有时候不被人重视:我们在这里打破了好的设计的规则,不可避免会导致脆弱的代码和难写的测试。对待测试代码需要如产品代码一样。
写测试代码,尤其是对已存在的没有写测试的代码补上测试代码,将会很困难,但不能放弃。
所有的测试代码应该一直被运行,并通过——没有任何借口。
过度强调测试代码覆盖率的重要性。
1, 测试代码覆盖率与测试质量不同。
2, 测试代码和被测试方法可能并不是一对一的关系,而是多对多的关系。而代码覆盖率则是一对一的测试形式。
Variations
有两种类型的自动测试。Test-First Development和Test-Last Development。



Test-Last Development
Test-Last Development involves writing test after writing the code to support the requirements for a particular task.they exercise the system as it has already been built.

商业价值:
与Automated Developer Tests商业价值一样。
Sketch


Test-First Development
Test-First Development involves writing tests before writing the production code that will support and eventually pass that test.Tests resulting from this practice tend to be a developer’s understanding of requirements because there is no “design” at its inception.
商业价值:
与Automated Developer Tests商业价值一样。一般来说,Test-First 和 Test-Last开发都达到一样的商业价值,而Test-First development 更加有效率,但也更难被采纳。
Adoption:
如何采纳这种模式:
1, Required,一个团队一起学习这项实践,对团队中每个人都要有耐心。至少要在两个月内不去怀疑这项实践,把开发的速度放慢。
2, Recommended,把团队成员送到TDD培训班。
3, Highly Recommended,提供帮助(外部或者内部的)使团队能上手,有某个已经实践过TDD的人,来跟这些开发者结对编程,帮助他们学习这个技术。一般的,需要一个人在每个月中拿出一周来与4到5个开发者结对编程,这样持续几个月。
4, Highly Recommended,采纳结对编程。
  • 大小: 102 KB
  • 大小: 141.6 KB
  • 大小: 22.3 KB
2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics