Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Lioba Walter Geändert vor über 6 Jahren
1
Senseo Wir erweitern die statischen Informationen mit Hilfe von Laufzeitinformationen. Einbindung in IDE resp. JDT
2
in IDEs with Dynamic Information
Augmenting Static Source Views in IDEs with Dynamic Information Wir erweitern die statischen Informationen mit Hilfe von Laufzeitinformationen. Einbindung in IDE resp. JDT
3
Static Source Views in IDEs
Drawbacks of static source code analysis No runtime information leads to: No execution path Polymorphism (abstract classes, interfaces) No Runtime metrics
4
Static Source Views in IDEs
execution path? Static Source Views in IDEs Drawbacks of static source code analysis No runtime information leads to: No execution path Polymorphism (abstract classes, interfaces) No Runtime metrics
5
Static Source Views in IDEs
execution path? polymorphism? Static Source Views in IDEs Drawbacks of static source code analysis No runtime information leads to: No execution path Polymorphism (abstract classes, interfaces) No Runtime metrics
6
Static Source Views in IDEs
execution path? polymorphism? Static Source Views in IDEs runtime metrics? Drawbacks of static source code analysis No runtime information leads to: No execution path Polymorphism (abstract classes, interfaces) No Runtime metrics
7
Static Source Views in IDEs
execution path? polymorphism? Static Source Views in IDEs runtime metrics? Drawbacks of static source code analysis No runtime information leads to: No execution path Polymorphism (abstract classes, interfaces) No Runtime metrics no runtime information
8
? Abgrenzung zu debugger (und profiler).
Beispiel im JDT (JavaModelManger) To answer these questions purely based on static information, we can use the references and declarations search tool of Eclipse. For the first question, we search for all declarations of method {\tt getJavaProject}. However, the JDT declares more than 20 methods with this name, most of which are not related to the representation of source code elements. We have to skim through this list to find out which declarations are defined in subtypes of \ije. After having found those declarations, we still cannot be sure which are actually invoked in this code. % Even when manually narrowing down the list of declarations of \emph{getJavaProject} to those actually defined in subtypes of \ije, we can neither be sure whether those really get invoked in this piece of source code nor how often and with which concrete receiver types. To address the second question, we first search for all classes implementing \ije in the list of references to this interface. This yields a list with more than 2000 elements; all are false positives as \ije is not supposed to be implemented by clients. We thus search for all sub-interfaces of \ije to see whether those have implementing classes. After locating two direct sub-interfaces ({\tt IMember} and {\tt ILocalVariable}), each of which has more than 1000 references in JDT, we give up searching for references to indirect sub-interfaces such as {\tt IField} or {\tt IType}. It is not possible to statically find all concrete implementing classes of \ije, in particular not those actually used in this code.
9
DEMO Show Starting of an app Collecting some data
Display various enrichements public synchronized Object getInfo(IJavaElement element) { public static IJavaElement create(IResource resource, IJavaProject project) {
10
collecting runtime metrics
Um Polymorphysmus wie im früheren Beispiel besser zu verstehen, brauchen wir Laufzeitinformationen darüber, welche wirklichen Objekte an eine Variable gebunden sind. Weiter kann es verschiedenen dynamische Informationen geben, die für uns von Interesse sind: - Anzahl allozierter Bytecode von Objekten - Anzahl allozierte Objekte - Memoryusage von Objekten Zum Sammeln von derartigen Informationen verwenden wir Aspects auf VM Level. D.h. Wir lassen unseren unveränderten Code in einer mit Aspects instrumentierten VM laufen lassen. collecting runtime metrics
11
Die Aspects generieren uns einen Calling Context Tree.
Diese Datenstrutkur erlaubt uns den execution path zu Verfolgen und ist mit den runtime metrics annotiert.
12
Die Informationen aus dieser instrumentierten VM erhalten wir über ein Socket in Eclipse.
Wir verarbeiten dann diese Information und reichern die Eclipse Umgebung mit den dynamischen Informationen an.
15
Validation Show Starting of an app Collecting some data
Display various enrichements Show eclipse data
16
30 professional software developers
17
30 professional software developers
Subject expertise
18
30 professional software developers
Subject expertise Senseo vs. Eclipse
19
30 professional software developers
Subject expertise Senseo vs. Eclipse 5 typical software maintenance tasks
20
30 professional software developers
Subject expertise Senseo vs. Eclipse 5 typical software maintenance tasks Measure time & correctness
21
30 professional software developers
Subject expertise Senseo vs. Eclipse 5 typical software maintenance tasks Measure time & correctness Feedback
22
Results
23
Results 17.5 % less time spent
24
Results 17.5 % less time spent answers 33.5 % more correct
25
Lessons learned
26
Lessons learned unique environment
27
time sink task is important
Lessons learned unique environment time sink task is important
28
time sink task is important
Lessons learned unique environment time sink task is important do a test run!
29
Feedback
30
integrate dynamic information!
Feedback integrate dynamic information!
31
Feedback some visualizations are cumbersome
33
Feedback some visualizations are cumbersome
34
don't overwrite existing enrichments
Feedback don't overwrite existing enrichments
36
don't overwrite existing enrichments
Feedback don't overwrite existing enrichments
37
more lessons learned Show Starting of an app Collecting some data
Display various enrichements Show eclipse data
38
more lessons learned performance / efficiency is crucial Show
Starting of an app Collecting some data Display various enrichements Show eclipse data
39
more lessons learned performance / efficiency is crucial
means to navigate are important Show Starting of an app Collecting some data Display various enrichements Show eclipse data
40
more lessons learned performance / efficiency is crucial
means to navigate are important visualizations need to scale Show Starting of an app Collecting some data Display various enrichements Show eclipse data
41
more lessons learned performance / efficiency is crucial
means to navigate are important visualizations need to scale Show Starting of an app Collecting some data Display various enrichements Show eclipse data extend existing views!
42
more lessons learned performance / efficiency is crucial
means to navigate are important visualizations need to scale Show Starting of an app Collecting some data Display various enrichements Show eclipse data extend existing views! Eclipse ...
43
Senseo supports developers
in conducting typical software maintenace tasks Summary / conclusion Limitations Advantages 1 statment was es macht, übersichts screenshot
44
THANK YOU! Show Starting of an app Collecting some data
Display various enrichements Show eclipse data
45
Questions?
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.