Metoder i Programmering
Trinvis Forbedring
Faser
Den overordnede arbejdsmetode i programmering er trinvis forbedring [1], hvor man iterativt planlægger, udarbejder og evaluerer sit program som i den arbejdsproces der beskrives til informatikfaget [2], se Figur 1.
Aktiviteter
Trinvis forbedring kan opdeles i de tre aktiviteter: forfinelse, udvidelse og omstrukturering [1]. Man starter måske med to iterationer hvor programmet udvides, hvorefter der laves en iteration med omstrukturering osv. Hver iteration svarer til en cyklus i ovenstående figur hvor alle tre faser gennemgås.
Undermetoder og eksempler
Trinvis forbedring kan yderligere opdeles i undermetoder, der benyttes i en eller flere faser. Nogle konkrete eksempler på disse metoder gennemgås nedenfor opdelt i de faser hvor de ofte benyttes. Bemærk dog at mange af undermetoderne kan bruges på flere forskellige måder og derfor kan være relevant i flere faser.
Planlægning
Funktionsstubbe: Strukturen af et program kan påbegyndes og udvides ved at skrive funktionsstubbe og beskrive funktionaliteten vha. kommentarer.
Skitsering vha. diagrammer: Programmets opbygning (data, logisk og/eller brugerflade) kan designes ved at skitsere rutediagrammer, brugerhistorier, diagrammer over funktionskald, klassediagrammer eller andet.
Abstraktion: Man kan designe sit program i forskellige abstraktionsniveauer og fx indkapsle elementer der har logisk sammenhæng.
Generalisering: Funktioner eller klasser kan generaliseres.
Udarbejdelse
Programmeringsparadigme: Man kan arbejde ud fra principper i forskellige programmeringsparadigmer fx objektorienteret kodning, procedural programmering eller andet.
Mañana-princippet: Under kodning udelades et større problem eller et specialtilfælde og man laver en funktionsstub og vender tilbage til implementeringen ved en senere iteration.
Polymorfi: Samme grænseflade kan anvendes til forskellige datatyper fx vha. overlæsning eller nedarvning.
Fejlfinding: Både under implementation og på baggrund af tidligere evaluering kan det være nødvendigt at fejlfinde fx vha. debugger eller systematisk gennemgang af kildekoden.
Evaluering
Brugertest: Programmet evalueres på baggrund af test udført af bruger, andet gruppemedlem eller evt. en selv.
Funktionelle test: Dele af programmet evalueres på baggrund af test der kontrollerer input og output. Unit-test kontrollerer enkelte dele af programmet og integrationstest kontrollerer flere dele i sammenhæng. Dette kan automatiseres vha. “assertions” (antagelser) eller biblioteker/frameworks til at udføre tests.