Modellazione del dominio - Offerte vs Usi

3

Ho una domanda su un problema che mi sembra sempre di incontrare durante la creazione di un modello di dominio. Il problema sorge ogni volta che un oggetto dominio viene utilizzato in quello che sto chiamando uno scenario di "offerta" e in uno scenario di "utilizzo". Ad esempio, prendiamo una piccola scuola.

Questa scuola offre programmi di studio. Ogni programma richiede che uno studente si iscriva e completi un certo numero di lezioni di un certo tipo. In altre parole, un programma può richiedere 2 classi di tipo "educazione generale" e un tipo "matematica". Ecco il modello di dominio per questo:

Questoètuttobenefinora.Ora,consideriamolostudentechesiiscriveaquestoprogramma.Lostudentehalapossibilitàdisceglieretra2classidi"educazione generale" e una classe di "matematica". Una volta selezionate queste classi, devono essere associate al programma in cui è iscritto lo studente. Ecco un modello di dominio per questo:

Entrambiquestimodellididominiosembranosoddisfacenti.Tuttavia,quandoliaggiungiinsiemeottieniqualcosachenonèaffattochiaro.Ottieniquantosegue:

Questo è fonte di confusione perché non puoi dire quali relazioni si applicano a quale scenario ("offerta" o "utilizzo", in altre parole, i programmi offerti e quelli in cui uno studente si è iscritto). Sembrano programmi che le offerte scolastiche potrebbero già avere classi selezionate. In alternativa potresti pensare che anche dopo che uno studente è iscritto in una classe ci sono ancora delle opzioni di classe.

C'è un modo generale per affrontare questo problema? Trovo che si presenti nella maggior parte delle aziende e quindi nei progetti software. Ci sono "schemi" di modellazione del dominio per cose come questa?

Grazie per l'aiuto che può essere fornito.

    
posta wmatic 24.02.2015 - 21:37
fonte

2 risposte

2

In realtà, hai scoperto che Fowler probabilmente chiamerebbe un Contesto limitato - l'idea di dividere un modello di dominio in due diversi sotto-modelli, uno per le "opzioni di classe" e uno per le scelte degli studenti.

Basta prendere il terzo modello come progetto per lo schema del database e mantenere gli altri due modelli come parte della specifica. Oppure prova a disegnare alcuni recinti attorno ai tuoi oggetti in questo modo:

    
risposta data 24.02.2015 - 22:45
fonte
2

Oltre a ciò che Doc Brown ha menzionato riguardo ai contesti limitati, potresti voler considerare che stai scontando due diversi eventi riguardanti lo studente. Si iscrivono a un programma, ma la selezione di una classe non scorre attraverso il programma stesso. Cioè, hai un Programma di Registrazione per uno Studente e c'è un concetto separato di ClassEnrollment per lo Studente. Il Programma definisce una serie di corsi o categorie di corsi obbligatori tra cui lo studente può scegliere, ma l'iscrizione è separata dal programma stesso.

    
risposta data 24.02.2015 - 23:41
fonte

Leggi altre domande sui tag