Selected Methods for Anti-Pattern Detection in the Model...
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