| 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 ;  LI>
				optionally incorporate a UML usage scenarios to the documentation;  LI>
				create a UML model the key elements of the proposed solutions;  LI>
				 examine the possibility of using additional libraries and tools for the task;  LI>
				 develop a brief technical specification summarizing this information together with the work schedule;  LI>
				 submit the specification to the teacher.  LI>
			 | Microsoft Visio | 10 | 
    
		| Writing simple image processing software Assumptions:
 
				It is suggested that you first familiarize yourself with the various elements of the project: 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.  
				 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 | 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  B> 
				 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  B> 
				 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;  LI>
				 provide the documentation to your teacher.  LI>
			 | 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 |