Page ThesisCopyTrackingStatus

Stand der Dinge, Wochenberichte und Planung

Stand der Dinge

Ich habe bisher folgende beiden Papers durchgearbeitet:

Kim, M., Sazawal, V., and Notkin, D. 2005. An empirical study of code clone genealogies. SIGSOFT Softw. Eng. Notes 30, 5 (Sep. 2005), 187-196.

Miryung Kim, Lawrence Bergman, Tessa Lau, and David Notkin. An Ethnographic Study of Copy and Paste Programming Practices in OOPL. International Symposium on Empirical Software Engineering, August 2004, pp. 83-92

Die Diplomarbeit von Frank Schlesinger über den ECG ist noch nicht ganz durchgearbeitet.

Wochenberichte und Planung

Werde mich nun in Eclipse einarbeiten.

Unter Anderem möchte ich herausfinden, ob es irgendwelche Features seitens Eclipse gibt, die es erlauben Copy & Paste Aktionen (im folgenden C&P) zu erkennen und zu speichern.

Wenn ich die Einarbeitung in Eclipse mit gewünschtem Ergebnis (s.o.) abschließen kann, sieht meine Planung folgendermaßen aus:

  • Festlegen von geeigneten C&P-Aktionen (oder auch C&P-Instanzen genannt), die für den Mikroprozess relevant sind.
  • Eine Theorie zu entwickeln, die festlegt, welche C&P-Instanzen für Warnungen bei Änderungen von Kode-Originalen in Frage kommen.

In der Zwischenzeit habe ich für mein Nebenfach lernen müssen.

17.02.2006:

  • Ich bin dabei, eclipse nach plug-ins zu durchforsten, um das oben angegebene umsetzen zu können.
  • Ich möchte ebenfalls noch nach geeigneten Papers schauen, die das Thema Fehlerpräventation erörtern. Vielleicht gibt es noch zusätzliche Anhaltspunkte, die mich bei meiner Arbeit unterstützen könnten.

11.05.2006:

  • Habe mein Diplomthema der Arbeitsgruppe Software-Engineering vorgestellt. Es wurden die von mir aufgeworfenen Fragen von den Teilnehmenden beantwortet. Herr Prof. Prechelt hat dann noch Vorschläge zu der Herangehensweise geäußert.

16.05.2006:

  • Sebastian und ich hatten einen Besprechungstermin festgelegt, um den Vortrag nachzube- sprechen, die weiteren Schritte des Vorgehens festzulegen und die von mir gestellten Fragen nochmals durchzugehen. Bei dieser Besprechung kamen dann im Verlauf unserer Diskussion weitere Fragen auf, die geklärt werden mußten.
  • Wir legten nun fest, dass es bei den C&P-Episoden nur auf die in meinem Vortrag vorgestellten Structural Templates ankomme, die es lohnt sich näher anzuschauen und zu analysieren.
  • Hierbei sind einige Fragen zu klären:

  • a) Welcher Programmcode ist relevant ?
  • b) Wie ist ein Maß für die Länge eines Templates festzulegen ?
  • c) Wurde der Programmcode geändert, wenn ja wie stark verändert oder sogar gelöscht ?
  • d) Wann lösen sich Abhängigkeiten zwischen den Programmcodestücken auf ?
  • e) Wie kann man am besten den Programmierer darauf aufmerksam machen ohne ihn ständig mit Meldungen zu nerven ?
  • f) Wie ist die Stellenidentität zu verfolgen und zu sichern ?

  • Meine Aufgabe war nun C&P-Episoden zu formalisieren, damit das ECG diese dann verarbeiten kann.

30.05.2006:

  • Ich bin dabei Videomaterial zu analysieren, um geeignte reale C&P-Episoden zu finden.

15.06.2006:

  • Ich analysiere Videomaterial, das von Sebastian zur Verfügung gestellt wurde.

25.06.2006:

  • Ich beginne heute mit dem Versuch C&P-Episoden zu formalisieren. Laut Sebastian soll ich mich zunächst auf Methodenblöcke konzentrieren, um dann auf diesem Teilergebnis die nächsten Structural Templates aufzubauen.

07.07.2006:

  • Ich bin bei der Formalisierung der C&P-Episoden nicht so richtig voran gekommen.
  • Es sind sehr viele Parameter zu beachten, da ich die event.log - und episode.log- Dateien, die durch das ECG beim Programmieren mit eclipse erstellt werden, be rücksichtige.

14.07.2006:

  • Ich analysiere immer noch Videos, allerdings sind das dann neue Videos, die Sebastian zur Verfügung gestellt hat. Bei der Analyse der Videos muss ich ebenfalls die event.log -und episode.log-Dateien durchforsten, um eventuelle Regelmäßigkeiten oder Besonderheiten entdecken zu können.
  • Nun müssen Implementierungsdetails mit einbezogen werden. Hiermit meine ich nicht die Art des Programmierers, wie er ein Problem löst, sondern die Struktur des Programmcodes selbst.

17.07.2006:

  • Heute ist ein Treffen mit Sebastian vereinbart worden.
  • Ich versuche meine Erkenntnisse formal zu beschreiben, um sie mit Sebastian zu diskutieren.

30.07.2006:

  • Ich bin ca. eine Woche krank gewesen und bereite mich gerade für Klausuren vor.
  • Ich werde am 12.08.2006 wieder meine Arbeit an meinem Theam aufnehmen.

14.08.2006:

  • Bin nun wieder dabei mich in mein Thema voranzuarbeiten, um in den nächsten vierzehn Tagen so weit zu sein, dass ich mit Sebastian das Ergebnis durch sprechen kann, um mit der Implementierung anzufangen.

19.08.2006:

  • Heute hatten Sebastian und ich eine Besprechung, um den aktuellen Stand der Dinge durchzusprechen. Ich habe mein Grundkonzept zum weiteren Vorgehen Sebastian vorgestellt. Sebastian und ich diskutierten dann über das eine und andere und legten dann das weitere Vorgehen fest.

Meine zukünftige Aufgaben, die wir besprachen waren folgende:

Ich sollte mit der Ausarbeitung des ersten Kapitels meines Themas beginnen. Parallel dazu sollte ich einen einfachen C&P-Episodenerkenner implementieren, der zunächst einfache Strings und ihre textlichen Veränderungen erkennt. Sebastian wollte dann noch die für mich benötigte Stellenidentität implementieren.

Ich bin bis zum 09.09.2006 nicht in Berlin und werde mich nach meinen Urlaub an diese Themen machen.

11.09.2006:

  • Ich stelle meine Notizen zusammen und überarbeite eine grobe Skizze der schriftlichen Ausarbeitung.

20.09.2006:

  • Diese Woche werde ich den Quellkode des ECG's herunterladen, um mich in den Kode einzulesen. Spätestens mitte Oktober möchte ich einen C&P-Episodenerkenner mit einfacher Funktionalität implementieret haben. Mein Schreiben der Ausarbeitung habe ich angefangen und wird parallel zu der Implmentierung weitergeführt.

12.10.2006:

  • Treffen mit Sebastian: Wir haben das ECG_LAB auf meinem Laptop konfiguriert, so dass jetzt meine implementierte Software auch auf Ereignisse reagieren kann. Ich kann aber das LAb noch nicht laufen lassen um meine eigene Aktivitäten aufzuzeichnen. Die Arbeit am Erkenner geht weiter.

19.10.2006:

  • Diese Woche werde ich mich ausschließlich um meine weitere Ausarbeitung kümmern. Ich möchte so nah wie möglich bis zu meinem jetzigen Stand das Dokument ausarbeiten. Für nächste Woche ist mit Sebastian ein Treffen geplant, wo ich mit Ihm das ECG_Lab zum Laufen zu bringen wollen.

25.10.2006:

  • Bei der Besprechung mit Sebastian wurde vereinbart, dass ich den CPC- Zustandsautomaten so weit implmentiere, dass er die kopierten (copy) oder ausgeschnittenen (cut) und eingefügten (paste) Kodestrings erfassen kann. Zu den String verändernden Aktivitäten kann ich zunächst noch nichts konkretes implementieren, da ich noch die relevanten events aus dem ECG heraus benötige.

27.10.2006:

  • Der CPC-Zustandsautomat ist auf die ausgeschnittenen oder kopierten und eingefügten Kodestrings hin implementiert, so wie in der letzten Besprechung vereinbart. Habe jetzt auch nachvollziehen können wie die Recognizer im ECG arbeiten.

31.10.2006:

  • Die benötigten events und ECG Sourceteile, die ich noch benötigte stehen nun vollständig zu meiner Verfügung. Ich kann den CPC-Zustandsautomaten um den codechange Zustand erweitern, also die Programmlogik bezüglich des Recognizers der ja als Zustandsautomat implementiert wird.

02.11.2006:

  • Bin gerade dabei das Maß für den Unterschiedlichkeitstest zweier zu beobachtenden Kodestrings zu implementieren.

09.11.2006:

  • Es gab noch Schwierigkeiten beim Implementieren der Zustände des CPC-Zustandsautomaten. Die Zustände selber betraf es nicht, sondern vielmehr die Elemente auf die der Zustandsautomat zugreifen muss, um die Zustände korrekt setzen zu können. Meine Version des Plug-ins des ECG-Labs benötigte noch ein weiteres Element. Sebastian und ich haben dann dieses Element in das Plug-In gepatcht. Ich arbeite nun aktuell auf einer neuen beta-Version Plug-ins. Wenn ich meine Software fertiggestellt habe wird dieser Kode in diese Version eingechecked.

14.11.2006:

  • Ich komplettiere den CHANGE-Zustands meines CPC-Zustandsautomaten durch das Einfügen der Funktionalität der Stellenerkennung, Stellenaktualisierung. Wenn ich dieses fertiggestellt habe, dann kann ich mit Sebastian besprechen, wie die CPC- Meldung geworfen wird bzw. was ich dazu benötige, das wird wahrscheinlich ein neuer event- Typ.

22.11.2006:

  • Habe mit Sebastian besprochen, wie die Episodennachricht zu melden ist. Dazu muss ich mir noch Gedanken machen welche Informationen für die CPC-Warnung wichtig sind. Die Struktur ist jedenfalls abgesprochen mit Sebastian. Es gibt aber noch implementierungstechnisch in meinem Erkenner zu den lineDiff-Events noch zu programmieren. Ich musste meine Struktur der beobachteten Texte, bisher nur String, auf das lineDiff hin anpassen. Das lineDiff-Event liefert mir lines und in meiner Datenstruktur habe ich das ebenfalls auf lines abgeändert. Somit kann man leichter mit den Veränderungen der beobachtenden Kodestellen arbeiten. Die textliche Ausarbeitung dieser Arbeit wird über das Wochenende auch weitergehen.

Kommentare