|
emi7oP <a href="http://etyxbsmwlbop.com/">etyxbsmwlbop</a>, [url=http://ejkbnyaqouhe.com/]ejkbnyaqouhe[/url], [link=http://iytqgxxmxvee.com/]iytqgxxmxvee[/link], http://ddjproogyauv.com/ |
AnalisiESpecificaDeiRequisitiAnalisi e specifica dei requisitiAutori: Alberto Taiocchi Sommario
Questo capitolo descrive il ruolo della fase di analisi e specifica dei requisiti nel processo progettazione del software e quale siano le relazioni che legano questa fase alle altre; inoltre saranno presentate le tecniche ed i linguaggi di modellazione usati per realizzarla anche in nell’ottica del riuso della conoscenza.
Significato, motivazioni, processiE’ fondamentale comprendere i requisiti prima di iniziare la fase di progettazione e costruzione di un sistema computerizzato. Per ottenere ciò, occorre condurre un’insieme di attività di ingegneria dei requisiti. Quest’ultima si verifica durante le attività di comunicazione con il cliente e modellazione che sono state definite per il processo generico di sviluppo del software. L’analisi dei requisiti è un processo complicato ed ostico in quanto alla realizzazione concorrono diverse parti interessate (responsabili, utilizzatori, progettisti, leggi), ma anche perché gli obiettivi possono essere diversi e variabili nel tempo (possono sorgere ‘conflitti’ all’interno del team di analisi a causa di viste diverse da parte dei committenti). In molti casi anche l’incompletezza e l’incapacità di definire in maniera chiara i requisiti rendono l’analisi difficile da realizzare. Essendo diverse le parti interessate, l’analisi dei requisiti ricopre un ambito non solo tecnico, ma anche sociologico, di comunicazione e linguistico. A causa di questa elevata complessità l’operazione viene scomposta in diverse fasi. Fasi dell’analisi dei requisiti:
La stesura dei requisiti di un progetto non implica necessariamente il corretto svolgersi del lavoro, si può correre il rischio di non fare le cose bene e produrre un documento errato o incompleto.In elenco vengono riportate alcune delle cause che portano ad avere un’analisi dei requisiti scorretta:
Il tutto può portare ad un intervento sul progetto, ormai creato, a posteriori molto doloroso anche in termini economici. Quindi il documento dei requisiti deve contenere una serie di informazioni ritenute sufficienti per effettuare stime dell’attività di svilupppo, per valutare l’impatto di ciascun requisito sui costi e sui tempi di consegna. Utilizzando un approccio iterativo, i requisiti vengono eliminati, combinati e/o modificati in modo che ognuna delle parti venga il più possibile soddisfatta. Si deve essere comunque pronti a gestire requisiti contenenti inconsistenze. Tali requisiti verranno ulteriormente dettagliati nelle fasi successive. Durante la fase di negoziazione vengono distinti tre classi di requisiti:
SpecificheTerminata la fase di negoziazione si otteranno una serie di documenti contenenti un elenco di funzioni e caratteristiche che il prodotto deve possedere. Una specifica può essere un documento scritto, un insieme di modelli grafici, un modello matematico, un prototipo o una combinazione di questi elementi. Esistono due tipi di specifiche, le specifiche funzionali indicanti il motivo per cui viene realizzato il prodotto (che cosa deve fare il prodotto software) e le specifiche non funzionali descritte nella normativa 9126. Quest’ultime descrivono la qualità di un prodotto software in termini di:
ConvalidaViene valutata la qualità del prodotto finale realizzato come conseguenza dell’ingengeria dei requisiti. Esamina le specifiche per garantirsi che tutti i requisiti software siano stati affermati in modo non ambiguo, che siano state rilevate e corrette tutte le incoerenze, le omissioni e gli errori e che i prodotti finali siano conformi agli standard definiti per il processo, il progetto e il prodotto. Gestione dei requisitiSi tratta un insieme di attività che aiuta il team del progetto a identificare, controllare e tracciare i requisiti e i cambiamenti nei requisiti a mano a mano che procede lo sviluppo del progetto. Modellazione e analisiL’identificazione dei requisiti genera un modello del sistema da realizzare e del suo contesto di utilizzo. Tale modello può essere usato per studiare le proprietà del sistema. In base al tipo di sistema che si vuole realizzare esistono vari approcci alla modellazione. Ad esempio si possono usare modelli basati sui dati (E-R), oppure modelli che studiano il comportamento dinamico di un sistema. In base al tipo di modellazione decisa si adotteranno diversi linguaggi (linguaggi naturali, naturali-strutturati, semiformali, formali). L’analisi dei requisiti è basata su processi di comunicazione tra progettisti, responsabili, utenti e esperti. Per poter permettere una comunicazione fluente si necessita di documentazione, linguaggi di specifica che siano espressivi, rigorosi e leggibili da utenti di diversa formazione. Poichè un documento di specifica può contenere un insieme complesso di elementi sarebbe utile usare uno standard di documentazione e seguire la vita dei requisiti (e i loro cambiamenti) lungo tutto il processo di sviluppo (tracciabilità). Tecniche e linguaggiTecniche di estrazione dei requisitiI requisiti non sempre sono deducibili da documenti, che spiegano o cercano di spiegare il problema, creati dal cliente. Bisogna assolutamente far luce sugli aspetti in ombra. Ci sono diverse tecniche per farlo, come interviste al cliente (strutturate o meno per argomenti, in modo da pilotare il cliente a farci chiarire eventuali aspetti oscuri, registrando l’intervista), preparando questionari scritti mirati, osservando possibili utenti futuri del sistema e studiando il sistema preesistente, se c’è. E’ buona regola anche effettuare degli incontri periodici tra clienti e sviluppatori per fare il punto della situazione e rilevare eventuali percorsi errati intrapresi dal progetto. Il risultato di tutto finirà sui documenti che possono essere scritti con tre tecniche differenti, in ordine di completezza:
Questi tre punti affrontano il problema con approcci diversi, ma hanno delle caratteristiche comuni:
Elenco strutturato dei requisitiPresenta un elenco di caratteristiche, ognuna delle quali è dotata di un codice univoco che la identifica, un titolo ed una descrizione della funzione svolta all’interno del sistema. Scenari e casi d’usoUn caso d’uso rappresenta il modo in cui l’utente interagisce con il sistema in un determinato insieme di circostanze. La descrizione può essere narrativa, basata su modelli o schematica. Un caso d’uso rappresenta il software o il sistema dal punto di vista dell’utente finale. Il primo passo nella realizzazione di un caso d’uso consiste nel definire un insieme di ‘attori’ che saranno coinvolti nell’azione. Gli attori sono le varie persone (o dispositivi) che utilizzeranno il sistema o il prodotto nel contesto della funzione e il comportamento che deve essere descritto. Gli attori rappresentano i ruoli che le persone o i dispositivi giocano durante il funzionamento del sistema. Un attore è un elemento che comunica con il sistema o il prodotto e che è esterno al sistema stesso. Quindi un attore e un utente finale non sono necessariamente la stessa cosa. Un tipico utente può giocare vari ruoli nell’uso di un sistema, mentre un attore rappresenta una classe di entità esterne che giocano un unico ruolo nel contesto del caso d’uso. Poichè l’analisi dei requisiti è un’attività evolutiva, nella prima iterazione non vengono identificati tutti gli attori. E’ possibile identificare nella prima iterazione tutti gli attori principali e identificare gli attori secondari a mano a mano che aumenta la conoscenza del sistema. Uno scenario di utilizzo è un insieme di informazioni che descrivono, dal punto di vista dell’ utilizzatore, un utilizzo del sistema. Ci si può immaginare che uno scenario sia un racconto in cui un utente o un commerciale descrivono uno specifico insieme di funzionalità e modalità operative che vengono utilizzate per uno scopo definito e decorano il racconto con informazioni aggiuntive utili dal punto di vista del mercato come ad esempio l’importanza che attribuiscono a questo insieme di funzionalità o la disponibilit` a delle stesse all’interno dei prodotti della concorrenza. Uno scenario viene descritto in italiano, diagrammi di flusso dati, reti di Petri. . . La definizione di scenari e casi d’uso è utile quando è difficile creare un modello che simula la realtà. Inoltre a volte lo scenario non è ben definito, ad esempio quando il prodotto è destinato al mercato. Questo implica una difficoltà nell’integrazione tra scenari e casi d’uso. Modelli d’analisiIl modello per analizzare un problema è quello che fornisce una maggiore completezza. Si possono utilizzare diversi tipi di modelli:
Forme linguisticheLa specifica può essere prodotta utilizzato diverse forme linguistiche:
Sviluppando un prodotto non è possibile scegliere una forma linguistica migliore delle altre, mentre invece esistono tecniche più adatte di altre in particolari situazioni (Esempio: Schema E-R per strutturare dei dati, non una macchina a stati finiti). Il documento dei requisiti cosi prodotto, la specifica, sarà quindi caratterizzato dalla integrazione di queste tecniche. Non è possibile inoltre definire linguaggi formali migliori di quelli informali e viceversa. Bisogna essere coscenti del fatto che ci sono diverse persone coinvolte nel lavoro, con diversi punti di vista e dalle diverse competenze tecniche. Bisogna mirare al formalismo delle tecniche linguistiche garantendo ambiguità nulla e una comprensione completa da parte delle persone coinvolte. DocumentazioneL’analisi dei requisiti produrrà un documento, la specifica, che è un oggetto materiale, per esempio un documento di word, un file. Tutte le informazione ricavate durante l’analisi non vanno inserite in questo documento in modo disordinato, ma seguendo uno schema preciso, comprensibile, facile da leggere, contenente ovviamente tutte le informazioni ricavate dall’analisi, ma anche una serie di attributi ausiliari utili per gestire revisioni future del documento. Un documento per questi scopi normalmente ha un indice di questo tipo:
Modellazione e riuso della conoscenzaIl problemaIl problema del riuso della conoscenza consiste nel fatto in cui una volta che un prodotto è stato creato, magari partendo da zero, inevitabilmente l’esperienza maturata negli sviluppatori lascia un segno nel loro bagaglio tecnico. Questa conoscenza va riutilizzata per affrontare nuovi progetti, che potranno essere sviluppati con più efficacia se si fa tesoro dell’esperienza precedente. Un prodotto software risulta quindi essere un insieme di conoscenze relative ad un dominio applicativo, ad un processo, un businnes, ecc. che in qualche modo va riutilizzato. Ci sono diverse tecniche moderne per riutilizzare prodotti software, sviluppo di prodotti per integrazione con legacy e cots, ecc. Un esempio efficace, utilizzato nella pratica ormai da tempo (e non solo nell’informatica) è quello dei pattern. PatternIl pattern è uno schema che un’applicazione segue per risolvere un problema. Non è uno schema particolare relativo ad un certo problema, ma un’astrazione, un modello concettuale per risolvere vari casi. Infatti diversi problemi, per quanto abbiano domini applicativi diversi, hanno forme ricorrenti di base uguali e quindi possono essere affrontati tutti utilizzando una logica comune. Il cuore del concetto di riuso non risiede nello sfruttare la tecnologia precedente, ma nel capire il mercato e i processi dei clienti, in modo da scoprire la forma ricorrente su cui si basa il funzionamento. Analisi del dominio applicativoPer capire quale sia la forma ricorrente dietro un processo bisogna capirne il dominio applicativo. Per farlo, si deve raccogliere una serie di dati dello specifico settore. Dobbiamo identificare le caratteristiche, i requisiti ,le architetture comuni. Raccogliere una collezione di modelli che descrivono i processi di business dello specifico settore di interesse:
Prodotti dell’analisi di dominio:
Relazioni con le altre fasiRequisiti di sistema e requisiti softwareI requisiti di sistema e i requisiti software rappresentano la descrizione delle caratteristiche che un software e i componenti del sistema devono avere per poter interagire tra di loro, formando un sistema completo e funzionante. Infatti nella realtà succede che ci sono diversi componenti, tutti di natura altrettanto diversa, che devono interagire tra di loro. Bisogna definire allora l’architettura, cioè integrare e far interagire in maniera corretta i requisiti del sistema con tale organizzazione. Relazioni con la progettazioneUn’analisi dei requisiti per un prodotto di piccole dimensioni necessita di una breve analisi per poi passare più o meno facilmente alla sua implementazione. Di norma nella realtà, soprattutto per sistemi di grande dimensioni, si segue uno schema che prevede la progettazione architetturale del sistema, mentre in una fase successiva si analizzano aspetti più particolari, dando vita alla progettazione di dettaglio. Questo passo viene fatto per diversi motivi. Serve per stimare la dimensione di un progetto e poter cos`ı stabile i termini del contratto alla fine dell’analisi; serve anche per analizzare in dettaglio aspetti considerati più critici che necessitano più attenzione e uno studio più accurato. Studio di fattibilitàLo studio di fattibilità precede il processo di sviluppo. Si compone di vari punti
ValidazioneLa fase di validazione ha lo scopo principale di accertarsi che il lavoro svolto fino ad ora sia corretto. Validare un documento significa provare che si comporti come dovrebbe. Questo implica che ci sia un oggetto con la relativa descrizione, che dovrà essere validato. Validare una specifica risulta difficile per motivi quali:
della specifica che si è realizzata, assicurandosi di ciò che il prodotto finale sarà in grado di svolgere. In ogni caso è necessario gestire requisiti che contengono inconsistenze ed evolvono nel tempo Ci sono diversi metodi per accrescere la fiducia nei confronti di un prodotto:
EvoluzioneFin dall’inizio dell’analisi dei requisiti bisogna impostare lo studio tenendo bene in mente che il nostro prodotto sarà per forza di cose soggetto a dei cambiamenti. La storia insegna che i software di maggiore successo sono quelli che hanno saputo adattarsi hai cambiamenti. Un software di successo è esso stesso motore del cambiamento, gestire il cambiamento è una attività fondamentale dell’analisi dei requisiti. Sin dall’inizio del progetto bisogna pensare al cambiamento. Per cambiamenti si intende una serie di aspetti fondamentali:
La progettazione è il cuore del mestiere. Non esiste una vera tecnica che viene applicata, ma esistono una serie di strumenti messi a disposizione dell’ingegnere utili per produrre il documento di progetto. |