Usa diagramma del caso (UML): la memoria del database dovrebbe essere un caso di uso secondario (in questo diagramma)?

5

Sfondo applicazione

Una breve descrizione di ciò che l'applicazione dovrebbe fare
Sto sviluppando un'applicazione che analizza sequenze di DNA. L'utente carica un determinato file contenente una sequenza di DNA. Quindi l'utente può fare clic su un pulsante per cercare gli ORF (parti della sequenza DNA con caratteristiche specifiche). Questi ORF possono quindi essere BLASTed (cercare annotazioni su queste sequenze in un database pubblico). Un requisito importante era che la sequenza di DNA (caricata dall'utente), gli ORF (trovati dall'applicazione) e il risultato di BLAST saranno salvati in un database .

Processo

Descriverò prima cosa ho fatto e perché ho cambiato alcune cose per chiarire perché il diagramma è come è ora. Sono solo nuovo nell'usare UML e ogni commento è benvenuto .
Usa diagramma dei casi versione 1.0

Ho dubitato di "dire" che il databse è un attore, basato su questa domanda Ho deciso che il databse è solo per l'archiviazione e l'ho omesso. risultando nella versione finale del mio diagramma.
Usa diagramma dei casi versione 1.1

Ho parlato con alcune persone di UC_07, alcuni sostengono che questo sarebbe " troppo tecnico ". Tuttavia, la mia visione è che l'estrazione di questa fase comune mostra chiaramente i limiti dell'applicazione; mentre il database non è in esecuzione (a causa di un errore, ad es.) tutti i tre casi d'uso (2,3,4) sarebbero afflitti da questo.

Domanda Dovrebbe UC_07 essere un caso d'uso (sotto) separato o no? Inoltre come descritto sopra (il database non è un attore se è appena usato per l'archiviazione), tuttavia come potrebbe essere descritto UC_07 se il database non può essere visto come un attore? Perché in generale assomiglierà a qualcosa: 1. L'applicazione apre la connessione al database 2. L'applicazione invia i dati 2. Il database memorizza i dati

Anche altri suggerimenti / miglioramenti sul diagramma del caso d'uso sono molto apprezzati

EDIT a causa di commenti sotto la risposta di Amon
Supponiamo che io decida di omettere UC_07 se devo menzionare la memorizzazione dei dati nel databse nell'UC_2-4 o no:

    
posta CodeEqualsLife 15.02.2017 - 15:23
fonte

3 risposte

5

Il diagramma dei casi d'uso fornisce una panoramica dei requisiti e illustra come i vari attori interagiscono tramite il sistema.

Esistono molti modi per acquisire effettivamente casi d'uso. Un aspetto importante sono le storie utente a frase singola . Ad esempio: "Come utente, voglio cercare gli ORF". Questo è un caso d'uso valido. Ora stai proponendo un caso d'uso come "Come utente, voglio salvare i dati nel database". potrebbe essere un caso d'uso valido, ma in realtà non sembra.

Questo è più chiaro se usiamo un formato di caso d'uso tabellare. Qui, elenchiamo esplicitamente i passaggi che l'utente esegue e come risponde il sistema. Ad esempio:

Search ORFs

Precondition: A file is loaded.

Primary Actor: User

Trigger: The User clicks on the “search” button.

Scenario:

  1. The User enters an ORF into the search box and submits the search.
  2. The System displays a list of all matching sequences in the loaded file.

Postcondition: The system can receive the next search query.

Alcuni passaggi in questo scenario potrebbero essere così complessi da essere descritti in un altro caso d'uso che verrebbe quindi incluso. Ma un caso d'uso è sempre un'interazione tra attore e sistema. Se hai un "salva dati nel database" usa il caso in cui l'utente fa clic su un pulsante "salva in DB", quindi potresti avere un vero caso d'uso. Altrimenti, il database è solo un dettaglio di implementazione.

Il fatto che il database sembri essere importante per i tuoi utenti potrebbe significare che non hai effettivamente catturato tutti i casi d'uso. Si cita il vincolo che il database deve essere in esecuzione affinché tali casi d'uso possano funzionare: si tratta di una precondizione o forse di uno scenario di eccezione. Potremmo estendere il caso d'uso sopra descritto con un flusso alternativo:

Exceptions:

  1. If the database is offline or returns an error, the System displays an error message to the User.

Se un controllo "il database non è in linea" è comune a molti casi di utilizzo, è possibile estrarre tale passaggio comune in un caso di utilizzo condiviso. Per esempio. per le applicazioni web, dovremmo estrarre il controllo "l'utente ha effettuato l'accesso" in un caso d'uso separato invece di ripeterlo in ogni caso d'uso.

Qual è l'interesse dell'utente qui? Non vogliono entrare in una ricerca se non è possibile rispondere. Quindi il caso d'uso in realtà è "Come utente, voglio vedere un avviso quando il database è inattivo" o "Come utente, voglio essere impedito di cercare quando il database è inattivo".

    
risposta data 15.02.2017 - 16:03
fonte
5

Direi che UC_07 forse non è affatto necessario se fa parte del sistema nel suo complesso.

Anche molti casi d'uso sono letti come una sequenza di passaggi che appartengono più propriamente a un diagramma di sequenza. Ma in realtà dipende da quanti diagrammi UML stai usando.

Potresti anche creare un caso per la rimozione delle applicazioni di avvio e di chiusura poiché questo è un dato se stai utilizzando l'applicazione stessa.

    
risposta data 15.02.2017 - 15:49
fonte
2

I casi d'uso e i modelli di casi d'uso servono a descrivere alcuni aspetti dei requisiti funzionali di un sistema. In quanto tali, dovrebbero concentrarsi su che dovrebbe fare il sistema dal punto di vista del business. Soprattutto non dovrebbero riguardare come il sistema funziona internamente, che è una questione di progettazione del software .

Oggetti tecnici come l'apertura di connessioni al database e la gestione di errori imprevisti appartengono per lo più al dominio del design piuttosto che ai requisiti.

    
risposta data 15.02.2017 - 16:06
fonte

Leggi altre domande sui tag