4.2 Solution
(1) Identification Method
The meaning of an event used in POTS is well
known. But, the meaning of a new event used in
supplementary services cannot be known
beforehand. The meaning of an event commonly
used in two supplementary services causes the
problem in judging if Condition 2 described in
section 3.2 is satisfied. But, most of those events are
used in POTS. Therefore, in this paper, targeted
events are restricted to those used in POTS. The
meaning of those events is classified, and a method
for identifying the meaning of events is discussed.
Because of space limitation, a method for
identifying the meaning of dial(A,B) is discussed
here.
For POTS, there is a specification that represents
a state transition: when a service state is
{dialtone(A), idle(B)}, if dial(A,B) occurs, the
service state transits to calling(A,B). This
specification can be taken as, when terminal B is
idle, if a call from terminal A reaches terminal B,
terminal A calls terminal B. Besides, only this
specification represents a state transition to
calling(A,B). That is, ‘when terminal B is idle,
terminal A calls terminal B’ is a necessary and
sufficient condition for the meaning of an event,
which is a trigger for initiating this specification, to
be that a call from terminal A reaches terminal B.
Thus, if calling(A,B) is described in the next state of
the specification, after execution of the specification,
arguments X and Y of dial(X,Y) which means ‘a call
from terminal X reaches terminal Y’, are A and B,
respectively.
Thus, if calling(A,B) is described in the next
state of a given specification s (in this case, s is
called as s1 ) which has dial(X,Y) as an event, after
execution of s, dial(X,Y) should be considered to be
changed to dial(A,B).
An identification method in the case where
calling(A,B) is not described in the next state of s is
discussed in (2).
(2) calling(A,B) is not described in specification s
A method for identifying the meaning of an
event in the case where calling(A,B) is not described
in the next state of s, s2. A concrete example where
calling(A,B) is not described in s2 is explained.
s2, which defines a state transition when terminal
C registered as a forwarding terminal in CFV is not
idle, is shown in Figure 4. Figure 4 is explained.
Suppose terminal B has CFV activated and has
registered terminal C as a forwarding terminal.
When terminal C is not idle (denoted by
not[idle(C)]), if terminal A dials terminal B, terminal
A receives a busy tone (denoted by busy(A)). Thus,
when s2 is executed, a call from terminal A reaches
terminal C. Thus, the meaning of the event after
execution of s2 should be regarded as not dial(A,B)
but dial(A,C).
dial(A,B)
C
not[idle(C)]
A
cfv(B,C)
dialtone(A)
B
Current state
A
cfv(B,C)
B
Next state
C
busy(A)
not[idle(C)]
dial(A,B)
C
not[idle(C)]
A
cfv(B,C)
dialtone(A)
B
Current state
A
cfv(B,C)
B
Next state
C
busy(A)
not[idle(C)]
Figure 4: A specification of CFV (in case terminal C is not
idle).
However, since calling(A,C) is not described in the
next state of s2 shown in Figure 4, the identification
method proposed in (1) above cannot identify the
meaning of dial(X,Y).
But, in general, there are two cases for
terminating terminal, idle and not idle, the service
specification should have both specifications.
Thus, when calling(A,C) is not described in the
next state of s2, by finding out another specification,
s3, which has calling(A,C) in the next state, the
meaning of the event can be identified as dial(A,C).
(3) An event identification method
For a method for identifying the arguments X
and Y in dial(X,Y), after execution of specification s
that has dial(A,B) as an event, discussion (1) and (2)
mentioned above are summarized. When
calling(P,Q) is described in the next state of s (s1),
dial(X,Y) after execution of s1 is regarded as
dial(P,Q). Here P and Q represent arbitrary
terminals. When calling(P,Q) is not described in the
next state of s (s2), identify another specification s3,
that has dial(X,Y) as an event and calling(P,Q) is
described in its next state in the service specification
to which s2 belongs. If s3 is found, dial(X,Y) after
execution of s2 is regarded as dial(P,Q). If s3 is not
found, since arguments in dial(X,Y) cannot be
identified, the arguments in dial(X,Y) after
execution of s2 are regarded as unchanged.
Consequently, there is a possibility that real
interactions are not detected and/or seeming
interactions are mis-detected. This possibility is
evaluated in section 6.
A DETECTION METHOD OF FEATURE INTERACTIONS FOR TELECOMMUNICATION SERVICES USING NEW
EXECUTION MODEL
193