Izdaja za vzdrževanje je izdaja programske opreme, ki popravi varnostno napako ali manjšo napako, ne da bi spremenila katere koli osnovne komponente ali dodala nove funkcije. Običajno so oštevilčene v desetinkah ali stotinkah, da se razlikujejo od večjih izdaj, ki so oštevilčene preprosto različica 1.0, različica 2.0 itd. Izdaja za vzdrževanje je del faze delovanja sistemov in podpore življenjskega cikla izdaje programske opreme.
Vsaka programska aplikacija gre skozi življenjski cikel izdaje programske opreme. Začne se z analizo sistemov in odkrivanjem zahtev, stopnjo, v kateri se modelirajo podatki in procesi. Nato gre naprej v fazo načrtovanja, fazo gradnje, fazo izvedbe in na koncu še fazo delovanja in podpore. V tej zadnji fazi se izvaja stalna tehnična podpora za uporabnike z uvedbo vzdrževalnih izdaj, ki bodisi odpravljajo napake bodisi nadgrajujejo celoten sistem s preoblikovanjem osnovnih zahtev.
Za odpravo osnovnih programskih napak je običajno potrebna izdaja za vzdrževanje. Te se običajno pojavijo zaradi napak, ki so bile storjene v eni od prejšnjih stopenj življenjskega cikla programske opreme. Če so na primer v fazi analize zahtev zahteve napačno sporočene ali potrjene, lahko to povzroči velike pomanjkljivosti, ki se pokažejo šele veliko pozneje. To je pravzaprav običajen pojav, zato je moral skoraj vsak kos programske opreme, ki je bil kdaj izdan, občasno prestati vzdrževalno izdajo.
To je več temeljnih ciljev vzdrževalne izdaje. Prvič, izdaja bi morala spremeniti obstoječe programe, da bi popravila napake, storjene v fazah zahtev, načrtovanja ali izvedbe. Prav tako mora zagotoviti, da na novo narejeni popravki ne vplivajo na druge vidike spremenjenega segmenta in da na novo narejene spremembe ne motijo dejavnosti drugih segmentov. Nazadnje, izdaja ne bi smela povzročiti poslabšanja delovanja sistema. Na splošno se programski inženirji trudijo, da ta proces dokončajo čim hitreje, ne da bi pri tem žrtvovali kakovost ali zanesljivost.
Preden se izdaja za vzdrževanje lahko izda, jo je treba temeljito preizkusiti s tremi metodami: testiranjem enote, testiranjem sistema in regresijskim testiranjem. Testiranje enote zagotavlja, da določen segment programa, ki je bil popravljen, zdaj deluje pravilno. Po drugi strani sistemsko testiranje zagotavlja, da novo popravljeni segment programa ne posega v druge segmente programa. Regresijsko testiranje uporablja statistične podatke za preverjanje, ali so spremembe pozitivno ali negativno vplivale na celotno prepustnost ali odzivni čas.
Zadnji in morda najpomembnejši vidik vzdrževanja sistema je nadzor različic. V tem delu procesa usposobljen knjižničar, ki temelji na programski opremi, natančno beleži in spremlja vse opravljene spremembe. To omogoča programskim inženirjem, da se umaknejo v primeru, da izdaja za vzdrževanje naleti na nepričakovane napake.