71
速度 ——敏捷开发的丹田之气 徐毅 本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可 转载必须注明出处和作者。

速度——敏捷开发的丹田之气(2011敏捷中国大会)

  • Upload
    yi-xu

  • View
    755

  • Download
    8

Embed Size (px)

Citation preview

Page 2: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*关于我

曾任职诺基亚西门子网络公司全球精益及敏捷转型部门担任精益及敏捷顾问。

专长于大型组织(>500人)的敏捷迁徙转

变。精通各种风格、类型的黑盒测试,包括验收性测试驱动开发、探索性测试、测试自动化等等。在辅助一个400人的大

型组织搭建、规范化测试自动化系统及实践之后,选择传授敏捷/Scrum以及精

益的要义,辅导其他组织进行转变。兴趣广泛,包括但不限于各种类型测试、敏捷/Scrum及精益。

国内敏捷会议的常客,近期的有敏捷中国2009、2010 、2011 ,2010及2011的Scrum Gathering Shanghai,以及2009、2010、2011年的敏捷全球之旅中国站。

更多信息请看LinkedIn主页:http://cn.linkedin.com/in/kaveri

Page 3: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 4: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 5: 速度——敏捷开发的丹田之气(2011敏捷中国大会)
Page 6: 速度——敏捷开发的丹田之气(2011敏捷中国大会)
Page 7: 速度——敏捷开发的丹田之气(2011敏捷中国大会)
Page 8: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 9: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

实现

确认 交流

Page 10: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 12: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

用工具画UML图挺

快的呀?

产品列表没法管…

用户故事

到底要

怎么用啊

结对编程?

太浪费了!

Page 13: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 14: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*庐山

Page 15: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*象

*盲人

Page 16: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*敏捷实践全景鸟瞰

Page 17: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 18: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 19: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

业务人员和开发人员必须相互合作,

项目中的每一天都不例外。

不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。

*

Page 20: 速度——敏捷开发的丹田之气(2011敏捷中国大会)
Page 23: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

* Monopoly(大富翁/强手棋/地产大享)

Monopoly,国内又称大富翁、强手棋,号称全世界卖得最多的桌上游戏Monopoly游戏的发明,要追溯到1934年,当时一个叫Charles B.

Darrow的美国人把自己发明的Monopoly游戏拿去给出版商Parker Brothers,希望可以批量生产,但当场就被Parker Brothers以52个设计错误拒之门外。但Darrow并没放弃,他自己联系了一个相熟的出版商,印刷了一批Monopoly游戏投放市场,收到的反应却出奇的好。当他第二次踏上Parker Brothers的门槛后,Monopoly得以大批上市,并在出版的第一年----1935年就成为美国最热卖游戏,并在接下来的七十几年时间售出超过2亿套(只是官方统计数字,算是中国里面的盗版大富翁,绝对远超这个数字)。 。

*

Page 24: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 25: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

First, find out use cases by drawing use case diagram. Use case is a description of a

system's behaviour as it responds to a request that originates from outside that

system. The use case technique is used to capture a system's behavioural

requirements by detailing scenario-driven threads through the functional

requirements.

Then, start from one specific use case, identify top level user stories, which follows

the "As a <role>, I want <feature>, so that <motivation>.". Top level user story is too

big to implement, we need to split it into smaller user stories. User story is a

software system requirement formulated as one or two sentences in the everyday or

business language of the user.

Page 26: 速度——敏捷开发的丹田之气(2011敏捷中国大会)
Page 27: 速度——敏捷开发的丹田之气(2011敏捷中国大会)
Page 28: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

System Sequence Diagram

illustrates external I/O

events for system scenarios.

Page 29: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*C

ockburn

-style

Use

Case

Text

Then we made :

Play Monopoly Main Success Scenario

10 Player wants to StartNewGame?

20 Player MakeMove?

30 Player PerformsAction?

40 Player EndsTurn? (repeat steps 20-40 until game ends)

EXTENSIONS------------------

30a Player buys property This is only legal if the property is available and player has enough money 1. Player gives money to the bank 2. Board is updated to reflect the change in property

30b Player pays rent This is only legal if the property is owned by another player 1. System identifies who is the owner of the field 2. Cash is transfered to the owner

30c Player is using a community card This is happening in case the player has landed on a field requireging usage of a community card

40a Active Player receives rent 1. System identifies who is the owner of the land 2. Cash is transfered to the owner

* Player sells a property

Page 30: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

domain model, or Domain Object Model (DOM)

in problem solving and software engineering can

be thought of as a conceptual model of a system

which describes the various entities involved in

that system and their relationships.

Page 31: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

Acceptance Tests (in Agile Software Development) are usually created by business

customers and expressed in a business domain language. These are high level tests to

test the completeness of a user story or stories 'played' during any sprint/iteration.

Page 32: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

Activity Diagram

is a loosely

defined diagram

technique for

showing

workflows of

stepwise

activities and

actions, with

support for choise,

iteration and

concurrency.

Page 33: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

Communication Diagram models the

interactions between objects or parts in

terms of sequenced messages.

Page 34: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

Class Diagram is a type of static structure diagram that describes the structure of a

system by showing the system's classes, their attributes, and the relationships

between the classes.

Page 35: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 36: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。

可工作的软件是进度的首要度量标准。

Page 37: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

*Having pseudo-acceptance-tests on the wall, it's time to realize them now. The test automation framework we used was www.robotframework.org. which is a keyword-driven framework for acceptance tests in tabular format.

*Acceptance Test Driven Development (ATDD) practice drives development from automated acceptance tests, those executable acceptance tests. After written those pseudo tests into Robot format, we got a red FAIL of execution, since there was no keywords nor production code.

Page 38: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

联系我:多年的实战经验,包括自用、培训和辅导他人。包括利用它进行测试自动化和ATDD,帮助团队和组织提高他们的测试自动化能力。

Page 39: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

Setting Value

Library MonopolyLibrary

Test

Case Action

IN:

rounds

IN:

Players

Post Condition:

Actual Rounds

Post Condition:

All Pieces

Current Square

Post

Condition:

game Stop

Post Condition:

Output Trace

Test1 Run The Game And

Check Post Conditions ${2} ${2} ${2} NOT goSquare TRUE NOT NULL

Test2 Run The Game And

Check Post Conditions ${17} ${2} ${17}

TRUE NOT NULL

Keyword Action Argument Argument Argument Argument Argument Argument

Run The Game

And Check Post

Conditions

[Arguments] ${rounds} ${players} ${actual

rounds}

${all pieces

current

square}

${game

stop}

${output

trace}

Init The Game ${rounds} ${players}

Run The Game

${testReturn}

Get Actual

Rounds

Should Be Equal ${actualRounds} ${testReturn}

*Robot Tests

Page 41: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。

以简洁为本,

它是极力减少不必要工作量的艺术。

Page 42: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

CI + ATDD + TDD + PP + CODING DOJO

Page 43: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

1. Information Expert

2. Creator

3. Controller

4. Low Coupling

5. High Cohesion

6. Polymorphism

7. Pure Fabrication

8. Indirection

9. Protected Variations

General Responsibility Assignment Software Pattern

http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29

Page 45: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

*duplicate code or data

* long method

*unclear names

*magic constants

*high coupling (e.g., “data envy”)

* low cohesion

*case logic rather than polymorphism

*data object (record object)

*comments that explain what code does

http://en.wikipedia.org/wiki/Code_smell

Page 46: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。

经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。

Page 47: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

可持续

Page 48: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

敏捷过程倡导可持续开发。

责任人、开发人员和用户要能够共同维持其步调稳定延续。

团队定期地反思如何能提高成效,

并依此调整自身的举止表现。

Page 49: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

透明

检验

调整

Page 51: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 52: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 55: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 56: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

融会贯通

一目了然

同步反馈

群策群力

Page 57: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*自组织团队

Page 58: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

融会贯通

一目了然

同步反馈

群策群力

Page 59: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 60: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

融会贯通

一目了然

同步反馈

群策群力

Page 61: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*• 可视化管理

• 团队身边可视化、触手可及的信息

• 相关信息全部位于一个平面

Page 62: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

融会贯通

一目了然

同步反馈

群策群力

Page 64: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 65: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 66: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*“研究发现,任何一个世界级水平都需要起码一万小时的训练,”神经科学者丹尼尔·莱维汀写道。

*

Page 67: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*速度领悟练习

* 领悟

练习

爱迪生

Page 68: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

Page 69: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*

mailto:[email protected]

mailto:[email protected]

Skype : KAVERJODY

新浪微博: 徐毅-Kaveri

腾讯QQ : 17376122

http://blog.sina.com.cn/kaverjody

http://cn.linkedin.com/in/kaveri

http://kaverjody.wordpress.com

Page 70: 速度——敏捷开发的丹田之气(2011敏捷中国大会)

*This work is licensed under the Creative

Commons Attribution-NonCommercial-NoDerivs

2.5 China Mainland License.

*To view a copy of this license, visit

http://creativecommons.org/licenses/by-nc-

nd/2.5/cn/ or send a letter to Creative

Commons, 444 Castro Street, Suite 900,

Mountain View, California, 94041, USA.

本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可

转载必须注明出处及作者。