3 VERIFICATION OF AGENT
BEHAVIOURS
For more than ten years, many papers have focused
on the necessity to bring guarantees on the correct-
ness of multi-agents systems. Indeed, it appears that it
is one of the main reasons explaining the small accep-
tance of MAS in industry (Ahmad and Rahimi, 2009).
Moreover, it is also established that formally verifying
MAS is certainly the adequate solution (Demazeau,
2004).
However, papers dealing with formal specification
of MAS are scarce, for several reasons:
• formally verifying MAS is a very hard problem.
Indeed, formal verification of standard software
is already a complex problem, and solutions pro-
vided by formal methods cannot be applied to
whole huge systems. So, as MAS are more com-
plex systems, trying to formally verifying them
seem vain for many people.
• Most MAS formal verification systems con-
sider verifying the whole system behaviour (as
METATEM for instance (Fisher, 2006)), which
is certainly a too complex task on real-size sys-
tems. On Standard softwares, formal verifica-
tion generally concern only the safety core of the
sofware (Abrial, 1996); So, trying to apply formal
verification techniques to whole MAS is likely to
lead to failure.
• Many formal verification works use a dedicated
specification language that is only used for the
specification and for the verification and then, the
system must be implemented in a traditional pro-
gramming language. As a consequence, they may
be few links between the verified specification and
the implemented program (Ahmad and Rahimi,
2009; Abrial, 1996).
• Trying to reuse standard formal verification meth-
ods to MAS leads to defeat. In particular, the au-
tonomy of agents is not consistent with the main
concepts of these tools: indeed, standard formal
methods rely on the fact that the whole system is
known when the verification is performed (Abrial,
1996). This is not suitable to MAS, where au-
tonomous agents can be part of the system.
• most work so far dealing with formal verification
of MAS rely on model-checking (Raimondi and
Lomuscio, 2004; Kacprzak et al., 2004), which
is not the most suitable choice in most cases. In-
deed, model-checking is a verification mechanism
that is mainly dedicated to finite-state systems, as
it consists in an exhaustive test of the system. But
in multi-agent systems, as agents actions are in-
terlaced, studying the whole set of possible traces
is most of the time not feasible.
GDT4MAS clearly proposes a solution to the first
problem, as it is a method designed to perform formal
verification.
Moreover, when using GDT4MAS, it is easy to
formally specify and verify safety parts, while not
verifying less essential parts. Of course, in this lat-
ter case, the correctness is established under the as-
sumption that non-formalized parts are correct. This
clearly provides a solution to the second problem.
An other important characteristics of GDT4MAS
is that a generalized translation system of a
GDT4MAS specification in any imperative language
using automata has been designed (and formally veri-
fied), and a version for Java as been implemented. So,
the verified specification can be automatically trans-
lated into Java to be executed, or to interact with other
Java programs. As a consequence, the formal speci-
fication need not to be transcripted by hand in a pro-
gramming language.
In addition, as GDT4MAS has been designed to
verify MAS, the autonomy of agents is well taken
into account. Verification of agents are performed
independently of the other agents, and only proofs
depending on agents interactions (based on external
goals) take into account the instances of agent types.
Finally, GDT4MAS relies on theorem proving,
that seems, for us, to be a quite better solution than
model-checking. Indeed, model-checking is well
suited for finite-state systems, which is not true for
MAS. When considering the potential huge number
of agents in a MAS, and the massive distributed as-
pect that it implies, it greatly reduces the potential ap-
plications of techniques relying on model-checking.
To conclude, GDT4MAS proposes a wide-
purpose method, going from the early specification to
the executable code via formal verification.
4 SEPARATION OF
ENGINEERING TASKS
During the whole development process of a software,
several tasks have to be performed, and these tasks
may be devoted to different persons, according to
their skills. In standard software development pro-
cesses, the following tasks are often distinguished:
requirement engineering, design (preliminary and de-
tailed), implementation and test. When dealing with
formal verification, an other task must be added: the
verification task. However, the way the result of each
task is used by the others is often fuzzy.
UsingGDT4MASasaFormalSupportforEngineeringMulti-AgentsSystems
409