Software Development Best Practices

Published on June 2016 | Categories: Documents | Downloads: 33 | Comments: 0 | Views: 504
of 36
Download PDF   Embed   Report

Comments

Content

Construx
Software Development Best Practices

®

The 10 Most Powerful Ideas in Software Engineering
© 2009 Construx Software Builders, Inc. All Rights Reserved.

www.construx.com

What Do You Think Are The 10 Most Powerful Ideas in Software Engineering?
Where would the ideas come from?
Configuration Management? Software Construction? Design? Engineering Management? Process? Maintenance? Quality? Requirements? Testing? Tools and Methods?
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
3

Construx
Software Development Best Practices

®

#1
Software Development Work is Performed by Human Beings

Cocomo II’s View of Software Project Influences
Product Complexity Programmer Capability (general) Time Constraint Personnel Continuity (turnover) Multi-Site Development Required Software Reliability Extent of Documentation Required Applications (Business Area) Experience Use of Software Tools Platform Volatility Storage Constraint Precedentedness Process Maturity Language and Tools Experience Database Size Platform Experience Architecture and Risk Resolution Development Flexibility Developed for Reuse Team Cohesion -14% -19% -19% -16% -10% -15% -18% -16% -5% 11% 19% 14% 12% 24% -19% -22% -18% -19% -19% -22% -13% 0% 15% 15% 20% 28% -27% 42% 34% 0% 29% 22% 26% 23% 22% 17% 30% 46% 63% -24% 74% Requirements Analyst Capability -29%

5

Cocomo II’s View of Software Project Influences
Requirements Analyst Capability -29% Programmer Capability (general) Personnel Continuity (turnover) -24% -19% 42% 34% 29%

Applications (Business Area) Experience

-19%

22%

Language and Tools Experience Platform Experience

-16% -15%

20% 19%

Team Cohesion

-14%

11%

-78%

Cumulative Effect of Personnel Factors

373%
6

Importance of Human Influences

Human Influences make a 22x 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
7

Why Do These Variations Exist?

Experience? Technology knowledge? Business knowledge? Personal processes?

8

This Just In …

Wednesday May 21 2009

Human Beings Exhibit the Same Variations in Performance That Programmers Do!

9

Conclusions You Can Take to the Bank

With 20x differences in individuals and 10x differences in teams commonly reported… Technical successes of Google, Amazon, Microsoft and similar companies are not accidents Recruiting top staff is easily cost justified Even elaborate staff retention programs are also easily cost justified

10

Construx
Software Development Best Practices

®

#2
Incrementalism is Essential

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

12

Conclusions You Can Take to the Bank

What do you get from incrementalism? Feedback! (on the software itself) Feedback! (on the dev process) Feedback! (on the people/dev capability) Ability to adapt

13

Or, Another Perspective on Feedback …

If the map and the terrain disagree, trust the terrain!

14

Construx
Software Development Best Practices

®

#3
Iteration is Essential

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 The result is not known in advance

16

News Flash!
ITERATION!

People Are Not Computers
17

News Flash!
ITERATION!

Practice Helps!
And making small mistakes that prevent large mistakes helps too

18

This Just In …
INSANITY!

One Definition: Doing the same thing over and over and expecting different results.

One More Definition: Not doing the same thing over because you think the results won’t change. won’

19

In the Midst of These Important Ideas, Some Are Just Plain Silly

Neutral
ha t So m ew Si lly
o ri Se us ly ld Mi

Incredibly Serious

Incredibly Silly

Software Silly Meter
20

Silly Idea: The only two development options in existence are “Iterate Nothing” and “Iterate Everything”

Software Concept

Requirements Analysis Architectural Design

Detailed Design Coding and Debugging

System Testing

Software Silly Meter
21

Conclusions You Can Take to the Bank
Some practices derive their power from incrementalism (doing a little bit at a time) Some practices derive their power from iteration (repeating the same task) You can iterate within an activity or phase (e.g., within requirements) You can iterate across any pair of activities or phases (e.g., requirements & architecture) You can iterate across entire development cycles The degree of iteration can vary from practically 0-100% either within or across activities
22

Construx
Software Development Best Practices

®

#4
The Cost To Fix A Defect Increases Over Time

Defect Cost Increase (DCI)

Activity in which a Defect Is Introduced

Requirements Architecture Construction
Requirements Architecture Construction System test

Average Cost to Correct

Post-Release

Activity in Which a Defect Is Detected
24

Notable Historical Mistakes
Greatest Mistakes in History

480 BC:
“This is a nice gift!”
25

Notable Historical Mistakes
Greatest Mistakes in History

1999:
“In the New Economy, companies won't need to make a profit to be successful.”
26

Notable Historical Mistakes
Greatest Mistakes in History

2001-2009: “Agile projects aren’t affected by Defect Cost Increase.”
Activity in which a Defect Is Introduced Requirements Architecture Construction
Requirements ArchitectureConstructionSystem test Post-Release

Average Cost to Correct

Activity in Which a Defect Is Detected

Software Silly Meter
27

Conclusions You Can Take to the Bank

Defect creation is a function of effort Defect detection and removal is a function of QA activities Fix more defects earlier! Use practices that reduce the magnitude of DCI

28

Construx
Software Development Best Practices

®

#5
There’s an Important Kernel of Truth in the Waterfall Model

Remember This?
“I’m Not Bad. I’m Just Drawn That Way.” --Jessica Rabbit
Architectural Design

Software Concept

Requirements Analysis

Detailed Design Coding and Debugging

System Testing

30

Intellectual Phases
Discovery Invention Construction

Focus

Schedule
This figure is adapted from Grady Booch, Object Solutions: Managing the Object-Oriented Project, Reading, Mass: Addison Wesley 1996

31

Cost of Overlapping Intellectual Phases
Discovery Invention Construction

Overlap =
Dependencies Uncertainty Risk Rework Higher costs Longer schedules Lower quality
Schedule

Focus

32

Conclusions You Can Take to the Bank

Some degree of wickedness is inevitable. Plan for it. Much wickedness is avoidable. Plan for that, too. Attack wickedness actively, especially via incremental and iterative approaches.

33

Construx
Software Development Best Practices

®

#6
Software Estimates Can Be Improved Over Time (The Cone Of Uncertainty)

Cone of Uncertainty
Project Scope (effort, cost, or features)
4x

Product Definition

2x

Requirements/UI Design Detailed Design

1.5x 1.25x 1.0x 0.8x 0.67x 0.5x

0.25x

Time

35

Conclusions You Can Take to the Bank

Estimation must be iterative Project planning must be incremental An estimate isn’t meaningful unless it contains a description of its inaccuracy

36

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 possible, including processes and plans

38

Effect of Adding Process the First Time (What I Wrote in SPSG in 1997)
100%

Thrashing

Percent of Effort

Productive Work

0%

Process Overhead
Time
39

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

Thrashing

Percent of Effort

Productive Work

0%

Process Overhead
Time
40

Effect of Adding Reused Processes
100%

Thrashing

Percent of Effort

Productive Work

0%

Process Overhead
Time
41

Conclusions You Can Take to the Bank
Consider reusing any or all of these: Coding standards Change control policies Estimation procedures Formats & outlines of project plans, requirements doc, design docs, QA plan, test plan, etc. Checklists for plans, estimates, change control, inspections, QA, etc. Roles & responsibilities Training
42

Construx
Software Development Best Practices

®

#8
Risk Management Provides Critical Insights into Many Core Software Development Issues

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.

44

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

A View of Software Risk Reduction
Typical Relationship between Planned Work and Variable Work:

Planned Work

Unplanned, Variable Work (typically >50% of total)

Better Relationship:

Planned Work

Planned “Overhead”

Unplanned, Variable Work

46

A View of Software Risk Reduction

Planned Work

Planned “Overhead”

Unplanned, Variable Work

47

Conclusions You Can Take to the Bank

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?

48

Construx
Software Development Best Practices

®

#9
Different Kinds of Software Call For Different Kinds of Software Development (The “Toolbox”)

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 SWCMM.
Examples from Balancing Agility and Discipline: A Guide for the Perplexed, Barry Boehm, Richard Turner, 2004
50

Time for More Silliness
There is one single development approach that works best for all projects.

Software Silly Meter
51

This is a saw …

52

… this is also a saw …

53

… and so is this …

54

… and so is this …

55

… and so is this …

56

… and so is this …

57

… and so is this …

58

… and so is this …

59

… and so is this …

60

… and so is this …

61

News Flash!

SOFTWARE DEVELOPMENT IS AS DIFFICULT AS SAWING!

MARTIAN RESEARCHERS MAKE KEY DISCOVERY!

Different Projects Call for Aliens donate Different research results Development to Software Approaches! Community
62

Conclusions You Can Take to the Bank

Which software development approach works best depends on the kind of project

63

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 Software Tools and Methods
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
66

Conclusions You Can Take to the Bank
SWEBOK provides a wide spectrum of support for software development practices: Defined, reusable software development processes Academic curriculums Career development Professional certification Employment interviewing Technical skills inventory And we’re just getting started! we’

67

Is the SWEBOK the Ultimate Answer?

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

68

Or as Strunk & White Said …

In Elements of Style (approximate paraphrase): If you don’t know how to pronounce a word, say it LOUD! Then someone might correct you and you can learn something.

69

10 Most Powerful Ideas
Software Development Work is Performed by Human Beings Incrementalism Iteration Cost To Fix A Defect Increases Over Time Important Kernel of Truth in the Waterfall Model Software Estimates Can be Improved Over Time (The Cone Of Uncertainty) The Most Powerful Form of Reuse is Full Reuse Risk Management Provides Critical Insights into Many Core Software Development Issues Different Kinds of Software Call For Different Kinds of Software Development (The “Toolbox”) SWEBOK
70

Construx
Software Development Best Practices

®

Breaking News…

Training Consulting Tools
[email protected] www.construx.com +1 (866) 296-6300 (425) 636-0100

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close