{"id":2738,"date":"2019-02-05T10:47:52","date_gmt":"2019-02-05T09:47:52","guid":{"rendered":"https:\/\/launix.de\/launix\/?p=2738"},"modified":"2023-07-11T12:14:29","modified_gmt":"2023-07-11T10:14:29","slug":"ist-feature-oriented-programming-magie","status":"publish","type":"post","link":"https:\/\/launix.de\/launix\/en\/ist-feature-oriented-programming-magie\/","title":{"rendered":"Ist Feature Oriented Programming Magie?"},"content":{"rendered":"<div><p>Erz\u00e4hle ich Entwicklern von Feature Oriented Programming und werde ungl\u00e4ubig angeschaut: &#8220;Das geht doch gar nicht&#8221;. Um das zu verdeutlichen, dieser Comic:<\/p>\n<figure style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.commitstrip.com\/en\/2016\/08\/25\/a-very-comprehensive-and-precise-spec\/\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"size-thumbnail\" src=\"http:\/\/www.commitstrip.com\/wp-content\/uploads\/2016\/08\/Strip-Les-specs-cest-du-code-650-finalenglish.jpg\" width=\"650\" height=\"613\"><\/a><figcaption class=\"wp-caption-text\">Code generated from specification<\/figcaption><\/figure>\n<p><!--more--><\/p>\n<p>Doch was genau IST Code?<\/p>\n<p>In modernen Programmiersprachen basiert der Quellcode immer noch auf den alten Prinzipien der ALGOL-Programmiersprache: Variablen, die man setzen kann, Kontrollstrukturen wie IF und WHILE, Prozeduren, die man aufrufen kann. Eine <strong>Software<\/strong> ist am Ende ein <strong>Programm<\/strong>, also eine Liste von Anweisungen, die abgearbeitet werden m\u00fcssen.<\/p>\n<p>Doch wer ist so erbsenz\u00e4hlerisch und kleinkariert, dass er ein komplexes Software-System, zum Beispiel ein ERP, alles in hintereinander abgearbeiteten Code-Zeilen niederschreibt? Richtig. <strong>Entwickler<\/strong>.<\/p>\n<p>Doch bevor es dazu kommt, arbeitet meist ein Informatiker an einer <strong>Planung<\/strong>: Mit Stift und Papier zeichnet er den groben Aufbau der Software-Struktur, damit der Entwickler einen Leitfaden f\u00fcr die Implementierung hat. Diese Methode nennt sich <strong>Modellierung<\/strong> und \u00e4hnelt der Modellierung aus Styropor, die ein Architekt betreibt, bevor er Maurern die Anweisungen gibt, Stein auf Stein zu setzen.<\/p>\n<p>Und da genau setzt <a href=\"https:\/\/launix.de\/launix\/en\/software-entwicklung\/feature-oriented-programming\/\">FOP<\/a> an: Anstatt die Modellierung getrennt von der Entwicklung zu betrachten, ist bei FOP die Modellierung gleichzeitig die <strong>Grob-Spezifikation<\/strong>. Entwickler m\u00fcssen nun nur noch die Feinheiten hinzuf\u00fcgen. Das komplette &#8220;Einhacken&#8221; des Gesamt-Codes entf\u00e4llt aber.<\/p>\n<p>Das hat f\u00fcr den Kunden mehrere Vorteile:<\/p>\n<ul>\n<li>Software kann aus Modulen und Features zusammengesetzt werden<\/li>\n<li>Teile der Software, aus fertigen Modulen haben bereits alle Funktionen und Features<\/li>\n<li>Software ist wesentlich schneller fertig<\/li>\n<li>Durch die Verwendung von &#8220;weniger&#8221; Code entstehen auch weniger Fehler<\/li>\n<li>Trotzdem sind noch komplette Neuprogrammierungen m\u00f6glich<\/li>\n<\/ul><\/div>\n\n\n<h2 class=\"wp-block-heading\">Was bringt das konkret?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Haben Sie Gro\u00dfprojekte wie ERP-, CRM-, DMS- oder andere All-In-One-Systeme, sind Sie gut beraten, diese nicht Codezeile f\u00fcr Codezeile, sondern mit FOP zu implementieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr weitere Fragen stehen wir Ihnen gerne zur Verf\u00fcgung.<\/p>","protected":false},"excerpt":{"rendered":"<p>Erz\u00e4hle ich Entwicklern von Feature Oriented Programming und werde ungl\u00e4ubig angeschaut: &#8220;Das geht doch gar nicht&#8221;. Um das zu verdeutlichen, dieser Comic:<\/p>","protected":false},"author":2,"featured_media":2829,"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],"tags":[81],"class_list":["post-2738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-launix","tag-feature-oriented-programming","single-item"],"uagb_featured_image_src":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920.jpg",1920,1280,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920-150x150.jpg",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920-300x200.jpg",300,200,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920-768x512.jpg",751,501,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920-1024x683.jpg",751,501,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920.jpg",1536,1024,false],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920.jpg",1920,1280,false],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920.jpg",18,12,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920.jpg",64,43,false],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2019\/02\/nature-3151869_1920.jpg",620,413,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":"Erz\u00e4hle ich Entwicklern von Feature Oriented Programming und werde ungl\u00e4ubig angeschaut: &#8220;Das geht doch gar nicht&#8221;. Um das zu verdeutlichen, dieser Comic:","_links":{"self":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/2738","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=2738"}],"version-history":[{"count":9,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/2738\/revisions"}],"predecessor-version":[{"id":4431,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/2738\/revisions\/4431"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/media\/2829"}],"wp:attachment":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/media?parent=2738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/categories?post=2738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/tags?post=2738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}