Sto usando la relazione di inclusione ed estensione in questo diagramma del caso d'uso?

5

Sto provando a disegnare un diagramma del caso d'uso UML per modellare i requisiti per un progetto software.

I due requisiti che ho riscontrato nel modello sono:

  1. TravelAgent crea una prenotazione per un [vecchio] cliente che richiede una casa.

  2. Quando un nuovo cliente desidera effettuare una prenotazione, TravelAgent lo registra sul sistema prima di effettuare la prenotazione.

Ho due approcci per modellare questi requisiti:

  1. Modellare il primo caso d'uso come sottoprocedura del secondo caso d'uso (Figura 1).
  2. Estendere il primo caso d'uso (Figura 2).

Entrambi gli approcci implicano che il primo caso d'uso potrebbe essere eseguito indipendentemente, ma quando viene eseguito il secondo caso d'uso, anche il primo deve essere eseguito.

Sono effettivamente uguali ed entrambi sono corretti?

P.S. Come un'altra domanda, visto che NewClient converte in Client dopo la registrazione, dovrei mostrare NewClient come sottoclasse di Client o qualcosa del genere?

Figura 1

Figura2

    
posta Isaac 23.04.2012 - 14:44
fonte

2 risposte

1

Attenzione che l'estensione è usata in UML in modo abbastanza diverso rispetto ad es. Java.

Probabilmente i tuoi diagrammi non esprimono ciò che vorresti fosse. Hai usato la relazione di generalizzazione (la freccia con un triangolo vuoto). Questo implica una relazione "è una". Ma chiaramente né "Registra un cliente" è un caso di "Crea una prenotazione", né viceversa.

Il modo corretto per indicare una relazione "include" o "estendere" è con una linea tratteggiata, ad es. - - - > . Ora la differenza tra i due è la seguente. Supponiamo che A includa B. Ciò significa che ogni volta che qualcuno fa A, farà anche B. D'altra parte, se A estende B, allora ogni volta che qualcuno fa A, B non ha nulla a che fare con esso. Ma se fai B, potresti fare A anche durante il corso di B. Dovresti specificare una condizione in cui A in realtà estende B.

Nel tuo caso potresti effettivamente utilizzare entrambi fin tanto che indichi nelle condizioni della versione extends che ciò dipende dal fatto che il cliente sia nuovo.

Informazioni sulla modellazione del nuovo client. Non credo che ci sia molto valore nell'esprimere la differenza tra i due qui. BTW "sottoclassi" non è il termine corretto, è (di nuovo) generalizzazione. L'aggiunta di una tale generalizzazione implica che ogni nuovo cliente è un cliente e può fare qualsiasi cosa un cliente normale possa fare. Non riesco a decidere se questo è quello che vuoi.

    
risposta data 23.04.2012 - 19:58
fonte
0

Tutto quello che ho imparato su INCLUDE ed EXTENDS nei diagrammi UML è che include è qualcosa che è richiesto ed è facoltativo. Nel tuo caso, si suppone che il client sia già registrato e registrato nel sistema. Quindi, non ha bisogno di fare un nuovo registro. Ma il nuovo cliente deve essere registrato per creare una prenotazione. Penso che potrebbe assomigliare a questo:

Ma non sono sicuro, una volta che sto imparando ... Spero possa essere d'aiuto.. Buona fortuna!

    
risposta data 01.07.2015 - 23:19
fonte

Leggi altre domande sui tag