Veröffentlicht: von

Problemstellung

In der Entwicklung von größeren 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ührt zu doppeltem Code, da die Codestücke anderen Entwicklern nicht bekannt sind und schwierig gefunden werden. Vor allem spätere Änderungen der Fachlichkeit führen zu Mehraufwand, da diese an mehrere Stellen verteilt ist und erstmal gefunden werden muss. Manchmal fallen diese Probleme erst in späten Testphasen oder gar im Produktionsbetrieb auf, das zu weiteren Problemen führt. Zudem sind auch die APIs und Konstruktoren durch eine Aneinanderreihung von nativen Datentypen fehleranfällig, 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.

Abgeleitete Forschungsfrage

  • 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?
  • Warum lohnt es sich, auch native Attribute in Entitäten als vollwertige fachliche Klassen auszumodellieren?
  • Welche Probleme treten bei der Umsetzung in JavaEE-Frameworks auf? Wie können diese gelöst werden?

Vorgehen

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.
Anschließend 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ömmlicher Programmierung aufgezeigt. Insgesamt wird ein Framework für Rich Domain Models entworfen, welches für eine erhebliche Reduzierung von Utility-Klassen und eine bessere Auffindbarkeit der Fachlichkeit sorgt.
Danach wird das Framework mittels Praxisbeispiele entwickelt und deren Funktionalitäten gezeigt. Abschließend findet noch eine Handlungs- und Einsatzempfehlung des entstandenen Frameworks im Vergleich zur herkömmlichen Programmierung statt.

Bearbeiter

Daniel Janßen

Abgabe

Ende 2017