Introdurre i concetti di requisiti utente e di requisiti di sistema.
Descrivere i requisiti funzionali e non-funzionali.
Spiegare come i requisiti software possano essere organizzati in un documento di specifica dei requisiti.
Il processo condotto per stabilire i servizi che il cliente richiede al sistema, i vincoli operativi e quelli per lo sviluppo.
I requisiti sono la descrizione di tali servizi e dei relativi vincoli.
Se una compagnia vuole dare in appalto un grande progetto di sviluppo software, deve definire le sue esigenze in modo abbastanza astratto, da non predefinire alcuna soluzione.
I requisiti devono essere scritti in modo da consentire a vari appaltatori di interpretare le esigenze e proporre vari metodi per soddisfarle.
Quando l’appalto è stato assegnato, l’appaltatore deve scrivere per il cliente una descrizione del sistema molto dettagliata, in modo che il cliente possa capire e validare ciò che il sistema farà.
Entrambi i documenti si chiameranno documenti dei requisiti del sistema.
Requisiti Utente
Frasi in linguaggio naturale (e diagrammi) relativi ai servizi che il sistema fornisce e i suoi vincoli operativi. Scritti per i clienti.
Requisiti di Sistema
Un documento strutturato che fornisce una descrizione dettagliata dei servizi del sistema. Può essere parte del contratto fra cliente e sviluppatore.
Es. di definizione di un requisito utente:
Il software deve fornire un mezzo per rappresentare ed accedere a file esterni creati da altri tools.
Es. di Specifiche dei requisiti di sistema:
Descrivono le funzionalità e i servizi offerti.
Anche in questo caso, due livelli di astrazione:
Diversi livelli di dettaglio (es. 1 e 3).
Requisiti imprecisi o ambigui possono essere interpretati in modi diversi da sviluppatori ed utenti.
Es.: il termine ‘appropriati visualizzatori’ nel req. 2
I requisiti devono essere completi e consistenti.
Nella realtà è facile commettere errori o omissioni, soprattutto per sistemi complessi!
Definiscono o limitano le proprietà del sistema (es. Affidabilità, tempi di risposta, memoria occupata…).
Possono vincolare anche il processo di sviluppo da adottare (es. Uso di particolari standard per la documentazione, su sistemi CASE, linguaggi di codifica, metodi di sviluppo).
Possono essere più critici dei req. funzionali: se non sono soddisfatti, il sistema è inutile.
Requisiti del Prodotto
8.1 L’interfaccia utente deve essere implementata come semplice pagina HTML senza frame o Java applets (per garantirne l’accessibilità).
Requisiti organizzativi
9.3.2 Il processo di sviluppo e I documenti consegnati devono essere conformi alle norme XYZCo-SP-STAN-95.
Requisiti esterni
7.6.5 Il sistema non deve rivelare agli operatori del sistema alcuna informazione personale sui clienti, tranne il nome ed un numero di riferimento.
I Requisiti non-funzionali possono essere difficili da definire precisamente, e quindi difficili da verificare.
L’utente li specifica come obiettivi: Es. La facilità d’uso.
Requisito verificabile:
Una frase che contiene qualche misura che potrà essere oggettivamente verificata.
Un obiettivo di sistema
Il sistema dovrebbe essere usato facilmente da controllori esperti e dovrebbe minimizzare gli errori.
Un requisito non-funzionale verificabile
I controllori esperti dovranno essere capaci di usare tutte le sue funzioni dopo due ore di addestramento. Dopo tale addestramento, il numero medio di errori fatti dagli utenti non dovrà essere superiore a due errori al giorno.
I diversi requisiti non-funzionali possono essere in contraddizione fra loro, soprattutto in sistemi complessi (es. Tempi di risposta e portabilità).
Es.: Sistemi aerospaziali:
Derivano dal dominio di applicazione, piuttosto che da necessità degli utenti.
I requisiti di dominio possono essere nuovi requisiti funzionali, vincoli su altri requisiti funzionali, o possono delineare calcoli da effettuarsi.
Se non sono soddisfatti, il sistema potrebbe essere inutilizzabile.
Comprensibilità
Implicitezza
Dovrebbero descrivere requisiti funzionali e non-funzionali in modo da essere comprensibili ad utenti del sistema privi di dettagliate conoscenze tecniche.
Non devono descrivere caratteristiche di progettazione, ma solo il comportamento esterno.
Vengono definiti usando il Linguaggio Naturale, tabelle e diagrammi che sono comprensibili a tutti gli utenti.
Mancanza di chiarezza
È difficile usare il linguaggio in modo preciso e non ambiguo, senza rendere il documento lungo e difficile da leggere.
Confusione dei requisiti
Le varie tipologie di requisiti potrebbero non essere facilmente distinguibili.
Mescolanza dei requisiti
Diversi requisiti potrebbero essere espressi insieme come un singolo requisito.
4.5 Il sistema deve fornire un sistema di contabilità finanziaria che memorizzi tutti i pagamenti fatti dagli utenti del sistema. I gestori del sistema possono configurarlo in modo che gli utenti abituali possano ricevere prezzi scontati.
Confonde due tipi di requisiti: (un requisito funzionale concettuale e un requisito di sistema di dettaglio)!
2.6 Funzionalità della griglia. Per facilitare il posizionamento delle entità in un diagramma, l’utente può abilitare una griglia, in centimetri o pollici, attraverso una opzione del pannello di controllo. La griglia può essere abilitata e disabilitata durante le sessioni di lavoro, variando anche fra centimetri e pollici.
Il requisito della griglia sarà presente anche quando si è scelta la visione ridotta dell’immagine (adattata alla finestra) ma, in tal caso, il numero di righe della griglia sarà ridotto.
Il requisito della griglia combina tre tipi di requisiti:
I requisiti utente dovrebbero dare una descrizione generale del requisito, per essere compresi più facilmente e non confondere il lettore.
1. Introduzione
4. Casi d'uso
6. Class Diagram – parte prima
7. Class diagram – parte seconda
8. Class diagram – parte terza
9. Modellazione architetturale
10. Sequence Diagram
14. Progettazione Architetturale
15. Design Patterns – Parte prima
16. Design Patterns – Parte seconda
17. Progettazione dell'interfaccia utente
Ian Sommerville, Ingegneria del Software, capitoli 6 e 7.