Forum: Offtopic Wie kann man Code dokumentieren?


von Jens P. (Gast)


Lesenswert?

Moin moin miteinander,

ich bin gerade im Abschluss meiner Technikerarbeit, jetzt stellt sich 
die Frage, wie ich meine Software (Relativ kleines vb.net Programm am PC 
zu Verwaltung) und ca 2200 Programmzeilen Code im Controller.

Wie stellt man sowas nun schön dar?

Eine PAP oder Struktogramm bis ins letzte Detail wäre ja ein absolut 
unüberschaubares Werk, und man würde viel schneller durch den gut 
kommentierten code steigen.

Wie macht man sowas üblicherweise?

Ein PAP, bei dem lediglich klartextbeschreibungen und als Pseudocode die 
Funktionsaufrufe stehen?

Würd mich über ein paar Anregungen freuen!

Liebe Grüße
Jens

von Michael S. (technicans)


Lesenswert?

Funktionsbeschreibung vielleicht was die Software macht und kann?
Kommt immer auch drauf an wer es liest. Da sollte man die oder den
mal fragen, ansonsten gibts da zich Möglichkeiten. Jede tiefere
Dokumentation dient eher dem Programmierer, wenn man etwas verbessern
oder ändern will, insbesondere wenn es jemand anders ist.
Ansonsten hat man ja die Kommentierung im Listing die man ja
je nach Wunsch ausführlich machen kann.

von Sven P. (Gast)


Lesenswert?

Jens Plappert schrieb:
> Wie stellt man sowas nun schön dar?
Am liebsten garnicht.

Sinnvoll ist die Dokumentation von Schnittstellen, etwa APIs. Da hat 
sich bei C-ähnlichen Sprachen Doxygen/qtdoc/javadoc etabliert, für Basic 
hat sich Microsoft sicherlich auch etwas völlig Unleserliches und 
Sperriges mit viel XML ausgedacht :-}

Im Quelltext selbst dann genau dort Kommentare, wo sie angebracht sind. 
Plattheiten ('bla setzen', 'Funktion aufrufen') solltest du vermeiden, 
du hast ja den Quelltext schon formuliert. Also brauchst du in der Regel 
nicht dasselbe nochmal auf Hochdeutsch drüber zu kommentieren. 
Kommentare sollen nämlich entgegen der Meinung vieler Manager nicht den 
Quelltext nachplappern, sondern ergänzende Informationen zum Verständnis 
liefern.

Von UML/PAP/Struktogrammen lasse ich schon lange die Finger. UML hält 
fast immer nur unnötig auf, ohne einen sinnvollen Beitrag zum 
Projektfortschritt zu leisten. PAP und Struktogramme sind bei 
ereignisorientierter Programmierung (GUI) meistens kaum zu handhaben. 
Für komplexe Algorithmen geht ein PAP aber nach wie vor voll in Ordnung, 
ohne Frage.

Problematisch wird es später, wenn Programm und PAP auseinandergehen. 
Etwa, weil nachträglich Änderungen ins Programm geflossen sind und 
niemand den PAP aktualisiert hat. Als Entwickler hält man sich dann 
sinnvollerweise an den Quelltext, denn der läuft ja (hoffentlich).

Das sollte natürlich nicht passieren. Tut es aber leider, insofern spar 
ich mir die Mühe mittlerweile und halte dafür lieber den Quelltext 
sauber.

von Uhu U. (uhu)


Lesenswert?

Sven P. schrieb:
> Problematisch wird es später, wenn Programm und PAP auseinandergehen.

Der Fall dürfte bei einer Technikerarbeit eher die Ausnahme sein.

> und halte dafür lieber den Quelltext sauber.

Ja, das ist sehr wichtig - nur ist Basic dabei eher hinderlich.

Ich halte es so, daß im Funktionskopf kurz der verwendete Algorithmus in 
Schritten sizziert wird und die einzelnen Schritte dann im Code markiert 
sind. So kann man auch nach längerer Zeit noch nachvollziehen, was man 
sich mal gedacht hat, als man das Ding entwarf.

Der ganze Formalkram, der als extra-Dokument zum Quelltext gepflegt 
werden muß, ist unbrauchbar, weil er im "richtigen Leben" schneller 
veraltet, als aktualisiert ist.

von Sven P. (Gast)


Lesenswert?

Genau so meinte ich das.

Separate Dokumentation kann man anlegen für wichtige Algorithmen. Die 
beschränkt sich dann aber sinnvollerweise darauf, den Algorithmus selbst 
und nicht seine Umsetzung in irgendeiner Programmiersprache zu 
beschreiben.

von Jens P. (Gast)


Lesenswert?

Vielen Dank für die ausführlichen Antworten.

Ich setz mich auf jeden Fall nochmal mit dme Betreuer zusammen, um zu 
erfahren ob und wie genau ein PAP oder ähnliches erstellt werden muss.

Ich selbst halte da für einfach Sachen ja auch nicht besonders viel von.

Ich habe im Quelltext z.B. 3 oder 4 Zeilen kurz im Kommentar erklärt wie 
sich bei mir die Menunavigation mit einem Array und den Breaks aufbaut 
und danach die einzelnen (selbsterklärend betitelten) Punkte 
"abprogrammiert". Meiner Meinung nach reicht sowas. Mal sehen, was der 
Cheffe dazu meint ;-)

von P. M. (o-o)


Lesenswert?

Code im Quelltext sauber dokumentieren ist schon die halbe Miete. Das 
geht z.B. mit Doxygen. Das Zusammenspiel des grossen Ganzen, die 
Architektur, beschreibt man separat, am besten auch etwas grafisch. Wo 
man eben sieht, welche Module miteinander wie verknüpft sind. Besonders 
komplizierte Algorithmen ebenfalls separat beschreiben, wenn 
gewissermassen als Forschungsergebnis deiner Arbeit dastehen. Da musst 
du wiederum entscheiden, wie du das am besten darstellst - kommt sehr 
auf den konkreten Fall an.

PAP und Struktogramm sind zur Dokumentation Humbug, ausser eben 
allenfalls für die Detailbeschreibung eines wichtigen, komplizierten 
Algorithmus.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

P. M. schrieb:
> Code im Quelltext sauber dokumentieren ist schon die halbe Miete. Das
> geht z.B. mit Doxygen.

Wobei man Doxygen nur benötigt, wenn die Doku separat rausgezogen
werden soll.  Bei einer Technikerarbeit halte ich das für nicht so
wahrscheinlich.  Sinnvolle Kommentare kann man auch ganz ohne
Doxygen schreiben. ;-)

Bei BASIC muss man dann sehen, wie man das brauchbar strukturieren
kann, damit man die einzelnen Bestandteile auch optisch erkennt.

von A. W. (uracolix)


Lesenswert?

Wenn auf beiden Seiten (PC und MCU) Statemachines implementiert sind,
d.h. die Programme reagieren auf Events, dann sind Zustandsgraphen
(graphviz) und Message Sequence Charts (mscgen) das Mittel der Wahl.
Man kann solche Bilder natuerlich auch haendisch z.B. mit
LibreOffice Draw oder Visio zeichnen.

Auch wenn Basic von Doxygen nicht direkt unterstuetzt wird, kann man
sich mit einem Filter helfen:
http://www.sevo.org/2010/06/doxygen-und-visual-basic-net/

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Axel Wachtler schrieb:
> dann sind Zustandsgraphen
> (graphviz) und Message Sequence Charts (mscgen) das Mittel der Wahl.

Hoffentlich ist die state machine nicht so groß, sonst muss man der
Arbeit ein A0-Blatt beilegen. :-))  (SCNR)

von A. W. (uracolix)


Lesenswert?

>Hoffentlich ist die state machine nicht so groß, sonst muss man der
>Arbeit ein A0-Blatt beilegen. :-))  (SCNR)

Obwohl so ein Stueck Techniker-Origamie nach DIN824 die Arbeit sicher
aufwertet ;-)

http://web.archive.org/web/20080621005033/www.mb.fh-stralsund.de/cad/websites/Normen/DIN824.html

von Jens P. (Gast)


Lesenswert?

:-P Das wärs noch.

Aber das stimmt, gerade die zwei Gegenüberstehenden Statemachines wären 
vielleicht wirklich ganz Interessant,vielleicht auch noch die des 
MIDI-Empfanges.

Der Hauptbatzen ist ja die Firmware, die ist zwar in Basic, aber eben 
eins ehr Hadrwarenahes Basic, da sehe ich in der Strukturierbarkeit 
ehrlich gesagt keinen Unterschied zu C.

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.