{"id":5297,"date":"2023-07-07T18:16:03","date_gmt":"2023-07-07T16:16:03","guid":{"rendered":"https:\/\/launix.de\/launix\/?p=5297"},"modified":"2023-07-11T12:09:00","modified_gmt":"2023-07-11T10:09:00","slug":"featureorientiertes-programmieren-als-form-der-modellgetriebenen-softwareentwicklung","status":"publish","type":"post","link":"https:\/\/launix.de\/launix\/en\/featureorientiertes-programmieren-als-form-der-modellgetriebenen-softwareentwicklung\/","title":{"rendered":"Featureorientiertes Programmieren als Form der Modellgetriebenen Softwareentwicklung"},"content":{"rendered":"<p>Die Begriffe &#8220;Low Code&#8221; und &#8220;NoCode&#8221; sind in aller Munde &#8211; von DER Neuerung in der Programmierwelt spricht man. Diese beiden Ans\u00e4tze geh\u00f6ren zur \u00dcberkategorie der sogenannten <strong>Modellgetriebenen Softwareentwicklung<\/strong>. Doch was ist das eigentlich?<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Ein Modell ist ein Abbild der Wirklichkeit<\/h3>\n\n\n\n<p>Ein Modell ist ein Abbild der Wirklichkeit &#8211; So zumindest lautet der Merksatz, den man im Physik-Unterricht zur Definition eines &#8220;Modells&#8221; lernen musste. Modelle gibt es <em>\u00fcberall<\/em>: Wettermodelle simulieren das Wetter im Computer, um einen Wetterbericht vorherzusehen; Physikalische Modelle wie das Atommodell erkl\u00e4ren anschaulich die Wirkungsweise unseres Kosmos; Architektur-Modelle sind Miniatur-Versionen eines Hauses oder eines ganzen Areals, um zum Beispiel Bauantr\u00e4ge genehmigt zu bekommen.<\/p>\n\n\n\n<p>Von <strong>Modellierung<\/strong> spricht man, wenn man beim Entwurf nicht das reale Objekt direkt bearbeitet, sondern zuerst ein Abbild (z.B. ein 3D Computer-Modell oder eine Lehm-Form der Luxus-Autokarosse) mit viel weniger Aufwand gestaltet, das dann sp\u00e4ter in sein reales Counterpart \u00fcbersetzt werden kann.<\/p>\n\n\n\n<p>Und genau das tut man bei der <strong>Software-Modellierung<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Vorreiter: Struktogramme, ER-Diagramme, UML<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-1.png\" alt=\"\" class=\"wp-image-5299\" width=\"183\" height=\"242\" srcset=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-1.png 732w, https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-1-227x300.png 227w\" sizes=\"auto, (max-width: 183px) 100vw, 183px\" \/><\/a><\/figure><\/div>\n\n\n<p>In der Informatik haben sich schon sehr fr\u00fch Modellierungswerkzeuge herausetabliert, die auch standardisiert wurden: ER-Diagramme beschreiben Diagramme, Strukturgramme beschreiben Algorithmen.<\/p>\n\n\n\n<p>Die OMG hat anschlie\u00dfend angefangen, den UML-Standard zu spezifizieren. Im UML-Standard kann man alle m\u00f6glichen Szenarien modellieren:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Klassendiagramme modellieren Datenschemen, Attribute und Methoden<\/li>\n\n\n\n<li>Sequenzdiagramme modellieren Kommunikationsszenarien zwischen Akteuren, z.B. zwischen Client und Server<\/li>\n\n\n\n<li>Zustandsdiagramme beschreiben das Verhalten von zustandsgetriebenen Automaten<\/li>\n\n\n\n<li>Paketdiagramme modellieren den High-Level-Aufbau einer Software<\/li>\n\n\n\n<li>uvm<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Modellieren und Programmieren<\/h3>\n\n\n\n<p>Schnell hat sich herausgestellt, dass die vorangegangene Modellierung ja eigentlich Basis f\u00fcr die Ausimplementierung ist. In der Anfangszeit der Informatik hat man noch modelliert und anschlie\u00dfend das Modell nachprogrammiert. Nach und nach kamen immer mehr Tools hinzu, die aus den Modellen schon Code und Codeger\u00fcste herstellen konnten. So kann man sich anhand eines UML-Klassendiagramms schon in der Eclipse-IDE die JAVA-Klassen mit leeren Methoden anlegen lassen. <\/p>\n\n\n\n<p>Doch diese einfachen Code-Generatoren sind leider eine Einbahnstra\u00dfe: Aus dem Modell wird Code, aber der Code kann nicht mehr in das Modell zur\u00fcckgewandelt werden, sprich: \u00c4ndert man etwas am Code, das so nicht modelliert wurde, muss man danach das Modell von Hand aktualisieren.<\/p>\n\n\n\n<p>Einen saubereren Ansatz bieten hier die No-Code und Low-Code Tools:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modell als Single Point of Truth<\/h3>\n\n\n\n<p>Ein wesentlich vielversprechenderer Ansatz ist, bei der modellgetriebenen Softwareentwicklung einfach das <em>Modell<\/em> als Single Point of Truth zu definieren. <\/p>\n\n\n\n<p>Bei der <strong>Low-Code<\/strong>-Bewegung bedeutet das: Anstatt also das UML-Klassendiagramm in Code umzuwandeln, wird das UML-Diagramm dauerhaft im grafischen Editor behalten und nur beim Doppelklick auf eine Methode \u00f6ffnet sich noch ein Code-Editor. Doch Low-Code-Tools arbeiten nicht nur auf UML-Ebene, sie erlauben zum Beispiel auch das Designen von Benutzeroberfl\u00e4chen oder das Zusammenklicken von Ablaufdiagrammen und Workflows.<\/p>\n\n\n\n<p>Noch spannender sind hier die <strong>No-Code<\/strong>-Tools, denn bei ihnen muss sich die <em>komplette Funktionsweise<\/em> der zu programmierenden Anwendung modellieren lassen. Doch was bedeutet im Fall der Softwareentwicklung &#8220;Modell&#8221;?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Modell als Daten in einem Datenschema<\/h3>\n\n\n\n<p>Um No-Code richtig zu verstehen, werde ich hier einmal den Begriff des &#8220;Modells&#8221; entzaubern anhand der Programmiersprache Java.<\/p>\n\n\n\n<p>Denn eine Java-Bytecodedatei ist auch nichts anderes als ein Modell, um Software zu beschreiben. Hier der Aufbau eines Java-Programms:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ein Java-Programm besteht aus mehreren Klassen<\/li>\n\n\n\n<li>Jede Klasse hat einen Klassennamen, sowie einen Classpath<\/li>\n\n\n\n<li>Eine Klasse kann mehrere Attribute haben. Jedes Attribut hat einen Namen, eine Sichtbarkeit (public|private|protected), sowie einen Datentyp<\/li>\n\n\n\n<li>Ein Datentyp muss wiederum eine Klasse sein<\/li>\n\n\n\n<li>Eine Klasse hat mehrere Methoden mit Methodennamen, Sichtbarkeit, sowie einem R\u00fcckgabe-Datentyp<\/li>\n\n\n\n<li>Eine Methode hat eine Liste von Parametern mit Parametername und Datentyp<\/li>\n\n\n\n<li>Eine Methode hat eine Liste von Anweisungen<\/li>\n\n\n\n<li>und so weiter&#8230;<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full is-resized\"><a href=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-2.png\" alt=\"\" class=\"wp-image-5302\" width=\"240\" height=\"160\" srcset=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-2.png 960w, https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-2-300x200.png 300w, https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/grafik-2-768x512.png 768w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><\/a><\/figure><\/div>\n\n\n<p>Wie man sieht: Man kann den Aufbau eines Java-Programms wiederum selbst als UML-Klassendiagramm zeichnen. Damit lassen sich alle Anwendungen erstellen, die man sich so denken kann.<\/p>\n\n\n\n<p>Doch das Java-Modell hat einen gro\u00dfen Nachteil: Es ist durchg\u00e4ngig <strong>Low-Level<\/strong>ig. Was hei\u00dft das? Um komplexe Programme zu erstellen, muss man <em>viele<\/em> Klassen, <em>viele<\/em> Attribute und <em>viele<\/em> Methoden anlegen. Die Methoden bestehen wiederum aus <em>vielen<\/em> Zeilen Code.<\/p>\n\n\n\n<p>Will man beispielsweise jetzt ein komplexeres Feature, wie zum Beispiel <strong>Logging<\/strong> in eine Software einbauen, f\u00e4ngt man an, hunderte Zeilen in Zig Dateien zu \u00e4ndern. Das zu Grunde liegende Software-Modell ist also <strong>m\u00e4chtig, aber nicht angenehm zu programmieren<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Workflows: Ein beliebtes No-Code-Modell<\/h3>\n\n\n\n<p>Ein beliebtes No-Code-Modell ist der <strong>Workflow<\/strong>. Beim Workflow-Modell modelliert man die einzelnen Formulare, in denen sich der User aufhalten kann, sowie mit welchem Datensatz die Formular-Felder verkn\u00fcpft werden, sowie wohin die einzelnen Buttons (z.B. <em>Speichern<\/em> oder <em>Weiter<\/em>) als n\u00e4chstes f\u00fchren.<\/p>\n\n\n\n<p>Das &#8220;Datenschema&#8221; des Workflow-Modells sieht also ungef\u00e4hr so aus:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Es gibt eine Liste von Formularen<\/li>\n\n\n\n<li>Jedes Formular hat Formular-Elemente mit (x, y, Beschriftung, Typ, Feld-Verkn\u00fcpfung)<\/li>\n\n\n\n<li>Jedes Formular hat Buttons mit (x, y, Beschriftung, NextWorkflow)<\/li>\n<\/ul>\n\n\n\n<p><strong>Doch das Dilemma, in dem viele No-Code-Tools stecken: Um benutzerfreundlich zu sein, muss das Modell einfach sein. Ein einfaches Modell ist aber nicht m\u00e4chtig genug, um alles damit umsetzen zu k\u00f6nnen.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">FOP als L\u00f6sung f\u00fcr modellgetriebene Softwareentwicklung<\/h3>\n\n\n\n<p>FOP ist eine sogenannte <em>featureorientierte<\/em> Programmiersprache. Das bedeutet, man kann <em>Features<\/em> in <em>Bibliotheken<\/em> definieren &#8211; und geht damit eine Abstraktionsstufe weiter als andere Programmiersprachen wie PHP, Java, C++ oder Python, die nur Programmablaufpl\u00e4ne in Prozeduren vorhalten k\u00f6nnen.<\/p>\n\n\n\n<p>Eine Feature ist im Gegensatz zu den low-leveligen Elementen der Java-Programmiersprache, die oben beschrieben wurden, wahlweise High- oder Low-Level. Damit l\u00e4sst sich viel schneller programmieren.<\/p>\n\n\n\n<p>Beispiel: Ein Feature f\u00fcr eine Software kann das &#8220;<strong>Login-Verfahren<\/strong>&#8221; sein. In FOP programmiert man dieses Feature einfach mit folgender Code-Zeile:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Login&lt;\"users\"<strong>, <\/strong>\"username\", \"password\">.<\/code><\/pre>\n\n\n\n<p>Features werden also nur mit ein paar Parametern <em>aktiviert<\/em>.<\/p>\n\n\n\n<p>Dabei gibt es in der Standardbibliothek vom FOP etliche Feature-Definitionen unterschiedlichster Modelle:<\/p>\n\n\n\n<p><strong>Imperatives \/ Objektorientiertes Programmiermodell:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Klassen<\/li>\n\n\n\n<li>Methoden<\/li>\n\n\n\n<li>Attribute<\/li>\n\n\n\n<li>Namespaces und Use-Klauseln<\/li>\n<\/ul>\n\n\n\n<p>Aus dem Imperativen Programm-Modell k\u00f6nnen direkt Quellcode bzw. Executables erzeugt werden<\/p>\n\n\n\n<p><strong>Formular-Modell:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Formulare<\/li>\n\n\n\n<li>Eingabefelder<\/li>\n\n\n\n<li>Buttons<\/li>\n<\/ul>\n\n\n\n<p>Das Formular-Modell wird in FOP-Bibliotheken so implementiert, dass es auf das Objektorientierte Modell heruntergebrochen wird.<\/p>\n\n\n\n<p><strong>Tabellen-Modell (Datenschemabeschreibung f\u00fcr Datenbanken)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tabellen<\/li>\n\n\n\n<li>Deren Spalten<\/li>\n\n\n\n<li>Datatentypen<\/li>\n\n\n\n<li>Beschriftungen<\/li>\n<\/ul>\n\n\n\n<p>Das Tabellen-Modell wird in FOP-Bibliotheken so implementiert, dass es auf das Formular-Modell heruntergebrochen wird. Man bekommt also s\u00e4mtliche CRUD-Funktionen f\u00fcr eine Tabelle gratis ausimplementiert.<\/p>\n\n\n\n<p><strong>Module-Modell (komplette Software-Features)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rechnungsstellung<\/li>\n\n\n\n<li>Personal-Zeiterfassung<\/li>\n\n\n\n<li>Produktionsplanung<\/li>\n\n\n\n<li>Dokumentenmanagementsystem<\/li>\n<\/ul>\n\n\n\n<p>Das Module-Modell wird in FOP-Bibliotheken so implementiert, dass es auf das Tabellen-Modell heruntergebrochen wird. Damit lassen sich komplette Gro\u00dfprojekte mit nur wenigen Zeilen Code implementieren.<\/p>\n\n\n\n<p>All diese Modelle kann man in der FOP-Programmiersprache sowohl textuell, als auch grafisch bearbeiten. Durch die M\u00f6glichkeit der High-Level-Features wie z.B. Modulen ergibt sich ein wesentlich schnelleres Arbeiten. Der Compiler \u00fcbersetzt den High-Level-Code dann wieder in &#8220;normalen&#8221; Source-Code zur\u00fcck, damit der Code z.B. von PHP ausgef\u00fchrt werden kann.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p>Modellgetriebene Softwareentwicklung hilft den Entwicklern, schneller zur L\u00f6sung zu kommen und weniger Programmierfehler zu machen. Gerade bei der grafischen Entwicklung erkennt man Programmierfehler auch viel schneller. Bessere Programmiermodelle erm\u00f6glichen eine bequemere Anwendungsentwicklung, da man nicht jedes mal das Rad neu erfinden muss.<\/p>\n\n\n\n<p>Modulare Baukastensysteme machen selbst gro\u00dfe Projekte h\u00e4ndelbar. Mit dem richtigen Tool lassen sich selbst ERP-Gro\u00dfprojekte mit relativ \u00fcberschaubarem Aufwand von einem kleinen Team implementieren &#8211; und kleine Teams kommunizieren bekannterma\u00dfen effektiver.<\/p>\n\n\n\n<p>Der Fallstrick liegt aber hier in der M\u00e4chtigkeit des verwendeten Tools. Die Programmiersprache FOP erm\u00f6glicht die freie Programmierbarkeit komplett neuer Modelle in Bibliotheken, was sie von allen anderen No-\/Low-Code-Tools abhebt.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Die Begriffe &#8220;Low Code&#8221; und &#8220;NoCode&#8221; sind in aller Munde &#8211; von DER Neuerung in der Programmierwelt spricht man. Diese beiden Ans\u00e4tze geh\u00f6ren zur \u00dcberkategorie der sogenannten Modellgetriebenen Softwareentwicklung. Doch was ist das eigentlich?<\/p>","protected":false},"author":2,"featured_media":5298,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","footnotes":""},"categories":[135,128],"tags":[],"class_list":["post-5297","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-launix","category-programming","single-item"],"featured_image_urls_v2":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1.png",3384,1688,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-150x150.png",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-300x150.png",300,150,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-768x383.png",751,375,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-1024x511.png",751,375,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-1536x766.png",1536,766,true],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-2048x1022.png",2048,1022,true],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1.png",18,9,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-64x64.png",64,64,true],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1.png",620,309,false]},"post_excerpt_stackable_v2":"<p>Die Begriffe &#8220;Low Code&#8221; und &#8220;NoCode&#8221; sind in aller Munde &#8211; von DER Neuerung in der Programmierwelt spricht man. Diese beiden Ans\u00e4tze geh\u00f6ren zur \u00dcberkategorie der sogenannten Modellgetriebenen Softwareentwicklung. Doch was ist das eigentlich? Ein Modell ist ein Abbild der Wirklichkeit Ein Modell ist ein Abbild der Wirklichkeit &#8211; So zumindest lautet der Merksatz, den man im Physik-Unterricht zur Definition eines &#8220;Modells&#8221; lernen musste. Modelle gibt es \u00fcberall: Wettermodelle simulieren das Wetter im Computer, um einen Wetterbericht vorherzusehen; Physikalische Modelle wie das Atommodell erkl\u00e4ren anschaulich die Wirkungsweise unseres Kosmos; Architektur-Modelle sind Miniatur-Versionen eines Hauses oder eines ganzen Areals, um zum&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/launix.de\/launix\/en\/category\/launix\/\" rel=\"category tag\">Launix<\/a>, <a href=\"https:\/\/launix.de\/launix\/en\/category\/programming\/\" rel=\"category tag\">Programming<\/a>","author_info_v2":{"name":"Carl-Philip H\u00e4nsch","url":"https:\/\/launix.de\/launix\/en\/author\/carli\/"},"comments_num_v2":"0 comments","uagb_featured_image_src":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1.png",3384,1688,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-150x150.png",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-300x150.png",300,150,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-768x383.png",751,375,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-1024x511.png",751,375,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-1536x766.png",1536,766,true],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-2048x1022.png",2048,1022,true],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1.png",18,9,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1-64x64.png",64,64,true],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2023\/07\/enlarge_Screenshot_2023-07-07_at_14-41-49_600_kostenlose_Architecture_Model_und_Architektur-Bilder_-_Pixabay-1.png",620,309,false]},"uagb_author_info":{"display_name":"Carl-Philip H\u00e4nsch","author_link":"https:\/\/launix.de\/launix\/en\/author\/carli\/"},"uagb_comment_info":0,"uagb_excerpt":"Die Begriffe &#8220;Low Code&#8221; und &#8220;NoCode&#8221; sind in aller Munde &#8211; von DER Neuerung in der Programmierwelt spricht man. Diese beiden Ans\u00e4tze geh\u00f6ren zur \u00dcberkategorie der sogenannten Modellgetriebenen Softwareentwicklung. Doch was ist das eigentlich?","_links":{"self":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/5297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/comments?post=5297"}],"version-history":[{"count":12,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/5297\/revisions"}],"predecessor-version":[{"id":5318,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/5297\/revisions\/5318"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/media\/5298"}],"wp:attachment":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/media?parent=5297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/categories?post=5297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/tags?post=5297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}