Software Engineering

Martino Bonacossa

(Programmatore, Developer, Coderin ambito PLC/DCS/HMI e PC)

Analista e Programmatore Software

Sono un Programmatore software senior, in grado di seguire lo sviluppo dell’automazione dell’impianto, a partire dalle richieste del cliente, fino al commissioning.

Le fasi attraverso cui mi muovo, sono le seguenti:

  1. Definizione del problema
  2. Sviluppo dei prerequisiti
  3. Pianificazione della realizzazione
  4. Architettura del software, o disegno ad alto livello
  5. Disegno di dettaglio
  6. Codifica e debugging
  7. Manutenzione correttiva

 

Fase 1: per definizione del problema intendo, sia tutto ciò che concerne lo sviluppo di un nuovo software, sia tutto ciò che riguarda la correzione di un software già esistente.

Fase 2: i prerequisiti descrivono in dettaglio, ciò che dovrebbe fare un sistema software, e rappresentano il primo passo verso una soluzione. I prerequisiti sono come l’acqua, è più semplice costruirci su, quando sono congelati.

Fase 3: sono dell’idea che un progetto ben pianificato migliori la propria capacità di modificare in seguito le proprie opinioni sui dettagli. Maggiore è l’esperienza che si ha con il tipo di software che si sta realizzando, maggiore è il numero di dettagli che si può dare per scontato. Il fine è di essere certo di pianificare a sufficienza, in modo che una mancata pianificazione, non crei in seguito maggiori problemi.

Fase 4: sarebbe più opportuno utilizzare il verbo “edificare il software”, piuttosto che “scrivere il software”. In effetti molti termini comuni del software, derivano dalla metafora dell’edificio.

Fase 5: curo molto il design, in quanto ritengo sia necessario in diversi livelli differenti di dettaglio all’interno di un sistema software. Applico alcune tecniche di design in tutti i livelli, ed altre solo in uno o due livelli.

Livello uno: il sistema software. Il primo livello è l’intero sistema.

Livello due: suddivisione di sottosistemi o package. A questo livello, il prodotto principale del design è l’identificazione di tutti i principali sottosistemi.

Livello tre: suddivisione in classi. Il design a questo livello comprende l’identificazione di tutte le classi del sistema.

Livello quattro: suddivisione in routine. Il design a questo livello consiste nel suddividere ciascuna classe in routine.

Livello cinque: design intrinseco delle routine. Il design a livello di routine, consiste nel definire le funzionalità dettagliate delle singole routine.

Fase 6: agli albori del calcolo, i programmatori concepivano la programmazione in termini di istruzione.

Nel corso degli anni settanta/ottanta, i programmatori, iniziarono a concepire i programmi in termini di routine.

Nel ventunesimo secolo, i programmatori, concepiscono la programmazione, in termini di classi.

Ritengo che un buon software, debba avere le seguenti caratteristiche: correttezza, usabilità, efficienza, affidabilità, integrità, adattabilità, accuratezza, robustezza.

Il debugging, andrebbe visto, come il processo di identificazione delle cause di un errore e della relativa correzione, quindi la naturale maniera per diagnosticare i difetti. Non è un modo per migliorare la qualità del software.

È mia abitudine implementare la qualità del software sin dall’inizio.

Fase 7: durante questa fase, che di norma avviene dopo un periodo di funzionamento di un sistema, mi rendo personalmente disponibile, a correggere i problemi emersi.

 

Per maggiori informazioni compilare il form nella pagina “Contatti“.