{"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>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>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"],"featured_image_urls_v2":{"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]},"post_excerpt_stackable_v2":"<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: Code generated from specification Doch was genau IST Code? 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 Software ist am Ende ein Programm, also eine Liste von Anweisungen, die abgearbeitet werden m\u00fcssen. 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. Entwickler.&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/launix.de\/launix\/en\/category\/launix\/\" rel=\"category tag\">Launix<\/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\/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}]}}