Voorwaartse compatibiliteit
Voorwaartse compatibiliteit (soms verward met uitbreidbaarheid) is de mogelijkheid van een systeem om invoer (input) te accepteren die bedoeld is voor nieuwere, recentere versies van zichzelf. Voorwaartse compatibiliteit is veel moeilijker te realiseren dan achterwaartse compatibiliteit omdat het gracieus dient om te gaan met een onbekend toekomstig gegevensformaat (en: data format). Achterwaartse compatibiliteit kent deze moeilijkheid niet aangezien het een bekend gegevensformaat accepteert.
Een voorbeeld van voorwaartse compatibiliteit is wanneer een webbrowser niet-herkende HTML-tags negeert. Voor voorwaarts compatibele systemen geldt gewoonlijk dat ze overbodige gegevens- of toepassingsinstructies negeren.

Softwaretoepassingen die pogen te voorzien in achterwaartse compatibiliteit met oudere versies van een besturingssysteem moeten zeer zorgvuldig omgaan met de gebruikte softwarealgoritmes (of softwarelogica) van het geïdentificeerde besturingssysteem.
Meestal wordt aan achterwaartse compatibiliteit voorzien wanneer een oudere systeemversie werd geïdentificeerd en zich specifiek, en eventueel afzonderlijk, aangepast aan elk voorafgaand versienummer. Sommige toepassingen zullen stoppen en sluiten, wat bekendstaat als "error exit", wanneer de versie van het besturingssysteem niet kan worden gedetecteerd. Andere toepassingen daarentegen zullen "terugvallen" op een voorgaande versie van de toepassingsapplicatie, bijvoorbeeld een aangepaste standaardversie en die minder of geen gebruik maakt van meer geavanceerde programmafuncties. Indien een applicatie niet beschikt over enige tolerantie ten aanzien van onverwachte gedragingen, kan een "error exit" de gewenste uitkomst (resultaat) geven maar gaat dit ten koste van voorwaartse compatibiliteit.
Echter, als de potentiële voordelen van voorwaartse compatibiliteit de hiermee gepaard gaande kosten overtreffen dan wordt gewoonlijk voorzien in een "standaard gedraging" (voorwaartse compatibiliteit) zelfs als de toepassing de juiste versie van het besturingssysteem niet kan herkennen.

Vele softwareapplicaties en -systemen zijn ontworpen met een robuust en zelfvoorziend systeemarchitectuur dat zij adequaat kunnen uitvoeren zelfs wanneer de gegevensinvoer bestemd is voor een veel meer geavanceerde versie.

In alle situaties geldt dat wanneer een toepassing ingevoerde gegevens accepteert, en deze niet overeenstemt met de verwachte invoer het een uitvoer genereert die het probleem duidelijk identificeert voor de gebruiker.

Zie ook 
 Achterwaartse compatibiliteit

Software engineering
Computerterminologie