{"id":1497,"date":"2017-03-15T12:58:48","date_gmt":"2017-03-15T11:58:48","guid":{"rendered":"https:\/\/launix.de\/launix\/?p=1497"},"modified":"2016-12-30T13:32:07","modified_gmt":"2016-12-30T12:32:07","slug":"warum-abhaengigkeiten-eine-sackgasse-sind","status":"publish","type":"post","link":"https:\/\/launix.de\/launix\/en\/warum-abhaengigkeiten-eine-sackgasse-sind\/","title":{"rendered":"Warum Abh\u00e4ngigkeiten eine Sackgasse sind"},"content":{"rendered":"<p>Wer kennt das nicht &#8211; man will etwas installieren (z.B. ein Software-Paket unter <a href=\"https:\/\/www.ubuntu.com\/\" target=\"_blank\">Ubuntu<\/a>) und es werden hunderte Abh\u00e4ngigkeiten hineingezogen.<!--more--><\/p>\n<p>Als DLL Hell bezeichnet verfolgt uns das Problem noch heute: Aufgebl\u00e4hte JAR-Dateien bei Java, hunderte MB Download f\u00fcr Android-Apps oder das CRM Tine 2.0, bei dem man zwar ein Modul-System hat, aber aufgrund der Abh\u00e4ngigkeiten alle Module aktivieren musste. Damit war das Modul-System von Vornherein sinnlos.<\/p>\n<h2>Weiche Abh\u00e4ngigkeiten als Ausweg<\/h2>\n<p>Sinnvoller sind da Systeme, die flexibel auf die vorhandenen Module reagieren k\u00f6nnen. Ein Beispiel ist dabei unsere FOP-Produktreihe:<\/p>\n<ul>\n<li>Basis f\u00fcr unser CRM ist NUR die Kunden-Liste: Kunde mit seinen Eigenschaften Anschrift, Telefonnummern usw, sowie die Wiedervorlage-Funktion<\/li>\n<li>Aktiviert man das <a href=\"https:\/\/launix.de\/launix\/en\/crm-mit-telefon-anbindung\/\" target=\"_blank\">Telefonanlagen<\/a>-Modul, lassen sich alle Telefonnummern anklicken. Man kann aber auch ohne das Modul Telefonnummern verwenden.<\/li>\n<li>Aktiviert man Rechnungen, sind diese mit Kunden verkn\u00fcpft und beim Kunden werden alle Rechnungen aufgelistet. Sind Rechnungen nicht aktiviert, kann man das Feature &#8220;Kunden&#8221; aber trotzdem nutzen.<\/li>\n<\/ul>\n<p>Auf diese Weise werden Features viel weicher in die Software ein- und ausgeblendet. Pakete sind nicht mehr zwingend, sondern werden aktiviert, wenn man sie ben\u00f6tigt. Dadurch nehmen sie die Rolle von Features ein, die, wenn vorhanden, genutzt werden und andernfalls die Software trotzdem funktioniert.<\/p>\n<p>Ganz praktisch ist bei uns daraus die Produktgruppe FOP entstanden &#8211; Feature Oriented Programming. Wir k\u00f6nnen sehr fein Software aus Einzel-Features zusammenstellen. Zus\u00e4tzlich k\u00f6nnen wir Regeln festlegen, dass wenn zwei Features gleichzeitig aktiviert sind, ein drittes Feature aktiviert werden kann, das die ersten beiden Features verkn\u00fcpft.<\/p>\n<p>Ein Beispiel: Aktiviert man im CRM sowohl die Kunden-Liste als auch die E-Mail-Funktion, k\u00f6nnen zuk\u00fcnftig im E-Mail-Programm die Absender angeklickt werden und man sieht den dazugeh\u00f6rigen Kunden-Datensatz. Anders herum kann man auch aus dem Kunden-Datensatz heraus anfangen, eine E-Mail zu schreiben.<\/p>","protected":false},"excerpt":{"rendered":"<p>Wer kennt das nicht &#8211; man will etwas installieren (z.B. ein Software-Paket unter Ubuntu) und es werden hunderte Abh\u00e4ngigkeiten hineingezogen.<\/p>","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":[1],"tags":[72],"class_list":["post-1497","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-programmieren","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>Wer kennt das nicht &#8211; man will etwas installieren (z.B. ein Software-Paket unter Ubuntu) und es werden hunderte Abh\u00e4ngigkeiten hineingezogen. Als DLL Hell bezeichnet verfolgt uns das Problem noch heute: Aufgebl\u00e4hte JAR-Dateien bei Java, hunderte MB Download f\u00fcr Android-Apps oder das CRM Tine 2.0, bei dem man zwar ein Modul-System hat, aber aufgrund der Abh\u00e4ngigkeiten alle Module aktivieren musste. Damit war das Modul-System von Vornherein sinnlos. Weiche Abh\u00e4ngigkeiten als Ausweg Sinnvoller sind da Systeme, die flexibel auf die vorhandenen Module reagieren k\u00f6nnen. Ein Beispiel ist dabei unsere FOP-Produktreihe: Basis f\u00fcr unser CRM ist NUR die Kunden-Liste: Kunde mit seinen Eigenschaften&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/launix.de\/launix\/en\/category\/allgemein\/\" rel=\"category tag\">Allgemein<\/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":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\/en\/author\/carli\/"},"uagb_comment_info":0,"uagb_excerpt":"Wer kennt das nicht &#8211; man will etwas installieren (z.B. ein Software-Paket unter Ubuntu) und es werden hunderte Abh\u00e4ngigkeiten hineingezogen.","_links":{"self":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/1497","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=1497"}],"version-history":[{"count":4,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/1497\/revisions"}],"predecessor-version":[{"id":1587,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/1497\/revisions\/1587"}],"wp:attachment":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/media?parent=1497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/categories?post=1497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/tags?post=1497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}