Добрый день! Уважаемые студенты, Вашему вниманию представляется курсовая работа на тему: «Программный проект на тему Разработка фреймворка для практических заданий по распределенным системам»
1 Аннотация
1.1 Аннотация
Распределенные системы широко используются в современных приложениях. Чтобы написать правильный алгоритм для распределенных систем, разработчикам нужны специальные методы их тестирования. То же самое касается студентов, обучающихся по специальностям, связанным с программированием распределенных систем. В данной работе модифицируется фреймворк dslib, предназначенный для тестирования алгоритмов студентов. Основная суть фреймворка заключается в возможности моделировать поведение сети и проверять состояние каждого процесса на соответствие определенному набору инвариантов. Результатом работы является модификация фреймворка dslib, реализованная в системе тестирования работ студентов.
1.2 Annotation
Distributed systems are widely used in modern applications. To write the correct algorithm for distributed systems developers need special methods to test them. Same thing for students who study in specialities related to the programming of distributed systems. In this paper, we modify the dslib framework designed for testing student algorithms. The main essence of the framework is the ability to model the behavior of the network and check the state of each process for compliance with a certain set of invariants. The result of the work is a modification of the dslib framework implemented in the system of testing students ' works.
1.3 Ключевые слова
Распределенные системы; Тестирование; Распределенные алгоритмы; model checking; distributed systems;
Содержание
1 Аннотация
3
1.1
Аннотация
3
1.2 Annotation
3
1.3
Ключевые слова
3
2 Введение
3
2.1
Актуальность
3
2.2
Постановка задачи
4
3 Обзор существующих решений
5
3.1
DSLabs: model checking для тестирования решений студентов
5
3.2
IronFleet: Floyd-Hoare тестирование
6
3.3 Verdi: набор инструментов для написания и проверки распределенных алгоритмов
7
3.4
Оценка рассматриваемых работ
7
3.5
Описание существующей тестирующей системы
9
4 Описание предлагаемого алгоритма
10
4.1
Тестирование с помощью Model Checking
10
4.2
Необходимые данные для реализации Model Checking
10
4.3
Подмена состояний процессов
11
4.4
Обход состояний системы
11
4.5
Ускорение работы алгоритма тестирования
11
4.6
Проверка состояний системы
12
4.7
Отладка решения
12
5 Результаты
13
5.1
Обход графа состояний
13
5.2
Время работы алгоритма тестирования
13
5.3
Тесты
14
5.3.1 Тесты на алгоритм Broadcast
14
5.3.2 Тесты на алгоритм Membership
16
5.3.3 Тесты на алгоритм kv-sharding
17
6 Заключение
18
Список литературы
20
Список литературы
[1] E. Michael, D. Woos, T. Anderson, M. D. Ernst, and Z. Tatlock. 2019. Teaching Rigorous Distributed Systems With Efficient Model Checking. In EuroSys.
(https://homes.cs.washington.edu/~mernst/pubs/dslabs-eurosys2019.pdf)
[2] Chris Hawblitzel, Jon Howell, Manos Kapritsos, Jacob R. Lorch, Bryan Parno, Michael L. Roberts, Srinath T. V. Setty, and Brian Zill. 2015. IronFleet: proving practical distributed systems correct. In SOSP. ACM, 1–17 (https://www.microsoft.com/en-us/research/wp-content/uploads/2015/10/ironfle et.pdf)
[3] J. R. Wilcox, D. Woos, P. Panchekha, Z. Tatlock, X. Wang, M. D. Ernst, and T. E. Anderson. Verdi: a framework for implementing and formally verifying distributed systems. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 357– 368, 2015. (https://www.researchgate.net/publication/282484874_Verdi_A_Framework_for _Implementing_and_Formally_Verifying_Distributed_Systems)