Flytbasert programmering

**Flytbasert programmering** et programmeringsparadigme som definerer applikasjoner som nettverk av svartboks-prosesser som utveksler data på tvers av forhåndsdefinerte forbindelser (kanaler) via meldingsoverføring, der forbindelsene spesifiseres *eksternt* for prosessene. Disse svartboks-prosessene kan kobles om i det uendelige for å danne forskjellige applikasjoner uten å måtte endres internt. Flytbasert programmering er derfor naturlig komponentorientert .

Flytbasert programmering er en spesiell form for dataflytprogrammering basert på avgrensede buffere, informasjonspakker med definerte levetider, navngitte porter og separat definisjon av tilkoblinger.

## Asynkrone strømmer med informasjonspakker
I flytbasert programmering ser man ikke på en applikasjon som en enkelt sekvensiell prosess som starter på et tidspunkt og deretter gjør én ting om gangen til den er ferdig, men i stedet som et nettverk av asynkrone prosesser som kommuniserer ved hjelp av strømmer av strukturerte informasjonspakker. Fokuset er på applikasjonsdataene og transformasjonene som gjøres for å produsere de ønskede resultatene. Nettverket er definert eksternt for prosessene som en liste over forbindelser som tolkes av en skedulerer.

## Arkitektur
Nettverksdefinisjonen er vanligvis laget diagrammatisk ved hjelp av et visuelt programmeringsspråk, og konverteres til tekstkode på lavere nivå.

Flytbasert programmering kan sees på som koordinasjonsspråk, og er i hovedsak språkuavhengig. Gitt en skedulerer på skrevet på lavnivåspråk kan faktisk komponenter skrevet i forskjellige språk kobles sammen i ett enkelt nettverk. Flytbasert programmering egner seg dermed bra til utvikling med domenespesifikke språk.

Flytbasert programmering har datakobling, som er den løseste formen for kobling mellom komponenter. Konseptet med løs kobling er i sin tur relatert til tjenesteorientert arkitekturer, og flytbasert programmering passer til en rekke av kriteriene for en slik arkitektur, om enn på et mer finkornet nivå enn de fleste eksempler på denne arkitekturen.

Flytbasert programmering fremmer funksjonelle spesifikasjoner på høyt nivå som forenkler resonnement om systematferd. Et eksempel på dette er den distribuerte dataflytmodellen for konstruktivt å spesifisere og analysere semantikken til distribuerte flerpartsprotokoller.

## Eksempel
Følgende diagram viser hovedentitetene i et flytbasert diagram (bortsett fra informasjonspakkene). Et slikt diagram kan konverteres direkte til en liste over tilkoblinger, som deretter kan utføres av en passende motor (programvare eller maskinvare).

A, B og C er prosesser som utfører kodekomponenter. O1, O2 og de to IN-ene er porter som kobler forbindelsene M og N til deres respektive prosesser. Det er tillatt for prosess B og C å kjøre samme kode, så hver prosess må ha eget arbeidslager, kontrollblokker, og så videre.

M og N er det som ofte refereres til som avgrensede buffere, og har en fast kapasitet når det gjelder antall informasjonspakker de kan holde til enhver tid.

## Se også
* Samtidige beregninger
* Dataflyt
* Dataflytdiagram
* Dataflytprogrammering
* Lavkode programvareutvikling
* Lastbalansering
* MapReduce
* Node-RED

## Referanser