System engineering aims at taking all aspects of the system into consideration. This includes mechanical, electrical, electro-magnetic, or software aspects. The true difficulty is to describe things that interact with each other but that follow very different principles. For example it is difficult in the same model to gather a cruise control that involves the weight of the car, the speed of the car, the air resistance, the engine horse-power, the speed sensors, the throttle control software, the driver user interface, and so on...
To handle complexity, systems are decomposed in sub-systems and each part of the system is addressed separately. This works fine for the most part of the system but at some point it is necessary to put everything together and try to address links between these different aspects.
One of the key aspects when describing a system is to describe its functionality. WHAT the system is supposed to do before investigating HOW the system will provide the functionality. At system level it is usually one of the most important aspects because if the requirements are not well understood there is little chance the result will be satisfying.
Based on the Globally Asynchronous Locally Synchronous (GALS) computation model, a system functional description is perfectly well addressed with asynchronous technologies such as the ones on which PragmaDev Studio is based.
Because it is event driven with a well defined semantic and a high abstraction level, SDL is the perfect language for describing a system functionality.
A static model with a bunch of boxes and arrows is not sufficient to describe a system functionality. The model can be verified only if it can be executed. That requires an action language and a semantic of execution.
To be efficient the action language must be properly defined and leave out any ambiguity. If any further description to the modeling language is required to be executable, then the meaning of the model might be misunderstood by different readers.
It is SDL and TTCN-3 strength to be well defined and have an unambiguous semantic of execution. Anyone reading an SDL model will have the same understanding of how the model will be executed. For these reasons PragmaDev Studio is perfect for describing an executable system from a functionnal point of view. With its built in simulator the dynamic is verified and validation test cases can be written or generated.
After the expected behavior of the system has been described and verified, the best architecture has to be defined. In today's systems it is paramount to find the right architecture in terms of timing or energy consumption based on previous experiences. PragmaDev Studio helps system architects to find the best architecture with its Performance Analyzer. It runs a set of scenarios against a set of possible architectures and produces a trade off graph to find the best configuration.
Emmanuel Gaudin presents a paper on performance optimization at SAM conference in Saint Malo France on Oct 3, 2016.
Since system engineering starts at the very early stages of designing a new system, it addresses what is expected from the system. That is a source for validation testing. PragmaDev Studio has the capability to generate test cases out of the executable model and the test cases can later be used to verify an implementation is conform to the system functional description.
PragmaList Model Based Testing unique technology results from the combination of PragmaDev formal modeling technology and CEA List symbolic resolution kernel. This joint lab presentation has been recorded during the SAM 2014 conference in Valencia Spain.