It seems like there are quite a few model-based initiatives going around and they all have different definitions. But that’s for us to discuss another time. What we’re going to talk about in this post is how the software development process is augmented by a new approach called model-based software development. Some people just call it model-based development, which is similar.

Getting Software to Run on Hardware

If you think about it, one of the biggest challenges in developing control software for any type of functional system is getting the software to run on the electronic hardware. It’s getting the behavior that you want out of the software system upon its interaction with a mechanical or electromechanical type of system. Is it exhibiting the control that you want and that you defined?

This has been a big issue because prototyping a board or developing a custom integrated circuit system has a long lead time. Many organizations simply cannot wait that long before they start testing for integration; making sure the software, electronic hardware, and mechanics all work together. To accelerate this process, they start plugging in virtual representations of each system.


  • Model-in-the-Loop: The first step is called a Model-in-the-Loop (MiL). You take a UML or a software model of some kind, and you connect it to a simulation of the mechanical side of your product and let them interact. You have different inputs, and you test and verify the control and behavior the software model, not the software code, exhibits over that physical manifestation of the product. That’s a digital simulation initially.
  • Software-in-the-Loop: The next step is Software-in-the-Loop (SiL). This is where you take the software model, the UML model, and you generate compiled code. You then plug this code into the same simulation and verify that you’re getting the same type of behavior. This typically involves some type of emulator for the electronic system that the software will be running on.
  • Processor-in-the-Loop (PiL) comes next. This is where you get a prototype of your integrated chip. You actually engrain the software on it and you let it run. Then you hook up that same digital simulation of your mechanical system and make sure it exhibits control as you want it to.
  • Hardware-in-the-Loop (HiL): The last step is hardware in the loop, and this is where the software model and the mechanical hardware come together. You can hook up the prototype board as well, so you’re incrementally getting closer to the physical configuration of the control system. This allows behaviors and control to be verified long before there is a physical prototype in someone’s hands.

That is model-based software development or model-based development, depending on what you call it.