Ohjelmistokehitysprosessi vaatii huolellista analysointia, määrittelyä, arkkitehtuurin suunnittelua ja toteutusta. Seuraavat vaiheet sisältävät ohjelmistotestauksen, dokumentoinnin, koulutuksen ja jatkuvan käyttäjätuen. Saatavilla on useita erityyppisiä tietokoneohjelmistojen kehittämismalleja, jotka auttavat ohjelmistokehittäjiä luomaan erilaisia tietokoneohjelmia. Tämä kehityksen elinkaari sisältää kaikki vaiheet alkuperäisestä ohjelmistoideasta tai -konseptista lopullisen tuotteen toteuttamiseen. Jotkin tietokoneohjelmistojen kehittämisessä käytetyt prosessit ovat vesiputous, iteratiivinen, inkrementaalinen ja ketterä prosessimalli.
Tietokoneohjelmistojen kehittämistarpeiden muuttuessa muuttuvat myös ohjelmistojen kehittämistavat. Ohjelmiston kehittämisen keskeiset ainesosat määräytyvät käytetyn eri kehitysprosessityypin mukaan. Useimmat ohjelmistokehittäjät käyttävät yhdistelmää tai osia kustakin prosessista tietokoneohjelmistojen kehittämisessä.
Tietokoneohjelmistojen kehittämisen ensimmäistä prosessia kutsutaan vesiputousmalliksi. Tämä kehitysmalli alkaa tarkastelemalla tarkasti kaikkia mahdollisen sovellusohjelmiston vaatimuksia, suunnittelemalla ja integroimalla varsinainen ohjelmisto, suorittamalla tarvittavat testit tai validoinnit, lopullisen asennuksen ja tarjoamalla ohjelmiston jatkuva ylläpito. Tässä tietokoneohjelmiston kehitysprosessissa jokainen vaihe on suoritettava ennen seuraavan vaiheen aloittamista. Katsauksia ja muutoksia voidaan käyttää jokaisen kehitysvaiheen päätyttyä.
Iteroivan ja inkrementaalisen tietokoneohjelmistokehityksen prosessi on vesiputousmallin ohjelmistokehitysprosessien toisessa ääripäässä. Kehittäjät käyttävät tätä prosessia, kun asiakas ei ehkä tiedä tarkalleen, mitä he tarvitsevat tietystä tietokoneohjelmasta. Tarveanalyysi, ohjelmointi ja komponenttien kehittäminen toistetaan lyhyissä jaksoissa tai iteraatioissa, kunnes lopullinen tietokoneohjelmisto on valmis. Tämä prosessi hyödyntää tiedonkeruuta ja työskentelee useiden pienempien komponenttien kanssa tuodakseen täyden toiminnallisuuden valmiiseen ohjelmaan.
Ketterä tietokoneohjelmistokehitys on vähemmän rakenteellista kuin vesiputous tai iteratiiviset/inkrementaaliset kehitysmallit. Ohjelmistojen kehittäminen ketterällä kehitysmallilla vaatii enemmän luovuutta kuin rakennetta. Tässä mallissa ohjelmisto on jatkuvassa muutoksessa, ei seuraa mitään loogista prosessia ja on keskeneräinen. Ohjelmistoa kehittävät ihmiset ja tavat, joilla he työskentelevät yhdessä, ovat tärkeämpiä kuin varsinainen prosessi. Tämän luovan ohjelmistokehitysprosessin voima on kehitystiimin vaikutusmahdollisuuksissa ja yhteistyössä sekä kyvyssä vastata tarvittaviin muutoksiin.