Fehlerbeseitigung Vorgehensweise

crazyOI

Grünschnabel
Guten Abend liebe Programmiergemeinde.
Wende mich mit einem wohl eigenartigen Thread für dieses Forum, aber ich komme irgendwie nicht zurecht und brauche unbedingt euren Rat.

Bei mit sieht es folgendermaßen aus, ich studiere Informatik und mache zurzeit mein Praktikum. Im Praktikum programmiere ich ausschließlich mit Java.
Mein Java-Kenntnisstand: An der Uni habe ich in IV3 (Java) eine 1,3 geschrieben und hatte auch keinerlei Probleme dies zu erreichen. Würde mich als einen bezeichnen, der ein Verständnis für das programmieren hat und habe bis jetzt auch sehr gerne programmiert.
Jetzt wo ich die anderen Studenten und Mitarbeiter sehe, würde ich mein Kenntnisstand als mangelhaft bezeichnen. Naja ich weiß, dass ich am Anfang meiner Karriere bin und dass ich noch viel lernen werde.

Zu meinem Problem: Die Praktikanten kriegen bei uns in der Fa. über die gesamte Zeit (3-6 Mon) ein Hauptthema zugeteilt und sind quasi für diesen Bereich dann verantwortlich. Das Projekt an dem ich dran bin, ist schon Eibischen älter und ich bin für die Fehlerbeseitigung verantwortlich.
Das Tool, welches ich pflegen soll ist sehr, sehr umfangreich und ich komme einfach nicht zurecht ich brauche für einen Bug sehr viel Zeit, in der Regel zwischen zwei und vier Wochen, was mich sehr, sehr frustriert. Dadurch, dass die anderen Studenten andere Themen haben und recht oft über ihre Erfolge (Bsp.: fertigstellen eine Plug-In, etc) untereinander sprechen, demotiviert mich das umso mehr und ich habe mittlerweise das Gefühl, dass ich lieber was anderes studiert hatte müssen.

Naja bin jetzt auch keiner der schnell aufgibt, deswegen wollte ich euch um einen Rat fragen:
Wie geht Ihr bei sowas, dh. Beseitigung eines Bugs vor:
Meine Vorgehensweise:
• Mache mir erstmal Gedanken wie der Fehler verursacht wird.
• Ich gehe alle Methoden, die in der Log auftauchen durch so wie der bzw. die Prozesse, die an den Bug beteiligt sind.
• Alle Änderungen, die ich mache notiere ich mir.
• Ich schau mir alle Methoden etc. in der Klasse an.

Das Problem, welchen ich zudem noch habe, das wenn ich die von mir gemachten Änderungen ausprobieren will, nicht einfach in Java „Run as“- Button drücke, sonder eine ganze Prozedur durchführen muss.
Ich hoffe sehr, dass Ihr mir paar nützliche Tipps geben könnt….

Danke im Voraus
Gruß *
 
Fehlersuche in großen Programmen die man nicht selber geschrieben hat ist nicht einfach. Besser wird es nur wenn man Erfahrung mit dem programmieren sammelt und mit der Zeit fällt es einem leichter fremden Code zu lesen.

Aber ein paar Hilfsmittel gibt es durchaus. Vielleicht hilft es dir Teile des Programms in UML-Darstellung anzuschauen, damit die Zusammenhänge klarer werden.

Bis du mit einem Debugger vertraut? Das hilft auch sehr gut um zu schauen von wo denn ein bestimmter Teil aufgerufen wird oder wie häufig das passiert.

Wenn ich nicht genau weiss wo ein bestimmter Teil überhaupt zu finden ist, hoffe ich dass es Logausgaben gibt die darauf schließen lassen. Bei log4j-Ausgaben entweder direkt über die Klasse oder über das Durchsuchen der Java-Dateien nach einer entsprechenden Zeichenkette. In einer Benutzeroberfläche entsprechend durch die Beschriftungen.

Warum notierst du dir die Änderungen die du machst. Wenn du mit eclipse oder Subversion arbeitest, können diese doch automatisch aufgezeichnet werden. Das spart schon mal Zeit.

Das Problem, welchen ich zudem noch habe, das wenn ich die von mir gemachten Änderungen ausprobieren will, nicht einfach in Java „Run as“- Button drücke, sonder eine ganze Prozedur durchführen muss.

Was meinst du damit? Was für eine Prozedur musst du durchführen?
 
Hallo,

du könntest um Werte zu prüfen und die Frage ob etwas auch ausgeführt wird doch einen Debugger benutzen ;)
edit.: Ups, da war Zeja schneller...

Außerdem solltest du dich nicht entmutigen lassen. Fremder Code ist nie einfach zu verstehen, besonders wenn er nicht ordetlich dokumentiert ist.
 
Ich muss auch gerade fremden Code sichten. Das ist wirklich nicht einfach, wenn nicht gut dokumentiert und das braucht einfach seine Zeit. Lass dich da nicht entmutigen!
Wie von meinen Vorrednern schon erwähnt, je mehr Erfahrung du mit eigener Programmierung gesammelt hast, desto leichter wird es dir fallen dich in Code von anderen einzuarbeiten. Aber desto größer wird dann auch das Verlangen Codeschnippsel anzupassen, weil du es viel lieber anders programmiert hättest! ;)

Welche Art Änderungen machst du denn? Code-Änderungen?
Was du evtl. protokollieren solltest, was sich nicht als Repository-Einträge eignet, sind die Beschreibungen der Testfälle, die du durchführst.

Mach dich wirklich mal - wenn nicht schon geschehen - mit dem Debugger vertraut! Einige Schnitzer kann man damit gut identifizieren.

Gruß
Gerrit
 
Guten Morgen, danke für die schnellen Antworten…

• Also bei uns ist es so, dass meine Vorgänger keine UML-Diagramme angefertigt haben zumindest nicht für diesen Bereich der Software.

• Dokumentation, Fehlanzeige und wenn dann nur von den Studenten, die meine Aufgabe davor hatten.

• Bin auch mit dem Debugger nicht so ganz vertraut, aber das ist nicht so relevant, da wir bei uns hier eine Prozedur haben.

Prozedur: Wir verwenden hier nicht den Eclipse Build sondern einen eigenen. Ich muss nach jeder Änderung, die erstmal Builden danach auf einen Server drauf spielen und starten. Das Ganze dauert so um die 10 Minuten, deswegen mache ich mehrere Änderungen und protokoliere es mit Logausgaben und bei mir im Heft, damit ich nichts vergesse.


Kann man auch Teilfragmente des Codes Debuggen?

Gruß *
 
Sorry, aber sowas geht gar nicht. Es ist bekannt, dass Firmen gern Studenten dazu "abstellen" miesen Code zu debuggen und zu "reparieren", d.h. du solltest nicht an dir zweifeln wenn du als Anfänger Schwierigkeiten damit hast vorranzukommen. Was du daraus mitnehmen kannst, ist, das Firmen, die keinen Wert auf Codequalität legen damit leben (müssen), dass Bugfixes erhebliche Aufwände verursachen. Wenn sie dann für diese Aufgaben Studenten auswählen, die wenig Erfahrung mit sowas haben, dann ist das ebenfalls eine Entscheidung der Firma, und erstmal nicht dein Problem. Was ich sagen will, dass du dir auf keinen Fall vorwerfen lassen solltest, du wärst zu langsam oder sowas (zumindest was ich hier lesen konnte).

Builden, deployen, Änderungen im Heft dokumentieren - sorry, aber so kann man nicht Arbeiten. Hier wieder: wenn die Firma nicht erkennt dass da Zeit verblasen wird ohne Ende, ist das deren Problem. Im Normalfall kann man Bugs am besten mit Tests zu Leibe Rücken. Eben genau weil ein Test extrem viel schneller auszuführen ist, als ein kompletter Buildzyklus. Das arbeiten mit Tests setzt natürlich vorraus, dass man a) ungefähr weiß, wo der Hase im Pfeffer begraben ist und b) der Code überhaupt testbar ist. A) kannst du mit den Heuristiken meiner Vorposter und etwas Erfahrung abdecken und b) ist eigentlich wieder ein Problem der Firma und deren Vorstellung von Codequalität.

Kurz: Nichttestbarkeit führt zu erheblichen Aufwänden bei der Wartung. Dafür kannst du als "grüner" Studi überhaupt nichts, das ist inherent so. Die Frage ist, ob das Leuten in der Firma bewusst ist ;).

Wenn ich jetzt so sehr auf die Firmen schimpfe, hier vielleicht noch eine andere Sicht. Wir haben bei uns auch ein paar sehr betagte Systeme rumliegen, die nicht explizit "alt" gemacht worden sind, aber die explizit als Durchkämpfdschungel für Studis da sind, damit sie eben lernen, sich durchzuwühlen, dranzubleiben, kreativ um die Ecke zu denken. Also... nur nicht entmutigen lassen. Vielleicht bist du ja gerade in so einem Projekt? :)

Gruß
Ollie
 
Hallo,
erstmal möchte ich mich für die netten Worte bedanken und ich möchte behaupten, dass ich mich auf jeden Fall motivierter fühle.
Das wodran ich zurzeit oder besser gesagt die ganze zeit seit Anfang bin, ist aber tatsächlich der Trunk, naja die werden sehen was die davon haben ;) (nein Spaß) ich gebe mir natürlich recht viel Mühe, dass das was ich da produziere auch ein bisschen an der Qualität hat, zumindest versuche ich das.

Ich habe aber auch das Pech, das es kaum Dokumentationen zu dem System gibt und außer meinen Betreuer, der überlastet ist, keiner mir so richtig helfen kann. Beispielsweise hing ich ganz am Anfang knapp eine zwei Woche an einer Stelle (Betreuer hatte Urlaub), weil mir keiner von meinen Mitarbeitern (überwiegend Studenten) erklären konnte, wie paar Bereiche zusammen agieren.

Bin aber jetzt voller Zuversicht, dass ich doch mehr davon habe, als zwischenzeitlich gedacht habe. Habe mir nämlich vor dem BPS alles irgendwie anders vorgestellt, dh. ich wollte mehr selbst gestalten und dementsprechend mehr lernen als nur den ganzen Tag Quelltext anzugucken und mir den Ablauf und die möglichen Fehler vorzustellen.

Naja, ma gucken :)
Gruß *
 
Zurück