Forum: Mikrocontroller und Digitale Elektronik Automatisch Code zu Flowchart


von Alex (Gast)


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

von Dennis S. (eltio)


Lesenswert?

Zum Nachvollziehen nutze ich gerne die "Call Hierarchy" von Eclipse CDT. 
Aber zum Dokumentieren ist das leider nicht so richtig geeignet. :-(

Gruß
Dennis

von Achim (Gast)


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

von Bernd K. (prof7bit)


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.

von Nop (Gast)


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.

von Bernd K. (prof7bit)


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.

von Nop (Gast)


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.

von Sebastian S. (amateur)


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?

von Dieter F. (Gast)


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.

von I <3 makefiles (Gast)


Lesenswert?

> Gibt es Freeware oder Tools die ihr dafür empfehlen könnt?
1
$ make docs
2
:
3
$ xdg-open docs/Index.html

von Nop (Gast)


Lesenswert?

Sebastian S. schrieb:
> Wie soll denn ein Programm, das einen Text liest, feststellen wann
> welche Verzweigung greift?

Das schrieb ich bereits: gar nicht.

"Dazu muß man aber inhaltlich verstehen, was wichtig ist und was nicht, 
und das können Computerprogramme nicht."

von Dieter F. (Gast)


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.

von Jack (Gast)


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.

von Hans M. (Gast)


Lesenswert?


von Alex (Gast)


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 =)

von Dieter F. (Gast)


Lesenswert?

Alex schrieb:
> deshalb
> meine Hoffnung auf ein Programm,

Na, dann bin ich aber sehr gespannt, welche Erfahrungen Du mit 
Crystal... machen wirst. Bitte berichte ...

von prof.coder (Gast)


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

von Alex (Gast)


Lesenswert?

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. ;)

von prof.coder (Gast)


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.

von Mark B. (markbrandis)


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.

: Bearbeitet durch User
von Achim (Gast)


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.

von Achim (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.