Digital Edition

SYS-CON.TV
Parasoft: The Time Has Come for Automated Error Prevention
Parasoft: The Time Has Come for Automated Error Prevention

To learn more about AEP, visit www.parasoft.com/AEPjava or email aep@parasoft.com

The software industry must mature. For too long we have pretended that software is different, that it is somehow more complex than other manufactured products. This belief is nothing more than an excuse for shoddy workmanship; bugs have no place in the software industry. It is time we learned how to create software using proven error-prevention methodologies.

What is Error Prevention?
The concept of error prevention advocates five very specific procedures that prevent errors. These procedures are:

  • Identify an error.
  • Find the cause of the error.
  • Locate the point in production that created the error.
  • Implement preventative practices to ensure that similar errors do not reoccur.
  • Monitor the process.
For example, inspectors on an appliance assembly line discover that bolts are coming loose. This error is due to a mismatch between the bolts and the tool used to tighten them. Preventing this error is a simple matter of providing the right tool to the location where the bolts are installed. Closely inspecting the bolts helps monitor the effectiveness of this change. It also provides valuable data about the amount of time saved using the proper tool.

Is error prevention the same thing as error detection? No! Error detection is the process of finding and fixing errors after a product is built. In error detection, the flawed process that generated those errors is left uncorrected. In the above example, error detection simply would have tightened the bolts at the end of the assembly line. This would leave the root of the problem indefinitely embedded in the manufacturing process.

Error detection is how the software industry currently deals with bugs, by treating the "symptom" (bugs) and not the "disease" (the flawed development process). There are valuable quality improvement initiatives that attempt to address error prevention in an effort to correct flawed development processes. Among the more popular initiatives for software are ISO 9001 and SEI-CMM. However, without automation, these quality initiatives fall short of their goals because they cannot implement practices that actually enforce and support their written procedures.

Automation is the Key
For the software industry, the most effective way to make highquality applications is through the concept of Automated Error Prevention. The AEP concept consists of the same five steps listed above for error prevention, plus automation.

How is this accomplished? First, define and implement proven techniques that help stop errors during application development. Practices such as coding standards enforcement, unit testing, integration testing, load testing, connectivity verification, monitoring and others can be placed in the software development lifecycle and automated. This provides an Automated Error Prevention "seal" around the four core phases of software development and establishes full lifecycle error prevention.

AEP is the foundation behind the Parasoft AEP Methodology. Errors found anywhere in the development process can be correlated back to a procedure that came before it; all that is needed is to modify the "upstream" procedure and prevent the error from reoccurring. This is shown in Figure 1 by the feedback loop (indicated by the dashed arrow). In this way, information gathered from individual practices can be used to intelligently improve the process and prevent future errors.

 

When such procedures are in place and automated, they remain indefinitely, returning benefits daily to the software development lifecycle. The AEP concept fits into any development process, including traditional waterfall and iterative methods, and even more ambitious processes such as Extreme Programming.

More important, AEP is exactly what quality-improvement initiatives such as ISO 9001 and SEI-CMM are trying to accomplish. AEP should be integrated into any quality initiative, as it is the only proven method for enforcing quality-improvement measures that rely upon written procedures.

Implementing Automated Error Prevention
After identifying the error-prevention techniques that need automating, focus on key issues that allow these practices to be successfully implemented. One such issue is the ability to improve the process. This is accomplished by feedback loops, like the one shown in Figure 1. Let's look at a specific example of how this works. Suppose you are developing an n-tier system. To establish what types of traffic the system can manage, you need to perform load testing. Unfortunately, you discover that the system is overwhelmed by even the smallest amount of traffic because the middleware is leaking connections to the database.

Under normal circumstances, you would simply fix this bug, but this does not prevent similar errors from occurring. In AEP, you also want to correct the root cause of this error in order to prevent further leaks. The root cause is that when a connection is opened, it isn't closed. So how can you prevent this?

Assuming that the failing middleware is written in Java, you need a way to ensure that each class opening a connection also closes the connection (through a finalize() method or a try/finally block). Coding standards are an excellent way to achieve this. To ensure that each connection opened is also closed, simply create a rule that checks for this pairing. Doing so allows you to move upstream from the load-testing error and establish a coding rule that mandates that no connections should be left open. This feedback loop is illustrated by the dashed arrow in Figure 1.

The next step is to implement this change automatically. A coding standards scanning tool could be used to ensure that this rule is enforced across the development group. This is true AEP implementation. Not only do you improve the process to ensure that errors are not repeated, but you automate the practice and use its results to measure how well that change is being followed across the development group. This makes it possible to determine if your change is effective, or if further changes need to be implemented somewhere else in the process.

Another key factor in AEP is group behavior. It is crucial that AEP practices be embedded into the software development groups that will use them. This means that everyone in the development group—developer, architect, QA, or project manager—must understand his or her role and how to adhere to that role given the practices in place. For example, for the group to successfully adopt coding standards, it's critical for all team members to understand who creates coding standards, where these coding standards are stored, and who uses them and when. Most important, defining group behavior ensures that the adopted practices remain ingrained and that they do not deteriorate over time. The recommended AEP workflow is illustrated in Figure 2.

 

A Final Word
Error prevention is a very straightforward and effective concept that helps reduce errors and increase productivity. For the software industry, automation ensures that the five basic steps of prevention are fully integrated into the software development lifecycle. Automated Error Prevention is the most effective way to avoid errors, increase productivity and make high-quality applications. Other industries have used this same concept to achieve substantial productivity gains and reduce production costs. For the software industry, the same results are possible. What are we waiting for?

To learn more about AEP, visit www.parasoft.com/AEPjava or email aep@parasoft.com

About IT Solutions Guide
IT Solutions Guide (ITSG), aimed at development and corporate managers, is a free quarterly supplement focusing on the most competitive tools, solutions, and services available in the IT and infrastructure technology world today.

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 1 of 1



ADS BY GOOGLE
Subscribe to the World's Most Powerful Newsletters

ADS BY GOOGLE

Enterprise architects are increasingly adopting multi-cloud strategies as they seek to utilize exist...
Docker containers have brought great opportunities to shorten the deployment process through continu...
Kubernetes is a new and revolutionary open-sourced system for managing containers across multiple ho...
Leading companies, from the Global Fortune 500 to the smallest companies, are adopting hybrid cloud ...
In his session at Cloud Expo, Alan Winters, U.S. Head of Business Development at MobiDev, presented ...
"We work around really protecting the confidentiality of information, and by doing so we've develope...
In his keynote at 19th Cloud Expo, Sheng Liang, co-founder and CEO of Rancher Labs, discussed the te...
Data is the fuel that drives the machine learning algorithmic engines and ultimately provides the bu...
When shopping for a new data processing platform for IoT solutions, many development teams want to b...
In IT, we sometimes coin terms for things before we know exactly what they are and how they’ll be us...
Detecting internal user threats in the Big Data eco-system is challenging and cumbersome. Many organ...
In his session at 20th Cloud Expo, Scott Davis, CTO of Embotics, discussed how automation can provid...
In his session at @DevOpsSummit at 20th Cloud Expo, Kelly Looney, director of DevOps consulting for ...
In his session at 20th Cloud Expo, Brad Winett, Senior Technologist for DDN Storage, will present se...
Given the popularity of the containers, further investment in the telco/cable industry is needed to ...
Businesses and business units of all sizes can benefit from cloud computing, but many don't want the...
"I will be talking about ChatOps and ChatOps as a way to solve some problems in the DevOps space," e...
In his session at 21st Cloud Expo, Michael Burley, a Senior Business Development Executive in IT Ser...
You know you need the cloud, but you’re hesitant to simply dump everything at Amazon since you know ...
For organizations that have amassed large sums of software complexity, taking a microservices approa...