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)