SOFTWARE ENGENEERING

Sviluppo di un prodotto software e relativa documentazione
Introduzione: Nei primi decenni di vita degli elaboratori il costo del hw era predominante su quello
del sw; a partire dagli anni anni ’70, con la nascita del microprocessore al silicio e del personal
computer, si è invertito il rapporto tra il costo dell’hardware e del software e ciò ha permesso di
mettere in opera una rivoluzione nelle tecniche di programmazione.
Quella della programmazione è stata considerata in un primo momento un’attività strettamente
individuale, legata alle capacità del singolo; a partire dagli anni ’70, in cui si assiste
all’abbattimento dei costi dell’hw grazie all’introduzione del microprocessore, è diventata una vera
e propria disciplina, per la quale sono state via via precisate specifiche metodologie allo scopo di
creare programmi confrontabili e di maggiore qualità.
Attualmente il software viene considerato un vero proprio prodotto industriale, motivo di sinergia,
ovvero un’unione di tante forze per crearne una maggiore.
Il termine software engineering sta proprio ad indicare l’analogia tra l’ingegneria classica e quella
del software che ha come obiettivi la qualità, l’affidabilità e la flessibilità. Attraverso questa
disciplina l’attenzione si sposta dalla fase di programmazione vera e propria (che era di bassa
qualità) alla fase preliminare, in cui il prodotto che si vuole ottenere è analizzato sotto tutti i punti di
vista, e successivamente è schematizzato in un primo progetto di massima che via via prende corpo
fino ad arrivare al disegno finito. Solo a questo punto si avvierà la fase di codifica/programmazione,
quando cioè si sarà sicuri della fattibilità del prodotto.
Accanto alla fase di progettazione che, come abbiamo detto, ricopre più interesse, viene affiancata
la documentazione puntuale e diversificata di tutte le fasi. Una documentazione precisa consente
di schematizzare le parti, di evidenziare le risorse disponibili, di precisare le tecniche che si sono
adottate, di fungere da supporto completo per una comunicazione proficua con tutte le figure,
utente, analista, programmatore ecc.., che concorrono alla realizzazione del software.
In ogni fase della software engineering si dovrà quindi predisporre una documentazione adeguata
all’utente a cui è destinata, dalla stesura di materiale riassuntivo sulla logica del progetto fino alla
produzione di manuali operativi per gli utenti finali, e l’esperienza ha dimostrato che quanto più
precisa sarà la documentazione di progetto tanto maggiore sarà la qualità di un prodotto e quindi la
sua vendibilità.
Vediamo quali sono le fasi in cui viene suddiviso il processo di sviluppo di un sistema. La
suddivisione che andremo a vedere contiene tre macrofasi:
 analisi,
 disegno
 implementazione
fasi, che a loro volta saranno composte da alcune fasi interne

1

tali da rendere fortemente intrecciato tutto il percorso. Noi ci riferiremo in particolare con il termine utente all’apparato direttivo di un’azienda. si passa alla sua progettazione concreta attraverso:  Il disegno dell’architettura complessiva del sistema. Il più delle volte ovviamente l’apparato direttivo dell’azienda non ha le competenze per creare un sistema e allora si rivolge ad un apparato interno o esterno all’azienda stessa. Dato questo sostanziale intreccio tra analisi e documentazione relativa andiamo a analizzare nuovamente ma in modo più dettagliato le macrofasi e le relative fasi interne. oppure è una amministrazione pubblica che intende meccanizzare i servizi anagrafici e di bilancio. In questa prima macrofase che viene gestita dagli analisti avremo le proposte nelle quali dovranno essere stabiliti costi. guadagni e tempi derivanti dalla costruzione del sistema. ad esempio la direzione aziendale potrebbe richiedere l’avvio dell’automazione di un particolare reparto. che ha gli strumenti per decidere e commissionare un progetto. ai mezzi finanziari e materiali disponibili. Individuata cioè l’esigenza servirà esplicitarle e verificarne le condizioni di realizzabilità. Questa macrofase si può suddividere ulteriormente in due:  Studio di fattibilità. 2). Prima fase: analisi del sistema Come detto prima. in un qualsiasi momento dell’analisi. vedi Fig. Inoltre in questi casi si verifica spesso che. al numero di persone coinvolte (vedi fig 1) nella sua realizzazione. nel quale si mettono a punto gli aspetti logici generali e i moduli principali di una possibile soluzione. comprendendo in questa voce sia tutte le modifiche necessarie per eventuali nuove esigenze dell’utente.. sono necessari ritorni e puntualizzazioni consistenti (sistema di controllo. nella quale si precisano le particolari funzioni che debbono essere soddisfatte e i limiti entro i quali si possono realizzare. nella quale si chiariscono le istanze dell’utente (ovvero della persona che intende risolvere un problema e intende farsi costruire un sistema di elaborazione)  Definizione delle specifiche funzionali. una esigenza che si ritiene risolvibile con l’elaboratore. output che materialmente si palesa sotto forma di documentazione specifica per ogni livello di indagine. delle relazioni gerarchiche tra moduli. delle operazioni di vendita ecc. sia eventuali estensioni compatibili con il progetto di partenza Queste sono le macrofasi più importanti da tenere presenti anche se il raffinamento del processo è strettamente legato alla complessità del problema. III fase: implementazione Questa ultima macrofase è la vera e propria programmazione e comprende:  La codifica vera e propria in un particolare linguaggio  Il controllo sulle funzionalità del programma mediante la produzione di test appositamente costruiti  La manutenzione. alla base dello sviluppo di un sistema c’è un problema da risolvere. II fase: disegno del sistema Nel momento in cui è chiara la natura del problema. inoltre si indicano le principali strutture di cui si farà uso  Il disegno di dettaglio nel quale si dettagliano in modo definitivo i singoli moduli attraverso l’indicazione puntuale di tutte le strutture di dati. (tutto ciò derivante dalla caratteristica del problema). La suddivisione riportata è comunque di grande utilità soprattutto per vedere l’output prodotto da ogni fase. Le persone a cui 2 . Abitualmente è l’utente che individua il problema.I fase: analisi Alla base della costruzione di un qualsiasi programma vi è un particolare problema elaborativo da risolvere. Questo particolare problema però dovrà essere analizzato prima di partire a scrivere il sw atto a risolverlo. degli algoritmi.

B. ma con tutti i reparti o uffici interessati all’uso del prodotto finito e con l’eventuale Centro Elaborazione Dati (CED) che si occuperà della gestione operativa del sistema. le capacità professionali del personale ecc. Attualmente. La prima. Per l’analista inoltre occorre non solo avere delle informazioni iniziali ma dovrà interloquire continuamente non solo con la direzione. hardware esistente o acquistabile. sulla base della quale sarà presa la decisione politica di avvio. Questo è molto importante in quanto non dobbiamo dimenticarci che l’analista è quasi sempre a digiuno delle conoscenze relative al problema che deve automatizzare. dei tempi di consegna e una pianificazione delle tappe di costruzione del software per dar modo all’utente di interagire con la SW HOUSE in corso d’opera Lo scopo principale di questa relazione è di dare all’utente gli strumenti per prendere la decisione politica di avvio dei lavori veri e propri. gli uffici a cui fare riferimento per avviare una ricerca dettagliata delle richieste. Questa fase prende in esame:  le richieste dell’utente  il contesto ambientale in cui verrà calato il prodotto finito (settore. la descrizione del sistema. dovrà quindi reperirle da coloro che le usano e che useranno in futuro il software.)  le risorse economiche messe a disposizione dalla direzione (che è il nostro l’utente)  un’indagine sui progetti software esistenti che risolvono in parte o completamente il problema. e quella che ci interessa maggiormente rivedere. Essa ha quindi ha un carattere prevalentemente descrittivo. schemi analitici sulle risorse fisiche disponibili 2. Sta scomparendo cioè lo commissione diretta tra azienda e analista. si verifica sempre più spesso che il problema nasca da indagini di mercato promosse da azienda produttrici esclusivamente di software e la domanda è definita in un rapporto diretto con il mercato. tenendo ben presenti limiti e vantaggi. Previsione dei costi complessivi.presenteranno il problema da risolvere e che quindi si occupano di questa prima macrofase si chiamano analisti. Alla fine della fase di fattibilità dovrà essere prodotta una relazione di fattibilità diretta alla direzione aziendale. Le informazioni preliminari quindi sono di varia natura e più sono precise ed esaustive tanto maggiore sarà la precisione con cui si potrà definire la fattibilità. con la diffusione del software di tipo end-user legato ai personal. ufficio……)  le risorse fisiche disponibili (personale dedicato al progetto. che serve per definire se il progetto è realizzabile o meno. rimane l’utente come destinatario finale del prodotto. Scompare quindi anche la figura dell’utente inteso come persona fisica che commissiona il progetto. 3 . gli scopi da realizzare e le relative funzioni per conseguirli. N. E’ questa la parte più sostanziosa e importante della relazione stessa 3. delle due fasi di questa macrofase è lo studio di fattibilità. Questa relazione è opportuno che contenga: 1.

il programmatore deve 4 . allora la fase di indagine preliminare e la documentazione prodotta potranno essere contenute. La documentazione in questa fase prevede i seguenti punti: 1. Viceversa se si tratta di definire un progetto che si dovrà utilizzare una volta sola o per un periodo limitato. affiancata da grafici e diagrammazioni aggiuntive ed esaustive delle relazioni tra le macroprocedure individuate. definendo una simbologia standard. il sistema è stato approvato dall’utente. Noi abbiamo comunemente usato il metodo top-down.. La definizione puntuale di tutte le specifiche degli archivi e delle strutture dati  Disegno di dettaglio: Attraverso il disegno di dettaglio l’analista produrrà in uscita il progetto dettagliato di tutti i moduli e per ciascuno di essi l’algoritmo che prevede la descrizione degli input e degli output. ovvero la relazione di fattibilità dovrà essere molto dettagliata. La compilazione del diagramma del sistema sw. ovviamente anche grazie a modifiche e aggiornamenti successivi. essendo il disegno di dettaglio l’articolazione fine del disegno di architettura. E’ opportuno utilizzare a questo scopo grafi e alberi.Se si ritiene che il processo dovrà avere una lunga vita. quindi tutta la fase di analisi per scegliere in via definitiva l’architettura del sistema da sviluppare tra le eventuali alternative possibili. in base ai suoi limiti. 2. dettagliata in ogni punto e pronta per la codifica. In questo caso la documentazione prevederà modelli prestampati simili a quelli della fase precedente nei quali però niente rimane imprecisato poiché tutto il materiale prodotto dovrà essere consegnato al programmatore per la successiva codifica.  Disegno dell’architettura: in questa prima fase l’analista prende in esame sia le specifiche funzionali individuate sia le condizioni di realizzabilità. Questa macrofase viene definita di disegno e dovrà avere come output l’architettura del prodotto. Seconda fase: disegno del sistema Una volta che il problema è stato analizzato. ovvero prende in esame sia il funzionigramma che la relazione sulla fattibilità. tempo ecc. Di norma infatti le figure di analista e di programmatore sono distinte. delle strutture dati locali e dei tipi di dati elementari. Le stesse competenze sono distinte: mentre l’analista deve possedere le tecniche del problema-solving e le conoscenze delle strutture hardware esistenti per mettere a punto un progetto dal nulla. allora la documentazione preliminare. si passa alla progettazione vera e propria. costi. Lo scopo della macrofase di analisi è quello di produrre tutte le indagini conoscitive necessarie per definire i requisiti del progetto e per mettere in grado l’utente di decidere circa la fattibilità del progetto. configurandosene a sua volta in molte parti come un ulteriore dettaglio. Anche il disegno di architettura risulta peraltro fortemente intrecciato con la definizione delle specifiche funzionali. Si può suddividere questa macrofase in due fasi ovvero quella di disegno dell’architettura e quella di disegno di dettaglio ma come si comprenderà facilmente tale suddivisione non risulta così netta.

elaborare un nuovo sistema è più oneroso che aggiornare o modificare quello esistente. atta a rispondere a tutte quelle questioni che possono nascere nel momento in cui si sta eseguendo il lavoro su di un segmento di programma. diagramma a blocchi) di tutti i moduli di programma e delle interfacce utente. attraverso dei grafici e dei diagrammi già prodotti all’atto della progettazione del software 2. quindi conviene creare dei software di buona qualità anche se ciò comporta maggiori costi iniziali per poter ottenere programmi più leggibili e quindi più facilmente modificabili. successivamente hanno assunto la forma dell’help in linea. Inoltre. Lo scopo quindi di tutta la fase di disegno è quello di produrre il progetto completo dell’architettura del sistema e delle strutture dati utilizzate per giungere al disegno di dettaglio (es. La regola fondamentale per la produzione di manuali comunque è che occorre ricordarsi durante la stesura occorre tenere presente la funzione che deve illustrare e la figura professionale a cui è rivolto. debug e manutenzione. 2. Il manuale d’uso invece deve rendere possibile l’utilizzo autonomo e interattivo da parte dell’utente I vecchi manuali d’uso erano cartacei. documentazione utente (manuale d’uso) I manuali per l’installazione (documentazione tecnica) sono rivolti al personale tecnico che si occuperà dell’installazione del prodotto (sia esso dipendente della casa di SW o dipendente del cliente): 1. Documentazione operativa Per documentazione operativa intendiamo due tipi di documentazione: 1.conoscere e saper far uso di tutte le potenzialità di un linguaggio di programmazione per ottenere la soluzione ultima più elegante ed efficiente. risparmiando nella fase di manutenzione. Non tutte le figure possiedono le stesse conoscenze quindi è preferibile creare più manuali per figure con capacità e conoscenze diverse piuttosto di tentare di conciliare due esigenze di 5 . Nella vita di un prodotto software potrà essere necessario  rivedere alcune parti del progetto implementare nuove funzioni su richiesta dell’utente oppure  intervenire per malfunzionamenti interni del prodotto sw In entrambi questi casi si parla di manutenzione. Terza fase: implementazione La macrofase di implementazione è costituita da tre fasi: codifica. di effettuare il controllo di qualità e di rendere operante l’installazione Il debug avviene con test modulari (sui sottoprogrammi) e con test di sistema. 4. Descrizione delle procedure periodiche di copia e manutenzione dei dati: copie di back up e creazione di archivi storici. Il flusso completo del sistema e la sua suddivisione in moduli. In questi ultimi anni in particolare si è consolidata una sorta di help in linea interna al programma stesso o attraverso dei messaggi interni o attraverso prodotti software di autoaggiornamento sul sistema. documentazione tecnica (di installazione). Anche in questo caso il linguaggio deve essere adeguato all’utente che si suppone non abbia conoscenze di elaborazione automatica. Il lavoro di manutenzione viene inserito per ultimo perché è una fase temporalmente successiva alle precedenti. Lo scopo quindi della fase di implementazione è quello di produrre in un linguaggio evoluto il prodotto finito. diminuendo notevolmente la possibilità di errori o riducendoli unicamente a quelli di tipo manuale. Elenco dettagliato delle segnalazioni di errore durante l’utilizzo del sistema e indicazioni corrispondenti degli interventi necessari per ripristinare l’attività. La descrizione dettagliata del data base utilizzato e dei tracciati record coinvolti 3. I messaggi interni al programma sarebbero i menu che obbligano l’operatore all’esecuzione dei flussi logici strettamente connessi alla funzione da eseguire.

1 Secondo le statistiche è possibile affermare che la distribuzione ottimale delle risorse umane in un progetto software prevede un numero minore di risorse nella fase di analisi e un numero maggiore nella fase di implementazione. le specifiche di formato degli input e degli output Per finire possiamo affermare che se un manuale risulta valido vorrà dire che non saranno necessari chiarimenti sul suo utilizzo da parte del CED ma sarà possibile per l’utente utilizzarlo usufruendo semplicemente del manuale stesso. Questo permette di abbattere significatamene il fabbisogno di risorse nella fase di manutenzione e quindi di abbattere i costi di manutenzione. Il sistema di controllo durante lo svolgimento del processo I sistemi di controllo di avanzamento di prodotto sw prevedono vari modelli. A parte questa regola non ci sono delle vere e proprie teorie per la stesura dei manuali in quanto essi con l’introduzione di questi help in linea sono in continuo mutamento. come ad esempio il flusso schematico del programma.comunicazione che sono inconciliabili. Resta comunque la necessità di documentare in forma scritta alcune parti. Distribuzione delle risorse umane durante lo svolgimento del progetto F i g . uno di questi è il modello a cascata nel quale è prevista una verifica alla fine di ogni fase del processo 6 .

7 .