Unter welchen Umständen sind Flussdiagramme immer noch ein wertvolles und nützliches Werkzeug?

14

Als ich mit dem Programmieren anfing, stützte ich mich stark auf Flussdiagramme (und Druckerbeabstandungsdiagramme). Während ich in der COBOL-Klasse war, konnte ich keinen Code schreiben, bis mein Flussdiagramm vom Kursleiter abgemeldet wurde. Damals musste ich für alles ein Flussdiagramm erstellen.

Heute, fünfundzwanzig Jahre später, sehe ich mich nur noch zwei Arten von Dingen gegenüber. Sehr spezifische Algorithmen, bei denen die Logik knifflig ist oder sehr allgemeine Konzepte, um sicherzustellen, dass alle großen Schritte definiert und in der richtigen Reihenfolge ausgeführt werden.

Gibt es andere Anwendungsfälle für Flussdiagramme, die ich einfach übersehen habe?

Michael Riley - AKA Gunny
quelle

Antworten:

17

Absolut.

Immer, wenn ich etwas implementiere, was ich vorher noch nicht getan habe (und der Algorithmus mehr als ein paar Schritte benötigt), werde ich es aufzeichnen. Ich finde, dass es mich wirklich zwingt, die gesamte Lösung auf atomarer Ebene und gründlicher zu analysieren, als wenn es nicht geplant wäre. Ich finde, dass diese Praxis drei wesentliche Vorteile hat:

  • Weniger "oh craps", weil ich den gesamten Algorithmus durchdacht habe
  • Spült alle potenziellen Probleme aus, die im Rest des Systems auftreten können
  • Ermöglicht es mir, andere Benutzer problemlos durch den Algorithmus zu führen

Die zwei verschiedenen Gelegenheiten, in denen ich diese wirklich benutze, sind:

  • Algorithmen auf niedriger (ish) Ebene. Ich meine eine sehr spezifische Lösung für ein sehr spezifisches Problem. Ich werde diese in der Regel von Kollegen vor der Implementierung übergeben.
  • Benutzerfluss. Hiermit kann ich nicht nur an Kollegen vorbeikommen, sondern auch einem Usability-Experten den Ablauf (auf sehr nicht-technische Weise) erklären.

Abgesehen davon erstelle ich nicht täglich Flussdiagramme (und selbst wenn sie fertig sind, handelt es sich im Allgemeinen um eine Whiteboard-Sitzung, es sei denn, ich schreibe ein technisches Designdokument).

Demian Brecht
quelle
@Cape Cod Gunny: Dialogdesign-Diagramme sind möglicherweise etwas nützlicher (eine frühe Form des Aktivitätsdiagramms)
Steven A. Lowe
1
@Cape Cod Gunny: Möglicherweise ist auch Microsoft SketchFlow von Interesse.
Jörg W Mittag
12

noch nie

Flussdiagramme - insbesondere seit über 25 Jahren - wurden durch weitaus aussagekräftigere Diagrammtechniken ersetzt (siehe Aktionsdiagramme, Sequenzdiagramme, Zustandsdiagramme usw.).

IBMs eigene Untersuchungen zeigten , dass die Verwendung von Flussdiagrammen auf der Qualität eines Systems Design oder Umsetzung keine Wirkung hatte (obwohl sie für die Kommunikation mit den Nutzern und anderen Entwicklern marginal nützlich war) [genaue Angabe nicht ohne weiteres verfügbar, wurden aber in James Martin zitiert Diagramming Techniques für Analysten und Programmierer .

Steven A. Lowe
quelle
3
Ersetzt ist ein hartes Wort, wir haben jetzt einfach mehr Möglichkeiten. Ausdrucksvoller ist nicht immer besser. Meine Kunden möchten wissen, was die Software tut, und sie möchten keine Zeit mit dem Erlernen von UML verschwenden. Ich kann ihnen keine Vorwürfe machen.
maple_shaft
2
@Steven: +1, aber Flussdiagramme waren vor 25 Jahren schon lange vorbei. Als ich 1975 in Carnegie-Mellon eintrat, wurde die Forschungsprogrammierung an der CMU online in den Sprachen ALGOL, SAIL, PASCAL, LISP, Simula, C und anderen Hochsprachen durchgeführt, hauptsächlich unter Verwendung von EMACS. Niemand kümmerte sich um Flussdiagramme. Wir haben nur ein wenig Code geschrieben, getestet, korrigiert und dann noch etwas mehr geschrieben.
Kevin Cline
5
@Demian: Boxen und Pfeile sind wirklich alles, was Sie brauchen ;-)
Steven A. Lowe
1
@Steven Low und Steven Jeuris: Entschuldigung, ihr seid beide zu 100% korrekt. "Ersetzen" ist die übliche Schreibweise.
Kevin Cline
1
@Steven Jeuris: würde ich auch; Ich sah auch aus, fand aber nichts. Ich bin mir ziemlich sicher, dass mein Gedächtnis dort korrekt ist, wo ich es gelesen habe, aber im Moment sind leider alle meine Nachschlagewerke im Lager (Umzug). Die Studie ist mir in Erinnerung geblieben, weil sie von IBM in Eigenregie mit einer eigenen Flowchart-Vorlage durchgeführt wurde!
Steven A. Lowe
7

Ich habe seit meiner ersten Programmierstunde 1976 kein klassisches Flussdiagramm gezeichnet und seit den frühen 80ern niemanden mehr gesehen, der eines erstellt hat. Flussdiagramme waren nützlich, um die Programmlogik zu kommunizieren, wenn der Code in Assemblersprache war. In den späten 1960er Jahren verwendeten Assembler-Programmierer Pseudo-Code. Bei der Programmierung in modernen OO-Sprachen haben weder Flussdiagramme noch Pseudocode einen Wert. Sie können auch Code auf hoher Ebene in der Implementierungssprache schreiben.

Ich zeichne gelegentlich UML-Diagramme, meistens auf Papier, um Gestaltungsideen auszudrücken, aber diese Diagramme leben nur bis zum Ende der Diskussion. Von Zeit zu Zeit zeichne ich auch Zustandsübergangsdiagramme und konvertiere sie dann in eine Zustandstabelle in der Implementierungssprache.

Kevin Cline
quelle
5

Ich benutze die ganze Zeit Flussdiagramme aus einer Reihe von Gründen:

  1. Sie sind meiner Meinung nach besser als UML-Anwendungsfalldiagramme. Sie können eine Reihe von verschiedenen Anwendungsfällen widerspiegeln und wie sie interagieren, und sie leisten insgesamt eine bessere Arbeit, indem sie die Benutzererfahrung und Entscheidungen zusammenführen.

  2. Sie sind verständlicher und intuitiver. Dein Verstand folgt den Pfeilen natürlich wie ein Labyrinth von Anfang bis Ende. Sie können Flussdiagramme verwenden, um ein anderes Flussdiagramm für eine andere User Story zu beenden und darauf zu verweisen. Normalerweise kann ich sie in einem Buch mit Seitennummern drucken und schnell umblättern, um zum nächsten Flussdiagramm zu navigieren.

  3. Sie sind universell. Nur wenige Personen außerhalb des Software-Engineerings kennen und verstehen UML-Diagramme, bei denen Flussdiagramme für Benutzer und Geschäftsanalysten besser erkennbar sind. Ich versuche, Kunden komplexe Anwendungsfälle zu vermitteln, und sie haben manchmal Schwierigkeiten, diese zu verstehen. Ich zeichne ihnen ein Flussdiagramm und sie verstehen, warum sie endlich alle Nuancen verstehen, die sie VIEL komplexer machen, als sie dachten.

maple_shaft
quelle
4
+1 Für Flussdiagramme, die von Benutzern und BAs erkannt werden. Welches Tool Flowcharting Tool verwenden Sie?
Michael Riley - AKA Gunny
4
Flussdiagramme stellen überhaupt keine Anwendungsfälle dar. Wenn Sie ein Flussdiagramm mit einem UML-Diagramm korrelieren möchten, ähnelt es eher einem Sequenzdiagramm, Kommunikationsdiagramm oder Aktivitätsdiagramm. Tatsächlich sollen Aktivitätsdiagramme Workflows darstellen. Was meiner Meinung nach die UML-Aktivitätsdiagramme besser macht als ein Flussdiagramm, ist, dass die verwendeten Symbole und die verwendete Terminologie standardisiert sind, sodass jeder (der sie kennt) sie leicht lesen kann, ohne die Symbolbedeutungen nachschlagen zu müssen.
Thomas Owens
@Thomas, Verschiedene Striche ... Sie haben Recht, dass Aktivitätsdiagramme aussagekräftiger sind, aber mehr Eingabe, UML-Kenntnisse und wertvolle wertvolle Zeit erfordern, die ich einfach nicht habe, wenn der Kunde JETZT JETZT JETZT ein Diagramm benötigt !!! Ich kann ein schnelles und schmutziges Flussdiagramm erstellen. Dem Benutzer wird anhand des tatsächlichen UML-Anwendungsfalldiagramms der gesunde Menschenverstand vermittelt. Das Flussdiagramm geht auf das Wesentliche ein.
maple_shaft
2
@Cape, ich benutze nur Visio. Es ist sicherlich nicht das beste Werkzeug, aber Sie wissen, was sie sagen: Die Menschen suchen sich eine vertraute, komfortable Hölle über einem unbekannten fremden Himmel.
maple_shaft
@Maple - Danke. Ich bin überwältigt, weil ich dachte, Flussdiagramme seien nicht mehr relevant. Ich fühle mich wie ein Strauß ;-)
Michael Riley - AKA Gunny
3

Flussdiagramme sind nützlich, wenn bestimmte Aufgaben in einer bestimmten Reihenfolge ausgeführt werden müssen. Wo sie wirklich in meinem Kopf leuchten, zeigt sich, wo Entscheidungen getroffen werden, und stellt sicher, dass jede mögliche Entscheidung einen Weg hat. Auf diese Weise wird verhindert, dass Programme erstellt werden, für die eine Genehmigung von mamager erforderlich ist. Sie haben jedoch keine Möglichkeit, damit umzugehen, wenn der Manager (der in 98% der Fälle zustimmt) Nein sagt. Sie erinnern uns daran, dass der häufigste Weg nicht der einzige Weg ist. Ich finde sie nützlich, wenn ich mit Benutzern über Anforderungen spreche, da sie häufig nur den gängigsten Pfad angeben.

HLGEM
quelle
1

Flussdiagramme können für das Reverse Engineering von sehr schlecht strukturiertem Code nützlich sein. Besonders wenn es gotos hat. Zum Glück habe ich in letzter Zeit nicht viel Code gesehen, der noch nicht richtig verstanden wurde.

Wie andere für die Kommunikation mit Endbenutzern angegeben. Ich sortiere die Inbetriebnahme eines Fernsehsenders anhand eines Flussdiagramms. Die Hard- und Softwareleute hatten eine gemeinsame Spezifikation, an der sie arbeiten konnten.

Nick Keighley
quelle
0

UML-Aktivitätsdiagramm und Flussdiagramm sind nützlich, um die geringe bis mittlere Komplexität eines Prozesses oder Algorithmus darzustellen.

Sie sind sehr gut in der Kommunikation mit Geschäftsbenutzern über Geschäftsregeln.

Es gibt eine Variante der BPMN 2.0, die bei der Geschäftsprozessmodellierung sehr nützlich ist.

Einige BPMN-Tools können aus Diagrammen laufende Webanwendungen generieren.

Also ja, Flussdiagramme haben immer noch einen Platz, aber sie müssen mit Bedacht verwendet werden.

Keine Chance
quelle
-2

Ich bin kein Programmierer. Ich bin ein Hardwaretechniker.

Für mich ist es sinnvoll, zumindest mit Kommentaren zu beginnen, in denen die verwendeten logischen Blöcke erläutert werden. Anschließend das Programmskelett mit aktuellem Code ausarbeiten. Es ähnelt dem Starten eines Filmskripts mit einem Storyboard und dem anschließenden Ausfüllen der Aktionsdetails und des Dialogfelds.

Sollte ein lohnendes Unterfangen nicht sorgfältig geplant werden? Im Hardwarebereich beginnen wir mit einem Kundenanforderungsdokument, schreiben dann ein Hardwarespezifikationsdokument, erstellen den Schaltplan, zeichnen ein Platinenlayout und erstellen dann die Baugruppendokumentation. Wir fangen nicht nur an, Teile zu greifen und zusammenzulöten, sondern entwickeln Ideen für das Endprodukt.

Ich sehe nicht, wie effizient Code in einem 15KB oder 15MB Programm ohne viel Vorarbeit geschrieben werden kann, bevor die eigentliche Codierung gestartet wird.

mobileHman
quelle
1
Viele Leute halten Analogien zwischen Hardware und Software nicht unbedingt für relevant. Design-Code-Test-Zyklen in Software sind in Software viel schneller. Sogenannte agile Methoden schreiben zuerst einen Test und schreiben dann Code, um den Test zu bestehen. <br/> 15 KB sind recht klein, es kann sich also um eingebettete Software handeln, die möglicherweise "sehr geplant" ist, um sicherzustellen, dass sie den Spezifikationen entspricht. <br/> Die Space Shuttle-Software wurde mit den von Ihnen empfohlenen Techniken erstellt.
Nick Keighley
Auch Flussdiagramme sind nicht unbedingt das Werkzeug der Wahl für das Softwaredesign!
Nick Keighley