25.12.2014 Views

On improving efficiency of model checking through systematically ...

On improving efficiency of model checking through systematically ...

On improving efficiency of model checking through systematically ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

the size <strong>of</strong> the state space based on the amount <strong>of</strong> memory usage is shown<br />

hereafter.<br />

State space explosion has been a well-known problem <strong>of</strong> <strong>model</strong> <strong>checking</strong><br />

in practice. Therefore, it is not a surprise that we could not successfully<br />

verify a <strong>model</strong>. However, experimental results from verifying <strong>model</strong>s <strong>of</strong><br />

the Fischer’s protocol and Subway system are still disappointing since Nbac<br />

could prove the same <strong>model</strong>s in a short time. We then figure out the reason<br />

for such large state space to answer the second question posed in Section<br />

1.3 <strong>of</strong> this thesis.<br />

Wetriedtogetaviewonthesizeandgrowth<strong>of</strong>thestatespaceusinga<br />

practical method. We used the simulation utility <strong>of</strong> Uppaal to see how the<br />

system worked. Then we found the execution trace looped around the good<br />

location. First, we measured the memory usage with respect to the number<br />

<strong>of</strong> iterations around the good location. This measurement was to estimate<br />

the size <strong>of</strong> state space <strong>of</strong> the <strong>model</strong> and to see how it grew after every<br />

iteration. To measure the memory usage for that purpose, we modified the<br />

resulting Uppaal <strong>model</strong> manually by adding a counter so that if the number<br />

<strong>of</strong> iterations around the good location exceeded the constant specifying the<br />

maximum number <strong>of</strong> iterations allowed, the system would stop and thus<br />

the verification could finish. The implementation <strong>of</strong> the abovementioned<br />

mechanism is illustrated in Figure 5.1.<br />

counter < N<br />

counter := counter + 1,<br />

x:=x+1<br />

init good bad<br />

success<br />

counter >= N<br />

Figure 5.1: Adding a counter to restrict the number <strong>of</strong> iterations<br />

In Figure 5.1, N is a constant specifying the maximum number <strong>of</strong> iterations<br />

allowed. From the measurements on the verification <strong>of</strong> the modified<br />

<strong>model</strong>, we found that the memory usage grew quickly as we increased constant<br />

N. Figure 5.2 presents the memory usage <strong>of</strong> the experiment for the<br />

subway <strong>model</strong>. The maximum N for which the verification could be finished<br />

is 19.<br />

The measurement showed that the state space created from the abstract<br />

50

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!