![]() |
Module extension is the last resort if the previous approaches are not
applicable. In this case, users need to write a parser according to the language
syntax, implement the language construct classes to encode the operational
semantics of each and every language construct, and lastly, make connections
with the intermediate layer. (Please refer tp a recently developed tool Module Generator can help you to create
your module easily. ) This approach is the most complicated compared with ones discussed
previously. Nevertheless, this approach gives the most
flexibility and efficiency. It is difficult to
quantify the effort required to build a high-quality module in PAT. Experiences
suggest that a new module can be developed in months or even weeks in our team.
This approach is still feasible for domain experts who have only the basic
knowledge on model checking, since model checking algorithms and state space
reduction techniques are separated from modeling languages. In order to make use
of the model checking library, only knowledge on the module interfaces and IRL
is necessary. To illustrate the feasibility of this approach, we elaborate the process of
creating the TA module to support verification of Timed Automata models. The
graphic interface for drawing Timed Automata is based on an existing module
(e.g., the LTS module which allows users to draw LTSs). We omit the details
here. Besides, creating this TA module involves 4 steps. In total, users only need to implement 7 classes to create a module, i.e., 2
interface classes, 1 parser class, 3 language related components and 1 state
interface. With the basic understanding of model checking and PAT tool design,
we finish the TA module within a month.