agile enginerring practices.key
Post on 14-Apr-2018
222 Views
Preview:
TRANSCRIPT
-
7/27/2019 Agile Enginerring Practices.key
1/40
An Introduction to AgileEngineering Practices
1
Kane Mar
Danube Technologies, Inc
The New New ProductDevelopment Game
- Takeuchi and Nonaka
2
-
7/27/2019 Agile Enginerring Practices.key
2/40
photo: http://www.flickr.com/photos/nicmcphee/
3
4
-
7/27/2019 Agile Enginerring Practices.key
3/40
From: Kent Beck
To: Jeff Sutherland
Reply: 70761.1216@compuserve.com
Date: Mon, 15 May 1995 18:01:15 -0400 (EDT)Subj: HBR paper
_________________________Is there a good place to get reprints of the SCRUM paper fromHBR? I've written patterns for something very similar and I want tomake sure I steal as many ideas as possible.
Kent
5
6
Continuous Integration
-
7/27/2019 Agile Enginerring Practices.key
4/40
What is ContinuousIntegration?
7
Continuous Integration is a softwaredevelopment practice where members of a
team integrate their work frequently,usually each person integrates at least daily- leading to multiple integrations per day.
Each integration is verified by anautomated build (including test) to detectintegration errors as quickly as possible.
-Martin Fowler
8
-
7/27/2019 Agile Enginerring Practices.key
5/40
9
Commit
10
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
-
7/27/2019 Agile Enginerring Practices.key
6/40
11
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
Checkout
12
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
Checkout
-
7/27/2019 Agile Enginerring Practices.key
7/40
13
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
Checkout
14
-
7/27/2019 Agile Enginerring Practices.key
8/40
Why is Continuous Integrationimportant?
15
1. Reducing Risk.
16
-
7/27/2019 Agile Enginerring Practices.key
9/40
When we are integrating theproduct all the time the risk of a
failed integration is spreadthroughout the duration of the
project ...
17
rather than being left until theend.
18
-
7/27/2019 Agile Enginerring Practices.key
10/40
2. Behavior.
19
If doing a complete build andtest of any product is difficult ...
20
-
7/27/2019 Agile Enginerring Practices.key
11/40
doing it continuously is verydifficult.
21
Teams need to develop differentways of working.
22
-
7/27/2019 Agile Enginerring Practices.key
12/40
Never letting the build break.
23
24
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
CheckoutA broken build orintegration test
here ...
-
7/27/2019 Agile Enginerring Practices.key
13/40
25
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
CheckoutA broken build orintegration testhere ...
will get propagatedhere, here and here.
The Friday Afternoon Pattern ofbroken builds.
26
-
7/27/2019 Agile Enginerring Practices.key
14/40
Delivering smaller incrementsof well tested functionality.
27
Investing in automated testingframeworks.
28
-
7/27/2019 Agile Enginerring Practices.key
15/40
Test, Test and Test again.
29
I believe that allteams shouldpractice CI.
30
-
7/27/2019 Agile Enginerring Practices.key
16/40
The tools are free, like free beer.
31
The only price to pay forintroducing CI is ...
32
-
7/27/2019 Agile Enginerring Practices.key
17/40
education.
33
http://www.martinfowler.com/articles/continuousIntegration.html
http://cruisecontrol.sourceforge.net/
http://www.jetbrains.com/teamcity/
http://luntbuild.javaforge.com/
https://hudson.dev.java.net/
34
References
-
7/27/2019 Agile Enginerring Practices.key
18/40
35
Test Driven Development
What is Test DrivenDevelopment?
36
-
7/27/2019 Agile Enginerring Practices.key
19/40
1. Add a test
37
2. Run all test and see the newones fail
38
-
7/27/2019 Agile Enginerring Practices.key
20/40
3. Write some code
39
4. Run the automated tests andsee them succeed
40
-
7/27/2019 Agile Enginerring Practices.key
21/40
5. Refactor
41
Red/Green/Refactor
42
-
7/27/2019 Agile Enginerring Practices.key
22/40
Why is TDD important?
43
TDD is a method of designingsoftware, not merely an
approach to testing.
44
-
7/27/2019 Agile Enginerring Practices.key
23/40
We found that test-firststudents on average wrote moretests and, in turn, students whowrote more tests tended to be
more productive.
- Erdogmus, Hakan; Morisio,
Torchiano45
Over a period of time, TDD willlead to suite of automated
integration tests.
46
-
7/27/2019 Agile Enginerring Practices.key
24/40
Erdogmus, Hakan; Morisio, Torchiano. On the Effectiveness of Test-firstApproach to Programming, Proceedings of the IEEE Transactions on Software
Engineering, 31(1). January 2005. (NRC 47445). We found that test-first students
on average wrote more tests and, in turn, students who wrote more tests tended tobe more productive.
Newkirk, JW and Vorontsov, AA. Test-Driven Development in Microsoft .NET,Microsoft Press, 2004.
Feathers, M. Working Effectively with Legacy Code, Prentice Hall, 2004
Beck, K. Test-Driven Development by Example, Addison Wesley, 2003
Muller, Matthias M.; Padberg, Frank. About the Return on Investment of Test-Driven Development (PDF) Universitat Karlsruhe, Germany
47
References
48
Refactoring
-
7/27/2019 Agile Enginerring Practices.key
25/40
What isRefactoring?
49
Refactoring is a disciplined technique forrestructuring an existing body of code,altering its internal structure without
changing its external behavior.- Martin Fowler
50
-
7/27/2019 Agile Enginerring Practices.key
26/40
Each transformation (called a 'refactoring')does little, but a sequence of
transformations can produce a significantrestructuring.
51
double disabilityAmount() {if (_seniority < 2) return 0;if (_monthsDisabled > 12) return 0;if (_isPartTime) return 0;// compute the disability amount
double disabilityAmount() {if (isNotEligableForDisability()) return 0;// compute the disability amount
52
-
7/27/2019 Agile Enginerring Practices.key
27/40
Refactoring is a disciplined technique forrestructuring an existing body of code,altering its internal structure without
changing its external behavior.- Martin Fowler
53
How do we establish that thebehavior is unchanged?
54
-
7/27/2019 Agile Enginerring Practices.key
28/40
Continuous Integration
and
Test Driven Development
55
The termRefactoring is poorlyused.
56
-
7/27/2019 Agile Enginerring Practices.key
29/40
If somebody talks about asystem being broken for a
couple of days while they arerefactoring ...
57
you can be pretty sure they arenot refactoring ...
58
-
7/27/2019 Agile Enginerring Practices.key
30/40
Refactoring is a very specifictechnique, founded on using
small behavior-preservingtransformations
- Martin Fowler
59
Fowler, Martin (1999). Refactoring. Addison-Wesley. ISBN 0-201-48567-2.
http://martinfowler.com/bliki/RefactoringMalapropism.html
60
References
-
7/27/2019 Agile Enginerring Practices.key
31/40
61
Pair Programming
What isPair Programming?
62
-
7/27/2019 Agile Enginerring Practices.key
32/40
Two team members working onthe same code base and working
side-by-side
63
photo: http://www.flickr.com/photos/improveit/
64
-
7/27/2019 Agile Enginerring Practices.key
33/40
I told you Slashdot was more popular than Digg
65
Modern software development is full of drama ...
66
-
7/27/2019 Agile Enginerring Practices.key
34/40
photo: http://www.flickr.com/photos/improveit/
67
photo: http://www.flickr.com/photos/improveit/
68
-
7/27/2019 Agile Enginerring Practices.key
35/40
The thrill of victory ...
69
And the agony of defeat.
70
-
7/27/2019 Agile Enginerring Practices.key
36/40
Why isPair Programmingimportant?
71
Pair Programming significantlyreduces the number of defects,and greatly increase the quality
of the code.
72
-
7/27/2019 Agile Enginerring Practices.key
37/40
It is, however, very difficult tointroduce.
73
There are many issues mostlyrelated to loss of personal space
and lack of privacy.
74
-
7/27/2019 Agile Enginerring Practices.key
38/40
75
Why do we care?
76
-
7/27/2019 Agile Enginerring Practices.key
39/40
80% of the cost of software isincurred after it has gone live.
77
What would it mean to you ifyour cost of change was linear
rather than exponential?
78
-
7/27/2019 Agile Enginerring Practices.key
40/40
Thank You!
79
top related