PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmablauf skizzieren, wie macht Ihr das?



Gock
29.05.2008, 11:09
Hallo!
Es ist immer wieder das Gleiche: bevor man mit dem Programmieren beginnt, braucht man einen Überblick über das zukünftige Programm, um seine Gedanken ordnen zu können, damit das Programmieren effektiver wird. Das ist umso nützlicher, je komplizierter das Programm ist.

Dazu gibt es verschiedene Ansätze:
- Flussdiagramme
- Statusdiagramme
- einfach drauf los schreiben
- ...

Ich programmiere in C und bevorzuge Diagramme, aber leider habe ich noch kein Patentrezept welches Diagramm ich bei welchem Programm nutzen soll, welche Symbole wie verknüpfen usw.
Es hängt auch davon ab, ob man ein eventgesteuertes Programm hat (Aufruf der Ppogramme per IRQs) oder ein zyklisch gesteuertes (Aufruf nach Zeitablauf oder Reihenfolge).
Mir fehlt die Routine, meine Gedanken zu Papier zu bringen und daher frage ich:

1. Wie macht Ihr das in den entsprechenden Fällen?
2. Nutzt Ihr Software dafür (welche)?
3. Kennt Ihr Literatur dazu (Buch, Internetlink)?
4. Sonstige Hinweise?
Danke schon mal,
Gruß Gock


PS: Habe das hier schon gefunden:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=21964&highlight=flussdiagramm
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=28496&highlight=flussdiagramm

gothmog
31.05.2008, 10:18
Hi,

für eventgetriebene Abläufe finde ich Zustandsautomaten sinnvoll. Ich mache sowas momentan mit Visio als UML-Diagramm. Das klappt ganz gut. Wenn man den Zustandsautomat sorgfältig konzipiert, ist das Coden nur noch Formalität. Als Beispiel hab ich was zur Steuerung des TWI angehängt, das hab ich als Grundlage für meine Implementierung vewendet.
Gruß
Jonas

Gock
31.05.2008, 13:42
Hallo!
Wenn ich mich nicht irre, dann ist das ein Mealy Automat und ein äußerst gutes Beispiel, danke.
Visio benutze ich auch, aber ich finde die Handhabung umständlich und schlecht. Außerdem können DIagramm leicht unübersichtlich werden und es benötigt recht viel Zeit.
Es wundert mich ein bisschen, dass das so wenige hier zu interessieren scheint. Dabei ist die Erstellung der Struktur eines Programms, wie Du ja auch sagst, per Diagramm doch um vieles leichter, als einfach drauflos zu programmieren und damit ein sehr starkes Werkzeug. Am Ende muss man nur noch die "Unterprogramme" schreiben und hat immer einen Überblick, auch 1 Jahr später.
Danke jedenfalls, das ist mal eine Anregung.
Gruß

oberallgeier
31.05.2008, 14:13
... Es wundert mich ein bisschen, dass das so wenige hier zu interessieren scheint... Na so ist es nicht ganz. Ich kann nur nicht mitreden. Meine Erfahrung mit Programmkonstruktion liegt etwas zurück (FORTRAN, Nassi-Shneidermann-Diagramme und mehrmals ein paar hundert Seiten Code - selbst verfasst oder verfassen lassen). Nun quäle ich mich seit ein paar Monaten in C hinein (aus eigenem Antrieb, ich wollte es immer lernen), und da ist (bei mir eben) die Programmkonstruktion noch total skizzenhaft, weil ich teils garnicht weiß, was erlaubt oder möglich ist.

Und Aussagen wie
... dann ist das ein Mealy Automat ... führen bei mir zu längerem Grübeln (und heftigem wikiklicken und so), weil ich den Automatismus darin nicht erkenne ...

gothmog
31.05.2008, 14:38
Visio benutze ich auch, aber ich finde die Handhabung umständlich und schlecht
Ich muss zugeben, dass ich bis jetzt nur mit Visio gearbeitet habe. Bin allerdings auch unzufrieden. Ich orientiere mich bei der Modellierung an UML2.1, und das stellt Visio nicht vollständig zur Verfügung. In der Firma, wo ich als Werkstudent arbeite, verwenden sie Rhapsody. Das muss ziemlich genial sein, allerdings auch unerschwinglich:(


Außerdem können DIagramm leicht unübersichtlich werden und es benötigt recht viel Zeit.

Das ist aber glaub ich nicht Visio-spezifisch. Bei Zustandsautomaten z.B. kann man einfach nur einen begrenzten Funktionsumfang in einem Diagramm darstellen (viel mehr als in dem TWI-Beispiel sollte man m.E. nicht auf ein Blatt packen). Es gibt aber Mittel, um ein umfangreicheres Modell (entweder ein großer Zustandsautomat, oder mehrere kleinere, die interagieren) sinnvoll auf viele Diagramme aufzuteilen(z.B. durch zusammengesetzte Zustände).

Gruß
Jonas

Gock
31.05.2008, 15:12
@gothmog
Diagramme, die nach UML gefertigt sind, habe ich schon mal gesehen. Sie wurden verwendet für sehr umfangreiche Zustandsautomaten, ist für meinen Fall wahrscheinlich zu viel des Guten.
Mit unübersichtlich und Visio meine ich u.a., dass das automatische Layouting der Verknüpfungen unschön ist. Sie werden meist viel zu nah an vorhandene Elemente verlegt, überkreuzen sich genauso zahlreich wie schamlos und die Labels der Verknüpfungen liegen überall, nur nicht dort, wo man sie haben will. Um das dann wieder aufzuräumen, braucht man etwas Zeit...
Außerdem ärgert es mich, dass es keine Bibliotheken gibt, die eben genau die Elemente enthahlten, die für einen bestimmten Diagrammtyp notwendig sind, zB für das genannte Nassi-Shneidermann Diagramm. Die einzelnen Elemente zu finden kann schon mal in Zorn ausarten.
Aber gerade zu letzterem gibt es die typischen "Schleifen-Elemente", dummerweise sind sie nicht in gewohnter Weise beschriftbar, was sie wieder überflüssig macht.

@ oberallgeier
Dann sprichst Du von Diagrammen, die schon recht tief ins Detail gehen (Schleifen usw.) Ich würde gerne Diagramme erstellen, die in jede Sprache übertragbar wären, egal welche Form eine Schleife hat. Also quasi eine Schnittstelle zwischen Code und "menschlichem Verständnis".
Dazu gibt es auch was interessantes von Atmel:
Den AVR Builder, leider nur für Assembler. Das ist eine Software, mit der man im Diagrammstil programmiert.
http://www.atmel.com/dyn/resources/prod_documents/avr_builder.pdf
http://www.scienceprog.com/algorithm-builder-for-avr-if-you-like-assembling/
http://algrom.net/
Gibt es sowas auch für C???
Gruß

PICture
31.05.2008, 16:25
Ich würde gerne Diagramme erstellen, die in jede Sprache übertragbar wären, egal welche Form eine Schleife hat. Also quasi eine Schnittstelle zwischen Code und "menschlichem Verständnis".


Schau dir, bitte, das an:

https://www.roboternetz.de/wissen/index.php/PIC_Assembler#Programmablaufdiagramm

Vielleicht ist es das, was du suchst?

MfG

ErNa
31.05.2008, 19:44
Das beste Werkzeug ist ja in der Regel eine Kombizange. Ich möchte wie schon an anderer Stelle, mal für CMapTools Reklame machen. Nicht, weil ich daran beteiligt bin, sondern weil die Entwicklung von Anwendungen eines solchen Werkzeuge nur Sinn macht, wenn man sie mit anderen teilt. Denn jede Entwicklung ist zuerst einmal Arbeit und muss motiviert werden. http://cmapspublic3.ihmc.us:80/servlet/SBReadResourceServlet?rid=1193930895701_686240336_ 10261&partName=htmltext zeigt an einem Beispiel, wie man eine Programmstruktur visualisiert

Gock
31.05.2008, 19:55
@PICture
Ja, so mache ich das zur Zeit, aber es wird auf Grund fehlender Übung gelegentlich noch etwas unübersichtlich, vor allem, wenn man mehrere Interrupts hat. Aber das geht schon.
Mich interessiert, wie das andere machen, die öfters programmieren als ich.

@ErNa
Das sieht schon ganz gut nach einer Software aus, die das Erstellen von Diagrammen vereinfacht.
Unterschiedliche Formen bei unterschiedlichen Knoten könnten vielleicht helfen.
Wenn man ein eindeutiges Diagramm hat, wäre es theoretisch ja auch möglich, daraus den Code generieren zu lassen...
Entwickelst Du daran mit?
Kann es sein, dass bei vielen Programmieren zumindest im Hobbybereich die Einstellung vorherrscht, dass "man sowas nicht braucht"? Ich höre das gelegentlich...

ErNa
31.05.2008, 20:06
Ja. ;-) Ich glaube, dass man auf dieser Basis wirklich etwas Gutes machen kann. Sie ist nicht eigentlich dafür vorgesehen, aber genau das gibt auch die Freiheit. Es existiert eine XML-Schnittstelle. Es gibt sehr viele Freiheiten für die Darstellung, aber es gibt noch keine Festlegung, wie man was codiert. Mein Ziel ist natürlich eine graphische Programmierung, ich hatte so was schon mal vor 20 Jahren, aber dann hat man mir den Prozessor geklaut. Jetzt ist er wieder da ;-). Aber ich suche noch Leute, die mitmachen.

ähM_Key
31.05.2008, 22:46
Für überschaubare Sachen nehme ich auch gerne Viso:

http://www.abload.de/thumb/zwischenablage-1hm6.jpg (http://www.abload.de/img/zwischenablage-1hm6.jpg)

Am Anfang fand ich's auch schlimm, aber wenn man die Buttons zum automatischen Ausrichten, Gruppieren und die Layer gefunden hat, geht's ganz gut.

Ansonsten kann ich auch Code-Generierende Tools wie VisualState empfehlen. Bedarf zwar einiger Einarbeitung, aber dann sind Änderungen schnell zu machen.

NumberFive
01.06.2008, 08:29
objectiF ist auch so ein Tool mit Code Generator aber für .net zu Testen bin ich leider nicht gekommen.

Sicher sind solche vorbereitungen supper aber ich bin ganz ehrlich mir fehlt oft die Zeit bzw. die Geduld solche dinger zu machen. Kann gott sei danke relativ komplexe dinge im Kopf "planen". Währe aber an einem guten Tool auch Interessiert den ich wärde älter und das Dokumentiern des ergibnisse sollte dann einfacher sein (Programm beschreibung).

In sofern werde ich weiter kräftig mit lesen.

Gruß

gothmog
01.06.2008, 09:36
@ähM_Key: VisualState sieht gut aus, das lad ich mir mal runter. Mit den 20 states, die die Testversion ermöglicht, kann man sicher schon einiges anfangen.

EDIT: Hab grad gesehen, dass es das für 25$ gibt(zumindest eine 5.xx Version). Das könnte man sich ja sogar als Hobbyist leisten \:D/

Gruß
Jonas

ErNa
01.06.2008, 09:54
Man muss eigentlich nicht erneut erklären, welche Vorteile offene Software hat. CMapTools sind nicht offen. Aber sie haben eine definierte Schnittstelle und sie sind auch für Programmplanungen brauchbar, nicht dafür gemacht. Das bedeutet: man kann auch die Schnelle auch mal was anderes machen. Mein Interesse ist es, um CMaptools herum einige (offene) Werkzeuge zu haben um dann das zu realisieren, was man so braucht.

ErNa
01.06.2008, 10:04
Um mal noch einen kleinen Einblick zu geben: http://www.e-teaching.org/didaktik/gestaltung/visualisierung/abstrakt/Concept_Maps.pdf ist ein Papier, das Concept Mapping beschreibt. Ein Hobby wie Roboterbau bringt doch auch blutige Profis und ausgefuchste Amateure zusammen und keiner sollte sich zu schade oder zu bescheiden sein, auch mal die Sicht des anderen anzunehmen.

Gock
01.06.2008, 11:50
VisualSTate ist etwas, wie ich es mir wünsche, werde ich mir mal ansehen.

objectiF sieht auf den ersten Blick sehr übersichtlich aus.

Wichtig ist auch die Interaktion mit der Software. Sie muss schnell und eindeutig sein, anders als die Zeichnungsmodi von Standardsachen wie Powerpoint oder Word.

CMap Tools erscheinen äußerst interessant. Eine graphische Darstellung von Informationen und deren Verknüpfung, die eventuell eine Verbindung zu einer Datenbank haben, ähnlich der elektronischen Version einer MindMap.
Das hat zwar so nicht direkt etwas mit Programmierung zu tun (außer, dass es programmiert werden muss), aber es ist etwas, was bei dem steigenden Informationsangebot langsam notwendig wird, um die Effizienz beim Suchen zu steigern.
Außerdem komme ich immer mehr an die Grenze, meine eigenen Daten zu sortieren und zu speichern und zwar so, dass man sie auch schnell wiederfindet. Die Links sind im Browser, Notizen und Termine in Outlook, Dateien im Explorer...
An einem funktionierenden System "arbeite" ich solange ich einen PC besitze. Dafür scheinen CMaps prädestiniert...

ErNa
01.06.2008, 15:46
Der Kern der Kerne ist berührt! Die von Gock angeführten Argumente sind sämtlich zutreffend. Ich besitze ein solches System, aber es ist nicht benutzerfreundlich, da heißt, es hat keine Farben, keine Maus, kennt nur Sparta und sagt den üblichen Benutzern einfache: friss Vogel oder benutzte Windows. CMap ist nun für mich das Mittel der Wahl, um eine Brücke zu modernen Technologien zu schaffen (die ich nicht verwerfe, die ich nur missbraucht sehe). Wie gesagt: Jeder sieht als die natürliche Lösung zuerst die an, die er kennt. CMap muss man kennenlernen, man kann es wirklich benutzten, um eigenen Dateien auf dem Rechner zu verwalten, es ist aber unhandlich, wenn es viele werden. Aber über diese Schwäche kann man weg, wenn man weiß wie und wenn alles funktioniert. Als ich das mal versucht habe, war es noch sehr instabil, heute sollte es gehen.

ErNa
02.06.2008, 10:01
Wenn jemand sich die CMap-Tools von der Download-Seite runterläd, dann kurz melden, ich gebe dann die Adresse der Map bekannt, die kann dann auf dem Server geöffnet und bearbeitet werden.

ErNa
07.06.2008, 10:47
Ok, eine erste Antwort gab es schon mal. Mal sehen, wie es weitergeht.