Developers Must Improve Software Quality and Innovate Products By Adopting a New View of Software Development and Using New Tools
By Djenana Campara
Device software continues to become more complex and more important. Increasingly, it’s software that drives innovation in new products – whether they’re mobile phones, automobiles or set-top boxes. For this reason, when software defects appear in the field, or when products ship late due to inefficient development processes and tools, an organization’s bottom line and brand suffer.
Toyota’s October recall of 75,000 Prius vehicles shows how serious this issue can be. The Prius is Toyota’s hybrid gas-electric vehicle, and its sophisticated engine-management systems require software that functions flawlessly. Unfortunately for Toyota and its customers, a software glitch was discovered that can erroneously stall or shut down the gas engine. While there have been no crashes, injuries or fatalities attributed to the software defect, Toyota received hundreds of complaints from customers and finally issued a voluntary recall.
As this Toyota example shows, software quality is becoming increasingly important, not only for the auto industry, but also for any industry that offers products built around complex, software-enabled capabilities. To be sure, auto makers depend on sophisticated software to both enable key functionality in their vehicles and differentiate their vehicles in a crowded, highly competitive market. But other industries face the same challenge, as their customers increasingly rely on complex software for their information, navigation, communication, and entertainment needs and desires.
But today, device-software development organizations face a dilemma. On the one hand, they must continually improve the quality of their code by removing security and quality defects. On the other, they must continue to enhance their software with new features and capabilities. What’s more, they must accomplish both of these tasks while staying within budget and on deadline.
Many development organizations are still struggling, and not always successfully, with these disparate demands. The result: software that is over budget, late, lacking in security features, and buggy. Unfortunately, company managers can’t help much. Unlike nearly all other business activities, IT lacks metric-based windows into the development process that could help management understand how software projects are progressing.
A further challenge for development groups stems from the very nature of existing code and from the people and processes already in place. As a company’s code base grows over time, it’s common for developers to tack on additional functionality without regard to creating a stable, extensible architecture. Often, the developer team changes, too. Original members of the team may leave for other projects, or even for other companies, and contract developers may be hired to contribute code. All this churn requires developer-team leaders to get new team members up to speed, in turn siphoning resources that could otherwise be spent on the more-important jobs of adding new features and removing defects.
Fewer Defects, Fewer Dollars
So one goal for device-software development managers should be obvious: delivering innovative, high-quality code quickly and within budget. To meet this goal, companies need to fundamentally address the root of their code-quality issues. They also need to understand their system architectures, identify and remove existing defects, and proactively and automatically limit the introduction of defects in their future development efforts.
To start, developers need to adopt a new mentality. Organizations should stop thinking of software development as an art, an ad-hoc process in which time- and resource-pressed individuals do what they must to ship software. Instead, organizations should move to thinking of software development as a discipline, a more-structured approach to development that is enabled by the use of new tools. These tools can analyze system architectures and automatically alert developers to software defects early in the process.
Taking the next step involves analyzing an existing code base. Using modern static analysis suites, organizations can understand the quality of their software. This, in turn, will help them decide how best to improve their software’s quality, stability and extensibility. Organizations can use this analysis not only to prioritize architectural improvements and bug fixes, but also to get new project team members up to speed quickly.
Once an analysis has been conducted, an organization can use the tools to automatically identify coding defects during development. By addressing problems before they reach the field, organizations can significantly lower their software-debugging costs.
New development tools can also help managers track a project’s status, as well as the productivity of both the team and its individual developers. With this historical and real-time project information at their fingertips, managers can more accurately report the state of a project to their companies’ business executives. This, in turn, will help the business accelerate and streamline product launches. It will also help businesses more accurately predict development and launch costs. By leveraging these reports, companies will finally be able to view and analyze their device-software activities the same way they do other business processes.
At organizations that still consider software development an art, managers need to help their developers buy into new processes and tools. Managers should start discussing how the development process can (and must) become more disciplined, and how that change will avoid costly product recalls, new product launch delays and other activities that affect an organization’s competitive position. The more-frequent use of metrics should also give teams and individual developers greater and new incentives to deliver high-quality code quickly.
DJENANA CAMPARA is the founder and CTO of Klocwork Inc., a provider of software security and software quality tools.