agileworld-2011-06-06 - improuv · microsoft solutions framework (msf) for agile agile data method...

10
!"#$% '%$( '#% )#*+ ,#% '%$( )- .%#( "%,/%+( +0(1 ,0)) !"#$ ,%/ 20#3)(/%04 "%.-/,%3 #)( 5+/#)(-6+ 20(+#)1 !"#$% 78%),09 83, :*/847#)*+1 ;<= ;>=?;@@ A-//%)(%/B C!"#$% D%E%$-64%3( #) /06#,$9 F%*-4#3" (+% 3-/4G Scrum Agile Modeling Feature-driven development (FDD) Test-driven development (TDD) eXtreme Programming (XP) Lean development Microsoft Solutions Framework (MSF) for Agile Agile Data Method Adaptive Software Development (ASD) Six Sigma Crystal Behavior-driven development (BDD) Dynamic Systems Development Method (DSDM) Iterative development Rational Unified Process (RUP) Spiral Waterfall Capability Maturity Model Integration (CMMI) ISO 9000 Do not use a formal process methodology “Please select the methodology that most closely reflects the development process you are currently using.” (select only one) 10.9% 6.0% 3.8% 3.4% 2.9% 2.1% 1.8% 1.6% 1.3% 0.9% 0.3% 0.2% 0.2% 16.3% 2.7% 1.6% 8.4% 2.5% 2.5% 30.6% Agile, 35% Iterative, 21% Waterfall, 13% Base: 1,298 IT professionals Source: Forrester/Dr. Dobb’s Global Developer Technographics® Survey, Q3 2009 H8%$$%B 7+% A-//%)(%/ '0E%= D%E%$-6 2030"%4%3( 7--$)1 H? ?;@;

Upload: truongtuong

Post on 27-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

!"#$%&'%$('#%&)#*+&,#%&'%$(&)-&.%#(&"%,/%+(&+0(1&,0))&!"#$&,%/&20#3)(/%04&"%.-/,%3&#)(

5+/#)(-6+&20(+#)1&&!"#$%&78%),09&83,&:*/847#)*+1&;<=&;>=?;@@

A-//%)(%/B&C!"#$%&D%E%$-64%3(&#)&/06#,$9&F%*-4#3"&(+%&3-/4G

© 2010, Forrester Research, Inc. Reproduction ProhibitedMay 5, 2010

The Forrester Wave™: Agile Development Management Tools, Q2 2010 For Application Development & Delivery Professionals

2

AGILE DEVELOPMENT IS RAPIDLY BECOMING THE NORM

In a recent survey, 35% of surveyed organizations described their primary development method as Agile; Scrum, at 11%, was the most popular Agile development approach (see Figure 1). In a di!erent survey, we questioned the nature of Agile adoption and found that 39% of the organizations we surveyed consider their implementation mature (see Figure 2). "e mainstream business press is even starting to get on the Agile bandwagon, referencing its use at eBay as crucial to the success of eBay’s business.1 "is increased level of adoption has serious implications for development organizations’ tool use, changing not only the process model being followed but also the very nature of work undertaken and who is involved in that work.

Figure 1 Agile Is Organizations’ Primary Development Approach

Source: Forrester Research, Inc. 56100

ScrumAgile Modeling

Feature-driven development (FDD)Test-driven development (TDD)

eXtreme Programming (XP)Lean development

Microsoft Solutions Framework (MSF) for AgileAgile Data Method

Adaptive Software Development (ASD)Six Sigma

CrystalBehavior-driven development (BDD)

Dynamic Systems Development Method (DSDM)

Iterative developmentRational Unified Process (RUP)

SpiralWaterfall

Capability Maturity Model Integration (CMMI)ISO 9000

Do not use a formal process methodology

“Please select the methodology that most closely reflectsthe development process you are currently using.”

(select only one)

10.9%6.0%

3.8%3.4%

2.9%2.1%1.8%1.6%1.3%

0.9%0.3%

0.2%0.2%

16.3%2.7%

1.6%8.4%

2.5%2.5%

30.6%

Agile, 35%

Iterative, 21%

Waterfall, 13%

Base: 1,298 IT professionalsSource: Forrester/Dr. Dobb’s Global Developer Technographics® Survey, Q3 2009

H8%$$%B&7+%&A-//%)(%/&'0E%=&D%E%$-6&2030"%4%3(&7--$)1&H?&?;@;

A-//%)(%/B&D#%&4%#)(%3&I/"03#)0J-3%3&)%+%3&#+/%&K46$%4%3J%/83"&0$)&08)"%/%#L&03

© 2010, Forrester Research, Inc. Reproduction Prohibited May 5, 2010

The Forrester Wave™: Agile Development Management Tools, Q2 2010 For Application Development & Delivery Professionals

3

Figure 2 Most Organizations View Their Agile Adoption As Mature

Scaling Agile Requires Automation

Our interviews with application development professionals revealed that scaling Agility is a common issue — and that scaling Agile practices requires implementing tools. !e vice president of a large "nancial company described the need for automation: “When you have one project on a whiteboard with Post-its, it is "ne, but when you have "ve or six projects, the whiteboard approach just does not cut it. We haven’t even got enough whiteboards.” Automation is required because:

· Sharing status is time-consuming. !is is particularly true when the team is spread across many locations and is working on many projects. !e ability to quickly and easily share status information is crucial when the team self-selects work and changes direction based on that work’s results.

· Many Agile practices require automation. As Agile implementations mature, teams adopt more-sophisticated practices associated with testing, architecture, and build. To be e#ective, these practices require a sound automation foundation that supports automated test integration, code comparison, and integrated build management.

· Retrospectives require information. As teams work through sprints, team members can make and record many important observations. !ese observations help improve the process and are a key input to retrospectives. Without automation, it is very hard to remember the status of a project at a particular moment or to be able to do analysis to improve working practices.

Source: Forrester Research, Inc. 56100

“How far has your adoption of Agile proceeded?”

Base: 52 development professionals who have adopted Agile(percentages do not total 100 because of rounding)

Source: Q3 2009 Global Agile Adoption Online Survey

We have just startedadopting Agile methods

25%

We are still evaluatingAgile and have not

yet begun to adopt it6%

We have a mature implementationof Agile methods

39%

We are midway inour adoption of Agile

31%

H8%$$%B&7+%&A-//%)(%/&'0E%=&D%E%$-6&2030"%4%3(&7--$)1&H?&?;@;

A-//%)(%/B&M.%#&N9O$%3&(/%#F%3&0"#$%)&P/-Q%O(4030"%4%3(

© 2010, Forrester Research, Inc. Reproduction Prohibited May 5, 2010

The Forrester Wave™: Agile Development Management Tools, Q2 2010 For Application Development & Delivery Professionals

5

Figure 3 Two Closed Loops Drive Agile Automation

Dashboards Enable Visibility And Progress

Measurement and so!ware development have historically been poor bedfellows; heated debates abound about the value of measuring x or y on development projects.2 Agile changes this with a clear focus on progress, quality, and status metrics. It also changes who is interested in measures, making measurement one of the team’s key responsibilities. "is increased focus on dashboards requires teams to provide:

· Progress information on tasks. "e team creates tasks and selects them for work, with individuals committing estimates and reporting progress against this work. Tasks become the primary unit of discussion in daily Scrum meetings. Tasks are also linked with other artifacts such as builds and test results.

· Linkage between project artifacts and status information. Project status is greatly a#ected by the status of key project artifacts such as tests, builds, and code. Agile projects require that teams report this information in a timely manner in a way that shows both the status and state of these artifacts. For example, teams must report the status of the build and its relationship with completed tests. "is information allows the team to see which tests are outstanding and which have been completed. By aggregating this information across the project, the team can understand the project’s true status.

Source: Forrester Research, Inc. 48153

Production planningclosed loop

Production controlclosed loop

Change management Service management

Portfolio management

Change-awarecontinuous integration

JIT demandmanagement

Releasemanagement

Testing and quality assurance

Build and software

configurationmanagement

Deployment

Project management

A-//%)(%/&0/"84%3J%/(&+#%/BR&N8/&:O0$#%/83"&F/08*+(&403&7--$)R&,#%&7--$)&4S))%3&,#%&.#*+J"%3&7/%#F%/&83(%/)(S(M%3

H8%$$%B&7+%&A-//%)(%/&'0E%=&D%E%$-6&2030"%4%3(&7--$)1&H?&?;@;

H80$#(T(1&U-//%O(+%#(&83,&7%)(%3

U8/M%&V%)*+#*+(%&,%)&H80$#(T()4030"%4%3(

'033 :*+$0".-/( W-//%#(%/ K3&,%/&:-L.0/%X

84&@Y;; H80$#(T()O-3(/-$$%&30*+"%$0"%/(1&!8))-/J%/%3&Z%+$%/+0L%/&P/-,8O(% A-/,1&709$-/ XXX

84&@Y[; H80$#(T()6/SZ83":(%8%/83"&F0)#%/(&08Z&:(0J)JO%3 :+%.0/( XXX

84&@Y>; W-/F%8"%3,%&20))30+4%3&#4&"03M%3&\3(%/3%+4%3 '=]=D%4#3" ^\3#(

84&@Y_` a8$$RA%+$%/)(/0(%"#% :#b&:#"40 XXX

84&@YY; \4Z0))%3,%)&H80$#(T()O-3M%6(H80$#(T(&0$)&:9)(%4M#%$1&7H2

K)+#O0.01&'=]=D%4#3"1&7H2 XXX

+c6Bdd,%=.#O#6%,#0=-/"d.#O#dH80$#(e5[e!f()4030"%4%3(

7DDB&D0)&P/-"/044&#)(&/#*+J"

C!30$9M%&+-.&0&6/--Z&*03&F%&"#E%3&(+0(&0&*$0))&-Z&*-468(0J-3)&-F%9)&*%/(0#3&/%g8#/%4%3()&R&(+0(&#)(1&%b6$#*#($9!"#$#%!#&%!'()*+,()"&.+#*+&48)(&+-$,&#Z&.%&0/%&(-&6/-E%&(+0(&03&0$"-/#(+4&6%/Z-/4)&*-//%*($9h&#&%)!-.+#%!-.+#%!$!/.(0.$1!#&$#!1$2%"!#&%!'()*+,()"!'(1%!#.3%G],)"%/&D#QO)(/0B&!&5-3)(/8*JE%&!66/-0*+&(-&(+%&P/-F$%4&-Z&P/"04&5-//%*(3%))1&&@Y>_

U%3(&i%*O&83,&]/#*+&V0440B&^\3#(

Testgetriebene Entwicklung

173

Robert Martin hat in seinem Buch „Clean Code“ drei Regeln für testgetriebene Entwicklung beschrieben: ! „Du darfst keinen Produktionscode schreiben, wenn Du keinen Unit-Test hast, der

fehlschlägt76.“ – die Regel, nur dann neuen (Produktiv-) Code zu schreiben, wenn ein fehlschlagender Test hierfür existiert, haben wir bereits erwähnt. Wichtig dabei ist auch die Betonung auf „fehlschlagend“, es reicht also nicht aus, einen Test zu haben, dieser muss auch fehlschlagen. Umgekehrt ausgedrückt, wenn der Test „auf grün“ geht, dann darf nicht mehr im Produktivcode weiter entwickelt werden.

! „Du darfst nicht mehr Testcode schreiben als dafür nötig ist, dass der Test fehlschlägt – Kompilierfehler zählen als fehlgeschlagener Test77. “ – Wie oben bereits erwähnt darf nur ein Unit-Test geschrieben werden und davon nur soviel, damit der Test fehlschlägt. Diese Regel hilft uns, auch den Testcode einfach und sauber zu halten und beim Schreiben von Tests ebenso kleine Schritte zu gehen.

! „Du darfst nicht mehr Produktionscode schreiben als dafür nötig ist, dass der aktuelle Test erfolgreich wird78.“ – Im Klartext bedeutet diese Regel, dass wir nur den allereinfachsten Code schreiben dürfen, um diesen Test zu befriedigen (und die bisherigen Tests auf Grün zu halten).

Die letzte der drei Regeln von „Uncle Bob“ hat weitreichende Konsequenzen. Wer diese wirklich beherzigt, ist gezwungen, zum Beispiel auch mal eine Konstante oder ein Literal als Rückgabewert einer neuen Funktion zu liefern. Erst mit den nächsten, aufkommenden Testfällen wird im Zuge des Refaktorisierens der Algorithmus verbessert. Dieser Schritt ist die Keimzelle von emergenten Design und evolutionärer Architektur. In weiterer Konsequenz bedeutet das, dass keine einzige Zeile neuer Code geschrieben werden darf, wenn kein fehlschlagender Test existiert und wie bereits erwähnt, das Refaktorisieren zum eigentlichen „Code-Entwickeln“ wird., ausgehend vom wirklich einfachsten nur erdenklichen Lösungsweg. Hier spiegeln sich die Ideen von zwei sehr wichtigen Prinzipien – erstens „Keep it simple, stupid“ und zweitens „Premature Optimization“ (siehe dazu auch Kapitel 11 zu Clean Code). In Abbildung 9.5 sind die zulässigen Pfade zwischen den Rot- und Grün-Phasen bei TDD eingezeichnet.

Abbildung 9.5: Die möglichen Pfade bei TDD

76 You may not write production code until you have a failing unit test 77 You may not write more of a unit test than is sufficient to fail. And not compiling is failing. 78 You may not write more production code than is sufficient to pass the currently failing test

GREENRED

Write failing test

Implement test

RefactorProduction

code

Refactortests

Unsafe Refactoring

path

UselessTests

Remove code

Remove tests

D#%&:(/8O(8/&,%/&:-L.0/%

D#%&F$%#F%3,%3&N#%$%&,%/&:-L.0/%%3(.#*O$83"

j03"$%F#"%&N#%$%!F)(/0OJ-3

j-)%&U-66$83"&d&U-+T)#-3

W%/4%#,%&+-+%&U-)(%3&#3&)6T(%3&k3,%/83"%3

W%/)*+#%,%3%&2#c%$&.%/,%3&08)6/-F#%/(:(/8O(8/#%/(%&P/-"/044#%/83"

l-+%&P/-"/044#%/)6/0*+%3

IFQ%O(-/#%3J%/(%&P/-"/044#%/83"

'0))%/Z0$$&d&j#Z%&59*$%&U-3M%6(

5$%03&5-,%

m%Z0*(-/#3" 7DD&d&!7DD

!"#$%&!/*+#(%O(8/

U-3J38#%/$#*+%&K3(%"/0J-3

P0#/&P/-"/044#3"

===&#3M.#)*+%3&+0F%3&.#/&%#3#"%&2#c%$

D#%&:-L.0/%&83,&,0)&i8)#3%))

!""

#$%&'()*&+

,-./%0&*/-1)'23.%&

456%7)8.695&:)%&:%.

4-)*;8):$:%&)%&456%7)8.6)%$)

4-$<:%=%&>8&%&?*/%

4!""

?@444

!""

#$%&'()*&+

,-./%0&*/-1)'23.%&

456%7)8.695&:)%&:%.

4-)*;8):$:%&)%&456%7)8.6)%$)

4-$<:%=%&>8&%&?*/%

4!""

?@

!""

#$%&'()*&+

,-./%0&*/-1)'23.%&

456%7)8.695&:)%&:%.

4-)*;8):$:%&)%&456%7)8.6)%$)

4-$<:%=%&>8&%&?*/%

4!""

?@

444

!""

#$%&'()*&+

,-./%0&*/-1)'23.%&

456%7)8.695&:)%&:%.

4-)*;8):$:%&)%&456%7)8.6)%$)

4-$<:%=%&>8&%&?*/%

4!""

?@

5#.$#%0+"'&%!67$)3)0

8)9%",,()"%)#"'&%+*3)0%)

6.(*32#%

6.(:%2#%

!""

#$%&'()*&+

,-./%0&*/-1)'23.%&

456%7)8.695&:)%&:%.

4-)*;8):$:%&)%&456%7)8.6)%$)

4-$<:%=%&>8&%&?*/%

4!""

?@

5#.$#%0+"'&%!67$)3)0

8)9%",,()"%)#"'&%+*3)0%)

6.(*32#%

6.(:%2#%

:*/84 nP j%03 U03F03

'KPRj#4#()

'KPRj#4#()W0$8%&:(/%04

W0$8%&:(/%04

!"#$%&]3"=!/F%#(&4#(&U,=

W#)80$#)#%/83"

:%$F)(-/"03#)#%/(%&7%04) K3)6%*(&o&!,06( 7%*+3#)*+%&]bM%$$%3M U-3J38#%/$#*+%&

W%/F%))%/83"

m%)6%O( m%(/-)6%OJE%3 j%/3%3&Zp/,%/3 ]46#/#)*+%&P/-M%))%

XXX

RRR

XXX

XXX

l%/08)Z-/,%/83"%3

7%*+3#)*+%&]bM%$$%3M!!!"#$%&"'(()*"+'#,",')"-*'#.'/')#",)+"01'2)#"3#1'#))*'#1"#'%&4"5221)()'#"6)*7*)'4)4!

5+%*O$#)(%3R\4)%(M83"!!!"8)*")'#)"51'2)"9)4&$,)"('4")'#)("*'1',)#"-*$.)++")'#:;&*4"$,)*"<(+)4.4="'+4"#'%&4"51'2!!!">#,'6',<)#"<#,">#4)*5?@$#)#"+'#,"8'%&@1)*"52+"-*$.)++)"A$3'&!$0+7%!6.(;%""%B"<#,"C)*?.)<1)"

5-3.09q)&V%)%(M!!$*15#'.5@$#+"8&'%&",)+'1#"+D+4)(+"!!!"5*)"%$#+4*5'#),"4$"/*$,<%)",)+'1#+"8&'%&"5*)"%$/')+"$:"4&)"%$((<#'%5@$#"+4*<%4<*)+"$:"4&)+)"$*15#'.5@$#+

AS3Z&-/"03#)0(-/#)*+%&V/S3,%&ZS/&W%/)*+.%3,83"

E!F<"6')2"G$(/2)H'4I4J!K)&21)2)'4)4)"L?52')*<#1"A,)#?)#"'#"M54%&)+N!O*)##)#",)*"3#4+%&)',<#1)#"6$#",)*"0<+:;&*<#P!C<#+%&,)#?)#Q!O)%&#'+%&)"L%&<2,)#

4%+/B&+c6Bdd#46/-8E=*-4d%3dF$-"dZe5[ei53ZR0)6%O(%R,%/Rr/4%36-$#JOR0$)R8/)0*+%3RZe5[ei5/RE%/)*+.%3,83"