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

Sustainable SW Development

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