Sto lavorando alla mia tesi di CS Master presso un'azienda che fa interfacce utente nel campo dei dispositivi embedded. Come parte di ciò sto sviluppando una libreria per l'integrazione di un determinato dispositivo. La mia libreria C ++ racchiude i driver di dispositivo e integra le funzionalità del dispositivo nel framework Qt in modo che possa essere utilizzato con una varietà di applicazioni basate su Qt / QML.
Finora ho scritto molte note e una dettagliata documentazione API (usando Doxygen). Ma non ho idea di come formattare correttamente tutte le informazioni al fine di fornire una buona panoramica del mio lavoro nella tesi. Usare semplicemente la documentazione dell'API non ha senso dato che 1) è troppo dettagliato e 2) non fornisce una panoramica formale di come le cose sono strutturate e funzionano insieme.
Da quello che so, devo descrivere almeno i seguenti aspetti del prodotto software che sto sviluppando:
-
Tecnologia (e): quali tecnologie ho utilizzato. Ho diviso il mio progetto in:
- una libreria che fornisce la gestione dei dispositivi, la conversione dei dati e l'integrazione Qt;
- test; e
- una raccolta di widget Qt già pronti che utilizzano la libreria.
-
Pattern: quali pattern software ho usato (MVC, Singleton, Factory, Observer ecc.). Il problema qui è che ci sono molti, molti modelli là fuori e c'è una contraddizione conosciuta quando si tratta di quale pattern è esattamente ciò che (solo il pattern MVC è molto famoso per questo) - scegli tre libri di autori diversi e c'è molto alta probabilità che le descrizioni di questo modello siano molto diverse!). Personalmente lavoro seguendo il principio "XYZ ha senso per me quindi lo userò", che probabilmente molti di voi troveranno troppo ampio. : D
-
Flusso di informazioni: principalmente diagrammi di sequenza e di flusso qui: se l'utente esegue l'azione X, come risponde il dispositivo e il resto del sistema.
-
Gestione dati: per l'archiviazione e l'elaborazione dei dati dal dispositivo, la mia libreria utilizza contenitori di dati come matrici, vettori, tabelle hash, ecc.
Dubito che questo sia sufficiente o addirittura corretto, ecco perché sto chiedendo aiuto. Non sono riuscito a trovare un tutorial passo passo che posso seguire. Inoltre, non so quanto sia profondo andare.
Ho chiesto al mio professore di materiale di livello hardware e ha detto che non vuole vederlo nella tesi e che dovrei concentrarmi su ciò che sto sviluppando .
Tuttavia questa restrizione aiuta solo un po 'dal momento che il framework Qt da solo ha una struttura enorme e complessa. Ad esempio, se utilizzo un QVector3D
devo effettivamente descrivere dettagliatamente cosa è e come è gestito o posso supporre che un semplice "contenitore per vettori 3D" sia sufficiente?
Francamente, abbiamo studiato varie cose relative all'architettura software come i modelli ecc., ma non ci è mai stato mostrato come descrivere formalmente un sistema software. Tutto ciò che ho fatto in precedenza erano brevi rapporti di laboratorio e documentazione API + alcune statistiche di valutazione sulle prestazioni.