Академический Документы
Профессиональный Документы
Культура Документы
e-mail : {herzig,ivan}@irit.fr
!
tionnant pas d’action et qui expriment les contraintes est chargé, alors après tirer la dinde est morte. Un autre
qui doivent être respectées dans chaque état possible du exemple est Poss(attirer; s) enmarche(do(attirer; s)) :
monde. le résultat d’attirer la dinde est qu’elle se met en marche.
En regardant une description de domaine comme un logi- Lois d’inexécutabilité Le projet de descriptions de do-
ciel, on peut imaginer son organisation d’un point de vue maine doit aussi prendre en compte l’expression des qual-
orienté-objet et en faire une sorte de diagramme de classes. ifications des actions, c’est-à-dire les conditions sous
Ceci est illustré par la figure 1 qui montre les relations entre lesquelles une certaine action ne peut pas être exécutée du
les différents types d’entités. tout. Une loi d’exécutabilité pour l’action a est de la forme
Une description de domaine consiste d’une description des
effets des actions, leurs non-effets, exécutabilités, inexé- ( ) ! :Poss( )
s a; s
cutabilités et aussi des lois statiques du domaine. Parmi
les effets des actions, on peut distinguer les effets directs où (s) est une formule simple d’état sur la situation s. Par
et les effets indirects (ramifications). Selon la terminolo- :
exemple, arme(s) !: Poss(tirer; s) établie que tirer ne
gie orienté-objet, un effet direct est un effet, le même étant peut pas être exécuté si on n’a pas d’arme.
vrai pour les effets indirects. Les effets, les non-effets, les
Lois statiques Les approches prenant en compte les ef-
exécutabilités, les inexécutabilités et lois statiques sont des
fets indirects des actions utilisent des formules carac-
types particuliers de descriptions de domaine.
térisant les propositions invariables à propos du monde et
XHHXHXHXXXX
description de domaine qui déterminent l’ensemble d’états possibles. Une loi sta-
H XX !
tique est une formule simple d’état sur un terme de situa-
HH
eff. tion s. Comme exemple, enmarche(s) vivant(s) dit que
direct indir.
si une dinde marche, alors elle est vivante [11].
non-eff. exéc. inexéc. stat.
Lois d’exécutabilités Qu’avec des lois statiques et
Figure 1: « Diagramme de classes » des modules en projet de descrip-
d’effets on ne peut pas garantir que tirer est exécutable si
tions de domaine. Les liens représentent des relations est-un.
!
on a une arme. Une loi d’exécutabilité pour l’action a est
de la forme (s) Poss(a; s), où (s) est une formule
Les non-effets des actions sont liés au problème du dé-
cor [7], et les effets indirects au problème de la ramifica- simple d’état sur s. Par exemple arme(s) !
Poss(tirer; s)
tion [1]. Ici nous faisons abstraction de ces problèmes-là établie que l’on peut tirer pourvu que l’on aie une arme, et
et supposons que nous avons une relation de conséquence Poss(attirer; s) que la dinde peut toujours être attirée.
logique assez puissante pour en dériver les conclusions at- Descriptions de domaine Nous regroupons les quatre
j
tendues. On suppose donné une relation de conséquence types d’entités définies ci-dessus de la façon suivante : pour
« dopée » t avec laquelle tous les axiomes de décor et ef- une action a, E a est l’ensemble de ses lois d’effet, Inexa
fets indirects peuvent être dérivés, et on l’utilise désormais. celui de ses lois d’inexécutabilité, et Exea est l’ensemble
de ses lois d’exécutabilité. Stat dénote l’ensemble des
j !
(Pour une approche différente, regarder [3].) Par exemple
nous avons tchargé(s) chargé(do(attendre; s)) (c’est- lois statiques du domaine. Donc E a , Exea et Inexa ,
à-dire attendre ne change pas le statu de chargé), et pour chaque a, et Stat sont les modules naturels que l’on
8 9
< enmarche(S0 ); = considère dans la description d’un domaine. S
enmarche(s) vivant(s); ! jt:enmarche(do(tirer )) Pour simplifier
S la notation, onSdéfinie E = E a ,
: Inex = Inexa , et Exe = Exea . Nous supposons
; S0
: vivant(do(tirer; s))
;
que tous ces ensembles sont consistants.
(tirer a l’effet indirect de que la victime ne marche plus.) En rappelant notre modélisation orienté-objet d’une de-
On s’intéresse, donc, aux effets directs (désormais effets), scription de domaine, on peut voir E , Exe, Inex et
inexécutabilités, exécutabilités et lois statiques. Cela nous Stat, respectivement, comme des « instances » des classes
introduisons formellement dans ce qui suit. effets directs, inexécutabilités, exécutabilités et lois sta-
Lois d’effet Les approches logiques pour le raison- tiques que l’on a présentées au début de cette section. La
nement sur les actions contiennent des expressions qui met- figure 2 illustre cette caractérisation.
Une description de domaine D est un tuplet de la forme
tent en relation chaque action et ses effets. On suppose que
tels effets peuvent aussi être conditionnels. Donc, une loi hE ; Inex; Exe; Stat . i
d’effet pour l’action a est de la forme
3 Description de domaine modulaire
Poss(a; s) ! (( ) ! (do(
s a; s ))) Si l’information d’un module n’est pas mélangée avec celle
où (s) est une formule simple d’état sur la situation s, et des autres, on peut espérer que des effets collatéraux in-
(do(a; s))) une formule simple d’état sur do(a; s) [6]. désirables dûs à des modifications ultérieures sont moins
P@@PPPP
description de domaine
E boire entraîne (sucre(s) sel(s)) ^ !:
Poss(boire; s).
effets
@ PP
exécutabilités inexec. lois statiques
Cela veut dire que de E boire on n’obtient pas que des
lois d’effets, mais aussi des inexécutabilités. Donc, E boire
n’est pas si cohésif que l’on croyait.
direct Exe Inex Stat Une façon d’augmenter la cohésion d’un module de lois
E d’effet c’est spécifier complètement les préconditions des
effets de chaque action. Par exemple, si on considère la
Figure 2: « Instances » des modules d’une description de domaine. version affaiblie de E boire suivante
8
> !
Poss(boire; s)
9
>
probables de se propager vers d’autres parties de la de-
E boire =>
>
< (sucre(s)^ : !
sel(s)) content(do(boire )) =
>
;s ;
: Poss(boire ) !
0
scription de domaine. Le même on peut dire sur le test
> >
>
(sel( ) ^ :sucre( )) ! :content(do(boire )) ;
;s
de consistance si au delà d’être séparés les modules sont s s ;s
aussi projetés de façon que leur interaction soit minimisée.
Comme on a vu, en génie du logiciel on évalue la modu- on garantie une cohésion plus grande que celle de départ.
larité à travers deux critères qualitatifs : la cohésion, qui On résume cela dans le principe de projet suivant :
indique la « force interne » d’un module, et le couplage,
qui montre l’interdépendance relative entre des modules P1. Cohésion maximale : Chaque module d’une descrip-
différents. Ces notions-là sont assez informelles et floues, tion de domaine doit être conçu de façon à maximiser
même en génie du logiciel, et ne peuvent pas être mesurées sa cohésion.
de façon objective. Néanmoins, nous les exploitons ici
lorsqu’on les applique dans l’analyse des descriptions de 3.2 Couplage
domaine, et montrons que ces concepts informels du génie Le concept de couplage évalue à quel point un module est
du logiciel peuvent s’avérer utiles pour le test de consis- attaché ou dépendant d’autres modules.
tance de plusieurs configurations différentes des modules. On définie couplage d’un ensemble de formules comme
3.1 Cohésion le tant d’interaction qui est nécessaire entre le module en
question et les autres pour en dériver une formule d’un
En général la cohésion est conséquence directe de la modu- type en particulier. Interaction, dans notre sens, veut dire
larisation, et son évaluation dépend surtout des entités que partage de formules logiques. Le moins d’interaction entre
l’on prend en compte lorsqu’on formalise un domaine. des modules, le moins couplés ils sont. Comme exemple,
Quand on parle d’ensembles de formules logiques on prend considérons la description de domaine D1 qui suit :
! enmarche(do(attirer )) 9=
par cohésion à quel point un module logique est simple, 8
bien défini, tout en considérant les différents types de for- < Poss(attirer; s) ;s ;
:Poss(tirer; s) et arme(s) !
Poss(tirer; s), des formules Pour en dériver la loi statique enmarche( ) ! :mort( ),
s s
de deux types différents. Alors, on dit que cet ensemble on a besoin que de Stat1 , c’est-à-dire aucun autre module
a une basse cohésion, puisque tout seul il sert à dériver
!:
est strictement nécessaire pour que cela se produise. Par
des exécutabilités et des inexécutabilités. Une meilleur ap- contre, pour en conclure mort(s) Poss(attirer; s) on a
proche serait de le décomposer dans les deux suivants : besoin de Stat1 et Inex1 tous les deux.
Inextirer = f:arme(s) ! :Poss(tirer; s)g
Des descriptions totalement découplées ne sont pas com-
munes dans des applications pratiques. Pour l’exemple ci-
Exetirer = farme(s) ! Poss(tirer; s)g
dessus, il semble être impossible de diminuer l’interaction
entre Stat1 et Inex1 sans que cela ne rende la description
Cohésion totale n’est pas toujours facile à obtenir. Sup- presque inutile. Cependant, si Exe1 dans l’exemple con-
posons, par exemple, une situation où on raisonne à propos tenait Poss(attirer; s), alors cela changerait tout : dans ce
des effets de boire une tasse de café : cas-là, avec Inex1 on dériverait la loi statique vivant(s),
mais celle-ci n’est pas dérivable de Stat1 tout seul. C’est-
8
> !
Poss(boire; s)
9
>
>
!
< (sucre(s) content(do(boire; s)); >
à-dire qu’un niveau plus grand d’interaction entre ce mod-
=
E boire => ule et les autres est nécessaire pour aboutir à cela. Donc
: Poss(boire ) !
> >
> on dirait qu’il y a un haut couplage entre les composants
(sel( ) ! :content(do(boire )) ;
;s
Inex ni Exe entraîne tout seul des lois statiques. En plus, E = : Poss(tirer ) !
2
(chargé( ) ! :vivant(do(tirer ))) ;
;s
s ;s
on a les résultats suivants :
j ! (( ) ! (do(
Théorème 4.2 2
Si Inex tPoss(a; s)
;s ;s
))),
j ! :( ).
s a; s
à-dire dans toutes les situations, après attirer la dinde elle
alors Inex tPoss(a; s) s
est vivante :
c’est-à-dire si Inex entraîne une exécutabilité, alors elle
est un théorème de la logique de base ; si il entraîne une
E 2 ; Stat2 jtPoss(attirer; s) ! vivant(do(attirer; s))
loi d’effet, celle-ci est superflue. Des versions pour Exe
Maintenant, comme nous avons que D2 t vivant(s) j: !
peuvent aussi être énoncées.
Les choses deviennent plus compliquées lorsqu’il s’agit de
:
vivant(do(attirer; s)), le statu du fluent vivant n’est
j ^: !
pas modifié par l’action attirer, ce qui fait que
l’on aie E 2 ; Stat2 t(Poss(attirer; s) vivant(s))
l’ensemble de lois d’effets. D’un côté on a
j: !:
vivant do attirer vivant do attirer
de cela il suit que D2 t vivant(s) Poss(attirer; s),
(c’est-à-dire les exécutabilités dérivés de E sont des
j6 : ! :
c’est-à-dire la dinde ne peut pas être attirée si elle morte.
Inex Stat t ( ) (attirer; s),
: !
théorèmes de la logique). Mais 2 ; 2 vivant s Poss
donc le principe P2-1 est violé. La formule vivant(s)
j6
Théorème 4.4 E t(s), pour toute formule simple :
Poss(attirer; s) est un exemple de ce que l’on appelle une
d’état (s). inexécutabilité implicite.
5.2 Pas de loi statique implicite faire autrement : de la même façon que c’est pas possible
Les lois d’exécutabilités augmentent le pouvoir expressif d’écrire des programmes complètement découplés, on ne
du langage, mais par contre peuvent rentrer en conflit avec peut pas avoir de descriptions de domaines totalement dé-
les inexécutabilités. Par exemple, soit D3 tel que E 3 = couplées (à moins que l’on se restreigne à des domaines
E 2 , Inex3 = f:
vivant(s) ! : g
Poss(attirer; s) , sans ramifications, comme dans [8]).
f g
Exe3 = Poss(attirer; s) , et Stat3 = Stat2 . (Ob- On peut argumenter que des conséquences non-intuitives
dans des descriptions de domaine sont dues plutôt à des ax-
j
servez que le principe P2-1 est satisfait.) On en conclue
Inex3 ; Exe3 tvivant(s) : la dinde est immortelle ! Cela iomes mal écrits qu’au manque de modularité. Certes, mais
est une loi statique implicite, car vivant(s) n’est pas une ce que l’on a présenté ici c’est le cas où rendre une descrip-
conséquence de Stat3 tout seul : P2-2 est violé. tion de domaine modulaire nous donne un outil pour dé-
L’existence de lois statiques implicites est donc un indice tecter au moins quelques de tels problèmes et les corriger.
de que les exécutabilités sont trop fortes : dans notre exem- (On ne se propose pas à corriger des axiomes mal écrits
ple, on a eu tort d’avoir supposé que attirer est exécutable d’une fois pour toutes. Pour cela, dans [2] on présente une
dans n’importe quel contexte. Sinon, il se peut aussi que méthode de mise-à-jour de théories d’action.) Au delà de
de leurs côté les inexécutabilités sont trop fortes, ou bien ça, avoir des entités séparées et contrôler leur interaction
que les lois statiques elles-mêmes sont trop faibles. permet de mieux localiser des éventuels problèmes, ce qui
peut être crucial pour des applications d’intérêt pratique.
6 Conséquences de la modularité
References
Vérifier si une description de domaine satisfait les
principes P2-1–P2-2 peut se faire avec une adaptation [1] J. J. Finger. Exploiting constraints in design synthe-
du matériel sur le sujet présent dans la littérature [3, 5]. sis. Thèse de Doctorat, Stanford University, 1987.
Cependant nous ne plongeons pas là-dedans maintenant et [2] A. Herzig, L. Perrussel, et I. Varzinczak. Elaborating
juste présentons les principaux résultats que l’on obtient domain descriptions. Proc. ECAI’06, Riva del Garda,
lorsque l’on considère des descriptions de domaine satis- 2006. IOS Press.
faisant les principes de projet que l’on a proposé.
Etre modulaire s’avère une propriété utile des descriptions [3] A. Herzig et I. Varzinczak. Domain descriptions
de domaine : au delà d’être une directive de projet qui should be modular. Proc. ECAI’04, pages 348–352,
aide à éviter des erreurs, elle clairement sert à restreindre Valencia, 2004. IOS Press.
l’espace de recherche, ce qui rend le processus de raison- [4] A. Herzig et I. Varzinczak. Cohesion, coupling and
nement plus simple. Pour voir, si D est une description the meta-theory of actions. Proc. IJCAI’05, pages
modulaire, alors, sa consistance se résume à celle de Stat : 442–447, Edinburgh, 2005. Morgan Kaufmann.
Théorème 6.1 Si D n’a pas de loi statique implicite, alors
j?
D t ssi Stat = . j ? [5] A. Herzig et I. Varzinczak. On the modularity of the-
ories. Advances in Modal Logic, volume 5, pages
Théorème 6.2 Si D n’a pas de loi statique implicite, alors 93–109. King’s College Publications, 2005. Papiers
j ! !
D tPoss(a; s) ((s) (do(a; s))) ssi selectionés de AiML 2004.
j ! !
E a ; Inexa ; Stat tPoss(a; s) ((s) (do(a; s))): [6] F. Lin. Embracing causality in specifying the indirect
effects of actions. Proc. IJCAI’95, pages 1985–1991,
Cela veut dire que sous P2-2 on a modularité à l’intérieur
de E aussi : pour déduire les effets d’une action a on n’a
1995.
pas besoin de prendre en compte les lois pour les autres ac- [7] J. McCarthy et P. J. Hayes. Some philosophical
tions. Des versions pour exécutabilités et inexécutabilités problems from the standpoint of artificial intelli-
peuvent aussi être énoncées. gence. Machine Intelligence, volume 4, pages 463–
502. 1969.
7 Conclusion
[8] F. Pirri et R. Reiter. Some contributions to the
On a établie un lien entre génie des connaissances et génie
metatheory of the situation calculus. Journal of the
du logiciel en montrant que des concepts et techniques
ACM, 46(3):325–361, 1999.
développés pour celui-ci sont aussi utiles dans la concep-
tion de descriptions de domaine. En particulier, avec les [9] R. S. Pressman. Software Engineering: A Practi-
concepts de cohésion et couplage, on a obtenu de meilleurs tioner’s Approach. McGraw-Hill, 1992.
critères pour l’évaluation de descriptions de domaine.
Sous un premier regard, à cause de l’interaction entre Stat [10] I. Sommerville. Software Engineering. Addison Wes-
et les autres modules, on pourrait dire que des descrip- ley, 1985.
tions de domaines formalisées de tel façon ne minimisent [11] M. Thielscher. Computing ramifications by postpro-
pas le couplage. Toutefois, étant donné la structure intrin- cessing. Proc. IJCAI’95, pages 1994–2000, 1995.
sèque de Stat, il faut bien noter que l’on ne pourrait pas