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:
- Definizione del problema
- Sviluppo dei prerequisiti
- Pianificazione della realizzazione
- Architettura del software, o disegno ad alto livello
- Disegno di dettaglio
- Codifica e debugging
- 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“.