When I was attending classes at Northern Illinois University in pursuit of a Computer Science degree, I enrolled in a class called Software Engineering. The general idea of this class was training in the ability to elicit requirements from someone without a knowledge of how software works or how it should be created. The thinking was that someone with a better understanding of how a system should work would be led into providing the guidelines for the implementation so that the software developer could create their vision. But what if there was a way for that person to directly transfer their ideas into software, leaving the developer free to work with lower levels of implementation and the real nitty-gritty of the development?
For software engineers who use Simulink to do Model Based Software Development (MBSD), the ability to manage variables, also known as signals and parameters in Simulink, has always been a challenge. It has been possible but not without shortcomings, especially when dealing with large software systems.
For those not familiar with Simulink, Here is a brief outline of what the past issues have been.
We were asked to assist in the development of the controls for a complex construction machine using Model Based Software Design (MBSD). This was the first project in which the OEM used MBSD and therefore it was a high-visibility project.
We faced many challenges in this project. The control algorithm was very complex, and had already been developed by the OEM in Matlab - the accuracy of the implementation of the algorithm was critical. Verification of the algorithm was a key component of this project. Adding to the complexity, the input signals to the system were very noisy and required disturbance rejection. Any instabilities in the system had the potential to cause injuries or property damage, so it was key to tune the system properly. Requirements for the project were also being developed in parallel to implementation.