Iterative Development: Breaking from the Waterfall

3,046 views
2,753 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
3,046
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
81
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Iterative Development: Breaking from the Waterfall

  1. 1. Breaking from the Waterfall [email_address]
  2. 2. <ul><li>My experience as a developer </li></ul><ul><li>Leading development teams and managing software projects </li></ul><ul><li>Differences between the academe and the industry </li></ul>
  3. 3. <ul><li>Waterfall/”SDLC” </li></ul><ul><ul><li>What is it? </li></ul></ul><ul><ul><li>Advantages and disadvantages </li></ul></ul><ul><li>Agile and Iterative Development </li></ul><ul><ul><li>What is it? </li></ul></ul><ul><ul><li>How it differs from waterfall </li></ul></ul><ul><ul><li>Advantages and Disadvantages </li></ul></ul><ul><li>Discussion </li></ul>
  4. 4. <ul><li>“ Traditional” approach to software dev’t </li></ul><ul><li>Sequential Design Process </li></ul><ul><ul><li>Planning, Analysis, Design, Implementation, Support </li></ul></ul><ul><li>1970: Paper by Winston Royce </li></ul><ul><li>Focus on documentation and detail </li></ul><ul><li>Have a plan (or plans) and stick to it </li></ul><ul><li>“ Measure twice, cut once” </li></ul><ul><li>Developers standpoint: clear, but flexible </li></ul>
  5. 5. Planning Analysis Design Implementation Support
  6. 6. <ul><li>Perfection at every step </li></ul><ul><ul><li>No progress until each step is completed </li></ul></ul><ul><li>Documentation </li></ul><ul><li>Discipline </li></ul><ul><li>Clearly defined milestones </li></ul><ul><li>Predict problems before they occur </li></ul>
  7. 7. <ul><li>Problems are rarely fully understood </li></ul><ul><li>Resistance to change </li></ul><ul><li>Mistakes made at previous steps “trickle down the waterfall” </li></ul><ul><li>Response to problems that can’t be known before completion </li></ul><ul><li>No feedback loop </li></ul><ul><li>Royce’s example </li></ul>
  8. 8. <ul><li>Cyclic software development </li></ul><ul><li>Plan-Do-Check-Act </li></ul><ul><li>Methods: </li></ul><ul><ul><li>Agile </li></ul></ul><ul><ul><li>Scrum </li></ul></ul><ul><ul><li>Extreme Programming </li></ul></ul><ul><ul><li>RUP </li></ul></ul><ul><ul><li>RAD </li></ul></ul><ul><li>Develop a system in cycles and smaller (functional) portions at a time </li></ul>
  9. 10. <ul><li>Feedback Loop </li></ul><ul><li>Quick response to change (with less investment) </li></ul><ul><li>Continued learning about the problem </li></ul><ul><li>Take advantage of what is learned at each iteration </li></ul><ul><li>Always have a complete functioning system </li></ul>
  10. 11. <ul><li>Less focus on documentation </li></ul><ul><li>Difficult to implement </li></ul><ul><li>Tendency to start coding before planning </li></ul><ul><li>Communication overhead </li></ul><ul><li>Requires a very efficient change control mechanism </li></ul><ul><li>Requirements are always at risk of changing </li></ul>
  11. 12. <ul><li>Test Driven Development </li></ul><ul><ul><li>Unit Testing </li></ul></ul><ul><ul><li>Continuous Integration </li></ul></ul><ul><ul><li>Automated Testing </li></ul></ul><ul><li>Pair Programming </li></ul><ul><li>Software Tools </li></ul><ul><ul><li>Pivotal Tracker </li></ul></ul>
  12. 13. Questions?

×