Vad är operationskontrakt?
Inom ramen för datorprogrammering och datavetenskap är operationskontrakt ett sätt att specificera eller dokumentera hur en viss funktion kommer att förändra olika element i ett program. Till skillnad från ett abstrakt programmeringsgränssnitt (API) eller ett gränssnittskontrolldokument, används operationskontrakt för att hjälpa till under utvecklings- och modelleringsfasen för att skapa en datorprogram eller ett system. På den mest grundläggande nivån definierar avtalet fyra funktioner i operationen, specifikt operationens namn, eventuella referenser till operationen inom andra områden i konstruktionen, eventuella krav på input eller tillstånd innan operationen utförs och tillståndet för systemet eller variablerna efter operationen har utförts. Avtalet definierar inget specifikt om hur operationen fungerar internt, utan handlar istället bara om hur ett program påverkas av dess användning.
I allmänhet är driftsavtal inte byggda för varje operation inom en programmodell. Istället är de reserverade för operationer som är särskilt komplexa eller svåra att spåra. Flera datormodelleringsspråk, t.ex. Unified Modelling Language (UML), stöder operationskontrakt och har sätt att hjälpa till att visualisera hur ett program kan ändras när operationen har utförts.
De två första definitionerna som krävs för att skapa operationskontrakt är operationens namn, vilket kan vara vad som helst och eventuella korsreferenser. En korsreferens är en lista över andra operationer eller områden i en programmodell som använder operationen som definieras eller som operationen kommer att använda i sin behandling. Detta hjälper till att se hur en övergripande design interagerar och är särskilt användbar för att se hur förändringar i ett område av modellen kommer att påverka andra områden.
Operationsavtal definierar därefter de förutsättningar som är nödvändiga för att köra operationen. Detta kan innebära att vissa variabler laddas med lämpliga värden, eller det kan kräva att vissa delar av programmet är i ett visst tillstånd. Om förutsättningarna inte är uppfyllda när operationen utförs kommer operationen inte att ske eller kanske misslyckas helt. Kontraktet används som ett abstrakt verktyg, så förutsättningarna är vanligtvis ganska allmänna och mer involverar programmets tillstånd än specifika variabler.
Den sista delen av operationskontrakt definierar eventuella eftervillkor. Eftervillkor är en lista över objekt inom programmodellen som har ändrats på grund av operationen. Detta kan specificera ändringar i en datastruktur eller ändringar av programmets tillstånd, till exempel att växla kontrollen till en separat modul. Genom att använda väl definierade operationskontrakt kan program modelleras och modifieras effektivt innan den faktiska implementeringen påbörjas.