Specifikáció: A megrendelő kitalálja, hogy milyen programot szeretne. A programozó beszélgetni kezd a megrendelővel. Megpróbálják pontosítani, mit vár el a megrendelő, mit kell tudnia a programnak. A tisztázott igények precíz leírását nevezzük specifikációnak. A specifikációt nehéz matematikai pontossággal megadni, sokszor szövegesen adjuk meg, milyen funkciókat kell megvalósítani. Az egzakt specifikáció csak alacsonyabb szinten valósítható meg: például egy eljárás esetén az előfeltételek megadása: milyen típusú paraméterekkel, milyen állapotban működik helyesen az eljárás.
Tervezés: A specifikáció rögzítése után kezdődik a program tervezése. A megoldandó feladathoz megfelelő adatszerkezeteket és algoritmusokat kell találni, vagy fejleszteni. Megtervezendő továbbá a program felhasználói felülete, és gondolni kell a jövőbeli bővíthetőségre is.
Kódolás: A kész terveket egy választott programozási nyelven kódoljuk. Vannak olyan szoftverek, amelyek a kódolást a terv alapján automatikusan elvégzik. Az elkészült forráskód olyan, mint egy épület esetében a tervrajz. A forráskódból egy fordítóprogram hozza létre a futtatható gépi kódú programot.
Tesztelés: Minden program hibás. Az elkészült programot minimum két szempontból alaposan elemezni kell. (a) Minden esetben helyesen működik-e? (b) Hatékony-e? A hatékonyság három fő mérőszáma a tárhelyhasználat, a sebesség és a bonyolultság. Szinte lehetetlen minden hibát biztosan javítani, ezért a szoftverfejlesztés egyik központi kérdése a hibakeresés-hibajavítás ciklus szervezése.
Hibajavítás: A felismert hibák kijavításához új specifikáció, új terv és újrakódolás lehet szükséges.
Dokumentáció: A programok nagyon nagyok. Ha egy év múlva is érteni szeretnénk működésüket, dokumentációt kell készítenünk. A dokumentáció két szintje a felhasználói és a fejlesztői dokumentáció.