290 likes | 375 Views
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: valtchev@IRO.UMontreal.CA. F évrier 2002. X X X X. X X X. X X. P. a b c d e. X X X X. O. P.
E N D
Algorithmes de construction de treillis de Galoispour la résolution de problèmes en génie logicielPetko ValtchevDIROUniversité de Montréale-mail: valtchev@IRO.UMontreal.CA Février 2002
X X X X X X X X X P a b c d e X X X X O P a b c d e 1 2 3 X X X X X X X X O 1 2 3 4 X X X X X X X X X X X X • Notre problématique: algorithmique flexible de construction 4 X X X X L K L+ P a b c d e O 5 6 X X X X X X K L Identification automatique d’abstractions 2 Concepts Treillis Propriétés O b j e t s • Analyse Formellede Concepts (AFC) approche algébrique pour la formation d’abstractions potentiellement utiles.
Plan de la présentation 3 • Motivations • L’existant • Approche pour l’assemblage de treillis • Retombées algorithmiques
Pourquoi s’y intéresser? 4 • 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
Object at atPut Collection isEmpty ArrayedColl. size SequenceableColl. add includes atAllPut add first remove last remove LinkedList Bag Set addWithOcc addFirst minus Dictionary addLast at at remove keys atPut atPut atPut values atAllPut remove Exemple: réingénierie de hiérarchies de classes OO Les collections dans ObjectWorks en Smalltalk
X X X (1) isEmpty X X X X X X (2) X size (3) X includes X X X X X X add (4) X X (5) X X X remove (6) X minus X X (7) addWithOccurences X at (8) X X X atPut (9) X atAllPut (10) X X (11) X first X last X (12) adFirst X (13) X (14) addLast X (15) keys values (16) X Exemple : les Collections* de SmallTalk Set Bag Dictionary Linked List Array Method Selectors code * Classes de collections de la librarie ObjectWorks de (sous-ensemble) [Godin et al. 98]
1,2,3 Indexed Extensible Collection A,D,L,B,S 1,2,3,8 1,2,3,4 A,D,L D,L,B,S 1,2,3,8,11,12 1,2,3,4,6 1,2,3,4,5 1,2,3,4,8 D,L A,L D,S L,B,S 1,2,3,8,9,10,11,12 1,2,3,4,5,6 A S Le treillis de Galois (de concepts) 1,2,3,8,9 A,D 1,2,3,4,6,8,9,15,16 1,2,3,4,5,8,11,12,13,14 1,2,3,4,5,7 D L B 1,..,16
Motivations du travail 8 • Constat: les outils algorithmiques des treillisne répondent pasaux 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 [Godin86], é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
Un problème concret: l’intégration de perspectives 9 • 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: sujetsConsultation (size,…) etModification (add,…) • hiérarchie de classespropre au sujet • Intégration de sujets/aspects =fusion dehiérarchies • Problème algorithmique: • va et viententre hiérarchies partielles (sujet) et globale (système) • « assemblage » de treillis partiels / décomposition du treillis global
Plan de la présentation 10 • Motivations • L’existant • Approche pour l’assemblage de treillis • Retombées algorithmiques
(O) (P) f g f(X) ={y P x X, x  y } = X' g(Y) ={x O y Y, x  y } = Y' correspondance de Galois {5, 7}' ={a, d} {b, d}' = {5, 6} Y f(X) iff X g(Y) {a, d}' = {5, 6, 7, 8} X'' = g º f(X) operateurs de ferméture {5, 7}'' ={5, 6, 7, 8} Y'' = f º g(Y) {b, d}'' = {a, b, d} X = X'', Y = Y'' {a, d}'' = {a, d} {5, 6}'' = {5, 6} Ensembles fermés Contextes Formels & Correspondances de Galois 11 K= (O, P, Â) O Formal Context[Wille82] relation d’incidenceobjets - attributs 1 2 3 4 5 6 7 8 X X X X X X X X a P X X X X X b X X X X X c X X X X d Ex.
B(O,P,Â) (6,abcd) (12356,ab) (36,abc) (678,acd) Ordre Partiel (sub-concept of) (56,abd) (34678,ac) (X1, Y1)(X2, Y2)iff X1 X2 (Y2 Y1) (5678,ad) (12345678,a) (12345678,a) Operateurs de treillis (12356,ab) (5678,ad) Basic FCA theorem[Wille 82] (34678,ac) meet -ÙjÎJ (Xj, Yj) = (ÇjÎJXj,(ÈjÎJ Yj)'') join -ÚjÎJ(Xj, Yj) = ((ÈjÎJXj)'',ÇjÎJYj) (56,abd) (36,abc) (678,acd) (6,abcd) Treillis de Concepts Formels 12 Ex. ConceptFormel (X,Y) (57, ad) n’est pas un concept X O, Y P; X'' = X, Y'' = Y X = Y', Y = X' (5678, ad) est un concept X - extent, Y - intent
(X,Y) génère les lower covers Xj – sous-ens. de X maximauxfermés (X1,Y1) … (Xj,Yj) ({o},{o}') P L a b c d e K O P a b c d e O 1 X X X (Ø,P) K 1 2 3 X X X X X X X X L 4 X X X X 1. B F0= Ø Yj - {o}'ÇY (oÎ O/X) (X1,Y1) … (Xj,Yj) 2. (L) = (A',A'') (X,Y) génère les upper covers Algorithmes Construisant le Treillis 13 Start Next T(L) = (O'',O') Bordat Godin Fi+1= Fi È{ {oi+1}'ÇY | YÎ Fi } Nourine & Raynaud
P1 P2 K1= (O, P1, OP1) K2= (O, P2, OP2) L2 L1 Fragmentation de contextes Apposition = reconstitue le contexte après éclatement K= (O, P, ) i a b c d e f g h 1 x x x 2 x x x x 3 x x x x x 4 x x x x x K= K1 |K2 5 x x x x 6 x x x x x 7 x x x x 8 x x x x
a #1 g L1 L2 h b d c #2 #3 #4 1 2 f i 4 L1 L2 #5 treillis global #6 #7 e L 3 5 7 8 #8 nœuds image 6 nœuds vide Visualisation par diagrammes imbriqués treillis partiels
: LL1L2; « projection » de l’intent Y sur P1 et P2 (nœuds pleins) • : L1L2L; intersection des extentsX1 et X2 ((X1,Y1), (X2,Y2)) = ((X1X2) , (X1X2)') ((X,Y)) = (((YP1)',YP1),((YP2)',YP2)) Résultats existant 16 • Aucun algorithme connu (fusion, construction diagramme imbriqué) • Deux homorphismesliantL1 L2avec L : L1 L2 L
Plan de la présentation 17 • Motivations • L’existant • Approche pour l’assemblage de treillis • Retombées algorithmiques
ac 34678 Identifierconcepts 1 Calculer intents & extents 2 Détecterenfants immédiats 3 Construction en trois étapes L1 L2 L
Def.R: L1 L2(O) R(c1,c2) = Ext(c1) Ext(c2) Prop. (c1,c2) -1(c) R(c1,c2) = Ext(c) abdf 56 Prop. (c1,c2) = (c) {(c1,c2)} = Min(-1(c)) Ex. c#3=(56,abd) c#6=(568,f) Prop. (X,Y) = ((X1,Y1),(X2,Y2)) Y = Y1Y2 et X = X1X2 R(c1,c2) = 56 [ (c#3,c#6) ]R= -1(c) = { (c#3,c#6), (c#1,c#6), (c#3,c#2) } 2 Étape un & deux #2 #4 1 c #6
Prop. (CN)ĉ c (c1,c2) LowerCovers( (c)),(c1,c2) = ĉ. Prop. (CNS)ĉ cĉ Max((LowerCovers( (c))). ac 34678 abc acd acde acdf acgh 34 678 7 68 36 Max (LowerCovers(c1,c2)) Étape trois 3 c #3 #7 #5
ProcedureBuild_Global_Lattice Input:L1= B11, L2= B22 /*Couple of lattices */ Output:L= B /*The lattice of apposition context */ B:= Ø 1. SORT(B1) ;SORT(B2) /*sort ofconcept sets in an ascendingorder */ 2. Foreach 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. Ifc=NULL then c:= Make_Concept(E, Int(ci) Int(cj)) B:= B {c} Find_LowerCovers (c, ci,cj) /* detection of predecessors in L*/ Algorithme d’assemblage de treillis 21
Plan de la présentation 22 • Motivations • L’existant • Approche pour l’assemblage de treillis • Retombées algorithmiques
P a b c d e O 1 2 3 X X X X X X X X 4 X X X X X X X L X X X X K . . . L+ P a b c d e O 1 2 3 4 X X X X X X X X X X X X . . . P a b c d e O 5 6 X X X X X X X X X X X X X X K X X X L Algorithmes dérivés: construction du treillis 23 « Diviser-pour-régner » Incrémentale (améliore [Godin et al. 95]) Hybride (incrémentale/par lot)
X L K P a b c d e O 1 2 3 X X X X X X X X • Extraction de treillis partiels d’un treillis global L L1 L2 Algorithmes dérivés (suite) 24 • Maintien de treillis par incrémentation fine • Inversion de case de la table (ajout/enlèvement d’un (o,a)à I) 4 X X X • Construction directe du diagramme imbriqué
Étape Ordre O(l1 + l2) Tri O(d(L1) + d(L2)) Recherche valeur Psi Recherche success. O(d(L1) + d(L2))m) Problème Estimer l1 l2 Sur l m ( Pb. #P-complet) Construction treillis O(d(L1)+ d(L2)) m l ) Parcours du produit O(d(L1)+ d(L2) + k ) l1 l2) Assemblage Total O( k ( l1 l2 + l m ) ) Complexité 25 l- nb de conceptsL li - nb de conceptsLi d(L)- degré d’un nœud k - nb d’objets,|O| m - nb d’attributs,|P| Hypothèse : croissance linéaire de lsur 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|))
Quelques projets applicatifs 27 • 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 »
L2 I2 I1 L3 I3 L1 Bilan 28 L K= (O, P,I) • 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.
La suite... 29 • 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)