Come applicare buoni principi di progettazione orientata agli oggetti nei sistemi integrati [chiuso]

3

Sono un ingegnere del firmware trasferito da Electrical background a Embedded Systems. Fino ad ora ho programmato in C e non mi sono mai preoccupato di applicare i principi OO nel mio design. Recentemente sono stato costretto a implementare la progettazione in C ++. Ho iniziato a piacermi i principi OO come SOLID, i design pattern, ecc. Volevo sapere di più sull'applicazione del design OO nella progettazione del mio firmware. Tutte le risorse su OO, che ho trovato erano troppo nella programmazione delle applicazioni piuttosto che nel firmware. Ho trovato questo libro pertinente (ordinato). Ero curioso di sapere se ci sono altre risorse che possono aiutarmi ad imparare i principi OO con particolare attenzione ai sistemi embedded.

Sono ancora nuovo nel mondo OO, quindi per favore suggeriscimi se dovrei imparare i principi OO prima e poi imparare a applicarli per i sistemi embedded o iniziare a imparare solo cose rilevanti per il sistema embedded.

    
posta phcd 21.10.2011 - 18:01
fonte

2 risposte

7

Circa 8 anni fa mi trovavo di fronte a un problema simile. Avevo appena iniziato un ruolo lavorando con la tecnologia embedded, avendo in precedenza trascorso diversi anni facendo programmazione orientata agli oggetti in C ++.

Non ho mai avuto particolare successo nel portare le tecniche applicative al codice del driver del dispositivo. Sono riuscito a scrivere alcune classi utili per astrarre le larghezze del bus I / O, le dimensioni dei bit del processore e le implementazioni del bus driver, ma la realtà era che rendeva la vita molto più confusa per gli altri membri del team.

Pensa in questo modo: la maggior parte degli ingegneri del software embedded è presente nel settore da molti anni. Sono usati per gestire direttamente bit, byte e manipolare la memoria, e questo è il fulcro del loro lavoro. Ottenere i bit giusti per l'indirizzo di memoria giusto. I miei tentativi di usare OO per astrarre questi dettagli nascondevano solo i dettagli chiave. Ha reso più difficile per gli ingegneri dell'hardware vedere cosa stava accadendo, e gli altri programmatori C non hanno visto alcun vantaggio rispetto a "essere semplicemente ovvi"

Dai suoni di esso, nel tuo ambiente, sei attivamente spinto nella direzione del C ++. quindi è abbastanza probabile che tu non abbia questi problemi, ma stai attento anche alla caduta della portabilità del codice C ++. non tutti gli ambienti di basso livello consentiranno l'uso del codice C ++, e l'uso della parola Standard nella "Standard Template Library" è piuttosto lento, in particolare quando si spostano tra diversi compilatori.

    
risposta data 24.10.2011 - 00:23
fonte
4

Nel suo corso C ++ efficace in un ambiente embedded , Scott Meyers afferma:

Good embedded software development is just good software development.

Quindi, se ottieni una solida base nelle tecniche orientate agli oggetti in generale, puoi applicarle nell'ambiente incorporato.

Detto questo, Meyers presenta come

  • Il software deve rispettare i vincoli del problema e della piattaforma.
  • Le funzionalità del linguaggio C ++ devono essere applicate con giudizio.

Meyers rende disponibili le sue note sul corso in formato PDF a un prezzo ridotto nella sua pagina del corso .

    
risposta data 26.10.2011 - 01:29
fonte

Leggi altre domande sui tag