Capturing Requirements as Code with Simulink

Model based software design simplifies implementation of complex control systemsWhen 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?

That is the beauty of how Simulink can be used. My name is Peter Grill, and I work side by side with hydraulic and transmission experts to create software that helps construction equipment operate. These people, having no prior experience with software, became skilled in determining the requirements that would allow the software to correctly control their mechanical systems. Simulink gave them the ability to turn their knowledge of their machine function into working software that runs on the machine.

This has been an enormous advantage for me at all stages in our development process. Our software gets developed very quickly due to the number of people contributing to software compared to other vehicle groups with the same number of software engineers. This means we have time to make our machines do more and we’re able to quickly adapt to requests for new features and troubleshooting. Even more importantly, when a problem arises with the software for a particular part of the vehicle, there’s no butting heads between mechanical engineers and software engineers over who to blame for the problem. The mechanical engineer will have had such a large hand in the code that’s running that they’ll be able to have an objective opinion on what could be at fault.

It took me years to get a good grasp on how to program to traditional hand-code using languages like C and Java. After some limited use at work and a 5 day training session on MATLAB and Simulink, I was suddenly proficient in a whole new take on programming. It doesn’t do away with the need for that hand-code knowledge, but it does provide us with a larger pool of quality contributors to the software. Throughout our whole development cycle, Simulink has proven itself an amazing tool for bridging the gap between software and non-software employees.