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.

Docenti MasterClass

6a181bc758ee4f1cbb3a4d4617279c5e

Massimo Bombino

CEO & Founder di Software Sicuro

Una delle maggiori autorità a livello italiano di Sviluppo Software Embedded & Safety-Critical

Vance Hilderman

CTO di AFuzion

Esperto di Certificazione Avionica e di Safety-Critical, con esperienza a livello mondiale

Niroshan Rajadurai

VP di GitHub

Guru nel campo degli RTOS (Real-Time Operating Systems), Security, Continuous Integration

Roberto Bagnara

CEO di BUGSENG

Membro del MISRA e maggior esperto di Analisi Statica in Italia

Menegotto

Maurizio Menegotto

CEO di Lauterbach (IT)

Autorità nel campo del Debugging, Emulazione Hardware


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

"Il Team RD/PM è un team parecchio esperto con diversi anni di corsi alle spalle e buona conoscenza di tematiche procedure/processo SW, di conseguenza non è semplice cercare un nuovo corso che dia nozioni in più/diverse e che sia al contempo stimolante per la ricerca di punti di miglioramento e dei tanto desiderati Quick Wins.

Avevo visto che il corso M.E.D.S era un corso di 3 giorno che sono pochi per affrontare in dettaglio tematiche per il miglioramento del SW e avevo il dubbio di assistere ad un corso che fosse abbastanza superficiale, senza novità e che non desse lo stimolo cercato.

Prima di acquistare il corso M.E.D.S, mi sono sentito diverse volte con Massimo per capire meglio le tematiche del corso e l’approccio dato al corso.Ho ricevuto in anticipo il libro del corso e mi sono convinto ad acquistare il corso M.E.D.S per come vengono esposte le tematiche.
Non è un corso puramente SW, non è un corso puramente di nozioni tecniche. I concetti vengono espressi con un tono volutamente provocatorio, con esempi reali e con l'approccio di Massimo, che con tanti anni di esperienza e di errori commessi, di strategie correttive e preventive, va a toccare dei temi fondamentali e trascurati come gli aspetti economici, la strategia, il management ed il marketing. Mi sono così convinto ad acquistarlo e a coinvolgere una platea più ampia e non solo sviluppatori SW.
Ho pensato che potesse essere un corso diverso adatto ad un team di esperti che sono “stufi” di sentirsi ripetere sempre gli stessi concetti puramente teorici di un processo a V e di un processo Agile. Del corso mi è piaciuto l’approccio, l’aver toccato tematiche non puramente SW, ma anche manageriali, gestione del personale e marketing. Mi è piaciuta la continua ricerca e proposta dei Quick Wins.
Durante il corso è stato possibile individuare subito dei punti di miglioramento da poter applicare nell’immediato. Tutti vorrebbero avere il sistema perfetto, senza bug, ma purtroppo i bug ci sono e nel tentativo di migliorare il sistema si ha sempre la tendenza a voler stravolgere completamente tutte le procedure, puntando ad un modello ideale che funziona perfettamente in letteratura. Si ha la tendenza a voler cambiare tutto ma alla fine il cambiamento risulta avere un effort talmente alto sia in termini di tempo che di risorse che si finisce per abbandonare senza aver apportato alcune modifiche. La ricerca e l’applicazione dei Quick Wins dà risultati tangibili in minor tempo e dà stimolo a continuare, e il corso di Massimo ha dato lo stimolo giusto. Il secondo motivo per il quale mi è piaciuto il corso M.E.D.S. è che vengono toccati alcuni temi inusuali e trascurati ma fondamentali per un'azienda: la strategia di posizionamento sul mercato, la scelta ponderata di clienti e fornitori, gli aspetti economici e finanziari di un progetto software, la gestione avanzata tramite KPI e metriche, il management del team e di un progetto, considerando aspetti importanti, la gestione strategica del cambiamento, oltre alle nozioni più tecniche sul processo quindi requisiti, modellazione ecc. La sensazione dopo aver fatto un corso del genere, è quella di avere per la prima volta sotto controllo tutti degli aspetti indispensabili per il successo di un progetto software ma che nessuno considera mai.
E' un corso consigliabile non solo a sviluppatori e tecnici, anzi: è vero che nella seconda parte si parla del processo e di tutti gli aspetti tecnici più di dettaglio.
Secondo me, il vero target sono i manager di progetti software più o meno grandi, liberi professionisti o imprenditori di aziende che sviluppano sistemi applicativi o embedded con produzione interna di software o firmware. Stiamo valutando una collaborazione per una la Gap Analysis, per poi valutare meglio quali potrebbero essere i punti principali su cui focalizzarsi per un miglioramento del processo".
Gaetano Scognamiglio
Vice-President Cellular & Location, R&D, Telit SPA
5/5
"Ho un background variegato: provengo dal mondo software, ho iniziato a gestire progetti dal 2004 circa e nel corso degli anni ho maturato esperienza e preso una certificazione PMP e una certificazione Scrum Master Certified. Ero curioso di capire come il corso M.E.D.S. si ponesse rispetto a questi due corpi di conoscenza riconosciuti a livello globale e come avrebbe potuto competere, in termini di contenuti e impatto. Ho guardato il materiale e i video di presentazione del corso e, d’accordo con i colleghi, abbiamo riflettuto sull’opportunità di creare uno stimolo. L’azienda è strutturata ed è matura dal punto di vista dei processi, ma avevamo bisogno di uno “scossone” per ravvivare il dialogo, soprattutto tra le varie funzioni, e in particolare tra chi è “non-tecnico” e chi è “tecnico”.
Avere un gergo comune avrebbe aiutato, e la discussione, che sicuramente sarebbe partita dal corso, avrebbe portato novità e maggiore coesione nei team e tra i team. I temi trattati e le modalità hanno scatenato da subito discussioni anche piuttosto accese su quasi tutte le tematiche. Alla macchinetta del caffè si fa la vera innovazione, si dice. Ed effettivamente lo stimolo è stato di impatto su tutta l’azienda.

Personalmente ho apprezzato il fatto che, al di là del formalismo necessario per affrontare alcuni argomenti, spesso si ritornava a l'aneddoto, all’esempio concreto.
Il corso è consigliabile a qualsiasi realtà aziendale inserita in una filiera tecnologica. La necessità di processi, tecniche e metodologie per la gestione di progetti di innovazione tecnologica rende imprescindibile approcciare il problema nell’ottica del miglioramento continuo.
Il corso aiuta a mettere in discussione (costruttiva) processi consolidati e che, nel tempo, diventano antiquati. Consiglio la partecipazione al corso a tutti i leader (di team, di dipartimento, di divisione) oltre che ai componenti dei vari team che operativamente portano avanti il lavoro.

La necessità è avere un linguaggio comune e il M.E.D.S. aiuta a costruire il proprio.
Personalmente credo sia necessario introdurre una momento per coinvolgere anche il top management e mostrare, in forma di executive report, quali vantaggi comporta partecipare a questo corso e, eventualmente, come portare avanti ulteriori iniziative di miglioramento".
Enrico Marongiu
Project Manager Software at TELIT Spa
5/5
“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”.
Niroshan Rajadurai
Global Advanced Security Sales at GitHub, Software Factory Evangelist​
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”
Vance Hilderman
CEO di AFuzion, guru della Certificazione Avionica

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/07/2022:

€ 1.200

primo studente

€ 800

dal secondo studente

 

I prezzi sono da intendersi IVA esclusa.

L’offerta è valida solamente fino al 31/07/2022 per ordine e pagamento anticipato, dal 15/08/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 30 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:

Per prenotare appuntamento: https://calendly.com/softwaresicuro/

Mail: assistenza@softwaresicuro.it


SOFTWARE SICURO srl - Capitale Sociale 10.000€ interamente versato