Programska oprema se nanaša tako na same računalniške operacijske sisteme kot na programe in aplikacije, zasnovane za delovanje v računalnikih. Razvoj programske opreme je načrtovanje in pisanje programske opreme, vključno z razvojem programske arhitekture in uporabniškega vmesnika ter programiranjem izvorne kode. Proces razvoja programske opreme je pristop k razvoju programske opreme in za ta proces obstaja veliko dobro razvitih modelov. Na splošno vsebujejo različice faz analize zahtev, specifikacije izdelka, ustvarjanja arhitekture programske opreme, implementacije kode, testiranja in dokumentiranja izdelka, zagotavljanja usposabljanja in podpore ter vzdrževanja in izboljšanja izdaje. Ne glede na to, kateri model se uporablja, je lahko proces razvoja programske opreme včasih usmerjen v razvoj novih izdelkov, medtem ko je včasih osredotočen na revizijo – na primer, ko se ustvari točkovna izdaja za odpravo napak –, včasih pa je lahko biti priprava na novo različico obstoječe programske opreme, ki bo dodala pomembne funkcije in ponudila popravke napak.
Model slapa za proces razvoja programske opreme je zgodnji model in tudi tisti z lastnimi omejitvami. Predpisuje strogo enosmerni pristop k razvoju, ki se premika enosmerno skozi zaporedje faz razvoja programske opreme, ne da bi se nikoli vrnili na prejšnjo stopnjo ali spremenili specifikacijo, ko se je razvoj začel. Nasprotno pa spiralni model uporablja iterativni postopek, v katerem zaporedju zahtev, ki mu sledi načrtovanje, implementacija in končno testiranje, sledi drugi cikel, v katerem se doda več funkcij in komponent. V agilnih modelih procesa razvoja programske opreme – ki jih je veliko – so razvojni projekti razdeljeni na tedenske do mesečne podnabore, imenovane časovne okvirje, od katerih vsak gre skozi miniaturizirano različico celotnega procesa razvoja programske opreme, vključno z izdajo ob konec. Druge značilnosti razvoja Agile vključujejo bližino sodelujoče ekipe in uporabo strank, da se odzovejo na izdelek skozi celoten proces.
Proces razvoja programske opreme je lahko bistveno drugačen za veliko podjetje in za posameznega programerja. Na primer, komercialni založnik programske opreme, kot je Sibelius Software®, ki je del Avid Technology®, lahko porabi več let za proces razvoja programske opreme za vsako različico in izda programsko aplikacijo, ki je velika na stotine MB in jo uporablja na tisoče ljudi. . Po drugi strani pa lahko posameznik, kot je Roman Molino Dunn, The Music Transcriber®, ki programira vtičnik kot odgovor na željo nekoga, da bi lahko naredil nekaj drugega s kosom komercialne programske opreme, ustvaril 4 kb programske opreme. v eni uri od ideje, v skrajnem primeru.