Ροή δεδομένων

Ο όρος ροή δεδομένων (Dataflow) χρησιμοποιείται στην πληροφορική και έχει διάφορες σημασίες. Έχει στενή σχέση με το πέρασμα μηνυμάτων.

Αρχιτεκτονική λογισμικού

Η ροή δεδομένων είναι μια αρχιτεκτονική λογισμικού που βασίζεται στην ιδέα ότι η τροποποίηση της τιμής μιας μεταβλητής πρέπει αυτόματα να επιβάλλει τον υπολογισμό από την αρχή όλων των μεταβλητών που εξαρτώνται από αυτήν.
Ο προγραμματισμός ροής δεδομένων ενσωματώνει αυτές τις αρχές, με τα λογιστικά φύλλα να αποτελούν το πιο γνωστό παράδειγμα εφαρμογής του. Για παράδειγμα, σε ένα λογιστικό φύλλο μπορεί να οριστεί ένας τύπος σε ένα κελί που να εξαρτάται από άλλα κελιά, ώστε όταν οποιοδήποτε από αυτά αλλάξει τιμή, αυτόματα να υπολογίζεται πάλι η τιμή του πρώτου κελιού. Είναι πιθανό μια αλλαγή να δημιουργήσει μια ολόκληρη ακολουθία από αλλαγές, καθώς ένα κελί μπορεί να εξαρτάται από ένα άλλο κελί, το οποίο να εξαρτάται από ένα άλλο κελί, κλπ.
Η τεχνική ροής δεδομένων δεν περιορίζεται στον επανυπολογισμό αριθμητικών τιμών, όπως περιγράφηκε παραπάνω. Για παράδειγμα, η ροή δεδομένων μπορεί να χρησιμοποιηθεί για να επανασχεδιαστεί μια εικόνα ανάλογα με τις κινήσεις του ποντικιού, ή να κάνει στροφή ένα ρομπότ αποκρινόμενο σε αλλαγές του επιπέδου του φωτός.
Ένα πλεονέκτημα της ροής δεδομένων είναι ότι μπορεί να μειώσει την ποσότητα του κώδικα σε ένα πρόγραμμα που χειρίζεται τις εξαρτήσεις μεταξύ δεδομένων. Για παράδειγμα, χωρίς τη ροή δεδομένων, αν μια μεταβλητή Y εξαρτάται από μια μεταβλητή X, τότε όταν η X αλλάζει, η Y πρέπει να υπολογιστεί πάλι. Αυτό σημαίνει ότι η Y είναι συνδεδεμένη με τη X και ότι η λειτουργία της ανανέωσης πρέπει να υπάρχει ρητά στο πρόγραμμα με την πρόσθεση ελέγχου που να αποφεύγει τις κυκλικές εξαρτήσεις. Η ροή δεδομένων βελτιώνει αυτήν την κατάσταση αυτοματοποιώντας τον επανυπολογισμό της Y, αφαιρώντας τη σύνδεση από τη X στην Y. Η ροή δεδομένων κρύβει αρκετούς υπολογισμούς που σε άλλα προγραμματιστικά παραδείγματα πρέπει να εκφράζονται ρητά.
Η ροή δεδομένων συχνά επίσης αναφέρεται και ως αντιδραστικός προγραμματισμός (reactive programming).
Υπάρχουν αρκετές γλώσσες προγραμματισμού που δημιουργήθηκαν ειδικά για να υποστηρίζουν τη ροή δεδομένων. Επιπλέον, πολλές (αν όχι οι πιο πολλές) οπτικές γλώσσες προγραμματισμού έχουν βασιστεί στην ιδέα της ροής δεδομένων.
Οι κατανεμημένες ροές δεδομένων έχουν επίσης προταθεί σαν προγραμματιστική αφαίρεση που συλλαμβάνει τη δυναμική των κατανεμημένων πολυ-πρωτοκόλλων (distributed multi-protocols). Η έμφαση στα δεδομένα που είναι χαρακτηριστικό του προγραμματισμού ροής δεδομένων ενθαρρύνει ένα υψηλού επιπέδου συναρτησιακό στυλ για τη συγγραφή των προδιαγραφών (specifications) και απλοποιεί την τυπική ανάλυση των μονάδων ενός συστήματος.

Ταυτοχρονισμός

Ένα δίκτυο ρής δεδομένων είναι ένα δίκτυο από διεργασίες που εκτελούνται ταυτόχρονα ή από αυτόματα που μπορούν να επικοινωνούν στέλνοντας δεδομένα μέσω καναλιών (channels), για περισσότερες πληροφορίες δείτε πέρασμα μηνυμάτων. 
Στα δίκτυα διεργασιών Kahn, τα οποία πήραν το όνομά τους από τον Gilles Kahn, οι διεργασίες ονομάζονται ορισμένες (determinate). Αυτό σημαίνει ότι κάθε ορισμένη διεργασία υπολογίζει μια συνεχή συνάρτηση από ροές εισόδου σε ροές εξόδου, και ότι το δίκτυο των ορισμένων διεργασιών είναι το ίδιο ορισμένο, δηλαδή υπολογίζει μια συνεχή συνάρτηση. Συνέπεια των παραπάνω είναι ότι η συμπεριφορά αυτών των δικτύων μπορεί να περιγραφεί από ένα σύνολο αναδρομικών εξισώσεων, που μπορούν να επιλυθούν με τη χρήση της θεωρίας σταθερού σημείου. Η κίνηση και ο μετασχηματισμός των δεδομένων αναπαρίσταται από μια σειρά από σχήματα και γραμμές.