Sustainable SW Development

33
PMO PMO Sam Hwang Sam Hwang Mar 2010 Mar 2010

description

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

Transcript of Sustainable SW Development

Page 1: Sustainable SW Development

PMO PMO

Sam Hwang Sam Hwang

Mar 2010Mar 2010

Page 2: Sustainable SW Development
Page 3: Sustainable SW Development
Page 4: Sustainable SW Development

• 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

Page 5: Sustainable SW Development

Time Time Time

Time Time Time

Working Harder

Working Smarter

Actual Performance Effort Capability

Actual Performance Effort Capability

=

X

X

=

Page 6: Sustainable SW Development
Page 7: Sustainable SW Development

• 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

Page 8: Sustainable SW Development

Project Stresses Project Controls

User Requirements

External Dependencies

Competition

Disruptive Technologies

Disruptive Business Models

Cost Management

Collaboration

Methodology

Expertise

Decision Making

Leadership

Culture

Simplicity

Page 9: Sustainable SW Development
Page 10: Sustainable SW Development

• 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

Page 11: Sustainable SW Development

• 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

Page 12: Sustainable SW Development

Features

WorkingProduct

Defect Prevention

Continual Refinement

Bugfixing

DesignEmphasis

Page 13: Sustainable SW Development
Page 14: Sustainable SW Development

Working Product

Virtually Shippable

Ultimate goal

Flexibility Agility

Page 15: Sustainable SW Development

• 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

Page 16: Sustainable SW Development
Page 17: Sustainable SW Development

Number of Defects Found

Number of Defects Found

Developers QA Customers

Developers QA Customers

Defect Defection Defect Prevention

• Code then Fix• Manual Testing• Low-value manual testing

• Finding defects• Automated Test• High-value manual testing

Page 18: Sustainable SW Development

• Ruthless Testing

• Use Available Tools

• Pair Programming & Code Reviews

• Lightweight Root-Cause Analysis

Page 19: Sustainable SW Development
Page 20: Sustainable SW Development

• Software must be designed to support and enhance changeabilitychangeability

• Well- designed software is useful and easy to:Well- designed software is useful and easy to:

• UseUse• MaintainMaintain• ExtendExtend• Understand.Understand.

•   The elements of design in sustainable software development are:

• Working softwareWorking software• The process of doing the designThe process of doing the design• Collaboration and face-to-face communicationCollaboration and face-to-face communication• Simple designSimple design

 

Page 21: Sustainable SW Development

• Design vision• Guiding Principles• Simple Design• Refactoring• Design Pattern• Frequent Rapid Design Meetings• Commitment to Rearchitecture• Design for Reuse

Page 22: Sustainable SW Development
Page 23: Sustainable SW Development

• 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

Page 24: Sustainable SW Development

• Iterative Development

• Release Planning

• Daily Standup Meetings

• Retrospectives

• Coaching & Team Development

• Make Key Metrics Visible

Page 25: Sustainable SW Development
Page 26: Sustainable SW Development

• 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

Page 27: Sustainable SW Development

• Culture Factors:

• Leadership• Sense of urgency• Executive support

 • Culture Enablers:

• Persistence• Training• Continuous ‘wins’ • Positive reinforcement of desired behaviors• Communication

Page 28: Sustainable SW Development
Page 29: Sustainable SW Development

• 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

Page 30: Sustainable SW Development

• 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

Page 31: Sustainable SW Development

• 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

Page 32: Sustainable SW Development

• 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

Page 33: Sustainable SW Development