SlideShare a Scribd company logo
Workshop on software product
development
P Joy Prabhakaran
This deck has a set of semi-formal definitions of different activities in software development
and quotes about these activities by eminent practitioners.
The workshop tries to explore, internalize and decrease the divergence between the
definitions and the ground reality.
The Backdrop
The trouble with programmers is that you can never tell what
a programmer is doing until it’s too late.
- Seymour Cray
The bitterness of poor quality remains long after the
sweetness of meeting the schedule has been forgotten.
- Karl Wiegers
3 Biggest Software Lies:
– The program’s fully tested and bug-free.
– We’re working on the documentation.
– Of course we can modify it.
Goal of the workshop
• Most professionals involved in software product
development work under tight schedules. This means they
do not have the opportunity to take a step back and
evaluate their methods or work products. This workshop
gives them an opportunity to do so.
• Product development involves various functions and teams.
The workshop will have participants play different roles and
get an insight into “Why sh*t happens”.
• Facilitate sharing of ideas, approaches and work products
between functions. This aims to bring in an appreciation of
both the variance that exists and also the opportunities.
• The workshop is not a “How to ….” guide and will offer no
pre-defined prescription.
Functions targeted
• Requirements
• Estimation
• Architecture
• Design
• Partial implementation
• Testing
• Revisions
• Sharing of the results of each phase with other
teams
Setting the stage with a couple of
quotes ….
Asking for efficiency and adaptability in the same program is like
asking for a person to be rich and honest. Although wealth and
honesty have been known to occur in the same person, we'll
probably have to settle for one or the other. At least that's better
than neither. (Modified version of a quote from The Psychology
of Computer Programming by Gerald Weinberg)
If builders built houses the way programmers built programs, the
first woodpecker to come along would destroy civilization.
Requirements
Software Requirements is a field within software engineering that deals with
establishing the needs of stakeholders that are to be solved by software.
……
The activities related to working with software requirements can broadly be
broken up into Elicitation, Analysis, Specification, and Management.
- Wikipedia
The only time you can really find the best problem definition is after you found
the solution.
- De Bono
No matter how much you want it to be a technical problem, it's a people
problem
- Unknown
Estimation
Software development effort estimation is the process of predicting
the most realistic amount of effort (expressed in terms of person-
hours or money) required to develop or maintain software based on
incomplete, uncertain and noisy input. Effort estimates may be used as
input to project plans, iteration plans, budgets, investment analyses,
pricing processes and bidding rounds
- Wikipedia
[The common definition of estimate is] ‘An estimate is the most
optimistic prediction that has a non-zero probability of coming true’ . . .
Accepting this definition leads irrevocably toward a method called
“what’s-the-earliestdate-by-which-you-can’t-prove-you-won’t-be-
finished” estimating.
— Tom DeMarco (1982)
Architecture
Software application architecture is the process of defining a structured solution that
meets all of the technical and operational requirements, while optimizing common
quality attributes such as performance, security, and manageability. It involves a series
of decisions based on a wide range of factors, and each of these decisions can have
considerable impact on the quality, performance, maintainability, and overall success
of the application.
- MSDN
All architecture is design but not all design is architecture. Architecture represents the
significant design decisions that shape a system, where significant is measured by cost
of change.
- Grady Booch
Things are usually easier said than done, and software architects are notoriously good
at coming up with things to say.
– Timothy High
With good program architecture debugging is a breeze, because bugs will be where
they should be.
-David May
Design
Software design is the process by which an agent creates a specification of a
software artifact, intended to accomplish goals, using a set of primitive
components and subject to constraints. Software design may refer to either
"all the activities involved in conceptualizing, framing, implementing,
commissioning, and ultimately modifying complex systems" or "the activity
following requirements specification and before programming in a stylized
software engineering process."
- Wikipedia
Good designers can create normalcy out of chaos —they can clearly
communicate ideas through the organizing and manipulating of words and
pictures.
- Jeffery Veen
Developer testing isn’t primarily about verifying code. It’s about making great
code. If you can’t test something, it might be your testing skills failing you but
it’s probably your code’s design. Testable code is almost always better code.
– Chad Fowler
Coding/Implementation
Implementation is the part of the process where software engineers
actually program the code for the project.
- Wikipedia
I’m not a great programmer; I’m just a good programmer with great habits.
- Kent Beck
The most depressing thing about life as a programmer, I think, is if you’re
faced with a chunk of code that either someone else wrote or, worse still,
you wrote yourself but you no longer dare to modify. That’s depressing.
- Peyton Jones
When debugging, novices insert corrective code; experts remove defective
code.
- Richard Pattis
Without requirements or design, programming is the art of adding bugs to
an empty text file.
- Louis Srygley
Testing
Software testing is an investigation conducted to provide stakeholders with
information about the quality of the product or service under test.
- Wikipedia
Even perfect program verification can only establish that a program meets
its specification. […] Much of the essence of building a program is in fact
the debugging of the specification.
- Brooks
Reminds me of the awesome bug report I saw once: ‘Everything is broken.
Steps to reproduce: do anything. Expected result: it should work’.
- Felipe Knorr Kuhn
Bad programmers have all the answers. Good testers have all the
questions.
- Gill Zilberfeld
Management ….
“You can’t win; you can’t break even; you can’t leave the game”
Ginsberg's Theorem
Freeman's Commentary on Ginsberg's Theorem:
Every major philosophy that attempts to make life seem meaningful is
based on the negation of one part of Ginsberg's Theorem. To wit:
• Capitalism is based on the assumption that you can win.
• Socialism is based on the assumption that you can break even.
• Mysticism is based on the assumption that you can quit the game.
Freeman's Commentary on Ginsberg's Theorem
Murphy's Law about Thermodynamics: Things get worse under
pressure.
If you think things are in a mess now, JUST WAIT!
unknown
Folks, with that as the backdrop, we will have a short
break and then do a few exercises to experience a bit of all
that we discussed.

More Related Content

PDF
Humane assessment on cards
PPT
Software Development in 21st Century
PPT
Xp presentation 2003
PDF
Software Engineering Best Practices @ Nylas
PDF
Mythical Man Month Essays on Software Engineering
PPTX
Mythical Man-Month
PPTX
Software engineering practices and software quality empirical research results
PPT
Overview of project planning
Humane assessment on cards
Software Development in 21st Century
Xp presentation 2003
Software Engineering Best Practices @ Nylas
Mythical Man Month Essays on Software Engineering
Mythical Man-Month
Software engineering practices and software quality empirical research results
Overview of project planning

What's hot (20)

PDF
Glenn Vanderburg — Real software engineering
PDF
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
PDF
Acm productivity-webinar-2016-slides
PPTX
10x programmers - What lies beneath
PPT
eXtreme programming
PPTX
Software development philosophies v1
PDF
Big Ball of Mud: Software Maintenance Nightmares
DOC
Extreme programming
PDF
Pm soln9416141129710
PDF
Introducing Pair Programming
PPTX
8. project-management
PPT
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
PPTX
Common Objections to TDD (and their refutations)
PPTX
3.8 development methods
PPT
Arch factory - Agile Design: Best Practices
PDF
BBOM-AgilePT-2010
PDF
Software engineering principles (marcello thiry)
PPT
SW Engineering Management
PDF
6. ch 5-understanding requirements
PPTX
We need to talk about tech debt
Glenn Vanderburg — Real software engineering
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
Acm productivity-webinar-2016-slides
10x programmers - What lies beneath
eXtreme programming
Software development philosophies v1
Big Ball of Mud: Software Maintenance Nightmares
Extreme programming
Pm soln9416141129710
Introducing Pair Programming
8. project-management
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Common Objections to TDD (and their refutations)
3.8 development methods
Arch factory - Agile Design: Best Practices
BBOM-AgilePT-2010
Software engineering principles (marcello thiry)
SW Engineering Management
6. ch 5-understanding requirements
We need to talk about tech debt
Ad

Viewers also liked (6)

PDF
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
PPTX
Parity bits
PDF
Character Sets
PPTX
A few fundamental concepts in digital electronics
PPT
Even odd parity
PDF
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Parity bits
Character Sets
A few fundamental concepts in digital electronics
Even odd parity
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...
Ad

Similar to Workshop on software product development the backdrop (20)

PDF
Back To Basics Hyper Free Principles For Software Developers
PPTX
Software testing introduction
PPTX
UNIT 1 - MPP.pptxdfvvnfuvbrrujfvbvndvnbn
PDF
Software Evaluation
PPT
se01.ppt
PPTX
Software engineer
PPTX
unit 1.pptx regasts sthatbabs shshsbsvsbsh
PPT
01 intro+
PPT
Software development
PPT
Introduction To Software Engineering
PDF
Testing primer
PDF
Testing primer
PDF
Software testing primer nick jenkins
PPTX
Advanced Software Engineering 800 Slides.pptx
PPTX
Software Engineering Introduction -UNIT 1.pptx
PPTX
Software Development and Quality
PDF
Software Development 101 A Comprehensive Introduction
PPT
SF 9_Unit 1.ppt software engineering ppt
PDF
Back to the basics principles for constructing quality software
PPT
Software engineering
Back To Basics Hyper Free Principles For Software Developers
Software testing introduction
UNIT 1 - MPP.pptxdfvvnfuvbrrujfvbvndvnbn
Software Evaluation
se01.ppt
Software engineer
unit 1.pptx regasts sthatbabs shshsbsvsbsh
01 intro+
Software development
Introduction To Software Engineering
Testing primer
Testing primer
Software testing primer nick jenkins
Advanced Software Engineering 800 Slides.pptx
Software Engineering Introduction -UNIT 1.pptx
Software Development and Quality
Software Development 101 A Comprehensive Introduction
SF 9_Unit 1.ppt software engineering ppt
Back to the basics principles for constructing quality software
Software engineering

Workshop on software product development the backdrop

  • 1. Workshop on software product development P Joy Prabhakaran This deck has a set of semi-formal definitions of different activities in software development and quotes about these activities by eminent practitioners. The workshop tries to explore, internalize and decrease the divergence between the definitions and the ground reality.
  • 2. The Backdrop The trouble with programmers is that you can never tell what a programmer is doing until it’s too late. - Seymour Cray The bitterness of poor quality remains long after the sweetness of meeting the schedule has been forgotten. - Karl Wiegers 3 Biggest Software Lies: – The program’s fully tested and bug-free. – We’re working on the documentation. – Of course we can modify it.
  • 3. Goal of the workshop • Most professionals involved in software product development work under tight schedules. This means they do not have the opportunity to take a step back and evaluate their methods or work products. This workshop gives them an opportunity to do so. • Product development involves various functions and teams. The workshop will have participants play different roles and get an insight into “Why sh*t happens”. • Facilitate sharing of ideas, approaches and work products between functions. This aims to bring in an appreciation of both the variance that exists and also the opportunities. • The workshop is not a “How to ….” guide and will offer no pre-defined prescription.
  • 4. Functions targeted • Requirements • Estimation • Architecture • Design • Partial implementation • Testing • Revisions • Sharing of the results of each phase with other teams
  • 5. Setting the stage with a couple of quotes …. Asking for efficiency and adaptability in the same program is like asking for a person to be rich and honest. Although wealth and honesty have been known to occur in the same person, we'll probably have to settle for one or the other. At least that's better than neither. (Modified version of a quote from The Psychology of Computer Programming by Gerald Weinberg) If builders built houses the way programmers built programs, the first woodpecker to come along would destroy civilization.
  • 6. Requirements Software Requirements is a field within software engineering that deals with establishing the needs of stakeholders that are to be solved by software. …… The activities related to working with software requirements can broadly be broken up into Elicitation, Analysis, Specification, and Management. - Wikipedia The only time you can really find the best problem definition is after you found the solution. - De Bono No matter how much you want it to be a technical problem, it's a people problem - Unknown
  • 7. Estimation Software development effort estimation is the process of predicting the most realistic amount of effort (expressed in terms of person- hours or money) required to develop or maintain software based on incomplete, uncertain and noisy input. Effort estimates may be used as input to project plans, iteration plans, budgets, investment analyses, pricing processes and bidding rounds - Wikipedia [The common definition of estimate is] ‘An estimate is the most optimistic prediction that has a non-zero probability of coming true’ . . . Accepting this definition leads irrevocably toward a method called “what’s-the-earliestdate-by-which-you-can’t-prove-you-won’t-be- finished” estimating. — Tom DeMarco (1982)
  • 8. Architecture Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application. - MSDN All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change. - Grady Booch Things are usually easier said than done, and software architects are notoriously good at coming up with things to say. – Timothy High With good program architecture debugging is a breeze, because bugs will be where they should be. -David May
  • 9. Design Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints. Software design may refer to either "all the activities involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems" or "the activity following requirements specification and before programming in a stylized software engineering process." - Wikipedia Good designers can create normalcy out of chaos —they can clearly communicate ideas through the organizing and manipulating of words and pictures. - Jeffery Veen Developer testing isn’t primarily about verifying code. It’s about making great code. If you can’t test something, it might be your testing skills failing you but it’s probably your code’s design. Testable code is almost always better code. – Chad Fowler
  • 10. Coding/Implementation Implementation is the part of the process where software engineers actually program the code for the project. - Wikipedia I’m not a great programmer; I’m just a good programmer with great habits. - Kent Beck The most depressing thing about life as a programmer, I think, is if you’re faced with a chunk of code that either someone else wrote or, worse still, you wrote yourself but you no longer dare to modify. That’s depressing. - Peyton Jones When debugging, novices insert corrective code; experts remove defective code. - Richard Pattis Without requirements or design, programming is the art of adding bugs to an empty text file. - Louis Srygley
  • 11. Testing Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. - Wikipedia Even perfect program verification can only establish that a program meets its specification. […] Much of the essence of building a program is in fact the debugging of the specification. - Brooks Reminds me of the awesome bug report I saw once: ‘Everything is broken. Steps to reproduce: do anything. Expected result: it should work’. - Felipe Knorr Kuhn Bad programmers have all the answers. Good testers have all the questions. - Gill Zilberfeld
  • 12. Management …. “You can’t win; you can’t break even; you can’t leave the game” Ginsberg's Theorem Freeman's Commentary on Ginsberg's Theorem: Every major philosophy that attempts to make life seem meaningful is based on the negation of one part of Ginsberg's Theorem. To wit: • Capitalism is based on the assumption that you can win. • Socialism is based on the assumption that you can break even. • Mysticism is based on the assumption that you can quit the game. Freeman's Commentary on Ginsberg's Theorem Murphy's Law about Thermodynamics: Things get worse under pressure. If you think things are in a mess now, JUST WAIT! unknown
  • 13. Folks, with that as the backdrop, we will have a short break and then do a few exercises to experience a bit of all that we discussed.