2011-08-27 18 views
6

Sto lavorando a un piccolo progetto di hobby e sto sperimentando di fare le cose in modo leggermente diverso.Identificazione degli attori per casi d'uso

Il sistema che sto costruendo è un sistema ERP e comprende una cassa, un catalogo prodotti, un database vendite, un registro vendite (simile al database, ma utilizzato per scopi contabili), una stampante, un partner di pagamento e un carrello (carrello).

Sebbene la stampante sia hardware, è necessario programmare il codice di livello superiore per stampare le ricevute.

L'unica parte che non è necessario programmare è il partner di pagamento.

Ho due domande.

1) Il caso di utilizzo per vendere un gruppo di prodotti a un cliente può essere un caso d'uso denominato "vendere articoli fino a" o essere suddiviso in più, ad esempio "aggiungi prodotto al carrello" e "completo" vendita "(che scriverà il registro delle vendite e stamperà la ricevuta).

2) Anche se sto programmando il catalogo, il database vendite, il registro vendite, il carrello, ecc., Posso modellarli come attori nei miei casi d'uso? O gli unici attori sono il venditore e il partner di pagamento?

+0

Penso che il caso d'uso separato sarebbe un'idea migliore. E non ho un'idea chiara di cosa stai cercando di specificare sugli attori. –

+0

la ragione per cui voglio che il database delle vendite, il registro delle vendite, il carrello ecc. Siano attori, è che diventa davvero facile identificare i ruoli che gli attori stanno giocando, perché posso vedere gli attori sul diagramma dei casi d'uso. non è facile da spiegare qui, ma è correlato a DCI - un nuovo paradigma: http://en.wikipedia.org/wiki/Data,_Context,_and_Interaction –

+1

Non sono sicuro che ciò rispetterebbe l'attore nel senso del caso d'uso . Potresti dare più spiegazioni sul perché avrebbero bisogno di essere attori? Ho rapidamente esaminato l'articolo di Wikipedia e sembra che questi ruoli siano collegati agli oggetti e la menzione di un modello di dominio fa sembrare che questi siano oggetti di dominio. Il catalogo, il database delle vendite, il registro delle vendite, il carrello, ecc. Potrebbero benissimo essere modellati come classi in un modello di dominio. In realtà questa sarebbe una pratica standard in un'applicazione di stile n-tier. –

risposta

3

analisi Utilizzo caso è apparentemente semplice, ma questa domanda tradisce alcune delle complessità intrinseca.

Ogni caso d'uso deve essere significativo per gli attori coinvolti, nel senso che deve rappresentare un'interazione ben definita con il sistema. Ogni attore e caso d'uso deve anche avere un senso quando parli del sistema, anche usando il linguaggio quotidiano. Se ti trovi in ​​difficoltà a definire attori o casi d'uso, probabilmente il contesto del sistema non è chiaro e quindi un modello di dominio potrebbe aiutarti.

Un caso d'uso deve rappresentare un'interazione ben definita, ma non necessariamente uno completo. La relazione <<include>> può essere utilizzata in situazioni in cui ha senso visualizzare casi di utilizzo dell'interazione completa e parziale allo stesso livello. Si potrebbe considerare di avere un caso d'uso buy stuff includere browse products, add product to cart e check out <<xor>> cancel, ad esempio, ognuno dei quali ha senso per il cliente.

(Sono un po 'confuso sul fatto che il vostro sistema sia destinato a transazioni fisiche o on-line, avere una cassa e stampare ricevute sembra implicare il primo, un carrello della spesa come parte dei concetti utilizzati nell'analisi il Quest'ultimo presuppone un sistema on-line.)

Nel tuo caso, tuttavia, stai parlando di attori che possono essere considerati parte del sistema stesso. Questo di solito significa che si sta tentando di definire il sistema e i suoi sottosistemi contemporaneamente, il che è comune in situazioni in cui si ha una buona idea della progettazione del sistema (eventuale) prima di iniziare l'analisi.

Quello che vuoi fare è dividere l'analisi in due livelli. Al livello superiore (di sistema), sii molto severo nel trattare il sistema nel suo insieme. Nel tuo caso, si sarebbe probabilmente bisogno di attori customer, payment partner, clerk (per un sistema fisico-transazioni), accountant (e forse administrator), e casi d'uso, come riportato sopra, più update product catalogue, audit sales log, ecc

Poi interrompi il sistema in sottosistemi e fai un'analisi separata per ciascuno di essi. Qui i sottosistemi possono essere attori nei casi d'uso degli altri.Print receipt, ad esempio, non è un caso d'uso significativo a livello di sistema perché non è di per sé un'interazione tra il sistema nel suo complesso e un attore a livello di sistema, ma è significativo come caso d'uso per il sottosistema della stampante, con la cassa come l'attore.

Non è necessario completare l'analisi a livello di sistema prima di iniziare la disfunzione del sottosistema, infatti ritengo sia meglio attivarli entrambi contemporaneamente, anche se ciò pone requisiti più elevati per l'analista/progettista essere in grado di cambiare rapidamente contesto e di essere disciplinato sul contesto in cui si lavora in un dato momento.

Quindi, dopo tutto quello che (! Uff) Penso che la risposta alle tue domande sono:

  1. Entrambi, fornito ogni caso d'uso ha un senso ai suoi attori come ben definito (ma non necessariamente completare) interazione con il sistema.
  2. Sì, ma non allo stesso livello; con un modello per il sistema e modelli separati per ogni sottosistema è possibile utilizzare i sottosistemi come attori nei casi d'uso degli altri.
+0

Ho assegnato a questo la taglia, perché guardare al caso d'uso a due livelli ha più senso per me. Grazie. –

+0

Nel frattempo, ho anche scoperto i diagrammi di utilizzo della collaborazione, che potrebbero essere più adatti all'analisi dei ruoli. –

1

Penso che sia necessario fare un passo indietro prima. Lo scopo degli Actors & Use Cases è innanzitutto quello di chiedere: "chi utilizzerà questo sistema?" e "perché lo useranno?". Tu potresti iniziare a identificare fino a, stampante, ecc. Come attori - e in effetti, alcuni di essi potrebbero essere - ma c'è un pericolo che ti mancherà il punto chiave.

Dalla tua descrizione, vi assicuriamo che gli attori e le loro casi d'uso sarebbe lungo le seguenti linee:

  • Attore: clienti
    • primaria Caso d'uso: Acquisto del prodotto. Probabilmente questo si scomporrà in alcuni sottofasi, ad es. Naviga/Confronta prodotti, Seleziona prodotto/i (inserisci nel carrello), Acquista, ecc. Supporteranno anche le UC: Verifica stato dell'ordine, reso merce, reclamo, ecc.
  • Attore: Conti impiegato
    • Casi d'uso: presumibilmente qualcosa a che fare con il controllo dello stato dell'ordine/pagamento

... ecc.

Quando si progetta il flusso per ciascuna UC, è probabile che identifichi altri componenti esterni al sistema con cui è necessario interagire - ad es. partner di pagamento. Puoi mostrarli come attori se lo desideri (la mia preferenza non è, ma è puramente personale).

Identificherete anche altri elementi del vostro sistema che svolgono un ruolo nella realizzazione del comportamento UC (ad esempio vendite db, ecc.). Questi sono parte del tuo sistema e in genere non vengono mostrati come attori.

Quindi, in breve: i casi d'uso sono pensati per aiutare a identificare lo scopo del sistema e chi riceve valore da esso, piuttosto che strutturare i componenti interni del progetto.

hth.

0

I casi di utilizzo non sono assoluti. Puoi avere un caso d'uso vago come Manage Users (non sono sicuro che i casi gestiti siano una buona pratica, ma questo è per un esempio ...) in un primo schizzo del tuo sistema e poi scomporlo in modo più dettagliato usa i diagrammi dei casi affinando le cose lungo la strada fino a quando non arrivi a una funzione di base.

Per quanto riguarda la seconda domanda, questi sembrano tipici oggetti di dominio (da modellare come diagramma di classe base). Non penso che dovrebbero essere modellati come attori a meno che non giochino un ruolo attivo. Gli attori sarebbero persone fisiche ma anche altri sistemi che interagiscono con il sistema che stai creando. Questi attori finiranno per diventare le cosiddette classi di sottotitoli.

Aggiornamento

Passando attraverso the article linked above sembra che l'attore (sinonimo di lettore) è usato per qualificare l'oggetto di destinazione a cui viene aggiunto un ruolo. Se questo è corretto, la parola ha un significato diverso.

un ruolo è un tipo speciale di oggetto che aggiunge comportamento all'altro oggetto (l'attore o lettore)

0

senza aver letto le altre risposte: -/qui sono miei:

1) Sarebbe il caso d'uso per vendere un mucchio di prodotti ad un cliente uno caso d'uso il nome di "vendere oggetti a fino "o sarebbero suddivisi in diversi, ad esempio" aggiungi prodotto al carrello "e" completa vendita "(che scriverebbe il registro vendite e stamperà la ricevuta).

Cerco sempre di utilizzare un caso d'uso come "un'interazione con il sistema che porta un valore all'attore". "vendere oggetto" avrà un valore. "aggiungi prodotto al carrello" non avrà alcun valore.

ho scritto "Io cerco di", perché spesso si inizia con un buon uso dei casi che seguono la mia definizione, ma poi si inizia a aggiungere dettagli ed estendere le casi d'uso ...

2) Anche se io sto programmando il catalogo, il database delle vendite, il registro delle vendite, il carrello, ecc., posso modellarli come attori nei miei casi d'uso? O gli unici attori sono il venditore e il partner di pagamento?

Io uso gli attori non solo per le persone reali, ma anche per i sistemi che interagiscono con il vostro sistema. Ma i termini "database", "log" ecc. Mi dicono che sembra che tu voglia troppi dettagli nel tuo diagramma.

Forse un buon approccio è in primo luogo pensare al motivo per la creazione di un diagramma del caso d'uso.

Per me, il più delle volte il motivo è che vorrei avere una prima impressione sul tipo di sistema che devo costruire. Quindi utilizzo il diagramma come strumento per moderare un incontro. Aiuta a trovare le risposte alle seguenti tre domande:

  • chi utilizzerà il sistema?
  • cosa faranno questi attori con il sistema?
  • quali altri sistemi si interfacciano con il nuovo sistema?

E questo è tutto. Quando entra in maggiori dettagli, utilizzo un diverso set di diagrammi.

1

In primo luogo, non pensare in termini di programmazione a questo punto. Pensa a ciò di cui l'azienda ha bisogno.

il cliente deve:

  • Bowse catalogo
  • aggiungere un elemento al carrello della spesa
  • Checkout

Il sistema ha bisogno di:

  • display il prodotto richiesto
  • Completa la vendita (o meno)
  • riscuotere il pagamento
  • generare una ricevuta di acquisto per il cliente
  • Consegnare il prodotto acquistato

Il primo elenco sarebbe vostri casi d'uso di alto livello e il secondo potrebbe essere parte di quei casi d'uso di alto livello o essere incluso. Uso include se quella parte del caso d'uso è abbastanza complessa (o semplicemente abbastanza lunga) da giustificare la sua introduzione nel suo caso d'uso. Nascondi la complessità, per così dire.

Per quanto riguarda il catalogo, il database vendite, il registro vendite, il carrello ecc., Gli attori sono attori - gli attori interagiscono con i sistemi (o casi d'uso). Sto attraversando un periodo difficile immaginando un catalogo che interagisce con qualcosa. D'altra parte, il cliente interagisce sicuramente con il catalogo.

Un attore deve essere praticabile nel mondo reale. Se un sistema rappresenta qualcosa nel mondo reale, un sistema può essere un attore. Ma nel mondo reale, un catalogo è inerte; un cestino è inerte Un registro vendite e vendite db rappresentano documenti cartacei - che sono inerti. Sono oggetti non attori.

BTW - il sistema di vendita è il sistema?