Within a software development organization, whether for embedded code or a desktop application, there are distinct roles. They are the controls engineer, the system architect, and the quality engineer. Depending on the size of the development team some of these roles may be done by a single person.
Analysis versus testing
During the development phase of a project, the controls engineer should perform analysis tasks on the model. These analysis tasks enable the controls engineer to determine if the algorithm they are developing is functionally correct and is compliance with the requirements.
It is common for the analysis tasks to be performed in an informal fashion. It is common for engineers to simulate a model and then view the graphs of the outputs to determine if they have correctly implemented the algorithm.
The differentiating word in this description is informal. When comparing analysis with testing we see that testing (either verification or validation) requires a formalized and “locked down” framework. How then can the informal analysis be used during the formal testing?
Transitioning from analysis to testing
Ideally, the transition from informal analysis to functional
testing would flow seamlessly. However, it is often the case that the work done in the analysis phase is thrown away in the transition to the testing phase. This is understandable in a non-MBD environment but with the single truth approach of MBD, the analysis results should not be thrown away. This is where the idea of “golden data” comes into use. Golden Data is a set of data, both inputs, and outputs that an experienced engineer verifies as meeting the requirements of the algorithm.
Enabling the use of golden data to create test cases
The easiest way to enable the use of golden data is to provide controls engineers with a simple interface in which they can provide the analysis data set and the information that transforms it into a testing data set.
Analysis data is transformed into test data by providing a method for “locking down” the results. To locked down data the controls engineer needs to provide the test engineer information on what is expected from the analysis data. This information could include the following types of golden data tests.
- Strict: The output data from testing must match the golden output data exactly. This is normally done for Boolean or integer outputs.
- Tolerance: The output data from testing must match the golden output data within some bounded tolerance. Tolerances can be absolute, or percentage. Note special care needs to be taken with data with values around zero for percentage based tolerances.
- Temporal: The output from testing must match the golden output data within some time duration. These tests can also include tolerance and strict conditions.
In addition to the type of golden data tests to run the controls engineers should include information on which requirements the test maps onto.
Formal tests in support of development
In the same way that golden data can support testing the formal testing can support the controls engineers by informing them of the constraints that the requirements place on their design. This can only be achieved if the tests are easy for the controls engineers to run.
What is “user-friendly?”
User-friendly interfaces for testing are defined by the following characteristics
- Data is accepted in “natural” format: Any formatting or interpolation of the data is performed by the testing environment.
- Test results are presented in “human readable” format: The results from the tests should be provided both in a summary format (pass/fail) and with detailed data, such as graphs and tabular data.
- Selection and execution of tests should be simple: Tests should be launchable from a user interface that provides a list of the valid tests and enables the running of tests in either single or batch modes.
- Test files should be automatically associated: The management of test data (inputs and results) should be handled by the test manager.

Final thoughts
This blog post has described how information should be shared and how tests should be run. In an upcoming post, I will cover the basics of modular test design.




.
So which of these is more readable? This is a difficult question to answer. In this case, the indented format of the code makes the binary nature of the if/else-if/else conditions clear. However, if I introduced more complex evaluations, non-binary operations, then it would perhaps a hybrid of the two formats would be preferable.




to a degree, the polar opposite of the enthusiastic adopters. They are people who ask questions about how MBD will be used within their process. For them the
equivalent of the “evidence based backers”. The oft quoted phrase of “Changing processes during an active project is like changing the tires on a moving car.” Schedule based blockers often have legitimate reasons for why changing processes at a given point in time is not correct. However, like evidence based backers by showing them the decreased development time that can be reached utilizing MBD methodologies can remove the blocks.
new technologies as a threat to their job security. While Model-Based Design can be used to reduce a workforce it is normally used to empower groups. When working with them it is important to explain the limitation of any tool, the best saw will not build a house on its own; it still needs a hand to guide it.


customer asked me to do. Their request was to help them automate the routing of signals around a complex multi-level model.

As the name implies integration with spaghetti code is difficult to break apart and difficult to integrate in a “clean” fashion.



implementation of functional and system level design reduces development time the ability to test models early in the development process both reduces development time and improves the likelihood of detecting bugs early in the process.