Ohjelmisto viittaa sekä tietokoneiden käyttöjärjestelmiin että tietokoneissa käytettäviin ohjelmiin ja sovelluksiin. Ohjelmistokehitys on ohjelmistojen suunnittelu ja kirjoittaminen, mukaan lukien ohjelman arkkitehtuurin ja käyttöliittymän kehittäminen sekä lähdekoodin ohjelmointi. Ohjelmistokehitysprosessi on lähestymistapa ohjelmistokehitykseen, ja tätä prosessia varten on monia hyvin kehitettyjä malleja. Yleensä ne sisältävät vaihteluita vaiheissa, joissa tehdään vaatimusten analyysi, määritetään tuote, luodaan ohjelmistoarkkitehtuuri, toteutetaan koodi, testataan ja dokumentoidaan tuote, tarjotaan koulutusta ja tukea sekä ylläpidetään ja parannetaan julkaisua. Riippumatta siitä, mitä mallia käytetään, ohjelmistokehitysprosessi voi toisinaan olla suunnattu uusien tuotteiden kehittämiseen, kun taas toisinaan se keskittyy tarkistamiseen – esimerkiksi kun pistejulkaisu luodaan virheiden korjaamiseksi – ja toisinaan se voi valmistaudu uuden version olemassa olevasta ohjelmistosta, lisäämällä merkittäviä ominaisuuksia ja tarjoamalla virheenkorjauksia.
Ohjelmistokehitysprosessin vesiputousmalli on varhainen malli, ja sillä on myös luontaisia rajoituksia. Siinä määrätään ehdottomasti yksisuuntaisesta lähestymistavasta kehitykseen, joka kulkee yksisuuntaisesti ohjelmistokehitysvaiheiden järjestyksessä palaamatta koskaan edelliseen vaiheeseen tai muuttamatta spesifikaatiota, kun kehitys on alkanut. Spiraalimalli sitä vastoin käyttää iteratiivista prosessia, jossa vaatimusten sarja, jota seuraa suunnittelu, toteutus ja lopulta testaus, seuraa toinen sykli, jossa lisätään lisää ominaisuuksia ja komponentteja. Ohjelmistokehitysprosessin ketterissä malleissa- joita on useita- kehitysprojektit on jaettu viikoista kuukausiin kestäviin osajoukkoihin, joita kutsutaan aikaruuduiksi, joista jokainen käy läpi pienoiskoon version koko ohjelmistokehitysprosessista, mukaan lukien julkaisu osoitteessa loppu. Muita ketterän kehityksen ominaisuuksia ovat yhteistyötiimin läheisyys ja asiakkaiden käyttö tuotteeseen reagoimiseksi koko prosessin ajan.
Ohjelmistokehitysprosessi voi olla radikaalisti erilainen suurelle yritykselle ja yksittäiselle ohjelmoijalle. Esimerkiksi kaupallinen ohjelmistojen julkaisija, kuten Sibelius Software®, joka on osa Avid Technology®: ta, saattaa viettää useita vuosia kunkin version ohjelmistokehitysprosessissa ja julkaista ohjelmistosovelluksen, joka on kooltaan satoja megatavuja ja jota käyttävät tuhannet ihmiset . Toisaalta henkilö, kuten Roman Molino Dunn, The Music Transcriber®, joka ohjelmoi laajennuksen vastauksena jonkun toiveeseen, että hän voisi tehdä jotain erilaista kaupallisella ohjelmistolla, saattaa luoda 4 kb: n ohjelmiston tunnin kuluessa idean saamisesta, ääritapauksessa.