petko valtchev diro université de montréal e-mail: [email protected] algorithmes de...
TRANSCRIPT
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]
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’abstractionsIdentification 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 e
X 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 PK 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 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?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
Exemple: réingénierie de hiérarchies de Exemple: réingénierie de hiérarchies de classes OO classes OO
Object
atatPutCollection
isEmptysizeincludesaddremove
SequenceableColl.
atAllPutfirstlastremove
ArrayedColl.add
LinkedList
addFirstaddLast
atAllPutatPutremove
Set
minus
atPutat
Bag
addWithOcc
atPutat
Dictionary
keys
removevalues
Les collections dans ObjectWorks en Smalltalk
6Exemple : les Collections* de Exemple : les Collections* de SmallTalkSmallTalkExemple : 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 Array
isEmptysizeincludesaddremoveminusaddWithOccurencesatatPutatAllPutfirstlastadFirstaddLastkeysvalues
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)Le 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 travailMotivations 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
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 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 GaloisContextes Formels Contextes Formels && Correspondances de Galois Correspondances de Galois
Formal Context [Wille82] relation d’incidence objets - attributs
11
(O) (P)
g
f
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} correspondancede 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 FormelsTreillis 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 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 X
OP
(Ø,P)LK
4 X X X X
1 2 3
X X XX X X X X
a b c d eO PK 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 contextesFragmentation de contextesFragmentation de contextes
Apposition =
reconstitue le contexte
après éclatement
a b c
1234
d e f g h
5678
i
xxxxxxxx
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ésVisualisation 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 existantRé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 Plan de la présentationPlan de la présentation
Motivations
L’existant
Approche pour l’assemblage de treillis
Retombées algorithmiques
17
18
Construction en trois étapes Construction en trois étapes Construction 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É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É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 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 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 treillisAlgorithmes 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 PK 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)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 PK L
L1
L2
Extraction de treillis partiels
d’un treillis global
L
X
ComplexitéComplexité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 Total
Parcours 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érimentationsExpé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
CP
U T
ime
in S
ec
.
Nourine & Raynaud
Bordat
Divide&Conquer
Quelques projets applicatifsQuelques projets applicatifsQuelques 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
BilanBilanBilanBilan
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...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