Professional Documents
Culture Documents
Agile Enginerring Practices - Key
Agile Enginerring Practices - Key
Agile Enginerring Practices - Key
photo: http://www.flickr.com/photos/nicmcphee/
From: Kent Beck To: Jeff Sutherland <jsutherland> 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 from HBR? I've written patterns for something very similar and I want to make sure I steal as many ideas as possible. Kent
Continuous Integration
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
Commit
Commit
10
Commit
Checkout
11
Commit
Checkout
12
Commit
Checkout
13
14
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
18
2. Behavior.
19
20
21
22
23
Commit
1. Compile & Build 2. Unit Tests 3. Integration Tests 4. Report Errors A broken build or Checkout integration test here ...
24
Commit
1. Compile & Build 2. Unit Tests 3. Integration Tests 4. Report Errors A broken build or Checkout integration test here ... will get propagated here, here and here.
25
26
27
28
29
30
31
32
education.
33
References
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
35
36
1. Add a test
37
38
39
40
5. Refactor
41
Red/Green/Refactor
42
43
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, Torchiano
45
Over a period of time, TDD will lead to suite of automated integration tests.
46
References
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 TestDriven Development (PDF) Universitat Karlsruhe, Germany
47
Refactoring
48
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
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
54
55
56
If somebody talks about a system being broken for a couple of days while they are refactoring ...
57
58
Refactoring is a very specific technique, founded on using small behavior-preserving transformations - Martin Fowler
59
References
60
Pair Programming
61
62
Two team members working on the same code base and working side-by-side
63
photo: http://www.flickr.com/photos/improveit/
64
photo: http://www.flickr.com/photos/improveit/
67
photo: http://www.flickr.com/photos/improveit/
68
71
Pair Programming significantly reduces the number of defects, and greatly increase the quality of the code.
72
73
There are many issues mostly related to loss of personal space and lack of privacy.
74
Why do we care?
75
76
77
What would it mean to you if your cost of change was linear rather than exponential?
78
Thank You!
79