The following is an idealized Model-Based Design workflow, from initial requirements to product release. The workflow assumes a multi-person team with resources to support multiple roles.
It all starts with requirements…
Ideally, the process starts with foundational tools and processes in place. These consist of
- Modeling guidelines: Covers model architecture, data usage, and model clarity
- Testing guidelines: How the system will be validated
- Requirements tracking: A system for tracking the compliance and changes to requirements
- Bug reporting: A system for tracking issues as they are discovered; this is tightly coupled to the requirements tracking.
- Support infrastructure: The supporting infrastructure includes tools such as version control and CI systems.
- Project timeline: The project timeline provides the objects for the completion of the project and the resource allocation (e.g people)
From the initial high-level requirements derived requirements and derived tests are defined. These documents, along with modeling guidelines and testing guidelines are used to create the initial system and component level models and their associated test cases. These models and tests are entered into the requirements tracking system and assigned to the appropriate teams.
Project development
During the development phase. both the models and tests points are elaborated by adding in details from the requirement and testing documents. As these features are added to the system the models are validated against the test cases.
As issues are uncovered, either way in which the design is lacking or bugs are discovered information is added to the bug and requirements tracking systems. This workflow goes on in parallel for each developer/model.
This development goes on in parallel for both the system under development and any supporting models such as plant and environmental models.
System integration and release
As the maturity of individual components matures the system level integration and validation rigor is increased. At this stage of development testing of the derived objects, e.g. generated code, increases in frequency and rigor.
Wrap up
After the release of the project, the components from the development should be examined for reusability. Beyond components processes and guidelines should be reviewed for updates to the best practices.