Datorprogramvara, ofta kallad bara programvara, är en samling instruktioner och tillhörande dokumentation som berättar för en dator hur den ska utföra uppgifter. Programvara omfattar alla program som körs på en dator, till exempel program och operativsystem. Applikationer är program som är utformade för att utföra särskilda uppgifter — till exempel ett spel eller en ordbehandlare. Operativsystemet (t.ex. Mac OS, Microsoft Windows, Android och olika Linuxdistributioner) fungerar som en plattform för att köra programmen och hanterar hårdvaruresurser och användargränssnittet, såsom skärm, tangentbord och lagring.

Begreppet programvara myntades i slutet av 1960-talet för att skilja mellan datorhårdvara — den fysiska utrustningen man kan se och ta på — och de logiska instruktionerna som körs på hårdvaran. Före spridningen av cd-skivor och innan internet blev allmänt tillgängligt lagrades och distribuerades program ofta på olika fysiska medier, som hålkort i papper, magnetskivor eller magnetband.

Ordet firmware beskriver ofta programvara som är specialanpassad för en viss hårdvaruenhet och som ligger sparad i ett flashminne eller ROM‑chip. Firmware styr ofta enhetens grundläggande funktioner — till exempel den fasta programvaran i en CD‑enhet eller i ett modem — och kan behöva uppdateras för att åtgärda buggar eller lägga till funktioner.

Typer av programvara

  • Systemprogramvara: inkluderar operativsystem, drivrutiner och verktyg som hanterar datorns resurser och kommunikation med hårdvaran.
  • Applikationsprogramvara: program för slutanvändare, som kontorsprogram, webbläsare, spel och specialiserade företagsapplikationer.
  • Inbyggd programvara (firmware): programkod som körs på inbyggda system i enheter som routrar, smarta apparater och fordon.
  • Middleware: mjukvara som fungerar som mellanlager och underlättar kommunikation mellan applikationer och systemkomponenter.
  • Utvecklingsverktyg: kompilatorer, tolkar, IDE:er och biblioteksramverk som används för att skapa ny programvara.
  • Moln‑ och tjänstebaserad programvara: program som körs på fjärrservrar och nås över internet (SaaS, PaaS, IaaS).

Licenser och öppen källkod

Programvara kan vara proprietär (stängd källkod) eller öppen källkod (tillgänglig källkod). Licenser avgör hur programvaran får användas, ändras och spridas. Vanliga öppna licenser är GPL och MIT, medan proprietära licenser ofta begränsar kopiering och modifiering.

Utveckling, designmetoder och kvalitetsarbete

Programvaruutveckling omfattar kravanalys, design, implementation, testning och underhåll. Några vanliga utvecklingsmodeller är:

  • Build and Fix: enkel och snabb men ofta svår att underhålla i större projekt.
  • Waterfall (kaskad): stegbaserad modell med tydliga faser, lämplig när krav är välkända.
  • Agila metoder (t.ex. Scrum, Kanban): iterativt och flexibelt arbetssätt som fokuserar på snabba leveranser och kontinuerlig förbättring.

Moderna utvecklingsprocesser använder även automatiserade tester, kontinuerlig integration och kontinuerlig leverans (CI/CD) för att förbättra kvaliteten och minska risken för fel.

Distribution och installation

Programvara distribueras idag huvudsakligen via internet (nedladdningar, appbutiker och paketförvaltare), men historiskt användes medier som cd-skivor och tidigare även hålkort i papper och magnetskivor. Installationsmetoder inkluderar enkla installationsprogram, containerisering (t.ex. Docker) och pakethanterare för operativsystem (t.ex. apt, yum, Homebrew).

Säkerhet och underhåll

Programvarusäkerhet är avgörande. Det inkluderar att hantera sårbarheter, distribuera uppdateringar och patchar, samt använda principer som minst privilegium och säker kodgranskning. Firmware‑uppdateringar är viktiga för att åtgärda säkerhetsproblem i inbyggda enheter. Regelbundet underhåll och övervakning bidrar till stabilitet och säkerhet över tid.

Varför programvara är viktig

Programvara styr allt från vardagliga appar till kritiska infrastruktursystem. Den möjliggör automation, kommunikation, databehandling och innovation inom nästan alla branscher. Programvaruingenjörer spelar därför en central roll i att skapa tillförlitliga, säkra och användarvänliga lösningar. God design kräver hänsyn till förändringsbarhet, underhållbarhet och kompatibilitet mellan system och versioner.

Sammanfattningsvis är programvara den logiska delen av ett datorsystem som gör hårdvaran användbar — utan programvara skulle hårdvaran vara i princip oanvändbar. Genom rätt utvecklingsmetoder, licensval och säkerhetspraxis kan programvara skapa stora värden för individer, företag och samhällen.