SlideShare a Scribd company logo
1 of 13
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

What's hot

Glenn Vanderburg — Real software engineering
Glenn Vanderburg — Real software engineeringGlenn Vanderburg — Real software engineering
Glenn Vanderburg — Real software engineeringatr2006
 
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfSDPM - Lecture 3 - Selecting an appropriate software development approach.pdf
SDPM - Lecture 3 - Selecting an appropriate software development approach.pdfOpenLearningLab
 
Acm productivity-webinar-2016-slides
Acm productivity-webinar-2016-slidesAcm productivity-webinar-2016-slides
Acm productivity-webinar-2016-slidesGail Murphy
 
10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneathHrishikesh Karekar
 
eXtreme programming
eXtreme programmingeXtreme programming
eXtreme programmingJean Pаoli
 
Software development philosophies v1
Software development philosophies v1Software development philosophies v1
Software development philosophies v1Praveen Nair
 
Big Ball of Mud: Software Maintenance Nightmares
Big Ball of Mud: Software Maintenance NightmaresBig Ball of Mud: Software Maintenance Nightmares
Big Ball of Mud: Software Maintenance NightmaresGonzalo Rodríguez
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingtuanvu8292
 
Pm soln9416141129710
Pm soln9416141129710Pm soln9416141129710
Pm soln9416141129710Nikhil Todkar
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair ProgrammingSteven Smith
 
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...aamahdys
 
Common Objections to TDD (and their refutations)
Common Objections to TDD (and their refutations)Common Objections to TDD (and their refutations)
Common Objections to TDD (and their refutations)Seb Rose
 
3.8 development methods
3.8 development methods3.8 development methods
3.8 development methodsmrmwood
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Software engineering principles (marcello thiry)
Software engineering principles (marcello thiry)Software engineering principles (marcello thiry)
Software engineering principles (marcello thiry)Marcello Thiry
 
SW Engineering Management
SW Engineering ManagementSW Engineering Management
SW Engineering ManagementRobert Sayegh
 
6. ch 5-understanding requirements
6. ch 5-understanding requirements6. ch 5-understanding requirements
6. ch 5-understanding requirementsDelowar hossain
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debtMatthew Whetton
 

What's hot (20)

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

Viewers also liked

Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingYury Chemerkin
 
Parity bits
Parity bitsParity bits
Parity bitsmrhaken
 
A few fundamental concepts in digital electronics
A few fundamental concepts in digital electronicsA few fundamental concepts in digital electronics
A few fundamental concepts in digital electronicsJoy Prabhakaran
 
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...AuditMark
 

Viewers also liked (6)

Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
 
Parity bits
Parity bitsParity bits
Parity bits
 
Character Sets
Character SetsCharacter Sets
Character Sets
 
A few fundamental concepts in digital electronics
A few fundamental concepts in digital electronicsA few fundamental concepts in digital electronics
A few fundamental concepts in digital electronics
 
Even odd parity
Even odd parityEven odd parity
Even odd parity
 
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...
Protecting JavaScript source code using obfuscation - OWASP Europe Tour 2013 ...
 

Similar to Workshop on software product development the backdrop

Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAniruddha Chakrabarti
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Agile India
 
Software engineering project management
Software engineering project managementSoftware engineering project management
Software engineering project managementjhudyne
 
SoftwareEngineering.pptx
SoftwareEngineering.pptxSoftwareEngineering.pptx
SoftwareEngineering.pptxpriyaaresearch
 
Introduction of Software Engineering
Introduction of Software EngineeringIntroduction of Software Engineering
Introduction of Software EngineeringMuhammadTalha436
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycleAfrasiyab Haider
 
Agile software development
Agile software development Agile software development
Agile software development saurabh goel
 
Software Project management
Software Project managementSoftware Project management
Software Project managementsameer farooq
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Scrum Framework Explained
Scrum Framework ExplainedScrum Framework Explained
Scrum Framework ExplainedNacho Montoya
 
User Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyUser Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyJoshua Randall
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptRedHeart11
 

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

Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme Programming
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Software developer
Software developerSoftware developer
Software developer
 
Poor Man's Kanban
Poor Man's KanbanPoor Man's Kanban
Poor Man's Kanban
 
Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...
 
Software engineering project management
Software engineering project managementSoftware engineering project management
Software engineering project management
 
SoftwareEngineering.pptx
SoftwareEngineering.pptxSoftwareEngineering.pptx
SoftwareEngineering.pptx
 
SoftwareEngineering.pptx
SoftwareEngineering.pptxSoftwareEngineering.pptx
SoftwareEngineering.pptx
 
Introduction of Software Engineering
Introduction of Software EngineeringIntroduction of Software Engineering
Introduction of Software Engineering
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
Agile software development
Agile software development Agile software development
Agile software development
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
It’s a world of bugs after all
It’s a world of bugs after allIt’s a world of bugs after all
It’s a world of bugs after all
 
Scrum Framework Explained
Scrum Framework ExplainedScrum Framework Explained
Scrum Framework Explained
 
User Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the UglyUser Experience Design + Agile: The Good, The Bad, and the Ugly
User Experience Design + Agile: The Good, The Bad, and the Ugly
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.ppt
 

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.