agile engineering practices
Post on 01-Nov-2014
4.917 Views
Preview:
DESCRIPTION
TRANSCRIPT
An Introduction to Agile Engineering Practices
1
Kane Mar
“The New New Product Development Game”
- Takeuchi and Nonaka
2
photo: http://www.flickr.com/photos/nicmcphee/
3
4
From: Kent BeckTo: Jeff Sutherland <jsutherland>Reply: 70761.1216@compuserve.comDate: Mon, 15 May 1995 18:01:15 -0400 (EDT)Subj: HBR paper
_________________________ Is there a good place to get reprints of the SCRUM paper from
HBR? I've written patterns for something very similar and I want to make sure I steal as many ideas as possible.
Kent
5
6
Continuous Integration
What is Continuous Integration?
7
“Continuous Integration is a software development 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 an automated build (including test) to detect integration errors as quickly as possible.”
-Martin Fowler
8
9
Commit
10
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
11
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
Checkout
12
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
Checkout
13
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
Checkout
14
Why is Continuous Integration important?
15
1. Reducing Risk.
16
When we are integrating the product all the time the risk of a
failed integration is spread throughout the duration of the
project ...
17
rather than being left until the end.
18
2. Behavior.
19
If doing a complete build and test of any product is difficult ...
20
doing it “continuously” is very difficult.
21
Teams need to develop different
ways of working.
22
Never letting the build break.
23
24
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
CheckoutA broken build or integration test here ...
25
1. Compile & Build2. Unit Tests3. Integration Tests4. Report Errors
Commit
CheckoutA broken build or integration test here ...
will get propagated here, here and here.
The Friday Afternoon Pattern of broken builds.
26
Delivering smaller increments of well tested functionality.
27
Investing in automated testing frameworks.
28
Test, Test and Test again.
29
I believe that all teams should practice CI.
30
The tools are free, like free beer.
31
The only price to pay for introducing CI is ...
32
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
35
Test Driven Development
What is Test Driven Development?
36
1. Add a test
37
2. Run all test and see the new ones fail
38
3. Write some code
39
4. Run the automated tests and see them succeed
40
5. Refactor
41
Red/Green/Refactor
42
Why is TDD important?
43
TDD is a method of designing software, not merely an
approach to testing.
44
“We found that test-first students on average wrote more tests and, in turn, students who wrote more tests tended to be
more productive.”- Erdogmus, Hakan; Morisio,
Torchiano45
Over a period of time, TDD will lead to suite of automated
integration tests.
46
✦ Erdogmus, Hakan; Morisio, Torchiano. “On the Effectiveness of Test-first Approach 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 to be 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
What is Refactoring?
49
“Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without
changing its external behavior.”- Martin Fowler
50
“Each transformation (called a 'refactoring') does little, but a sequence of
transformations can produce a significant restructuring.”
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
“Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without
changing its external behavior.”- Martin Fowler
53
How do we establish that the behavior is unchanged?
54
Continuous Integrationand
Test Driven Development
55
The term Refactoring is poorly used.
56
“If somebody talks about a system being broken for a
couple of days while they are refactoring ...”
57
“you can be pretty sure they are not refactoring ... “
58
“Refactoring is a very specific technique, founded on using
small behavior-preserving transformations”- Martin Fowler
59
✦ Fowler, Martin (1999). “Refactoring.” Addison-Wesley. ISBN 0-201-48567-2.
✦ http://martinfowler.com/bliki/RefactoringMalapropism.html
60
References
61
Pair Programming
What is Pair Programming?
62
Two team members working on the same code base and working
side-by-side
63
photo: http://www.flickr.com/photos/improveit/
64
“I told you Slashdot was more popular than Digg”
65
Modern software development is full of drama ...
66
photo: http://www.flickr.com/photos/improveit/
67
photo: http://www.flickr.com/photos/improveit/
68
The thrill of victory ...
69
And the agony of defeat.
70
Why is Pair Programming important?
71
Pair Programming significantly reduces the number of defects, and greatly increase the quality
of the code.
72
It is, however, very difficult to introduce.
73
There are many issues mostly related to loss of personal space
and lack of privacy.
74
75
Why do we care?
76
80% of the cost of software is incurred after it has gone live.
77
What would it mean to you if your cost of change was linear
rather than exponential?
78
Thank You!
79
top related