Today there are many devices that allow people to perform everyday tasks faster, more reliably and more efficiently, such as informal communication, business correspondence, planning the daily routine, calculations, keeping records, including training. New ways of acquiring knowledge appeared, such as webinars, forums, knowledge bases, e-courses and distance learning. Nevertheless, the devices themselves are just a tool that can be used to increase the functionality of certain software tools. Annually the functionality of the programs is increasing, together with the improvement of the amount of code, resources and data in applications. In order to optimize their products, to reduce the size of applications and the resources they use, to support multiplatform, as well as to accelerate the development and implementation of new functionality and less labor-intensive support developers began to use various approaches.