Contesto :
Ingegnere elettronico junior R&D ( l'unico EE in azienda ): l'hardware e la codifica non sono il problema. Il mio problema più grande è ottenere una panoramica adeguata del progetto e da dove iniziare.
Finora ho realizzato solo progetti software minori (sotto 500 righe di codice), ma non riesco a immaginarmi di fare progetti più grandi senza perdere la visione d'insieme della funzionalità o la mancanza di funzionalità.
Come struttura migliore / quali strumenti utilizzate per strutturare sistemi software embedded di grandi dimensioni?
Cosa sto facendo attualmente :
Di solito inizio, abbozzando la funzionalità del progetto. Potrebbe essere uno o più diagrammi di flusso a strati o diagrammi correlati (diagrammi a blocchi, ecc.) E fare alcune ricerche sui componenti / chip. Quindi passo subito alla codifica (immagino che fallisca velocemente) facendo riferimento ai fogli dati / Internet, codificando una funzionalità alla volta e testandola con dati fittizi o test simili. Potrebbe scrivere dati su un chip MEM, e quindi se funziona potrebbe essere un driver SPI tra il chip principale e il chip MEM.
Quale risposta sto cercando :
Qualcosa di veramente. Risolverò ciò che trovo sensato. Potrebbe essere un libro, un articolo, esperienza personale, raccomandazioni, ecc.
Sono molto interessato a sapere come gli anziani affrontano questo.
modificare
Prima di tutto, grazie per aver condiviso i tuoi anni di esperienza! Tutte le risposte sono molto apprezzate. La mia opinione su questo è;
- Crea un documento di specifica chiaro e preciso.
- Creare un documento di progettazione software. (Qualcosa che aggiungerò ora) Progetta modelli di documenti
- Pensa in moduli quanto possa sembrare ridondante. (Qualcosa su cui devo concentrarmi maggiormente)
- Seguire uno standard di codifica per strutturare i file di intestazione / sorgente. (Non l'ho mai fatto) Barr Group C standard
- Concentrati innanzitutto sulla creazione di implementazioni di basso livello. (Comunicazione ecc.)
- Implementare modelli di progettazione ove possibile / sensato. Modelli di progettazione
- Imposta qualcosa per il controllo delle revisioni (Github ecc. - mai usato così tanto)
- Ricerca integrazione continua / implementazione continua (Qualcosa di nuovo su cui mi sono imbattuto) Nozioni di base su CI e CD