f évrier 2002
DESCRIPTION
Algorithmes de construction de treillis de Galois pour la résolution de problèmes en génie logiciel Petko Valtchev DIRO Université de Montréal e-mail: [email protected]. F évrier 2002. X X X X. X X X. X X. P. a b c d e. X X X X. O. P. - PowerPoint PPT PresentationTRANSCRIPT
Algorithmes de construction de treillis de Galois
pour la résolution de problèmes en génie logiciel
Petko ValtchevPetko Valtchev
DIRODIROUniversité de MontréalUniversité de Montréal
e-mail: [email protected]: [email protected]
Février 2002
Identification aIdentification automatiqueutomatique d’abstractions d’abstractions
Analyse Formelle de Concepts (AFC) approche algébrique pour la formation d’abstractions potentiellement utiles.
2
1 2 3 4
a b c d eX X XX X X X XX X X X
O PObjets
Propriétés
X X
XXX
X XX X
X X X X
Concepts Treillis
4 X X X X
Notre problématique: algorithmique flexible de construction
1 2 3
X X XX X X X X
a b c d eO P K L L+
5 6
X X X X X X
a b c d eO P K L
Plan de la présentationPlan de la présentation
Motivations
L’existant
Approche pour l’assemblage de treillis
Retombées algorithmiques
3
Pourquoi s’y intéresser?Pourquoi s’y intéresser?
Formation de groupes cohérents en génie logiciel (GL) Toutes les étapes du cycle de vie concernées, surtout la ré-ingénierie
Ex. Entités = Variables, Objets (instances), Classes;
Ex. Propriétés = Procédures globales, Attributs/méthodes de classe; Ex. Groupes = Modules/Structures d’objets, Classes, Classes abstraites; Ex. Problèmes = Migration de code (semi-)automatique, Modularisation,
Restructuration de hiérarchies de classes,
Reconfiguration de fichiers source, etc.
Avantages de l’approche par treillis groupe = concept formel, fondé mathématiquement propriétés intéressantes de la structure = bornes inf et sup solution exhaustive = tous les groupes
4
5Exemple: réingénierie de hiérarchies de Exemple: réingénierie de hiérarchies de classes OO classes OO
ObjectatatPutCollection
isEmptysizeincludesaddremove
SequenceableColl.atAllPutfirstlastremove
ArrayedColl.add
LinkedListaddFirstaddLast
atAllPutatPutremove
Setminus
atPutat
BagaddWithOcc
atPutat
Dictionarykeys
removevalues
Les collections dans ObjectWorks en Smalltalk
6Exemple : les Collections* de Exemple : les Collections* de SmallTalkSmallTalk
* Classes de collections de la librarie ObjectWorks de (sous-ensemble) [Godin et al. 98]
Set Bag Dictionary Linked List ArrayisEmptysizeincludesaddremoveminusaddWithOccurencesatatPutatAllPutfirstlastadFirstaddLastkeysvalues
XXXXXX
XXXXX X
XXXX X XX XX
XXXXX X X X XX
XXX XXXX X
(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)(16)
Method Selectors code
7Le treillis de Galois (de concepts)Le treillis de Galois (de concepts)
D
A
L
S B
A,D
D,L
A,L
D,S
L,B,S
D,L,B,S
A,D,L
A,D,L,B,S
Indexed Extensible Collection
Motivations du travailMotivations du travail Constat: les outils algorithmiques des treillis ne répondent pas aux
caractéristiques du processus de production de logiciel Ex. multiples acteurs, grands volumes de données, profusion des
résultats intermédiaires (décomposition et recomposition), évolution des paramètres, etc.
algorithmes actuels [Ganter 84], [Bordat 86], [Nourine&Reynaud 99]: traitement par lot, centralisé, génération du treillis entier
Objectif: conception d’algorithmes flexibles pour étendre la porté de AFC
premiers pas: algos incrémentaux [Godin 86], élagage [Dicky et al. 96],
Notre approche: « opérationaliser » les constructions de l’AFC
divers produits / décompositions de treillis
fragmentation/concaténation de relations binaires
8
Un problème concret: l’intégration de Un problème concret: l’intégration de perspectives perspectives
Cadre: « separation of concerns » dans les systèmes OO complexes
« perspective » = ensemble de fonctionnalités inter-connectées transcendant le découpage en classes
Approches: sujets [Harisson 93], aspects [Kiszales 97], vues [Mili 99], etc.
Perspectives du domaine: séparation du comportement des objets
Ex. Collections: sujets Consultation (size,…) et Modification (add,…)
hiérarchie de classes propre au sujet
Intégration de sujets/aspects = fusion de hiérarchies
Problème algorithmique:
va et vient entre hiérarchies partielles (sujet) et globale (système)
« assemblage » de treillis partiels / décomposition du treillis global
9
Plan de la présentationPlan de la présentation
Motivations
L’existant
Approche pour l’assemblage de treillis
Retombées algorithmiques
10
Contextes Formels Contextes Formels && Correspondances de Galois Correspondances de Galois
Formal Context [Wille82] relation d’incidence objets - attributs
11
(O) (P)
gf
f(X) = {y P x X, x y } = X'g(Y) = {x O y Y, x y } = Y'
1 2 3XX
XX
XXX
abcd
4 5 6X
X
XX
X
XXXX
7X
XX
8X
XX
P
O
Ex.{5, 7}' = {a, d} {b, d}' = {5, 6} correspondance
de Galois Y f(X) iff X g(Y)
{a, d}' = {5, 6, 7, 8}operateurs de ferméture
X'' = g º f(X)
Y'' = f º g(Y){5, 7}'' = {5, 6, 7, 8}{b, d}'' = {a, b, d}
Ensembles fermés X = X'', Y = Y''{a, d}'' = {a,
d}{5, 6}'' = {5, 6}
K= (O, P, )
Treillis de Concepts FormelsTreillis de Concepts Formels 12
Concept Formel (X,Y)
X O, Y P; X'' = X, Y'' = Y X = Y', Y = X'
Ordre Partiel
(X1, Y1) (X2, Y2) iff X1 X2
( Y2 Y1)
(sub-concept of)
Ex.(57, ad) n’est pas un concept
X - extent, Y - intent
(5678, ad) est un concept
Operateurs de treillisBasic FCA theorem [Wille 82]
meet - jJ (Xj, Yj) = (jJXj, (jJ Yj)'')
join - jJ(Xj, Yj) = ((jJXj)'', jJ Yj)(6,abcd)
(56,abd)(678,acd)(36,abc)
(12356,ab)(34678,ac)
(5678,ad)
(12345678,a)
(6,abcd)
(36,abc) (56,abd)(34678,ac) (5678,ad)
(12356,ab)
(12345678,a)
(678,acd)
B(O,P,)
Algorithmes Construisant le Treillis Algorithmes Construisant le Treillis
Bordat
13
Godin
Nourine & Raynaud
Start Next
T(L) = (O'',O') (X,Y) génère les lower covers
(X1,Y1) … (Xj,Yj) Xj – sous-ens. de X maximaux fermés
({o},{o}')
1
a b c d e
X X XO P
(Ø,P)LK
4 X X X X
1 2 3
X X XX X X X X
a b c d eO P K L
Fi+1= Fi { {oi+1}' Y | Y Fi }
2. (L) = (A',A'')
F0= Ø1. B
(X,Y) génère les upper covers
(X1,Y1) … (Xj,Yj) Yj - {o}' Y (o O/X)
14Fragmentation de contextesFragmentation de contextesApposition =
reconstitue le contexte
après éclatement
a b c1234
d e f g h
5678
ixxxxxxxx
xxx
xx
xx
xxx
xxxx
x
xx
x
xxxx
xxx x
K= (O, P, )
(6,abcd)
(56,abd) (678,acd)(36,abc)
(12356,ab) (34678,ac) (5678,ad)
(12345678,a) #1
#2#3
#4
#5#6
#7
#8
K1= (O, P1, OP1)
P1
L1
(4,ghi)
(234,gh)
(1234,g)
(568,f)(7,e)
#1
#4
#3#2#5
#6
#7 ( ,efghi)
(12345678, )
K2= (O, P2, OP2)
P2
L2
K= K1 | K2
15Visualisation par diagrammes imbriquésVisualisation par diagrammes imbriqués
L1 L2
treillis partiels
nœuds vide
nœuds image
L1 L2
a
db c
gh
4i
21
3
6
5 7 8
f
e
#1
#2#3
#6
#8
#7
#4
#5
L
treillis global
Résultats existantRésultats existant 16
L1 L2
L
Aucun algorithme connu (fusion, construction diagramme imbriqué)
Deux homorphismes liant L1 L2 avec L :
((X,Y)) = (((YP1)'YP1((YP2)'YP2))
: L L1 L2; « projection » de l’intent Y sur P1 et P2 (nœuds pleins)
((X1,Y1), (X2,Y2)) = ((X1X2)(X1X2)')
: L1 L2 L ; intersection des extents X1 et X2
Plan de la présentationPlan de la présentation
Motivations
L’existant
Approche pour l’assemblage de treillis
Retombées algorithmiques
17
18Construction en trois étapes Construction en trois étapes
L L1
L2
Identifier concepts
ac
Calculer intents & extents Détecter enfants immédiats
19Étape un & deuxÉtape un & deux#2
#6
#4
abdf
Prop. (X,Y) = ((X1,Y1),(X2,Y2))
Y = Y1 Y2 et X = X1 X2
c
Prop. (c1,c2) -1(c)
R(c1,c2) = Ext(c)
Ex. c#3=(56,abd) c#6=(568,f)
[ (c#3,c#6) ]R= -1(c) =
{ (c#3,c#6), (c#1,c#6), (c#3,c#2) }
R(c1,c2) = 56
Def. R: L1 L2 (O)
R(c1,c2) = Ext(c1) Ext(c2)
Prop. (c1,c2) = (c) {(c1,c2)} = Min( -1(c))
20Étape troisÉtape trois
#3
#7#5
ac
c
acde
acdf
acgh acd
abc
(LowerCovers(c1, c2))
Prop. (CN) ĉ c (c1, c2) LowerCovers( (c)), (c1, c2) = ĉ.
Prop. (CNS) ĉc ĉ Max( (LowerCovers( (c))).
Max
Algorithme d’assemblage de treillis Algorithme d’assemblage de treillis
Procedure Build_Global_Lattice
Input: L1= B1 1 , L2= B2 2 /* Couple of lattices */Output: L = B /* The lattice of apposition context */
B := Ø
1. SORT(B1) ; SORT(B2) /* sort of concept sets in an ascending order */2. For each couple (ci, cj) in B1 x B2
2.1. E := Ext(ci) Ext(cj) /* computation of R */
2.2. c := Find_Psi(E, ci, cj) /* tentative retrieval of based on R */
2.3. If c = NULL then
c := Make_Concept(E, Int(ci) Int(cj))B := B {c}
Find_LowerCovers (c, ci, cj) /* detection of predecessors in L */
21
Plan de la présentationPlan de la présentation
Motivations
L’existant
Approche pour l’assemblage de treillis
Retombées algorithmiques
22
Algorithmes dérivés: construction du treillisAlgorithmes dérivés: construction du treillis 23
Incrémentale (améliore [Godin et al. 95])
Hybride
(incrémentale/par lot)
1 2 3 4
a b c d e
X X XX X X X XX X X X
O P
X XX X X XX X
X
XX X
X
XX
XX X
. . . . . .
« Diviser-pour-régner »
4 X X X X
1 2 3
X X XX X X X X
a b c d eO P K L L+
5 6
X X X X X X
a b c d eO P K L
Algorithmes dérivés (suite)Algorithmes dérivés (suite)
Maintien de treillis par incrémentation fine Inversion de case de la table
(ajout/enlèvement d’un (o,a) à I)
24
Construction directe du diagramme imbriqué
4 X X X
1 2 3
X X XX X X X X
a b c d eO P K L
L1
L2
Extraction de treillis partiels
d’un treillis global
L
X
ComplexitéComplexité 25
d(L) - degré d’un nœud k - nb d’objets, |O|m - nb d’attributs, |P|O(d(L1) + d(L2))
O(l1 + l2)
Assemblage TotalParcours du produit
Construction treillis
Recherche success.
Recherche valeur Psi
Tri
OrdreÉtape
O(d(L1) + d(L2))m)
O(d(L1)+ d(L2)) m l )
O(d(L1)+ d(L2) + k ) l1 l2)
O( k ( l1 l2 + l m ) )
l - nb de concepts Lli - nb de concepts Li
Hypothèse : croissance linéaire de l sur k ( |L|= O( |O| ) )
Assemblage : O( |L| . |O| . |P| ) ( meilleur algo )Méthode « D&C » : O( |L| . |O| . |P| . log|P| ) (alg. moyen O(|L| . |O|2. |P|))
Problème
Estimer l1 l2
Sur l m( Pb. # P-complet)
ExpérimentationsExpérimentations 26
CPU Time over Concepts Count, DB-Like Files, 30 Att.
0
20
40
60
80
100
120
140
160
180
1000 2000 3000 4000 5000
Object Count
CPU
Tim
e in
Sec
.
Nourine & Raynaud
Bordat
Divide&Conquer
Quelques projets applicatifsQuelques projets applicatifs Analyse du panier du consommateur:
« Construction incrémentale d’une base non-redondante de règles d’association »
Conception OO: « Restructuration de hiérarchies de classes Java en temps réel »
Migration de code procédural vers OO: « Conception d'outils interactifs de détection de structures
d'objets dans un code source procédural »
27
BilanBilan
Stratégie d’assemblage de treillis bien adaptée: aux problèmes d’intégration de vues partielles sur un domaine
à la fragmentation des données et à la distribution du traitement
Cadre pour la conception/test de nouvelles méthodes pour: construction, exploration, composition/décomposition de treillis.
28
I1
I2
I3
LK= (O, P, I)
L1L3
L2
La suite...La suite... Nombreux problèmes algorithmiques
fusion de treillis de types dans les LPOO a typage dynamique extraction de points de vue pertinents d’un treillis global? étude d’autres opérateurs de produit de treillis (sub-direct, tensoriel) construction efficace de tri-lattices (relations ternaires)
Étude et réalisation d’outils basés sur les techniques de treillis analyse et restructuration pour la re-ingénierie
détection de points de vues à partir de code source/spécifications
extraction et factorisation d’information
diagrammes UML, documents XML (suite travail de thèse) moteurs de recherche contextuelle sur la Toile (the Web)
vérification de systèmes dynamiques
détection de états stables dans le temps (tri-concepts temporisés)
29