Azienda 1
Si vuole sviluppare un sistema informativo per la gestione dei dati sul personale di una certa azienda costituita da diversi dipartimenti. Durante la fase di raccolta dei requisiti è stata prodotta la specifica dei requisiti mostrata di seguito. Si chiede di iniziare la fase di Analisi dei requisiti ed in particolare di:
- raffinare la specifica dei requisiti eliminando inconsistenze, omissioni o ridondanze e produrre un elenco numerato di requisiti il meno ambiguo possibile
- produrre un diagramma UML delle classi concettuale che modelli i dati di interesse, utilizzando solo i costrutti di
classe
,associazione
,attributo
Requisiti
I dati di interesse per il sistema sono impiegati, dipartimenti, direttori dei dipartimenti e progetti aziendali.
-
Di ogni impiegato interessa conoscere il nome, il cognome, la data di nascita e lo stipendio attuale, il dipartimento al quale afferisce (esattamente uno, con la rispettiva data di afferenza).
-
Di ogni dipartimento interessa conoscere il nome, il numero di telefono del centralino
- Di ogni dipartimento interessa conoscere inoltre il direttore, che è uno degli impiegati dell’azienda.
-
Il sistema deve permettere di rappresentare i progetti aziendali nei quali sono coinvolti i diversi impiegati.
-
Di ogni progetto interessa il nome ed il budget.
-
Ogni impiegato può partecipare ad un numero qualsiasi di progetti.
UML (opzione 1)
Osservazioni
Questa è l'opzione più "complessa"
- Un dipartimento non deve avere per forza un dirigente assegnato (quindi
0..1
) - Un impiegato può dirigere più dipartimenti (non afferisce al dipartimento che dirige, ci potrebbe essere un dipartimento apposta per i dirigenti, quindi
0..*
) - La classe
Afferenza
ci serve per tenere uno storico dei dipartimenti in cui ha lavorato un impiegato - Usiamo la classe
Partecipazione
per i progetti perché un impiegato può lavorare ad un progetto più volte in periodi diversi di tempo (N.B. è fondamentale avere come attributidata_inizio
edata_fine
, altrimenti l'utilizzo della classe non regge in questo contesto) - Usare il tipo
Stringa
per l'attributotelefono
non va bene, ma la soluzione originale lo includeva e preferisco attenermi a quella
UML (opzione 2)
Osservazioni
Questa è l'opzione più "minimale"
- Un dipartimento non deve avere per forza un dirigente assegnato (quindi
0..1
) - Un impiegato può dirigere al più un dipartimento
- L'impiegato afferisce ad un solo dipartimento, quindi possiamo mettere la
data_di_afferenza
come attributo dell'impiegato - Un dipendente o partecipa ad un determinato progetto o non vi partecipa, la relazione è binaria e non serve una classe
- Usare il tipo
Stringa
per l'attributotelefono
non va bene, ma la soluzione originale lo includeva e preferisco attenermi a quella