Relazione tra requisiti e moduli
La relazione tra requisiti e moduli non è in generale ovvia, quindi ti ritroverai sempre con molti a molti:
- è molto raro che un modulo implementa un singolo requisito. Di solito un modulo implementa diversi requisiti correlati.
- spesso ci sono alcuni requisiti generali (ad es. requisiti di sicurezza non funzionali o requisiti dell'interfaccia utente come ad esempio la disponibilità di un pulsante di aiuto) che dovrebbero essere implementati in molti se non in tutti i moduli.
Pertanto, avere uno schema altamente interconnesso non significa necessariamente che i requisiti siano imperfetti. Può anche suggerire che hai a che fare con un sistema complesso. O che hai identificato molti requisiti generali.
Come semplificare l'immagine?
Un primo passo per padroneggiare la complessità è decidere cosa vuoi rappresentare:
- cerchi di rappresentare come vengono implementati i requisiti nel sistema? In questo caso, puoi ridurre i collegamenti che mostrerai nel diagramma, limitando i collegamenti alle relazioni "è implementato in". Quindi se un requisito generale è implementato in un modulo di utilità che fornisce la funzionalità all'altro modulo, avresti un solo collegamento.
- vuoi mostrare come i moduli sono conformi ai requisiti dal punto di vista dell'utente? In questo caso non è possibile evitare collegamenti di tipo "offerti all'utente", che moltiplicheranno i collegamenti.
Un altro approccio consiste nel prevedere categorie di requisiti. Ad esempio:
- requisiti generali non funzionali (previsti in tutti i moduli)
- usa i requisiti del caso (requisiti transazionali, relativi a funzioni aziendali specifiche: questi sarebbero previsti in un modulo)
- requisiti dell'utilità (inclusi o estesi, usati in diversi casi d'uso diversi: ci si aspetterebbe questi in un modulo di utilità o in più moduli)
- requisiti dell'interfaccia utente (previsti in moduli che interagiscono con i moduli dell'interfaccia utente)
Come utilizzare questo diagramma per migliorare il sistema?
Quindi, in generale, alte interconnessioni non significano requisiti imperfetti.
Tuttavia, alcune teorie fondamentali sui sistemi, come ad esempio La scienza dell'artificiale di Herbert's Simon , suggeriscono che in un sistema strutturato ottimale, ci si aspetterebbe una maggiore interrelazione all'interno di un sottosistema piuttosto che tra sottosistemi.
Pertanto, se disegni solo "è implementato in" link e rimuovi tutti i requisiti generali (o meglio, prendi solo i requisiti transazionali del caso d'uso), allora dovresti venire di più ad una situazione come il diagramma a sinistra .
Con un diagramma semplificato / filtrato, un'elevata interconnessione potrebbe suggerire che i requisiti dei casi d'uso sono imperfetti (ancora troppo generici o troppo ambigui). O che il raggruppamento in moduli non fosse idealmente pensato.