


{"id":1130,"date":"2017-07-27T19:35:21","date_gmt":"2017-07-27T17:35:21","guid":{"rendered":"http:\/\/lwibs01.gm.fh-koeln.de\/blogs\/bente\/?p=1130"},"modified":"2017-07-27T19:36:32","modified_gmt":"2017-07-27T17:36:32","slug":"ma-entwicklung-eines-javaee-basierten-frameworks-zum-einsatz-eines-rich-domain-konzeptes-durch-praxisbeispiele","status":"publish","type":"post","link":"http:\/\/blogs.gm.fh-koeln.de\/bente\/2017\/07\/27\/ma-entwicklung-eines-javaee-basierten-frameworks-zum-einsatz-eines-rich-domain-konzeptes-durch-praxisbeispiele\/","title":{"rendered":"MA: Entwicklung eines JavaEE basierten Frameworks zum Einsatz eines Rich Domain Konzeptes durch Praxisbeispiele"},"content":{"rendered":"<h4>Problemstellung<\/h4>\n<p class=\"lead\">In der Entwicklung von gr\u00f6\u00dferen objektorientieren Softwareprodukten entstehen zumeist eine Vielzahl von Utility- und Helperklassen sowie Methoden in weiteren Klassen verschiedener Schichten, die bestimmte Aspekte der Fachlichkeit wie zum Beispiel Validierung oder Konvertierungen behandeln und in unterschiedlichsten Paketen zu finden sind. Dies f\u00fchrt zu doppeltem Code, da die Codest\u00fccke anderen Entwicklern nicht bekannt sind und schwierig gefunden werden. Vor allem sp\u00e4tere \u00c4nderungen der Fachlichkeit f\u00fchren zu Mehraufwand, da diese an mehrere Stellen verteilt ist und erstmal gefunden werden muss. Manchmal fallen diese Probleme erst in sp\u00e4ten Testphasen oder gar im Produktionsbetrieb auf, das zu weiteren Problemen f\u00fchrt. Zudem sind auch die APIs und Konstruktoren durch eine Aneinanderreihung von nativen Datentypen fehleranf\u00e4llig, schlecht les- und wartbar. Dem Code fehlt eine Robustheit, die sich vor allem bemerkbar macht, sobald Entwickler die Projekte verlassen oder neu hinzukommen, die sich im spezifischen Projekt nicht auskennen.<\/p>\n<h4>Abgeleitete Forschungsfrage<\/h4>\n<ul>\n<li>Wie kann die vorhandene Fachlichkeit im Code so positioniert werden, dass ein sprechendes Domain Model entsteht und von Entwicklern schneller gefunden und besser verstanden wird?<\/li>\n<li>Warum lohnt es sich, auch native Attribute in Entit\u00e4ten als vollwertige fachliche Klassen auszumodellieren?<\/li>\n<li>Welche Probleme treten bei der Umsetzung in JavaEE-Frameworks auf? Wie k\u00f6nnen diese gel\u00f6st werden?<\/li>\n<\/ul>\n<h4>Vorgehen<\/h4>\n<p>Zuerst werden an Hand einer Literaturrecherche die wichtigsten Aspekte des DomainDrivenDesigns mit Prinzipien der Softwareentwicklung (Objektorientierung, Clean Code, Design Patterns, Refactoring) in Verbindung gebracht. Dabei wird besonderen Wert auf Fachlichkeit an der richtigen Stelle, lesbaren Code und Auffindbarkeit gelegt.<br \/>\nAnschlie\u00dfend werden diese Eigenschaften als Anforderungen an ein auf JavaEE-basierendes Framework gestellt. Dabei steht besonders JPA und EJB als Backend, sowie JSF als Frontend im Fokus. Dabei werden auch Negativbeispiele herk\u00f6mmlicher Programmierung aufgezeigt. Insgesamt wird ein Framework f\u00fcr Rich Domain Models entworfen, welches f\u00fcr eine erhebliche Reduzierung von Utility-Klassen und eine bessere Auffindbarkeit der Fachlichkeit sorgt.<br \/>\nDanach wird das Framework mittels Praxisbeispiele entwickelt und deren Funktionalit\u00e4ten gezeigt. Abschlie\u00dfend findet noch eine Handlungs- und Einsatzempfehlung des entstandenen Frameworks im Vergleich zur herk\u00f6mmlichen Programmierung statt.<\/p>\n<h4>Bearbeiter<\/h4>\n<p>Daniel Jan\u00dfen<\/p>\n<h4>Abgabe<\/h4>\n<p>Ende 2017<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problemstellung In der Entwicklung von gr\u00f6\u00dferen objektorientieren Softwareprodukten entstehen zumeist eine Vielzahl von Utility- und Helperklassen sowie Methoden in weiteren Klassen verschiedener Schichten, die bestimmte Aspekte der Fachlichkeit wie zum Beispiel Validierung oder Konvertierungen behandeln und in unterschiedlichsten Paketen zu finden sind. Dies f\u00fchrt zu doppeltem Code, da die Codest\u00fccke anderen Entwicklern nicht bekannt sind&#8230;  <a href=\"http:\/\/blogs.gm.fh-koeln.de\/bente\/2017\/07\/27\/ma-entwicklung-eines-javaee-basierten-frameworks-zum-einsatz-eines-rich-domain-konzeptes-durch-praxisbeispiele\/\" class=\"more-link\" title=\"Read MA: Entwicklung eines JavaEE basierten Frameworks zum Einsatz eines Rich Domain Konzeptes durch Praxisbeispiele\"><?php _e(\"Read more &raquo;\",\"wpbootstrap\"); ?><\/a><\/p>\n","protected":false},"author":39,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[20665],"tags":[9885,9897,27556],"class_list":["post-1130","post","type-post","status-publish","format-standard","hentry","category-laufende-arbeiten","tag-architektur","tag-domain-driven-design","tag-rich-domain-model"],"acf":[],"_links":{"self":[{"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/posts\/1130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/comments?post=1130"}],"version-history":[{"count":1,"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/posts\/1130\/revisions"}],"predecessor-version":[{"id":1131,"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/posts\/1130\/revisions\/1131"}],"wp:attachment":[{"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/media?parent=1130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/categories?post=1130"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blogs.gm.fh-koeln.de\/bente\/wp-json\/wp\/v2\/tags?post=1130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}