I am a highly experienced with physical system modeling, hardware in the loop V&V, system processes, and MBD workflow engineer design implementation. I am an average C programmer, test case and requirements specification author. I am, honestly, a poor debugger. Model-Based Design supports me in the areas of my weakness and makes my strengths even easier to apply. I suspect this is true for many engineers out there.
How MBD empowers engineers
Few people go into engineering with a desire to write and trace requirements. Yet that task must be done for projects to be successful. Likewise the process of debugging C or, shudder, assembly level instructions. Yet again, at times, debugging of the system needs to take place. So how do you take those required tasks and transform them? The answer lays with moving them “up” a conceptual level.
Debugging in models through simulation: Empowerment example
Debugging a simulation is fundamentally different from debugging textual code; when debugging a simulation the user is validating the functional behavior of the model. In contrast, while debugging C code may involve validating the functional behavior much of the work is spent in the correction of syntactical mistakes. If your engineers are domain experts (e.g. controls, physical modeling, discrete events) versus C code experts then having them debug in a modeled simulation utilizes their strengths.
Requirements to “move tasks up”
In order to abstract a tasks to a higher level there are two requirements. First, the mapping from the higher level to the lower level must be consistent. For example, to enable debugging through simulation instead of debugging C code the model must translate correctly into generated C code.
The second requirement is the automation of processes; the translation between levels should be handled automatically. For example with the tracing of requirements from the documentation, to model, to test cases, to end report all should be processed in an automated fashion.
Final thoughts
As one of my co-workers once put it, “You don’t hire Michelangelo to paint your walls, why do you hire engineers to debug source code?”
Note: You may pay him to paint the ceiling thought…
I agree. Investment should take place in the key areas of the design cycle. Having powerful debugging tools even a debug expert will appreciate them.