I'm working on my CS Masters thesis at a company which does user interfaces in the field of embedded devices. As part of that I am developing a library for integrating a certain device. My C++ library wraps the device drivers and integrates the device's features in the Qt framework so that it can be used with a variety of Qt/QML-based applications.
So far I have written many notes and detailed API documentation (using Doxygen). But I have no idea how to properly format all the information in order to provide a good overview of my work in the thesis. Simply using the API documentation doesn't make sense since 1) it's way too detailed and 2) doesn't exactly give a formal overview of how things are structured and work together.
From what I know I have to describe at least the following aspects of the software product I'm developing:
Technology(ies): which technologies I have used. I have split my project into:
- a library which provides device management, data conversion, and Qt integration;
- tests; and
- a collection of ready-made Qt widgets which use the library.
Patterns: what software patterns I have used (MVC, Singleton, Factory, Observer etc.). The problem here is that there are many, many patterns out there and there is a known inconsistency when it comes to which pattern is what exactly (alone the MVC pattern is very famous for it - pick three books from different authors and there is a very high chance that the descriptions of this pattern vary greatly!). Personally I work following the principle "XYZ makes sense to me hence I will use it", which probably many of you will find too broad. :D
Information flow: mostly sequence and flow diagrams here: if user does action X how does the device and the rest of the system respond to it.
Data management: for storing and processing the data from the device, my library uses data containers such as arrays, vectors, hash tables etc..
I doubt that this is enough or even correct that's why I'm asking for help. I was unable to find a step-by-step tutorial that I can follow. I also don't know how deep I have to go.
I have asked my professor about the hardware-level stuff and he said that he doesn't want to see that in the thesis and that I should concentrate on what I am developing.
However this restriction only helps a little bit since Qt framework alone has a huge and complex structure. For example if I use a
QVector3D do I have to actually describe in detail what this is and how it's managed or can I assume that a simple "A container for 3D vectors" would suffice?
Frankly, we have studied various software architecture related things like patterns etc, but we were never shown how to formally describe a software system. All I did previously was short lab reports and API documentation + some evaluation statistics about performance.