How big is your typical embedded system development engineering team? Even if you work for a large company, chances are your team is smaller than it would have been 15 or 20 years ago. Industry watchers have many ways to explain why that might be. Virginia-based consultancy, Quantitative Software Management, even has evidence to suggest that smaller teams are more productive than larger ones and have a higher likelihood of delivering projects on-time and under budget₁. Whatever forces are in play, however, if you’re an engineer on a small design team, your work life is probably defined by intense time-to-market pressure and the need to jump between multiple engineering disciplines – all while cutting costs and time spent on product simulation, evaluation and prototyping.
At MathWorks, we find that smaller engineering teams would do well to consider new ways to mitigate their project risks. One option, model-based design, is a simulation-based mathematical and visual approach for the development of complex control systems. Model-based design employs the systematic use of models throughout the development process for design, analysis, simulation, automatic code generation and verification – and is broadly used in motion control, industrial equipment, aerospace, and automotive applications.
In practice, model-based design lets embedded software developers automatically generate embedded code from simulation models to learn whether algorithms will work before the embedded code is written. Through virtual prototyping, system engineers can easily see whether the whole system (mechanical, electrical, hydraulic, and pneumatic, plus embedded software) will work as intended, even before the hardware is manufactured and available for testing. This is analogous to CAD software, which allows mechanical designers to create virtual assemblies to understand – in advance of the production step—how well product parts will work together.
Initially, some teams may resist the urge to adopt a new approach over concerns that the sheer act of changing their existing workflow will slow them down and increase the risk levels they are striving to lower. In our experience, there is a simple way to avoid that pitfall – integrate model-based design incrementally and identify a single component of the project that can be set up for a “quick win.”
The following four steps represent a gradual approach that will move your project along without complicating your schedule:
- Smart experimentation: Take a small piece of the project – say a new piece of an embedded system – and build a software behavior model to generate code. This one small change is low risk, requires minimal investment of time and will show you that:
- High-quality code can be created without hand coding
- Your code matches the behavior of the model
- A model can be simulated to work out the bugs in the algorithm much more simply and with greater insight than dynamically testing C code on a desktop
- Build on your success: Once your segment of code has been shown to work well, extend to system-level simulation by incorporating the code into the rest of the application. With system-level simulation, you are now able to perform system integration virtually and gain an early view of how the hardware and embedded software will behave. This is especially valuable if the hardware is in development and does not yet exist or is expensive to prototype.
- Apply your models to specific problems: Even without a full-scale model of your plant, environment or algorithm, simulation allows you to test various extreme operating conditions that will allow you to derive basic parameters and feed them back to the hardware design activity. Moreover, these models can be stored for later use to solve a different design problem in your next development project.
- Stick with the basics: For small teams, the immediate benefit of model-based design is the ability to create component and system models, use simulation to test and validate designs, and generate C code automatically for prototyping and testing. Only later should you consider adopting advanced tools and practices, such as modeling guidelines, automated compliance checks and requirements traceability.
By following these simple steps, the small engineering team can quickly realize significant advantages enabled by model-based design, including faster time to first demonstration, faster time to market with a high quality product, and expanded capacity for developing complex systems.
Vinod Reddy is a consulting services manager at MathWorks specializing in enterprise deployment and optimization of model-based design and principal author of the Model-Based Design Maturity Framework. He works with global companies in a wide range of industries, including aerospace, defense, and automotive, to implement model-based design and improve their development processes. Vinod has over 25 years of experience in developing embedded systems in the telecommunications and automotive industries. His experience includes extensive work in control system design, embedded software and systems, and code generation tools.