title: ÐÐ²ÑÐ¾Ð¼Ð°ÑÐ¸ÑÐµÑÐºÐ¸Ð¹ Ð°Ð½Ð°Ð»Ð¸Ð· Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÑÑÐµÑÐ½Ð¾Ð² Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ð¼ ÐºÐ¾Ð´Ðµ
title: Ð²ÑÐ¿ÑÑÐºÐ½Ð°Ñ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð±Ð°ÐºÐ°Ð»Ð°Ð²ÑÐ°
titleType: Subtitle
title: Automatic analysis of the use of design patterns in program code
Creators: name: ÐÐµÐ¹ÑÑÐ½ÑÐ½, ÐÐµÐ¾ÑÐ³Ð¸Ð¹
Publisher: name: Ð¡Ð°Ð½ÐºÑ-ÐÐµÑÐµÑÐ±ÑÑÐ³ÑÐºÐ¸Ð¹ Ð¿Ð¾Ð»Ð¸ÑÐµÑÐ½Ð¸ÑÐµÑÐºÐ¸Ð¹ ÑÐ½Ð¸Ð²ÐµÑÑÐ¸ÑÐµÑ ÐÐµÑÑÐ° ÐÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾
Year: 2020
Subjects: Ð¿Ð°ÑÑÐµÑÐ½Ñ Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ
ÑÑÐ°ÑÐ¸ÑÐµÑÐºÐ¸Ð¹ Ð°Ð½Ð°Ð»Ð¸Ð·
c#
roslyn
design patterns
static analysis

description: Ð¢ÐµÐ¼Ð° Ð²ÑÐ¿ÑÑÐºÐ½Ð¾Ð¹ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð¾Ð¹ ÑÐ°Ð±Ð¾ÑÑ: Â«ÐÐ²ÑÐ¾Ð¼Ð°ÑÐ¸ÑÐµÑÐºÐ¸Ð¹ Ð°Ð½Ð°Ð»Ð¸Ð· Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÑÑÐµÑÐ½Ð¾Ð² Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ð¼ ÐºÐ¾Ð´ÐµÂ». Ð Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÐ°Ð±Ð¾ÑÐµ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð° ÑÑÑÐ½Ð¾ÑÑÑ Ð¿Ð¾Ð´ÑÐ¾Ð´Ð° Ðº ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ð¹ ÑÐ¸ÑÑÐµÐ¼Ñ Ð´Ð»Ñ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸ÑÐµÑÐºÐ¾Ð³Ð¾ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÑÑÐµÑÐ½Ð¾Ð² Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² Ð¸ÑÑÐ¾Ð´Ð½Ð¾Ð¼ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ð¼ ÐºÐ¾Ð´Ðµ. Ð Ð°ÑÑÐ¼Ð¾ÑÑÐµÐ½Ñ Ð¼ÐµÑÐ¾Ð´Ñ ÑÐµÑÐµÐ½Ð¸Ñ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ Ð·Ð°Ð´Ð°ÑÐ¸. ÐÑÐ¾Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÐ¾Ð²Ð°Ð½Ñ ÑÑÑÑÐºÑÑÑÑ Ð¸Ð´ÐµÐ½ÑÐ¸ÑÐ¸ÑÐ¸ÑÑÐµÐ¼ÑÑ Ð¿Ð°ÑÑÐµÑÐ½Ð¾Ð². ÐÐ»Ñ Ð¾Ð±Ð½Ð°ÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¿Ð°ÑÑÐµÑÐ½Ð¾Ð² Ð² ÐºÐ¾Ð´Ðµ Ð¿ÑÐ¸Ð¼ÐµÐ½ÑÐ½ ÑÑÐ°ÑÐ¸ÑÐµÑÐºÐ¸Ð¹ Ð°Ð½Ð°Ð»Ð¸Ð· Ñ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ ÑÐ¸Ð½ÑÐ°ÐºÑÐ¸ÑÐµÑÐºÐ¾Ð³Ð¾ Ð´ÐµÑÐµÐ²Ð°. Ð ÐºÐ°ÑÐµÑÑÐ²Ðµ ÑÐµÑÐ½Ð¾Ð»Ð¾Ð³Ð¸Ð¹ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÐµÑÐµÐ½Ð¸Ñ Ð±ÑÐ»Ð¸ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ñ ÑÐ·ÑÐº Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ C# Ð¸ Ð¿Ð°ÐºÐµÑ SDK Ð´Ð»Ñ .NET Compiler Platform, Ð±Ð¾Ð»ÐµÐµ Ð¸Ð·Ð²ÐµÑÑÐ½ÑÐ¹ ÐºÐ°Ðº Roslyn. Ð¡Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð° Ð¸ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð° Ð°ÑÑÐ¸ÑÐµÐºÑÑÑÐ° ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÑÐ¾ÐµÐºÑÐ°, Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑÐ°Ñ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÑ Ð¼Ð°ÑÑÑÐ°Ð±Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ðµ Ð¸ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð²ÑÑ Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼Ð¾Ð² Ð´Ð»Ñ Ð¾Ð±Ð½Ð°ÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¿Ð°ÑÑÐµÑÐ½Ð¾Ð² Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ. Ð ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð° Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð°Ñ ÑÐ¸ÑÑÐµÐ¼Ð°, Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑÐ°Ñ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸ÑÐµÑÐºÐ¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÐ¾Ð²Ð°ÑÑ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿Ð°ÑÑÐµÑÐ½Ð¾Ð² Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Composite, Iterator, Observer, Prototype, Singleton Ð¸ Template Method Ð² Ð¾Ð±ÑÐµÐºÑÐ½Ð¾-Ð¾ÑÐ¸ÐµÐ½ÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð½Ð¾Ð¼ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ð¼ ÐºÐ¾Ð´Ðµ Ð½Ð° ÑÐ·ÑÐºÐµ C#. Ð¡Ð¾Ð·Ð´Ð°Ð½Ð½Ð¾Ðµ ÑÐµÑÐµÐ½Ð¸Ðµ Ð¿ÑÐ¾ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¾ Ð½Ð° ÑÐµÑÑÐ¾Ð²ÑÑ Ð´Ð°Ð½Ð½ÑÑ, Ð¿ÑÐµÐ´ÑÑÐ°Ð²Ð»ÐµÐ½Ð½ÑÑ Ð¸ÑÑÐ¾Ð´Ð½ÑÐ¼ ÐºÐ¾Ð´Ð¾Ð¼ Ð°ÐºÑÐ¸Ð²Ð½Ð¾ Ð¿ÑÐ¸Ð¼ÐµÐ½ÑÐµÐ¼Ð¾Ð³Ð¾ Ð½Ð° Ð¿ÑÐ°ÐºÑÐ¸ÐºÐµ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ð¿ÑÐ¾Ð´ÑÐºÑÐ°.
description: The subject of the graduate qualification work is Â«Automatic analysis of the use of design patterns in program codeÂ». In the given work the essence of the approach to creation a software system for the automatic analysis of the use of design patterns in the source code is stated. The methods for solving the specified problem are reviewed. The structures of identifiable patterns are investigated. To detect patterns in the code, static analysis using a syntax tree is applied. C# programming language and the .NET Compiler Platform SDK, better known as Roslyn, were used as technologies for creating the solution. The architecture of the created project, which allows scaling and adding new algorithms to detect design patterns, is designed and described. A software system for automatically analysis of Composite, Iterator, Observer, Prototype, Singleton, and Template Method design patterns in the object - oriented program code in C# language is developed. The created solution was tested on test data provided by the source code of a software product actively used in practice.