Enterprise Services
Showing results for 
Search instead for 
Do you mean 

Reducing Defects in Software Development

‎03-14-2013 10:37 AM - edited ‎09-30-2015 06:55 AM

weaved cord.jpgBy:  James (Jim) R. Hughes, Global Business Analysis Capability Leader, Hewlett Packard Company


Author’s note: My blogs address the challenges that limit applications solution delivery success, and how to overcome them.


I once worked on a project delivering software to be used by air traffic controllers. When we found defects in the software during a code walkthrough or during system testing, we joked that we were never going to fly again. However, on that project we were using disciplined software engineering processes and were very proud of the quality of the software we were developing.


The sad reality is that much of the software being developed today is very buggy. I suspect part of the problem is that software developers enjoy writing code and the ‘high’ they experience when they see their software become reality (such as an applet downloaded by thousands of users or as part of a web-based application used to drive a company’s key business process).  


Why is this a problem? It’s because most software developers focus on getting their code into production as quickly as possible. They know how to write algorithms and how to use the semantic constructs of their favourite coding language. However, they usually don’t give much thought to the process by which they write their code—they do not know how to engineer software.  Developers generally apply the following process to developing software:

Diagram 1a - blog 1.jpg


They design the basic logic flow and then start coding as quickly as possible. Typically the code/compile cycle is used as a means of ‘testing’ their unit. If developers prepare a Unit Test Plan, it is often done as a formality to meet project documentation requirements after they believe that their module is working.


The Software Engineering Institute (SEI), at Carnegie Mellon University, has shown through extensive studies of projects and analysis of metrics that this typical approach to software development is dysfunctional.   It leaves a large number of defects in code to be discovered later by System Testing.


To properly engineer software modules, developers should spend more time thinking through their module design details, not just the basic logic flow, as illustrated here:

Diagram 2 - blog 1.png


They should then participate in a peer review of their module design—a critical step that is often skipped.  Developers should then prepare a Unit Test Plan (UTP) before writing a single line of code.  By creating the UTP before writing code, developers effectively test their design. After the module is coded, the code should then be subjected to a peer review. Peer reviews can remove far more defects from designs/code than a developer will find working alone.


None of this is new. Each step has been around for decades.  However, the order of the steps is significantly different than typically applied. We can produce much higher quality software if we follow this software engineering process.


Other blog postings by Jim Hughes, which address the challenges that limit applications solution delivery success, and how to overcome them:



Blogs in the Producing Quality Software series by Jim Hughes


Other blogs by Jim Hughes:


About the Author


Jim Hughes - crop.jpgJames (Jim) R. Hughes, Global Strategic Capability Leader, Hewlett Packard Company

Jim has been with HP for 33 years and currently leads a global Strategic Capabilities Management team, with a specific focus on Business Analysis and Configuration Management. Jim also manages a team within the US State, Local, and Education division of HP.  He was a member of the IIBA committee that created a Business Analyst Competency Model and he participated in the development of IEEE standards.  Jim graduated from Harvard University, the University of British Columbia, and Ottawa Theological Hall.  He currently lives in Toronto, Canada

0 Kudos
About the Author


on ‎03-26-2013 02:37 AM

<a href="http://www.lavainfotech.com/"><b>Software Development</b></a>
This is really interesting, You’re a very skilled blogger. I have joined your feed and stay up for in the hunt for extra of your fantastic post. Also, I have shared your website in my social networks.

on ‎10-27-2014 04:44 PM

Enjoying reading your interesting blogs on testing: requirements, software. Don't we all love to reduce defects in any cycle during a project!. Keen to find out what a UTP would contain when prepared before code is written. I am assuming that the UTP will be high level and more of a test strategy or approach and methodology rather than a detailed test plan. Keen to know you thoughts.

on ‎10-29-2014 08:35 AM

Thanks for the feeback. You might want to look at an updated version of this post:

#28: How to Reduce Defects and Improve Productivity in Software Development

Nov 29 - Dec 1
Discover 2016 London
Learn how to thrive in a world of digital transformation at our biggest event of the year, Discover 2016 London, November 29 - December 1.
Read more
Each Month in 2016
Software Expert Days - 2016
Join us online to talk directly with our Software experts during online Expert Days. Find information here about past, current, and upcoming Expert Da...
Read more
View all