Det er litt vanskelig å si hva et programvaredesign er * ikke * hvis det ikke er et program, fordi det avhenger av hvordan vi definerer "program".
Her er et sammenbrudd:
* Program: Et program er den faktiske arbeidskoden som forteller en datamaskin hva du skal gjøre. Det er som oppskriften på en tallerken, og viser ut de spesifikke trinnene.
* programvaredesign: Dette er planen for et program. Det er en plan på høyt nivå som skisserer:
* hva programvaren vil gjøre: Funksjonalitetene og funksjonene.
* hvordan det vil være strukturert: Komponentene, forholdene og interaksjonene.
* Brukeropplevelsen: Hvordan brukeren vil samhandle med programvaren.
Så, hva er et programvaredesign hvis det ikke er et program?
* en plan: Det er som en arkitektonisk blåkopi for en bygning - den viser hva som skal bygges, men den bygger den ikke.
* en spesifikasjon: Det er en detaljert beskrivelse av hvordan programvaren vil fungere, men den inneholder ikke koden for å få den til å fungere.
* en modell: Det er en representasjon av programvaresystemet, men ikke en fungerende, kjørbar versjon.
Tenk på det slik:
* Et program er selve bilen.
* En programvaredesign er blåkopien for bilen.
Programvaredesignet er viktig for å bygge programmet, men det er ikke selve programmet. Det gir en guide for programmererne å følge når de skriver den faktiske koden.