• No results found

The 10 Most Important Ideas in Software Development

N/A
N/A
Protected

Academic year: 2021

Share "The 10 Most Important Ideas in Software Development"

Copied!
37
0
0

Loading.... (view fulltext now)

Full text

(1)

Construx

Software 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”

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.

(2)

Construx

Software Development Best Practices ®

#1

Software Development

Work is Performed by

Human Beings

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 Reuse Precedentedness Architecture and Risk Resolution Database Size Process Maturity Storage Constraint Platform Volatility Use of Software Tools Documentation Match to Lifecycle Needs Required Software Reliability Multi-site Development Time Constraint Product Complexity

(3)

“Software Development Best Practices” 5

Importance of Human Influences

™

Human Influences make a 14x

difference in total project effort & cost,

according to Cocomo II

™

Capability factors alone make a 3.5x

difference

™

Experience factors alone make a 3.0x

difference

“Software Development Best Practices”

Why Do These Variations Exist?

™

Experience?

™

Technology knowledge?

™

Business knowledge?

™

Personal processes?

(4)

“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!

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 reported

differences 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

accidents

accidents

™

™

Recruiting top staff is easily cost justified

Recruiting top staff is easily cost justified

™

™

Even elaborate staff retention programs

Even elaborate staff retention programs

are also easily cost justified

(5)

Construx

Software Development Best Practices ®

#2

Incrementalism is

Essential

“Software Development Best Practices”

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

(6)

“Software Development Best Practices” 11

What do you get from

What do you get from

incrementalism

incrementalism

?

?

™

™

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 adapt

Ability to adapt

Or, Another Perspective on Feedback …

If the map and the terrain

If the map and the terrain

disagree, trust the terrain!

(7)

Construx

Software Development Best Practices ®

#3

Iteration is Essential

“Software Development Best Practices”

Iteration

™

Definition: “Recital or performance a

second time; repetition”

™

An “iterative” approach is one that

converges to a solution a little bit at a time

(8)

“Software Development Best Practices” 15

News Flash!

ITERATION!

People

People

Are Not

Are Not

Computers

Computers

News Flash!

ITERATION!

Practice

Helps!

Practice

Helps!

And making small mistakes

that prevent large mistakes

helps too

(9)

“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 won

results won

t change.

t change.

“Software Development Best Practices”

In the Midst of These Important Ideas,

Some Are Just Plain Silly

M

i

l

d

l

y

S

e

r

i

o

u

s

Neutral

So

m

ew

ha

t S

ill

y

Incredibly

Incredibly

Serious

Serious

Incredibly Silly

Software Silly Meter

(10)

“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 Meter

Software Silly Meter

Conclusions You Can Take to the Bank

™

™

Some practices derive their power from

Some practices derive their power from

incrementalism

incrementalism

(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

within

within

an activity or phase

an activity or phase

(e.g.,

(e.g.,

within

within

requirements)

requirements)

™

™

You can iterate

You can iterate

across

across

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

across

across

entire development

entire development

cycles

cycles

™

™

The degree of iteration can vary from

The degree of iteration can vary from

practically 0

practically 0

-

-

100% either

100% either

within

within

or

or

across

across

activities

(11)

Construx

Software Development Best Practices ®

#4

The Cost To Fix A Defect

Increases Over Time

“Software Development Best Practices”

Defect Cost Increase (DCI)

Requirements

Architecture

Construction

System test

Requirements Architecture Construction Post-Release

Average

Cost to

Correct

Activity in which a

Defect Is

Introduced

(12)

“Software Development Best Practices” 23

Notable Historical Mistakes

480 BC:

“This

is a

nice

gift!”

Greatest Mistakes in History

Notable Historical Mistakes

Greatest 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.

(13)

“Software Development Best Practices” 25

Notable Historical Mistakes

Greatest Mistakes in History

2006:

2006:

Agile projects

Agile projects

aren

aren

t affected by

t affected by

Defect Cost

Defect Cost

Increase.

Increase.

Requirements Architecture Construction System test Requirements ArchitectureConstruction Post-Release

Average Cost to Correct Activity in which a Defect Is Introduced

Activity in Which a Defect Is Detected

Software Silly Meter

Software Silly Meter

“Software Development Best Practices”

Conclusions You Can Take to the Bank

™

™

Defect creation is a function of effort

Defect creation is a function of effort

™

™

Defect detection and removal is a

Defect detection and removal is a

function of QA activities

function of QA activities

™

™

Fix more defects earlier!

Fix more defects earlier!

™

™

Use practices that reduce the

Use practices that reduce the

magnitude of DCI

(14)

Construx

Software Development Best Practices ®

#5

There’s an Important Kernel

of Truth in the Waterfall

Model

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

(15)

“Software Development Best Practices” 29

Intellectual Phases

Schedule

Focus

Discovery

Invention

Construction

“Software Development Best Practices”

Schedule

Focus

Discovery

Invention

Construction

Cost of Overlapping Intellectual

Phases

™

Overlap =

‹

Dependencies

‹

Uncertainty

‹

Risk

‹

Rework

‹

Higher costs

‹

Longer schedules

‹

Lower quality

(16)

“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.

Construx

Software Development Best Practices ®

#6

Ability to Create Useful

Software Estimates Can

be Improved Over Time

(The Cone Of Uncertainty)

(17)

“Software Development Best Practices” 33

Cone of Uncertainty

0.67x 0.8x 1.0x 0.5x 0.25x 2x 4x 1.5x 1.25x Project Scope (effort, cost, or features)

Time

“Software Development Best Practices”

Conclusions You Can Take to the Bank

™

™

Estimation must be iterative

Estimation must be iterative

™

™

Project planning must be incremental

Project planning must be incremental

™

™

An estimate isn

An estimate isn

t meaningful unless it

t meaningful unless it

contains a description of its

contains a description of its

inaccuracy

(18)

Construx

Software Development Best Practices ®

#7

The Most Powerful Form

of Reuse is Full Reuse

History of Reuse

™

First idea was to reuse code

™

Later idea was to reuse code + design

™

Current idea is to reuse as much as

(19)

“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”

Effect of Adding Process the First

Time (What I Think Now)

Percent

of Effort

0% 100%

Time

Thrashing

Process Overhead

Productive Work

(20)

“Software Development Best Practices” 39

Effect of Adding Reused

Processes

Percent

of Effort

0% 100%

Time

Thrashing

Process Overhead

Productive Work

Conclusions You Can Take to the Bank

Consider reusing any or all of these:

Consider reusing any or all of these:

™

™

Coding standards

Coding standards

™

™

Change control policies

Change control policies

™

™

Estimation procedures

Estimation procedures

™

™

Formats & 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 & responsibilities

Roles & responsibilities

™

(21)

Construx

Software Development Best Practices ®

#8

Risk Management

Provides Critical Insights

into Many Core Software

Development Issues

“Software Development Best Practices”

Risk Management Type 1: Extrinsic

™

Added on to the project primarily for

purposes of risk management

™

Examples of Extrinsic Risk Management

‹

Top 10 Risks list

‹

Risk management plans

‹

Risk officer

‹

Etc.

(22)

“Software Development Best Practices” 43

Risk Management Type 2: Intrinsic

™

Built into the project for other reasons;

risk reduction is an additional benefit

™

Examples of intrinsic risk management

‹

Active project tracking

‹

UI Prototyping

‹

End-user involvement

‹

Incremental delivery

‹

Upstream technical reviews

‹

Etc.

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

(23)

“Software Development Best Practices” 45

A View of Software Risk Reduction

Planned Work

Planned “Overhead”

Unplanned, Variable Work

“Software Development Best Practices”

Conclusions You Can Take to the Bank

™

™

Risk

Risk

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?

‹

(24)

“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 Meter

Software Silly Meter

Construx

Software Development Best Practices ®

#9

Different Kinds of Software

Call For Different Kinds of

Software Development

(25)

“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”

Time for More Silliness

™

There is one single development

approach that works best for all projects.

Software Silly Meter

(26)

“Software Development Best Practices” 51

This is a saw …

(27)

“Software Development Best Practices” 53

… and so is this …

“Software Development Best Practices”

(28)

“Software Development Best Practices” 55

… and so is this …

(29)

“Software Development Best Practices” 57

… and so is this …

“Software Development Best Practices”

(30)

“Software Development Best Practices” 59

… and so is this …

(31)

“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”

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 project

(32)

Construx

Software Development Best Practices ®

#10

Software Engineering

Body of Knowledge

(SWEBOK)

The SWEBOK

(Software Engineering Body of Knowledge)

™

Software Configuration Management

™

Software Construction

™

Software Design

™

Software Engineering Management

™

Software Engineering Process

™

Software Maintenance

™

Software Quality

™

Software Requirements

™

Software Testing

(33)

“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”

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

(34)

“Software Development Best Practices” 67

Alternative #1 to the SWEBOK

I could try to

explain software to

you, but you

wouldn’t

understand.

Alternative #2 to the SWEBOK

Don’t ask

questions.

Just have faith

(35)

“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”

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

processes

processes

™

™

Academic curriculums

Academic curriculums

™

™

Career development

Career development

™

™

Professional certification

Professional certification

™

™

Employment interviewing

Employment interviewing

™

™

Technical skills inventory

Technical skills inventory

And we

(36)

“Software Development Best Practices” 71

Is the SWEBOK the Ultimate Answer?

“Truth will sooner come out of error

than from confusion.”

– Francis Bacon

Construx

Software Development Best Practices ®

(37)

Construx

Software Development Best Practices ®

Breaking News…

™

™

Training

Training

™

™

Consulting

Consulting

™

™

Tools

Tools

sales@construx.com

www.construx.com

+1 (425) 636-0100

References

Related documents

Slightly over half of offices in the local administration sector provide their employees with remote access to the electronic mail system and to the documents and

This unit aims to enable learners to understand the structure and function of the musculo-skeletal system and mechanics of movement, gain knowledge of balance and posture

Studies reporting the prevalence of burnout, com- passion fatigue, secondary traumatic stress and vicarious trauma in ICU healthcare profes- sionals were included, as well as

One possible approach, found in the Obama campaign plan, would be to establish a purchasing exchange at the federal level. Ensuring that health insurance is uniformly available

The distinctive features of grounded theory are that theory will be generated from the data gathered, a constant comparative method of data analysis will be used and the

Given the location of the bidding generators, their supply curves, the transmission constraint set by the TSO and the forecast demand in each zone, the MO solves the problem of

(2012b), Molecular records of climate variability and vegetation response since the Late Pleistocene in the Lake Victoria basin, East Africa, Quaternary Science Reviews,

decide on money instead of contracts see, for instance, Shapley and Shubik, 1972, Roth and Sotomayor, 1990, and Pérez-Castrillo and Sotomayor, 2002). Any stable outcome is also