Tips for Designing IoT Products: Use Model-Driven IoT Code
by Michelle Boucher | December 14, 2016 | Integrity Blog
The exciting possibilities for smart connected products create great opportunities for innovation. The challenge is that developing them adds even more complexity to the already complex process of new product development.
Take Steps to Manage Complexity
Many products have already evolved into complex systems of mechanical components, electronics, and embedded software. Now with the Internet of Things (IoT), we are expanding that system into new ecosystems. Complexity is already at the root cause of many system development problems. Taking steps to manage complexity will help navigate these challenges, boosting the chances of product success. In fact, in a study we did at Tech-Clarity, Developing Software-Intensive Products: Addressing the Innovation Complexity Conundrum, we found that about one-half of manufacturers developing smarter products experience negative impacts. This is due to the challenges related to system complexity. The impacts include product quality, time to market, and operational efficiency.
Use a Model-Driven Approach
Tech-Clarity’s Systems Engineering Buyers Guide: The Expert Guide to Systems Engineering Solutions recommends using system models to help manage complexity. In our Developing Software-Intensive Products study, we compared companies who use system models to those who don’t. We found that those using system models are less likely to report negative business impacts. Those using systems models are:
- 23% less likely to report product quality issues
- 55% less likely to report delayed time-to-market
The implication is that using system models can lead to fewer quality issues and increase the likelihood of meeting time-to-market goals. System modeling allows you visually trace the logic of the entire system. You can then trace requirements to various functions through validation and verification.
Think about IoT Implications
It follows that applying this best practice to even more complex IoT systems will offer even more benefit. Now you are not just dealing with a single smart product. With IoT, you need to communicate with multiple “things” such as other products, the cloud, mobile devices, and different databases. A model can provide a nice visual reference so that you can focus on the logic, functions, system structure, and interfaces of the IoT system. It is like you are going on a journey and want to determine the best course. You could compare listed out directions or look at a map. With a list, it is hard to do more than just make sure you understand the directions so you don’t get lost. With a visual map, you can better assess your trip and make better decisions about the best route to take. A system model is like a map.
IoT also touches so many “things,” you need to involve a host of people, departments, and business systems. Our Developing Software-Intensive Products study found that integrated teams encounter negative impacts less frequently than others. The research report observes that independent teams who have not integrated, “likely do not communicate and collaborate as well, leading to surprises, late changes, and integration issues that impact quality, time, and cost.” An IoT model can support a more integrated team. The visual reference provides a common language to improve communication across teams. Given the wide cross section of skillsets and roles involved, this can help leverage the collective expertise of the entire team.
Consider Automated Code Generation, Including IoT Connectivity
Beyond the benefits of using an IoT model, a model that can automatically generate code would provide even more value. Imagine the time savings if everything defined in the IoT model, including all the code for connectivity, was automatically generated. Not only does this save time, but the automation also reduces the risk of errors, which improves quality.
Another nice thing is that the automatic generation of code means you can focus your time on adding more value. You can concentrate on what the system should do, meet requirements and use cases, identify opportunities for adding value, and innovate. This is a more powerful use of team resources compared to wasting precious time on the tedious task of writing code.
Among the many exciting things about IoT, you can continue to enhance products, even after they have been purchased, via software updates. However, this requires changes and changes tend to be a huge source of problems as they can introduce errors, especially in complex systems. Imagine if instead, you could change the model, visually review the logic, and then automatically generate the associated code. This could not only make changes easier and faster, but also reduce the risk of errors.
Overall, model-driven IoT code can help your company execute its strategy for the IoT. It can help your company become more innovative, while saving time and improving quality, which will help you become more competitive.