System Software Design - 1st sem.


Rules for passing the project:

  • Student obtains the points for the project. I pass the list with students' points to the lecturer.
  • The project has 15 hours/sem., i.e. 2x45 minutes in the second, last part of the semester.
  • You can obtain max. of 100 points.
  • The students work in 3 or 4 person groups.

Announcements


Project

 

Part of the project being evaluated

Tools

% 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

10

Writing simple image processing software
Assumptions:
  • 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 convert the images (multi-threaded) - outline detection;
  • 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 the selected image processing method.
Visual Studio 2013 i C/C++ with OpenCV library

20*

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

10

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.
Bugzilla

10

The use of the threads/processes Windows

10

The use of IPC Windows

10

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.
    Doxygen

    10

    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

    10

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

    10

     

    * = 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:

    Configuration of Visual C++ project:
    "C++->General->Additional Include Files" add $(OPENCV_ROOT)\include,
    "Linker->General->Additional Library Directories" add $(OPENCV_ROOT)\$(PlatformTarget)\$(VisualStudioVersion)\lib or $(OPENCV_ROOT)\$(PlatformTarget)\$(VisualStudioVersion)\staticlib (depending on using dll or static libraries)
    "Linker->Input->Additional Dependencies" opencv_< library >$(OPENCV_VERSION_SUFFIX)[d].lib, e.g. opencv_core$(OPENCV_VERSION_SUFFIX).lib in "Release" configuration and opencv_core$(OPENCV_VERSION_SUFFIX)d.lib in "Debug" configuration.


    Images for testing:

    Test images(ZIP)