Der er for få eller ingen kildehenvisninger i denne artikel, hvilket er et problem. Du kan hjælpe ved at angive troværdige kilder til de påstande, som fremføres i artiklen.

Programdesign er design af computerprogrammer. Gennem tiden har der været mange forskellige tilgangsvinkler til design af programmer og computerbaserede systemer i det hele taget.

Måder at designe programmer på

redigér

Struktureret design er en af de ældste måder at designe programmer på. Man tager udgangspunkt i at computeren med program er en maskine, som forarbejder data. Kompleksiteten håndteres ved at programmets opgave opdeles i funktioner indtil hver funktion er overskuelig. Dette design kan bruges til programmer, der behandler data uden direkte input fra brugeren, men det er mindre egnet til interaktive programmer.

I integreret design laves et struktureret design sideløbende med et databasedesign for at sikre sammenhængen mellem programmets funktion og datagrundlaget. Da det antages, at datamodellen er mere statisk end de enkelte funktioner, bruges der ofte flest ressoucer på at få datamodellen på plads.

Med fremkomsten af objektorienteret programmering, blev der senere udviklet metoder til objektorienteret design. Da der både er data og funktioner i definitionen af et objekt, er det ikke så stor en udfordring at få data og funktioner til at hænge sammen. Til gengæld er der ikke mange objektorienterede databaser på markedet, så normalt må man ty til en oversættelse til et databasedesign.

Designelementer

redigér

Uanset, hvordan man overoednet har valgt at designe sit program, er der nogle elementer, der ofte går igen. Man kan bruge et lagdelt programdesign, hvor hvert lag kun kalder funktioner i laget lige under. Med et gennemført lagdelt design kan man lave store ændringer i et lag uden at andre lag skal ændres og derfor testes igen.

I objektorienterede systemer bruges nogle gange et Model-View-Controller-design (MVC), hvor sammenhængen mellem datamodellen og brugergrænsefladen håndteres af en "controller", der holder de to andre dele fra hinanden. I modsætning til et program med lagdelt design er styringen i et MVC-program baseret på hændelser. Eksempelvis vil en indtastning i brugergrænsefladen resultere i en hændelse til controlleren, som vil starte en opdatering. Når opdateringen er gennemført dannes en hændelse som brugergrænsefladen kan reagere på.

Da mange designmæssige problemer opstår igen og igen, har man inden for programdesign udviklet designmønstre, der beskriver, hvordan forskellige problemer med fordel kan løses.

Spire
Denne artikel om datalogi eller et datalogi-relateret emne er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den.