Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Senseo Wir erweitern die statischen Informationen mit Hilfe von Laufzeitinformationen. Einbindung in IDE resp. JDT.

Ähnliche Präsentationen


Präsentation zum Thema: "Senseo Wir erweitern die statischen Informationen mit Hilfe von Laufzeitinformationen. Einbindung in IDE resp. JDT."—  Präsentation transkript:

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.

13

14

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

32

33 Feedback some visualizations are cumbersome

34 don't overwrite existing enrichments
Feedback don't overwrite existing enrichments

35

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?


Herunterladen ppt "Senseo Wir erweitern die statischen Informationen mit Hilfe von Laufzeitinformationen. Einbindung in IDE resp. JDT."

Ähnliche Präsentationen


Google-Anzeigen