Softwareentwicklung

Domain Driven Design – damit dein Code Klartext spricht

: Die JCON 2020 findet online statt. Mit dabei ist Daniel Ludwig mit dem Thema Domain Driven Design.

JCON Domain Driven Design

Art und Ausprägung einer IT-Anwendung hängen stark von ihrem jeweiligen Verwendungszweck ab. Je komplexer der ist, desto komplexer ist auch die Software, die dafür entwickelt werden muss – vom Minimal Viable Product mit nur einigen wenigen Features bis hin zu vielschichtigen und geschäftskritischen IT-Landschaften mit einer Vielzahl an Funktionen, die hunderte, wenn nicht tausende Seiten Spezifikation füllen können, variiert die Komplexität enorm. Proportional zur Komplexität einer Spezifikation steigt auch das potenzielle Fehlerrisiko bei der Übertragung in Softwarecode.

Denn letztlich ist Softwareentwicklung ein Transformationsprozess von einer regulären Schriftsprache in eine digitale Programmiersprache, bei dem durchaus Übersetzungsfehler auftreten können – mit teilweise bösen Folgen für die spätere Wartbarkeit und Weiterentwicklung der Software. Diese typischen Fehlerquellen und Schwierigkeiten sind den meisten Programmierern bekannt:


  • eine nicht eindeutige Sprache bei der Bezeichnung von Klassen, Methoden und Variablen, welche die abzubildenden Dinge aus der realen Welt nur unzureichend oder gar nicht beschreiben und so das Codeverständnis insgesamt erschweren,
  • fachliche Funktionen, die über viele verschiedene Programmbestandteile ohne erkennbaren Zusammenhang verteilt sind,
  • und die daraus resultierende Orientierungslosigkeit, wo denn im Code eine bestimmte Anforderung zu finden ist.

Doch es besteht Hoffnung: Domain Driven Design!

Domain Driven Design hilft nicht nur, fachliche Missverständnisse in der Kommunikation zwischen den beteiligten Stakeholdern zu vermeiden, sondern stellt insbesondere in der Spezifikation Klarheit und Eindeutigkeit über die fachlichen und technischen Parametern her – und schafft damit die Voraussetzung für eine hohe Codequalität: DDD from scratch In meinem Vortrag teile ich zunächst Erfahrungen, die wir in einem neuen Projekt im Umfang von mehreren tausend Leistungstagen machen konnten, und gebe bei der Gelegenheit Einblick in die aus meiner Sicht wichtigsten Vorteile von DDD:

  • eine allumfassende Sprache, die sowohl im Gespräch mit dem Kunden als auch in der Software selbst Anwendung findet,
  • die sortenreine Trennung von fachlicher und technischer Schicht
  • Domänenklassen mit rein fachlichen Daten, ohne technischen Ballast
  • eindeutige Strukturen für Funktionen wie Serviceklassen, Repositories etc.

 




 

Daniel Ludwig