5. 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
5
8. “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
24. 1. Compile & Build
Commit 2. Unit Tests
3. Integration Tests
4. Report Errors
A broken build or
Checkout integration test
here ...
24
25. 1. Compile & Build
Commit 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
44. TDD is a method of designing
software, not merely an
approach to testing.
44
45. “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
46. Over a period of time, TDD will
lead to suite of automated
integration tests.
46
47. 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 Test-
✦
Driven Development (PDF)” Universitat Karlsruhe, Germany
47
50. “Refactoring is a disciplined technique for
restructuring an existing body of code,
altering its internal structure without
changing its external behavior.”
- Martin Fowler
50
51. “Each transformation (called a 'refactoring')
does little, but a sequence of
transformations can produce a significant
restructuring.”
51
52. 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
53. “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. How do we establish that the
behavior is unchanged?
54