Automatisch Code zu Flowchart

Gast #4743707
Lesenswert?
• ▲
▼
Liebe Community,

Ich habe mich gerade gefragt, ob es eine "einfache" Möglichkeit gibt 
mein inzwischen ziemlich komplexes (viele Zeilen) C Projekt automatisch 
in eine Rohfassung eines Flow-Charts zu übersetzen. Das ist ja nun 
sicher ein Problem das jeder, der mehr oder weniger Programmiert und 
danach dokumentieren will schon einmal hatte, deshalb hoffe ich gerade:

Gibt es Freeware oder Tools die ihr dafür empfehlen könnt?

Viele Grüße
Alex
Gast #4743783
Lesenswert?
• ▲
▼
Es gab früher EasyCase (heute EasyCode), der C in NassiShneiderman 
darstellen konnte.

Der Wert ist aber in der Regel gleich 0, da C eine ungleich größere 
Ausdrucksstärke besitzt als ein Flowchart.

Es gibt in der Regel 3 Möglichkeiten, in absteigender Empfehlung

1) Schreibe Deinen Code so sauber, dass ein Programmierer ihn versteht. 
Dann male für jede dedizierte Zielgruppe angepasste Flowcharts (bzw. 
lasse malen)

2) Programmiere in Flowcharts (z.B. Matlab/Simuling/Stateflow) und lasse 
Dir den C-Code erzeugen.

3) Dokumentiere Deinen Code z.B. mit Doxygen und lasse eindrucksvolle 
(aber meist wertlose) Dokumentation in meisterhaftem Layout erstellen
#4744095
Lesenswert?
• ▲
▼
Dennis S. schrieb:
> Zum Nachvollziehen nutze ich gerne die "Call Hierarchy" von Eclipse CDT.
> Aber zum Dokumentieren ist das leider nicht so richtig geeignet. :-(

Dann lass Doxygen drüberlaufen, das kann diese Informationen ebenfalls 
extrahieren und auch wunderschöne Graphiken aus den Aufruf- und 
Aufrufer- und verschiedenen anderen Bäumen bauen.

Mit den richtigen Kommentaren im Quelltext generiert das eine komplette 
Dokumentation mit einem einzigen Mausklick.
Gast #4744191
Lesenswert?
• ▲
▼
Nur leider sind die Callgraphen zur Doku ziemlich ungeeignet. Weil dann 
dokumentiert ist, wer was aufruft, aber nicht das Entscheidende: unter 
welchen Umständen.

Highlevel-Doku bekommt man nicht automatisch, weil man dazu viele 
Details weglassen muß. Dazu muß man aber inhaltlich verstehen, was 
wichtig ist und was nicht, und das können Computerprogramme nicht.
#4744223
Lesenswert?
• ▲
▼
Nop schrieb:
> Highlevel-Doku bekommt man nicht automatisch, weil man dazu viele
> Details weglassen muß. Dazu muß man aber inhaltlich verstehen, was
> wichtig ist und was nicht, und das können Computerprogramme nicht.

Deshalb kann man ja bei jedem zu dokumentierenden Element soviel 
erklärenden Text hinschreiben wie nötig ist um diese lnformationslücken 
zu füllen.
Gast #4744239
Lesenswert?
• ▲
▼
Bernd K. schrieb:
> Deshalb kann man ja bei jedem zu dokumentierenden Element soviel
> erklärenden Text hinschreiben wie nötig ist um diese lnformationslücken
> zu füllen.

Äh? Ich schrieb doch, das Problem sind nicht Informationslücken, sondern 
Informations-Overkill. Die Kunst nicht nicht das Hinzufügen von 
Informationen (der Code ist schon seine eigene vollständige Doku!), 
sondern das Entscheiden, welche man wegläßt.
#4744311
Lesenswert?
• ▲
▼
@Nop
>Nur leider sind die Callgraphen zur Doku ziemlich ungeeignet. Weil dann
>dokumentiert ist, wer was aufruft, aber nicht das Entscheidende: unter
>welchen Umständen.

Wie soll denn ein Programm, das einen Text liest, feststellen wann 
welche Verzweigung greift?

Wie soll ein Programm, das den Ablauf in einer realen Anwendung 
beobachtet, feststellen, ob eine Verzeigung nur Sonntagnachmittag um 9 
Uhr greift oder der Normalfall ist.

Wie willst Du bei einem Programm, das sich mit den Verzweigungen 
beschäftigt, bei dessen Ausgabe, DEINEN Abzweig, in den hunderten von 
Verzweigungen finden?
Gast #4744324
Lesenswert?
• ▲
▼
Das Stichwort lautet Parser. Aber das was Du suchst, wird es wohl nicht 
geben. Das wäre viel zu komplex (auch in der Ausgabe) - so dass es 
nichts bringen wird.

Ich habe mal (vor langer Zeit) Pseudocode in Flussdiagramme umgesetzt 
(meine Dipl.-Arbeit :- ) ) - auf der relativ abstrakten Ebene macht das 
zumindest grafisch noch Sinn.
Gast #4744621
Lesenswert?
• ▲
▼
Sebastian S. schrieb:
> Wie soll denn ein Programm, das einen Text liest, feststellen wann
> welche Verzweigung greift?

Dir ist aber der Sinn eines Flowcharts schon bekannt?

Es wird - wie im darauf basierenden Programm - definiert, unter welchen 
Bedingungen welche Verzweigung ausgeführt wird.
Auf Deine Frage bezogen: Der "Inhalt" der IF-Anweisung ist die Bedingung 
für die Verweigung.
Gast #4744710
Lesenswert?
• ▲
▼
Alex schrieb:
> Ich habe mich gerade gefragt, ob es eine "einfache" Möglichkeit gibt
> mein inzwischen ziemlich komplexes (viele Zeilen) C Projekt automatisch
> in eine Rohfassung eines Flow-Charts zu übersetzen. Das ist ja nun
> sicher ein Problem das jeder, der mehr oder weniger Programmiert und
> danach dokumentieren will schon einmal hatte,

Ehrlich gesagt, nein. Daher wirst du auch nicht viele Tools finden.

Kennst du den doofen Spruch "Wer Ordnung hält ist nur zu faul zum 
Suchen"? Der gilt umgekehrt auch für das Programmieren. Wer keine 
Ordnung hält, der muss halt suchen. Wer keine Lust hat zu Suchen sollte 
besser Ordnung halten.

Ordnung im Code hält man unter anderem durch Struktur, Konsistenz, 
Modularisierung.

Ordnung kann man auch nachträglich in Code bringen. Das nennt sich dann 
Refactoring. Für C gibt es mittlerweile ein paar Refactoring-Tools 
(Eclipse CDT hat ein paar einfache eingebaut), aber das Meiste muss man 
in C immer noch von Hand machen. Ach ja, Refactoring ist nicht das Ziel, 
sondern der Weg zu Ordnung. Refactoring ohne Sinn und Verstand nützt gar 
nichts.
Gast #4745073
Lesenswert?
• ▲
▼
Danke!
Ja, ich halte meinen Code schon für weitgehend gut dokumentiert und 
übersichtlich. Aber nichtsdestotrotz ist es ein Riesenprojekt... und für 
Leute die sich einarbeiten sollen wäre eine Übersicht schön, deshalb 
meine Hoffnung auf ein Programm, das mir zumindest Teile der 
Code-To-Flowchart-Arbeit abnimmt =)
Gast #4745191
Lesenswert?
• ▲
▼
Alex schrieb:
> Danke!
> Ja, ich halte meinen Code schon für weitgehend gut dokumentiert und
> übersichtlich. Aber nichtsdestotrotz ist es ein Riesenprojekt... und für
> Leute die sich einarbeiten sollen wäre eine Übersicht schön, deshalb
> meine Hoffnung auf ein Programm, das mir zumindest Teile der
> Code-To-Flowchart-Arbeit abnimmt =)

Warum erstellst du dann nicht einfach von Anfang an dein Programm
mit einem Flowchart to Code Programm ?

Vorteile:
-> Dein Flowchart ist die Basis für deinen Code
-> Der Code generiert sich nach deinem FlowChart
-> Du erstellst das Flowchart mit deiner gewählten Programmiersprache
-> Compilierst es mit deinem Compiler
-> Erstellst Bitmaps deiner allen möglichen Möglichkeiten im Programm
-> Der Code steht dir und anderen zur Verfügung
-> Das Flowchart stützt dich bei der Dokumentation

Nachteil:
-> Du musst dein Programm von Anfang an per Flowchart erstellen
Gast #4745220
Lesenswert?
• ▲
▼
Alex schrieb:
> prof.coder schrieb:
>> Warum erstellst du dann nicht einfach von Anfang an dein Programm
>> mit einem Flowchart to Code Programm ?
>
> Weil AVR Studio mit ASF der Ausgangspunkt des Projekts war. ;)

Dann überführe es doch in ein Flowchart to Code Programm,
keiner kennt den Code besser wie du.
Und dein Projekt ist in jedem Bereich visualisierbar,
auch in deinen "xxl if cases" oder was auch immer.
#4745226
Lesenswert?
• ▲
▼
Nop schrieb:
> (der Code ist schon seine eigene vollständige Doku!)

Das ist in der Realität eher selten der Fall.

Wenn man selbstsprechende Namen für Funktionen, Variablen usw. verwendet 
und die Funktionen schön klein und übersichtlich hält, mag das hinhauen. 
Freilich auch eher dann, wenn das Gesamtprojekt noch eine überschaubare 
Größe hat. Bei einem Projekt mit Millionen von Zeilen Code will ich mal 
denjenigen sehen, der sich den ganzen Sourcecode durchliest ;-)

Sich selbst dokumentierender Code ist nicht die Regel, sondern die 
Ausnahme. Leider.
Gast #4745830
Lesenswert?
• ▲
▼
Mark B. schrieb:
> Nop schrieb:
>> (der Code ist schon seine eigene vollständige Doku!)
>
> Das ist in der Realität eher selten der Fall.

Nein, das ist in der Realität immer der Fall.

Das Problem ist, dass mit der vollständigen Doku keiner was anfangen 
kann.  Es müssen (wie Nop schon schrieb) Details weggelassen werden und 
das Wesentliche klarer formuliert werden. Darum funktioniert weder C_to_ 
Flow noch Flow_to_C in der Praxis wirklich gut.

Was gut funktioniert ist z.B. Mathematische_Ausdrücke_To_C oder 
Spezial-Notation_to_Spezial-C.
Gast #4745836
Lesenswert?
• ▲
▼
prof.coder schrieb:
> Warum erstellst du dann nicht einfach von Anfang an dein Programm
> mit einem Flowchart to Code Programm ?

weil das nur dann sinnvoll ist, wenn die Modellierung in diesem 
Flowchart erfolgt (incl. Simulation etc.) und nicht nur das Zeichnen. 
Das geht z.B. mit Matlab/Simulink/Stateflow und macht meist nur 
eingeschränkt Sinn. Z.B. bei Mathematik-lastigen Anwendungen oder 
einfachen Statemaschines. Bei vielen realen Aufgaben bricht man sich 
aber dabei die Finger.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren