requirements the last bottleneck

48
Requirements: the Last Bottleneck Bill Karwin ZendCon • Santa Clara • 2010/11/3

Upload: karwin-software-solutions-llc

Post on 11-May-2015

3.077 views

Category:

Technology


2 download

DESCRIPTION

Software developers love tools for coding, debugging, testing, and configuration management. The more these tools improve the How of coding, the more we see that we're behind the curve on improving the What, Why, and When. If you've been on a project that seemed vague, adrift, and endless, this talk can help. Make your projects run SMART.

TRANSCRIPT

Page 1: Requirements the Last Bottleneck

Requirements:the Last BottleneckBill KarwinZendCon • Santa Clara • 2010/11/3

Page 2: Requirements the Last Bottleneck

Me

• Software developer

• C, Java, Perl, PHP, Ruby

• SQL maven

• Author of new book SQL Antipatterns

Page 3: Requirements the Last Bottleneck

cost

Page 4: Requirements the Last Bottleneck

the greatest single cost in producing software is

programmer time

Page 5: Requirements the Last Bottleneck

code faster!

Page 6: Requirements the Last Bottleneck

Tools for reducing programmer time

• Dynamic languages

• Lots of functions

• OO design

• Code reuse

• Code generation

• IDE’s

• Frameworks

• Source control

• Test automation

• Agile development

Page 7: Requirements the Last Bottleneck

• Tools help productivity for coding and error removal

• But not so much for requirements management

Page 8: Requirements the Last Bottleneck

Error removal is the most time-consuming part of development

Facts and Fallacies of Software Engineering, Robert L. Glass

Page 9: Requirements the Last Bottleneck

Cost to fix a defect

Software Requirements, Karl E. WiegersCode Complete, Steve McConnell

Page 10: Requirements the Last Bottleneck

code faster?

Page 11: Requirements the Last Bottleneck

code less!

Page 12: Requirements the Last Bottleneck

Front-load the project

Facts and Fallacies of Software Engineering, Robert L. Glass

Page 13: Requirements the Last Bottleneck

managing requirements reduces project cost

Page 14: Requirements the Last Bottleneck

so why don’t we do it?

Page 15: Requirements the Last Bottleneck

“We practice Agile Development, so we don’t need requirements.”

Really?

Page 16: Requirements the Last Bottleneck

Agile Manifesto?

Principle #2:

“Welcome changing requirements, even late in development.”

http://www.agilemanifesto.org/

Page 17: Requirements the Last Bottleneck

Test-Driven Design?

“TDD is very good at detailed specification and validation, but not so good at thinking through bigger issues such as the overall design, how people will use the system, or the UI design (for example).”

Introduction to Test-Driven Design, Scott W. Amblerhttp://www.agiledata.org/essays/tdd.html

Page 18: Requirements the Last Bottleneck

Extreme Programming?

Extreme Programming Explained: Embrace Change, Kent Beck

Coding

If you don’t code, you haven’t done anything.

Testing

If you don’t test, you don’t know when you are done

coding.

Listening

If you don’t listen you don’t know what to code

or what to test.

Design

So you can keep coding and testing and listening

indefinitely.

Page 19: Requirements the Last Bottleneck

Scrum?

• Product Backlog: the prioritized list of desired project outcomes/features

http://www.scrumalliance.org/learn_about_scrum

Page 20: Requirements the Last Bottleneck

Repeat for each Agile iteration

Page 21: Requirements the Last Bottleneck

“Every time the design changes, we have to update

the requirements doc.”

Page 22: Requirements the Last Bottleneck

“Requirements are not architecture.

Requirements are not design,nor are they interface.

Requirements are need.”

The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt and David Thomas

Page 23: Requirements the Last Bottleneck

do not dictate the implementation

in the requirements

Page 24: Requirements the Last Bottleneck

Decoupling

• Familiar principle of OO design

• Interface vs. implementation

• Design patterns (Strategy, Bridge, etc.)

Page 25: Requirements the Last Bottleneck

Decouple requirements from solutions

Solution 2C#, .NET

Solution 1Java, Spring

Solution 3PHP

Require-ments

Page 26: Requirements the Last Bottleneck

“How much detail is enough?”

Page 27: Requirements the Last Bottleneck

“If it takes more than 15 minutes to determine what it is that you’re building, the spec wasn’t done properly.”

Really?

Page 28: Requirements the Last Bottleneck

• Imagine your boss has a great idea

• He’s going to describe his idea to you

• You’re to code it while he’s gone

• He has to leave in 15 minutes

• Here’s his vision...

Page 29: Requirements the Last Bottleneck
Page 30: Requirements the Last Bottleneck

How much is enough?

• Probably a bit more than 15 minutes

• But not a whole book

• Focus on goals to satisfy, not design or implementation

Page 31: Requirements the Last Bottleneck

“No one reads requirements docs anyway.”

Page 32: Requirements the Last Bottleneck

• Right—if the docs aren’t helpful

• Make the docs helpful to developers

• Describe what to build, not how

Page 33: Requirements the Last Bottleneck

SMART goals

Page 34: Requirements the Last Bottleneck

specific

measurable

achievable

results-oriented

timely

Page 35: Requirements the Last Bottleneck

Specific

• Be concrete; use action verbs

• Users will have an intuitive experience using our software.

• Users will be able to post textual content of 140 characters or fewer, and to search the content posted by others.

☒☑

Page 36: Requirements the Last Bottleneck

Specific

• Also specify what the project does not need

• Support all browsers, full stop. It doesn’t matter how obscure or how old.

• Test the browser brands/versions used by 97% of the target market.

☒☑

Page 37: Requirements the Last Bottleneck

Measurable

• Describe testable or quantifiable goals

• The web site will work at web scale.

• The web site will serve up to 10 million users; up to 10 thousand posting simultaneously; up to 500 thousand reading content stream.

☒☑

Page 38: Requirements the Last Bottleneck

Measurable

• Measure progress as well as final result

• The whole site must have no security issues.

• Certify that each application use case is secure.☒☑

Page 39: Requirements the Last Bottleneck

Achievable

• Set goals that are feasible and possible; stay appropriate to scope

• Our site will change the way people communicate on the web.

• Our site will let users contribute bite-sized content and search the content stream by users, by lists of users, or by tags or trends.

☒☑

Page 40: Requirements the Last Bottleneck

Results-oriented

• Describe outputs or results—not activities

• Developers will always strive to achieve optimal performance.

• The landing page will respond in ~0.5 sec; other pages will respond in ~1.0 sec.

☒☑

Page 41: Requirements the Last Bottleneck

Results-oriented

• Describe outputs or results—not activities

• The developers will use LAMP stack, REST architecture, scrum methodology, and git.

• Don’t dictate technology choices, design, or methodology in requirements.

☒☑

Page 42: Requirements the Last Bottleneck

Time-related

• Use specific, realistic deadlines;include milestones, schedule

• We need our web site to go live sooner rather than later.

• Four weeks for design;three weeks for developing prototype; one week for performance testing; three weeks for refactoring;one week for final work and deployment.

☒☑

Page 43: Requirements the Last Bottleneck

Evaluation

• Often forgotten phase

• Testing is part of this of course

• Other review of how well you met the requirements

• In Agile terms, delivery to customer

• Spell out evaluation criteria in requirements

Page 44: Requirements the Last Bottleneck

manage requirements to develop more

efficiently

Page 45: Requirements the Last Bottleneck

decouple requirements from solutions

Page 46: Requirements the Last Bottleneck

be SMART

Page 47: Requirements the Last Bottleneck

SQL Antipatterns:Avoiding the Pitfalls of Database Programming

http://www.pragprog.com/titles/bksqla/

Page 48: Requirements the Last Bottleneck

Copyright 2010 Bill Karwin

www.slideshare.net/billkarwin

Released under a Creative Commons 3.0 License: http://creativecommons.org/licenses/by-nc-nd/3.0/

You are free to share - to copy, distribute and transmit this work, under the following conditions:

Attribution. You must attribute this work to Bill Karwin.

Noncommercial. You may not use this work for commercial purposes.

No Derivative Works. You may not alter, transform, or build

upon this work.