Introduzione
Lo sviluppo del software è una attività ancora molto giovane, poco più di cinquanta anni alle spalle; nonostante ciò ha un impatto sempre più grande in molti settori quali industria, istruzione, pubblica amministrazione, medicina, ecc.
La disciplina che si occupa dello studio di tecniche e procedure dello sviluppo del software è l’ingegneria del software.
L’insieme delle attività che devono essere svolte per sviluppare un sistema software è detto processo software ed il modo in cui vengono organizzate prende il nome di ciclo di vita del software. Quest’ ultimo si è evoluto nel tempo seguendo, da prima un modello sequenziale, poi un modello iterativo, metodi agili e processo unificato, con l’intento di rendere sempre più partecipe il committente nelle attività di sviluppo in modo che lo stesso ne risulti soddisfatto (requisito fondamentale per il successo del progetto).
La crescita delle imprese di produzione del software, nell’ultimo decennio, ha aumentato la concorrenza in questo settore e per essere più competitivi si cerca di puntare alla qualità, che deve essere in qualche modo riconosciuta e certificata. A tale scopo esistono enti, norme e standard a cui i committenti, le imprese, gli sviluppatori possono fare riferimento.
Il panorama informatico mondiale è sempre più pervaso dall'approccio di sviluppo object-oriented (OO, iniziato alla fine degli anni ‘80) e per componenti; inoltre si hanno a disposizione tecnologie sempre più avanzate; ciò comporta uno sviluppo di sistemi sempre più complessi ed in cui partecipano vari esperti.
Anche nel campo dell’automazione si è diffuso l’approccio OO ed è sempre più comune la situazione in cui risorse di calcolo, controllo, attuazione, monitoraggio sono distribuite nella macchina, nell’impianto e nell’industria.
In questa nuova ottica cambiano anche le modalità con le quali i progettisti devono affrontare il problema di far interagire in un solo sistema diverse soluzioni tecnologiche e diversi tipi di competenze.
Affrontare problemi complessi, significa avere a che fare con una disparata varietà di persone che hanno distinti interessi e livelli di coinvolgimento nel progetto, inoltre parlano con termini di linguaggio diverso: i committenti puntano alla funzionalità del prodotto e parleranno in termini di scopi e limiti di tempo, nonché in termini economici; i
programmatori parlano in termini di linee di codice e puntano alla modularità e la semplicità di implementazione.
Per sistemi complessi il 75-90% di tempo è speso nella comunicazione, la quale non avviene più faccia a faccia, ma a causa della dislocazione geografica e la varietà di persone coinvolte, avviene con le nuove tecnologie delle telecomunicazioni e dell’informatica, creando team virtuali.
Diventano fondamentali per la riuscita del progetto, e quindi per il soddisfacimento del cliente, una buona comunicazione tra i diversi partecipanti allo sviluppo del software e una buona attività di modellazione, di specifica e di documentazione.
Uno strumento che aiuta lo sviluppatore software a soddisfare questi requisiti è l’UML, Unified-Modeling Language.
Scopo della tesi è quello di mostrare come lo strumento UML e le sue estensioni risultino essere un valido supporto per sviluppare un software di automazione di qualità consentendo di affrontare i vari problemi e le varie soluzioni documentandole e favorendo la comunicazione tra le persone coinvolte.