Applications Services Blog
Get the latest thought leadership and information about the role of Applications Services in an increasingly interconnected world at the HP Blog Hub.

Reducing Defects in Software Development

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

Comments
Lava Infotech | ‎03-26-2013 09: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.

Elmo Jones | ‎10-27-2014 11: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.

James_Jim_R | ‎10-29-2014 03:35 PM

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

Leave a Comment

We encourage you to share your comments on this post. Comments are moderated and will be reviewed
and posted as promptly as possible during regular business hours

To ensure your comment is published, be sure to follow the community guidelines.

Be sure to enter a unique name. You can't reuse a name that's already in use.
Be sure to enter a unique email address. You can't reuse an email address that's already in use.
Type the characters you see in the picture above.Type the words you hear.
Search
Showing results for 
Search instead for 
Do you mean 
About the Author
Featured


Follow Us
The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation.