“ When a program is modified, its complexity will increase, provided that one does not actively work against this.” - Wikipedia   “ What we need more of is Science” – MC Hawkins   “ If you think good code is expensive, try bad code” - Anon
Software Entropy  Entropy: Lack of order or predictability; gradual decline into disorder
Software Entropy  Entropy: Lack of order or predictability; gradual decline into disorder Software Entropy: The decline of quality in an application as requirements increase
Broken Window Theory    “ Consider a building with a few broken windows. If the windows are not repaired, the tendency is for vandals to break a few more windows. Eventually, they may even break into the building, and if it's unoccupied, perhaps become squatters or light fires inside.” “ Humans constantly monitor other people and their environment in order to determine what the correct norms for the given situation are. They also monitor others to make sure that the others act in an acceptable way ”
Broken Windows == Quality software?  No. But given that  Given that software entropy is inevitable People will produce code to the “common standard”  We can conclude  Poor quality software will degenerate quicker that better quality software  Poor quality software will reach its end of life quicker Poor quality software is expensive  Ignoring Complexity, Coupling & Conformity is expensive!
Controlling software quality controls software costs!  $$
What are metrics?  “ A way of applying a measurement to a quantity, which allow us to make a comparison” Used all the time in the real world  “ Miles per gallon”  “ Total cost of ownership” “ Balance of payments”
Software quality metrics  Complexity  Coupling  Conformity
Software quality metrics - Complexity Measure complexity by  Count the number of decisions (if’s) made along a logic path Count the number of separate modules (classes) invoked
Software quality metrics - Coupling  Measure coupling by  Count the number of possible data paths between tiers, modules and classes Count the number of public methods invoked between classes Double count and methods invoked against concrete implementations
Software quality metrics - Conformity  Measure complexity by  Number of deviations from a standard existing pattern
Measuring software quality  Use automated tools when possible. Use written rules in code reviews.  Use passing code reviews as a performance metric.
Using this software quality metric data  Trigger code reviews when changsets exceed a threshold Extrapolate dates to when the application will need replacing at the current rate of change Manage the rate of change
Adding requirements without increasing software entropy Use the most general approach possible  Factories  Generics  One size fits all If this is not possible ... Make the new code reusable Make your solution simple to understand!  Refactor to make your change part of the whole.
Conclusion  Every application has a natural lifespan. Maintenance should extend this lifespan, by fulfilling requirements at the lowest possible cost of software quality. Any major increase to complexity of the application should be subject to cost benefit analysis.
 

More Related Content

PPTX
Predicting Defects Using Change Genealogies (ISSE 2013)
PPSX
Reverse Engineering android Malware analysis
PPTX
Scout: A Contactless Active Vulnerability Tool - Dissertation, a year long pr...
PDF
Knowledge and Data Engineering IEEE 2015 Projects
PPTX
Using Cognitive Dimensions Questionnaire to Evaluate the Usability of Securit...
PDF
O'Reilly Security New York - Predicting Exploitability Final
PPTX
Performance testing in software development
PPTX
Black box testing or behavioral testing
Predicting Defects Using Change Genealogies (ISSE 2013)
Reverse Engineering android Malware analysis
Scout: A Contactless Active Vulnerability Tool - Dissertation, a year long pr...
Knowledge and Data Engineering IEEE 2015 Projects
Using Cognitive Dimensions Questionnaire to Evaluate the Usability of Securit...
O'Reilly Security New York - Predicting Exploitability Final
Performance testing in software development
Black box testing or behavioral testing

Similar to Producing Quality Software (20)

PDF
Software systems engineering PRINCIPLES
PDF
130924 yann-gael gueheneuc - an overview of software code quality and conne...
PPT
SOFTWARE QUALITY ASSURANCE, PAOLA DI MAIO
PPT
Software engineering introduction
PDF
Evolving Software Patterns
PDF
Caring about Code Quality
PDF
Module1 - Introduction to Software Engineering.pdf
PPTX
Software Development and Quality
PDF
Intro softwareeng
PPT
1. Introduction
PPTX
Overview of Software Engineering Principles - SCPS311.pptx
PDF
caring_about_code_quality
PDF
software engineering unit 3 chapter1-190805164730.pdf
PPTX
Software Engineering by Pankaj Jalote
PPT
SOFWARE QUALITY, INTRODUCTION
POT
Quality metrics and angular js applications
PDF
Software Quality in Practice
PDF
[2015/2016] Software systems engineering PRINCIPLES
PPTX
The Introduction to Software Engineering
PPTX
Software engineering
Software systems engineering PRINCIPLES
130924 yann-gael gueheneuc - an overview of software code quality and conne...
SOFTWARE QUALITY ASSURANCE, PAOLA DI MAIO
Software engineering introduction
Evolving Software Patterns
Caring about Code Quality
Module1 - Introduction to Software Engineering.pdf
Software Development and Quality
Intro softwareeng
1. Introduction
Overview of Software Engineering Principles - SCPS311.pptx
caring_about_code_quality
software engineering unit 3 chapter1-190805164730.pdf
Software Engineering by Pankaj Jalote
SOFWARE QUALITY, INTRODUCTION
Quality metrics and angular js applications
Software Quality in Practice
[2015/2016] Software systems engineering PRINCIPLES
The Introduction to Software Engineering
Software engineering
Ad

More from Simon Smith (7)

PPTX
Bootstrap
PPTX
PPTX
There are only 3 operations in a web app
PPT
tilemanager
PPT
N Tiering
PPT
Implementing Soa
PPT
Generics
Bootstrap
There are only 3 operations in a web app
tilemanager
N Tiering
Implementing Soa
Generics
Ad

Producing Quality Software

  • 1. “ When a program is modified, its complexity will increase, provided that one does not actively work against this.” - Wikipedia   “ What we need more of is Science” – MC Hawkins   “ If you think good code is expensive, try bad code” - Anon
  • 2. Software Entropy Entropy: Lack of order or predictability; gradual decline into disorder
  • 3. Software Entropy Entropy: Lack of order or predictability; gradual decline into disorder Software Entropy: The decline of quality in an application as requirements increase
  • 4. Broken Window Theory   “ Consider a building with a few broken windows. If the windows are not repaired, the tendency is for vandals to break a few more windows. Eventually, they may even break into the building, and if it's unoccupied, perhaps become squatters or light fires inside.” “ Humans constantly monitor other people and their environment in order to determine what the correct norms for the given situation are. They also monitor others to make sure that the others act in an acceptable way ”
  • 5. Broken Windows == Quality software? No. But given that Given that software entropy is inevitable People will produce code to the “common standard” We can conclude Poor quality software will degenerate quicker that better quality software Poor quality software will reach its end of life quicker Poor quality software is expensive Ignoring Complexity, Coupling & Conformity is expensive!
  • 6. Controlling software quality controls software costs! $$
  • 7. What are metrics? “ A way of applying a measurement to a quantity, which allow us to make a comparison” Used all the time in the real world “ Miles per gallon” “ Total cost of ownership” “ Balance of payments”
  • 8. Software quality metrics Complexity Coupling Conformity
  • 9. Software quality metrics - Complexity Measure complexity by Count the number of decisions (if’s) made along a logic path Count the number of separate modules (classes) invoked
  • 10. Software quality metrics - Coupling Measure coupling by Count the number of possible data paths between tiers, modules and classes Count the number of public methods invoked between classes Double count and methods invoked against concrete implementations
  • 11. Software quality metrics - Conformity Measure complexity by Number of deviations from a standard existing pattern
  • 12. Measuring software quality Use automated tools when possible. Use written rules in code reviews. Use passing code reviews as a performance metric.
  • 13. Using this software quality metric data Trigger code reviews when changsets exceed a threshold Extrapolate dates to when the application will need replacing at the current rate of change Manage the rate of change
  • 14. Adding requirements without increasing software entropy Use the most general approach possible Factories Generics One size fits all If this is not possible ... Make the new code reusable Make your solution simple to understand! Refactor to make your change part of the whole.
  • 15. Conclusion Every application has a natural lifespan. Maintenance should extend this lifespan, by fulfilling requirements at the lowest possible cost of software quality. Any major increase to complexity of the application should be subject to cost benefit analysis.
  • 16.