Paul Krill
Editor at Large

Avoiding the high cost of bad code

feature
Jan 7, 20094 mins

Enterprises face overbudget app dev efforts that please no one. Good management is the answer.

While software development technologies continue to advance on multiple fronts, the complexity of software and its management remains a complicated, expensive problem. For instance, too many developers can become involved in a project, and those developers may not be around later to maintain the code they wrote. Plus, software requirements can change, and it can be difficult to track what, exactly, the software was supposed to do.

“The further along a project gets, the harder it is to understand what the original intent was,” says Norman Guadagno, director of Microsoft’s Visual Studio Team System product line for application lifecycle management.

“Developers often don’t know how the entire system is supposed to [be] organized or how parts of the system should depend on other parts of the system,” said Ben Chelf, CTO at Coverity, a software development management vendor.

“Absolutely, [software code maintenance is] costly,” says analyst Theresa Lanowitz, founder of research firm Voke. Probably 80 percent of an IT budget is spent on maintenance rather than on new development, she says. Issues arise in areas such as code reuse, where a piece of faulty software can get used in three different projects, for example, and perpetuate an error in three different software products, she adds. Security vulnerabilities present another problem.

“In general, less than 40 percent of software projects meet the desired goals that were set out,” says Scott Hebner, vice president of marketing and strategy at IBM Rational. Worse, “the cost of maintaining and operating the applications is growing [in] double digits at a time when the budgets for new application development are shrinking,” he adds.

Tools help develop and maintain code The only way to get around all these issues is to be more effective at application development and maintenance, says Hebner. Analyst Lanowitz agrees, advising IT to use tools to automate the process of finding defects, as well as to use source code maintenance tools. The need to better manage software development and maintenance is critical, she says, because today “software runs the business.”

There’s no one way to develop and maintain software better, and various vendors propose their own approaches to address various aspects of the problem. For example, IBM Rational offers Rational Requirements Manager to impose discipline in requirements definition in collaborative environments.

Microsoft offers Visual Studio Team System Architecture Edition to help developers understand what is going on with the code, which is often written quickly and thus suffers from poor requirements planning and documentation, Microsoft’s Guadagno says. As the code is reused and revised, and as developers move on, the problem gets worse, he adds.

And Coverity offers Architecture Analyzer and Prevent to specify how components in software should interact to reduce code dependencies that can cause execution flaws, then analyze possible code execution paths to see where developers have made mistakes in code interaction.

Building code quality in from the start But solving the issues of badly designed and maintained code isn’t simply a matter of using the right tools. It comes down to following solid management practices. For example, a common issue with enterprise applications is that not enough attention is paid to quality, says Microsoft’s Guadagno. Instead, projects are driven by financial and time constraints, resulting in a poor product. Engineers then have to make a lot of fixes, which can be expensive. “It is less expensive to build quality in than it is to add quality after the fact,” he says.

The way to get quality built in is by having great application lifecycle management processes, in which participants are responsible for their code, architectural diagrams, and architecture, and where there is good user acceptance testing, Guadagno says. Coverity’s Chelf also advocates having clear architectural ownership, as well as designating someone responsible for designing how components should interact and communicating that design.

Agile programming methodologies also help assure quality: “They do lead to better software,” says Guadagno.

Developers should implement centralized version control, which enables maintenance of a working version of software if errors are made, and IT managers should hold individuals accountable for their mistakes, advises Jack Repenning, CTO at CollabNet, a vendor of application development management tools. Good source code control and mapping against requirements are both vital, Guadagno adds.

Repenning further suggests that such software-supported discipline be enforced in Web development, where developers tend to be more junior. “Without a good software management framework underneath, you find that changes you make, in particular to your Web site, may not be compatible with another part of the program, which could lead to errors or broken links,” he notes.

Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author