January 3, 2018
Share this post:
Author: Chris O’Connor, General Manager, Internet of Things Offerings (USA)
The connected world of today means that software is everywhere. Your home, your car, your workplace — anywhere you go, software is running in the background. It’s all powered by trillions of lines of code and complex systems. Think about this: a high-end car has more lines of code than an F-35 Fighter Jet … 100 million!
Now think about the complexity of designing and engineering a vehicle with 100 million lines of code. Not to mention that it all has to work, every time, in critical systems. A car can’t bluescreen.
The challenge of software development
Software plays an ever-larger role in defining and differentiating products. Often, it’s more important than hardware or mechanics. And connectivity isn’t just an interesting feature, now it’s a “price of entry” requirement to keep products more competitive and differentiated. But each new software-related opportunity brings its own challenges:
- Software makes connected products more feature-rich, user-centric, simpler to update and repair. But that means these same products are now more complex to engineer and keep secure.
- Software also represents a new cost variable. But then you have to decide how much software can you afford given project restraints?
- “Software everywhere” provides opportunities to capture data and insights that influence design and operations. The data you can capture is literally endless. But then you need to decide how to best use that data.
The bottom line: while IoT creates new opportunities to differentiate, it also requires a thoughtful approach to design and engineering.
Handling software complexity
Software is growing in complexity just when time to market matters most. Now, enterprises must un-silo product development across global teams and domains. And the entire product development lifecycle is more complex as more products include software, new supply chains, partners and more domains. The good news is that software design and engineering tools are keeping pace. That, in turn, helps leading enterprises effectively manage software requirements.
What does all this mean for your approach to IoT-connected software? IoT-related products and applications will require a more systems-oriented approach to engineering.
First, systems thinking, especially the concept of emergent behaviour, is crucial for high-quality IoT development and design.
Second, systems engineering can help reinforce the agility and quality of IoT development and design. That’s especially true if the product being designed needs to respond to other products and systems that are not under the designers’ control. Just keep in mind that systems engineering approaches must be right-sized between two extremes. On the one hand, extremely agile ad hoc development projects; on the other, meticulous and expensive aerospace-grade systems engineering.
Additionally, give special attention to the safety and security aspects of IoT systems, more so than for conventional apps and software products. Your tools supporting such engineering approaches must be flexible and integrated to give you the right amount of control and rigour, but also meet the needs of fast development cycles and time-to-market pressures.
Make the most of your development efforts
To make the most impact on IoT development, your systems engineering approaches should also be part of a comprehensive, continuous engineering methodology. Keep this in mind when evaluating your approach:
- Continuous engineering uses the feedback available from connected products and systems to constantly inform product refinement and new design.
- It consists of proven principles and practices combining systems thinking and systems engineering.
- It also uses embedded software development and IoT application software development, together with appropriate automation to efficiently enact those practices in a real product development environment.