Hvad er operationskontrakter?
På området programmering og datalogi er operationskontrakter en måde at specificere eller dokumentere, hvordan en bestemt funktion ændrer forskellige elementer i et program. I modsætning til en abstrakt programmeringsgrænseflade (API) eller et interfacekontroldokument, bruges operationskontrakter til at hjælpe i udviklings- og modelleringsfasen for oprettelse af en computerapplikation eller -system. På det mest basale niveau definerer kontrakten fire funktioner i operationen, specifikt navnet på operationen, eventuelle henvisninger til operationen på andre områder af designet, eventuelle krav til input eller tilstand inden operationen udføres og tilstanden til systemet eller variablerne efter operationen er udført. Kontrakten definerer ikke noget specifikt om, hvordan operationen fungerer internt, og handler i stedet kun om, hvordan et programs tilstand påvirkes af dets anvendelse.
Driftskontrakter er generelt ikke bygget til enhver operation inden for en programmodel. I stedet for er de forbeholdt operationer, der er særlig komplekse eller vanskelige at spore. Flere computermodelleringssprog, såsom UML (Unified Modelling Language), understøtter operationskontrakter og har måder at hjælpe med at visualisere, hvordan tilstanden for et program kan ændres, når operationen er udført.
De første to definitioner, der kræves for at oprette operationskontrakter, er navnet på operationen, der kan være hvad som helst, og eventuelle krydshenvisninger. En krydshenvisning er en liste over andre operationer eller områder i en programmodel, der bruger den operation, der er defineret, eller som operationen vil bruge i dens behandling. Dette hjælper med at se, hvordan et samlet design interagerer, og er især nyttigt til at se, hvordan ændringer i et område af modellen vil påvirke andre områder.
Driftskontrakter definerer derefter de forudsætninger, der er nødvendige for at køre operationen. Dette kan indebære, at visse variabler skal indlæses med passende værdier, eller det kan kræve, at visse dele af programmet er i en bestemt tilstand. Hvis forudsætningerne ikke er opfyldt, når handlingen udføres, vil operationen ikke finde sted eller mislykkes fuldstændigt. Kontrakten bruges som et abstrakt værktøj, så forudsætningerne er som regel ret generelle og involverer mere programmets tilstand end specifikke variabler.
Den endelige del af operationskontrakter definerer eventuelle postbetingelser. Efterbetingelser er en liste over poster i programmodellen, der er ændret på grund af udførelsen af handlingen. Dette kan specificere ændringer i en datastruktur eller ændringer af programmets tilstand, såsom at skifte kontrol til et separat modul. Gennem brug af veldefinerede operationskontrakter kan programmer modelleres og ændres effektivt, før den faktiske implementering begynder.