Howlers is an artificial demo, purely meant for illustrating problem tracing. The main FSM shown here, contains many mistakes causing deadlocks, livelocks, and queue overflows; synchronisations are violated due to missing and superfluous SyncReturn stereotypes; a lot of function calls can not be handled correctly. Also other problems will/might happen, that are already detected by the static check of TismTool, such as an infinite loop of triggerless transitions.
During execution of the verification the file TismSeq_0001.txt has logged all activities of the scenarios. Subsequently, TismTool has processed this file to create an overview file TismSds.html with links to all the sequence diagrams of the scenarios.
Valid combinations for generating source code are in the table below.
Target |
Generate |
Protocols |
|
CheckerProtocol |
Simulation code, Verification code |
HowlersProtocol |
Simulation code, Verification code |
SlaveProtocol |
Simulation code, Verification code |
Architecture |
|
ExecEnv1 |
Verification code; system has a thread |
ExecEnv2 |
Verification code; system has wrongly no thread |
The file TismSds.html contains an overview of the verification scenarios.
The files in the tables below are free to download.
Howlers.xml |
The XMI file of the Howlers UML model. |
Howlers.tsm |
The project file for the TismTool. |
Howlers.pdf |
The UML diagrams. |
Howlers.zip |
The zipped archive containing the (generated) source code, the verification executable, and the logfiles TismLog_0001.txt and TismSeq_0001.txt. |
AllHowlers.zip |
All the above files zipped together. |
Howlers.xml |
The XMI file of the Howlers UML model. |
Howlers_Java.tsm |
The project file for the TismTool. |
Howlers.pdf |
The UML diagrams. |
Howlers_Java.zip |
The zipped archive containing the (generated) source code, the verification executable jar file, and the logfiles TismLog_0001.txt and TismSeq_0001.txt. |
AllHowlers_Java.zip |
All the above files zipped together. |
Howlers.xml |
The XMI file of the Howlers UML model. |
Howlers_Cpp.tsm |
The project file for the TismTool. |
Howlers.pdf |
The UML diagrams. |
Howlers_Cpp.zip |
The zipped archive containing the (generated) source code, the verification executable, and the logfiles TismLog_0001.txt and TismSeq_0001.txt. The used C++ Boost library has version 1.48 . |
AllHowlers_Cpp.zip |
All the above files zipped together. |
L_HOWLERS_CPP.tar.gz |
The tar-zipped archive containing the (generated) source code, the makefiles, the verification executable, and the logfiles TismLog_0001.txt and TismSeq_0001.txt. The used C++ Boost library has version 1.47 . |
L_AllHOWLERS_CPP.tar.gz | The tar-zipped archive containing the XMI file of the Howlers UML model, TismTool project file, pdf of UML diagrams, and the above L_HOWLERS_CPP.tar.gz file. |
Howlers.xml |
The XMI file of the Howlers UML model. |
Howlers_C.tsm |
The project file for the TismTool. |
Howlers.pdf |
The UML diagrams. |
Howlers_C.zip |
The zipped archive containing the (generated) source code, the verification executable, and the logfiles TismLog_0001.txt and TismSeq_0001.txt. The used OSAL library is based on Windows. |
AllHowlers_C.zip |
All the above files zipped together. |
L_HOWLERS_C.tar.gz |
The tar-zipped archive containing the (generated) source code, the makefiles, the verification executable, and the logfiles TismLog_0001.txt and TismSeq_0001.txt. The used OSAL library is based on Linux. |
L_AllHOWLERS_C.tar.gz |
The tar-zipped archive containing the XMI file of the Howlers UML model, TismTool project file, pdf of UML diagrams, and the above L_HOWLERS_C.tar.gz file. |
TismTool reports the following remarks about the UML model:
S 2848: HasMutex and HasThread @ ( Xmi > Data > Repository > HowlersPackage > System1 )
W 2800: Unused trigger CbSlowed() @ ( Xmi > Data > Protocols > HowlersProtocol > HowlersClient > Port )
W 2800: Unused trigger GetInfo() @ ( Xmi > Data > Protocols > HowlersProtocol > HowlersServer > Port )
S 4660: No triggerless transitions, whereas FinalState in underlying FSM @ ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> SF_2 )
S 2815: SyncReturn in passive environment @ ( Xmi > Data > Architecture > ExecEnv2 ) from ( Xmi > Data > Repository > HowlersPackage > HowlersComponent > HowlersClass > HowlersFsm >> Active >> JuncState ) to ( Xmi > Data > Repository > HowlersPackage > HowlersComponent > HowlersClass > HowlersFsm >> Active >> Slow )
S 2842: HasMutex in HasThread @ ( Xmi > Data > Repository > HowlersPackage > CheckerComponent )
S 2842: HasMutex in HasThread @ ( Xmi > Data > Repository > HowlersPackage > CheckerComponent )
S 2846: HasMutex in HasMutex @ ( Xmi > Data > Repository > HowlersPackage > CheckerComponent )
E 4620: Entrypoint 'Entry1' without reference @ ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> SF_1 )
S 4630: Exitpoint 'Exit1' without reference @ ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> SF_1 )
S 4686: Loop of triggerless transitions
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> SF_1 )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm > SubFsm )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm > SubFsm >> InitialState )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm > SubFsm >> NoWait )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm > SubFsm >> FinalState )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> SF_2 > ConnEntryRef )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm > SubFsm > Entry1 )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm > SubFsm >> Again )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm > SubFsm > Exit1 )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> Loop )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> Composite )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> Composite >> InitialState )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> Composite >> Leaf )
. ( Xmi > Data > Repository > HowlersPackage > CheckerComponent > CheckerClass > CheckerFsm >> Composite >> FinalState )
W 4535: Self-transition is errorprone for NativeTrigger @ ( Xmi > Data > Protocols > SlaveProtocol > SlaveServer > SlaveServerPsm >> Busy )
W 4535: Self-transition is errorprone for NativeTrigger @ ( Xmi > Data > Protocols > HowlersProtocol > HowlersClient > HowlersClientPsm >> Active >> Starting )
ad W 2848:
System1 has a Mutex protection as well as Thread protection ; only one protection mechanism is allowed.
ad W 2800:
These triggers are not explicitly mentioned, because the AnyReceiveEvent takes care of the execution of the triggers.
ad S 4660:
The submachine 'SubFsm' has a final state, but there is no triggerless transition from its instance 'SF_2'.
ad S 2815:
The
SyncReturn stereotype can only be used in a state machine of a class
being part of an active component (i.e. having a thread).
ad S 2842:
A subcomponent has Mutex protection, but it has already Thread protection by its supercomponent.
ad E 4620:
The
submachine 'SubFsm' has an Entrypoint state 'Entry1', but the
submachine's instance 'SF_1' has no reference to this state.
ad S 4630:
The
submachine 'SubFsm' has an Exitpoint state 'Exit1', but the
submachine's instance 'SF_1' has no reference to this state.
ad S 4686:
A cycle of (unguarded) triggerless transitions will loop forever.
ad W 4535
Self-transitions may cause an unlimited number of messages to a receiver causing queue overflow.
By downloading and/or using the above items you accept the terms of the Disclaimer. So make sure you have read it before downloading or using anything from this section of the site. In general terms that means you use them at your own risk, and we accept NO RESPONSIBILITY WHATSOEVER for anything that may occur as a result of your use of, or inability to use, any item provided via these pages.