Bausteinsicht
dqualizer
White Box Diagram
Source: Architecture Board
dqualizer Komponenten
dqcockpit
Zweck / Zuständigkeit |
Dqcockpit offers a (readonly) dashboard visualizing the results of executed RQAs and a management overview dashboard that displays the current system state based on automatically extracted analysis data which is translated to the domain level. |
---|---|
Wichtige ADRs |
|
Weitere Klarstellungen |
|
Variabilität |
|
Qualitätsattribute |
|
Fehlerverhalten |
- |
Deployment |
|
Offene Fragen |
|
Diagramm:
Source: Architecture Board
dqanalyzer
Zweck / Zuständigkeit |
The dqanalyzer component enables domain experts to specify and perform RQA without profound knowledge of the underlying technical infrastructure and analysis tools, e.g., by annotating elements in domain stories. The dqanalyzer does not necessarily provide the functionality to model a domain story. It starts with a provided domain story and its responsibility is in annotating the domain story with tests. |
---|---|
Wichtige ADRs |
|
Weitere Klarstellungen |
|
Qualitätsattribute |
|
Fehlerverhalten |
- |
Deployment |
- |
Offene Fragen |
- |
Diagramm:
Source: Architecture Board
dqedit
Zweck / Zuständigkeit |
The dqedit component is the editor for the mapping necessary to translate domain questions / RQA definitions to technical RQA configurations. The editor can be used by domain and technical experts during DDD-based workshops, e.g., for event storming or DST, where the domain elements are identified and defined. |
---|---|
Wichtige ADRs |
- |
Weitere Klarstellungen |
- |
Variabilität |
|
Qualitätsattribute |
- |
Fehlerverhalten |
|
Deployment |
Web-App (mit UI & REST, Browserbasiert) |
Offene Fragen |
|
Diagramm:
Source: Architecture Board
dqlang
Zweck / Zuständigkeit |
The dqlang is a collection of languages utilized by dqualizer e.g., the DST extension for domain-level RQA specification or the language for defining mappings in dqedit. |
---|---|
Wichtige ADRs |
|
Weitere Klarstellungen |
- |
Variabilität |
- |
Qualitätsattribute |
|
Fehlerverhalten |
- |
Deployment |
GIT Repository (Release mit GitHub Actions; Schema-Files mit dateibasiertem Versioning) |
Offene Fragen |
- |
Diagramm:
Source: Architecture Board
dqtranslator
Zweck / Zuständigkeit |
Dqtranslator maps (domain) RQA definitions to technical RQA configurations that can be executed by dqexec. It also maps the technical results (metrics) back to the domain level, i.e., domain experts can understand the results. |
---|---|
Wichtige ADRs |
|
Weitere Klarstellungen |
- |
Variabilität |
- |
Qualitätsattribute |
- |
Fehlerverhalten |
- |
Deployment |
- |
Offene Fragen |
|
Diagramm:
Source: Architecture Board
dqexec
Zweck / Zuständigkeit |
The dqexec component executes the RQA configuration by utilizing state-of-the-art monitoring, load testing, and resilience testing tooling. The specification is received in a generic format and then mapped to the input models of the external analysis tooling. Besides delegating the RQA execution, dqexec is also responsible for choosing the most appropriate analysis tool, repeating tests to reach a certain accuracy, and enriching the tests with tool-specific default values. |
---|---|
Wichtige ADRs |
- |
Weitere Klarstellungen |
- |
Variabilität |
- |
Qualitätsattribute |
- |
Fehlerverhalten |
- |
Deployment |
- |
Offene Fragen |
|
Diagramm:
Source: Architecture Board
THIS IS OLD
Notizen von mbe:
Die vollständige Abbildung der fachlichen Module ergibt sich durch die Paketstruktur in der Hexagonal bzw. Clean Architecture. Hier liegt der Fokus auf dem Domänenmodell abgebildet anhand von Aggregates, Entites und Value Objects. |
Aufbauend auf der Context Map aus dem Kapitel Systemkontextsicht, wird im folgenden die Subdomäne Werkstatt beschrieben.
Die vollständige Abbildung der fachlichen Module ergibt sich durch die Paketstruktur in der Hexagonal bzw. Clean Architecture. Hier liegt der Fokus auf dem Domänenmodell abgebildet anhand von Aggregates, Entites und Value Objects. |
Aufbauend auf der Context Map aus dem Kapitel Systemkontextsicht, wird im folgenden die Subdomäne Werkstatt beschrieben.
Whitebox Subdomäne Werkstatt
package "Werkstatt" as werkstatt <<subdomain>> { package "Werkstattplanung" as werkstattplanung <<bounded context>> { } package "Werkstattservice" as werkstattservice <<bounded context>> { } werkstattplanung --> werkstattservice }
- Enthaltene Blackbox Bausteine
Bounded Context | Beschreibung |
---|---|
Werkstattplanung |
Organisation der Werkstattabläufe und Dienstleistungsprozesse der Werkstatt. |
Werkstattservice |
Planung des Dienstleistungsangebots gegenüber Privat- und Firmenkunden. |
Whitebox Bounded Context Werkstattplanung
package "Werkstattplanung" as werkstattplanung <<bounded context>> { package "Werkstattplan" as werkstattplan <<aggregate>> { } package "Werkstattauftrag" as werkstattauftrag <<aggregate>> { } werkstattplan --> werkstattauftrag }
- Enthaltene Blackbox Bausteine
Aggregate | Beschreibung |
---|---|
Werkstattplan |
Planung der Werkstattauslastung unter Berücksichtigung der Verfügbarkeit und Kompetenz |
Werkstattauftrag |
Rechtlich bindende Vereinbarung zur Durchführung von Dienstleistungen (Services) am Fahrzeug |
Wichtige Schnittstellen
Aggregate | Eingehend | Aussgehend |
---|---|---|
Werkstattplan |
Werkstattauftrag planen, Backend for Frontend REST API |
|
Werkstattauftrag |
Originalteil verfügbar, Backend for Frontend REST API |
Werkstattauftrag planen |
Whitebox Bounded Context Werkstattservice
package "Werkstattservice" as werkstattservice <<bounded context>> { package "Werkstattservice"" as werkstattserviceAggregate <<aggregate>> { } package "WerkstattserviceGruppe" as werkstattserviceGruppe <<aggregate>> { } werkstattserviceAggregate --> werkstattserviceGruppe }
- Enthaltene Blackbox Bausteine
Aggregate | Beschreibung |
---|---|
Werkstattservice |
Ein Werkstattservice beschreibt eine Dienstleistung am Fahrzeug. Dies beinhaltet Arbeitszeit, Originalteile und sonstigen Materialverbrauch. |
WerkstattserviceGruppe |
Ein WerkstattserviceGruppe gruppiert Werkstattservices gleicher Art und beschreibt für die Gruppe den Kostensatz für ein Arbeitswert. Gruppen sind Karroserie, Mechanik und Elektronik. |
- Wichtige Schnittstellen
-
Bisher keine
Whitebox Aggregate Werkstattplan
package "Werkstattplan" as wplan <<aggregate>> { class WerkstattplanService <<service>> class WerkstattplanRepository <<repository>> package "domain.model" as model { class "Werkstattplan" as theAggregateRoot <<aggregate root>> class "Werkstattplanstatus" as status <<value object>>> class "Tagesplan" as tagesplan <<entity>> class "Tagesplanstatus" as tagesplanstatus <<value object>> class "Werkstatttermin" as termin <<entity>> class "Start" as start <<value object>> class "Ende" as ende <<value object>> class "Bearbeiter" as bearbeiter <<value object>> class "WerkstattauftragRef" as werkstattauftragRef <<value object>> theAggregateRoot --> status theAggregateRoot --> tagesplan tagesplan --> tagesplanstatus tagesplan --> termin termin --> start termin --> ende termin --> bearbeiter termin --> werkstattauftragRef } WerkstattplanService --> theAggregateRoot WerkstattplanService --> WerkstattplanRepository }
Whitebox Aggregate Werkstattauftrag
package "Werkstattauftrag" as werkstattauftragModul <<aggregate>> { class WerkstattauftragService class WerkstattauftragRepository package "domain.model" as domainModel { class Werkstattauftrag <<aggregate root>> class Fahrzeugkennzeichen <<value object>> class Bearbeiter <<value object>> class Werkstattauftragstatus <<value object>> class Auftragsposition <<entity>> class Werkstattservice <<entity>> class Material <<value object>> class MaterialRef <<value object>> Werkstattauftrag --> Fahrzeugkennzeichen Werkstattauftrag --> Bearbeiter Werkstattauftrag --> Werkstattauftragstatus Werkstattauftrag --> Auftragsposition Auftragsposition --> Werkstattservice Werkstattservice --> Material Material --> MaterialRef } WerkstattauftragService --> WerkstattauftragRepository WerkstattauftragService --> Werkstattauftrag }
Whitebox Aggregate Werkstattservice
package "Werkstattservice" as werkstattserviceModul <<aggregate>> { class WerkstattserviceService <<service>> class WerkstattserviceRepository <<repository>> package "domain.model" as domainModel { class Werkstattservice <<aggregate root>> class Bezeichnung <<value object>> class WerkstattserviceKennung <<value object>> class WerkstattserviceGruppeRef <<value object>> class Material <<value object>> class Materialpreis <<value object>> class Menge <<value object>> class Arbeitswert <<value object>> class MaterialRef <<value object>> Werkstattservice --> Bezeichnung Werkstattservice --> WerkstattserviceKennung Werkstattservice --> WerkstattserviceGruppeRef Werkstattservice -->"*" Material Werkstattservice --> Arbeitswert Material --> Menge Material --> Materialpreis Material --> MaterialRef } WerkstattserviceService --> WerkstattserviceRepository WerkstattserviceService --> Werkstattservice }
Whitebox Aggregate WerkstattserviceGruppe
package "WerkstattserviceGruppe" as werkstattserviceGruppe <<aggregate>> { class WerkstattserviceGruppeService <<service>> class WerkstattserviceGruppeRepository <<repository>> package "domain.model" as domainModel { class WerkstattserviceGruppe <<aggregate root>> class WerkstattserviceGruppeBezeichung <<value object>> class ArbeitswertKostensatz <<entity>> class Kostensatz <<value object>> class Waehrung <<value object>> WerkstattserviceGruppe --> WerkstattserviceGruppeBezeichung WerkstattserviceGruppe --> ArbeitswertKostensatz ArbeitswertKostensatz --> Kostensatz ArbeitswertKostensatz --> Waehrung } WerkstattserviceGruppeService --> WerkstattserviceGruppe WerkstattserviceGruppeService --> WerkstattserviceGruppeRepository }