SlideShare a Scribd company logo
1 of 48
Download to read offline
Requirements:
the Last Bottleneck
Bill Karwin
ZendCon • Santa Clara • 2010/11/3
Me
• Software developer
• C, Java, Perl, PHP, Ruby
• SQL maven
• Author of new book
SQL Antipatterns
cost
the greatest single cost
in producing software is
programmer time
code faster!
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
• Tools help productivity for coding and
error removal
• But not so much for requirements
management
Error removal is the most time-
consuming part of development
Facts and Fallacies of Software Engineering, Robert L. Glass
Cost to fix a defect
Software Requirements, Karl E.Wiegers
Code Complete, Steve McConnell
code faster?
code less!
Front-load the project
Facts and Fallacies of Software Engineering, Robert L. Glass
managing requirements
reduces project cost
so why don’t we do it?
“We practice
Agile Development, so we
don’t need requirements.”
Really?
Agile Manifesto?
Principle #2:
“Welcome changing requirements,
even late in development.”
http://www.agilemanifesto.org/
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 toTest-Driven Design, Scott W.Ambler
http://www.agiledata.org/essays/tdd.html
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.
Scrum?
• Product Backlog: the prioritized list of
desired project outcomes/features
http://www.scrumalliance.org/learn_about_scrum
Repeat for each Agile iteration
“Every time the design
changes, we have to update
the requirements doc.”
“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
do not dictate the
implementation
in the requirements
Decoupling
• Familiar principle of OO design
• Interface vs. implementation
• Design patterns (Strategy, Bridge, etc.)
Decouple requirements from solutions
Solution 2
C#, .NET
Solution 1
Java, Spring
Solution 3
PHP
Require-
ments
☒
☑
☒
“How much detail
is enough?”
“If it takes more than 15 minutes to
determine what it is that you’re building,
the spec wasn’t done properly.”
Really?
• 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...
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
“No one reads
requirements docs anyway.”
• Right—if the docs aren’t helpful
• Make the docs helpful to developers
• Describe what to build, not how
SMART goals
specific
measurable
achievable
results-oriented
timely
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.
☒
☑
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.
☒
☑
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.
☒
☑
Measurable
• Measure progress as well as final result
• The whole site must have no security issues.
• Certify that each application use case is secure.
☒
☑
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.
☒
☑
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.
☒
☑
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.
☒
☑
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.
☒
☑
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
manage requirements
to develop more
efficiently
decouple requirements
from solutions
be SMART
SQL Antipatterns:
Avoiding the Pitfalls
of Database Programming
http://www.pragprog.com/titles/bksqla/
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.

More Related Content

What's hot (20)

Apqp ppt
Apqp pptApqp ppt
Apqp ppt
 
Spice
SpiceSpice
Spice
 
Advanced Product Quality Planning Reference Model
Advanced Product Quality Planning Reference ModelAdvanced Product Quality Planning Reference Model
Advanced Product Quality Planning Reference Model
 
Apqp training presentation
Apqp   training presentationApqp   training presentation
Apqp training presentation
 
Apqp questionaire
Apqp  questionaireApqp  questionaire
Apqp questionaire
 
Ppap la
Ppap laPpap la
Ppap la
 
Webinar "Gestión de la calidad en entornos SAP"
Webinar "Gestión de la calidad en entornos SAP"Webinar "Gestión de la calidad en entornos SAP"
Webinar "Gestión de la calidad en entornos SAP"
 
Product Quality Planning
Product Quality PlanningProduct Quality Planning
Product Quality Planning
 
Ppap training presentation
Ppap   training presentationPpap   training presentation
Ppap training presentation
 
Production part approval process ppt 1
Production part approval process ppt 1Production part approval process ppt 1
Production part approval process ppt 1
 
ADVANCED PRODUCT QUALITY
ADVANCED PRODUCT QUALITYADVANCED PRODUCT QUALITY
ADVANCED PRODUCT QUALITY
 
Ppap la
Ppap laPpap la
Ppap la
 
Introduction to ASPICE
Introduction to ASPICEIntroduction to ASPICE
Introduction to ASPICE
 
Ppap manual qa3525 3.0
Ppap manual qa3525 3.0Ppap manual qa3525 3.0
Ppap manual qa3525 3.0
 
PPAP 101: What You Should Know About PPAP
PPAP 101: What You Should Know About PPAPPPAP 101: What You Should Know About PPAP
PPAP 101: What You Should Know About PPAP
 
PPAP
PPAPPPAP
PPAP
 
Toyota Part Approval (PA) Process
Toyota Part Approval (PA) ProcessToyota Part Approval (PA) Process
Toyota Part Approval (PA) Process
 
Apqp-en
Apqp-enApqp-en
Apqp-en
 
APQP
APQP APQP
APQP
 
Apqp
Apqp Apqp
Apqp
 

Viewers also liked

MySQL Server Defaults
MySQL Server DefaultsMySQL Server Defaults
MySQL Server DefaultsMorgan Tocker
 
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...Frederic Descamps
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)frogd
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisSveta Smirnova
 
Inno db internals innodb file formats and source code structure
Inno db internals innodb file formats and source code structureInno db internals innodb file formats and source code structure
Inno db internals innodb file formats and source code structurezhaolinjnu
 
Reducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQLReducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQLKenny Gryp
 
Capturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLCapturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLRonald Bradford
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程zhaolinjnu
 
MySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsMySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsRonald Bradford
 
Multi Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureMulti Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureKenny Gryp
 
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication SetupsMix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication SetupsPedro Gomes
 
Everything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group ReplicationEverything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group ReplicationNuno Carvalho
 
High Availability Using MySQL Group Replication
High Availability Using MySQL Group ReplicationHigh Availability Using MySQL Group Replication
High Availability Using MySQL Group ReplicationOSSCube
 
MySQL High Availability Deep Dive
MySQL High Availability Deep DiveMySQL High Availability Deep Dive
MySQL High Availability Deep Divehastexo
 
MySQL High-Availability and Scale-Out architectures
MySQL High-Availability and Scale-Out architecturesMySQL High-Availability and Scale-Out architectures
MySQL High-Availability and Scale-Out architecturesFromDual GmbH
 
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017Ivan Ma
 
MySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDBMySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDBMario Beck
 
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?Sveta Smirnova
 

Viewers also liked (20)

MySQL Server Defaults
MySQL Server DefaultsMySQL Server Defaults
MySQL Server Defaults
 
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
MySQL innodb cluster and Group Replication in a nutshell - hands-on tutorial ...
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data Analysis
 
Extensible Data Modeling
Extensible Data ModelingExtensible Data Modeling
Extensible Data Modeling
 
Load Data Fast!
Load Data Fast!Load Data Fast!
Load Data Fast!
 
Inno db internals innodb file formats and source code structure
Inno db internals innodb file formats and source code structureInno db internals innodb file formats and source code structure
Inno db internals innodb file formats and source code structure
 
Reducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQLReducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQL
 
Capturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLCapturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQL
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程
 
MySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsMySQL Backup and Recovery Essentials
MySQL Backup and Recovery Essentials
 
Multi Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureMulti Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ Verisure
 
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication SetupsMix ‘n’ Match Async and Group Replication for Advanced Replication Setups
Mix ‘n’ Match Async and Group Replication for Advanced Replication Setups
 
Everything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group ReplicationEverything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group Replication
 
High Availability Using MySQL Group Replication
High Availability Using MySQL Group ReplicationHigh Availability Using MySQL Group Replication
High Availability Using MySQL Group Replication
 
MySQL High Availability Deep Dive
MySQL High Availability Deep DiveMySQL High Availability Deep Dive
MySQL High Availability Deep Dive
 
MySQL High-Availability and Scale-Out architectures
MySQL High-Availability and Scale-Out architecturesMySQL High-Availability and Scale-Out architectures
MySQL High-Availability and Scale-Out architectures
 
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
MySQL InnoDB Cluster and MySQL Group Replication @HKOSC 2017
 
MySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDBMySQL 5.7: Focus on InnoDB
MySQL 5.7: Focus on InnoDB
 
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
 

Similar to Requirements the Last Bottleneck

A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)Oursky
 
Agile Development with Plone
Agile Development with PloneAgile Development with Plone
Agile Development with PloneSally Kleinfeldt
 
Agile Development with Plone
Agile Development with PloneAgile Development with Plone
Agile Development with PloneJazkarta, Inc.
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with djangoYann Malet
 
Balancing Technical Debt and Clean Code
Balancing Technical Debt and Clean CodeBalancing Technical Debt and Clean Code
Balancing Technical Debt and Clean CodeDave Hulbert
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentialsRajesh P
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentialsRajesh P
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Project Sherpa: How RightScale Went All in on Docker
Project Sherpa: How RightScale Went All in on DockerProject Sherpa: How RightScale Went All in on Docker
Project Sherpa: How RightScale Went All in on DockerRightScale
 
The Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality AssuranceThe Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality AssuranceWebcsonsultsEU
 
Development Process for Micro Projects
Development Process for Micro ProjectsDevelopment Process for Micro Projects
Development Process for Micro ProjectsMartin Verrev
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarRoberto Jr. Figueroa
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 

Similar to Requirements the Last Bottleneck (20)

Agile Methodology
Agile MethodologyAgile Methodology
Agile Methodology
 
A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)
 
Agile Development with Plone
Agile Development with PloneAgile Development with Plone
Agile Development with Plone
 
Agile Development with Plone
Agile Development with PloneAgile Development with Plone
Agile Development with Plone
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile Methodologies
 
Kku2011
Kku2011Kku2011
Kku2011
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
 
Balancing Technical Debt and Clean Code
Balancing Technical Debt and Clean CodeBalancing Technical Debt and Clean Code
Balancing Technical Debt and Clean Code
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
Agile
AgileAgile
Agile
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Project Sherpa: How RightScale Went All in on Docker
Project Sherpa: How RightScale Went All in on DockerProject Sherpa: How RightScale Went All in on Docker
Project Sherpa: How RightScale Went All in on Docker
 
The Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality AssuranceThe Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality Assurance
 
The Waterfall Model
The Waterfall ModelThe Waterfall Model
The Waterfall Model
 
Development Process for Micro Projects
Development Process for Micro ProjectsDevelopment Process for Micro Projects
Development Process for Micro Projects
 
Case study
Case studyCase study
Case study
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 

More from Karwin Software Solutions LLC (16)

How to Use JSON in MySQL Wrong
How to Use JSON in MySQL WrongHow to Use JSON in MySQL Wrong
How to Use JSON in MySQL Wrong
 
Recursive Query Throwdown
Recursive Query ThrowdownRecursive Query Throwdown
Recursive Query Throwdown
 
InnoDB Locking Explained with Stick Figures
InnoDB Locking Explained with Stick FiguresInnoDB Locking Explained with Stick Figures
InnoDB Locking Explained with Stick Figures
 
SQL Outer Joins for Fun and Profit
SQL Outer Joins for Fun and ProfitSQL Outer Joins for Fun and Profit
SQL Outer Joins for Fun and Profit
 
Sql query patterns, optimized
Sql query patterns, optimizedSql query patterns, optimized
Sql query patterns, optimized
 
Survey of Percona Toolkit
Survey of Percona ToolkitSurvey of Percona Toolkit
Survey of Percona Toolkit
 
How to Design Indexes, Really
How to Design Indexes, ReallyHow to Design Indexes, Really
How to Design Indexes, Really
 
Schemadoc
SchemadocSchemadoc
Schemadoc
 
Percona toolkit
Percona toolkitPercona toolkit
Percona toolkit
 
MySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB StatusMySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB Status
 
Mentor Your Indexes
Mentor Your IndexesMentor Your Indexes
Mentor Your Indexes
 
Models for hierarchical data
Models for hierarchical dataModels for hierarchical data
Models for hierarchical data
 
Sql Injection Myths and Fallacies
Sql Injection Myths and FallaciesSql Injection Myths and Fallacies
Sql Injection Myths and Fallacies
 
Full Text Search In PostgreSQL
Full Text Search In PostgreSQLFull Text Search In PostgreSQL
Full Text Search In PostgreSQL
 
Practical Object Oriented Models In Sql
Practical Object Oriented Models In SqlPractical Object Oriented Models In Sql
Practical Object Oriented Models In Sql
 
Sql Antipatterns Strike Back
Sql Antipatterns Strike BackSql Antipatterns Strike Back
Sql Antipatterns Strike Back
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Requirements the Last Bottleneck

  • 1. Requirements: the Last Bottleneck Bill Karwin ZendCon • Santa Clara • 2010/11/3
  • 2. Me • Software developer • C, Java, Perl, PHP, Ruby • SQL maven • Author of new book SQL Antipatterns
  • 4. the greatest single cost in producing software is programmer time
  • 6. 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
  • 7. • Tools help productivity for coding and error removal • But not so much for requirements management
  • 8. Error removal is the most time- consuming part of development Facts and Fallacies of Software Engineering, Robert L. Glass
  • 9. Cost to fix a defect Software Requirements, Karl E.Wiegers Code Complete, Steve McConnell
  • 12. Front-load the project Facts and Fallacies of Software Engineering, Robert L. Glass
  • 14. so why don’t we do it?
  • 15. “We practice Agile Development, so we don’t need requirements.” Really?
  • 16. Agile Manifesto? Principle #2: “Welcome changing requirements, even late in development.” http://www.agilemanifesto.org/
  • 17. 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 toTest-Driven Design, Scott W.Ambler http://www.agiledata.org/essays/tdd.html
  • 18. 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.
  • 19. Scrum? • Product Backlog: the prioritized list of desired project outcomes/features http://www.scrumalliance.org/learn_about_scrum
  • 20. Repeat for each Agile iteration
  • 21. “Every time the design changes, we have to update the requirements doc.”
  • 22. “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
  • 23. do not dictate the implementation in the requirements
  • 24. Decoupling • Familiar principle of OO design • Interface vs. implementation • Design patterns (Strategy, Bridge, etc.)
  • 25. Decouple requirements from solutions Solution 2 C#, .NET Solution 1 Java, Spring Solution 3 PHP Require- ments ☒ ☑ ☒
  • 26. “How much detail is enough?”
  • 27. “If it takes more than 15 minutes to determine what it is that you’re building, the spec wasn’t done properly.” Really?
  • 28. • 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...
  • 29.
  • 30. 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
  • 31. “No one reads requirements docs anyway.”
  • 32. • Right—if the docs aren’t helpful • Make the docs helpful to developers • Describe what to build, not how
  • 35. 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. ☒ ☑
  • 36. 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. ☒ ☑
  • 37. 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. ☒ ☑
  • 38. Measurable • Measure progress as well as final result • The whole site must have no security issues. • Certify that each application use case is secure. ☒ ☑
  • 39. 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. ☒ ☑
  • 40. 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. ☒ ☑
  • 41. 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. ☒ ☑
  • 42. 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. ☒ ☑
  • 43. 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
  • 44. manage requirements to develop more efficiently
  • 47. SQL Antipatterns: Avoiding the Pitfalls of Database Programming http://www.pragprog.com/titles/bksqla/
  • 48. 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.