Software findes alle steder. Uanset om du skal ringe til din tante Oda, hæve penge i en hæveautomat eller regulere styrken på dit stereoanlæg, så bruger du i en eller anden grad software.
Ved hjælp af software og internettet kan du endda forbinde dig med hele verden, og verden kan (prøve at) forbinde sig med al den software, som findes på din computer eller mobiltelefon.
Derfor er softwareudvikling og softwarevedligeholdelse en meget kompleks opgave, og kompleksiteten stiger endnu mere i fremtiden.
Men samtidig med, at softwaren bliver større og mere kompleks, forventer vi også, at kvaliteten, pålideligheden og sikkerheden bliver højere. Vi har derfor brug for gode og pålidelige metoder til at udvikle software.
Model-baseret softwareudvikling
Software Engineering er den ingeniørdisciplin, som beskæftiger sig med planlægning, projektering, udvikling, implementering, drift og vedligeholdelse af softwaresystemer og metoder, der kan benyttes hertil.
Den største udfordring i udviklingen er at følge med den stigende kompleksitet og de stigende krav til kvalitet og sikkerhed i softwaren. Hertil kan eksisterende teknikker og metoder videreudvikles og tilpasses, men også nye metoder vil skulle udvikles.
Til at tackle denne opgave er der opstået et fokusområde, som intensivt beskæftiger sig med softwaremodeller, som gør det muligt at forstå, planlægge og udvikle softwaren på et højere abstraktionsniveau.
Softwaremodeller er en slags skitse af, hvordan softwaren skal se ud. Sådanne skitser har allerede været anvendt blandt softwareudviklere i mange år - lige siden programmerne blev for store til, at man kunne programmere dem i et stræk, og man var nødt til at tale om ideen, før man kunne programmere den.
\ Læs mere
Modellerne svarer til arkitekttegninger
Men dengang var skitserne bare nogle streger på et stykke papir, og næsten hver eneste softwareudvikler havde sin egen måde at lave sine skitser på. I dag tager vi disse skitser mere alvorligt, og der er standarder for, hvordan de skal se ud. Vi kalder dem nu 'modeller', og forskningsområdet kalder vi modelbaseret softwareudvikling (eller på engelsk Model-based Software Engineering, MBSE).
Ideen bag softwaremodeller kan bedst forklares med en analogi (se også boksen i bunden af artiklen): softwareingeniørens modeller er ligesom de tegninger, som arkitekten eller bygningsingeniøren udarbejder, før de bygger et hus.
Arkitekttegningen er så detaljeret, at håndværkerne kan bygge huset baseret på den. Tegningen sikrer, at de forskellige dele af huset kan fremstilles uafhængigt af hinanden og passer sammen til sidst. Arkitekttegningen sikrer desuden - forhåbentlig - at det færdige hus tilfredsstiller bygherren og svarer til hans forventninger.
Ide, model, software
Selv om analogien mellem arkitekttegninger og softwaremodeller kan forklare vores modeller, er der også stor forskel på bygninger og software: i modsætning til bygninger er software immateriel, og vi er ikke nødt til at 'bygge' software fysisk - i sidste ende drejer det sig kun om nuller og et-taller i computerens hukommelse.
Derfor er spørgsmålet, om computeren kan bruge vores modeller direkte for at gøre det, den skal, uden at vi 'bygger' programmer ud af disse modeller. Eller endnu mere direkte: kan disse modeller bruges direkte som software? Er modellerne vores software?
Det er lige præcis, hvad modelbaseret softwareudvikling handler om. På denne måde vil softwareudvikling blive billigere og hurtigere; og den udviklede software vil være mere sikker og pålidelig, fordi vi ikke behøver at programmere den manuelt - i hvert fald ikke så meget som tidligere.
Spørgsmålet er bare: Kan det virkelig fungere? Eller drømmer vi bare?
Skal generere software automatisk

Konsortiet Object Management Group (OMG), som fastsætter standarder inden for programmering og modellering, er kommet med et udspil kaldet Model-driven Architecture (MDA), som vil fremme ideen om automatisk at generere software fra modeller.
Mange softwareudviklingsvirksomheder har nu fået øjnene op for ideen eller benytter allerede deres egne metoder til at generere dele af softwaren helt automatisk fra modellerne.
Dette vedrører dog hovedsageligt softwarens struktur og ikke så meget softwarens egentlige funktioner; eller det virker kun for standardfunktioner som f.eks. grafiske editorer eller inden for meget smalle områder. Alligevel er de områder, hvor man genererer software ud fra modeller, blevet større i de seneste år.
De helt rigtige notationer
En af årsagerne til, at vi ikke kan generere al softwaren ud fra modeller er, at vi mangler de rigtige notationer (en notation er et symbolsprog til at formulere modeller) for nogle aspekter af softwaren, samt koncepter til at kunne integrere disse med de eksisterende modeller. Det drejer sig blandt andet om softwarens funktioner.
Det er de dele, vi er vant til at programmere til sidst, og derfor mangler dette aspekt i mange modeller - vi har slet ikke opfundet de rigtige notationer og begreber til at beskrive det. Det er endnu en forskningsopgave at udvikle de helt rigtige notationer og begreber, så hele softwaren kan genereres automatisk. Mange eksempler viser dog, at det i princippet er muligt.
Så vil det endelig blive muligt at udvikle software uden at programmere!
Kræver godt uddannede softwareingeniører
Men betyder det så, at softwareudvikling bliver nemmere og muligt for alle og enhver? Givetvis ikke! Allerede i dag er det konceptuelle arbejde, som vi bruger modeller til, det sværeste. Dette arbejde kræver godt kendskab og masser af erfaring i softwareudvikling og modellering.
Programmeringen er kun det sidste skridt i processen, hvilket svarer til håndværkerens udførelse af arkitekttegningen. At lave softwaremodeller (altså softwarens arkitekttegninger) så de er korrekte og fuldstændige - og ikke mindst så de virker - kræver godt uddannede softwareingeniører, som er gode til at modellere.
Resten af arbejdet kan da automatiseres!






























