Programmerings fasens/aktivitetens mål er at implementere den endelige, eksekverbare systemmodel i form af et eller flere computerbaserede programmer. Programmering sker med mange mere eller mindre forskellige programmeringssprog indenfor forskellige programmeringsparadigmer.
Imperative programmer i programmeringssprog som Pascal og C består af sekvenser af programinstruktioner opdelt i mindre funktioner/procedurer for lettere håndtering og genbrug af programdele. Objektorienterede programmer i programmeringssprog som C++ og Java består ligeledes af sekvenser af programinstruktioner opdelt i mindre metoder grupperet omkring relaterede datastrukturer for lettere håndtering og genbrug af programdele i højere grad end imperative programmer. Andre programmeringssprog som SQL (Structured Query Language) er mindre generelt anvendelige men indeholder standardfunktioner for effektiv udvikling af bestemte typer af programmer.
Højniveau programmeringssprog er abstraktioner af ofte benyttede sekvenser og mønstre af basale maskinekode programinstruktioner og datastrukturer. Forskellige programmeringssprog indenfor de enkelte paradigmer omfatter de samme, fælles koncepter og varierer primært ved forskelle i programmeringssprog syntaksen og detailimplementeringen af koncepterne. Forskellige programmeringsparadigmer som henholdsvis imperative og objektorienterede programmeringssprog omfatter også mange fælles koncepter og forskellen består primært i objektorienterede programmeringssprog er udvidet med formalisering og effektivisering af retningslinier for "gode" programmeringsteknikker som indkapsling af abstrakte datatyper.
I sidste ende er de forskellige programmeringssprog dog blot virtuelle maskiner der alle er opbygget af de samme basale progaminstruktioner. De forskellige programmeringssprog er således blot forskellige abstraktioner og præsentationer for de samme grundlæggende ting og i princippet er det muligt at oversætte mellem dem. Nogle programmeringssprog har dog indbyggede begræsninger således at de ikke er i stand til at udtrykke bestemte, typisk maskinnære, programinstruktioner og datatyper.
I forbindelse med systemudviklingsmetodologier og -værktøjer er der typisk et markant skift i systemmodelleringsprog ved overgangen fra analyse og design til implementering - fra uformel og abstrakt diagrammering til eksakte og konkrete programinstruktioner, og der skelnes ofte mellem Upper CASE og Lower CASE systemudviklingsværktøjer. Ved struktureret systemudvikling fungerer design systemmodelleringen i en vis grad som et mellemsprog mellem de vidt forskellige systemmodelleringssprog i henholdsvis analyse og implementering. Ved objektorienteret systemudvikling anvendes de samme grundlæggende koncepter ved såvel analyse og design som implementering men ved overgangen til implementering tillægges koncepterne konkrete betydninger og begrænsninger. Implementeringen af de enkelte objektmetoder sker desuden i vid udstrækning som imperativ programmering.
Sikring af konsistens mellem analyse/design systemmodeller og implementeringen som programinstruktioner kompliceres af de meget forskellige systemmodeller, og ved at programmeringen er den første egentlige "dialog" med systemet, hvilket eventuelt medfører mange og væsentlige ændringer i forhold til analyse og design systemmodellerne. Der er behov for at programmeringen kun sker indenfor rammerne af analyse/design systemmodellerne, eller at ændringer i forbindelse med programmeringen afspejles i analyse/design systemmodellerne. Ved ændringer af analyse/design er der ligeledes behov for eventuel omstrukturering af programmerne. Kun få, avancerede systemudviklingsværktøjer understøtter gensidig sikring af konsistens mellem analyse/design og programmering, og disse er begrænset bestemte programmeringssprog dialekter og implementeringer.
Da forskellige programmeringssprog er abstraktioner for sekvenser og mønstre af de samme basale elementer, bør de kunne forenes igennem generalisering af koncepterne i et fælles grundlæggende systemmodelleringssprog. Derigennem bør de også kunne integreres bedre og lettere med den øvrige systemmodellering.
|