Hvad er software?
Computerprogrammer, programmer eller software er en sekvens af instruktioner, der fortæller en computer, hvordan den skal løse en bestemt opgave. Hver instruktion er designet til at kunne eksekveres på en computer. Essensen i en computer er, at den kan eksekvere programmer.
Software er en overordnet betegnelse for samlinger af programmer. Ordet software står i kontrast til hardware, der dækker over fysiske dele – RAM, processor, harddisk og så videre.
Softwareudviklerens rolle
Instruktionerne i et program er som regel specificeret af en udvikler, programmør, koder eller (software)arkitekt. Han skriver dem i et programmeringssprog, der gennem en compiler (der oversætter kildekode til maskinkode) kan fortælle, hvad computeren skal. En computer kan ikke direkte forstå den kode, udvikleren skriver. Den skal som udgangspunkt enten bruge en compiler til at omsætte koden til maskinkode eller en interpreter til at eksekvere koden.
Softwareudvikleren arbejder med andre ord på et niveau, hvor der gælder en række regler. Hans arbejde i det niveau, omsættes til et andet niveau med andre regler. Teoretisk set kunne udviklere godt arbejde direkte i maskinkode, men det ville kræve meget mere arbejde og være langt sværere at læse. Hvorfor du gerne vil have kode, der er let at læse, kan du blandt andet læse mere om her.
Hvordan fungerer et program?
Et program lagres normalt på en harddisk eller i skyen – tidligere har vi brugt disketter, CD-ROM, DVD’er og endda kassettebånd. Over de seneste år har forbedrede internetforbindelser skabt muligheden for at køre software fra skyen – ofte som software-as-a-service (forkortet SaaS).
Fra lagringsmediet overføres programmet (eller dele af det) til RAM – computerens arbejdshukommelse, hvor det løser den opgave, det er designet til.
Programmet står normalt ikke alene, men kører under et styresystem som for eksempel Windows, IOS eller Linux. Styresystemet styrer afviklingen af opgaver og har typisk en grafisk brugerflade, der gør det tilgængeligt for almindelige brugere.
Styresystemet sørger for at jonglere hardware og software og sikrer at resurser bliver prioriteret og styret og at de forskellige elementer kan udveksle data.
Styresystemer er vokset i omfang og indeholder i dag typisk drivere, grafisk brugerflade, widget toolkits og småprogrammer (lommeregner, musikafspiller, tekstredigering, browser etc.). Alle elementer der, strengt taget, ikke er en del af styresystemet, men oftest kommer sammen med det.
Typer af software
Software fordeler sig nogenlunde i seks forskellige kategorier, hvoraf det kun er et par stykker, normale brugere er i kontakt med. De seks kategorier er:
- Softwareapplikationer (eller apps) dækker over alt fra spil, tekstbehandling, projektstyring og databaser til email, bogføring og videoredigering
- Hjælpeprogrammer er applikationer designet til at hjælpe systemadministratorer og softwareudviklere
- Styresystemer er, som tidligere nævnt, mellemledet mellem brugeren af en computer og dens hardware
- Boot programmer ligger i computerens skrivebeskyttede hukommelse og sørger for, at styresystemet bliver kørt og at computeren starter op og er klar til brug
- Firmware er software, der er indbygget i et stykke hardware. Firmware bruges, når programmet kun sjældent eller aldrig skal ændres og har brug for at køre selvom computeren er slukket
- Microkode programmer er en intern del af computeren der kontrollerer hardwareelementer i computeren. Det er ikke en type programmer, der er tydelig for brugerne af et system
En normal bruger vil typisk kun bruge softwareapplikationer og styresystemer, og mens hjælpeprogrammer typisk bruges af IT-specialister, så er de resterende tre typer software som regel forbeholdt hardwareproducenter.
Udviklingen af softwareindustrien
Hvor software tidligere har været relativt simple og isolerede systemer, er det i dag svært at drive en virksomhed uden god software. Simpelthen fordi konkurrenten, der bruger de digitale muligheder intelligent vil have en enorm fordel.
Et eksempel, der efterhånden er blevet brugt lidt for mange gange, er Netflix. En virksomhed, der så muligheder for at bruge software til at løse et problem hos forbrugerne bedre end deres konkurrenter.
Det hører naturligvis med til eksemplet, at de muligheder opstod i kølvandet på voldsomt forbedret infrastruktur (internethastighed) op gennem 00’erne. Netflix’ succes sendte dem i en positiv spiral, hvor TV-producenter i dag bygger Netflix-apps i deres fjernsyn. Der er endda producenter, der har Netflix-knapper på fjernbetjeningerne.
IT generelt og mere specifikt software er ikke længere en mindre del af virksomhederne. Det er blevet en af de vigtigste i mange af verdens allerstørste virksomheder. I takt med at vi bliver endnu mere digitale, vil behovet for kvalitetssoftware kun blive større. Det er ikke utænkeligt at programmering i en eller anden udstrækning vil sprede sig til mange andre erhverv og uddannelser.
Softwarearkitektur
Også på arkitektursiden er der sket store fremskridt. Software eksisterede tidligere som særskilte enheder, der ofte kun var forbundet gennem skuffesystemer og manuelle indtastninger. I dag er integrationer og API’er helt basale elementer i stort set al software. Det er ikke bare i hverdagen, at vi er mere forbundne – det er et krav, at din software også er. De virksomheder, der forstår at bruge dataopsamling og software intelligent har en kæmpe konkurrencefordel. Både på eksisterende forretningsområder og potentielle nye områder.
Det kunne for eksempel være gennem et optimeret salgsværktøj, som det vi har hjulpet Widex med (læs mere her). Men med IoT er det nærmest kun fantasien, der sætter grænserne.
Men applikationer, der nemt kan forbindes med hinanden er ikke den eneste måde, softwarearkitektur har udviklet sig på. Hos mange af vores kunder arbejder vi med microservices – selvstændige enheder i den enkelte applikation. Hvorfor det kan være en god ide, kan du læse mere om her, men i korte træk betyder det, at vi kan bygge software, der understøtter forretningen endnu bedre.
Udviklingen mod microservices er en konsekvens af de muligheder, udviklere har fået med cloud, hurtigere hardware og større fokus fra forretningen. Det betyder at software i dag reelt kan være en helt anden størrelse end for bare fem år siden.
Software driver i dag forretninger, og vores kunder er enige med os – vi er ikke et eller andet tilfældigt konsulenthus – vi er de bedste i Danmark.
Softwarens rolle
Hvad er softwarens rolle? I langt de fleste virksomheder, eksisterer software som en facilitator for resten af forretningen, men vi begynder at se virksomheder, der har bygget hele forretningen omkring software. Det kan for eksempel være ved at udstille et API, og drive det som forretningens primære produkt. Men det kan også være direkte eller indirekte softwarebaseret forretning. Microsoft har en enorm forretning på at sælge software, mens Facebook har en enorm forretning på at sælge adgang til dem, der bruger deres software – stadig en softwarevirksomhed, men deres primære kunder er ikke brugerne, men derimod annoncørerne.