{"id":1237,"date":"2016-10-14T06:16:30","date_gmt":"2016-10-14T04:16:30","guid":{"rendered":"https:\/\/launix.de\/launix\/?p=1237"},"modified":"2023-07-11T12:24:01","modified_gmt":"2023-07-11T10:24:01","slug":"feature-oriented-programming2","status":"publish","type":"post","link":"https:\/\/launix.de\/launix\/feature-oriented-programming2\/","title":{"rendered":"Feature Oriented Programming"},"content":{"rendered":"<p>Einige CRMs und ERPs sind bereits in Module aufgeteilt. Ein Modulsystem ist eine tolle Idee, aber die Umsetzung ist meist ung\u00fcnstig.<\/p>\n<p><!--more--><\/p>\n<h2>Module sind zu grob &#8211; friss oder stirb<\/h2>\n<p>Ein absolutes Negativ-Beispiel in diesme Bereich ist das Tine2.0-CRM. Es ist zwar in Module unterteilt, will man aber das CRM-Modul aktivieren, m\u00fcssen alle anderen Module aktiviert sein. Darunter auch die Warenwirtschaft, die wir ja gar nicht brauchen.<\/p>\n<h2>Aspektorientierte Programmierung, Featureorientierte Programmierung<\/h2>\n<p>Ans\u00e4tze aus der Wissenschaft gibt es schon: Sogenannte Code Weaver &#8220;weben&#8221; quasi Code anhand von Regeln zusammen. Das Programm ist in Aspekte bzw. Features unterteilt, die man bei der Konfiguration einfach aktivieren oder deaktivieren kann. So ist es m\u00f6gkich, dem einen Kunden das CRM mit <a href=\"https:\/\/launix.de\/epm\/dinbrief\" target=\"_blank\" rel=\"noopener\">PDF-Angebotserstellung<\/a> auszuliefern, dem anderen ohne.<\/p>\n<h2>Beschreibungslogik als Basis f\u00fcr Feature Oriented Programming<\/h2>\n<p>Wir bei Launix haben einen Codegenerator entwickelt, der auf Basis logischer Formeln arbeitet. Dieser erm\u00f6glicht es uns, individuell programmierte Projekte zum Bruchteil des Preises anzubieten. Besonders wiederkehrende Elemente wie die Kundenliste in der Unternehmens-Software sind bisher ein extremer Arbeitsaufwand gewesen, da jeder Kunde andere Feinheiten implementiert haben will.<\/p>\n<p>Durch ein deskriptives System ist es m\u00f6glich, eine Software anhand von &#8220;Fakten&#8221; zu beschreiben. Fakten k\u00f6nnen beispielsweise sein, dass ein Hauptmen\u00fc auf der linken Seite stehen soll. Ein anderer Fakt w\u00e4re, dass jeder Kunde eine Anschrift besitzt. Ein System von Implikationsregeln sorgt anschlie\u00dfend daf\u00fcr, dass sich das Programm selbst programmiert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einige CRMs und ERPs sind bereits in Module aufgeteilt. Ein Modulsystem ist eine tolle Idee, aber die Umsetzung ist meist ung\u00fcnstig.<\/p>\n","protected":false},"author":2,"featured_media":0,"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-1237","post","type-post","status-publish","format-standard","hentry","category-launix","tag-feature-oriented-programming","single-item"],"featured_image_urls_v2":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":"","trp-custom-language-flag":"","xs-thumb":"","appku-shop-single":""},"post_excerpt_stackable_v2":"<p>Einige CRMs und ERPs sind bereits in Module aufgeteilt. Ein Modulsystem ist eine tolle Idee, aber die Umsetzung ist meist ung\u00fcnstig. Module sind zu grob &#8211; friss oder stirb Ein absolutes Negativ-Beispiel in diesme Bereich ist das Tine2.0-CRM. Es ist zwar in Module unterteilt, will man aber das CRM-Modul aktivieren, m\u00fcssen alle anderen Module aktiviert sein. Darunter auch die Warenwirtschaft, die wir ja gar nicht brauchen. Aspektorientierte Programmierung, Featureorientierte Programmierung Ans\u00e4tze aus der Wissenschaft gibt es schon: Sogenannte Code Weaver &#8220;weben&#8221; quasi Code anhand von Regeln zusammen. Das Programm ist in Aspekte bzw. Features unterteilt, die man bei der Konfiguration&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/launix.de\/launix\/category\/launix\/\" rel=\"category tag\">Launix<\/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":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false,"xs-thumb":false,"appku-shop-single":false},"uagb_author_info":{"display_name":"Carl-Philip H\u00e4nsch","author_link":"https:\/\/launix.de\/launix\/author\/carli\/"},"uagb_comment_info":0,"uagb_excerpt":"Einige CRMs und ERPs sind bereits in Module aufgeteilt. Ein Modulsystem ist eine tolle Idee, aber die Umsetzung ist meist ung\u00fcnstig.","_links":{"self":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/1237","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=1237"}],"version-history":[{"count":5,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/1237\/revisions"}],"predecessor-version":[{"id":5373,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/posts\/1237\/revisions\/5373"}],"wp:attachment":[{"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/media?parent=1237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/categories?post=1237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/launix.de\/launix\/wp-json\/wp\/v2\/tags?post=1237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}