In the Dezyne Modeling Language a user specifies logical behavior of a system based on events and event driven behavior. Users can simulate the models to validate the specified behaviour. With the verification engine an automatic formal check can be performed on the model where a set of typical errors are verified. Finally code can be generated in a number of programming languages. Dezyne promotes a component based design approach where a system is based on components and interfaces. The behaviour of a component is often described by a state machine.
In a given state the current simulator generates all possible next events. The user can select one of these events and the simulator continues execution of the model until it hits a decision point in another state. The decision point is again a choice between possible next events. After repeating this cycle a number of times a complete user scenario will have been completed. A scenario can be a “happy case”, i.e. the system behaves well and desired functionality is displayed. Alternatively, a scenario can be a case where the system hits some kind of fault condition and acts on that.
The challenge is to build a scenario tool that allows the user to ask questions like: “Is there a happy flow in the system” or “what happens if this fault occurs”? The user can drive the behavior of the tool by predefining selections on individual events, e.g. a sensor will always return ok or never return an error, so this limits the possible behavior as originally expressed in the behavior definition of components and interfaces. This is not intended as a full fledge verification engine where mathematical proofs for system questions need to be delivered. The possible user questions will be predefined and limited. Hence the possible user questions will not entail questions like “will the system never display this behavior”, or “will the system always respect this condition”.
The scenario tool will have to work closely together with the simulator to traverse through the state space and it is likely to be integrated with the simulator in the long run. Currently the simulator can only work on one component and its interfaces. For the new tool the same limitation will apply. It is the intention that the simulator will cover full system simulation in the near future and this does then also apply to the scenario tool as well.