Diagrammer brukes mye for å hjelpe oss å tenke klarere om både programmering - hva som skjer eller vi ønsker at skal skje når et program kjøres - og hvordan koden er utformet. Fordelen med diagrammer er dels at de hever seg litt over detaljer som skygger for forståelsen (abstraksjon) og at den visuelle formen er mer intuitiv enn tekstlige. I tillegg til å hjelpe oss å tenke, kan også diagrammer brukes som en slags visuell programmering ved å koble diagram og kode mer direkte.

Diagrammer er i denne sammenheng av boks-og-pil-typen, hvor bokser av ulike typer/fasonger kobles sammen med streker, hvor både bokser og streker er annotert med tekst og symboler. Et vesentlig poeng er at det ofte finnes klare regler for hvordan notasjonen (de ulike typer diagramelementer) brukes og settes sammen, kort sagt at alt i et diagram betyr noe. Diagrammer innen programvareutvikling er ofte basert på UML-standarden (the Unified Modeling Language), hvor notasjonen er svært veldefinert. Dette betyr ikke at en ikke kan bruke diagrammer uformelt som skisser, men at en skal være litt bevisst reglene for bruk av notasjonen.

Diagramtyper

Grovt sett beskriver diagrammer to ulike aspekter ved et program:

  1. Tilstand/oppførsel ved kjøretid, altså hva som skjer når programmet kjøres, f.eks. tilstanden til objektstrukturer. Eksempler er ObjektdiagrammerObjekttilstandsdiagrammer og Sekvensdiagrammer.
  2. Design, altså hvordan programkoden er strukturert, f.eks. hvilke klasser som finnes og hvordan de henger sammen. Klassediagrammer er et eksempel.

Objektdiagrammer er en diagramtype som viser tilstanden til et program, ved å illustrere "snapshots" av objektstrukturer. Hvis en tenker på objektdiagrammer som tilstander og kobler dem sammen med transisjoner, så får en objekttilstandsdiagram, som viser hvordan objektstrukturer utvikler seg over tid.

Klassediagrammer viser klassestrukturen til et program, med innholdet i klasser (attributter og operasjoner) og hvordan de er koblet sammen med arv og assosiasjoner.

Interaksjonsdiagrammer viser hvordan objekter i en objektstruktur bruker hverandre, dvs. kaller hverandres metoder. Det finnes to varianter: samhandlingsdiagrammer utvider objektdiagrammer med visning av (sekvenser av) metodekall, og sekvensdiagrammer viser metodekall mellom objekter langs en tidslinje.