mboost-dp1

Flickr - Sue Richards

Software skal laves uden at rode med kildekode

- Via Version2 - , redigeret af Pernicious

Står det til Ekkart Kindler, der er lektor hos DTU, så skal det i fremtiden være muligt at lave software, uden at arbejde direkte med kildekode. Idéen er at arbejde med detaljerede modeller, der automatisk omsættes til den nødvendige kode.

Formålet er at leve op til kravet om hurtig levering af pålidelige programmer, der er at finde i erhvervslivet. Kindler har derfor været med til at stifte “Competence Center in Model-based Software Engineering” på DTU, der skal prøve at løfte denne opgave.

Ekkart Kindler, lektor ved DTU til Version2 skrev:
Software bliver mere og mere kompleks, og model-based software engineering handler om at bruge modeller som mere end bare illustrationer for at kunne udvikle mere pålidelig software hurtigere.

Kindler erkender, at metoden ikke vil egne sig til alle opgaver, men at laves det rigtig, så vil det kunne bruges til næsten alt slags softwareudvikling. Der forskes i metoden flere steder i verden og Kindler håbet, at der kommer et gennembrud inden for de næste 5-10 år.





Gå til bund
Gravatar #1 - eviscerator
16. jul. 2009 06:36
Ikke for at lyde som en reklame, men man har i mange, mange år kunne lave software uden at rode med kildekode. Se f.eks. Multimedia Fusion på www.clickteam.com. Man kan også lave spil med det.

Skal tilføjes at jeg her kommenterer overskriften, og ikke det ham der Ekkart snakker om.
Gravatar #2 - owrflow
16. jul. 2009 06:48
Så skifter jeg fag
Gravatar #3 - NeedNoName
16. jul. 2009 06:50
1#
Ja, men man kan ikke lave alt modelbaseret og jeg tror aldrig man slipper HELT for at skulle kode - heldigvis. Tror de mest udbredte programmeringssprog PT har fundet et meget godt abstraktionsniveau, men det er nu rart at have et veludviklet IDE til GUI-programmering...
Gravatar #4 - briancaos
16. jul. 2009 06:59
Hvem skal lave koden til hans Model Based Software? :-)
Gravatar #5 - gensplejs
16. jul. 2009 07:04
briancaos (4) skrev:
Hvem skal lave koden til hans Model Based Software? :-)

Pas. Tegn nogle uml diagrammer og wupti. Koden opstår på magisk vis!
Sorry men det er prøvet før. MAN SLIPPER IKKE SELV FOR AT KODE!

eviscerator (1) skrev:
Ikke for at lyde som en reklame, men man har i mange, mange år kunne lave software uden at rode med kildekode. Se f.eks. Multimedia Fusion på www.clickteam.com. Man kan også lave spil med det.

Skal tilføjes at jeg her kommenterer overskriften, og ikke det ham der Ekkart snakker om.

Forkert. Har "Multimedia Fusion" måske skrevet sig selv eller va?
Gravatar #6 - Coney
16. jul. 2009 07:05
#4 Den påtager jeg mig:) Jeg er færdig om fire år så hvis jeg lige skynder mig kan det saaaagtens nås! Jeg tror der er penge i skidtet:)

OT: Lyder temmelig smart... Men hvis han mener at man skal kunne kode alting som man for eksempel koder GUI i en IDE så tror jeg ikke hardcore programmører hopper med på vognen... Lige umiddelbart ville jeg mene at det i sidste ende ville tage for meget styring væk fra programmøren... Friheden til at kunne kode hvad som helst ville forsvinde en smule...
Gravatar #7 - BluepaiN
16. jul. 2009 07:07
Vi har jo allerede programmer såsom Dreamweaver, hvor man kan lave det hele wysiwyg, uden at kigge på ret meget kode (ganske vidst er det ikke noget at råbe hurra for, men det kan sagtens lade sig gøre).
Så det handler blot om at få udviklet konceptet noget mere.

Personligt ville jeg gerne kunne kode noget software/små programmer, da man tit og ofte står og mangler et program, der kan udføre noget specifikt. Det bliver en hel del nemmere, hvis man får noget wysiwyg/modul/lego-agtig software, hvor man bare sætter det hele sammen.
Gravatar #8 - Zalon
16. jul. 2009 07:10
Hmm, National Instruments har da deres LabVIEW udviklings værktøj, som har eksisteret i over 20 år.

Det er da sådan noget træk og slip programmering hvor man ikke skal skrive kode, og det kan man da lave næsten alt i.

Så hvad er forskellen på det, og så hans idé?
Gravatar #9 - jAST
16. jul. 2009 07:12
Jamen det er bare endnu et lags abstraktion. Jeg tror ikke han forventer at al software skal skrives i et model-baseret "sprog", men derimod særligt trivielle ting.

Det der dog er galt med det abstraktionslag er at folk vil "glemme" hvordan man koder og blot stole på at abstraktionslaget genererer den optimale underliggende kode. Derved dræber man også mange af mulighederne for at nye idéer opstår indenfor softwareudvikling.

Til dagligdags ting kan jeg godt se formålet. Men generelt synes jeg det er en tåbelig idé.
Gravatar #10 - supermand
16. jul. 2009 07:18
Nu er artiklen ikke særlig dyb, så guderne må vide hvad manden egentlig sagde/mener.

Men til små dagligdags ting kan det vel virke ok hvis man forsker lidt. Sådanne værktøjer findes jo allerede.
Den genererede kode er bare sjældent særlig god til at kunne vedligeholdes.. heller ikke af den samme generator der lavede den... det er min erfaring.

Til den virkelige verden af komplicerede systemer, hvor der er komplicerede krav fra virkelige menesker og love som forandres fra dag til dag, ja så vil det ikke virke!..

Men en meget sjov Star Treck drøm er det da!
Gravatar #11 - mrF0x
16. jul. 2009 07:35
Jo der er måske steder hvor det kan bruges og hvor man kan bruge et sådant værktøj.

Dog forbeholder jeg mig retten til at forholde mig kritisk til generator kode. De ting jeg arbejder med idag bliver ret svært at udvikle ud fra bestemte modeller.

Det kan være det kan bruges til store forretningssystemer - men bliver det bare en smule teknisk tror jeg det falder til jorden med et brag.

Jeg tror ikke helt på den.
Gravatar #12 - shadowsurfer
16. jul. 2009 07:36
#4

Når den en gang er færdig, brude den kunne bruges til at kompile sig selv! Hvis den ikke når til det trin, kan det jo ikke være en fuldgod erstatning for at skrive koden i hånden... Ind til dag vil man som regl vælge at mellem sprog til at boot strap processen.

Man skriver jo som regl heller ikke kompilere i binær kode...
Gravatar #13 - gensplejs
16. jul. 2009 07:39
jAST (9) skrev:
Det der dog er galt med det abstraktionslag er at folk vil "glemme" hvordan man koder og blot stole på at abstraktionslaget genererer den optimale underliggende kode. Derved dræber man også mange af mulighederne for at nye idéer opstår indenfor softwareudvikling.

Taget i betragtning hvor elendigt de fleste mennesker koder og hvor mange fejl man laver i triviel kode så vil jeg altid foretrække et abstraktionslag (også selv om det måske ikke generere optimal kode)
Gravatar #14 - shadowsurfer
16. jul. 2009 07:40

Jeg tror heller ikke på det vil blive en success, da det jo virker som om han vil lave en fuld god erstatning for at skrive koden i hånden, så skal det være lige så fleksibelt... Men skal det være lige så fleksibelt, så bliver det jo nok også lige så kompleks.

Der er nok en grund til, at vi udtrykker primært på skrift og i tale, istedet for primært i piktogrammer der viser en bestemt handling eller ting. Så vidt jeg har forstået, så har ikke en gang det kinesisk piktografiske skriftsprog, tegn for alle mulige handlinger eller ting, men er netop (lige som det latinske) en sammensætning af primitiver. Simple primitiver er simpelthen mere fleksible.
Gravatar #15 - Mort
16. jul. 2009 07:55
Jeg har selv arbejdet med model baseret data modellering, de sidste par år, hvor vi har designet en software model designer og så brugt den designer til at definere hvordan vi ville have vores data model til at se ud, for derefter at skrive templates der gjorde at designeren kunne generere koden for os.

Udviklingsmetoden er stadig i sit tidlige stadie og ikke ordentligt integreret ind i software udviklings miljøerne hvilket gør at der er mange problemer der skal løses manuelt før hele processen virker.

Det at arbejde med den slags modellering har også givet mig idéen om at software udvikling i fremtiden er nødt til at være mere model baseret, for når koden bliver for stor og kompleks bliver den samtidig enormt besværlig at forstå og overskue. Det gør fejlretning og videre udvikling mere kompliceret og når der kommer nye folk på projektet som ikke har samme indsigt så introduceres endnu flere fejl indtil de har gennemskuet hele koden.

Min tanke er at hvis man i stedet kan skrive genbrugbare komponenter i kode og så forbinde disse komponenter via et grafisk modellerings værktøj, så vil det være langt lettere at kunne overskue et flow igennem koden. Hvis sammensætningen af komponenterne i sig selv også kan bruges som komponenter så vil det være muligt at modellere mere kompliceret kode i en form som er lettere at gennemskue.

Microsoft DSL (Domain Specific Languages) og WWF (Windows Workflow Foundation) er to skridt på vejen mod denne slags udvikling, men de er stadig for fejlfyldt, for komplicerede at bruge og man kommer hurtigt til at bruge mere tid på at få værktøjerne til at gøre det man vil end at løse opgaven - og så er fordelene væk.
Gravatar #16 - Zeales
16. jul. 2009 08:22
Øh, selv Visual Studio har kunne dette i et stykke tid. Måske ikke så grundigt, men stadig, muligheden er der.
Gravatar #17 - mcgreed
16. jul. 2009 08:41
Der er jo en grund til at det hedder "What You See Is What You Get" editor. Så ja, tror også at det vil begrænse det kreative samt at det bliver tungere, da tingene ikke blot gøre hvad de skal man sikkert bliver bundled med andre funktioner.
Gravatar #18 - Kian
16. jul. 2009 08:48
Ha!
Visual Studio Team System WYSIWYG Edition.

Jeg tror ikke hans ide holder. Det lyder liiidt for utopisk. Læner dette sig iøvrigt ikke lidt op af AI? Jeg mener - der skal vel være en eller anden form for kraftig intelligens der kan forstå en eller anden form for input?

Iøvrigt så det er jo også fyldt med begrænsninger - hvis der ikke kodes er det jo ganske simpelt at det hele pludselig bliver begrænset i forhold til hvis det var en DIY-kode. Og hvad kode skrives? er vi i OOP eller er det bare statisk spaghetti-kode?

Jeg tror ikke jeg vil sætte mine håndøre i projektet... det er simpelthen for fjernt. Men tanken er sød!
Gravatar #19 - Scapegoat
16. jul. 2009 08:50
Jeg kunne nu godt se en fordel ved hans idé. Når mellemstore firmaer idag skal inplementere noget Navision/C5 eller lign. er der mange som får udviklet et modul til lige netop dét firma. Det kan godt være en bekostelig affære, og det er jo ikke altid at det kommer til at køre 100% som planlagt.

Det man så kunne gøre her er at den IT-ansvarlige kan få en drag-and-drop-programmerings-licens og så kan han løbende ændre i programmet. Muligheden er jo netop at folk som ved hvordan det skal se ud, ikke skal forklare en programmør hvad de mener. De kan selv lave det. Ligesom det er svært at forklare Picasso hvordan dine tanker ser ud.

Når vi så kigger på hans produkt, så kan jeg så godt se at de kommer til at arbejde med det i laaaang tid endnu ;)
Gravatar #20 - Holger_dk
16. jul. 2009 08:56
Hm... det er jo noget som en del har roddet med før (Microsoft med deres DSL Tools, som var mildest talt noget buggy lort, da jeg roddede med det for nogle år siden).

Men jo der kan være en fremtid i dette ny "paradigme" men jeg tror kun det vil have et begrænset anvendelses område.

lige nu lyder det for mig som de lover det samme OOP lovede i sin tid. og det holdt jo ikke, men vi fik da design patterns ud af det.

Og Jetbrains (dem bag IntelliJ blandt andet) har lavet deres MPS (hvor de bare kalder princippet Language Orientet Programming), hvor princippet bag er lidt det samme (at lave en nyt abstraktionslag som der kodes i).
Gravatar #21 - nielsbrinch
16. jul. 2009 09:33
At software i fremtiden udarbejdes ved hjælp af komplekse diagrammer, påstod jeg i artiklen "Fremtidens programmør" i Moment. Det må have været ca. år 2004.

Det tror jeg stadig på er rigtigt. Selvfølgelig vil der stadig være programmører som skriver selve kildekoden. Men det svarer lidt til at meget få af nutidens programmører skriver i assembly, fordi andre har gjort fodarbejdet og givet flertallet af programmører et højere abstraktionsniveau.

At programmere med diagrammer er bare det næste abstraktionsniveau og vil gøre det endnu hurtigere og nemmere at programmere end med C#/Java.
Gravatar #22 - ttolst
16. jul. 2009 09:56
Jeg tror på ideen, men dog kun i et begrænset domæne. Jeg tror det vil være et skridt fremad for mange af de frygtlige spaghetti visual basic business applikationer derude, og jeg tror på at det måske kan bruges til customisering af applikationer.

Men at skrive en større applikation på den måde? Yeah right :-) Der vil altid være en masse nitty gritty detaljer, og at skulle forsøge at løse dem på højt abstraktionsniveau kan da kun blive en klods om benet.

Med andre ord tror jeg at det vil gøre simple ting meget simple, og svære ting meget besværlige.
Gravatar #23 - Mort
16. jul. 2009 10:02
ttolst (22) skrev:
Men at skrive en større applikation på den måde? Yeah right :-) Der vil altid være en masse nitty gritty detaljer, og at skulle forsøge at løse dem på højt abstraktionsniveau kan da kun blive en klods om benet.


Der er ingen der siger at programmer kun skal være model baseret. Hvis du har behov for at løse nitty gritty detaljer som ikke er praktiske at løse med de elementer som modellen tilbyder, kan man skrive et nyt element som kan løse problemet og så putte det ind i modellen.
Gravatar #24 - myplacedk
16. jul. 2009 10:04
De fleste af jer lyder som om man aldrig er gået et abstraktionsniveau op før. Lær af historien, og indse at det er et spørgsmål om tid. Det eneste der er interessant at diskutere er hvornår og hvordan.

Selvfølgelig slipper man ikke 100% for at kode, ligesom vi endnu ikke er sluppet 100% for assembly-kode. Men det er godt nok tæt på, selv om man sagde engang at tanken var tåbelig.
Gravatar #25 - myplacedk
16. jul. 2009 10:08
Jeg har for nogle år siden skrevet et lille system, hvoraf nok omkring halvdelen af koden var auto-genereret.

Det var et server/klient-system, hvor vi beskrev protokollen med XML. En generator lavede så kommunikationsdelen af både server og klient.

Klienten skulle have en GUI. Den tegnede vi, og fik genereret koden.

Så var der bare noget forretningslogik der skulle skrives, og det hele skulle bindes sammen. Vupti.

En ændring af protokollen var utrolig nem at implementere, selv om det krævede mange ændringer i koden.
Gravatar #26 - knasknaz
16. jul. 2009 10:09
"Software bliver mere og mere kompleks"...

Software bliver også mere og mere fyldt med bugs. Mon der er en sammenhæng?
Gravatar #27 - b4@
16. jul. 2009 10:46
Så han vil lave en slags blanding af Lisp og Qt? Jeg er ikke helt med i hvad dette produkt/idea faktisk gør.
Gravatar #28 - Stryder
16. jul. 2009 12:14
Der er selvfølgelig nogen der skal kode Værktøjet :o)
Værktøjet kaldes for CASE Tool (Computer Aided Software Engineering).
Det Ekkart har tænkt sig er at bruge EMF (en udviddet form af UML) som modelleringssprog, til at beskrive modellen af softwaren man vil lave. (i hvert fald indtil for et halvt år siden, han har nok udviddet konceptet til også at kunne genere software af modellen).

Værktøjet er skrevet i Java med et Open source værktøj der hedder Eclipse.
Eclipse har plug-ins der hedder Eclipse Modeling Frame Work (EMF), Graphical Editing Framework (GEF) og Graphical Modeling Framework (GMF).

Det største problem med udviklingen af softwaren er helt klart at den manglende dokumentation for EMF, GMF og GEF, og da det er open source, kommer der hele tiden nye versioner af både Eclipse, EMF, GEF pg GMF,
hvilket gør at der konstant er mærkelige kompatibilitetsproblemer, og gør det også svært at vide, hvilken version af dem der passer bedst sammen.

Hvis ikke Eclipse (og de andre frameworks) bliver bedre med kompatibilitet med hinanden, så kan jeg ikke se hvordan der vil opstå bugs i hans CASE Tool.
I øvrigt bliver man jo nødt til at validere at værktøjet er fejlfrit (eller kun har små fejl som egentlig ikke har noget at gøre med selve modelleringen eller afprøvning af software systemet og generering af softwaren).
Gravatar #29 - nyx
16. jul. 2009 13:22
LOL - peeerrrfoooooomanceeee?! Hvor blev du af?!

Selvfølgelig, til de der lever efter devisen "hardware billigere end udviklere" kan det vel virke lige så godt som at tisse i bukserne, men...

Hvis folk bare vidste hvor stor forskel der er på software, og ikke optimeret software. :-) Selv sandboxed - Java anyone? - er det en tabt kamp, og så bliver det ikke synderligt nemt at skulle tilføje endnu et lag og bevare et hint af performance, hvorfor det så er ekstra humoristisk at der tales om at virksomheder skal bruge noget sådant.

Men det kan da sikkert appelere til de samme mennesker som "koder hjemmesider med Frontpage". :-)
Gravatar #30 - myplacedk
16. jul. 2009 15:23
nyx (29) skrev:
LOL - peeerrrfoooooomanceeee?! Hvor blev du af?!

Læs lige #24, og fortæl mig om du primært koder assembly.

nyx (29) skrev:
Selvfølgelig, til de der lever efter devisen "hardware billigere end udviklere" kan det vel virke lige så godt som at tisse i bukserne, men...

Som udgangspunkt passer det meget godt, men man skal altid finde en balance for hvor meget man skal gøre ud af performance.

Nogle gange skriver man elementer i assembly, for virkelig at hive så meget som muligt ud af en processor. Det er bare så dyrt at det gør man sjældent. Andre gange er performance noget nær ligegyldigt, og så skal man bare op på så højt et abstraktionsniveau som muligt.

Jeg sidder selv til dagligt og gør hvad jeg kan, for at vores udviklere skal fortælle computeren HVAD den skal gøre, og ikke HVORDAN. Og ALLE udviklere jeg har hørt udtale sig om det, synes det er en rigtig fed ide.
(Og performance-forskellen er kun målbar hvis jeg kører den ud i ekstreme urealistiske situationer.)
Gravatar #31 - arne_v
22. jul. 2009 02:29
briancaos (4) skrev:
Hvem skal lave koden til hans Model Based Software? :-)


Man kan skrive en C compiler i C o.s.v. så mon ikke man kan lave MDA software med MDA.

Man skal selvfølgelig have en håndskrevet bootstrapping til første version, men det laver man så.

Det har man kunne gøre med compilere i 40 år (mindst).
Gravatar #32 - arne_v
22. jul. 2009 02:31
#6-8

Drop and drag GUI builder og MDA er på forskellige niveauer.
Gravatar #33 - arne_v
22. jul. 2009 02:31
#10

Hvilke MDA værktøjer har du erfaring med?
Gravatar #34 - arne_v
22. jul. 2009 02:33
#16-18

Han vil næppe undervise i WYSIWYG GUI udvikling.

Der er DTU ikke en folkeskole.
Gravatar #35 - arne_v
22. jul. 2009 02:37
knasknaz (26) skrev:
"Software bliver mere og mere kompleks"...

Software bliver også mere og mere fyldt med bugs. Mon der er en sammenhæng?


Jeg har ikke set nogen undersøgelser som siger at fejl per 1000 linier kode stiger.

Snarere tværtimod.

At det absolutte antal fejl stiger når kode mængden stiger voldsomt og man ikke ændrer udviklings processen fundamentalt er næppe overraskende.
Gravatar #36 - arne_v
22. jul. 2009 02:40
#28

EMF, GMF og GEF er Eclipse værktøjer.

Jeg antager at der på DTU vil blive undervist i OMG MDA, PIM, PDM, PSM, MOF, XMI etc. og at Eclipse plugins er en sjovt eksempel.
Gravatar #37 - arne_v
22. jul. 2009 02:43
#29

Det er 20 år siden at performance var noget med at sidde og optimere kode - idag afhænger performance af arkitektur og design (for almindelige mainstream applikationer).
Gravatar #38 - arne_v
22. jul. 2009 02:45
#0

Jeg kan ikke lide overskriften.

Jeg tror på ideen. Ihvertfald på langt sigt.

Men jeg ser det ikke som at kildkode forsvinder.

Kildekode ændrer sig fra tekst linier med ordrer til primitive data og primitive operationer til (delvist) at være modeller.

Gravatar #39 - Windcape
22. jul. 2009 10:32
Det minder en del om Microsoft Oslo
Gravatar #40 - arne_v
22. jul. 2009 13:18
#39

Lidt ja,

Men så vidt jeg ved er hoved pointen i Oslo at understøtte DSL som stadig er tekst men bare stærkt specialiseret.

MDA vil have UML m.v. som input og så ende op med Java eller C# eller whatever.
Gravatar #41 - Windcape
22. jul. 2009 15:00
Rigtigt, men jeg tror at Oslo er en god start på udviklingsværktøjer til model baseret software.

Det er ihvertfald et af de første *rigtige* projekter jeg har set, lavet til virkeligheden, og ikke blot som et teoretisk forsøg på et universitet.
Gravatar #42 - arne_v
22. jul. 2009 15:21
#41

MDA har skam været brugt i den virkelige verden i adskillige år.

Se f.eks.:
http://www.kc.com/success.php
Gravatar #43 - arne_v
22. jul. 2009 15:28
#41

Hvis du selv vil lege med noget MDA, så kig på:
http://www.andromda.org/

Det er langtfra så komplet som Kennedy Carter's Ada generering, men stadig interessant.

Jeg vil dog nok foreslå at du bruger Java backend fremfor .NET backend. Der er flere cartridges til Java end til .NET.
Gravatar #44 - lorenzen
22. jul. 2009 16:09
Jeg synes det er meget intressant at de fleste betragter som noget der udelukkende laves i grafiske annotationer ala UML. (Dog med langt bedre dynamiske beskrivelse)

Personligt bruger jeg VDM++ til at arbejde med MDA*/MDD (dog 95% universitets relateret), og det er godt nok tekst. Men det er ikke kode i den gængse forstand men en matematisk notation. Vores ide er at både bruge UML (og lign) med den her matematiske notation, således at vi kan få det bedste at begge verdener. Som det er pt kan man gå direkte fra VDM++ til UML og tilbage igen, dvs at der hvor UML og generelt grafiske udtryksformer har sin begrænsning der vælger man den tekstuelle notation, og ellers kan man bruge UML.

Yderligere er næste trin så at inkludere andre notationer, f.eks. kunne det være rart at kunne direkte koble sin software model over på en mekanik model som er beskrevet i mekanikkens notation, kunne være en Bond Graph.

Og det er nok her jeg ser den største fordel for MDA, det er muligt at lave simuleringer og beskrivelser på et meget tidligt stadie og endda få testet disse på tværs af fagområder.

*MDA er selvfølgelig OMG's udtryk, men det bliver alligevel brugt i sammenhæng som ikke direkte er dem.

Og til den som brokker sig over performance på autogen kode, så er de fleste kodegeneratorere så gode idag at det er sjældent man kan vinde noget ved at gøre det bedre. BODEREC projektet havde målinger der viste at den eneste forskel på håndlavet og autogen kode, var at autogen kode brugte cirka 10% mere memory på deres embeded udstyr, og det var i 2006 de blev konkluderet. 10% er meget, men kan man spare 10.000 udviklingstimr så kan den større memory kreds hurtigt tjenes hjem.

Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login