The Microsoft Software The Microsoft Software Development Process - - PowerPoint PPT Presentation

the microsoft software the microsoft software development
SMART_READER_LITE
LIVE PREVIEW

The Microsoft Software The Microsoft Software Development Process - - PowerPoint PPT Presentation

The Microsoft Software The Microsoft Software Development Process Development Process Scott Guthrie Scott Guthrie Program Manager Program Manager Microsoft Corporation Microsoft Corporation Natural Phases of a Natural Phases


slide-1
SLIDE 1

The Microsoft Software The Microsoft Software Development Process Development Process

Scott Guthrie Scott Guthrie Program Manager Program Manager Microsoft Corporation Microsoft Corporation

slide-2
SLIDE 2

“Natural” Phases of a “Natural” Phases of a Software Project Software Project

  • Enthusiasm

Enthusiasm

  • Disillusionment

Disillusionment

  • Panic

Panic

  • Search for the Guilty

Search for the Guilty

  • Punishment of the Innocent

Punishment of the Innocent

  • Praise and Honors for Non-Participants

Praise and Honors for Non-Participants

slide-3
SLIDE 3

Successful Projects Successful Projects

  • Not all software projects have to

Not all software projects have to progress this way! progress this way!

  • Those that are successful typically

Those that are successful typically share three outstanding characteristics: share three outstanding characteristics:

  • People

People

  • Poise

Poise

  • Process

Process

slide-4
SLIDE 4

Today’s Agenda: Today’s Agenda:

The Microsoft Development Process The Microsoft Development Process

  • Origin of a MS Product

Origin of a MS Product

  • The Product Team

The Product Team

  • Designing the Product

Designing the Product

  • Scheduling the Product

Scheduling the Product

  • Implementing the Product

Implementing the Product

  • Testing the Product

Testing the Product

  • Shipping the Product

Shipping the Product

slide-5
SLIDE 5

Origin of a MS Product Origin of a MS Product

slide-6
SLIDE 6

How to Start a MS Product How to Start a MS Product

  • Step 1: Identify market opportunity

Step 1: Identify market opportunity

  • Customers, Competitors, Market Dynamics

Customers, Competitors, Market Dynamics

  • Step 2: Determine viability of market entry

Step 2: Determine viability of market entry

  • Volume, price/cost margins, fixed costs, etc.

Volume, price/cost margins, fixed costs, etc.

  • Step 3: Define vision statement

Step 3: Define vision statement

  • Crisp enunciation of goals + issue ownership

Crisp enunciation of goals + issue ownership

  • Explain strategic importance to company

Explain strategic importance to company

  • Step 4: Make a lot of noise!

Step 4: Make a lot of noise!

slide-7
SLIDE 7

The Product Team The Product Team

slide-8
SLIDE 8

The Product Team The Product Team

Product Unit Manager

Group Program Manager Dev Manager Test Manager

Dev Lead Dev Lead Test Lead Test Lead PM Lead PM Lead

Dev Dev PM PM Tester Tester

slide-9
SLIDE 9

Designing the Product Designing the Product

slide-10
SLIDE 10

Product Design Product Design

  • Thoroughly understand your customers

Thoroughly understand your customers

  • How do they work? What do they really do?

How do they work? What do they really do?

  • Visit, observe, listen & meticulously

Visit, observe, listen & meticulously document document

  • Thoroughly understand your competitors

Thoroughly understand your competitors

  • Evaluate their product strengths/weaknesses?

Evaluate their product strengths/weaknesses?

  • Identify the

Identify the strategic strategic and and tactical tactical themes themes and requirements that your features and requirements that your features should be thinking about should be thinking about

  • Ensure that they are inline w/ vision statement

Ensure that they are inline w/ vision statement

slide-11
SLIDE 11

Feature Design Feature Design

  • Drill down on feature specifics

Drill down on feature specifics

  • Focus on “what it does”

Focus on “what it does” vs

  • vs. “how we build it”

. “how we build it”

  • Questions to consider:

Questions to consider:

  • How do we make a feature usable/simple?

How do we make a feature usable/simple?

  • How do we make a feature visible?

How do we make a feature visible?

  • How do we integrate other parts of a product?

How do we integrate other parts of a product?

  • Document scenarios, assumptions and

Document scenarios, assumptions and design proposal in a detailed spec design proposal in a detailed spec

  • Maintain tight feedback/evaluation loop

Maintain tight feedback/evaluation loop

slide-12
SLIDE 12

Implementation Issues Implementation Issues

  • Developers own thinking through the

Developers own thinking through the implementation issues of a feature implementation issues of a feature

  • Questions to consider:

Questions to consider:

  • How factorable is the feature?

How factorable is the feature?

  • Can the feature be delivered in stages?

Can the feature be delivered in stages?

  • What dependencies does it have?

What dependencies does it have?

  • What other features are dependent on it?

What other features are dependent on it?

  • How many developer weeks are required?

How many developer weeks are required?

slide-13
SLIDE 13

Scheduling the Product Scheduling the Product

slide-14
SLIDE 14

Scheduling/Planning Scheduling/Planning

  • Schedules are done after the initial design

Schedules are done after the initial design document is ready for review document is ready for review

  • There is an inherit tension between the

There is an inherit tension between the schedule and the design document schedule and the design document

  • Each needs to be constantly re-evaluated and

Each needs to be constantly re-evaluated and re-calibrated against the other re-calibrated against the other

  • Software scheduling in general is

Software scheduling in general is something of an imprecise science something of an imprecise science

  • Concatenation of educated guesses

Concatenation of educated guesses

slide-15
SLIDE 15

Scheduling Questions Scheduling Questions

  • Is the ship date driven by features or a

Is the ship date driven by features or a hard schedule? hard schedule?

  • Can/should the product vision be staged

Can/should the product vision be staged

  • ver multiple product releases?
  • ver multiple product releases?
  • How long has the product team worked

How long has the product team worked together? What size will it be? together? What size will it be?

  • Big != Good. Keep in mind the N-1 rule...

Big != Good. Keep in mind the N-1 rule...

  • Will the team be working at a normal pace

Will the team be working at a normal pace

  • r in “Death-March” mode?
  • r in “Death-March” mode?
slide-16
SLIDE 16

Milestones Milestones

  • Milestones are used to logically segment

Milestones are used to logically segment development into 9-12 week periods development into 9-12 week periods

  • Early Milestones: Critical features & core code

Early Milestones: Critical features & core code

  • Later Milestones: Functionality that can be cut

Later Milestones: Functionality that can be cut

  • Milestones help maintain “ship-mode”

Milestones help maintain “ship-mode” focus/atmosphere over long projects focus/atmosphere over long projects

  • Milestones encourage staging of products

Milestones encourage staging of products

  • Enable review of progress (“Postmortems”)

Enable review of progress (“Postmortems”)

  • Facilitate corrections to master schedule

Facilitate corrections to master schedule

slide-17
SLIDE 17

Rules for Picking Dates Rules for Picking Dates

  • Whatever date you publish will be the

Whatever date you publish will be the earliest earliest you possibly ship you possibly ship

  • Date should be aggressive

Date should be aggressive and and realistic realistic

  • Budget vacations and sick-leave

Budget vacations and sick-leave

  • Plan for unexpected absences

Plan for unexpected absences

  • maternity/paternity leave

maternity/paternity leave

  • Pad schedule for stabilization and non-

Pad schedule for stabilization and non- deterministic progress delays deterministic progress delays

slide-18
SLIDE 18

Implementing the Product Implementing the Product

slide-19
SLIDE 19

Establish Best Practices Establish Best Practices

  • Source code management

Source code management

  • Whatever happened to Microsoft Pascal?

Whatever happened to Microsoft Pascal?

  • Coding Standards

Coding Standards

  • What dialect of Hungarian do you use?

What dialect of Hungarian do you use?

  • Code Reviews

Code Reviews

  • Every line of code should be peer reviewed

Every line of code should be peer reviewed

  • Localization Guidelines

Localization Guidelines

  • If you plan ahead it is money in the bank…

If you plan ahead it is money in the bank…

slide-20
SLIDE 20

First Implementation Steps First Implementation Steps

  • Define overall code-base structure:

Define overall code-base structure:

  • Specify directory hierarchy (headers,

Specify directory hierarchy (headers, libs libs, etc.) , etc.)

  • Setup

Setup Makefile Makefile and build environment and build environment

  • Come up with common Macros and

Come up with common Macros and Ifdefs Ifdefs

  • Define overall code-base architecture:

Define overall code-base architecture:

  • Design core APIs, interfaces and structures

Design core APIs, interfaces and structures

slide-21
SLIDE 21

Builds Builds

  • Products are compiled and released daily

Products are compiled and released daily

  • Forcing factor for code interoperation

Forcing factor for code interoperation

  • Provides steady progress measurement

Provides steady progress measurement

  • Enables daily test coverage of entire product

Enables daily test coverage of entire product

  • Builds can often take a long time…

Builds can often take a long time…

  • “Clean Build” of Windows NT takes 36 hours

“Clean Build” of Windows NT takes 36 hours

  • It is critical that delays are minimized

It is critical that delays are minimized

  • Strict check-in procedures typically enforced

Strict check-in procedures typically enforced

slide-22
SLIDE 22

Check-in Procedures Check-in Procedures

  • Step 1: Finish writing code

Step 1: Finish writing code

  • Step 2: Code review with a team member

Step 2: Code review with a team member

  • Step 3: “Buddy build” on 2 clean systems

Step 3: “Buddy build” on 2 clean systems

  • Step 4: Send “check-in request” mail to the

Step 4: Send “check-in request” mail to the Build Technician and daily “Build Build Technician and daily “Build Meister Meister” ”

  • Step 5: If check-in is approved, the build

Step 5: If check-in is approved, the build technician will check-out appropriate files technician will check-out appropriate files into the build tree into the build tree

slide-23
SLIDE 23

Build Problems Build Problems

  • Build Breaks (compile/linking error)

Build Breaks (compile/linking error)

  • Basically means some bozo screwed up

Basically means some bozo screwed up

  • Punishment should fit the crime… :-)

Punishment should fit the crime… :-)

  • Build Verification Test (BVT) Failures

Build Verification Test (BVT) Failures

  • Automated test indicates functionality failure

Automated test indicates functionality failure

  • Each build classified at release:

Each build classified at release:

  • “Self Host”

“Self Host”

  • “Self Test”

“Self Test”

  • “Self Toast”

“Self Toast”

slide-24
SLIDE 24

Ensuring Product Quality Ensuring Product Quality

slide-25
SLIDE 25

Software Testing Software Testing

  • Testing is critical to software development

Testing is critical to software development

  • Must be analytical, methodical and thorough

Must be analytical, methodical and thorough

  • Test plan documents must be developed

Test plan documents must be developed before code is even written before code is even written

  • Automation is key to stabilizing a product

Automation is key to stabilizing a product

  • Comprehensive code coverage

Comprehensive code coverage

  • Enables quick verification of product health

Enables quick verification of product health

  • Enables easy reproducibility of errors

Enables easy reproducibility of errors

slide-26
SLIDE 26

Bug Triage Bug Triage

  • Discovered bugs are logged to a database

Discovered bugs are logged to a database

  • Senior team members meet at least once a

Senior team members meet at least once a day to review/rank active bugs day to review/rank active bugs

  • Bugs assigned severity, priority, owner

Bugs assigned severity, priority, owner

  • Must-fix bugs marked as “showstoppers”

Must-fix bugs marked as “showstoppers”

  • “Scrubbing” the bug list

“Scrubbing” the bug list

  • Process of upgrading bugs to future releases

Process of upgrading bugs to future releases

  • Done when a bug is just too dangerous to fix

Done when a bug is just too dangerous to fix

slide-27
SLIDE 27

Getting It Out The Door Getting It Out The Door

slide-28
SLIDE 28

The End Game The End Game

  • Alpha Release

Alpha Release

  • Beta1 Release

Beta1 Release

  • Code Complete

Code Complete

  • Beta2 Release

Beta2 Release

  • Zero Bug-Bounce

Zero Bug-Bounce

  • Release Candidate (RC)

Release Candidate (RC)

  • Release to Manufacturing (RTM)

Release to Manufacturing (RTM)

slide-29
SLIDE 29

End Game Responsibilities End Game Responsibilities

  • Program Management: Ensure that all

Program Management: Ensure that all scenarios documented in design spec scenarios documented in design spec are fully operational. are fully operational.

  • Test: Ensure that all features

Test: Ensure that all features implemented are at 0 showstoppers. implemented are at 0 showstoppers.

  • Development: Resolve critical bugs as

Development: Resolve critical bugs as they appear. Ensure that the build they appear. Ensure that the build remains stable remains stable

slide-30
SLIDE 30

The End The End

  • Once the build hits zero showstoppers, it

Once the build hits zero showstoppers, it will be “escrowed” while the team spends will be “escrowed” while the team spends several days verifying that no new nasty several days verifying that no new nasty bugs are lurking. bugs are lurking.

  • If no new showstopper bugs are identified,

If no new showstopper bugs are identified, a “master” or “golden” CD will be burned a “master” or “golden” CD will be burned with the product bits. with the product bits.

  • The CD will then be released to a

The CD will then be released to a manufacturing factory where shrink- manufacturing factory where shrink- wrapped products will be produced. wrapped products will be produced.

slide-31
SLIDE 31