{"id":1239,"date":"2016-12-15T08:29:47","date_gmt":"2016-12-15T07:29:47","guid":{"rendered":"https:\/\/launix.de\/launix\/?p=1239"},"modified":"2023-07-11T12:20:19","modified_gmt":"2023-07-11T10:20:19","slug":"wie-baut-man-wiederverwendbaren-code","status":"publish","type":"post","link":"https:\/\/launix.de\/launix\/wie-baut-man-wiederverwendbaren-code\/","title":{"rendered":"Wie baut man wiederverwendbaren Code?"},"content":{"rendered":"<p>In diesem Kurzartikel will ich eine neue Form der Individual-Softwareentwicklung vorstellenn, die den Softwaremarkt revolutionieren soll.<br \/>\n<!--more--><\/p>\n<h2>Die Krux mit den Individual-Bed\u00fcrfnissen<\/h2>\n<p>Stellen Sie sich vor, Sie sind Softwareentwickler und bekommen eine Kundenanforderung, die in etwa so lautet:<\/p>\n<blockquote><p>Ich will ein CRM, das Kontakte von Xing importieren kann<\/p><\/blockquote>\n<p>Nun w\u00fcrden Sie anfangen, das CRM von Grund auf zu programmieren: Eine Programmiersprache ausw\u00e4hlen, ein Framework nach Kriterien aussuchen, programmieren, designen. Alternativ nehmen Sie ein OpenSource-CRM und entwickeln eine Xing-Erweiterung daf\u00fcr. Jetzt kommt der n\u00e4chste Kunde und sagt:<\/p>\n<blockquote><p>Ich will ein CRM, das mir erlaubt, Angebots-PDFs anhand einer Kalkulations-Maske zu erstellen<\/p><\/blockquote>\n<p>Wieder w\u00fcrden Sie alles von Grund auf programmieren oder vorhandene Software abwandeln.<\/p>\n<h2>Logische Programmierung erlaubt das Spezifizieren von Software mit Begriffen<\/h2>\n<p>Wenn Sie die oberen zwei Beispiele zusammenfassen, verwenden Sie im Kundengespr\u00e4ch doch folgende Begriffe:<\/p>\n<ul>\n<li>Ein CRM ist eine Kunden-Datenbank, die eine Liste von Kunden verwaltet und Features wie Wiedervorlage und E-Mail-Anbindung hat.<\/li>\n<li>Xing-Kontakte sind die Kontakt-Eintr\u00e4ge auf der Xing-Plattform, die mittels der Xing API ausgelesen werden k\u00f6nnen<\/li>\n<li>Angebots-PDFs sind automatisch generierte PDF-Dokumente, die einen Adressaten im Briefkopf haben, eine Begr\u00fc\u00dfung, einen Einleitungstext und eine Tabelle.<\/li>\n<li>Eine Kalkulations-Maske ist ein Formular mit hinzuf\u00fcgbaren Angebots-Posten, die die Daten f\u00fcr das Angebots-PDF sammelt.<\/li>\n<\/ul>\n<p>Jetzt gibt es aus der Informatik-Forschung aus den 70er Jahren eine Form des Programmierens, die sich &#8220;logische Programmierung&#8221; nennt. Dabei kann man beliebige Begriffe verwenden und sp\u00e4ter deren Bedeutung definieren. Durch diese Form der Programmierung ist es m\u00f6glich, Software feingradig zu spezifizieren, ja sogar zwei verschiedene Softwaretypen zu verschmelzen, wie z.B. CRM und ERP.<\/p>\n<h2>Alles mit nur 2 Grundelementen: Fakten und Regeln<\/h2>\n<p>Die Grundlage logischer Programmierung ist sehr simpel gehalten, umso schwieriger ist es, damit Vern\u00fcnftiges anzustellen. Dabei gibt es nur zwei Strukturelemente der logischen Programmierung: Regeln und Fakten.<\/p>\n<p>Fakten sind Aussagen, die wahr sind. Sie bestehen aus einem Pr\u00e4dikat, sowie Parametern. Ein Beispiel: Die Tabelle.<br \/>\n<code>Table&lt;\"kunden\"&gt;.<\/code><br \/>\nMit diesem Schnipsel Logik-Code ist es m\u00f6glich, auszudr\u00fccken, dass es eine Tabelle &#8220;kunden&#8221; in der Datenbank gibt. Analog die Spalte: <code>Column&lt;\"kunden\", \"vorname\", \"text\"&gt;.<\/code><\/p>\n<p>Regeln sind hingegen Konstrukte, die aus vorhandenen Fakten neue Fakten erzeugen. Ein Beispiel: <code>Table&lt;table_name&gt; -&gt; MenuEntry&lt;\"$table_name$ ansehen\"&gt;<\/code><\/p>\n<p>Durch diese zwei Konstrukte ist es m\u00f6glich, komplexe Software aus wenigen Zeilen Anforderungen zu konstruieren. Diese Form der Softwareentwicklung nennt man auch &#8220;Feature Oriented Programming&#8221;. Eine Software setzt sich aus Features bzw. Funktionen zusammen, die man jeweils mit einem Einzeiler Logik-Code beschreibt.<\/p>\n<h2>Feature Oriented Programming als Produkt von Launix<\/h2>\n<p><a href=\"https:\/\/launix.de\/launix\/software-entwicklung\/feature-oriented-programming\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/09\/Mit-Innovationin-die-Zukunft.png\" alt=\"mit-innovationin-die-zukunft\" width=\"468\" height=\"60\" class=\"alignnone size-full wp-image-1353\" srcset=\"https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/09\/Mit-Innovationin-die-Zukunft.png 468w, https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/09\/Mit-Innovationin-die-Zukunft-300x38.png 300w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><\/a><br \/>\nUm Datenbanken f\u00fcr (fast) jedes Unternehmen erschwinglich zu machen, haben wir ein Produkt ins Leben gerufen, wo wir f\u00fcr Sie eine beliebige Software zu einem Festpreis anbieten. Das funktioniert deshalb, weil wir die Kosten f\u00fcr die Entwicklung der Features auf mehrere Kunden umlegen k\u00f6nnen. Normale Softwareentwicklung w\u00fcrde ein 10-faches von FOP kosten.<\/p>\n<p><a href=\"https:\/\/launix.de\/launix\/software-entwicklung\/feature-oriented-programming\/\" target=\"_blank\" rel=\"noopener\">Klicken Sie hier, um mehr \u00fcber FOP zu erfahren<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Kurzartikel will ich eine neue Form der Individual-Softwareentwicklung vorstellenn, die den Softwaremarkt revolutionieren soll.<\/p>\n","protected":false},"author":2,"featured_media":1391,"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":[128],"tags":[30,81,61],"class_list":["post-1239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","tag-datenbank","tag-feature-oriented-programming","tag-software","single-item"],"featured_image_urls_v2":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",1280,960,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-150x150.jpg",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-300x225.jpg",300,225,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-768x576.jpg",751,563,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-1024x768.jpg",751,563,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",1280,960,false],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",1280,960,false],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",16,12,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",64,48,false],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",620,465,false]},"post_excerpt_stackable_v2":"<p>In diesem Kurzartikel will ich eine neue Form der Individual-Softwareentwicklung vorstellenn, die den Softwaremarkt revolutionieren soll. Die Krux mit den Individual-Bed\u00fcrfnissen Stellen Sie sich vor, Sie sind Softwareentwickler und bekommen eine Kundenanforderung, die in etwa so lautet: Ich will ein CRM, das Kontakte von Xing importieren kann Nun w\u00fcrden Sie anfangen, das CRM von Grund auf zu programmieren: Eine Programmiersprache ausw\u00e4hlen, ein Framework nach Kriterien aussuchen, programmieren, designen. Alternativ nehmen Sie ein OpenSource-CRM und entwickeln eine Xing-Erweiterung daf\u00fcr. Jetzt kommt der n\u00e4chste Kunde und sagt: Ich will ein CRM, das mir erlaubt, Angebots-PDFs anhand einer Kalkulations-Maske zu erstellen Wieder w\u00fcrden&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/launix.de\/launix\/category\/programming\/\" rel=\"category tag\">Programming<\/a>","author_info_v2":{"name":"Carl-Philip H\u00e4nsch","url":"https:\/\/launix.de\/launix\/author\/carli\/"},"comments_num_v2":"0 comments","uagb_featured_image_src":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",1280,960,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-150x150.jpg",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-300x225.jpg",300,225,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-768x576.jpg",751,563,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280-1024x768.jpg",751,563,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",1280,960,false],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",1280,960,false],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",16,12,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",64,48,false],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2016\/12\/puzzle-654957_1280.jpg",620,465,false]},"uagb_author_info":{"display_name":"Carl-Philip H\u00e4nsch","author_link":"https:\/\/launix.de\/launix\/author\/carli\/"},"uagb_comment_info":0,"uagb_excerpt":"In diesem Kurzartikel will ich eine neue Form der Individual-Softwareentwicklung vorstellenn, die den Softwaremarkt revolutionieren soll.","_links":{"self":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/1239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/comments?post=1239"}],"version-history":[{"count":5,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/1239\/revisions"}],"predecessor-version":[{"id":5367,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/1239\/revisions\/5367"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/media\/1391"}],"wp:attachment":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/media?parent=1239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/categories?post=1239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/tags?post=1239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}