Sustainable SW Development


Published on

Summary of "Sustainable SW Development: An Agile Perspective", Kevin Tate, 2006

Published in: Education
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Sustainable SW Development

  1. 1. PMO Sam Hwang Mar 2010
  2. 4. <ul><ul><li>The cost of change stays low over time </li></ul></ul><ul><ul><li>The team is able to respond to changing requirement and changes to the software’s ecosystem </li></ul></ul><ul><ul><li>Key indicators of sustainable development are an ability to keep the number of defects relatively constant over time while recognizing that the software must be modified to keep the cost of change under control </li></ul></ul>
  3. 5. Working Smarter Actual Performance Effort Capability Actual Performance Effort Capability = X X = Time Time Time Time Time Time Working Harder
  4. 7. <ul><ul><li>The cost of change is increasing constantly </li></ul></ul><ul><ul><li>The usual evidence of a high cost of change is a constantly increasing number of defects </li></ul></ul><ul><ul><li>Each change adds complexity and uncovers or causes defeats that require more changes, and this complexity leads to a declining ability to respond to customer requests and changes to the ecosystem </li></ul></ul>
  5. 8. Project Stresses Project Controls User Requirements External Dependencies Competition Disruptive Technologies Disruptive Business Models Cost Management Collaboration Methodology Expertise Decision Making Leadership Culture Simplicity
  6. 10. <ul><ul><li>A User need and vision so it is clear what is being built </li></ul></ul><ul><li>Rapid refinement to adapt to change </li></ul><ul><li>A Close relationship with users so they can provide timely feedback </li></ul><ul><li>Continual learning to refine the product so it best meets user needs while avoiding unnecessary features </li></ul>
  7. 11. <ul><ul><li>Continual Refinement of the product & project practices </li></ul></ul><ul><li>A Working product at all times </li></ul><ul><li>A Continual investment in & Emphasis on design </li></ul><ul><li>Valuing Defect Prevention over defect detection </li></ul>
  8. 12. Features Working Product Defect Prevention Continual Refinement Bugfixing Design Emphasis
  9. 14. Working Product Virtually Shippable Ultimate goal Flexibility Agility
  10. 15. <ul><ul><li>No ‘Broken Windows’ </li></ul></ul><ul><li>Be Uncompromising about Defects </li></ul><ul><ul><li>‘ Barely sufficient’ Documentation </li></ul></ul><ul><ul><li>Continuous Integration </li></ul></ul><ul><ul><li>Nightly Builds </li></ul></ul><ul><ul><li>Prototyping </li></ul></ul><ul><ul><li>Don't Neglect Performance </li></ul></ul><ul><ul><li>Zero Tolerance for Money and Resource Leaks </li></ul></ul><ul><ul><li>Coding Standards and Guidelines </li></ul></ul><ul><ul><li>Adopt Standards (Concentrate on Your Value-Add) </li></ul></ul><ul><ul><li>Internationalize from Day One </li></ul></ul><ul><ul><li>Isolate Platform Dependencies </li></ul></ul>
  11. 17. <ul><ul><li>Code then Fix </li></ul></ul><ul><ul><li>Manual Testing </li></ul></ul><ul><ul><li>Low-value manual testing </li></ul></ul><ul><ul><li>Finding defects </li></ul></ul><ul><ul><li>Automated Test </li></ul></ul><ul><ul><li>High-value manual testing </li></ul></ul>Number of Defects Found Number of Defects Found Developers QA Customers Developers QA Customers Defect Defection Defect Prevention
  12. 18. <ul><ul><li>Ruthless Testing </li></ul></ul><ul><li>Use Available Tools </li></ul><ul><li>Pair Programming & Code Reviews </li></ul><ul><li>Lightweight Root-Cause Analysis </li></ul>
  13. 20. <ul><li>Software must be designed to support and enhance changeability </li></ul><ul><li>Well- designed software is useful and easy to: </li></ul><ul><ul><li>Use </li></ul></ul><ul><ul><li>Maintain </li></ul></ul><ul><ul><li>Extend </li></ul></ul><ul><ul><li>Understand. </li></ul></ul><ul><li>  The elements of design in sustainable software development are: </li></ul><ul><ul><li>Working software </li></ul></ul><ul><ul><li>The process of doing the design </li></ul></ul><ul><ul><li>Collaboration and face-to-face communication </li></ul></ul><ul><ul><li>Simple design </li></ul></ul><ul><li>  </li></ul>
  14. 21. <ul><ul><li>Design vision </li></ul></ul><ul><li>Guiding Principles </li></ul><ul><li>Simple Design </li></ul><ul><li>Refactoring </li></ul><ul><li>Design Pattern </li></ul><ul><li>Frequent Rapid Design Meetings </li></ul><ul><li>Commitment to Rearchitecture </li></ul><ul><li>Design for Reuse </li></ul>
  15. 23. <ul><li>Teams need a way to balance short-term requirements and long-term needs: to ship their product as soon as they can while accepting, anticipating, and even welcoming change </li></ul><ul><li>The core agile software development practice of iterative development encourages continual refinement </li></ul><ul><li>In agile development, teams work from a simple and clear vision and deal with change through frequent iterations; the goal of each iteration is to deliver something useful to customers </li></ul><ul><li>The main advantage of agile methods is that they help teams manage uncertainty and change early and throughout the project </li></ul>
  16. 24. <ul><ul><li>Iterative Development </li></ul></ul><ul><li>Release Planning </li></ul><ul><li>Daily Standup Meetings </li></ul><ul><li>Retrospectives </li></ul><ul><li>Coaching & Team Development </li></ul><ul><li>Make Key Metrics Visible </li></ul>
  17. 26. <ul><li>Organizations are complex simply : the mix of different people </li></ul><ul><li>Software people : </li></ul><ul><ul><li>Come from many backgrounds </li></ul></ul><ul><ul><li>Tend to be introverts </li></ul></ul><ul><ul><li>Don't like being told how to work </li></ul></ul><ul><li>Many organization do not pay attention to key people issues </li></ul><ul><ul><li>Professional development and leadership </li></ul></ul><ul><ul><li>Focus on projects, schedules, and results </li></ul></ul><ul><li>Software education lacks standards and a poor understanding of what the basic are </li></ul>
  18. 27. <ul><li>Culture Factors: </li></ul><ul><ul><li>Leadership </li></ul></ul><ul><ul><li>Sense of urgency </li></ul></ul><ul><ul><li>Executive support </li></ul></ul><ul><li>  </li></ul><ul><li>Culture Enablers: </li></ul><ul><ul><li>Persistence </li></ul></ul><ul><ul><li>Training </li></ul></ul><ul><ul><li>Continuous ‘wins’ </li></ul></ul><ul><ul><li>Positive reinforcement of desired behaviors </li></ul></ul><ul><ul><li>Communication </li></ul></ul>
  19. 29. <ul><li>Background </li></ul><ul><ul><li>Software development is a complex undertaking </li></ul></ul><ul><ul><li>The method : code-then fix or waterfall method </li></ul></ul><ul><li>Unsustainable Development </li></ul><ul><ul><li>Too many projects can’t cope with the complexity of the software development taking </li></ul></ul><ul><ul><li>The teams are largely only able to respond to changes in their ecosystem </li></ul></ul><ul><ul><li>The most effort goes toward adding features and fixing bugs </li></ul></ul><ul><ul><li>These projects respond to complexity with complex solutions that are unreliable(buggy), brittle(break easily), and unable to support future change </li></ul></ul>
  20. 30. <ul><li>Sustainable Development </li></ul><ul><ul><li>Teams are able to be proactive about changes in their ecosystem </li></ul></ul><ul><ul><li>Requires acknowledging the need for change </li></ul></ul><ul><ul><li>It means that adapting a different mindset and being uncompromising </li></ul></ul><ul><li>The Principle of sustainable Development </li></ul><ul><ul><li>Having a working product every day </li></ul></ul><ul><ul><li>Defect prevention </li></ul></ul><ul><ul><li>Design emphasis </li></ul></ul><ul><ul><li>Continual refinement </li></ul></ul>
  21. 31. <ul><li>Having a working product every day </li></ul><ul><ul><li>Even if it is not functionally complete, </li></ul></ul><ul><ul><ul><li>gives teams flexibility </li></ul></ul></ul><ul><ul><ul><li>allows teams to be much more responsive to changes in their ecosystem </li></ul></ul></ul><ul><li>Defect prevention </li></ul><ul><ul><li>A change in mindset for virtually all teams </li></ul></ul><ul><ul><li>Central to defect prevention: </li></ul></ul><ul><ul><ul><li>the practice of ruthless testing </li></ul></ul></ul><ul><ul><ul><li>computers are relied upon to do the repetitive and boring testing tasks that people do today </li></ul></ul></ul>
  22. 32. <ul><li>Design emphasis </li></ul><ul><ul><li>Good design is required to ensure that the period is designed to promote future maintainability and modifiability </li></ul></ul><ul><ul><li>Simple design, refactoring and design patterns all play important role in design </li></ul></ul><ul><ul><li>Every project and team has to find the right balance between iterative design and up-front design </li></ul></ul><ul><li>Continual refinement </li></ul><ul><ul><li>Applies to how the project is planned and tracked through iterative development </li></ul></ul><ul><ul><li>Team can continually enhance its development processes and collaboration </li></ul></ul>