• processo-sviluppo-software

    Il processo di sviluppo del software

    In questo articolo faremo una panoramica del processo di sviluppo del software. In particolare vedremo che cos’è un processo di sviluppo software, che cosa sono le attività strutturali di un processo di sviluppo software e quali quelle secondarie (le umbrella activities).

    L’ingegneria del software: definizione

    Secondo la definizione fornita da Wikipedia, con il termine ingegneria del software (software engineering in inglese) ci si riferisce a “quella disciplina che si occupa dei processi produttivi e delle metodologie di sviluppo finalizzate alla realizzazione di sistemi software”.

     

    Ingegneria-del-software

     

    L’ingegneria del software, quindi, si propone una serie di obiettivi legati all’evoluzione dello sviluppo del software (inteso come attività industriale) sia da un punto di vista tecnologico (per esempio attraverso la definizione di nuovi linguaggi di programmazione) che metodologico (per esempio il perfezionamento dei modelli di ciclo di vita del software).

    L’ente IEEE (Institute of Electrical and Electronic Engineers) con il termine ingegneria del software intende “l’applicazione di una strategia sistematica, disciplinata e misurabile allo sviluppo, esercizio e manutenzione del software”.

    L’ingegneria del software: una tecnologia stratificata

    L’ingegneria del software è una tecnologia stratificata.

    strati-ingegneria-software

    La base di qualunque strategia ingegneristica, quindi anche quella del processo di sviluppo del software, è l’attenzione alla qualità. Le strategia di “qualità totale” o “Six Sigma” alimentano la cultura di miglioramento progressivo del prodotto, che a sua volta consente lo sviluppo di strategie sempre più mature per l’ingegneria del software. Sulla base dell’impegno aziendale per la qualità poggiano gli altri strati dell’ingegneria del software.

    Lo strato di processo tiene insieme i livelli tecnologici e consente lo sviluppo razionale e tempestivo del software. Questo strato è la base del controllo di gestione dei progetti software ed rappresenta la base in cui si applicano i metodi tecnici, in cui si creano prodotti intermedi (modelli, documenti, etc …), si stabiliscono le milestone, si garantisce la qualità del prodotto.  I metodi dell’ingegneria del software forniscono le modalità tecniche per la costruzione di software. I metodi includono diverse attività come l’analisi dei requisiti, la progettazione, la costruzione del programma, il test e il supporto. Infine gli strumenti forniscono un supporto automatizzato o semi-automatizzato per il processo e per i metodi. Gli strumenti sono integrati in modo che le informazioni create da uno strumento possano essere utilizzate da altri.

    Il processo e sua struttura

    I processi di sviluppo software sono un insieme di attività che hanno l’obiettivo di produrre software di qualità. Il processo definisce una struttura per un insieme di aree di processo chiave (Key Process Areas) che devono essere stabilite per un’efficace rilascio del prodotto e il modo in cui si svilupperà il progetto.

    La struttura di un processo stabilisce le basi di un processo di sviluppo software, identificando un piccolo numero di attività strutturali applicabili a tutti i progetti software, indipendentemente dalle loro dimensioni o dalla loro complessità. Le attività strutturali tipiche comuni a tutti i modelli di processo sono:

    attivita-processo

     

    • Communications (Comunicazioni): riguarda le comunicazioni e la collaborazione con il cliente/stakeholder, e include la raccolta dei requisiti e altre attività correlate.
    • Planning (Pianificazione): stabilisce un piano per il successivo lavoro di ingegneria del software. Descrive le operazioni da svolgere, i rischi del progetto, le risorse necessarie, i prodotti da realizzare e una pianificazione del lavoro.
    • Modelling (Modellazione): include la creazione di modelli che consentono allo sviluppatore e al cliente di comprendere meglio i requisiti software e progettuali. Si divide in due sotto-attività:
      • Analysis of requirements (Analisi dei requisiti): raccolta, elaborazione, negoziazione, specifica e convalida dei requisiti che conducono alla creazione del modello analitico e/o alla specifica dei requisiti.
      • Design (Progettazione): comprende la progettazione dei dati, la progettazione dell’architettura, la progettazione dell’interfaccia, la progettazione dei componenti. Viene creato un modello progettuale e/o una specifica del progetto.
    • Construction (Costruzione): questa attività può essere distinta in
      • Code generation (stesura codice): lo sviluppo vero e proprio del codice;
      •  Testing (collaudo): le attività di test che hanno lo scopo di individuare e correggere gli errori.
    • Deployment (Rilascio): il software viene consegnato al cliente, che valuta il prodotto.

    Esistono inoltre delle umbrella activities (attività ombrello), cioè delle attività secondarie non strettamente legate alla fase produttiva del processo, ma che aiutano al raggiungimento dell’obiettivo. Ogni azione dell’ingegneria del software è rappresentata da alcuni insiemi di attività, costituiti da attività di lavoro di ingegneria del software, con riferimento ai prodotti, ai punti di valutazione della qualità e alle scadenze dei progetti.

    attivita-ombrello

    Le attività ombrello tipiche sono:

    1. tracciamento e controllo del progetto: è un processo duplice, che consente al team di sviluppo di monitorare gli avanzamenti rispetto al planning e di intraprendere le eventuali azioni necessarie per rientrare nei tempi programmati;
    2. uso di tecniche formali: valutano i prodotti elaborati dall’ingegneria del software nel tentativo di eliminare gli errori prima che si propaghino all’azione o all’attività seguente;
    3. qualità del software: definisce e conduce le attività necessarie per garantire la qualità del prodotto;
    4. gestione della configurazione del software: è un’attività di tracciamento e controllo degli effetti delle modifiche tramite un processo di sviluppo software;
    5. preparazione dei documenti e produzione del prodotto: comprende tutte le attività necessarie per creare prodotti come modelli, documenti, registri, moduli ed elenchi;
    6. gestione del riuso: definisce i criteri per il riutilizzo del prodotto realizzato (compresi i componenti software) e stabilisce i meccanismi per la creazione di elementi riutilizzabili;
    7. misurazioni: comprende tutte le misure di ogni aspetto del progetto software;
    8. analisi dei rischi: esamina i rischi che possono influenzare il risultato del progetto e/o la qualità del prodotto;

     

    attivita-ombrello

     

    I modelli di processo utilizzati negli ultimi decenni si sono concentrati sulla definizione, identificazione e applicazione dettagliata delle attività e dei compiti del processo. L’obiettivo è migliorare la qualità del prodotto, rendere più semplice la gestione dei progetti, aiutare i team a svolgere al meglio le proprie attività; tuttavia non sempre questi strumenti aiutano a raggiungere l’obiettivo, anzi spesso appesantiscono il progetto introducendo più burocrazia. Per questo motivo sono nate delle metodologie che pongono il focus sull’agilità del progetto e utilizzano dei principi che rendo l’approccio meno formale, senza perdere di efficacia. In un articolo dal titolo “Modelli a processo prescrittivo” affronteremo i tradizionali modelli di processo prescrittivi e in un altro dal titolo “Sviluppo agile” i modelli di processo agile.

     

    Giulio Cantali – IT Consultant

    Creatore di Database Master, il primo percorso per diventare esperti di database

Lascia un commento

Se vuoi condividere la tua opinione, lascia un commento

Puoi usare questi tag e attributi: HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">