Gå til indholdet

Applikationstyper

Denne side ligger sent i forløbet med vilje. Først når du har set grundlæggende programmering, flow, algoritmer og værktøjer, giver det for alvor mening at tale om, hvilke slags software man faktisk bygger.

Når du lærer at programmere, vil du støde på mange forskellige typer applikationer. Hver type har sine egne kendetegn, udfordringer og teknologier. Her er en oversigt over de mest almindelige.

Konsolapplikationer

Konsolapplikationer kører i terminalen og interagerer med brugeren via tekst. De er den simpleste form for applikation og ofte det første, du lærer at lave.

Kendetegn: - Tekstbaseret input/output - Kører i terminalen - Ingen grafisk brugergrænseflade

Anvendelser: - Automatisering og scripts - Systemadministration - Læring og prototyping

# Simpel konsolapplikation
print("Hvad hedder du?")
navn = input()
print(f"Hej, {navn}!")

Desktopapplikationer

Desktopapplikationer har en grafisk brugergrænseflade (GUI) og kører direkte på brugerens computer.

Kendetegn: - Grafisk brugergrænseflade med vinduer, knapper, etc. - Installeres på brugerens computer - Kan arbejde offline

Teknologier: - Windows: WPF, WinForms (C#) - macOS: SwiftUI, AppKit - Tværplatform: Electron (JavaScript), Qt (C++/Python)

Eksempler: - Microsoft Word - Adobe Photoshop - Visual Studio Code

Webapplikationer

Webapplikationer kører i en webbrowser og tilgås via internettet.

Kendetegn: - Tilgås via URL i browser - Ingen installation nødvendig - Opdateres centralt på serveren - Kræver internetforbindelse (normalt)

Teknologier: - Frontend: HTML, CSS, JavaScript, React, Vue, Angular - Backend: Node.js, Python (Django/Flask), C# (ASP.NET), Java (Spring)

Eksempler: - Gmail - Facebook - Netflix

Frontend vs. Backend

  • Frontend: Den del brugeren ser og interagerer med (kører i browseren)
  • Backend: Serverside logik, databaser, API’er (kører på serveren)
// Frontend (JavaScript i browseren)
document.getElementById("knap").onclick = function() {
    fetch("/api/data")
        .then(response => response.json())
        .then(data => console.log(data));
};
# Backend (Python Flask server)
from flask import Flask, jsonify
app = Flask(__name__)

@app.route("/api/data")
def get_data():
    return jsonify({"message": "Hej fra serveren!"})

Roller i softwareudvikling

Når man taler om software, er det også vigtigt at forstå, at et projekt ofte laves af flere forskellige fagligheder. I små projekter kan én person have mange roller på samme tid. I større projekter er rollerne ofte fordelt på flere personer.

Projektleder (PM)

En projektleder, eller PM (Project Manager), har ansvar for at styre projektet fra start til slut. Det handler blandt andet om planlægning, koordinering, tidsplaner, budgetter og prioritering. En projektleder skriver normalt ikke nødvendigvis meget kode, men hjælper teamet med at holde retning og fremdrift.

Frontend-udvikler

Frontend-udviklere arbejder med den del af applikationen, som brugeren ser og interagerer med. Det er typisk knapper, formularer, navigation, layout og visning af data. De bruger ofte HTML, CSS og JavaScript og arbejder tæt sammen med designere for at sikre, at løsningen både fungerer og ser ordentlig ud.

Backend-udvikler

Backend-udviklere arbejder med den del af systemet, som brugeren normalt ikke ser direkte. Det kan være serverkode, databaser, API’er, login, adgangskontrol og forretningslogik. De sørger for, at data flyder rigtigt mellem brugergrænsefladen og de bagvedliggende systemer, og at løsningen er stabil, sikker og skalerbar.

UI-designer

En UI-designer arbejder med det visuelle lag i en applikation. Det handler om farver, typografi, afstande, ikoner, komponenter og den samlede visuelle sammenhæng. Målet er at gøre grænsefladen klar, pæn og konsekvent.

UX-designer

En UX-designer fokuserer på brugeroplevelsen. Det handler ikke kun om udseende, men om hvor let og logisk systemet er at bruge. UX-designere arbejder ofte med brugerrejser, wireframes, prototyper og tests af brugervenlighed for at finde ud af, hvad der fungerer godt eller dårligt.

Tester / QA

Testere, ofte kaldet QA-specialister (Quality Assurance), hjælper med at sikre, at systemet virker som forventet. De arbejder med testplaner, scenarier og kvalitetssikring og prøver at finde fejl, før brugerne gør det. I nogle teams er test en selvstændig rolle. I andre teams er det udviklerne selv, der tager en stor del af dette ansvar.

Flere roller kan ligge hos samme person

Som begynder er det vigtigt at vide, at virkeligheden ofte er mere blandet end stillingsbetegnelserne antyder. I små teams kan én person både være udvikler, designer, tester og projektleder i praksis. I større organisationer vil rollerne oftere være tydeligt opdelt.

Pointen er derfor ikke at lære alle roller udenad, men at forstå, at softwareudvikling sjældent kun handler om “én programmør foran én skærm”. Det er ofte et samarbejde mellem forskellige fagligheder.

Mobilapplikationer

Mobilapplikationer kører på smartphones og tablets.

Kendetegn: - Optimeret til touchskærme - Kan bruge enhedens sensorer (GPS, kamera, etc.) - Distribueres via app stores

Teknologier: - iOS: Swift, SwiftUI - Android: Kotlin, Java - Tværplatform: React Native, Flutter, .NET MAUI

Eksempler: - Instagram - Uber - Duolingo

Spil

Spiludvikling kombinerer programmering med grafik, lyd og gameplay-design.

Kendetegn: - Realtids grafik og animation - Brugerinput (tastatur, controller, touch) - Game loop og fysik

Teknologier: - Unity (C#) - Unreal Engine (C++) - Godot (GDScript/C#)

API’er og microservices

Ikke alle applikationer har en brugergrænseflade. Nogle er designet til at kommunikere med andre programmer.

Kendetegn: - Ingen direkte brugergrænseflade - Kommunikerer via HTTP/REST eller andre protokoller - Kan kombineres til større systemer

# Simpel REST API med Flask
from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/api/brugere/<int:id>")
def get_bruger(id):
    return jsonify({"id": id, "navn": "Anna"})

Scripts og automatisering

Scripts er små programmer, der automatiserer opgaver.

Kendetegn: - Typisk korte, fokuserede programmer - Automatiserer gentagne opgaver - Kører ofte planlagt (scheduled)

Anvendelser: - Fil-manipulation og backup - Databehandling - Systemadministration - Web scraping

# Script til at omdøbe filer
import os

for fil in os.listdir("./billeder"):
    if fil.endswith(".jpg"):
        nyt_navn = fil.replace(" ", "_").lower()
        os.rename(f"./billeder/{fil}", f"./billeder/{nyt_navn}")

Embedded/IoT

Embedded programmering handler om software til indlejrede systemer - små computere i enheder som vaskemaskiner, biler, og IoT-devices.

Kendetegn: - Begrænset hardware (hukommelse, processorkraft) - Realtidskrav - Interaktion med sensorer og aktuatorer

Teknologier: - C, C++ - MicroPython - Arduino

Hvilken type skal du vælge?

Det afhænger af dine interesser og mål:

Interesse Anbefalet applikationstype
Web og internet Webapplikationer
Smartphones Mobilapplikationer
Spil Spiludvikling
Automatisering Scripts og konsolapplikationer
Virksomhedssoftware Web eller desktopapplikationer
Hardware og elektronik Embedded/IoT

Uanset hvilken type du vælger at fokusere på, er de grundlæggende programmeringskoncepter de samme. Lær grundlaget godt, og du kan hurtigt skifte mellem forskellige applikationstyper.

Se også

  • Hvis du vil forstå, hvordan applikationer struktureres forskelligt, så læs også Paradigmer.
  • Hvis du vil læse mere om kvalitetssikring og test som arbejdsområde, så se Test.
  • Hvis du vil forstå, hvordan de samme applikationer bliver hostet, driftet og koblet til databaser og netværk, så fortsæt med Infrastruktur.