Olika typer av datorprogramvara är involverade i varje fas av utvecklingen av ett nytt program. Kompilatorer utför det väsentliga arbetet med att översätta mänskliga programmeringsspråk till maskinspråk som kan bearbetas av en dator. Annan programvara kan användas för att hjälpa till vid felsökning och för att övervaka effektiviteten hos ett program vid utförande av specifika uppgifter och användning av systemresurser. Integrerade utvecklingsmiljöer kombinerar flera av dessa varianter av datorprogramvara till en enda sammanhållen produkt.
Den mest grundläggande sorten av datorprogramvara är kompilatorn. Programmerare skriver kod i ett programmeringsspråk, som C++, Python eller Basic. Den här koden kan vanligtvis skrivas med vilken typ av textredigerare som helst, även om dedikerade redigerare som tillhandahåller färgkodning och kontrollerar tekniska fel är till stor hjälp. När denna källkod har skrivits används en kompilator för att översätta den till ett språk som kan köras direkt av en dator. I vissa fall kan en dekompilator senare användas för att översätta ett program tillbaka till källkod som kan läsas av människor.
Debuggers är en användbar och vanlig typ av datorprogramvara. En debugger låter en programmerare testa och övervaka sin kod. De flesta möjliggör att källkoden delvis kompileras och exekveras. Detta tillåter avlusaren att övervaka variablernas värden, kontrollera målen för pekare och visa en programmerare exakt vilka instruktioner som exekveras vid ett givet ögonblick. Denna förmåga att gå igenom koden rad för rad gör det mycket lättare att spåra små fel.
Programmerare förlitar sig också på applikationer som övervakar noggrannheten i deras arbete. Vissa program kör olika värden genom ett program för att säkerställa att det genererar rätt svar, särskilt i ovanliga eller marginella fall. Detta är särskilt användbart för att avgöra vad som händer när en användare tillhandahåller felaktigt formaterad indata eller indata som faller utanför de förväntade värdeintervallen.
Alla program använder systemresurser, och en del datorprogramvara finns för att spåra effektiviteten med vilken dessa resurser används. Dessa program möjliggör en detaljerad undersökning av bland annat minneshantering, diskåtkomst och nätverksanvändning. Dessa verktyg är särskilt användbara för programmerare som designar applikationer för att fungera på mobila enheter där resurserna kan vara särskilt knappa.
Integrerade utvecklingsmiljöer är mycket kraftfulla och populära verktyg. Denna typ av programmeringsprogramvara kombinerar specialbyggda versioner av flera olika programmeringsverktyg. Ett typiskt exempel kan vara en redigerare för att skriva källkod, en kompilator, en debugger, några verktyg för minneshantering och ett program för att automatiskt generera ett grovt utkast till dokumentation som förklarar programvarans funktion.