Upload
sam-hwang
View
220
Download
0
Embed Size (px)
Citation preview
8/8/2019 Sustainable Software Developmt
1/32
Sam HwangSam Hwang
2010 Mar2010 Mar
8/8/2019 Sustainable Software Developmt
2/32
8/8/2019 Sustainable Software Developmt
3/32
8/8/2019 Sustainable Software Developmt
4/32
8/8/2019 Sustainable Software Developmt
5/32
8/8/2019 Sustainable Software Developmt
6/32
8/8/2019 Sustainable Software Developmt
7/32
8/8/2019 Sustainable Software Developmt
8/32
Project Stresses
User Requirements
External Dependencies
Competition
Disruptive Technologies
Disruptive Business Models
Cost Management
Project Controls
Collaboration
Methodology
ExpertiseDecision Making
Leadership
Culture
Simplicity
8/8/2019 Sustainable Software Developmt
9/32
8/8/2019 Sustainable Software Developmt
10/32
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 providetimely feedback
Continual learning to refine the product so it best meetsuser needs while avoiding unnecessary features
8/8/2019 Sustainable Software Developmt
11/32
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
8/8/2019 Sustainable Software Developmt
12/32
Features
WorkingProduct
DefectPrevention
ContinualRefinement
Bug-fixing
DesignEmphasis
8/8/2019 Sustainable Software Developmt
13/32
8/8/2019 Sustainable Software Developmt
14/32
WorkingProduct
Virtually Shippable
Ultimate goal
Flexibility Agility
8/8/2019 Sustainable Software Developmt
15/32
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
8/8/2019 Sustainable Software Developmt
16/32
8/8/2019 Sustainable Software Developmt
17/32
Numberof DefectsFound
Numberof DefectsFound
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
8/8/2019 Sustainable Software Developmt
18/32
Ruthless Testing
Use Available Tools
Pair Programming & Code Reviews
Lightweight Root-Cause Analysis
8/8/2019 Sustainable Software Developmt
19/32
8/8/2019 Sustainable Software Developmt
20/32
Software must be designed to support and enhance changeabilitychangeability
WellWell-- designed software is useful and easy to: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 faceCollaboration and face--toto--face communicationface communication
Simple designSimple design
8/8/2019 Sustainable Software Developmt
21/32
Design vision Guiding Principles Simple Design
Refactoring Design Pattern Frequent Rapid Design Meetings Commitment to Rearchitecture Design for Reuse
8/8/2019 Sustainable Software Developmt
22/32
8/8/2019 Sustainable Software Developmt
23/32
Teams need a way to balance short-term requirements andlong-term needs: to ship their product as soon as they can whileaccepting, anticipating, and even welcoming change
The core agile software development practice of iterativedevelopment encourages continual refinement
In agile development, teams work from a simple and clear
vision and deal with change through frequent iterations; the goalof 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 theproject
8/8/2019 Sustainable Software Developmt
24/32
Iterative Development
Release Planning
Daily Standup Meetings
Retrospectives
Coaching & Team Development
Make Key Metrics Visible
8/8/2019 Sustainable Software Developmt
25/32
8/8/2019 Sustainable Software Developmt
26/32
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 ofwhat the basic are
8/8/2019 Sustainable Software Developmt
27/32
Culture Factors:
Leadership Sense of urgency
Executive support
Culture Enablers:
Persistence Training
Continuous wins Positive reinforcement of desired behaviors Communication
8/8/2019 Sustainable Software Developmt
28/32
8/8/2019 Sustainable Software Developmt
29/32
Background Software development is a complex undertaking The method : code-then fix or waterfall method
Unsustainable Development Too many projects cant cope with the complexity ofthe software development taking
The teams are largely only able to respond tochanges in their ecosystem The most effort goes toward adding features and
fixing bugs These projects respond to complexity with complexsolutions that are unreliable(buggy), brittle(break easily),and unable to support future change
8/8/2019 Sustainable Software Developmt
30/32
Sustainable Development
Teams are able to be proactive about changes intheir ecosystem Requires acknowledging the need for change
It means that adapting a different mindset and beinguncompromising
The Principle of sustainable Development Having a working product every day Defect prevention Design emphasis Continual refinement
8/8/2019 Sustainable Software Developmt
31/32
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 repetitiveand boring testing tasks that people do today
8/8/2019 Sustainable Software Developmt
32/32
Design emphasis
Good design is required to ensure that the period isdesigned to promote future maintainability andmodifiability
Simple design, refactoring and design patterns allplay 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 trackedthrough iterative development Team can continually enhance its developmentprocesses and collaboration