Reduce the Complexity of Features: Complexity in the software adds tremendously both to initial and aftermarket costs. The development time is not linear as the number of features goes up – it lengthens exponentially. Doubling the features will add way more than double the total effort.
Rigorously analyze the value of proposed new software features, and cut those that don’t add up – or which won’t really help sell more product.
Adopt a More Mature Software Architecture: While good software development relies on a modular and smartly layered technology stack, for many manufacturers (and traditional software developers too), short cuts or poor design often lead to “spaghetti code” that becomes increasingly difficult to maintain and develop upon.
“Our research finds that the architecture of embedded software is one of the weakest spots of its development, lagging half a grade behind the development of comparable traditional software,” the McKinsey authors say. The key lesson: pay close attention to architecture decisions, and be wary of short cuts to save time today but that may be very costly down the road. Also look hard at whether there is real value in proprietary platforms.
Understand the Economics: Manufacturers often don’t fully recognize the full lifecycle costs of the software. They will avoid lower quality traditional components in their products that would cause large customer satisfaction or warranty cost issues, but then take shortcuts in software development or especially testing that have the same impact in the end. The same can be true for the electronic components associated with the hardware.
“When suppliers and OEMs undertake design-to-cost planning, they must learn to consider a broader set of criteria, including the lifetime costs of complex software and less expensive hardware,” the authors say.
Improve Development Processes: The traditional approaches that have worked for decades for many manufacturers in terms of physical products are often not well suited to embedded software development.
Software engineering and development is different, and embedded software development itself has important differences than traditional business software engineering.
Best practices, McKinsey says, include the use of cross-functional teams of experts (feature-based development), development methodologies that apply common models and simulation tools, and "time boxing" (giving developers specific deadlines for deliverables).
Changing practice and mindsets will not be easy, the authors say.
However, embedded manufacturing software development needs “to shift from a hardware-development mentality to one more attuned to the iterative nature of software development,” they note.
Do manufacturers in general need to improve their embedded software development processes? What would you add to the McKinsey recommendations? Let us know your thoughts at the Feedback button below.
|