Scrittura di casi d'uso efficaci

3

Mentre scrivo progetti personali oltre che sul posto di lavoro, spesso faccio fatica a proseguire nell'attuale compito perché o mi blocco su ciò che stavo pensando o non ho pensato a tutti i casi limite che potrebbero sorgere in futuro . Stavo pensando a cosa succederebbe se prima di codificare qualcosa facessi un po 'di brain storming e scrivessi una serie di passaggi come faccio nei problemi dell'algoritmo.

So che è noto come "Casi d'uso", ma penso che riuscirò a seguire davvero da vicino se comincio a leggere tutti i libri su di esso, voglio qualcosa di semplice ma solido per almeno il mio progetto personale. Ho fatto alcuni compiti e mentre scrivevo un semplice progetto di giocattolo, ho pensato di scrivere un caso d'uso che è fondamentalmente il modo in cui l'utente interagirebbe con il sistema.

Ecco qui:

"""
Design a question and answer system which allows
user to see optional hints to each question and
let him assign score to each question answered.

The order of the question next time would depend
on the current scores.

UseCase:

1. User sees a welcome message and avalilable topics
2. User chooses the topic
3. A new session is started for the user
4. User sees a question on the selected topic
  4.1 User asks for hint by pressing '/h'
  4.2 User sees a hint
    4.2.1 User presses '/h', Repeat step 4.2
    4.2.2 User presses 'return' GOTO step 5
5. User is prompted to answer the question
6. User answers the question, presses 'return'
7. User sees the answer
8. User is prompted to give a score [1, 3]
7. Repeat steps 4-8 until there are no more questions
8. User sees the summary of questions and scores
9. User is asked if it needs to start another session
  9.1 User enters 'Y', Repeat steps 1-9
  9.2 User receives a goodbye message
10. End  

Requirements:

1. The user can choose topic
2. An user can see all its previous sessions
3. The user can stop and resume a session
4. The system should be designed in such a way that
   the order of the questions changes based on the
   user's last score for each question

"""

Ho bisogno di sapere se ci sono dettagli irrilevanti / ridondanti che possono essere evitati e se ci sono dettagli che possono essere aggiunti?

Questo approccio corretto alla risoluzione dei problemi in generale?

Ho intenzione di leggere di più sulla progettazione di casi d'uso tramite libri standard sull'argomento, ma penso che sia una buona strategia per imparare qualcosa di nuovo prima di immergerti nei dettagli.

    
posta CodeYogi 07.11.2017 - 14:04
fonte

2 risposte

2

I need to know if there is are irrelevant/redundant details which can be avoided and if there is any details which can be added?

Probabilmente nulla di ridondante, non ha catturato nulla a prima vista. Se queste cose sono tutte pertinenti, o se mancano le cose, dipende da ciò che un "esperto di dominio" o "utente" o qualsiasi altro stakeholder di un tale sistema potrebbe pensarci (ma poiché è il tuo progetto di giocattoli, questo è semplicemente fino a voi).

Per renderlo più chiaro: posso immaginare altre caratteristiche come il tornare indietro alle precedenti risposte per correggerle in seguito, ma se ne hai bisogno o le vuoi (o meno), devi decidere da solo. Posso anche immaginare di lasciare alcune cose fuori per una versione minimale del programma (come le funzioni "suggerimento" o "punteggio"), ma è necessario decidere da soli se lo scopo di questa descrizione è quello di fornire un elenco completo delle potenzialità funzioni, o un elenco parziale o una lista minima.

Is this correct approach of solving problems in general?

Certo, il processo "di rottura di un argomento o di una sostanza complessi in parti più piccole al fine di ottenere una migliore comprensione di esso" ha un nome ben noto, si chiama " Analisi ", vedi Wikipedia . Sono sicuro che hai sentito quel termine prima.

Nel 2000, Joel Spolsky ha scritto alcuni brevi post di blog su come creare "specifiche funzionali indolori" per lo sviluppo di software, start here o qui , questi esempi saranno probabilmente più utili di qualsiasi cosa posso dirvi qui in una risposta breve.

    
risposta data 07.11.2017 - 14:32
fonte
1

Voglio prendere nota di un approccio per l'utilizzo dei casi.

Per prima cosa, prova a identificare i candidati agli oggetti nel tuo dominio. Quindi pensa alle loro responsabilità, solo per perfezionarle, per capire quali oggetti hai veramente bisogno. Quindi disegna una rete semantica con le relazioni intrinseche tra l'oggetto. Quindi prendi un paio di oggetti e vedi quali servizi aggiungono al valore complessivo del progetto. Pensa ai casi d'uso a cui potrebbero partecipare. Scrivalli.

Nel caso, due libri classici: Scrittura di casi d'uso efficaci di Alistair Cockburn e Storie utente applicate: per lo sviluppo software agile di Mike Cohn.

Aggiornamento : c'è un esempio molto pertinente che ho scomposto solo in una domanda adiacente . Il punto principale è quello notato da Christophe in un commento: inizia con la comprensione del tuo dominio prima.

    
risposta data 07.11.2017 - 19:20
fonte