UserManagement bildet die Basis für die Authentifizierung und für die Autorisierung, Module, die austauschbar sein sollen, ohne das gesamte Prinzip der Benutzervewaltung austauschen zu müssen1). Hier werden Benutzerkonten eingeführt2), und Systemkonten3). Auch die Lizenzierung wird hierüber verwaltet, wobei das noch in ein separates Modul ausgelagert werden könnte.
UserAccount
SystemAccount
LicenceGroup
UserAccount und SystemAccount leiten sich nicht von einer gemeinsamen Basisklasse ab. Der Grund ist der, dass UserAccount eine Rolle von Person ist, und von AggregatePartRoot<Person> abgeleitet ist, SystemAccount direkt von Aggregate. Zudem verwendet UserAccount dadurch die Id von Person, SystemAccount hat eine eigene Id. Es hat auch keinen wirklichen Vorteil, beide von derselben Basisklasse abzuleiten. Wenn man möchte, kann man beide eine gemeinsame Schnittstelle implementieren lassen, dafür sehe ich aber aktuell keine Notwendigkeit.