MASTERCLASS di (NON) programmazione software C/C++
EMBEDDED & REALTIME

Il 1° Corso di (NON) programmazione: non solo le basi della scrittura del codice, ma soprattutto le Best-Practises, gli errori più comuni, la scelta della piattaforma, la gestione del real-time e dell’embedded e tutti gli altri aspetti più critici

Programmazione per: Sistemi Embedded, Real-Time, IoT (internet of Things), Microcontrollori, App mobili

RICHIEDI SENZA IMPEGNO il programma dettagliato del corso ed ulteriori informazioni

 

Ciao, mi presento: sono Massimo Bombino, e mi occupo dello Sviluppo di Software ad Alta Qualità da 30 anni, in particolare mi sono dedicato negli ultimi 20 anni al Software soggetto alla Certificazione Safety-Critical per il Settore Avionico e Aerospaziale, il settore più rigido e impegnativo ma anche quello dove ho imparato di più in assoluto su come impostare un processo di sviluppo software che sia veramente affidabile.

 

Ho lavorato (e lavoro tuttora) con aziende del calibro di: Ferrari Automobili, AUDI TTTech, Boeing, Airbus, Leonardo Finmeccanica, Aermacchi, Agusta Westland, Nortrhop Grumman, Piaggio Aerospace, Thales Alenia Space, Honeywell, Telespazio, Ansaldo, Hitachi, Datalogic, AUTEC Safety, Electrolux, Transenterix, Boston Scientific, STIGA, Tecnodal, Brusa e tantissime altre, aiutandole a ottimizzare il loro Ciclo di Sviluppo Software, identificare prima gli errori tramite la Modellazione e la Simulazione, migliorare la Strategia di Test, raggiungere prima la Certificazione.


I NOSTRI CLIENTI

PER CHI è QUESTO CORSO?

Un corso quindi intensivo ed essenzialmente per PROGRAMMATORI E ARCHITETTI SOFTWARE o aspiranti tali: può essere tranquillamente il tuo primo corso di programmazione, senza saperne nulla prima. 

Magari fosse stato il mio primo corso! Quante notti insonni, quante incazzature, quante problematiche avrei evitato…

Ma contiene così tanti concetti avanzati e poco insegnati, frutto della mia esperienza personale che oramai supera e di molto i 30 anni (sì, ho iniziato a programmare il BASIC e il PASCAL tipo a… 12-13 anni!) in centinaia di progetti e di clienti in tutto il mondo, dal gestionale all’aerospaziale, che tutto quel che ho appreso e concentrato in questo può essere di grandissima utilità anche a chi ha magari un sacco di anni di esperienza…. perché ti potrebbe evitare le testate contro il muro prese da me e dai miei colleghi e partner in questi anni in ambienti estremamente severi e critici.

E’ anche un corso per MANAGER: al di là degli aspetti tecnici di dettaglio, è un compendio di best practises, consigli strategici, impostazioni iniziali corrette ed errori da evitare. Come capirai continuando a leggere, grazie al distillato di esperienza personale nelle aziende e progetti in cui ho lavorato da dipendente, consulente e formatore, non è solamente un classico corso di programmazione, è una vera e propria guida strategica alla progettazione e scrittura di Software Sicuro. Per cui è fondamentale che siano concetti che padroneggi anche tu, per poterli implementare con il tuo team.

perche' un altro corso?

Ma se già programmi da tempo, perché mai dovresti rifare un corso di programmazione dopo anni dall’ultima volta che ne hai fatto uno?

 

Semplice: perché questo è il corso che avrei voluto fare io all’inizio della mia carriera ma non esisteva (e non esisteva fino ad ora!), invece di quello che “passava il convento”: 

 

– manuali strettamente tecnici e didascalici

 

– corsi strutturati come un mero elenco di costrutti, strutture e dichiarazioni… 

 

– prove su prove su prove, errori inspiegabili, crash disastrosi

 

– rifacimento di intere applicazioni e architetture per colli di bottiglia e problemi strutturali

 

– notti insonni, straordinari al lavoro, ritardi, problemi col cliente…

 

Oltre ad essere un corso tecnico, molto intenso e fitto di informazioni, è fondamentalmente un corso strategico: ti insegna il mindset corretto, l’impostazione iniziale, le scelte chiave, l’approccio necessario ad evitare grossi guai futuri.

 

Non sto a ripetere la frase del grandissimo Michael Jordan, di cui è uscito di recente il film a puntate “The Last Dance” su fatto che lui stesso, per diventare il più grande, ha imparato dai propri errori.

 

Quello che otterrai in questo corso senza respiro è proprio l’elenco delle cazzate meravigliose che ho commesso io (o visto commettere), delle scelte in apparenza intelligenti e poi rivelatesi disastrose, di tutti i “mai più!” che ho dovuto esclamare nella mia carriera e di conseguenza tutto quello che avrei dovuto fare (ed è il caso che cominci almeno a fare TU).

cos'ha di diverso questo corso?

La differenza di questo rispetto ad altri N-mila corso esistenti al mondo, è proprio il fatto che è PREVENTIVO: non ti spiega all’inizio una serie di tecniche in fila, tra cui alcune estremamente pericolose e inefficienti, per poi scoprire solo dopo mesi o anni (se va bene in un corso avanzato, più spesso sulle tue spalle le conseguenze disastrose di certe scelte).

 

Ci sono cose nei linguaggi storici e moderni che sono estremamente rischiose e vanno usate con estrema cautela: perché allora insegnarle? Perché imparare a fare la nitroglicerina in casa, quando rischi di saltare in aria te, la tua casa, la tua famiglia e tutto il vicinato?

 

Fin da primo giorno, scoprirai non solo i dettagli tecnici, ma anche e soprattutto:

 

– Le scelte strategiche che devi fare prima di scrivere la prima linea di codice (linguaggio, sistema operativo, microprocessore, architettura, …)

 

– I compromessi e le conseguenze di certe decisioni di base che si ripercuoteranno in futuro

 

– Quali tecniche, costrutti, tecnicismi sono sicuri e affidabili e quali invece richiedono cautela e pianificazione, o sono da evitare del tutto

 

– Quali sono le Best-Practises, le linee guida, gli standard internazionali per lo sviluppo di Software più sicuri e affidabile

 

– Come evitare le sirene del marketing di tool e altre diavolerie che ti fanno andare fuori strada promettendo risultati irraggiungibili

 

– Gli errori più comuni, i trabocchetti, gli effetti collaterali da evitare a tutti i costi

 

Senza tutte queste informazioni fondamentali a completamento delle nozioni tecniche, sarebbe come insegnarti a cosa serve ogni singolo bottone, leva e manovella di un jet di linea, senza avere comunque la minima idea di cosa voglia dire pilotare un aereo.

 

che applicazioni potrai sviluppare dopo questo corso?

Che tipo di applicazioni potrai sviluppare dopo un corso del genere? 

Serve per fare app per telefonino o un software aeronautico questione di vita o di morte? 

Meglio per programmare un gestionale oppure un delicatissimo dispositivo medicale?

 

Questo è un modulo formativo ESSENTIALS: quindi pur essendo ad altissima densità di informazioni rimane comunque un corso base, non è dedicato a un dominio specifico, un linguaggio preciso, un’architettura particolare. Non fa moltissima differenza se sviluppi app per telefonini, dispositivi embedded (a partire da ARDUINO, RASPBERRY ecc. fino a microcontrollori più sofisticati), sistemi gestionali

 

I principi di base dello Sviluppo di Software Sicuro sono ESATTAMENTE GLI STESSI e vanno solo calati nella realtà tecnica in cui operi.

 

Per questo motivo, si tratta di un corso che ti potrebbe rendere già autonomo ed essere in grado di programmare quello che vuoi, ma richiede poi degli approfondimenti specifici, più tecnici e di dettaglio, che sarò lieto di suggerirti.

 

Detto questo, posso consigliarti questo corso se ricadi in uno di questi casi:

 

– Se sviluppi applicazioni che devono avere un alto grado di affidabilità e sicurezza (es. che trattano dati sensibili, transazioni economiche, oppure con tantissimi utenti)

 

– Se lavori in un settore Safety-Critical dove la sicurezza non è un optional (aerospazio, medicale, automotive, …)

 

– Se vuoi in generale incrementare l’Affidabilità e l’Efficienza del tuo processo di Sviluppo Software

 

– Infine, se lavori in maniera totalmente dedicata al Cliente per cui vuoi fornire un Software che massimizzi la Customer Satisfaction

 

Con questo bagaglio culturale immenso, condensato fitto fitto in una manciata di moduli di formazione, ti renderà già un programmatore evoluto e con un livello di esperienza e di padronanza della programmazione software che nessun altro corso “teorico” potrebbe mai darti

QUALI SARANNO GLI ARGOMENTI TRATTATI?

Per finire, quali saranno gli argomenti trattati durante queste 12 lezioni?

Presto detto, ecco qua:

  • Scelta del Linguaggio (C, C++… cos’altro?)
  • Scelta del Sistema Operativo (Bareboard, sistema operativo commerciale, realtime… scheduler su misura?)
  • Scelta del Microprocessore e del Compilatore (Tra le infinite famiglie esistenti dei vari vendor)
  • Processo (Quale approccio scegliere al ciclo di vita di sviluppo? AGILE? DevOps? Lean Development? V-Cycle?)
  • Requisiti (La sorgente di tutto, l’argomento più importante del corso)
  • La scelta dell’Architettura (Quali pattern? Che design? Architettura distribuita, master-slave, IoT, cloud…)
  • Stile di programmazione (Linee-guida, costrutti permessi e vietati, standard come MISRA, JSF, JPL e altre Best-Practises)
  • Dichiarazioni delle variabili (Variabili, tipi, template, strutture, classi e gli altri costrutti di base
  • Allocazione della memoria (Tecniche, strategie, pattern per la gestione della memoria, soprattutto in caso di dispositivi limitati
  • Controllo del flusso (Dal classico IF-THEN-ELSE, ai vari tipi di LOOP, fino a quello che di più recente offrono i linguaggi)
  • Real-time (CONCORRENZA, MONITOR, SEMAFORI, ecc. e relative problematiche di RACE CONDITION, DEADLOCK e altre problematiche del real-time
  • Comunicazione tra moduli (IPC, code di messaggi, CORBA e tutti i protocolli e metodi di comunicazione interna ed esterna)
  • Defensive Programming (Prevenzione dei problemi: le tecniche, le strategie, le linee guida, le best-practises per prepararsi e proteggersi dai problemi)
  • Tools (tutto quello che serve per accompagnare la programmazione: Configurattion Management, Testing, Bug Tracking ecc.)
  • Security (Le problematiche dei dispositivi al contatto con il mondo esterno, come sta succedendo sempre di più nel mondo IoT)
  • Testing (Unit Testing, Integration Testing, System Testing, Continuous Testing e loro declinazioni)
  • Modellazione & Simulazione (I linguaggi e i tool per la modellazione, simulazione dei processi e la generazione di codice)
  • Certificazione (Se sviluppi per ambienti Safety-Critical (Avionica, Automotive, Ferroviario, Medicale, ecc.) sei costretto a sottostare ad una serie di regole e di processi di certificazione obbligatori)

Come puoi vedere, NULLA è lasciato al caso… qui c’è veramente tutto quello che ti serve per padroneggiare perfettamente il complesso mondo della Programmazione Embedded & Realtime.

TESTIMONIANZE

5/5

“Ci sono buoni corsi di programmazione software, che consentono allo studente di essere più intelligente dopo lo studio rispetto a prima. Ci sono grandi libri, che permettono al lettore di essere più intelligente, mentre insegnano simultaneamente le migliori strategie per colmare le lacune di conoscenza.

Il corso di Massimo è fantastico in quanto spiega sia il mondo del software critico, sia le intuizioni per risolvere molti aspetti legati alla qualità del codice, oggi sempre più importanti.

Max ha fatto un lavoro magistrale nel rendere interessante e divertente un argomento normalmente complesso e noioso. Ci mostra in questo corso come capire meglio il regno dello sviluppo del software Embedded & Realtime e come applicare queste conoscenze nel mondo reale.

Io e Massimo abbiamo entrambi commesso degli errori tecnici sostanziali nei nostri decenni combinati di sviluppo di software e sistemi critici per la sicurezza:

con questo libro, tu puoi prevenire gli stessi errori e

capire al meglio come evitare di aggiungerne di altri”

https://media-exp1.licdn.com/dms/image/C4D03AQFpBgDMNFn45Q/profile-displayphoto-shrink_200_200/0?e=1602720000&v=beta&t=0fp7eT067T-lxvouoKweS-uZPyN0ouMCqycLA8vPTjw Vance Hilderman – CEO di AFuzion, guru della Certificazione Avionica

 

 

“Il software è tradizionalmente progettato, codificato, quindi testato.

Tuttavia, una codifica di scarsa qualità e una fase di test effettuata solamente alla fine del processo, possono aggiungere una quantità significativa di tempo e di rischio a un progetto, rendendo probabile che gli sviluppatori lavorino con software di scarsa qualità, causando ulteriori ritardi man mano che vengono rilevati più problemi. La strategia ideale consiste nell’avere un processo che supporti il test il più presto possibile nel ciclo di vita dello sviluppo e che consenta di apportare modifiche rapidamente.

La Continuous Integration si concentra sulla capacità di creare e testare un’applicazione ogni volta che un cambiamento viene effettuato. I test manuali funzionano bene con una piccola base di codice, ma con il software sempre più al centro di tanti prodotti, questo processo deve essere automatizzato per far fronte alla sfida impari. Risolvere il problema della qualità del software e del time-to-market è una lotta quotidiana, ma la Continuous Integration aiuta gli sviluppatori e gli ingegneri a risolvere questi problemi.

Mettendo in atto un motore di integrazione continua, è possibile testare prima nel processo software (spostandosi a sinistra del V-Cycle), consentendo quindi una migliore qualità del software, un time-to-market ridotto e una solida base di codice per il futuro.

Massimo, in questo corso, ci mostra come applicare concetti come la Continuous Integration,  DevOps, il Change-Based Testing in un modo che sia accessibile anche alle piccole e medie imprese, con un fattore di rendimento 100 volte superiore rispetto ad altri approcci, senza alcun sacrificio per la qualità, anzi migliorandola di pari passo”.

https://media-exp1.licdn.com/dms/image/C5603AQHQC8l5fNnVlA/profile-displayphoto-shrink_200_200/0?e=1602720000&v=beta&t=aWzOAQjcB3Uc6sGsvSMV2uwxA8RSHjlugM3X1WwdpjU Niroshan Rajadurai – Global Advanced Security Sales at GitHub, Software Factory Evangelist

RICHIEDI SENZA IMPEGNO il programma dettagliato del corso ed ulteriori informazioni

l'offerta per te

 Struttura: 12 moduli online, da 3 ore circa ciascuno, bi-settimanali, interattivi tramite webinar ad accesso individuale (webcam richiesta).

Costo: 1.600€ a singola persona (webinar interattivo con webcam obbligatoria).

L’offerta che vorrei farti in anteprima è questa ma solo fino al 31/12/2021

€ 1.500

primo studente

€ 970

dal secondo studente

 

I prezzi sono da intendersi IVA esclusa.

L’offerta è valida solamente fino al 31/12/2021 per ordine e pagamento anticipato, dal 15/01/2022 faremo dei prezzi per il pubblico più alti, per cui se sei interessato ti consiglio di approfittarne e di contattarmi immediatamente per un’offerta formale.

RICHIEDI SENZA IMPEGNO il programma dettagliato del corso ed ulteriori informazioni

massimo bombino

Mi chiamo Massimo Bombino e lavoro da oltre 25 anni nel settore dello sviluppo software e ho avuto modo di ricoprire una lunga serie di ruoli legati al ciclo di vita del software, in vari ambiti (da sviluppatore a manager, dalla modellazione al testing, da dipendente a libero professionista, dal software gestionale a quello aerospaziale, dall’ambiente safety-critical a quello business-critical).

Ho tenuto decine di corsi di programmazione, design, Certificazione Aerospaziale e Industriale. Insomma, un vero e proprio Tecnocrate.


Per anni sono stato costretto a combattere contro tutti i problemi correlati allo sviluppo del software: ritardi, incomprensioni, bug, lamentele da parte di clienti, manager. Ed una sensazione di impotenza nel vedere come il software, benché onnipresente in qualunque aspetto della nostra vita, in realtà sia una disciplina completamente sottovalutata, sottostimata e bistrattata ma di assoluta e sempre crescente importanza e soprattutto pericolo.

Mi sono avvicinato oramai oltre 15 anni fa al mondo del software Safety Critical e della Certificazione tipico di ambienti Aerospaziali, Ferroviari, Medicali, Automobilistici ed ho imparato un sacco di cose interessanti ed insospettabili su come scrivere del codice in maniera professionale, ingegneristica e scientifica che non sia solo più stabile e sicuro ma anche meno costoso, in maniera più efficiente e veloce. Ma con un’infrastruttura di metodi, di procedure, di documentazione quasi del tutto inavvicinabile ad una PMI dove il numero di addetti software spesso è molto limitato.


CONTATTI

Per qualsiasi dubbio o chiarimento

Assistenza:

Telefono: https://calendly.com/softwaresicuro/

Mail: assistenza@softwaresicuro.it


SOFTWARE SICURO srl - Capitale Sociale 10.000€ interamente versato