An Introduction to Agile
 Engineering Practices
         Kane Mar




            1
“The New New Product
  Development Game”
- Takeuchi and Nonaka



         2
photo: http://www.flickr.com/photos/nicmcphee/



                                                 3
4
From: Kent Beck
To: Jeff Sutherland <jsutherland>
Reply: 70761.1216@compuserve.com
Date: Mon, 15 May 1995 18:01:15 -0400 (...
Continuous Integration




          6
What is Continuous
  Integration?



        7
“Continuous Integration is a software
development practice where members of a
    team integrate their work frequently,
us...
Commit




         9
1. Compile & Build
Commit        2. Unit Tests
              3. Integration Tests
              4. Report Errors




     ...
1. Compile & Build
Commit               2. Unit Tests
                     3. Integration Tests
                     4. Re...
1. Compile & Build
Commit              2. Unit Tests
                    3. Integration Tests
                    4. Repor...
1. Compile & Build
Commit               2. Unit Tests
                     3. Integration Tests
                     4. Re...
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...
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
1. Compile & Build
Commit                2. Unit Tests
                      3. Integration Tests
                      4....
1. Compile & Build
Commit                2. Unit Tests
                      3. Integration Tests
                      4....
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
References
  http://www.martinfowler.com/articles/
✦
  continuousIntegration.html
✦ http://cruisecontrol.sourceforge.net/
...
Test Driven Development




           35
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
 ...
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,” Pr...
Refactoring




     48
What is Refactoring?




         49
“Refactoring is a disciplined technique for
  restructuring an existing body of code,
   altering its internal structure w...
“Each transformation (called a 'refactoring')
        does little, but a sequence of
 transformations can produce a signif...
double disabilityAmount() {
   if (_seniority < 2) return 0;
   if (_monthsDisabled > 12) return 0;
   if (_isPartTime) re...
“Refactoring is a disciplined technique for
  restructuring an existing body of code,
   altering its internal structure w...
How do we establish that the
  behavior is unchanged?



             54
Continuous Integration
          and
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 ...”


            ...
“you can be pretty sure they are
      not refactoring ... “



               58
“Refactoring is a very specific
technique, founded on using
 small behavior-preserving
      transformations”
       - Mar...
References
    Fowler, Martin (1999). “Refactoring.” Addison-Wesley. ISBN 0-201-48567-2.
✦

    http://martinfowler.com/bl...
Pair Programming




       61
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.

   ...
It is, however, very difficult to
           introduce.



               73
There are many issues mostly
related to loss of personal space
      and lack of privacy.


               74
Why do we care?




       75
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
Upcoming SlideShare
Loading in...5
×

Agile Engineering Practices

3,815

Published on

My presentation to the Seattle Scrum Users group on 29th May, 2008

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,815
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
87
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Agile Engineering Practices

  1. 1. An Introduction to Agile Engineering Practices Kane Mar 1
  2. 2. “The New New Product Development Game” - Takeuchi and Nonaka 2
  3. 3. photo: http://www.flickr.com/photos/nicmcphee/ 3
  4. 4. 4
  5. 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
  6. 6. Continuous Integration 6
  7. 7. What is Continuous Integration? 7
  8. 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
  9. 9. Commit 9
  10. 10. 1. Compile & Build Commit 2. Unit Tests 3. Integration Tests 4. Report Errors 10
  11. 11. 1. Compile & Build Commit 2. Unit Tests 3. Integration Tests 4. Report Errors Checkout 11
  12. 12. 1. Compile & Build Commit 2. Unit Tests 3. Integration Tests 4. Report Errors Checkout 12
  13. 13. 1. Compile & Build Commit 2. Unit Tests 3. Integration Tests 4. Report Errors Checkout 13
  14. 14. 14
  15. 15. Why is Continuous Integration important? 15
  16. 16. 1. Reducing Risk. 16
  17. 17. 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. 18. rather than being left until the end. 18
  19. 19. 2. Behavior. 19
  20. 20. If doing a complete build and test of any product is difficult ... 20
  21. 21. doing it “continuously” is very difficult. 21
  22. 22. Teams need to develop different ways of working. 22
  23. 23. Never letting the build break. 23
  24. 24. 1. Compile & Build Commit 2. Unit Tests 3. Integration Tests 4. Report Errors A broken build or Checkout integration test here ... 24
  25. 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
  26. 26. The Friday Afternoon Pattern of broken builds. 26
  27. 27. Delivering smaller increments of well tested functionality. 27
  28. 28. Investing in automated testing frameworks. 28
  29. 29. Test, Test and Test again. 29
  30. 30. I believe that all teams should practice CI. 30
  31. 31. The tools are free, like free beer. 31
  32. 32. The only price to pay for introducing CI is ... 32
  33. 33. education. 33
  34. 34. 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. 35. Test Driven Development 35
  36. 36. What is Test Driven Development? 36
  37. 37. 1. Add a test 37
  38. 38. 2. Run all test and see the new ones fail 38
  39. 39. 3. Write some code 39
  40. 40. 4. Run the automated tests and see them succeed 40
  41. 41. 5. Refactor 41
  42. 42. Red/Green/Refactor 42
  43. 43. Why is TDD important? 43
  44. 44. TDD is a method of designing software, not merely an approach to testing. 44
  45. 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. 46. Over a period of time, TDD will lead to suite of automated integration tests. 46
  47. 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
  48. 48. Refactoring 48
  49. 49. What is Refactoring? 49
  50. 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. 51. “Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring.” 51
  52. 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. 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. 54. How do we establish that the behavior is unchanged? 54
  55. 55. Continuous Integration and Test Driven Development 55
  56. 56. The term Refactoring is poorly used. 56
  57. 57. “If somebody talks about a system being broken for a couple of days while they are refactoring ...” 57
  58. 58. “you can be pretty sure they are not refactoring ... “ 58
  59. 59. “Refactoring is a very specific technique, founded on using small behavior-preserving transformations” - Martin Fowler 59
  60. 60. References Fowler, Martin (1999). “Refactoring.” Addison-Wesley. ISBN 0-201-48567-2. ✦ http://martinfowler.com/bliki/RefactoringMalapropism.html ✦ 60
  61. 61. Pair Programming 61
  62. 62. What is Pair Programming? 62
  63. 63. Two team members working on the same code base and working side-by-side 63
  64. 64. photo: http://www.flickr.com/photos/improveit/ 64
  65. 65. “I told you Slashdot was more popular than Digg” 65
  66. 66. Modern software development is full of drama ... 66
  67. 67. photo: http://www.flickr.com/photos/improveit/ 67
  68. 68. photo: http://www.flickr.com/photos/improveit/ 68
  69. 69. The thrill of victory ... 69
  70. 70. And the agony of defeat. 70
  71. 71. Why is Pair Programming important? 71
  72. 72. Pair Programming significantly reduces the number of defects, and greatly increase the quality of the code. 72
  73. 73. It is, however, very difficult to introduce. 73
  74. 74. There are many issues mostly related to loss of personal space and lack of privacy. 74
  75. 75. Why do we care? 75
  76. 76. 76
  77. 77. 80% of the cost of software is incurred after it has gone live. 77
  78. 78. What would it mean to you if your cost of change was linear rather than exponential? 78
  79. 79. Thank You! 79
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×