Principles & Practices Principles & Practices of Software - - PowerPoint PPT Presentation

principles practices principles practices of software
SMART_READER_LITE
LIVE PREVIEW

Principles & Practices Principles & Practices of Software - - PowerPoint PPT Presentation

Principles & Practices Principles & Practices of Software Development of Software Development Daniel Spoonhower Daniel Huttenlocher Carnegie Mellon University Cornell University Pittsburgh, PA Ithaca, NY Intelligent Markets, Inc.


slide-1
SLIDE 1

Principles & Practices Principles & Practices

  • f Software Development
  • f Software Development

Daniel Spoonhower Daniel Huttenlocher

Carnegie Mellon University Cornell University

Pittsburgh, PA Ithaca, NY

Intelligent Markets, Inc.

San Francisco, CA New York, NY

slide-2
SLIDE 2

In This Talk In This Talk

  • Purpose

– Relate some of our experience – Introduce way of talking about software development

  • Language for dialogue
  • Audience
  • Not in this talk

– Breadth of experiences – Scientific study

slide-3
SLIDE 3

Outline Outline

  • Background
  • Experience: Requirements & Estimation
  • Terminology: Principles, Problems and

Practices

– Some examples & comparisons – Things to look out for (e.g. competing Principles)

  • Relating Principles to experience
slide-4
SLIDE 4

Background Background

  • Our task – system for trading convertible

bonds

  • Our (prior) experience
  • Our team – best people we’d ever worked

with

  • Our challenge:

– High reliability – Complex (user) requirements – Technically challenging – Demanding schedule

slide-5
SLIDE 5

Background Background

  • Your experiences?

– Written software (or just programs)?

  • Your teams?

– Size, project duration?

  • Your challenges?
slide-6
SLIDE 6

Simplified Organization Simplified Organization

Marketing Product Management QA Customers Engineering

slide-7
SLIDE 7

Requirements & Estimation Requirements & Estimation

slide-8
SLIDE 8

Requirements & Estimation Requirements & Estimation

  • First implementation

– Started with partial outsourced version – Screen shots used as requirements

  • No product management

– Responsibilities shared by marketing & engineering

  • Internal customer

– Frequent delivery, rapid feedback

slide-9
SLIDE 9

First Solution(!) Results First Solution(!) Results

  • Sparse documentation

– Both requirements and implementation – Verbally conveyed = many changes – Written by developers

  • Success!

– Very flexible, agile process – System launched in 8 months – Many lessons learned

slide-10
SLIDE 10

Product Management Product Management

  • Second solution

– Now enterprise software not service – External customers – Demanded clearer definition of product

  • Feature by feature description

– Hierarchical, outline format

  • Specification change process

– Manage document updates – Understand effects of changes

slide-11
SLIDE 11

Second Solution Second Solution

  • Problems:

– Lacked coherence – Serving many different parts of the company

  • Marketing, product design, engineering

– Didn’t convey understanding – Delivered on-time but with poor set of features

slide-12
SLIDE 12

More Documentation More Documentation

  • Third solution (attempted, not fully

implemented):

– Several levels of documentation, one for each use, e.g.

  • MRD (Marketing)
  • HLD & DLD (Product Management and QA)
  • TD (Engineering and QA)
  • Conventional big company approach
slide-13
SLIDE 13

Third(!) Solution Results Third(!) Solution Results

  • Problems:

– Lots of effort, difficult to manage

  • Many dependencies, gated tasks

– Skew between different documents – Focus on documents more than on development

slide-14
SLIDE 14

Interleaved Stages Interleaved Stages

  • Our final solution: incremental!

– Alternate requirements with estimates – Start with quick, rough ideas; work towards details – Drive to ship date – cut features to do so

slide-15
SLIDE 15

Interleaved Stages Interleaved Stages

  • Requirements

– Business need, short descriptions, detailed functional and UI specs – Reprioritize as estimates established

  • Several levels of specs and estimates

– Day-week-month, “factor of 2 guess”, then +/- 25% with small tasks – More specific estimates derived from more detailed specs

slide-16
SLIDE 16

Ongoing Challenges Ongoing Challenges

  • “Delta” specifications – note changes to

product

– Need both complete and difference spec

  • Product team gaining understanding of

implementation

– Can find more workable solutions – More difficult to think independently

  • Meet the needs of testing

– Function point combinations – Workflow sequences

slide-17
SLIDE 17

Lessons Learned Lessons Learned

  • Communication is important

– Business needs engineering – Estimates & implementation PM

  • Conflicting forces:

– Include the best features – Ensure maintainability – Ship on time

  • Make sure the process focuses

resources on getting product done

slide-18
SLIDE 18

Terminology Terminology

slide-19
SLIDE 19

Terminology Terminology

Principle A comprehensive and fundamental law, doctrine, or assumption. Principles may be universal, or they may apply only to certain types of projects.

slide-20
SLIDE 20

Terminology Terminology

Principle A comprehensive and fundamental law, doctrine, or assumption. Principles may be universal, or they may apply only to certain types of projects.

  • Predictive
  • Broadly applicable
  • Relates to experience
  • Expands understanding
slide-21
SLIDE 21

Terminology Terminology

Problem Something that can get in the way of rapidly developing high quality software that meets customer needs, while having fun doing it.

slide-22
SLIDE 22

Terminology Terminology

Problem Something that can get in the way of rapidly developing high quality software that meets customer needs, while having fun doing it.

  • Observable
  • Describes a state of being
  • To be identified, minimized, avoided,

solved

slide-23
SLIDE 23

Terminology Terminology

Practice A way of acting or working so as to avoid

  • r to alleviate problems in developing

software.

slide-24
SLIDE 24

Terminology Terminology

Practice A way of acting or working so as to avoid

  • r to alleviate problems in developing

software.

  • Most importantly: an action
  • Still abstract (as opposed to

implementation)

  • Focus of many methodologies
slide-25
SLIDE 25

Our Goals Our Goals

  • Explicitly enumerate
  • Study interactions
  • Compare results

BUT… …keep them separate! Principles Problems Practices

slide-26
SLIDE 26

Principles, Problems and Principles, Problems and Practices Practices

slide-27
SLIDE 27

Principles, Problems and Principles, Problems and Practices Practices

  • Seen some Problems and Practices

related to requirements and estimation

  • Consider some underlying Principles

– Sometimes competing

  • Relate to the experiences in

specification and estimation

slide-28
SLIDE 28

Domain Expertise Domain Expertise

Principle: Understanding the domain is critical to understanding, explaining, and interpreting user requirements.

slide-29
SLIDE 29

Domain Expertise Domain Expertise

Principle: Understanding the domain is critical to understanding, explaining, and interpreting user requirements.

  • Key to many of our initial practices
  • Important for communication

– Understand language; interpret spec – Critical for QA – Understand user needs (and feedback)

slide-30
SLIDE 30

Changing Requirements Changing Requirements

Principle: Requirements change, both because the understanding of the needs

  • f users change and because the needs

themselves change.

slide-31
SLIDE 31

Changing Requirements Changing Requirements

Principle: Requirements change, both because the understanding of the needs

  • f users change and because the needs

themselves change.

  • When is a specification finished? Never!

– But need to ship the product

  • All requirements change

– More changes for new products

slide-32
SLIDE 32

Specification Cost Specification Cost

Principle: There is a high cost to writing and maintaining detailed specification documents that are accurate and effectively convey understanding.

slide-33
SLIDE 33

Specification Cost Specification Cost

Principle: There is a high cost to writing and maintaining detailed specification documents that are accurate and effectively convey understanding.

  • What form of specification is most

useful? E.g.

– None, note cards, templates – Functional, UI, relationship, sequence

slide-34
SLIDE 34

Little or No Specification? Little or No Specification?

  • Advocated by eXtreme Programming
  • Successful practice for our first

implementation

  • For large and/or new projects, cost of

maintenance can be astronomical

– E.g. “big company” approach

Why do we need a specification?

slide-35
SLIDE 35

Unreliable Memory Unreliable Memory

Principle: Personal memory is a poor substitute for a written document.

slide-36
SLIDE 36

Unreliable Memory Unreliable Memory

Principle: Personal memory is a poor substitute for a written document.

  • Verbal communication can easily be

misconstrued

  • Memories fade over time
  • People make expensive storage devices
slide-37
SLIDE 37

Adequate Specificity Adequate Specificity

Principle: When customer needs admit many interpretations, precise descriptions help ensure usability and quality.

slide-38
SLIDE 38

Adequate Specificity Adequate Specificity

Principle: When customer needs admit many interpretations, precise descriptions help ensure usability and quality.

  • Applies differently to different projects

– Depends on complexity of user needs – E.g. compression software

slide-39
SLIDE 39

Detailed Specification? Detailed Specification?

  • Specification is important for

establishing obligations

– What will be implemented – What will be tested – What will be delivered

  • Specification evolves with product

– As opposed to Waterfall, where spec drives remainder of process

slide-40
SLIDE 40

Competing Principles Competing Principles

Unreliable Memory Adequate Specification Changing Requirements Specification Cost How do we achieve a balance?

slide-41
SLIDE 41

Clear Statement Clear Statement

Principle: A clear and concise statement

  • f user needs generally results in the

development of better software.

slide-42
SLIDE 42

Clear Statement Clear Statement

Principle: A clear and concise statement

  • f user needs generally results in the

development of better software.

  • Accessible to company & customers
  • Guidelines:

– Use informal communication to establish understanding – Use documentation to preserve it

slide-43
SLIDE 43

Incremental & Iterative Incremental & Iterative

  • Incremental specification avoids risks

inherent in this set of Principles

  • Other iterative practices can be found in:

– Technical design – Scheduling releases

  • Negotiation between competing forces

– Taking “small steps” reduces the chance that one force will “defeat” the others

slide-44
SLIDE 44

Driving Force: Ship Date Driving Force: Ship Date

  • For new companies

– Establish reputation and credibility

  • Balancing force

– Counteracts “feature creep” – Millions of ways not to ship!

  • Healthy part of project lifecycle

– Allow for personnel & process transitions

  • It is an external and concrete goal!
slide-45
SLIDE 45

Real Use Real Use

Principle: Understanding the needs of users and validating that those needs have been met is best done with a real implementation of the software and real users.

slide-46
SLIDE 46

Real Use Real Use

Principle: Understanding the needs of users and validating that those needs have been met is best done with a real implementation of the software and real users.

  • “Line in the sand”
  • Ultimate validation

– Not just for the spec, but for the product

slide-47
SLIDE 47

… & Incremental Processes … & Incremental Processes

  • Real Use – push the product all the way

through the process

– At regular intervals – To validate feature set (incremental specification) – To check implementation (incremental delivery) – To get feedback on the process itself (projects change – no single process is “correct”)

slide-48
SLIDE 48

Summary Summary

  • Use Principles to understand working

constraints

– Abstract away from Problems/Practices

  • Be aware of competing Principles
  • Use incremental and iterative processes

to alleviate risk caused by conflicts

– Take small steps and re-evaluate