Selected Methods for Anti-Pattern Detection in the Model...

81
Selected Methods for Anti-Pattern Detection in the Model/Source Code Identifying and Visualisation of the Source Code Topics Using Swarm Intelligence Ivan Polášek, FIIT STU Batislava, april 2013

Transcript of Selected Methods for Anti-Pattern Detection in the Model...

  • Selected Methods for Anti-Pattern Detection in the Model/Source Code

    Identifying and Visualisation of the Source Code Topics Using Swarm

    Intelligence

    Ivan Polášek, FIIT STU Batislava, april 2013

  • VzoryVzory

    • Generické riešenie problému v konkrétnom kontexte• Viac v:

    1. Alexander, C. et al.: A pattern language. Towns, buildings, construction. Oxford University Press, New York, USA, 1977.

    2. Gamma, E., Helm, R., Johnson, R., Vlissides J.: Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley professional computing series, 1995.

    3. Buschmann F. et al.:Pattern-Oriented Software Architecture. A Pattern Language for Distributed Computing. Volume 4. Wiley, 2007

  • Prvý problPrvý probléém vyhm vyhľľadadáávania:vania:neneúúplnosplnosťť konkrkonkréétnej intnej inšštancie vzorutancie vzoru

    Gamma, E. Et al.: Design Patterns, ..., Addison-Wesley professional computing series, 1995 Joshua Kerievsky: Refactoring to Patterns, Addison Wesley Boston, 2008

  • Druhý problDruhý probléém vyhm vyhľľadadáávania:vania:variabilita povariabilita poččtu intu inšštancitanciíí rôl vzoru (A)rôl vzoru (A)

    Gamma, E. Et al.: Design Patterns, ..., Addison-Wesley professional computing series, 1995

  • Druhý problDruhý probléém vyhm vyhľľadadáávania:vania:variabilita povariabilita poččtu intu inšštancitanciíí rôl vzoru (B)rôl vzoru (B)

    Gamma, E. Et al.: Design Patterns, ..., Addison-Wesley professional computing series, 1995

  • Spôsoby vyhSpôsoby vyhľľadadáávaniavania• Vyhľadávanie v modeloch (class diagram)

    1. Pomocou OCL2. Predikátovou logikou3. Ontológiami4. Fingerprinting5. Similarity scoring algorithm6. Bit-vector algorithm7. Semi-dynamicky8. Dynamicky9. AST

    • Vyhľadávanie v kóde1. AST2. podľa Plades3. ...

  • Generovanie OCL Query pri Generovanie OCL Query pri

    refaktorizrefaktorizááciicii

    7

    Štolc, M., Polášek, I.: A Visual Based Framework for the Model Refactoring Techniques, IEEE SAMI 2010

  • Spustenie OCL Query pri Spustenie OCL Query pri

    refaktorizrefaktorizááciicii

    8

    Štolc, M., Polášek, I.: A Visual Based Framework for the Model Refactoring Techniques, IEEE SAMI 2010

  • A sample of refactored structure A sample of refactored structure and rule definitionand rule definition

    9

    Štolc, M., Polášek, I.: A Visual Based Framework for the Model Refactoring Techniques, IEEE SAMI 2010

  • Sample model for a demonstration Sample model for a demonstration

    of OCL queryof OCL query

    10

    Štolc, M., Polášek, I.: A Visual Based Framework for the Model Refactoring Techniques, IEEE SAMI 2010

  • The OCL query The OCL query ((samplesample))

    11

    Štolc, M., Polášek, I.: A Visual Based Framework for the Model Refactoring Techniques, IEEE SAMI 2010

  • VisTraVisTra editor screenshot editor screenshot

    as an as an EEclipse pluginclipse plugin

    12

    Štolc, M., Polášek, I.: A Visual Based Framework for the Model Refactoring Techniques, IEEE SAMI 2010

  • FarebnFarebnéé rozlrozlíšíšenie venie vääziebzieb• „Presun asociácie na nadtriedu“

    Vanek F.: Refaktorizácia objektových štruktúr, DP, FIIT STU 2010

  • Enrico Biermann:Enrico Biermann:QVTQVT--> P> Patterns In Concrete Syntaxatterns In Concrete Syntax with with NNegative egative AApplication pplication CConditions (NAConditions (NAC))

    14

  • NAC v OCL dopyteNAC v OCL dopyteClass.allInstances()->iterate(class1: Class; resultSet0:Set(Tuple(class1: uml::Class, Class2: uml::Class,

    Class3: uml::Class))=Set{}|Class.allInstances()->iterate(Class2 :Class; resultSet1: Set(Tuple(class1:

    uml::Class, Class2: uml::Class, Class3: uml::Class))=resultSet0 | Class.allInstances()-

    >iterate(Class3 :Class; resultSet2: Set(Tuple(class1: uml::Class, Class2: uml::Class, Class3:

    uml::Class))=resultSet1 |

    if Class2->general->includes(class1) and

    Class.allInstances()->select(countTmp | Class2->general->includes(countTmp))->size()>=1 and

    Class.allInstances()->select(countTmp | countTmp.general->includes(class1))->size()>=1 and

    Class2.getAssociations()->memberEnd.class->includes(Class3) and

    Class.allInstances()->select(countTmp | Class2.getAssociations()->memberEnd.class->includes(countTmp))-

    >size()>=1 and

    Association.allInstances()->select(countTmp | countTmp->memberEnd.class->includes(Class3))->size()>=1

    and not (class1.getAssociations()->memberEnd.class->includes(Class3) and

    Class.allInstances()->select(countTmp | class1.getAssociations()->memberEnd.class-

    >includes(countTmp))->size()>=1 and

    Association.allInstances()->select(countTmp | countTmp->memberEnd.class-

    >includes(Class3))->size()>=1 )

    then resultSet2->including(Tuple{class1=class1,Class2=Class2,Class3=Class3}) else resultSet2 endif)))

    Vanek F.: Refaktorizácia objektových štruktúr, DP, FIIT STU 2010

  • CompositePattern[Component, Leaf, Composite] = (CompPatClasses,CompPatAssoc, CompPatDeriv)

    CompPatClasses = ‹Client, Component, Leaf, Composite›CompPatAssoc = ‹Communicate, HasAComponent›CompPatDeriv = ‹(Leaf, Component), (Composite, Component)›associates(Communicate) = ‹Client, Component›aggregates(HasAComponent) = (Composite, ‹Component›)navends(Communicate) = ‹NOTSPECIFIED, TO›navends(HasAComponent) = ‹AGGREGATES, TO›multiplicities(HasAComponent) = ‹1, N›...CommandPattern = ( CompositePattern (Command, ConcreteCommand, MacroCommand), CommandClasses, CommandAssoc,CommandDeriv)...

    FFormalizormalizáácia vzorov OO algebroucia vzorov OO algebrou

    _________Polášek I. et. al.: Formal Notation of Object Structure, Aplimat , 2005Navarčík Matúš, Polášek Ivan: Object Model Notation, ISIM´05

  • ModelDefinition ::= ModelName[“[”FormalParameters“]”]“=”“(”[UsedModels]ModelClasses“,”ModelAssoc“,”ModelDeriv“)

    UsedModels ::= (ModelName“(”ActualParameters“),”)*

    FormalParameters::=FormalParameterName[(“;”FormalParameterName)*]

    ActualParameters ::= ActualParameterName[(“;”ActualParameterName)*]

    ModelClasses ::= ModelClassName [( “;”ModelClassName)*]

    ModelAssoc ::= ModelAssocName[( “;”ModelAssocName)*]ModelDeriv ::= “(”ModelClassName“,” ModelClassName“)”[(“;”“(”ModelClassName“,” ModelClassName“)”)*]

    FFormalizormalizáácia vzorov OO algebroucia vzorov OO algebrou

    _________Polášek I. et. al.: Formal Notation of Object Structure, Aplimat , 2005Navarčík Matúš, Polášek Ivan: Object Model Notation, ISIM´05

  • FFormalizormalizáácia vzorov OO algebroucia vzorov OO algebrou

    • Oi = (CLASSi, ASSOCi, ), where CLASSi is a set of classes {ci1, ci2, …, cix} • cij=(ATTk, OPk)• ASSOCi = {as | as 〈ci1, …, cin〉 | cij ∈ CLASSi , for ∀j∈{1, .., n}}, ASSOC → CLASS+• ATTi = {a: tcij→ t| cij ∈ CLASSi, for ∀j∈{1, …, n}} or ATTcij = {a: tcij→ t| cij ∈ CLASSi}; • OPi = {ω: tci × t1 × t2 × … × tn→ t | cij ∈ CLASSi, for ∀j∈{1,…, n}}, or OPcij = { ω: tci × t1 × t2 × … × tn→ t

    | cij ∈ CLASSi}.

    • as 〈r1, …, rn〉 with n≥2. Mostly, roles(as) = 〈r1, r2〉.• multiplicities(as) = 〈M1, M2〉.• Function is projection CLASS×ASSOC→P(N) described as (c, as) {r | associates(as) = 〈c1, …, cn〉 ∧

    roles(as) = 〈r1, …, rn〉 ∧ ∃ i,j ∈ {1, …, n}: (i ≠ j ∧ ci = c ∧ rj = r)}.• AGGREGATES or CONTAINS. • We could define the set of aggregations as AGGREG = {as | as 〈ci1, …, cin〉 | cij ∈ CLASS ∧

    roles(as) = 〈r1, …, rn〉 ∧ ∃! i ∈ {1, …, n}: r i= AGGREGATES}. • Function aggregates can give the set of aggregated classes over the all aggregations of the

    class c, aggregates: CLASS → CLASS+, where c {ci | ∃ as ∈ ASSOC: (associates(as) = 〈c, c1, …, cn〉 ∧ roles(as) = 〈r, r1, …, rn〉 ∧ r = AGGREGATES)}; or the 2-tuple (aggregating c, set of aggregated classes) over the aggregation as aggregates: ASSOC → CLASS × CLASS+ such that as (c, {ci | associates(as) = 〈c, c1, …, cn〉 ∧ roles(as) = 〈r, r1, …, rn〉 ∧ r = AGGREGATES}).

    • More alternatives for aggregation functions can be found in [12].

    _________Polášek I. et. al.: Formal Notation of Object Structure, Aplimat , 2005Navarčík Matúš, Polášek Ivan: Object Model Notation, ISIM´05

  • Refactoring OO AlgebrouRefactoring OO Algebrou

    Štolc, M., Polášek, I.: A Visual Based Framework for the Model Refactoring Techniques, IEEE SAMI 2010

  • Vzory v OCLVzory v OCL

    (deklrat(deklratíívny vny konceptkoncept))

  • PredikPredikáátovtováá logika rollogika rolíí

    ________- Dong, J.: Design Component Contracts: Modeling and Analysis of Pattern-Based Composition.

    PhD Thesis, 2002, University of Waterloo, Canada- XSB Prolog

  • PredikPredikááty v jazyku Prologty v jazyku Prolog

    Každý predikát využitý pri zapísaní pravidla má svoju štruktúru a význam.•Class(Category, Name) - existuje trieda Name danej kategórie Category (abstract, concrete).•Attribute(Class, Name) - trieda Class obsahuje atribút Name.•Operation(Category, Kind, Class, Name, Scope, Params, ReturnType) - trieda Class má operáciu Name. Operácia máplatnosť Scope (public, protected, private), parametre Params a návratový typ ReturnType.•Aggregation(Class1, Multiplicity1, Class2, Multiplicity2) - existuje agregregácia triedy Class2 v triede Class1. Multiplicita Multiplicity2 na strane agregovanej triedy Class2 je typu mnoho (many) alebo práve jeden (exactlyone).•Association(Class1, Class2) - inštancia triedy Class1 obsahuje referenciu na inštanciu triedy Class2. •Inheritance(Class, Subclass) - trieda Subclass je podtriedou triedy Class.

    _______Kramer, Ch. - Prechelt, L.: Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software. Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96), 1996

  • Composite v PrologComposite v Prologcomposite(Cpnt,Leaf,Compos):-

    class(_,Cpnt),class(concrete,Leaf),class(concrete,Compos),operation(_,_,Cpnt,Op,_,_,_),operation(_,_,Leaf,Op,_,_,_),operation(_,_,Compos,Op,_,_,_),operation(_,_,Cpnt,Add,_,_,_),operation(_,_,Cpnt,Remove,_,_,_),operation(_,_,Cpnt,GetCh,_,_,_),operation(_,_,Compos,Add,_,_,_),operation(_,_,Compos,Remove,_,_,_),operation(_,_,Compos,GetCh,_,_,_),inheritance(Cpnt,Leaf),inheritance(Cpnt,Compos),aggregation(Compos,exactlyone,Cpnt,many)

    _______Kramer, Ch. - Prechelt, L.: Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software. Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96), 1996

  • Vzory ontolVzory ontolóógiamigiami

    ______OWL Web Ontology Language, http://www.w3.org/TR/owl-features/A Semantic Web Rule Language, http://www.w3.org/Submission/SWRL/Viac v: http://protege.stanford.edu/Kurťák, M.: Vyhľadávanie a rekonštrukcia vzorov. DP, FIIT STU, Bratislava, 2008

    Vyhľadávanie vzorov nad ontológiou prostredníctvom nástroja Protégé.

    1.Vzor je vyhľadávaný nad modelom transformovaným do OWL ontológie.

    2.Pravidlá pre vyhľadávanie vzoru sú definované v jazyku SWRL. Samotné odvodenie SWRL pravidiel nad OWL zabezpečuje znalostný systém Protégé.

  • SWRL

    pravidlo

    Abstract

    Factory

  • AntiAnti--pattern identification pattern identification

    using the ruleusing the rule--based approachbased approach

    Bad mells(Base/Set)

    Bad mells(Base/Set)

    ModelModel XMI fileXMI file

    RulesRules

    FactsFacts

    Jess

    Save as Acceleo

    Editor &Generator

  • AntiAnti--pattern identification pattern identification

    using the ruleusing the rule--based approachbased approach

    Rule of the partial duplicated code – attribute (treshold)

  • AntiAnti--pattern identification pattern identification

    using the ruleusing the rule--based approachbased approachBad smell

    Can be found in class

    diagram?

    Duplicated Code YES

    Long Method YES

    Large Class YES

    Long Parameter List YES

    Divergent Changes NO

    Shotgun Surgery NO

    Feature Envy NO

    Data Clumps YES

    Primitive Obsession NO

    Switch Statements NO

    Parallel Inheritance Hierarchies NO

    Lazy Class YES

    Speculative Generality NO

    Temporary Field YES

    Message Chains NO

    Middle Man YES

    Inappropriate Intimacy NO

    Alternative Classes with Different Interfaces

    NO

    Incomplete Library Class NO

    Data Class YES

    Refused Bequest NO

    Comments NO

  • FingerprintingFingerprinting (1/7)(1/7)

    Detecting occurrences of Abstract Factory in a medium size program:

    – JREFACTORY (575 classes)

    – 5 roles (AbstractFactory, ConcreteFactory,

    AbstractProduct, Product, and Client)

    – ~ 5755 = 6.28549E+13 possible combinations

    Vhodné na redukciu vyhľadávacieho priestoru..

    _______Gueheneuc, Y., Sahraoui, H., Zaidi, F.: Fingerprinting Design Patterns. In Proceedings of the 11th Working Conference on Reverse Engineering, WCRE.

    IEEE Computer Society, Washington, DC, pp. 172-181. 2004.

  • FingerprintingFingerprinting (2/7)(2/7)1. Vytvorenie úložiska zo 6 Java programov so 7068 tried. V nich boli manuálne identifikované a označené roly 93 inštancií 15-tich vzorov.

    _______Gueheneuc, Y., Sahraoui, H., Zaidi, F.: Fingerprinting Design Patterns. In Proceedings of the 11th Working Conference on Reverse Engineering, WCRE.

    IEEE Computer Society, Washington, DC, pp. 172-181. 2004.

  • FingerprintingFingerprinting (3/7)(3/7)2. Výpočet metrík nad obsahom repozitára (napríklad: počet metód, počet zdedených metód, počet nových metód, počet prekrytých metód, hĺbka dedenia, počet potomkov, ...).

    _______Gueheneuc, Y., Sahraoui, H., Zaidi, F.: Fingerprinting Design Patterns. In Proceedings of the 11th Working Conference on Reverse Engineering, WCRE.

    IEEE Computer Society, Washington, DC, pp. 172-181. 2004.

  • FingerprintingFingerprinting (4/7)(4/7)3. Odvodenie pravidiel pomocou strojového učenia, keď boli dáta poskytnuté open source nástroju JRip [z nástroja WEKA], ktorý je určený na odvodzovanie pravidiel prioritne pre úlohy týkajúce sa dolovania dát (data mining).

    _______Gueheneuc, Y., Sahraoui, H., Zaidi, F.: Fingerprinting Design Patterns. In Proceedings of the 11th Working Conference on Reverse Engineering, WCRE.

    IEEE Computer Society, Washington, DC, pp. 172-181. 2004.

  • FingerprintingFingerprinting (5/7)(5/7)4. Validácia a interpretácia identifikovaných pravidiel. Odstránené pravidlá s nízkou pravdepodobnosťou úspešnosti.

    _______Gueheneuc, Y., Sahraoui, H., Zaidi, F.: Fingerprinting Design Patterns. In Proceedings of the 11th Working Conference on Reverse Engineering, WCRE.

    IEEE Computer Society, Washington, DC, pp. 172-181. 2004.

  • FingerprintingFingerprinting (7/7)(7/7)

    _______Gueheneuc, Y., Sahraoui, H., Zaidi, F.: Fingerprinting Design Patterns. In Proceedings of the 11th Working Conference on Reverse Engineering, WCRE.

    IEEE Computer Society, Washington, DC, pp. 172-181. 2004.

  • Similarity Scoring (1/8)Similarity Scoring (1/8)

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Similarity Scoring (2/8)Similarity Scoring (2/8)

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Similarity Scoring (3/8)Similarity Scoring (3/8)1. Z0 = 1 (jednotková matica

    o rozmeroch počet vrcholov grafu analyzovaného systému x počet vrcholov porovnávanej vzorky)

    2. Pokiaľ nekonverguje vykonáva sa iterácia (párny počet krát):

    kde

    A - matica susednosti zodpovedajúca grafu analyzovaného systému,

    B - matica susednosti zodpovedajúca grafu porovnávanej vzorky.

    Výsledkom je matica Z, zachytávajúca mieru podobnosti jednotlivých elementov analyzovaného modelu s jednotlivými elementmi porovnávanej vzorky.

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Similarity Scoring (4/8)Similarity Scoring (4/8)

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Similarity Scoring (5/8)Similarity Scoring (5/8)

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Similarity Scoring (6/8)Similarity Scoring (6/8)

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Similarity Scoring (7/8)Similarity Scoring (7/8)

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Similarity Scoring (8/8)Similarity Scoring (8/8)

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Zrýchlenie SCA (1/2)Zrýchlenie SCA (1/2)1. Reverzné zostrojenie systému – získanie grafov pre jednotlivé skúmanévlastnosti (pre každú vlastnosť (dedenie, agregácia, asociácia, ...) jeden graf). Výsledkom tak je skupina matíc o rozmeroch n x n, kde n je počet tried analyzovaného systému.

    2. Identifikácia stromov dedičnosti tvoriacich jeden segment – vstupnématice z prvého kroku sú následne rozdelené na menšie, zodpovedajúce identifikovaným stromom dedičnosti.

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • Zrýchlenie SCA (2/2)Zrýchlenie SCA (2/2)3. Vytvorenie matíc subsystémov – nad maticami zodpovedajúcimi jednotlivým segmentom je možné rozpoznať vzory, ktoré v sebe obsahujú jeden strom dedičnosti (napr.

    Composite, Decorator). Keďže viaceré návrhové vzory v sebe obsahujú dve hierarchie dedičnosti (GoF vzory obsahujú maximálne 2 hierarchie dedičnosti, napr. Observer, Mediator, Abstract Factory), nie je možné ich rozpoznať len porovnávaním s maticami zodpovedajúcim jednému stromu dedičnosti (segmentu). Preto dochádza k vytvoreniu tzv. matíc subsystémov, ktoré predstavujú kombinácie dvojíc všetkých segmentov. Pre m segmentov tak

    vznikne m*(m-1)/2 subsystémov matíc.

    4. Aplikácia algoritmu – nad maticami vytvorených subsystémov je spúšťaný algoritmus, ktorý porovnáva podobnosť pre všetky skúmané vlastnosti.

    5. Extrakcia vzorov – vyhodnotenie výsledkov porovnávania matíc pre jednotlivé vlastnosti, na základe ktorých dôjde k určeniu inštancií vzorov v analyzovanom systéme. Ako medzná

    hodnota pre označenie inštancie je hodnota (x-1)/x, kde x je počet vlastností sledovaných pre

    skúmanie podobnosti (x – 1 vlastností úplne a jednu nespĺňa ) pre dostatočnú toleranciu

    variability a súčasne malé množstvo falošných nálezov.

    __________Tsantsalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S., T.: Design Pattern Detection Using Similarity Scoring. V IEEE Transactions on Software Engineering, volume 32, pp. 896-909, November 2006.

  • SCA weighting score extensionSCA weighting score extensionCichý a Jakubík zaviedli do výpočtu váhovanie jednotlivých vlastností, čím zvýšili výpovednú hodnotu celkovej miery podobnosti.

    Sledované vlastnosti rozdelili do troch skupín:

    1. Superbázické – ide o doménovo nezávislé vlastnosti, ktoré súpre vzor kľúčové. V prípade, že analyzovaná vzorka nespĺňa tieto vlastnosti, nemôže byť považovaná za inštanciu vzoru.

    2. Bázické – ide o doménovo nezávislé vlastnosti, ktorépredstavujú podstatu vzoru. Mali by sa vyskytovať v každej inštancii vzoru, ich neprítomnosť však nie je tak kritická

    ako v prípade superbázických.

    3. Doplňujúce vlastnosti – ide o vlastnosti dopĺňajúce štruktúru návrhového vzoru. V prípade týchto vlastností je predpokladanáurčitá miera variability, takže sa nepočíta s tým, že všetky inštancie budú dané vlastnosti plne spĺňať.

    Cichý, M., Jakubík, J.,: Design patterns identification using similarity scoring algorithm with weighting score extension. In Proceedings of the Eighth Joint Conferencene on Knowledge – Based Software Engineering, Frontiers in Artifical Intelligence and Applications, Amsterdam, IOS Press, 2008, pp 465 – 473, ISSN 0922-6389, ISBN 978-1-58603-900-4.

  • SCA (Class Instance Number)SCA (Class Instance Number)

    Liska, P. Polasek, I.: Design Smell Detection with Similarity Scoring and Fingerprinting: Preliminary Study, ECBS EERC, 2011

  • BitBit--vektorový algoritmus (1/6)vektorový algoritmus (1/6)

    1. UML Class Diagram -> Eulerian Graph

    O.Kaczor, Y.-G.Guéhéneuc, S. Hamel: Efficient Identification of DesignPatterns with Bit-vector Algorithm, CSMR 2006

  • BitBit--vektorový algoritmus (2/6)vektorový algoritmus (2/6)2. Find an Eulerian circuit and Resolve the directed Chinese Postman Problem to find the shortest tour of the graphs (an Eulerian circuit)

    3. Build the strings by running through the circuits

    Component in Leaf dm Component in Composite co Component

    O.Kaczor, Y.-G.Guéhéneuc, S. Hamel: Efficient Identification of DesignPatterns with Bit-vector Algorithm, CSMR 2006

  • BitBit--vektorový algoritmus (3/6)vektorový algoritmus (3/6)

    O.Kaczor, Y.-G.Guéhéneuc, S. Hamel: Efficient Identification of DesignPatterns with Bit-vector Algorithm, CSMR 2006

  • BitBit--vektorový algoritmus (4/6)vektorový algoritmus (4/6)

    We match against each other the two strings to build a list of potential occurrences.

    The algorithm reads triplets of tokens in the design motif string and associates program entities to the roles

    We retrieve entities before and after an in token in the program string with bit-wise operations on the characteristic vectors to have potential entities for the Component and Leaf roles

    For example:

    O.Kaczor, Y.-G.Guéhéneuc, S. Hamel: Efficient Identification of DesignPatterns with Bit-vector Algorithm, CSMR 2006

  • BitBit--vektorový algoritmus (5/6)vektorový algoritmus (5/6)S = graf systémuV = graf vzorudoplň hrany každému vrcholu na zhodný počet vstupných a výstupnýchz grafu V vytvor reťazec retV v tvare „Rola Hrana Rola Hrana..”z grafu S vytvor reťazec retS v tvare „Trieda Hrana Trieda Hrana..”

    roleV = zoznam tried hrajúcich rolu vo vzore

    CYKLUS: vyberaj trojice „Rola Hrana Rola“ z retVrola1 = prvá rola v trojicirola2 = druhá rola v trojicihrana = hrana v trojici

    ak (hrana == umelo doplnená hrana)ukonči túto iteráciu

    ak (prvá trojica)nájdi výskyty hrany v retStriedy z retS pri hrane vlož do roleVukonči túto iteráciu

    inakz roleV vyber triedy zaradené pre rola1 a rola2pre všetky vybraté triedy vykonaj

    v retS hľadaj trojice s hrana a vybratou triedou z roleVak (hrana s triedou nájdená)

    transformuj obe triedy a hrany na reťazce bitovretbit1 = Shift, Shift reťazcu bitov prvej triedyretbitHrana = Shift reťazcu bitov hranyretbit2 = reťazec bitov druhej triedyak (retbit1 & retbitHrana & retbit2 != NULL)

    vlož druhú triedu z trojice do roleVinak

    vymaž túto triedu z roleV

    ukonči cyklus ak (koniec retV)

    vráť zoznam roleV O.Kaczor, Y.-G.Guéhéneuc, S. Hamel: Efficient Identification of DesignPatterns with Bit-vector Algorithm, CSMR 2006

  • BitBit--vektorový algoritmus (6/6)vektorový algoritmus (6/6)

    Trieda a* Trieda m* Trieda

    Trieda1 *as* Trieda2

    Trieda1 *ac* Trieda2

    Trieda2 m1 Trieda2

    Trieda3 m1 Trieda3

    _________Liska, P. Polasek, I.: Design Smell Detection with Similarity Scoring and Fingerprinting: Preliminary Study, ECBS EERC, 2011

  • SemiSemi--DDynamickynamickáá aanalýzanalýza

    Ľ. Majtás: Príspevok k tvorbe a rozpoznávaniu inštancií návrhových vzorov, Dizertačná práca, FIIT STU Bratislava, 2011

  • DDynamickynamickáá analýza (1/5)analýza (1/5)

    Metriky•majú prínos pre spresnenie rozpoznávania inštanciívzorov, •je ich možné automaticky vyhodnocovať bez manuálnych zásahov do zdrojových kódov alebo prostredia pre vykonávanie programu (napr. ladiace prostredie),•ich zaznamenávanie výrazným spôsobom nespomalívykonávanie programu – nenaruší sa výkon funkcionality a použitia programu

    Ľ. Majtás: Príspevok k tvorbe a rozpoznávaniu inštancií návrhových vzorov, Dizertačná práca, FIIT STU Bratislava, 2011

  • DDynamickynamickáá analýza (2/5)analýza (2/5)

    Metriky•majú prínos pre spresnenie rozpoznávania inštanciívzorov, •je ich možné automaticky vyhodnocovať bez manuálnych zásahov do zdrojových kódov alebo prostredia pre vykonávanie programu (napr. ladiace prostredie),•ich zaznamenávanie výrazným spôsobom nespomalívykonávanie programu – nenaruší sa výkon funkcionality a použitia programu

    Ľ. Majtás: Príspevok k tvorbe a rozpoznávaniu inštancií návrhových vzorov, Dizertačná práca, FIIT STU Bratislava, 2011

  • DDynamickynamickáá analýza (3/5)analýza (3/5)Počet inštancií typovSingleton predpisuje práve jednu inštanciuPočet vykonaných operáciíPočet vykonaných volaníProxy: počet volaní metódy Request triedy Proxy ≤ počtu volaní z tejto metódy na metódu Request triedy RealSubject, či sa naozaj vyhodnocuje podmienka, ktorá zabraňuje vykonaniu nadbytočných volaní na RealSubject a vzor tak plní svoj účel,Composite: počet volaní metódy Operation triedy Composite ≤ počtu volaní z tejto metódy na metódu Operation triedy Component.

    Vďaka tomu možno potvrdiť, či operácia roly Composite plní svoju funkciu a deleguje svoje volanie na potomkov. Počet zmien hodnôt v atribútoch triedSingleton: atribút Instance by mal byť zmenený práve raz -– v prípade vzniku a zaznamenaní inštancie.Strategy: Počet zmien atribútu ukazujúceho na stratégiu ≤

    počtu inštancií triedy, do ktorej tento atribút patrí. State: Počet zmien atribútu ukazujúceho na abstraktný stav > ako počet

    inštancií triedy, do ktorej tento atribút patrí.

    Ľ. Majtás: Príspevok k tvorbe a rozpoznávaniu inštancií návrhových vzorov, Dizertačná práca, FIIT STU Bratislava, 2011

  • DDynamickynamickáá analýza (4/5)analýza (4/5)

    Flyweight: Počet volaní konštruktora ConcreteFlyweight z metódy FlyweightFactory.GetFlyweight ≤ počtu volaní metódyFlyweightFactory.GetFlyweight.

    Chain of responsibility: Počet volaní metódy ConcreteHandler.HandleRequest> počet volaní z tejto metódy smerujúcich na metódu Handler.HandleRequest.

    Decorator: ConcreteDecorator.Operation vykoná požadovanúfunkcionalitu a následne zavolá rodičovskú metódu Decorator.Operation. Tá následne deleguje svoje volanie na svojho nasledovníka volaním Component.Operation. Takže počet volaní z metódy Decorator.Operation na metódu Component.Operation > počet volaní samotnej metódy Decorator.Operation.

    Observer: Počet volaní metódy Subject.Notify ≤ počet volaní z tejto metódy smerujúcich na metódu Observer.Update.

    Ľ. Majtás: Príspevok k tvorbe a rozpoznávaniu inštancií návrhových vzorov, Dizertačná práca, FIIT STU Bratislava, 2011

  • DynamickDynamickáá analýza (5/5)analýza (5/5)Paint.Net SharpDevelop

    Návrhový vzor S D S D__Abstract Factory 0 0 0 0 Adapter 24 5 71 39 Bridge 2 0 0 0 Builder 1 1 14 3 Factory Method 1 1 2 0 Chain of Resp. 0 0 1 0 Interpreter 2 0 0 0 Prototype 2 1 0 0 Proxy 3 0 4 1 Singleton 0 0 2 2 State 12 1 25 14 Strategy 23 11 47 26 Template Meth. 2 1 0 0 … 0 0 0 0… 0 0 0 0

    Ľ. Majtás: Príspevok k tvorbe a rozpoznávaniu inštancií návrhových vzorov, Dizertačná práca, FIIT STU Bratislava, 2011

  • VyhVyhľľadadáávanie pomocou vanie pomocou ASTAST (1/5)(1/5)

    M. Námešný: Refaktorizácia objektových štruktúr, Diplomová práca, FIIT STU, 2011

  • VyhVyhľľadadáávanie pomocou vanie pomocou ASTAST (2/5)(2/5)

    M. Námešný: Refaktorizácia objektových štruktúr, Diplomová práca, FIIT STU, 2011

  • VyhVyhľľadadáávanie pomocou vanie pomocou ASTAST (3/5)(3/5)

    Vzor

    Kód

    Xpath vzoru

    AST kódu

    Xpath generátor

    XML kóduVisitor/XStream

  • VyhVyhľľadadáávanie pomocou vanie pomocou ASTAST (4/5)(4/5)

    M. Námešný: Refaktorizácia objektových štruktúr, Diplomová práca, FIIT STU, 2011

  • VyhVyhľľadadáávanie pomocou vanie pomocou ASTAST (5/5)(5/5)

    M. Námešný: Refaktorizácia objektových štruktúr, Diplomová práca, FIIT STU, 2011

  • Vzory podVzory podľľa PLADES ?a PLADES ?

    Plades systém (doc.Chudá):-Vyradí z textu bezvýznamné stop slová-Tokenizuje použitie premenných-Tokenizuje kľúčové slová riadiacich štruktúr

    (for, if-then-else, do-while, ...)-Tokenizuje riadiace štruktúry (switch==if, for==while)-Tokenizuje výrazy (časti výrazov, výrazy, podmienky)

    Token: blok, element.Tokenizácia: priradenie významu.

  • Kontext vKontext výýskumuskumu

    • Výskum metód získavania, analýzy a personalizovaného poskytovania informácií a znalostí

    • FIIT STU + Gratex International• 2011-2015• Operačný program Výskum a vývoj

  • Algoritmy inAlgoritmy inššpirovanpirovanéésprspráávanvaníím sa vm sa vččieliel

    Karaboga, D. a Bahriye, A.: A survey: algorithms simulating bee swarm intelligence. In: Artificial Intelligence Review, vol.31, 2010, no.1, s. 61-85.

  • Algoritmy inAlgoritmy inššpirovanpirovanéésprspráávanvaníím sa vm sa vččieliel

  • Metafora vMetafora vččelieho elieho úúľľaa

    Návrat, P. et al.: Metafora včelieho úľa - model vyhľadávania a odporúčania informácií. In: Kognícia a umelý ţivot. Smolenice, 2007, s. 249-258.

  • OpeOpeľľovanie ovanie

    ako zhlukovacako zhlukovacíí algoritmusalgoritmus

    Kazemian, M. et al.: Swarm Clustering Based on Flowers Pollination by Artificial Bees. In: Proceedings of Swarm Intelligence in Data Mining. 2006, s. 191-202.

  • OpeOpeľľovanie ovanie

    ako zhlukovacako zhlukovacíí algoritmusalgoritmus

  • Algoritmus opeAlgoritmus opeľľovania ovania

  • Odoberanie peluOdoberanie pelu

  • OpeOpeľľovanieovanie

  • ZlepZlepššenie výsledkovenie výsledkov

    • Nahradenie výpočtu príbuznosti dokumentov Kosínovou metrikou namiesto Euklidovej metriky

    • Vyradenie jednodokumentových zhlukov pomocou ABC algoritmu alebo K-means algoritmu

    • Nahradenie FPA Fuzzy zhlukovaním

  • Postup Postup navrhovanej navrhovanej metmetóódydy

  • VizualizVizualizááciacia

  • VizualizVizualizááciacia

  • VizualizVizualizááciacia

  • VizualizVizualizááciacia

  • EvaluEvaluááciaciaprj/srcFiles code lines classes interfaces methods Bee Count Cluster Cells indexing clustering

    100 0:08 0:05 54 45%

    1000 0:08 0:45 24 22%

    10 000 0:08 8:05 11 10%

    100 0:18 0:41 423 56%

    1000 0:18 4:32 221 29%

    10 000 0:18 41:00 101 13%

    100 0:32 2:30 1507 78%

    1000 0:32 24:10 830 43%

    10 000 0:32 (4:00:00) (400 ?) (20%)

    100 0:10 0:02 79 56%

    1000 0:10 0:18 42 29%

    10 000 0:10 2:30 22 15%

    100 0:25 2:00 679 66%

    1000 0:25 14:45 371 36%

    10 000 0:25 1:40 151 14%

    100 0:24 0:10 165 51%

    1000 0:24 1:10 91 28%

    10 000 0:24 9:20 35 10%

    100 1:40 4:15 1213 63%

    1000 1:40 35:36 673 35%

    10 000 1:40 5:40 269 14%

    100 4:00 13:40 2001 62%

    1000 4:00 1:50:00 1098 36%

    10 000 4:00 (18:20:00) (500?) (15%)

    100 0:05 0:05 50 33%

    1000 0:05 0:35 31 21%

    10 000 0:05 1:50 13 8%

    1923 (?) 7 072 138 19044 (138 x138)

    1906 76 14 316 138 19044 (138 x 138)

    GKO.RIMIS 7/87 19 000 141 6 255 37

    1444 (38 x 38)

    179

    38

    123

    7 0

    result

    shrink

    1369 (37 x37)

    Iron Python 4 14/952

    7569 (87 x 87)

    10000 (100x100)

    3136 (56x56)

    32041 (179 x179)

    145

    87

    100

    56

    2 720

    6 679

    2 221

    17 310

    8 300

    757 46

    1021 158

    323 46

    3207

    81 200

    230 000

    65 000

    342 000

    254 000

    Robot Emil

    45/466

    17/705

    4/299

    41/2482

    1/6

    PerConIK

    GKO

    Quartz.Net

    ASP.Net MVC

    PerConIK+WsFm 52/650 212 000

    found

    clusters

    Mead.Net 10/88 15 000 107 3 442 32 1024 (32x32)

    summary countsProject

    optimal algorithm settings (*)iterations

    duration of

  • ZlepZlepššenieenie