Formelt beskrivelsessprog
(eller: FDT, Formal Description Technique).
Sprogets rolle som kommunikationsmiddel imellem mennesker kan opdeles i dels litterær, malende, poetisk og stemningsformidlende brug, dels konkret, handlingsorienteret, fagspecifik og præcis brug, og denne opdeling genfindes også inden for edb-verdenen.
Inden for systemudvikling gennemgår man en udvikling fra en mere eller mindre præcis idé om, hvad et edb-system kan bruges til et bestemt sted i en organisation. Gennem udviklingsprocessen opnås stadig mere specifikke og præcise beskrivelser, der til sidst bl.a. munder ud i en implementation i et passende valgt programmeringssprog. Det resulterende program er en så præcis problemløsning, at den kan underkastes automatisk viderebehandling (f.eks. oversættelse) af en computer. Som resultat fås en kørende edb-løsning.
Undervejs i udviklingsprocessen vil systemdesigneren og den erfarne programmør beskrive funktioner og data på en systematisk måde, som til dels er uafhængig af, om der benyttes bottom-up eller top-down metoder i udviklingen. Også kommunikation til og fra udviklingsprojektet vil ske på en systematisk måde, og her tænkes bl.a. på kravspecifikationer fra brugerne, dokumentation af de værktøjer, der anvendes, og standarder og anbefalinger for grænsesnit og protokoller.
De verbale beskrivelser, der anvendes, er normalt et kompromis mellem forskellige hensyn og interesser. Der ønskes anvendt en måde, der er kort og præcis. Dette kan give problemer for dem, der ikke har den fælles forståelse og udenomsviden, som er forudsætningen for en koncentreret kommunikationsform. Idet kommunikationen defineres lokalt, kan dette give anledning til misforståelser på grund af det naturlige sprogs indbyggede tvetydighed.
På denne baggrund er de formelle beskrivelsessprog opstået. Ordet "formel" betyder her "vedrørende formen" eller abstrakt, i modsætning til begrebet "reel", og har som mål at opnå præcise og neutrale beskrivelser af problemer og deres løsninger. Specifikationer af f.eks. dele af edb-systemer eller kommunikationsprotokoller gives i et fælles højniveausprog (3GL), som indeholder en række veldefinerede og velbeskrevne operatorer, funktioner og datatyper.
Højniveausproget er gerne konstrueret med henblik på, at specifikationen dels er på et passende højt abstraktionsniveau (dvs. uden uvæsentlige detaljer), dels kan underkastes en teoretisk analyse med henblik på at afgøre, om specifikationen (og dermed edb-løsningen) overholder givne krav. En sådan gennemarbejdet specifikation er mere velegnet som udgangspunkt for design og programmering, end hvis der var tale om en rent verbal beskrivelse på dansk eller engelsk, og der er principielt mulighed for at afgøre, om det resulterende program følger specifikationen.
Internationalt har der desværre ikke været enighed om ét fælles formelt beskrivelsessprog. Til specifikation af protokoller inden for datakommunikation og til programmel, der realiserer dem, eksisterer sprogene Estelle, LOTOS og SDL. LOTOS bygger på et teoretisk fundament taget fra bl.a. A.Hoares CSP (Communicating Sequential Processes) og R.J. Milners CCS (Calculus of Communicating Systemes). SDL er udviklet af CCITT, mens de to andre er udviklet af ISO, bl.a. til brug i forbindelse med OSI. Herudover har ISO udviklet TTCN, som benyttes i forbindelse med specifikation af conformance test. ISO har i en teknisk rapport TR 10167 sammenlignet Estelle, LOTOS og SDL.

