In realtà dipende dal livello di dettagli nei diagrammi delle classi e dal modo in cui vengono utilizzati.
Una distinzione importante che deve essere fatta: una classe UML non è (necessariamente) uguale a una classe di linguaggio di programmazione. Denota i concetti di dominio che possono essere implementati in molti modi diversi (o non del tutto).
Definire questi concetti è un lavoro per gli esperti del dominio. Il formato specifico in cui lo faranno non ha importanza, purché sia sufficientemente chiaro (questa è la parte difficile). Quindi, può essere una descrizione verbale o, come nel tuo caso, un diagramma UML.
Ora il fatto è che questi diagrammi UML prodotti dagli esperti di dominio non sono necessari e il più delle volte non deve essere utilizzato come blueprint per il codice . Sono lì solo per consentire al team di sviluppo di comprendere il dominio aziendale. Quindi, se ritengono che sia necessario, gli sviluppatori (inclusi gli architetti di sistema) creano un modello diverso che prende in considerazione anche la limitazione tecnica che non è nota all'esperto del dominio. Inoltre, il formato di quel modello non è particolarmente importante. Può essere un altro modello UML, ma può anche essere una combinazione di codice e documentazione di progetto.
Esempio:
Considerare un sistema di software bancario. In questo caso l'esperto di dominio è qualcuno che ha esperienza nel settore bancario. Il suo compito è quello di comunicare i requisiti aziendali al team di sviluppo e può scegliere di farlo modellando il flusso di documenti utilizzato dalla banca. Ora, il fatto è che questi documenti (nella forma in cui appaiono stampati e compilati a mano) sono in genere estremamente non normalizzati e contengono lotti di dati ridondanti sparsi su forme diverse. Il modello prodotto dall'esperto del dominio può contenere tutte queste ridondanze, ma il modello implementato dallo sviluppo in genere lo eliminerà dove necessario. Tuttavia, entrambi i modelli hanno avuto il loro utilizzo nel processo di sviluppo.