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

Apps_Services

Comments
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

Events
Aug 29 - Sep 1
Boston, MA
HPE Big Data Conference 2016
Attend HPE’s Big Data Conference on August 29 - September 1, 2016 to learn from peers in every industry and hear from Big Data experts and thought lea...
Read more
Sep 13-16
National Harbor, MD
HPE Protect 2016
Protect 2016 is our annual conference on September 13 - 16, 2016, and is the place to meet the world’s top information security talent, discuss new pr...
Read more
View all