Pesky Software Problems Plague Many Products
It seems not a day goes by without reading about yet another software bug that inflicted a catastrophic (or, at times, just ridiculous) malfunction on an everyday product.
In these conversations about software quality problems, the auto industry is often singled out. Indeed, consumer complaints about vehicle software systems have been growing steadily over the past several years, and numerous automakers, including Volvo, Nissan, and Volkswagen, have initiated large recall campaigns to remedy software defects. Even Tesla, that usually gets immediate praises for almost everything it does, isn’t immune from releasing faulty software controlled systems (although Tesla does a superior job in fixing software defects via over-the-air updates).
But not only cars suffer from software malaise. General Electric’s refrigerators, too, require software updates to remedy errors that hamper the appliance’s most basic operations, and Samsung’s connected fridge allows hackers to steal a consumer’s Gmail login information.
The operation of practically all modern-day products and systems relies on sophisticated, complex software systems. From smartphones to home appliances and connected cars, these products boast rich and sophisticated functionality made possible by cutting-edge embedded electronics and advanced control software. Software-based innovation helps marketers and designers to innovate quickly and design new products tailored precisely to specific markets and demographics at a faster pace than ever before. Moreover, new features can be added to existing products almost effortlessly to improve their quality and respond quickly to market changes and competitive threats.
But product companies are also experiencing the pains and the pitfalls of the frenzy to innovate faster and cram more software-based functionality into already complex products. Delayed product launches, budget overruns, and, most famously, software-related defects continue to plague the manufacturing industry at an alarming rate.
And there is no good reason to expect that this trend will slow down.
Product designers are on a steady migration path from discrete functionality based primarily on mechanical and electromechanical subsystems to multi-function software controlled systems. While the design and manufacturing advantages of software-based functionality are clear, they result in mounting product complexity and systems interdependencies. For example, Mercedes-Benz’s PRE-SAFE system links crash sensors and electronic stability control with seat controls, seatbelts and the sunroof, joining operational, safety and comfort features and adding functionality to existing components.
But, again, automotive is not the only industry that wrestles with software complexity challenges. Quite the opposite. The rapid evolution of the interest in the Internet of Things (IoT) and the anticipated flux of Internet-connected devices demands attention to the quality snags and security risks that are inherent to software-intensive systems.
What Exactly is the Problem?
The quandary product development organizations face is not simply a matter of a need to improve the quality of otherwise subpar software code, or hire more and better programmers (although these would probably help). In fact, many product development organizations, including in automotive and aerospace, strive to reduce the amount of code they generated manually. Instead, they use modeling and simulation tools that can generate the control code for a verified system automatically. The software generated by these systems is arguably accurate and defect free.
What product designers face is a result of the confluence of a myriad intertwined engineering disciplines, product development processes and organizational cultures. At a high level, the crux of the problem is that software is typically developed in rapid successive iterations, whereas the very nature of hardware development, which includes a multiple physical prototyping phases, is much slower and more expensive. And when the final product also involves numerous mechanical subsystems, as in cars, the difference in the tempos across engineering disciplines is even more striking (as are the cultural differences between these engineering groups).
The alignment and coordination of the vastly different approaches and cadences of hardware and software development cycles is complex and burdensome. It is frequently more pronounced during integration testing, when software and hardware subsystems, which were developed mostly independently are brought together for the first time, and countless dependencies and compatibilities are stressed and tested against market and functional requirements.
Is Agile Software Development the Answer?
Software development methodology gurus propose that Agile software development is the answer to the woes of developing complex, multi-domain control systems. While there’s plenty of evidence to support that claim and justify utilizing Agile, experience shows that, in itself, Agile may not be able to overcome many of the deeply-rooted process and cultural barriers erected by product development organizations.
In a follow up article, I discuss the reasons product companies are unable to reap the full benefits of Agile development methods. A third article in this series, which will be published in two weeks, will discuss how a more comprehensive approach to product data management improves the efficiency of product development and maximizes the value of Agile development methods.
Image: Mosquitodance by Hans Kanters