the 10 best ideas in software development - steve · pdf filethe 10 best ideas in software...

29
Special Bonus: © 2006 Construx Software Builders, Inc. All Rights Reserved. www.construx.com The 10 Best Ideas in Software Development The 8 Worst Ideas! “Delivering Software Project Success” 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

Upload: vonhu

Post on 12-Mar-2018

219 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

Special Bonus:

© 2006 Construx Software Builders, Inc.All Rights Reserved.

www.construx.com

The 10 Best Ideas in Software Development

The 8 Worst Ideas!

“Delivering Software Project Success” 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

Page 2: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

#1

Software Development Work is Performed by Human Beings

“Delivering Software Project Success” 4

Development FlexibilityTeam Cohesion

Developed for ReusePrecedentedness

Architecture and Risk ResolutionPlatform Experience

Database SizeLanguage and Tools Experience

Process Maturity

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

Storage ConstraintPlatform Volatility

Use of Software ToolsApplications Experience

Documentation Match to Lifecycle NeedsRequired Software Reliability

Multi-site DevelopmentPersonnel Continuity

Time ConstraintProgrammer Capability (general)

Analyst Capability (general)Product Complexity

Page 3: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 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 differenceConsensus of studies is that similarly-experienced developers vary by about 20x in productivity and quality of work

“Delivering Software Project Success” 6

Where do Variations Exist?

Researchers have found 20:1 variations in:Coding speedDebugging speedDefect-finding speedPercentage of defects foundBad-fix injection rateDesign qualityAmount of code generated from a designTeamworkEtc.

Page 4: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 7

Some Implications

Success of Google, Amazon, Microsoft, etc.Matching workers and workstylesValue of retention programsImportance of staff development

Creating software practices based on the assumption that developers are omniscient…

Worst Idea

Page 5: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 9

… i.e., the Waterfall Model

Software Concept

System Testing

Architectural Design

Requirements Analysis

Detailed Design

Coding and Debugging

“Delivering Software Project Success” 10

What About This?

From the Agile Manifesto

We value individuals and interactions over

processes and tools.

Page 6: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

#2

Iteration & Incrementalismare Essential

“Delivering Software Project Success” 12

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

Page 7: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 13

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

“Delivering Software Project Success” 14

Iteration & Incrementalism

Iterative approaches are incrementalIncremental approaches are not necessarily iterativeThe waterfall model is neither incremental nor iterativeStaged delivery is incremental but not iterativeEvolutionary prototyping is both incremental and iterative Some practices derive their power from iteration, some from incrementalism, and some from both

Page 8: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 15

Examples of Iteration & Incrementalism

Iterative ApproachesShort development cycles (e.g., XP, Scrum)UI prototypingEvolutionary prototypingRequirements reviewsDesign reviewsProject estimationProject planning

Incremental ApproachesStaged deliveryDesign to scheduleIncremental integrationDaily buildsProject planning

“Delivering Software Project Success” 16

The only two development options in existence are “Iterate Everything” and “Iterate Nothing”(i.e., the Waterfall Model).

SystemTestingArchitecture Requirements Construction

Worst Idea

Page 9: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 17

Iteration is a More Flexible Concept

You can iterate within phases...

SystemTestingArchitecture Requirements Construction

“Delivering Software Project Success” 18

Iteration is a More Flexible Concept

You can iterate across phases...

SystemTestingArchitecture

Requirements Construction

Page 10: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 19

Iteration is a More Flexible Concept

You can iterate across entire dev cycles

“Delivering Software Project Success” 20

Iteration Applies Both in the Large and in the Small

The degree of iteration can vary from practically 0-100% either within or across activities

Page 11: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

#3

The Cost To Fix A Defect Increases Over Time

“Delivering Software Project Success” 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

Page 12: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

Agile projects are immune to DCI dynamics.

Worst Idea

“Delivering Software Project Success” 24

Fortunately, Some Agile Advocates Recognize DCI

“DCI is one of the few empirically verified truths

about software development: the sooner you find a defect,

the cheaper it is to fix.”

–Kent Beck,Creator of Extreme Programming

Page 13: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 25

General Principle

Defect creation is a function of effortDefect detection is a function of QA activitiesGoal is to minimize gap between defect insertion and defect detection/correction

Time

CumulativeDefects

Risk of Extra Cost

Defect creationDefect removal

Typical Project Risk of Extra Cost

TimeExtra

Development Capacity

Well-Run Project

“Delivering Software Project Success” 26

One Solution:

Fix Defects Earlier!

Requirements

Architecture

Construction

System testRequirements Architecture Construction Post-Release

AverageCost toCorrect

Activity in which aDefect IsIntroduced

Activity in Which a Defect Is Detected

Fix Here Don’t Wait to Fix Here

Page 14: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 27

Another Solution:Reduce Defect Cost Increase!

Requirements

Architecture

Construction

System testRequirements Architecture Construction Post-Release

AverageCost toCorrect

Activity in which aDefect IsIntroduced

Activity in Which a Defect Is Detected

#4

Software Projects Tend to Follow a Predictable Intellectual Flow (Intellectual Phases)

Page 15: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 29

Intellectual Phases

Schedule

Focus

Discovery Invention Construction

“Delivering Software Project Success” 30

Schedule

Focus

Discovery Invention Construction

Cost of Overlapping Intellectual Phases

Overlap =DependenciesUncertaintyRiskReworkHigher costsLonger schedulesLower quality

Page 16: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

Since software projects are “wicked problems,” we just have to accept that wickedness.

Worst Idea

Requirements are always changing, and our development practices should be based on the inevitablityof change. Worst Idea

Page 17: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

Requirements can be “gathered” (or they just drop out of the sky like manna from heaven)

Worst Idea

“Delivering Software Project Success” 34

A Successful Approach to Requirements

Active approaches to requirements are active not passive

“Elicitation”“Discovery”“Investigation”

The fact that it is possible to discover good requirements does not mean that it’s easy

Page 18: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

#5

Ability to Create Accurate Software Estimates Can be Improved Over Time (The Cone Of Uncertainty)

“Delivering Software Project Success” 36

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

Page 19: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 37

Implications of the Cone of Uncertainty

Estimation must be iterativeProject planning must be incrementalEstimates should contain descriptions of their inaccuracy

#6

The Most Powerful Form of Reuse is Full Reuse

Page 20: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 39

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

“Delivering Software Project Success” 40

Effect of Adding Process the First Time (What I Wrote in Software Project Survival Guide)

Percent of Effort

0%

100%

Time

Thrashing

Process Overhead

Productive Work

Page 21: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 41

Effect of Adding Process the First Time (What I Think Now)

Percent of Effort

0%

100%

Time

Thrashing

Process Overhead

Productive Work

“Delivering Software Project Success” 42

Effect of Adding ReusedProcesses

Percent of Effort

0%

100%

Time

Thrashing

Process Overhead

Productive Work

Page 22: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 43

What All Can Be Reused?

Coding standardsChange control policiesEstimation proceduresFormats & outlines of project plan, requirements doc, design docs, QA plan, test plan, etc.Checklists for plans, estimates, change control, inspections, QA, etc.Roles & responsibilitiesTrainingWhat are the most prominent current examples of process reuse?

#7

Risk Management Provides Critical Insights into Many Core Software Development Issues

Page 23: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 45

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.

“Delivering Software Project Success” 46

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.

Page 24: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 47

Risk Insights

Risk is the key to many tough decisions in project management:

What is the best lifecycle model?How much requirements work is enough? How much design work is enough? Can you use junior staff instead of senior staff? Should you do design reviews? Code reviews?How much schedule buffer do you need?

“Delivering Software Project Success” 48

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

Page 25: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

Entrepreneurial companies can’t be afraid of risk.

Worst Idea

#8

Different Kinds of SoftwareCall For Different Kinds of Software Development(The “Toolbox”)

Page 26: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

There is one single development approach that will work best for all projects.

Worst Idea

“Delivering Software Project Success” 52

How Could Any One Development Approach Possibly Work?

Extent ofDistribution

Consequence of Error

777 flight-controlsoftware

embeddedpacemaker control,embedded fuel-injector system

website (brochure-ware)

cardgame

In-house insurancequote program

desktop operating-system

Loss of LifeLoss of MoneyInconvenience

Personal

Custom,In-House

Verticalmarket

Horizontalmarket

commercial website,spreadsheet, tax program

desktop publishingsoftware

device driver

realtime race-track bettingsystem, singlerace track

mailing-labelprinter

management information system

Risk to Safety

Web search tool

Page 27: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

#9

Software Engineering Body of Knowledge (SWEBOK)

“Delivering Software Project Success” 54

The SWEBOK(Software Engineering Body of Knowledge)

Software Configuration ManagementSoftware ConstructionSoftware DesignSoftware Engineering ManagementSoftware Engineering ProcessSoftware MaintenanceSoftware QualitySoftware RequirementsSoftware Testing Software Tools and Methods

Page 28: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

“Delivering Software Project Success” 55

What SWEBOK Supports

Defined, reusable software development processesAcademic curriculumsCareer developmentProfessional certificationEmployment interviewingTechnical skills inventoryAnd we’re just getting started!

“Delivering Software Project Success” 56

Is the SWEBOK the Ultimate Answer?

To organize something is to understand it.

– Aristotle

“Truth will sooner come out of error than from confusion.”

– Francis Bacon

Page 29: The 10 Best Ideas in Software Development - Steve  · PDF fileThe 10 Best Ideas in Software Development ... #1 Software Development ... desktop publishing software device driver

Conclusions

TrainingConsultingTools

[email protected]+1 (425) 636-0100