Oprogramowanie odnosi się zarówno do samych komputerowych systemów operacyjnych, jak i do programów i aplikacji przeznaczonych do uruchamiania na komputerach. Tworzenie oprogramowania to projektowanie i pisanie oprogramowania, w tym tworzenie architektury programu i interfejsu użytkownika oraz programowanie kodu źródłowego. Proces tworzenia oprogramowania to podejście przyjęte do tworzenia oprogramowania, a istnieje wiele dobrze opracowanych modeli tego procesu. Ogólnie rzecz biorąc, zawierają one wariacje na temat etapów analizy wymagań, określania produktu, tworzenia architektury oprogramowania, wdrażania kodu, testowania i dokumentowania produktu, zapewniania szkoleń i wsparcia oraz utrzymywania i ulepszania wydania. Niezależnie od tego, który model jest używany, proces tworzenia oprogramowania może czasami być ukierunkowany na rozwój nowego produktu, podczas gdy innym razem koncentruje się na rewizji — na przykład, gdy tworzone jest wydanie punktowe w celu naprawienia błędów — a jeszcze innym razem może przygotuj się na nową wersję istniejącego oprogramowania, dodając istotne funkcje, a także oferując poprawki błędów.
Model wodospadu dla procesu tworzenia oprogramowania jest modelem wczesnym, a także z nieodłącznymi ograniczeniami. Nakazuje ściśle jednokierunkowe podejście do rozwoju, przechodząc w jedną stronę przez sekwencję faz rozwoju oprogramowania, bez powracania do poprzedniego etapu lub zmiany specyfikacji po rozpoczęciu rozwoju. Model spiralny natomiast wykorzystuje proces iteracyjny, w którym po sekwencji wymagań, po której następuje projektowanie, implementacja i wreszcie testowanie następuje drugi cykl, w którym dodawane są kolejne funkcje i komponenty. W modelach zwinnych procesu wytwarzania oprogramowania — których jest wiele — projekty programistyczne są podzielone na tygodniowe lub miesięczne podzbiory zwane timeboxami, z których każdy przechodzi przez zminiaturyzowane wersje całego procesu wytwarzania oprogramowania, w tym wydanie na koniec. Inne cechy rozwoju Agile obejmują bliskość współpracującego zespołu i wykorzystanie klientów do reagowania na produkt podczas całego procesu.
Proces tworzenia oprogramowania może być diametralnie różny dla dużej firmy i indywidualnego programisty. Na przykład komercyjny wydawca oprogramowania, taki jak Sibelius Software®, będący częścią Avid Technology®, może poświęcić kilka lat na proces tworzenia oprogramowania dla każdej wersji i wydać aplikację, która ma setki MB i jest używana przez tysiące ludzi . Z drugiej strony osoba, taka jak Roman Molino Dunn, The Music Transcriber®, programująca wtyczkę w odpowiedzi na czyjeś życzenie, aby mogła zrobić coś innego z komercyjnym oprogramowaniem, może stworzyć oprogramowanie o wielkości 4 kb w ciągu godziny od pomysłu, w skrajnym przypadku.