La più grande difficoltà che sto riscontrando è trovare dove collocare le responsabilità di ciascun oggetto da me identificato nel sistema (ad esempio nello spazio del problema). Sto postando una descrizione molto semplificata di una funzionalità nel sistema di gestione della libreria.
Usecase
- Come amministratore, posso aggiungere libri all'inventario o modificare gli "stati" del libro a qualsiasi valore consentito.
- Come staff, posso cambiare "stati" del libro solo in "Restituito" o "In prestito".
- Come cliente, posso visualizzare tutti i libri con stati "Restituito" o "Prestito".
- Il libro può essere dei seguenti stati "Restituito", "Prelevato", "Rimosso",
- Come amministratore, posso concedere o revocare l'accesso allo staff per aggiungere un libro a qualsiasi membro dello staff
Enti
- Utente
- Repository utenti
- Libro
- Repository libri
- Libreria
- Permission
Associazioni
La Biblioteca detiene il Repository utente e il Repository libri in una relazione uno a uno, il Repository ha le entità corrispondenti in una relazione uno a molti.
Comportamento
-
Repo utente:
- Gets list of all user/ a user of interest respective to problem domain.
- Saves User entity to external system(Database or Cloud)
-
Book Repo:
- Gets list of all Book/ a book of interest respective to use case.
- Saves Book entity to external system(Database or Cloud)
- Add a book
Domanda
- Per gli Usecases 3 e 5, dove aggiungere la logica basata sull'accesso. Nel nostro caso, decidere se l'oggetto utente (Solo amministratore) ha accesso per concedere / revocare l'accesso per aggiungere libri. E l'elenco dei libri da restituire in base al ruolo utente.
NOTA: voglio raggiungere
- coesione tra entità
- unit test ogni modulo con copertura dell'80-90%
- Incase del livello applicazione, come si assicura che i membri del team attuali / nuovi non espongano direttamente gli oggetti del dominio