Dept. Logo
Lab Home page
Department of Microelectronic Systems, Faculty of Electronics, Telecommunications and Informatics, Gdansk University of Technology Logo Wydziału
Flaga PL Polska wersja

The Design of System Software

Rules for passing the project:



Part of the project being evaluated


% of points

Description of the requirements using UML
  • identify the client, end users and other parties interested in the results of the project (stakeholders);
  • collect and analyze the details of the functional and non-functional requirements for particular tasks;
  • determine the usage scenarios and create a functional specification, suitable for reading ;
  • optionally incorporate a UML usage scenarios to the documentation;
  • create a UML model the key elements of the proposed solutions;
  • examine the possibility of using additional libraries and tools for the task;
  • develop a brief technical specification summarizing this information together with the work schedule;
  • submit the specification to the teacher.
Microsoft Visio


Writing simple image processing software
  • the software should be run from the command line;
  • the paths of the source and destination files should be read from * .ini file(for ini file analysis, any free library can be used, for example. iniParser);
  • the software should read all image files from the source path;
  • the software should align the brightness of the images (multi-threaded), e.g. on the basis of histograms;
  • the processed images should be saved in the target folder;
  • two images with the matrix of all image thumbnails (one for input files, another for the processed images) should be saved for quick evaluation of the results.
It is suggested that you first familiarize yourself with the various elements of the project:
  • INI file analysis;
  • how to read, save and view images in OpenCV;
  • the rules for operations on matrices / images in OpenCV;
  • select and test methods to compensate the brightness of the images.
Visual Studio 2013 i C/C++ with OpenCV library


The use of collaboration tools
  • gain the access to the repository version control system (external hosting GitHub, Bitbucket);
  • select a person responsible for maintaining order in the repository (maintainer);
  • plan your repository structure, depending on your IDE, programming language, additional artifacts (UI graphics, specifications, etc.).
GIT + GitHub


Use of the bug tracking system
  • access to the repository of Bug Tracking System (external hosting GitHub, Bitbucket);
  • select a person responsible for maintaining order in the repository (maintainer).
  • report the errors detected during testing cycles to the bug tracking system;
  • optionally, use a method of test-driven development to ensure quality;
  • demonstrate the use of block testing to validate the key elements of the software.


The use of the threads/processes Windows


The use of IPC Windows


Writing the project documentation
  • implement the appropriate amount of work during your work to document the API (comments compatible with Doxygen) use comments in the code, explaining the particularly confusing algorithms, mechanisms, relationships;
  • generate HTML documentation from Doxygen comments on a regular basis, not after the completion of the project;
  • provide the documentation to your teacher.


Profiling of the project (detection of hotspots)
  • use the profiler to detect the hotspots in your software, try to optimize the code.
Visual Studio Profiler


Detecting memory leaks
  • for example, use macro _ASSERTE( _CrtCheckMemory( ) ); in DEBUG mode and check the data integrity in your code.
Visual Studio + CrtCheckMemory


* = a necessary condition. To complete the course, the correct software operation is required.
The above specification was developed based on the materials from A. Ciarkowski, MSc.

Software tools availabe in the lab:

External resources (in Polish):