Ένα απλό διάγραμμα ροής που δείχνει μια διαδικασία αντιμετώπισης μιας λάμπας που δε λειτουργεί.
**Διάγραμμα ροής** ή **ροογράφημα** (flowchart) είναι ένα κοινού τύπου διάγραμμα που αναπαριστά έναν αλγόριθμο ή μια διαδικασία, δείχνοντας τα βήματα ως κουτιά διαφόρων ειδών που συνδέονται μεταξύ τους με βέλη. Αυτή η διαγραμματική παρουσίαση μπορεί να δώσει λύση βήμα προς βήμα σε ένα γνωστό πρόβλημα. Τα δεδομένα αναπαριστώνται σε κουτιά και τα βέλη δείχνουν τη ροή των δεδομένων. Τα διαγράμματα ροής χρησιμοποιούνται στην ανάλυση, το σχεδιασμό, την τεκμηρίωση ή τον έλεγχο μιας διαδικασίας ή ενός προγράμματος σε διάφορα πεδία.

Ιστορία
-------

Η πρώτη δομημένη μέθοδος ανάλυσης της ροής μιας διαδικασίας, παρουσιάστηκε από τον Frank Gilbreth στα μέλη της «Αμερικάνικης Κοινότητας Μηχανολόγων Μηχανικών» (ASME) το 1921 στα πλαίσια του «Διάγραμμα Ροής-Πρώτα βήματα στην εύρεση της καλύτερης λύσης». Τα εργαλεία του Gilbreth γρήγορα βρήκαν το δρόμο τους στον κύκλο της βιομηχανικής μηχανικής. Στις αρχές της δεκαετίας του 1930 ένας μηχανικός, ο Allan H. Mogensen ξεκίνησε να εκπαιδεύει επιχειρηματίες στη χρήση κάποιων εργαλείων της βιομηχανικής μηχανικής στα πλαίσια των συνεδρίων «Απλοποίηση των εργασιών» στο Lake Placid της Νέας Υόρκης.

Ένας απόφοιτος του 1944 της τάξης του Mogensen, ο Art Spinanger υιοθέτησε αυτά τα εργαλεία στην Procter and Gamble όπου ανέπτυξε το Deliberate Methods Change Program. Άλλος ένας απόφοιτος, ο Ben S. Graham, διευθυντής του Formcraft Engineering at Standard Register Corporation, προσάρμοσε το διάγραμμα ροής διαδικασιών στην επεξεργασία πληροφοριών με την ανάπτυξη του διαγράμματος πολλαπλών ροών για να δείξει πολλαπλά δεδομένα και τις σχέσεις μεταξύ τους. Το 1947, η ASME βελτίωσε ένα σύμβολο, το ASME Standard for Process Charts των Mishad, Ramsan και Raiaan, το οποίο υπήρχε στο αρχικό έργο του Gilbreth.

Ο Daglas Hartree εξήγησε πως το διάγραμμα ροής των Herman Goldstine και John Von Neuman (αρχικά "diagram") μπορεί να σχεδιάσει προγράμματα για υπολογιστές. Η προχωρημένη του έκθεση εγκρίθηκε από τους μηχανικούς της IBM. Το αρχικό διάγραμμα ροής των Goldstine και Von Neuman μπορεί να εντοπιστεί στην αδημοσίευτη αναφορά τους «Σχεδιάζοντας και κωδικοποιώντας προβλήματα για ένα ηλεκτρονικό υπολογιστικό όργανο, Μέρος ΙΙ, Τόμος Ι», (1947).

Το διάγραμμα ροής είναι ένα διαδεδομένο μέσο για την περιγραφή υπολογιστικών αλγορίθμων.
Μοντέρνες τεχνικές όπως τα UML Activity Diagrams μπορούν να θεωρηθούν ως επεκτάσεις αυτού του διαγράμματος. Στη δεκαετία του 1970, η δημοτικότητα των διαγραμμάτων ροής μειώθηκε όταν διαδραστικά computer terminals και γλώσσες προγραμματισμού τρίτης γενιάς έγιναν τα συνηθισμένα εργαλεία για τον προγραμματισμό υπολογιστών, αφού οι αλγόριθμοι μπορούν να εκφραστούν πιο συνοπτικά και ευανάγνωστα ως "κώδικας πηγής" σε τέτοια γλώσσα. Συχνά χρησιμοποιούνται ψευτο-κώδικες, που χρησιμοποιούν τους κοινούς ιδιωματισμούς τέτοιων γλωσσών χωρίς να εισχωρούν σε λεπτομέρειες.

Παραδείγματα
------------

Ένα απλό διάγραμμα ροής για τον υπολογισμό του Ν παραγοντικό(N!)
Ένα διάγραμμα ροή υπολογισμού του Ν παραγοντικό (Ν!), όπου Ν!=(1\*2\*3\*...\*Ν) φαίνεται στην εικόνα. Αυτό το διάγραμμα αναπαριστά ένα loop and a half- μια κατάσταση που συζητείται σε εισαγωγικά εγχειρίδια προγραμματισμού, η οποία προϋποθέτει είτε την αναπαραγωγή ενός στοιχείου (συνιστώσας) είτε ένα στοιχείο τοποθετημένο μέσα σε ένα κλάδο του loop.)

Σύμβολα
-------

Ένα τυπικό διάγραμμα ροής από παλαιότερα εγχειρίδια της επιστήμης των υπολογιστών μπορεί να περιλαμβάνει τα ακόλουθα είδη συμβόλων:

Σύμβολα Έναρξης και Λήξης
Αναπαριστώνται ως κύκλοι, οβάλ ή στρογγυλεμένα ορθογώνια παραλληλόγραμμα που περιέχουν τη λέξη «έναρξη», «ληξη» ή μια φράση που να δείχνει την αρχή ή το τέλος της διαδικασίας.

Βέλη
Δείχνουν αυτό που ονομάζεται στην επιστήμη των υπολογιστών «ροή ελέγχου». Ένα βέλος που έρχεται από ένα σύμβολο και καταλήγει σε ένα άλλο δείχνει ότι ο έλεγχος ακολουθεί την ίδια πορεία.

Στάδια Επεξεργασίας
Αναπαριστώνται από ορθογώνια παραλληλόγραμμα, π.χ. «πρόσθεσε 1 στο Χ», «αποθήκευσε τις αλλαγές» κ.λ.π.

Είσοδος/Έξοδος
Παρουσιάζονται ως παραλληλόγραμμα, π.χ. «δείξε Χ», «πάρε το Χ από τον χρήστη» κ.λ.π.

Υποθέσεις/Αποφάσεις
Αναπαριστώνται από ρόμβους. Τυπικά περιέχουν ερώτηση «ΝΑΙ/ΟΧΙ» ή «ΑΛΗΘΕΣ/ΨΕΥΔΕΣ». Αυτό το σύμβολο συνήθως έχει δύο βέλη να βγαίνουν από αυτό, ένα από το πλάι που αντιστοιχεί στο ΟΧΙ/ΨΕΥΔΕΣ και ένα από κάτω που αντιστοιχεί στο ΝΑΙ/ΑΛΗΘΕΣ. Τα βέλη πρέπει πάντα να σημειώνονται. Μια απόφαση είναι απαραίτητη σε ένα διάγραμμα ροής. Μπορούν να χρησιμοποιηθούν παραπάνω από δύο βέλη, αλλά αυτό δείχνει ότι πρόκειται για μια σύνθετη απόφαση και σε αυτή την περίπτωση μπορεί να χρειαστεί να αναλυθεί περαιτέρω ή να αντικατασταθεί από το σύμβολο «προ-καθορισμένη διαδικασία».

Μια σειρά από σύμβολα που είναι λιγότερο διαδεδομένα διεθνώς είναι:

* Ένα *έγγραφο* αναπαριστάται από ένα ορθογώνιο παραλληλεπίπεδο με κυματιστή βάση
* Μια *Manual είσοδος* αναπαριστάται από ένα παραλληλόγραμμο με το πάνω μέρος να γέρνει δεξιά και αριστερά
* Μια *Manual λειτουργία* αναπαριστάται από ένα τραπέζιο με τη μεγαλύτερη παράλληλη πλευρά στην κορυφή και δείχνει μια διαδικασία που μπορεί να γίνει μόνο με το χέρι
* Ένα *αρχείο δεδομένων* αναπαριστάται από έναν κύλινδρο

Τα διαγράμματα ροής μπορεί να περιέχουν και άλλα σύμβολα, όπως συνδέσμους για να δείξουν διαδρομές που συγκλίνουν, οι οποίοι συνήθως αναπαριστώνται από κύκλους. Οι κύκλοι θα έχουν περισσότερα από ένα βέλη ερχόμενα προς αυτούς, αλλά μόνο ένα εξερχόμενο. Κάποια διαγράμματα μπορεί να έχουν ένα βέλος, το οποίο να καταλήγει σε ένα άλλο. Αυτό είναι χρήσιμο στην αναπαράσταση μιας επαναληπτικής διαδικασίας (loop). Μια τέτοιου είδους διαδικασία για παράδειγμα, μπορεί να περιέχει έναν σύνδεσμο στον οποίο εισέρχεται πρώτα ο έλεγχος, μετά να ακολουθούν τα στάδια επεξεργασίας, μια απόφαση με ένα βέλος να εξέρχεται και ένα ακόμη να γυρνάει πίσω στο σύνδεσμο. Σύνδεσμοι «εκτός-σελίδας» χρησιμοποιούνται συνήθως για να εκφράσουν μια σύνδεση σε μια διαδικασία που συνεχίζεται σε άλλη σελίδα ή άλλη οθόνη. Είναι σημαντικό να διατηρείται μια λογική σειρά σε αυτές τις συνδέσεις. Όλες οι διαδικασίες θα πρέπει να ξεκινούν από την κορυφή προς το τέλος και από τα δεξιά προς τα αριστερά.

Τύποι Διαγραμμάτων Ροής
-----------------------

Ο Sterneckert (2003) δήλωσε ότι τα διαγράμματα ροής μπορούν να μοντελοποιηθούν από τη σκοπιά των διαφορετικών ομάδων χρηστών (managers, αναλυτές συστημάτων ή υπαλλήλοι) και γι’ αυτό υπάρχουν τέσσερεις γενικοί τύποι:

* *Διάγραμμα ροής εγγράφων*, που ρυθμίζει τη ροή εγγράφων μέσα σε ένα σύστημα
* *Διάγραμμα ροής δεδομένων*, που ρυθμίζει τη ροή δεδομένων μέσα σε ένα σύστημα
* *Διάγραμμα ροής συστημάτων*, που ρυθμίζει τη ροή των πόρων μέσα σε ένα σύστημα
* *Διάγραμμα ροής προγραμμάτων*, που ρυθμίζει τα προγράμματα μέσα σε ένα σύστημα

Κάθε τύπος διαγράμματος εστιάζει σε κάποιο είδος ελέγχου, παρά σε μια συγκεκριμένη ροή αυτή καθεαυτή.

Ωστόσο, υπάρχου διάφορες ταξινομήσεις. Για παράδειγμα, ο Andrew Veronis (1978) ονόμασε τρεις βασικούς τύπους διαγραμμάτων: τα διαγράμματα ροής συστημάτων, τα γενικά διαγράμματα και τα αναλυτικά διαγράμματα ροής. Τον ίδιο χρόνο, ο Marilyn Bohl δήλωσε «στην πράξη χρησιμοποιούνται δύο είδη διαγραμμάτων για το σχεδιασμό λύσεων: τα διαγράμματα συστημάτων και τα διαγράμματα προγραμμάτων...». Πιο πρόσφατα, ο Mark A. Fryman (2001) δήλωσε ότι υπάρχουν πιο πολλές διαφορές: «διαγράμματα απόφασης, λογικά διαγράμματα, διαγράμματα συστημάτων, προϊόντων και διαδικασιών είναι λίγοι από τους διαφορετικούς τύπους που χρησιμοποιούνται στις επιχειρήσεις και στην κυβέρνηση. Επιπλέον, πολλές διαγραμματικές τεχνικές που υπάρχουν είναι παρόμοιες με τα διαγράμματα ροής, αλλά έχουν διαφορετικό όνομα, όπως UML, διαγράμματα δραστηριοτήτων και άλλα.

Λογισμικά
---------

Οποιοδήποτε πρόγραμμα σχεδίασης μπορεί να χρησιμοποιηθεί για να δημιουργήσει ένα διάγραμμα ροής. Κάποια εργαλεία προσφέρουν ειδική υποστήριξη για τη σχεδίαση διαγραμμάτων όπως Visio, OmniGraffle, Koffice-kivio. 

Αυτόματα
Υπάρχουν πολλά πακέτα λογισμικού που μπορούν να δημιουργήσουν διαγράμματα ροής αυτόματα, είτε αμέσως με έναν «κώδικα πηγής», είτε με μια γλώσσα περιγραφής διαγραμμάτων.

Βασισμένα στο Διαδίκτυο
Πρόσφατα, έχουν γίνει διαθέσιμες διάφορες λύσεις διαγραμμάτων διαδικτυακά.

Δείτε επίσης
------------

Σχετικά διαγράμματα
* Διάγραμμα ροής ελέγχου
* Γράφος ροής ελέγχου
* Διάγραμμα ροής δεδομένων
* Deployment flowchart
* Flow map
* Functional flow block diagram
* Διάγραμμα Nassi–Shneiderman
* N2 Chart
* Δίκτυα Petri
* Διάγραμμα Sankey
* Διάγραμμα State
* Warnier-Orr

Σχετικά θέματα
* Augmented transition network
* Business process illustration
* Business Process Mapping
* Λογισμικό διαγραμμάτων
* Process architecture
* Ψευδοκώδικας
* Recursive transition network
* Unified Modeling Language (UML)

Αναφορές
--------

1. ↑  SEVOCAB: Software and Systems Engineering Vocabulary. Term: *Flow chart*.
2. ↑  Graham, Jr. Ben S. (10 Ιουνίου 1996). «People come first». *Keynote Address at* Workflow Canada.
3. ↑  Hartree, Douglas (1949). *Calculating Instruments and Machines*. The University of Illinois Press. σελ. 112.
4. ↑  Bashe, Charles (1986). *IBM's Early Computers*. The MIT Press. σελ. 327.
5. ↑  Taub, Abraham (1963). *John von Neumann Collected Works*. **5**. Macmillan. σελίδες 80–151.
6. 1 2  Bohl, Rynn: "Tools for Structured and Object-Oriented Design", Prentice Hall, 2007.
7. ↑  Farrell, Joyce (2008). "Programming Logic and Design, 5th ed". Comprehensive
8. 1 2  Alan B. Sterneckert (2003)*Critical Incident Management*. p. 126
9. ↑  Andrew Veronis (1978) *Microprocessors: Design and Applications*. p. 111
10. ↑  Marilyn Bohl (1978) *A Guide for Programmers*. p. 65.
11. ↑  Mark A. Fryman (2001) *Quality and Process Improvement*. p. 169.