Announcement

Collapse
No announcement yet.

Tool support zum verstehen von code (graohische darstellung)?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tool support zum verstehen von code (graohische darstellung)?

    HI,

    Ich bin zurzeit in der Situation das ich grad viel etwa 10 jahre alten (schrecklichen) code versuchen muss zu verstehen.
    Da ich normalerweise ein sehr visuell bin - versuche ich mir normalerweise eine graphische Repräsentation des codes zu zeichnen - händisch.

    Nur Moment komme ich bei der codebasis nicht mit und frage mich ob es da nicht bessere tool Unterstützung gibt.
    Mir geht es da sehr um den Call flow (so nenne ich es eben - Methoden aufruf -> fürt zu dem methoden aufruf -> usw -> bis dann die Methode "returned")
    bzw auch den Data flow: Woher kommt dies Object in dem property -> wird hier gesetz, von da zurück gegeben, über das interface dort von der Methode berechnet ...

    Ich weiß es gibt so sachen wie Viso, die sind netzt zum zeichen, aber auch nur digitales Zeichnen. Sie bitten dafür mMn kaum Verbesserung (zumindest beim nachzeichnen von vorhandenem code)
    Auch kann man schwer sachen refactoren/abstrahieren - also wenn ich später drauf komme, dass ich mehrere Methoden Übergänge zusammen fassen will.

    Kennt jemand tooling das einen Unterstützt?
    - Entweder beim graphischen darstellen?
    - ggf auch generieren aus einer anderen Notation (XML/txt)
    - oder ein tool was direkt auf den Code zugreift (da kenne ich nur schreckliche Object relation erzeuger ...)
    - oder irgend eine andere Idee um den Code zu verstehen/den Datenfluss

  • #2
    Nicht das man mal mitteilt, um welche Sprache es sich handelt.
    Warum gibt es keine Dokumentation?

    Mir geht es da sehr um den Call flow (so nenne ich es eben - Methoden aufruf -> fürt zu dem methoden aufruf -> usw -> bis dann die Methode "returned")
    Mit welchen Daten? Oder schreibst du nur Programme in denen jede Methode in jedem Fall immer durchlaufen wird? In der jede Methode keine Bedigungen hat, die je nach Auswertung zu anderen Methoden führt?

    bzw auch den Data flow: Woher kommt dies Object in dem property -> wird hier gesetz, von da zurück gegeben, über das interface dort von der Methode berechnet ...
    Da gilt das obige. Jedoch IDEs können beim Debuggen den Aufrufstack zeigen, Werte u.a.

    Entweder beim graphischen darstellen?
    Klassendiagramme kann fast jede IDE erzeugen

    oder irgend eine andere Idee um den Code zu verstehen/den Datenfluss
    Teste den Code mit verschiedenen Daten, debugge, mache Kommentare

    Für bsp. Java gibt es noch weiterführende Möglichkeiten, aber da du ja auch auf deine letzten Beiträge nicht geanwortet hast....

    Man könnte auch einfach erstmal selbst tätig werden
    https://de.wikipedia.org/wiki/Liste_von_Werkzeugen_zur_statischen_Codeanalyse



    Zuletzt editiert von Christian Marquardt; 13.04.2018, 15:34.
    Christian

    Comment


    • #3
      Wenn der Code so schwer zu verstehen ist, insbesondere aus Komplexitätsgründen, ist eine graphische Darstellung üblicherweise genauso komplex.
      Und die tatsächlichen Zusammenhänge gehen bei einem automatischen Tool meist verloren. Denn es gibt in moderner Software oft genug keinen zwingenden direkten Zusammenhang zwischen einem Aufrufer und einem Aufgerufenen der sich durch reine (statische) Codeanalyse ersehen läßt. Üblicherweise sind Dinge dazwischen wie Messagingsysteme (das kann im einfachsten Fall einfach Windowsmessages sein wo dein Code dann quasi im Kernel verschwindet und anderer Code dann vom Kernel ausgelöst wird). Auch funktionieren solche Tools üblicherweise nur mit sich-selbst-genügender Software. Sobald Software mit dritter Software interagiert gehen Zusammenhänge verloren.

      Graphische Darstellungen helfen aber die solltest du dir durch Debuggen des Codes erarbeiten. Ist wie Spickzettel schreiben. Alleine das Erstellen auf diesem Weg wird dir hoffentlich soviel Erkenntnis über den Code liefern das du die graphische Darstellung nicht mehr zwingend brauchst weil du hoffentlich die wiederkehrenden Muster der Software gefunden hast. Und wenn du die nicht findest weil die nicht da sind ist es vorraussichtlich Sch**ßcode. Dann hast du eh verloren und mußt regelmäßig gegen den kämpfen.

      Comment


      • #4
        "Go to Implementation" und "Find Usages" sind Deine Freunde. Sonst hilft da nur viel mitschreiben und/oder es sich selbst visualisieren. Wichtig beim Code analysieren ist es ja, den "wichtigen" Code vom "unwichtigen" Code zu trennen um zu verstehen was das System macht. Allerdings kannst nur Du entscheiden, welcher Code in welche Kategorie gehört.

        Comment

        Working...
        X