Upload
hoangkien
View
216
Download
0
Embed Size (px)
Citation preview
ConstruxSoftware Development Best Practices
®
© 2006 Construx Software Builders, Inc.All Rights Reserved.
www.construx.com
The 10 Most Important Ideas in Software Development
“Software Development Best Practices” 2
Most Key Ideas Are Not New
Q: What are the most exciting/promising software engineering ideas or techniques on the horizon?
A: I don’t think that the most promising ideas are on the horizon. They are already here and have been here for years but are not being used properly.
— David L. Parnas
ConstruxSoftware Development Best Practices
®
#1
Software Development Work is Performed by Human Beings
“Software Development Best Practices” 4
Team Cohesion
Platform Experience
Language and Tools Experience
Cocomo II’s View of Software Project Influences
1.26
1.29
1.31
1.33
1.38
1.40
1.42
1.43
1.43
1.46
1.49
1.50
1.51
1.52
1.54
1.56
1.59
1.63
1.76
2.00
2.38
Applications Experience
Personnel Continuity
Programmer Capability (general)Analyst Capability (general)
Development Flexibility
Developed for ReusePrecedentedness
Architecture and Risk Resolution
Database Size
Process MaturityStorage Constraint
Platform VolatilityUse of Software Tools
Documentation Match to Lifecycle NeedsRequired Software Reliability
Multi-site Development
Time Constraint
Product Complexity
“Software Development Best Practices” 5
Importance of Human Influences
Human Influences make a 14x difference in total project effort & cost, according to Cocomo IICapability factors alone make a 3.5x differenceExperience factors alone make a 3.0x difference
“Software Development Best Practices” 6
Why Do These Variations Exist?
Experience?Technology knowledge?Business knowledge?Personal processes?
“Software Development Best Practices” 7
This Just In …
Human Beings Exhibit the Same Variations in Performance That Programmers Do
Human Beings Exhibit the Same Variations in Performance That Programmers Do!
“Software Development Best Practices” 8
Conclusions You Can Take to the Bank
With 20x differences in individuals and 10x With 20x differences in individuals and 10x differences in teams commonly reporteddifferences in teams commonly reported……Technical successes of Google, Amazon, Technical successes of Google, Amazon, Microsoft and similar companies are not Microsoft and similar companies are not accidentsaccidentsRecruiting top staff is easily cost justifiedRecruiting top staff is easily cost justifiedEven elaborate staff retention programs Even elaborate staff retention programs are also easily cost justifiedare also easily cost justified
ConstruxSoftware Development Best Practices
®
#2
Incrementalism is Essential
“Software Development Best Practices” 10
Incrementalism
Definition: “The use of a series of regular additions or contributions”An “incremental” approach is one that is done a little bit at a time. The final result may be completely mapped out in advance
“Software Development Best Practices” 11
What do you get from What do you get from incrementalismincrementalism??Feedback! Feedback! Feedback! Feedback! Feedback! Feedback!
Conclusions You Can Take to the Bank
(on the software itself)(on the software itself)(on the dev process)(on the dev process)(on the people/dev capability)(on the people/dev capability)
Ability to adaptAbility to adapt
“Software Development Best Practices” 12
Or, Another Perspective on Feedback …
If the map and the terrain If the map and the terrain disagree, trust the terrain!disagree, trust the terrain!
ConstruxSoftware Development Best Practices
®
#3
Iteration is Essential
“Software Development Best Practices” 14
Iteration
Definition: “Recital or performance a second time; repetition”An “iterative” approach is one that converges to a solution a little bit at a timeThe result is not known in advance
“Software Development Best Practices” 15
News Flash!
ITERATION!
People People Are Not Are Not ComputersComputers
“Software Development Best Practices” 16
News Flash!
ITERATION!
Practice Helps!Practice Helps!
And making small mistakes that prevent large mistakes helps too
“Software Development Best Practices” 17
This Just In …
INSANITY!
One Definition: One Definition: Doing the same thing over Doing the same thing over and over and expecting and over and expecting different results.different results.
One More Definition: One More Definition: Not doing the same thing Not doing the same thing over because you think the over because you think the results wonresults won’’t change.t change.
“Software Development Best Practices” 18
In the Midst of These Important Ideas, Some Are Just Plain Silly
Mildly Serious
Neutral
Somew
hat S
illy
Incredibly Incredibly SeriousSerious Incredibly Silly
Software Silly MeterSoftware Silly Meter
“Software Development Best Practices” 19
Software Concept
System Testing
Architectural Design
Requirements Analysis
Detailed Design
Coding and Debugging
Silly Idea: The only two development options in existence are “Iterate Nothing” and “Iterate Everything”
Software Silly MeterSoftware Silly Meter
“Software Development Best Practices” 20
Conclusions You Can Take to the Bank
Some practices derive their power from Some practices derive their power from incrementalismincrementalism (doing a little bit at a time)(doing a little bit at a time)Some practices derive their power from Some practices derive their power from iteration (repeating the same task)iteration (repeating the same task)You can iterate You can iterate withinwithin an activity or phase an activity or phase (e.g., (e.g., withinwithin requirements)requirements)You can iterate You can iterate acrossacross any pair of activities or any pair of activities or phases (e.g., requirements & architecture)phases (e.g., requirements & architecture)You can iterate You can iterate acrossacross entire development entire development cyclescyclesThe degree of iteration can vary from The degree of iteration can vary from practically 0practically 0--100% either 100% either withinwithin or or acrossacrossactivitiesactivities
ConstruxSoftware Development Best Practices
®
#4
The Cost To Fix A Defect Increases Over Time
“Software Development Best Practices” 22
Defect Cost Increase (DCI)
Requirements
Architecture
Construction
System testRequirements Architecture Construction Post-Release
AverageCost toCorrect
Activity in which aDefect IsIntroduced
Activity in Which a Defect Is Detected
“Software Development Best Practices” 23
Notable Historical Mistakes
480 BC:
“Thisis a nicegift!”
Greatest Mistakes in History
“Software Development Best Practices” 24
Notable Historical MistakesGreatest Mistakes in History
1999:1999:““In the New In the New Economy, Economy, companies companies won't need to won't need to make a profit to make a profit to be successful.be successful.””
“Software Development Best Practices” 25
Notable Historical MistakesGreatest Mistakes in History
2006:2006:““Agile projects Agile projects arenaren’’t affected by t affected by Defect Cost Defect Cost Increase.Increase.””
Requirements
Architecture
ConstructionSystem testRequirements ArchitectureConstruction Post-Release
AverageCost toCorrect
Activity in which aDefect IsIntroduced
Activity in Which a Defect Is Detected Software Silly MeterSoftware Silly Meter
“Software Development Best Practices” 26
Conclusions You Can Take to the Bank
Defect creation is a function of effortDefect creation is a function of effortDefect detection and removal is a Defect detection and removal is a function of QA activitiesfunction of QA activitiesFix more defects earlier!Fix more defects earlier!Use practices that reduce the Use practices that reduce the magnitude of DCImagnitude of DCI
ConstruxSoftware Development Best Practices
®
#5
There’s an Important Kernel of Truth in the Waterfall Model
“Software Development Best Practices” 28
Remember This?
Software Concept
System Testing
Architectural Design
Requirements Analysis
Detailed Design
Coding and Debugging
“I’m Not Bad. I’m Just Drawn That
Way.”--Jessica Rabbit
“Software Development Best Practices” 29
Intellectual Phases
Schedule
Focus
Discovery Invention Construction
“Software Development Best Practices” 30
Schedule
Focus
Discovery Invention Construction
Cost of Overlapping Intellectual Phases
Overlap =DependenciesUncertaintyRiskReworkHigher costsLonger schedulesLower quality
“Software Development Best Practices” 31
Conclusions You Can Take to the Bank
Some degree of wickedness is Some degree of wickedness is inevitable. Plan for it. inevitable. Plan for it. Much wickedness is avoidable. Plan Much wickedness is avoidable. Plan for that, too. for that, too. Attack wickedness actively, Attack wickedness actively, especially via incremental and especially via incremental and iterative approaches. iterative approaches.
ConstruxSoftware Development Best Practices
®
#6
Ability to Create Useful Software Estimates Can be Improved Over Time (The Cone Of Uncertainty)
“Software Development Best Practices” 33
Cone of Uncertainty
0.67x
0.8x1.0x
0.5x
0.25x
2x
4x
1.5x
1.25x
Project Scope(effort, cost, or features)
Time
“Software Development Best Practices” 34
Conclusions You Can Take to the Bank
Estimation must be iterativeEstimation must be iterativeProject planning must be incrementalProject planning must be incrementalAn estimate isnAn estimate isn’’t meaningful unless it t meaningful unless it contains a description of its contains a description of its inaccuracyinaccuracy
ConstruxSoftware Development Best Practices
®
#7
The Most Powerful Form of Reuse is Full Reuse
“Software Development Best Practices” 36
History of Reuse
First idea was to reuse codeLater idea was to reuse code + designCurrent idea is to reuse as much as possible, including processes and plans
“Software Development Best Practices” 37
Effect of Adding Process the First Time (What I Wrote in SPSG in 1997)
Percent of Effort
0%
100%
Time
Thrashing
Process Overhead
Productive Work
“Software Development Best Practices” 38
Effect of Adding Process the First Time (What I Think Now)
Percent of Effort
0%
100%
Time
Thrashing
Process Overhead
Productive Work
“Software Development Best Practices” 39
Effect of Adding ReusedProcesses
Percent of Effort
0%
100%
Time
Thrashing
Process Overhead
Productive Work
“Software Development Best Practices” 40
Conclusions You Can Take to the Bank
Consider reusing any or all of these:Consider reusing any or all of these:Coding standardsCoding standardsChange control policiesChange control policiesEstimation proceduresEstimation proceduresFormats & outlines of project plans, Formats & outlines of project plans, requirements doc, design docs, QA plan, requirements doc, design docs, QA plan, test plan, etc.test plan, etc.Checklists for plans, estimates, change Checklists for plans, estimates, change control, inspections, QA, etc.control, inspections, QA, etc.Roles & responsibilitiesRoles & responsibilitiesTrainingTraining
ConstruxSoftware Development Best Practices
®
#8
Risk Management Provides Critical Insights into Many Core Software Development Issues
“Software Development Best Practices” 42
Risk Management Type 1: Extrinsic
Added on to the project primarily for purposes of risk managementExamples of Extrinsic Risk Management
Top 10 Risks listRisk management plansRisk officer Etc.
“Software Development Best Practices” 43
Risk Management Type 2: Intrinsic
Built into the project for other reasons; risk reduction is an additional benefitExamples of intrinsic risk management
Active project trackingUI PrototypingEnd-user involvementIncremental deliveryUpstream technical reviewsEtc.
“Software Development Best Practices” 44
A View of Software Risk Reduction
Planned Work
Typical Relationship between Planned Work and Variable Work:
Unplanned, Variable Work (typically >50% of total)
Planned Work
Better Relationship:
Planned“Overhead”
Unplanned, Variable Work
“Software Development Best Practices” 45
A View of Software Risk Reduction
Planned WorkPlanned
“Overhead”Unplanned, Variable Work
“Software Development Best Practices” 46
Conclusions You Can Take to the Bank
RiskRisk is the key to many tough decisions in is the key to many tough decisions in project management:project management:
What is the best lifecycle model?What is the best lifecycle model?How much requirements work is enough? How much requirements work is enough? How much design work is enough? How much design work is enough? Can you use junior staff instead of senior staff? Can you use junior staff instead of senior staff? Should you do design reviews? Code reviews?Should you do design reviews? Code reviews?How much schedule buffer do you need?How much schedule buffer do you need?
“Software Development Best Practices” 47
A Silly View of Risk …
“We’re an entrepreneurial company. We can’t be afraid of risk”Not separating business risk from project risk from product risk
Software Silly MeterSoftware Silly Meter
ConstruxSoftware Development Best Practices
®
#9
Different Kinds of SoftwareCall For Different Kinds of Software Development(The “Toolbox”)
“Software Development Best Practices” 49
Examples of Overreaching Claims
“The pace of information technology (IT) change is accelerating and agile methods adapt to change better than disciplined methods therefore agile methods will take over the IT world.”
“Software development is uncertain and the SW-CMM improves predictability therefore all software developers should use the SW-CMM.”
Examples from Balancing Agility and Discipline: A Guide for the Perplexed, Barry Boehm, Richard Turner, 2004
“Software Development Best Practices” 50
Time for More Silliness
There is one single development approach that works best for all projects.
Software Silly MeterSoftware Silly Meter
“Software Development Best Practices” 51
This is a saw …
“Software Development Best Practices” 52
… this is also a saw …
“Software Development Best Practices” 53
… and so is this …
“Software Development Best Practices” 54
… and so is this …
“Software Development Best Practices” 55
… and so is this …
“Software Development Best Practices” 56
… and so is this …
“Software Development Best Practices” 57
… and so is this …
“Software Development Best Practices” 58
… and so is this …
“Software Development Best Practices” 59
… and so is this …
“Software Development Best Practices” 60
… and so is this …
“Software Development Best Practices” 61
News Flash!
SOFTWARE DEVELOPMENT IS AS DIFFICULT AS SAWING!
SOFTWARE DEVELOPMENT IS AS DIFFICULT AS SAWING!
MARTIAN RESEARCHERS MAKE KEY DISCOVERY!
Aliens donate research results
to Software Community
Aliens donate research results
to Software Community
Different Projects Call for Different Development Approaches!
Different Projects Call for Different Development Approaches!
“Software Development Best Practices” 62
Conclusions You Can Take to the Bank
Which software development Which software development approach works best depends on the approach works best depends on the kind of projectkind of project
ConstruxSoftware Development Best Practices
®
#10
Software Engineering Body of Knowledge (SWEBOK)
“Software Development Best Practices” 64
The SWEBOK(Software Engineering Body of Knowledge)
Software Configuration ManagementSoftware ConstructionSoftware DesignSoftware Engineering ManagementSoftware Engineering ProcessSoftware MaintenanceSoftware QualitySoftware RequirementsSoftware Testing Software Tools and Methods
“Software Development Best Practices” 65
Effect of the SWEBOK
To organize something is to understand it. – Aristotle
The main contribution of the SWEBOK is to bring clarity to software development research, discussions, and application
“Software Development Best Practices” 66
Alternatives to the SWEBOK
Maybe software is so complicated only gurus can understand it? Perhaps software can’t be reduced to words, and you just have to trust the developers to do the right thing?Maybe good development practices should be kept secret so they don’t fall into the wrong hands
“Software Development Best Practices” 67
Alternative #1 to the SWEBOK
I could try to explain software to
you, but you wouldn’t
understand.
“Software Development Best Practices” 68
Alternative #2 to the SWEBOK
Don’t ask questions.
Just have faith in your team.
“Software Development Best Practices” 69
Alternative #3 to the SWEBOK
I could explain software to you, but I’d have to kill you.
“Software Development Best Practices” 70
Conclusions You Can Take to the Bank
SWEBOK provides a wide spectrum of support for SWEBOK provides a wide spectrum of support for software development practices:software development practices:Defined, reusable software development Defined, reusable software development processesprocessesAcademic curriculumsAcademic curriculumsCareer developmentCareer developmentProfessional certificationProfessional certificationEmployment interviewingEmployment interviewingTechnical skills inventoryTechnical skills inventory
And weAnd we’’re just getting started!re just getting started!
“Software Development Best Practices” 71
Is the SWEBOK the Ultimate Answer?
“Truth will sooner come out of error than from confusion.”
– Francis Bacon
ConstruxSoftware Development Best Practices
®
Conclusions
ConstruxSoftware Development Best Practices
®
Breaking News…
TrainingTrainingConsultingConsultingToolsTools
[email protected]+1 (425) 636-0100