• Aucun résultat trouvé

Génération de diagrammes UML à partir d'une analyse dynamique

N/A
N/A
Protected

Academic year: 2022

Partager "Génération de diagrammes UML à partir d'une analyse dynamique"

Copied!
8
0
0

Texte intégral

(1)

Trace Analyzer : Manuel de l’utilisateur

1 Au démarrage

La fenêtre « Traces manager » s’affiche au démarrage. Celle-ci permet de :

Importer une nouvelle trace avec le bouton Add

Sélectionner une ou plusieurs traces et la(les) supprimer avec le bouton Delete

Sélectionner une ou plusieurs traces et travailler avec en appuyant sur le bouton Select

2 L’onglet « File »

(2)

2.1 Manage traces

Ouvrir la fenêtre « Traces manager », cf. partie « Au démarrage »

2.2 Open source file…

Sélectionner le code source à analyser.

2.3 Display graph

Afficher le graphique des éléments courants.

(3)

2.4 Toggle write correlation matrix in CLS file

Déclencher la génération d’une matrice de corrélation dans un fichier CLS si cette

fonctionnalité n’a pas encore été activée. Si elle l’a déjà été, la matrice s’affiche dans l’écran du logiciel. Cette fonctionnalité nécessite l’enclenchement de la fonction “Trace

Analysis/Temporal correlation matrix ».

2.5 Formatted trace file with levels

Générer un fichier texte contenant les appels de la trace et leur niveau respectif

2.6 Write XML file

Générer un fichier XML.

2.7 Preferences

Régler les préférences.

2.8 Exit

Sortir de l’application

2.9 Option : trace reading log level

Régler le contenu du log

(4)

3 L’onglet « Trace Analysis »

3.1 Nb of lines in trace file

Afficher le nombre de lignes d’appel, de fin et de lignes totales d’une trace.

3.2 Database statistics

Afficher les statistiques relatives à la trace, telles que le nombre d’appels, de fonctions, de procédures et de classes impliquées.

3.3 Methods called in selected class

Afficher les méthodes appelées des classes sélectionnées, dans la fenêtre d’affichage.

(5)

3.4 Called classes

Afficher les classes appelées par les classes sélectionnées, dans la fenêtre d’affichage.

3.5 Calling classes

Afficher les classes qui appellent les classes sélectionnées, dans la fenêtre d’affichage.

3.6 Class with given method parameter

Rechercher les classes qui ont comme valeur de paramètre le mot clé saisi.

3.7 Temporal omnipresent classes

Permet la segmentation de la trace en un nombre de morceaux parametrable grâce au contrôle se situant sous le label « Sampling window width ». En déplaçant le curseur à gauche on augmente le nombre de segments et inversément. Les classes omniprésentes sont affichées dans l’écran d’affichage du haut et le nombre de segment est inscris dans celui du bas.

3.8 Temporal occurrence

Comparer l’occurrence des modules sélectionnés dans l’écran d’affichage supérieur en réglant le nombre de segments.

3.9 Temporal correlation matrix

Afficher dans l’écran inférieur une matrice représentant la corrélation des classes

sélectionnées dans l’écran supérieur. La taille de fenêtrage est également paramétrable pour cette fonctionnalité. La fonctionnalité 2.3 (Display graph) est utilisable ici.

3.10 Temporal correlation clusters

Afficher dans l’écran inférieur une matrice représentant les clusters de corrélation des classes sélectionnées dans l’écran supérieur. La taille de fenêtrage ainsi que le taux de corrélation sont paramétrables. Si le code source a été sélectionné, un fichier csv est généré. Celui-ci représente les clusters sur l’axe vertical et les packages sur l’axe horizontal. Un 0 dans une case liant à package à un cluster signifie que ce package n’est pas présent dans le cluster en question. Un 1 signifie l’inverse.

3.11 Java source code architecture

Générer un fichier csv contenant les packages du code source sélectionné. Afin d’effectuer cette analyse il est nécessaire d’avoir auparavant sélectionné le code source.

3.12 Elements present in trace(s)

Générer 2 fichiers csv, le premier représente les packages présent dans la ou les traces

analysée(s). Pour chaque package le nombre inscris représente le nombre de trace dans

lesquels il est présent. Afin de connaître de quel package il s’agit, il faut auparavant tirer

l’architecture java avec la fonction « Java source code architecture ».

(6)

Le second fichier généré contient, sur l’axe horizontal, le nom des traces analysées et, sur l’axe vertical, le nom des classes du code source. Un 1 dans une case signifie que la classe correspondante est présente dans la trace en question, alors qu’un 0 signifie qu’elle ne l’est pas.

Afin d’effectuer cette analyse il est nécessaire d’avoir auparavant sélectionné le code source.

4 L’onglet « Filter »

4.1 Toggle display recursive calls

Bouton bascule permettant de désactiver ou pas les appels récursifs. L’état de cette propriété

est visible dans le coin supérieur droit.

(7)

4.2 Toggle filter out recorded classes

Bouton bascule permettant de filtrer ou pas les classes enregistrées. L’état de cette propriété est visible dans le coin supérieur droit.

4.3 Toggle highlight recorded classes in graphs

Bouton bascule permettant de mettre en évidence ou pas les classes enregistrées dans les graphes générés. L’état de cette propriété est visible dans le coin supérieur droit.

4.4 Set correlation threshold (%)

Paramétrer le seuil de corrélation des classes.

4.5 Set call count threshold

Paramétrer les types de liens qui seront présents dans les graphes générés.

4.6 Record selected classes

Enregistre les classes sélectionnées.

4.7 Select recorded classes

Sélectionne les classes enregistrées.

(8)

persistence analysisStrategies

traceModel gui

ClassesToIgnoreList

~ serialVersionUID : long = 0 + ClassesToIgnoreList ( ) + actionPerformed ( ) - display ( ) - okPressed ( ) - cancelPressed ( ) - addClassPressed ( ) - removeClassPressed ( ) GraphVizFileFilter

+ accept ( ) + getDescription ( )

MultipleSelectJList

~ serialVersionUID : long = 0 + setSelectedValues ( ) ParameterDialog

~ serialVersionUID : long = 0 + ParameterDialog ( ) + actionPerformed ( ) - classesToIgnorePressed ( )

~ getClassesToIgnore ( )

~ setClassesToIgnore ( ) - okPressed ( ) - cancelPressed ( ) - dirTempPressed ( ) - dirTracePressed ( ) - dirGraphPressed ( ) - setPathApplicPressed ( ) - selectPath ( ) TextFileFilter

+ accept ( ) + getDescription ( )

«JavaInterface»

TraceOutputWindow

TraceWindow - scrollBarsInOccurenceAnalysisMode : boolean = false

~ serialVersionUID : long = 0 - originDialog

- lstClassList

ParameterReaderWriter - gaphvizExecutablePath : String = ""

- temporaryGraphicOutputDirectory : String = ""

- traceDirectory : String = ""

- odbcDatasourceName : String = ""

- hasJavaClassName : boolean = false - imageDisplayApplicationPath : String + getParameterFilePath ( ) - getParameterFile ( )

~ writeParameterFile ( )

~ readParameterFile ( )

~ readXMLValue ( )

~ setGaphvizExecutablePath ( )

~ getGaphvizExecutablePath ( )

~ setTemporaryGraphicOutputDirectory ( )

~ getTemporaryGraphicOutputDirectory ( )

~ setImageDisplayApplicationPath ( )

~ getImageDisplayApplicationPath ( )

~ setHasJavaClassName ( )

~ getHasJavaClassName ( )

~ setTraceDirectory ( )

~ getTraceDirectory ( )

~ setOdbcDatasourceName ( )

~ getOdbcDatasourceName ( ) + getClassesToIgnore ( ) + setClassesToIgnore ( )

PrintManager - printLevel : int = 0 + getUniqueInstance ( ) + setPrintLevel ( ) + print ( ) TraceFileStatistics

~ callLines : int = 0

~ endLines : int = 0

~ badLines : int = 0 + TraceFileStatistics ( ) + getCallLines ( ) + getEndLines ( ) + getBadLines ( ) + getTotalLines ( )

TraceFunction - returnedType : String + TraceFunction ( ) + writeTraceXMLFile ( ) + getReturnedType ( )

~ getOperationSignatureAndType ( ) + isFunction ( )

TraceInputLine - inputLine : String - className : String = ""

- signature : String = ""

- parameters : String = ""

- returnedType : String = ""

- isEndOfCall : boolean = false - isBadLine : boolean = true - hasJavaClassName : boolean = false + TraceInputLine ( ) + TraceInputLine ( ) + toString ( ) + getInputString ( )

~ checkInputLine ( )

~ parseInputLine ( ) - parseNameOfClass ( ) - isBadClassName ( ) - parseSignature ( ) - parseReturnedType ( ) - parseParameters ( ) - pickNextWord ( )

~ isBadLine ( )

~ isCallLine ( )

~ isEndOfCall ( )

~ isFunctionLine ( )

~ getClassName ( )

~ getSignature ( )

~ getReturnedType ( )

~ getParameters ( )

TraceNode - keyID : int

- unEnded : boolean = false - sequenceNumber : int = 0 - startSequenceNumber : int = 0

- currentSequenceNumber : int = startSequenceNumber + resetSequenceNumber ( )

+ TraceNode ( ) + compareTo ( ) - setProcedure ( ) + getSequenceNumber ( ) + getAdjustedSequenceNumber ( ) + hasOperationParameters ( ) + getOperationClassName ( ) + getOperationSignature ( ) + isInInterval ( ) + tagAsUnEnded ( ) + isUnEnded ( ) + addSonID ( ) + addSon ( ) + getSonsIDs ( ) + removeSons ( ) + setKeyID ( ) + getKeyID ( ) + updateProcedure ( ) + getProcedure ( ) TraceNodeStack

+ push ( ) + pop ( )

TraceProcedure - calledClass : String - operationSignature : String - operationParameters : String + getRootProcedure ( ) + TraceProcedure ( ) + writeTraceXMLFile ( ) - extractParameters ( ) + getOwnerClassName ( ) + getOperationSignature ( ) + getOperationParameters ( )

~ getOperationSignatureAndType ( ) + isFunction ( )

+ isRootProcedure ( ) + hasParameters ( ) TraceProcessor

- mustDisplayRecursiveCalls : boolean = true - mustFilterOutRecordedClasses : boolean = false - mustHighlightRecordedClasses : boolean = false - mustWriteCorrelationMatrixInFile : boolean = false - methodParameterToSearchFor : String = ""

- omnipresentClassRatio : double = 0.75 - startAnalysisInterval : int = 0 - endAnalysisInterval : int = 0 - startSequenceNumber : int = 0 - callCountThreshold : int = 0 - numberOfSegments : int = 1000 + TraceProcessor ( ) + resetModel ( ) + setTraceAnalysisInterval ( ) + setNumberOfSegments ( ) + getStartAnalysisInterval ( ) + getEndAnalysisInterval ( ) + getOmnipresentRatio ( ) + setOmnipresentRatio ( ) + setCallCountThreshold ( ) + getCallCountThreshold ( ) + mustDisplayRecursiveCalls ( ) + mustDisplayRecursiveCalls ( ) + mustFilterOutRecordedClasses ( ) + mustFilterOutRecordedClasses ( ) + mustHighlightRecordedClasses ( ) + mustHighlightRecordedClasses ( ) + mustWriteCorrelationMatrixInFile ( ) + mustWriteCorrelationMatrixInFile ( ) + setRecordedClassList ( ) + getRecordedClassList ( ) + getMethodParameterToSearchFor ( ) + setMethodParameterToSearchFor ( ) + readTreeTraceFile ( ) + countLinesInTraceFile ( ) + getClassList ( ) + getLastSequenceNumber ( ) + convertSequenceNumber ( ) - initializeAnalysisInterval ( ) + getNumberOfTraceElements ( ) + getNumberOfFunctions ( ) + getNumberOfProcedures ( ) + getCalledClassesMap ( ) + getCallingClassesMap ( ) + getOccurenceVectorMap ( ) + getNumberOfSegments ( ) + getClassList ( ) + getFullClassList ( ) + getNumberOfClasses ( ) + getOperationSignaturesAndTypes ( ) + getNumberOfCalls ( ) + getNodesInInterval ( ) + getAllNodes ( ) + getMaxCallFrequency ( ) + writeParameterFile ( )

~ readParameterFile ( ) + writeSummaryXMLFile ( ) + writeFullTraceXMLFile ( ) + setGaphvizExecutablePath ( ) + getGaphvizExecutablePath ( ) + setTemporaryGraphicOutputDirectory ( ) + getTemporaryGraphicOutputDirectory ( ) + setImageDisplayApplicationPath ( ) + getImageDisplayApplicationPath ( ) + hasJavaClassName ( ) + hasJavaClassName ( ) + setTraceDirectory ( ) + getTraceDirectory ( ) + setOdbcDatasourceName ( ) + getOdbcDatasourceName ( ) + getParameterFilePath ( ) + getClassesToIgnore ( ) + setClassesToIgnore ( ) TreeTraceReader

- hasJavaClassName : boolean + TreeTraceReader ( )

~ readInputTraceFile ( ) + countLinesInTraceFile ( ) - readNextLine ( )

XMLParameterParser - value : String - beginTag : String - inputLine : String

~ hasError : boolean = false + XMLParameterParser ( ) + hasError ( ) + getTag ( ) + getStringValue ( ) - pickNextWord ( )

XMLWriter

~ writeSummaryXMLFile ( )

~ writeFullTraceXMLFile ( ) + writeTraceXMLFile ( )

- model

- model

- procedure - paramProcessor

- xmlWriter

- uniqueInstance

«JavaInterface»

ISingleTraceNode

AnalysisStrategy

~ AnalysisStrategy ( )

# mustBeFilteredOut ( )

# getTraceOutputWindow ( )

# getModel ( )

# getOutputArea ( )

# getStartOfAnalysisInterval ( )

# getEndOfAnalysisInterval ( ) + computeClassList ( ) + processTrace ( ) + processTrace ( ) + displayFor ( ) + writeGraphVizFile ( )

ClassesCalledStrategy + ClassesCalledStrategy ( )

# displayTitle ( )

# getCouplingMap ( ) ClassesCallingStrategy

+ ClassesCallingStrategy ( )

# isCallingArrow ( )

# getCouplingMap ( )

# displayTitle ( )

ClassesWithMethodParameter Strategy + ClassesWithMethodParameterStrategy ( ) + computeClassList ( ) + processTrace ( ) - getClassesWithMethodParameter ( ) - extractParameters ( ) - getIntervalForMethodParameter ( ) DisplayableAsGraphStrategy

+ DisplayableAsGraphStrategy ( )

# displayRecursiveCalls ( )

# getCouplingMap ( )

# isCallingArrow ( )

# getMinimumCoupling ( )

# getResultHashMap ( ) + writeGraphVizFile ( )

# mustBeFilteredOut ( )

# colorRecordedNodes ( )

# colorSelectedClasses ( )

# getArrowColor ( )

# getArrowStyle ( ) - launchGraphVizApplication ( ) - getFullDotFilePath ( )

# filterClassesMap ( )

DynamicCouplingStrategy + DynamicCouplingStrategy ( )

# displayTitle ( ) + displayFor ( ) + processTrace ( )

# getArrowColor ( )

FileReadStrategy + FileReadStrategy ( ) + computeClassList ( ) + displayFor ( ) MethodCalledStrategy + MethodCalledStrategy ( ) + processTrace ( ) + displayFor ( )

OmnipresentClassesStrategy + OmnipresentClassesStrategy ( ) + writeGraphVizFile ( )

# getCouplingMap ( )

# getArrowColor ( ) + displayFor ( ) + computeClassList ( ) - getIntervalForClasses ( )

TemporalCorrelationMatrix Strategy + TemporalCorrelationMatrixStrategy ( ) + computeClassList ( )

# mustBeFilteredOut ( ) - mustWriteCorrelationMatrixInFile ( )

# getMinimumCoupling ( )

# getResultHashMap ( )

# getCouplingMap ( )

# colorSelectedClasses ( ) + displayFor ( )

# colorRecordedNodes ( )

# getArrowColor ( )

# getArrowStyle ( ) TemporalCorrelationStrategy

+ TemporalCorrelationStrategy ( )

# getSortedNodeList ( ) + displayFor ( )

# initializeCorrelationVector ( )

# updateCorrelationVector ( )

# getCorrelationsFactor ( )

# getCorrelationMatrix ( ) + processTrace ( )

TemporalOccurenceStrategy + TemporalOccurenceStrategy ( )

# getArrowColor ( )

# getCouplingMap ( ) + writeGraphVizFile ( ) + displayFor ( )

# getOccurenceStringForClass ( ) - getOccurenceStringForCorrelations ( ) - window

- analysisStrategy

DBAccessor - odbcDatasourceName : String = ""

+ setOdbcDatasourceName ( )

# initializeConnexion ( )

~ closeConnexion ( ) + purgeDatabase ( )

# getConnection ( ) + getSonsIDsForFatherID ( ) DBNodeQuery

+ getUniqueInstance ( ) + getCalledClassesMap ( ) + getCallingClassesMap ( ) + getOccurenceVectorMap ( ) + getNumberOfFunctions ( ) + getSortedClassList ( ) + getNumberOfClasses ( ) + getOperationSignaturesAndTypes ( ) + getNumberOfCalls ( ) + getNumberOfEvents ( ) + getMaxCallFrequency ( ) + getLowestSequenceNumber ( ) + getLargestSequenceNumber ( )

DBNodeWriter + getUniqueInstance ( ) + initializePreparedStatements ( ) + save ( )

+ update ( ) + saveRelation ( ) + saveRelation ( ) + deleteSons ( )

- uniqueInstance - uniqueInstance

Références

Documents relatifs

Une agrégation représente une association non symétrique dans laquelle une des ex- trémités joue un rôle prédominant par rapport à l’autre extrémité. La contribution de

Nous verrons ainsi que le format retenu est UML et comme l’approche de la clusterisation est un concept totalement nouveau et absent de ce langage, dans le

Je peux lui appliquer la fonction démarrer( ), ou la fonction changerVitesse( ). Ces fonctions changent l’état de la voiture : le moteur tourne, la vitesse n’est plus la même. •

– Abstraction : d´ erive (un ´el´ement source est d´efini ou calcul´e `a partir d’un ´el´ement cible), raffine relation de d´ependance entre deux ´el´ements `a des

Il est possible d'exprimer des contraintes sur une association, afin de limiter les objets mis en jeu. Cela permet de mieux cadrer l'architecture de l'ensemble. - conditions

Lors de la location d'une place de parking, l'employé indique au système le numéro du client s'il est enregistré ou enregistre le client s'il ne l'est pas.. Il demande ensuite

[r]

Dessine le bon nombre d’objets de ton choix dans