Program (Programudvikling), Udviklingen af software er en kompliceret proces, under ét kaldet systemudvikling, der kan opdeles i en række faser. Et påtænkt softwaresystem må først afgrænses i forhold til de omgivelser, det skal indgå i. Det gøres i en analyse, der afdækker de krav, man må stille til systemet. Denne aktivitet nødvendiggør ofte omfattende samtaler med dem, der til sin tid skal bruge systemet. Sideløbende produceres et dokument, kravspecifikationen, der så nøjagtigt som muligt definerer den opgave, som skal løses. Når kravene til systemet er fastlagt, designes en løsning, der kan implementeres på en computer. Det er først i implementeringsfasen, at et programmeringssprog finder anvendelse. Den næste fase er verifikation af, at programmet virker og tilfredsstiller kravspecifikationen. Selvom der er gjort store fremskridt i retning af at kunne bevise programmer, er det normalt nødvendigt at foretage kørsler med programmet med omhyggeligt valgte testdata i verifikationsfasen. Når programmet er verificeret, frigives det til rutinekørsel. Herefter følger vedligeholdelsesfasen, der omfatter rettelse af fejl, der er sluppet upåagtet igennem de tidligere faser, og tilpasning til ændrede forudsætninger i omgivelserne, der afføder nye eller ændrede krav til programmet. Brugen af ordet "faser" er lidt misvisende, da programudvikling ikke er en støt fremadskridende proces, fase efter fase. Den viden om systemet, der efterhånden opbygges, gør det ofte nødvendigt at justere tidligere faser, så der er tale om en iterativ proces, hvor man bevæger sig frem og tilbage mellem faserne. Selvom programmeringssproget kun indgår direkte i implementeringsfasen, har valget af sprog erfaringsmæssigt stor indflydelse på udviklingsprocessen, idet fx en designer uvilkårligt vil tage højde for sprogets stærke sider. Hvis man vælger et objektorienteret sprog, vil det have betydning for alle faser i udviklingsarbejdet; man taler ligefrem om objektorienteret analyse og design. For at modvirke, at slutbrugeren bliver koblet af på et tidligt tidspunkt i udviklingsprocessen, har man udviklet særlige specifikations- og designsprog, der kan udføres direkte på en computer. På den måde kan brugeren tage stilling til fx skærmbilleder o.l., inden den egentlige programmering påbegyndes. Denne teknik kaldes eksperimentel programudvikling eller rapid prototyping, hvor rapid går på udviklingstiden af prototypen og ikke på udførelsestiden, da sådanne systemer normalt arbejder ret langsomt. Se også systemudvikling.

En opgavespecifikation er almindeligvis deklarativ, dvs. en beskrivelse af, hvad der skal beregnes som en relation mellem input og output. Et program må imidlertid direkte eller indirekte specificere, hvordan den ønskede relation mellem input og output opnås. Det er programmørens opgave at omforme den statiske input/output-specifikation til en dynamisk specifikation, programmet, der beskriver gangen i de beregninger, der fører fra input til output. Dette kan realiseres med mange forskellige algoritmer og kan udtrykkes i mange forskellige programmeringssprog, og programmering af en given opgave er derfor forbundet med stor frihed i valg af metoder, datastrukturer mv.

Der findes imidlertid visse kriterier, som kan bruges til at begrænse den klasse af programmer, der kan komme på tale. Et godt program skal fx udnytte computerens hastighed og lagerkapacitet så effektivt som muligt. Det skal også have en struktur, hvor hver veldefineret underopgave realiseres i hver sit modul eller underprogram. Dette krav er vigtigt, fordi det gør programmet lettere at forstå, understøtter afprøvning og gør det nemmere at foretage ændringer. Modulær struktur er særlig vigtig i store programmer, hvor den menneskelige evne til at overskue detaljer ellers ville sætte snævre grænser for, hvilke programmer der ville kunne realiseres i praksis.

Før i tiden blev programmering betragtet som en kunst, fordi man mente, at valget mellem forskellige implementeringer var baseret på uhåndgribelige kriterier, nogenlunde som i litteratur eller musik. De indvundne erfaringer med udvikling af store programmer har imidlertid betydet, at der er opstået visse konventioner for, hvordan man laver programmer, og programmering må i dag betragtes som et velkonsolideret fag, der nærmest er beslægtet med kunsthåndværk eller arkitektur.

En af de dyrekøbte erfaringer er, at vedligeholdelse af gamle programmer er mere kostbar end udvikling af nye. Derfor er det vigtigt, at programmer kan læses af mennesker; dokumentation og andre hjælpemidler til at gøre programtekster læselige og overskuelige får derfor større og større betydning. Programmer i et stort system betragtes i dag som én af mange former for systemdokumentation og bliver lagret i en database, så de kan manipuleres af oversættere og andre former for programmeringshjælpemidler og -værktøjer. Automatiseret hjælp til udvikling, projektstyring eller vedligeholdelse af it-systemer kaldes CASE-systemer (Computer Aided Software Engineering) og bruges af mange organisationer ved udvikling af store programkomplekser.

Læs mere om programmer.

Kommentarer

Kommentarer til artiklen bliver synlige for alle. Undlad at skrive følsomme oplysninger, for eksempel sundhedsoplysninger. Fagansvarlig eller redaktør svarer, når de kan.

Du skal være logget ind for at kommentere.

eller registrer dig