Come "Migliore" per catturare le transizioni di stato in una specifica dei requisiti del software formale

3

Supponiamo che tu abbia un diagramma di transizione di stato. Qual è il modo migliore per i requisiti di scrittura "Formalmente" che catturano le transizioni di stato illustrate nel diagramma. Nel corso degli anni ho usato due approcci e entrambi funzionano, ma ogni volta che lavoro con nuove persone sembrano esserci disaccordi sul modo migliore per "Formalmente" catturare le transizioni dello stato. L'acquisizione "formale" è necessaria perché vengono utilizzate le matrici di tracciabilità associate a "Casi di test" e "Unità software (ad esempio classi e / o moduli)".

Metodo 1

  • Il sistema deve passare tra stati come illustrato nella Figura 1 Diagramma di transizione XYZ.

o

Metodo 2

Guarda il diagramma e scrivi un requisito per ogni transizione.

  • All'accensione il sistema inizierà nello stato Comms-Init.
  • Una volta stabilite le comunicazioni, il sistema passerà allo stato di inizializzazione.
  • (es. un requisito per ogni transizione di stato)

Il vantaggio del metodo 1 è che è un requisito e molto facile da scrivere.

Il confronto con il metodo 1 è che le immagini non funzionano bene con le matrici di tracciabilità ed è più difficile verificare di aver coperto tutte le transizioni.

Il vantaggio del metodo 2 è che ogni transizione può essere associata ai casi e ai moduli di test espliciti nelle rispettive matrici di tracciabilità.

Il problema è che è più lavoro scrivere tutti i requisiti extra e talvolta mettere in parole chiare e accurate ciò che l'immagine mostra chiaramente non è così facile come sembra. Inoltre, i requisiti aggiuntivi sembrano aggiungere più confusione rispetto al valore, il che rende la lettura dei requisiti meno comprensibile piuttosto che più.

Mentre sospetto che la risposta nel caso semplice come quello che ho descritto sia che dipende dal progetto o che non ha molta importanza. Il problema sul mio nuovo progetto è che le cose sono leggermente più complicate (ci sono modi oltre agli stati che interagiscono). Pertanto, il metodo 2 esploderà potenzialmente in molti requisiti.

Quindi sto facendo la domanda perché questa è una di quelle "pratiche" che ho fatto senza sapere veramente "Perché". In genere non mi piace lavorare in questo modo, quindi spero che qualcuno possa indicare valide ragioni per cui un approccio è "più corretto" rispetto all'altro e nel processo imparerò il "Perché", che mi permetterà di capire il modo migliore per personalizzare gli scenari leggermente più complicati.

    
posta Dunk 24.02.2015 - 19:37
fonte

2 risposte

2

Penso che l'approccio migliore sarebbe quello di fornire innanzitutto un identificatore univoco al diagramma di transizione dello stato. Ciò consentirà di fare riferimento al lavoro a valle. Permetterebbe anche che le vostre specifiche esigenze siano esplicitamente collegate alla figura, fornendo tracciabilità tra un modello visivo e un requisito testuale, anche se vivono nello stesso documento.

Quando crei requisiti testuali dal diagramma, non traduci semplicemente il diagramma in righe di testo. In Modelli visivi per i requisiti software , gli autori suggeriscono di porre quattro domande per ricavare i requisiti da una tabella di stato o da un diagramma di stato:

  • What conditions are required for the transition to occur?
  • What action initiated the transition?
  • What is the output of the transition?
  • What actions or data transformations occur as a result of the transition?

Ildiagrammaprecedentevieneda il sito web di Seilevel . La dirigenza di questa compagnia, Joy Beatty e Anthony Chen, scrisse il libro che ho collegato sopra. Questo esempio appare anche nel capitolo 23 del libro.

Da un diagramma come questo, puoi ricavare alcuni requisiti funzionali. Ad esempio, sai che il tuo sistema accetta un indirizzo di proprietà. Potrebbe esserci un dizionario di dati che descrive il formato di quell'indirizzo a cui puoi fare riferimento. Sospetto che ci sarebbe un'interfaccia definita per la trasmissione elettronica di un'applicazione. È anche possibile fare riferimento a un documento dei requisiti dell'interfaccia o al documento di controllo dell'interfaccia che specifica i formati per gli ingressi e le uscite, se esistente. Puoi anche ricavare alcuni ruoli e responsabilità da questo diagramma, che potrebbe entrare in una Matrice di ruoli e responsabilità che può essere creata per dire chi può negare un'applicazione inoltrata. Potrebbero esserci regole aziendali correlate all'elaborazione dell'applicazione che possono essere requisiti funzionali. Se esiste un'elaborazione automatica, è possibile derivare requisiti non funzionali per lo stato di elaborazione, ad esempio il tempo.

Le tue affermazioni "devono" non dovrebbero essere solo un'enumerazione di questo diagramma. Non sarebbero cose come "il sistema inizierà in uno stato prequalificato" e "il sistema passerà ad uno stato inviato quando l'indirizzo della proprietà è inserito". Invece, lo utilizzeresti come uno strumento per vedere chiaramente le regole aziendali e i requisiti funzionali / non funzionali. Evidenzia in particolare i requisiti che mancano - cosa succede se non si ha una definizione di chi può eseguire la transizione di stato da inviata a negata?

    
risposta data 25.02.2015 - 14:00
fonte
0

Solo i sistemi software più semplici possono essere utilmente specificati:

  • esclusivamente in inglese
  • con un fatto verificabile per frase.

La maggior parte dei sistemi software realistici avrà requisiti di livello utente corrispondenti a decine, centinaia o migliaia di casi di test. Un esempio è dove viene fatto riferimento a uno standard esterno (ad es. "Deve supportare tutti i tag di markup HTML 5", o implementare questo protocollo standard di routing Internet, o qualsiasi altra cosa).

È qui che l'esperienza e l'analogia con i test dell'hardware, persino dell'elettronica digitale, possono essere fuorvianti; nessuno implementa HTML 5 nell'hardware.

Se non si presta attenzione, si finisce con una specifica che ha letteralmente decine di migliaia di "requisiti". Quasi nessuno dei quali il cliente avrebbe idea di cosa significhi, nell'improbabile caso che li leggano. Forse è facile da testare, ma quel test ti dice poco sul fatto che sia corretto, per non dire adatto allo scopo.

Quindi qualcosa deve essere fatto, se vuoi essere in grado di gestire qualsiasi sistema più complesso di un tostapane a un costo inferiore a quello di sviluppare un jet da combattimento.

Un approccio è quello di mantenere i requisiti utente di livello superiore in inglese, ma fare riferimento a specifiche di livello inferiore che possono essere o non essere. Quindi il requisito è 'devi seguire questa specifica', dove la specifica può essere uno standard del settore, un altro documento o un modello . Un modello potrebbe essere visualizzato come un diagramma, ma dovrebbe essere compreso dagli strumenti che si stanno utilizzando a un livello sufficientemente elevato da, ad esempio, generare casi di test. Quindi non è necessario gestire la tracciabilità manualmente.

Un altro è di avere la specifica inglese generata automaticamente da un modello; questo è un po 'inutile, ma molto semplice da fare. Potrebbe anche essere l'approccio migliore per i sistemi che sono generalmente banali ma hanno solo un'area complessa.

    
risposta data 24.02.2015 - 23:58
fonte

Leggi altre domande sui tag