Requisiti funzionali / non funzionali VS design ideas

7

Dominio del problema

  • I requisiti funzionali definiscono cosa fa un sistema.
  • I requisiti non funzionali definiscono gli attributi di qualità di ciò che il sistema fa nel suo insieme. (prestazioni, sicurezza, affidabilità, volume, facilità d'uso, ecc.)
  • I vincoli limitano lo spazio di progettazione, limitano i progettisti a determinati tipi di soluzioni.

Dominio della soluzione

  • Progetta idee, definisce come lo fa il sistema

Ad esempio di un interesse delle parti interessate potrebbe essere il nostro obiettivo di aumentare le vendite, pertanto è necessario migliorare l'usabilità del nostro negozio online in modo tale che un maggior numero di clienti possa acquistare. (dominio problema)

Il design lo porta ulteriormente nel dominio della soluzione dicendo "quindi vogliamo offrire pagamenti con carta di credito in aggiunta all'opzione di pagamento anticipato".

Il mio problema è che la fase di transizione dall'obbligo alla progettazione sembra davvero vaga, quindi quando scrivo una specifica dei requisiti del software spesso mi confondo se ho incorporato o meno idee di progettazione nelle mie esigenze, che renderebbero errato il mio requisito .
Un altro problema è che spesso scrivo i requisiti funzionali come ciò che fa un sistema, e poi specificherò anche in quale arco di tempo deve essere fatto. Ma è corretto? È quindi un requisito ancora funzionale o non funzionale? È meglio separarlo in due requisiti distinti?

Ecco alcuni requisiti che ho scritto:

FR1 Registration of Organizer

FR1 describes the registration of an Organizer on CrowdFundum

  • FR1.1 The system shall display a registration form on the website.
  • FR1.2 The system shall require a Name, Username, Document number passport/ID card, Address, Zip code, City, Email address, Telephone number, Bank account, Captcha code on the registration form when a user registers.
  • FR1.4 The system shall display an error message containing: “Registration could not be completed” to the subscriber within 1 seconds after the system check of the registration form was unsuccessful.
  • FR1.5 The system shall send a verification email containing a verification link to the subscriber within 30 seconds after the system check of the registration form was successful.
  • FR1.6 The system shall add the newly registered Organizer to the user base within 5 seconds after the verification link was accessed.

    FR2 Organizer submits a Project

FR2 describes the submission of a Project by an Organizer on CrowdFundum

- FR2 The system shall display a submit Project form to the Organizer accounts on the website.< - FR2.3 The system shall check for completeness the Name of the Project, 1-3 Photo’s, Keywords of the Project, Punch line, Minimum and maximum amount of people, Funding threshold, One or more reward tiers, Schedule of when what will be organized, Budget plan, 300-800 Words of additional information about the Project, Contact details within 1 secondin after an Organizer submits the submit Project form. - FR2.8 The system shall add to the homepage in the new Projects category the Project link within 30 seconds after the system made a Project webpage
- FR2.9 The system shall include in the Project link for the homepage : Name of the Project, 1 Photo, Punch line within 30 seconds after the system made a Project webpage.

Domande:
FR 1.1 : ho incorporato qui un'idea di design, "il sistema deve avere un modulo di registrazione" essere un requisito funzionale migliore?
F1.2, 2.3 : non è singolare? Sarebbe meglio scrivere le condizioni per ciascuno dei propri requisiti separati
FR 1.4 : è un'idea progettuale? Si tratta di un requisito funzionale corretto o ho incorporato non funzionale (prestazioni) in esso? Sarebbe meglio se lo scrivessi in questo modo:
FR1 Il sistema mostrerà un messaggio di errore quando il controllo non ha esito positivo.
NFR: Il sistema risponderà ai controlli del modulo di registrazione non riusciti entro 1 secondi. Stessa domanda con FR 2.8 e 2.9.
FR2.3: Il sistema deve verificare la "completezza", qui la completezza è usata ambiguamente? Devo riformularlo?
FR1.2: Ho aggiunto che il sistema richiede un "codice Captcha": si tratta di un requisito funzionale o appartiene all'aspetto "sicurezza" di un non funzionale requisito.

Sto aspettando con impazienza la tua risposta. Grazie!

    
posta Nicholas Chow 23.10.2013 - 17:27
fonte

1 risposta

5

Affiderò il SWEBOK ( Book of knowledge di Ingegneria del software ) per guidare la mia risposta.

Nel Requisiti del software * capitolo, vengono fornite definizioni più formali dei termini necessari per la tua domanda.

Functional requirements describe the functions that the software is to execute; for example, formatting some text or modulating a signal. They are sometimes known as capabilities.

Nonfunctional requirements are the ones that act to constrain the solution. Nonfunctional requirements are sometimes known as constraints or quality requirements.

Li metto in evidenza perché sembra che ci sia qualche sovrapposizione nel modo in cui ti è stato richiesto di generare il tuo documento. Hai dichiarato: A SRS should only have functional, non functional and constraints e in base alla definizione di SWEBOK / IEEE puoi vedere che i requisiti e i vincoli non funzionali sono la stessa cosa.

E mentre alcuni potrebbero protestare contro l'eccesso, ci sono tre documenti principali relativi al lavoro sui requisiti.

System Definition Document This document (sometimes known as the user requirements document or concept of operations) records the system requirements. It defines the high-level system requirements from the domain perspective.

System Requirements Specification In this view, system requirements are specified, the software requirements are derived from the system requirements, and then the requirements for the software components are specified.

Software Requirements Specification establishes the basis for agreement between customers and contractors or suppliers (in market-driven projects, these roles may be played by the marketing and development divisions) on what the software product is to do as well as what it is not expected to do.

Quindi il problema con tutto questo è che appare chiaro quando viene spiegato, ma finisce per essere fangoso quando implementato. Per aiutare a mettere a fuoco la mia risposta, ignorerò il System Reqs Spec poiché è un argomento enorme e non del tutto necessario per la tua domanda.

La sfida principale che stai incontrando è che stai mescolando il tuo SDD e i tuoi documenti SoftRS (software). Dal momento che i due documenti sono ponti di comunicazione tra tre campi, è naturale e inevitabile che vedrete qualche sovrapposizione tra i due. L'SDD è un ponte tra il cliente e gli analisti, mentre lo SRS è un ponte tra gli analisti e gli sviluppatori.

Quindi, come traccia la linea tra SDD e SRS? Torniamo alla Ingegneria del sistema trinità:

  • what
  • why
  • how

E dovrebbero davvero andare in questo ordine perché quando guardiamo il V-model , usiamo quelli tre per farci strada attraverso gli strati. Cominci con what & why a livello di sistema. Mentre li acquisisci, inizi a generare idee per how , che passa al livello successivo in V-Model. "Alla fine" finisci con un particolare livello e inizi a rivedere il livello sottostante nello stesso modo. La differenza sui livelli inferiori è che il how del livello superiore diventa questo % di what .

Blah, blah, muro di testo, affrontiamo le tue domande.

FR 1.1 : Have I incorporated a design idea here, would " the system shall have a registration form" be a better functional requirement?

Inizierò con "meh" per una risposta. "visualizza" vs "deve avere" su una forma che richiede l'interazione dell'utente è un po 'inutile. Se un argomento scoppiasse su un progetto reale sulla semantica tra quelle due forme, considererei che un'enorme bandiera rossa e tentare di salvare il progetto. Sul serio.

"Indicazione" implica "avere" mentre "deve avere" implica "visualizzare" in questo caso. Per essere completamente pedante, è necessario almeno "avere e display" per chiarire. Comunque una di queste tre varianti va bene.

F1.2 ,2.3 : Is this not singular? Would the conditions be better written for each its own separate requirement

Sono certamente correlati, e diventa complicato su come vuoi esprimere quelli. Mi affido alle norme del team in questo caso perché ho visto che va in entrambi i modi con risultati equivalenti. La parte importante è essere coerenti nel modo in cui gestisci i requisiti composti come questo.

FR 1.4: Is this a design idea? Is this a correct functional requirement or have I incorporated non functional(performance) in it? Would it be better if I written it like this: FR1 The system shall display an error message when check is unsuccessful. NFR: The system will respond to unsuccesful registration form checks within 1 seconds. Same question with FR 2.8 and 2.9.

Probabilmente li romperò, sì. Ecco perché: Il primo fornisce la funzione (visualizza un messaggio di errore) mentre il secondo fornisce i vincoli (quantità specifica di tempo) nel fornire quella funzione. I vincoli cambiano spesso, ma la funzionalità no. Spostando il vincolo in base alle proprie esigenze, possiamo ottenere un accordo iniziale sulla funzionalità e quindi gestire i vincoli (la velocità di consegna del messaggio) quando entriamo in implementazione.

FR2.3: The system shall check for "completeness", is completeness here used ambigiously? Should I rephrase it?

È vicino a spiegare la completezza con l'elenco degli articoli forniti. Tuttavia, potresti essere più chiaro nello specificare cosa determina la completezza o meno in ciascuno degli elementi che hai elencato.

FR1.2: I added that the system shall require a "Captcha code" is this a functional requirement or does it belong to the "security aspect" of a non functional requirement.

Dipende dal livello del tuo design di cui stai parlando. Ad un livello elevato, è un requisito non funzionale perché è un vincolo. A un livello basso, è un requisito funzionale perché specifica una funzione da fornire.

* SWEBOK è attualmente in uno stato di revisione per la prossima versione. Tranne che per il collegamento principale, alcuni dei collegamenti aggiuntivi potrebbero diventare obsoleti.

    
risposta data 25.10.2013 - 14:55
fonte

Leggi altre domande sui tag