Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проверка на плагиат / На рерайт / Проверка на рерайт. Отчет

.pdf
Скачиваний:
14
Добавлен:
11.06.2022
Размер:
596.66 Кб
Скачать

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

Операция поиска #1

Исходный текст

ВВЕДЕНИЕ

Искусственная нейронная сеть — математическая модель, а также ее программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей.

Интерес ученых и специалистов области IT к нейронным сетям растет с каждым годом. Все из-за того, что они позволяют гибко решать задачи различного рода подобно человеческому мозгу: сначала обучаясь на некоторых входных данных, а затем применяя накопленные знания на практике. Возрастает потребность в специалистах этой области, а вместе с тем и в упрощении процесса поиска наиболее жизнеспособных гипотез.

Нейронные сети используются для решения бизнес-задач различного уровня сложности. Каждая задача характеризуется набором последовательных шагов, так называемым конвейером машинного обучения (англ. «machine learning pipeline»). Конвейер включает в себя предобработку данных, создание модели нейронной сети, ее обучение, валидацию, тестирование и экспорт для последующего использования. Некоторые части не изменяются от эксперимента к эксперименту, поэтому их можно выделить в группы и использовать повторно.

Целью данной работы является приложение для упрощения процесса разработки нейронных сетей. Приложение предназначено для решения нескольких проблем конструкторов нейронных сетей: разделение и объединение проектов по средам исполнения, повторное использование кода, разработка графических приложений для визуализации обучения и тестирования нейронной сети.

Наиболее распространенным среди исследователей инструментом для обработки данных и построения моделей нейронных сетей является язык программирования Python. В связи с этим, необходимо акцентировать внимание на этом языке, на существующих решениях, которые связаны с использованием этого языка, и их подходами к разработке.

В качестве задач, которые решало бы данное приложение, были выбраны: классификация изображений и классификация текста. Кроме этих задач, приложение должно позволять пользователю выполнять другие задачи машинного обучения.

Для достижения целей работы необходимо выполнить следующие задачи:

1.Обзор предметной области и анализ существующих решений;

2.Написание формализованных требований;

3.Создание настольного приложения;

4.Визуализация тестирования моделей машинного обучения в пределах установленных задач.

1 ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ И АНАЛИЗ СУЩЕСТВУЮЩИХ РЕШЕНИЙ

1.1 Обзор предметной области 1.1.1 Введение в предметную область

Искусственный интеллект — свойство интеллектуальных систем выполнять творческие функции, которые традиционно считаются прерогативой человека [1].

Машинное обучение — распространенный раздел искусственного интеллекта, цель которого не в прямом решении задачи, а в обучении за счет применения решений множества схожих задач. Задача машинного обучения — с помощью некоторого алгоритма найти закономерности в исходных данных и научится предсказывать ответ.

Нейросети — один из видов машинного обучения. Преимущества нейронных сетей в способности выявлять очень сложные закономерности в исходных данных, в устойчивости к шумам, в высокой степени параллелизма, в способности к обобщению [2].

1

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

В качестве решаемых задач выбраны: классификация изображений и классификация текста. Все эти задачи являются примерами так называемого обучения с учителем, т.е. данные представляют собой пары «входов» и «выходов». Входные данные итеративно проходят через модель, вычисляется ошибка, которая затем распространяется через всю модель, благодаря чему она обучается. Есть необходимость в большом количестве размеченных данных (в которых для каждого элемента известен правильный ответ), но, с другой стороны, это позволяет добиваться достаточно высокого качества обучения.

Для выбранных задач чаще всего используется обобщенный конвейер жизненного цикла данных и моделей, изображенный на рисунке 1.1.

Рисунок 1.1 — Обобщенный конвейер машинного обучения

Некоторые шаги конвейера (выбор параметров обучения и валидации, сохранение результатов, экспорт моделей) от задачи к задаче почти не меняются. Чаще всего используется один подготовленный набор данных (англ. «dataset»), а в ходе экспериментов меняются только модели и параметры обучения. Из этого следует, что значительные части кода можно сделать шаблонными для максимального повторного использования.

1.1.2 Классификация изображений Задача классификации является одной из самых популярных. Об этом свидетельствует портал

«Machine Learning» (PapersWithCode): 3772 научных документов — самое большое среди всех методологий, представленных на портале [3].

Классификация конкретно изображений используется достаточно широко, например, в распознавании рукописных цифр и букв.

Классификация изображений является многоклассовой классификацией; входными данными являются изображения, а выходными —метки классов.

Конвейер машинного обучения может выглядеть следующим образом:

1.Обработка входного изображения (изменение размера, преобразование цветового пространства и др.);

2.Искажение изображения (англ. «augmentation») для более качественного обучения модели;

3.Построение модели;

4.Настройка параметров обучения;

5.Запуск обучения.

6.Визуализация (графики точности и функции потерь, визуализация промежуточных результатов модели);

7.Экспорт моделей.

1.1.3 Классификация текста Классификация текста — задача, заключающаяся в отнесении документа к одной из нескольких

категорий на основании содержания. Является многоклассовой классификацией; входными данными являются тексты, а выходными — метки классов. Применяется для поиска похожих документов, в задаче определения языка, в задаче категоризации новостей.

Анализ тональности текста — задача, заключающаяся в определении эмоциональной окраски (тональности) текста. Является бинарной классификацией; входными данными являются тексты, а выходными — группы «positive» и «negative». Применяется для анализа настроений пользователей, их отношений к чему-либо.

Предобработка текстов может быть различна — приведение к нижнему регистру, удаление служебных слов, удаление пунктуации, стемминг (нахождение основной формы слова), лемматизирование (нахождение правильной словарной формы слова, т.е. леммы) и т.д. Однако любая предобработка может привести к некачественным результатам, например, удаление пунктуации в случае «строить, нельзя сносить», или стемминг в случае «добрый — добро», или приведение к нижнему регистру в случае «периметр — Периметр» (комплекс автоматического управления ответным ядерным ударом).

Текст, в отличие от изображения, в исходном виде не является последовательностью чисел,

2

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

поэтому его нужно переводить в числовую последовательность. Таким образом, обработка данных для текстов отличается.

1.2 Анализ существующих решений

1.2.1 MATLAB Deep Learning Toolbox

MATLAB Deep Learning Toolbox предоставляет платформу для проектирования и реализации глубоких нейронных сетей с алгоритмами, предварительно обученными моделями и приложениями [4]. Можно выполнять классификацию и регрессию изображений, временных рядов и текстовых данных. Можно создавать сетевые архитектуры, такие как генеративные состязательные сети (GAN) и сиамские сети (Siamese Network), используя автоматическое дифференцирование, пользовательские циклы обучения и общие веса.

Приложение Deep Network Designer позволяет проектировать, анализировать и обучать сети в графическом виде.

Приложение Experiment Manager позволяет управлять несколькими экспериментами глубокого обучения, отслеживать параметры обучения, анализировать результаты и сравнивать код из разных экспериментов. Можно визуализировать активации слоев и графически отслеживать ход обучения.

Можно импортировать/экспортировать модели из/в формат ONNX (рис. 1.2). Инструментарий поддерживает трансферное обучение (метод, в котором используются предварительно обученные модели) с DarkNet-53, ResNet-50, NASNet, SqueezeNet и многими другими.

Рисунок 1.2 — Возможности импорта и экспорта в MATLAB Deep Learning Toolbox

Скриншот MATLAB Deep Learning Toolbox приведен на рисунке 1.3.

Рисунок 1.3 — MATLAB Deep Learning Toolbox

1.2.2 Графические приложения на основе IPython

IPython — интерактивная оболочка, первоначально разработанная для языка программирования Python, которая предлагает визуализацию данных, поддержку некоторых инструментариев GUI, командный синтаксис, подсветку кода, автоматическое дополнение, параллельные вычисления. К графическим приложениям на основе IPython относятся:

JupyterLab и Jupyter-Notebook (Desktop) (рис. 1.4) [5];

Visual Studio Code Jupyter-Notebooks Extension (Desktop) (рис. 1.5) [6];

Google Colaboratory (Web) (рис. 1.6) [7];

Kaggle Notebooks (Web) (рис. 1.7) [8];

Paperspace Gradient (Web) (рис. 1.8) [9];

Amazon SageMaker Studio Lab (Web) (рис. 1.9) [10];

Microsoft Azure Notebooks (Web) (рис. 1.10) [11].

Отличия во внешнем виде и некоторых дополнительных функциях.

Рисунок 1.4 — JupyterLab

Рисунок 1.5 — Visual Studio Code, Jupyter-Notebooks Extension

Рисунок 1.6 — Google Colaboratory

Рисунок 1.7 — Kaggle Notebooks

Рисунок 1.8 — Paperspace Gradient

Рисунок 1.9 — Amazon SageMaker Studio Lab

3

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

Рисунок 1.10 — Microsoft Azure Notebooks

1.2.3 Neural Network Console WinAPP

Neural Network Console WinAPP — настольное приложение, разработанное компанией Sony, являющееся конструктором нейронных сетей (рис. 1.11) [12]. Позволяет достаточно гибко выстраивать различные архитектуры.

Рисунок 1.11 — Neural Network Console WinAPP

Приложение может быть полезно для исследовательских целей.

Имеются инструменты AutoML — автоматическая оптимизация структуры моделей и поиск наиболее подходящих архитектур. Однако эти инструменты нельзя детально настраивать, из-за чего исследователь может лучше знать, как выстроить поиск, чем это сделает алгоритм.

1.2.4 Net Maker

NetMaker — бесплатный пакет для построения нейронных сетей (рис. 1.12) [13]. Был разработан в первую очередь для классификации взаимодействия частиц в экспериментах по физике высоких энергий.

Рисунок 1.12 — Net Maker

Особенности:

Визуализация входных данных и результатов работы сети: o Гистограммы — с μ и σ распределения;

o Диаграммы рассеяния — с коэффициентом линейной корреляции R_xy; o Обучающие параметры, итерации;

o Обновляемые в реальном времени графики;

Вычисления оптимизированы в C / asm (SSE2 / SSE3 / SSE4.1 aware).

1.2.5 Simbrain

Simbrain — бесплатный инструмент для построения, запуска и анализа нейронных сетей (рис. 1.13)

[14].

Рисунок 1.13 — Simbrain

«Сетевой компонент» представляет собой моделируемую нейронную цепь, состоящую из нейронов и синапсов.

«Мир» — компонент, который взаимодействует с сетевыми компонентами, передавая и/или получая информацию. Например, «мир данных», «мир текста», «мир изображения» и др.

Есть возможность визуализировать сетевую активность и другие данные с помощью гистограмм, круговых диаграмм, прогнозов, временных рядов и др., а также использовать Simbrain консоль, создавать пользовательские сценарии с использованием графических инструментов и использовать Simbrain в качестве библиотеки, без графической оболочки.

1.3 Обзор состояния науки о данных и машинного обучения

Kaggle — система организации конкурсов по исследованию данных, а также социальная сеть специалистов по обработке данных и машинному обучению.

Согласно отчету Kaggle на конец 2021 года: [15]

наиболее популярными инструментами разработки моделей являются Jupyter Notebook (1

место), Visual Studio Code (2 место), JupyterLab (3 место);

наиболее часто используемыми методами и алгоритмами машинного обучения являются линейная или логистическая регрессия (1 место), деревья решений или «случайный лес» (2 место), алгоритмы градиентного бустинга (3 место), сверточные сети (4 место), подход Байеса (5 место), глубокие сети (6 место), рекуррентные (7 место), сети transformer (8 место), генеративносостязательные сети (9 место);

наиболее часто используемыми инструментами являются библиотеки Python: scikit-learn (1

4

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

место), tensorflow (2 место), xgboost (3 место), keras (4 место), pytorch (5 место);

большинство исследователей не использует AutoML решения, но интерес к ним растет. Таким образом, исследование современных моделей и алгоритмов искусственного интеллекта чаще всего проводится в Jupyter-подобном ПО на CPython, графическую оболочку (рис. 1.4) которого можно охарактеризовать следующим образом:

в основной рабочей области отображаются вкладки документов;

документ Jupyter-Notebook (.ipynb) содержит блоки с текстом и блоки с кодом на СPython и выводом;

блоки с текстом используются для комментирования;

блоки с кодом можно запускать в любом порядке любое количество раз, причем состояния переменных сохраняются, т.е. переменные запущенного ранее блока доступны в следующем запускаемом блоке;

имеется функция остановки выполнения блока;

имеется функция перезапуска ядра, которая сбрасывает состояние интерпретатора к исходному (память освобождается).

Все эти характеристики необходимо принять во внимание перед построением архитектуры приложения.

1.4 Выводы по разделу В первом разделе описана предметная область, подробно рассмотрены выбранные задачи

машинного обучения, представлен жизненный цикл данных и модели, приведены существующие решения вместе с обзором состояния науки о данных и машинного обучения. В таблице 1.1 представлен краткий анализ решений.

Таблица 1.1 — Краткий анализ существующих решений Решение

Функция

Графические приложения на основе IPython

MATLAB Deep Learning Toolbox Simbrain Neural Network

Console WinAPP Net Maker

Выбор готовых архитектур, их изменение и настройка процесса обучения с помощью кода

+

+

+

+

Визуализация и отображение результатов процесса обучения

спомощью кода

+

+

+

+

Наличие стандартных наборов данных и/или их загрузка из Интернета по запросу

спомощью кода

вкомплекте

вкомплекте

автозагрузка из Интернета

5

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

Создание и редактирование набора данных

спомощью кода

спомощью кода в таблице

Интерактивная визуализация работы сети

спомощью кода

+

+

Экспорт модели в ONNX формат с помощью кода

+

Разработка сценариев/программ с графическим отображением только для поддерживаемых

только в полном пакете MATLAB

+

Пользовательские шаблоны кода

+

+

Разделение и объединение проектов по средам исполнения

Операционная система

Windows, Linux

Windows, Linux Windows Windows Windows

Лицензия

Бесплатно 30 дней условно-бесплатно Бесплатно Бесплатно Бесплатно

Таким образом, нужно объединить представленные в таблице функции в новое приложение, которое подойдет как для изучения и исследования машинного обучения, так и для решения бизнес-задач. В следующих разделах будет предложена архитектура такого решения, его

6

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

возможности, функционал, а также тонкости реализации и использованные библиотеки.

2 ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ К РАЗРАБАТЫВАЕМОМУ ПРИЛОЖЕНИЮ

2.1 Требования к функциям 2.1.1 Функциональная структура приложения

Обобщенная функциональная структура приложения представлена на рисунке 2.1.

Рисунок 2.1 — Функциональная структура приложения

Приложение имеет функции для работы со списком проектов, инструменты без привязки к проектам, настройки приложения, которые влияют на настройки всех проектов, а также сам список проектов.

Файл проекта имеет расширение «nnc».

Каждый проект позволяет выполнять операции над списком блоков кода и блоков текста.

Так как в один момент времени просматривается только один проект, то операции проводятся над этим проектом.

Каждый блок кода содержит операции, присущие только ему, горячие клавиши и подсветку синтаксиса.

Блок текста хранит весь текст в формате HTML, при необходимости преобразуя HTML и Markdown между собой.

Для каждой вкладки этапа («Наборы данных», «Архитектуры» и пр.) свой список разделов. Под логгером далее понимается текстовое поле, в которое добавляется информация о результатах совершенных операций. Каждая запись имеет дату.

2.1.2 Функции списка проектов Основные функции списка проектов приведены в таблице 2.1.

Таблица 2.1 — Основные функции списка проектов Функция Описание «Новый проект»

1. Открывается диалоговое окно сохранения файла нового проекта.

2.Если в диалоговом окне выбран файл уже открытого проекта и нажата кнопка «Сохранить», то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Проект по пути [путь] уже открыт» с кнопкой «Ок».

3.Если в диалоговом окне было введено корректное имя файла (либо выбран файл на перезапись) и нажата кнопка «Сохранить», то создается новый проект:

1) В поле со статусом выводится «Подождите, пока проект создается...»; 2) Проект сохраняется на диск; 3) Загружаются разделы с шаблонами из директории приложения;

4) Устанавливаются настройки графических элементов в соответствии с настройками приложения; 5) В рабочую область добавляется пустой список блоков; 6) Статус проекта: «Сохранен»;

7) В поле со статусом и в логгер выводится «Проект создан».

4.Если в диалоговом окне была нажата кнопка «Отмена», то отмена действия; в поле со статусом выводится «Отмена создания проекта».

5.В случае ошибки выводится сообщение об ошибке «Не удалось создать проект: [описание ошибки]».

«Открыть проект»

1.Открывается диалоговое окно открытия файла существующего проекта.

2.Если в диалоговом окне выбран файл уже открытого проекта и нажата кнопка «Открыть», то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Проект по пути [путь] уже открыт» с кнопкой «Ок».

3.Если в диалоговом окне был выбран существующий файл проекта и нажата кнопка «Открыть»,

7

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

то файл проекта открывается:

1)В поле со статусом выводится «Подождите, пока проект открывается...»;

2)Данные считываются из файла проекта;

3)Загружаются разделы с шаблонами из директории приложения;

4)Устанавливаются настройки элементов в соответствии с настройками приложения;

5)В рабочую область добавляется список блоков, считанных из файла проекта;

6)Статус проекта: «Сохранен».

7)В поле со статусом и в логгер выводится «Проект открыт».

4.Если в диалоговом окне была нажата кнопка «Отмена», то отмена действия; в поле со статусом выводится «Отмена открытия проекта».

5.В случае ошибки выводится сообщение об ошибке «Не удалось открыть проект: [описание ошибки]».

«Сохранить проект»

1.Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2.Если хотя бы один открытый проект есть, то файл текущего проекта сохраняется: 1) В поле со статусом выводится «Подождите, пока проект сохраняется...»; 2) Проект сохраняется на диск; 3) Статус проекта: «Сохранен».

4) В поле со статусом и в логгер выводится «Проект [название] сохранен».

3.В случае ошибки выводится сообщение об ошибке «Не удалось сохранить проект: [описание ошибки]».

«Дублировать текущий проект»

1.Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2.Если хотя бы один открытый проект есть, то открывается диалоговое окно сохранения файла дублирующего проекта.

3.Если в диалоговом окне выбран файл уже открытого проекта и нажата кнопка «Сохранить», то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Проект по пути [путь] уже открыт».

4.Если в диалоговом окне было введено корректное имя файла (либо выбран файл на перезапись) и нажата кнопка «Сохранить», то создается новый проект:

1) В поле со статусом выводится «Подождите, пока проект дублируется...»; 2) Проект сохраняется на диск; 3) Загружаются разделы с шаблонами из директории приложения;

4) Устанавливаются настройки графических элементов в соответствии с настройками приложения; 5) В рабочую область добавляется список блоков из исходного дублируемого проекта; 6) Статус проекта: «Сохранен»;

7) В поле со статусом и в логгер выводится «Проект [название] создан как дубликат [название]».

5.Если в диалоговом окне была нажата кнопка «Отмена», то отмена действия; в поле со статусом выводится «Отмена дублирования проекта».

6.В случае ошибки выводится сообщение об ошибке «Не удалось дублировать проект: [описание ошибки]».

«Закрыть проект»

1.Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2.Если хотя бы один открытый проект есть, то отображение окна подтверждения «Вы уверены, что хотите закрыть проект?» с кнопками «Да» и «Нет».

3.Если «Да», то:

1) В поле со статусом выводится «Подождите, пока проект закрывается...»; 2) Отображение окна подтверждения «Сохранить проект перед закрытием?» с кнопками «Да» и «Нет» в случае, если статус проекта «Не сохранен»;

o Если «Да», то проект сохраняется;

8

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

o Если «Нет», то проект не сохраняется.

3)Проект закрывается; графические элементы проекта удаляются из рабочей области.

4)В поле со статусом и в логгер выводится «Проект закрыт».

4.Если в диалоговом окне была нажата кнопка «Отмена», то отмена действия; в поле со статусом выводится «Отмена закрытия проекта».

5.В случае ошибки выводится сообщение об ошибке «Не удалось закрыть проект: [описание ошибки]».

«Выход из программы»

1.Отображение окна подтверждения «Вы уверены, что хотите выйти?» с кнопками «Да» и «Нет».

2.Если «Да», то:

1) Для каждого открытого проекта проверяется его статус. Если статус какого-либо из проектов «Не сохранен», то отображается окно подтверждения «Сохранить все проекты перед выходом?» с кнопками «Да», «Нет» и «Отмена».

o Если «Да», то все проекты сохраняются и закрываются, настройки программы записываются в файл настроек, а затем происходит выход из программы.

o Если «Нет», то все проекты закрываются без сохранения, настройки программы записываются в файл настроек, а затем происходит выход из программы.

o Если «Отмена», то отмена выхода.

2) Если нет открытых проектов или статус всех проектов «Сохранен», то все проекты закрываются, настройки программы записываются в файл настроек, а затем происходит выход из программы.

3.Если «Нет», то отмена действия.

4.В случае ошибки отображается окно подтверждения «Проигнорировать ошибку? [описание ошибки]» с кнопками «Да» и «Нет». Если «Да», то ошибка игнорируется. Если «Нет», то выход из программы не производится.

Необходимость в предварительном сохранении файла проекта связана с определением среды выполнения кода.

2.1.3 Функции проекта Основные функции проекта приведены в таблице 2.2.

Таблица 2.2 — Основные функции проекта Функция Описание

«Добавить блок кода»

1.Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2.Если хотя бы один открытый проект есть, то:

1)В поле со статусом выводится «Подождите, пока блок кода добавляется...»;

2)В список блоков текущего проекта добавляется новый блок кода в любую позицию;

3)Статус проекта: «Не сохранен»;

4)В поле со статусом и в логгер выводится «В проект [название] добавлен блок кода».

3. В случае ошибки выводится сообщение об ошибке «Не удалось добавить блок кода: [описание ошибки]».

«Добавить текстовый блок»

1.Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2.Если хотя бы один открытый проект есть, то:

1)В поле со статусом выводится «Подождите, пока блок текста добавляется...»;

2)В список блоков текущего проекта добавляется новый блок текста в любую позицию;

3)Статус проекта: «Не сохранен»;

4)В поле со статусом и в логгер выводится «В проект [название] добавлен блок текста».

3. В случае ошибки выводится сообщение об ошибке «Не удалось добавить блок текста: [описание ошибки]».

«Запустить выбранные блоки»

9

Коваленко Л.А. ВКР на тему «Разработка конструктора нейронных сетей». Глубокая проверка на плагиат.

1.Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2.Если хотя бы один открытый проект есть, но блоки кода не выбраны, то во всплывающем сообщении об ошибке выводится: «Ни один блок кода не выбран для выполнения» с кнопкой

«Ок».

3.Если хотя бы один открытый проект есть и хотя бы один блок кода выбран, то

1)В поле со статусом выводится «Подождите, пока выбранные блоки отправляются на выполнение...»;

2)Все выбранные блоки в списке блоков текущего проекта отправляются на выполнение.

3)В поле со статусом и в логгер выводится «В проекте [название] началось выполнение выбранных блоков».

4. В случае ошибки выводится сообщение об ошибке «Не удалось отправить выбранные блоки на выполнение: [описание ошибки]».

«Остановить выполнение блоков» 1. Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об

ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2. Если хотя бы один открытый проект есть, но в текущем проекте ядро еще не было запущено, то во всплывающем сообщении об ошибке выводится: «Ядро не запущено» с кнопкой «Ок».

3. Если хотя бы один открытый проект есть и в текущем проекте ядро запущено, то отображается окно подтверждения «Подтвердить остановку всех блоков кода выбранного проекта?» с кнопками «Да» и «Нет».

4. Если «Да», то:

1)В поле со статусом выводится «Подождите, пока останавливается выполнение блоков...»;

2)Из очереди выполнения удаляются все блоки кода.

3)Выполняющей среде посылается сигнал о прерывании выполнения текущего блока, если он есть.

4)В поле со статусом и в логгер выводится «В проекте [название] остановлено выполнение блоков».

5. Если «Нет», то отмена действия.

6. В случае ошибки выводится сообщение об ошибке «Не удалось остановить выполнение блоков: [описание ошибки]».

«Перезапустить ядро» 1. Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об

ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2. Если хотя бы один открытый проект есть, но в текущем проекте ядро еще не было запущено, то во всплывающем сообщении об ошибке выводится: «Ядро не запущено» с кнопкой «Ок».

3. Если хотя бы один открытый проект есть и в текущем проекте ядро запущено, то отображается окно подтверждения «Подтвердить перезапуск ядра выбранного проекта?» с кнопками «Да» и «Нет».

4. Если «Да», то:

1)В поле со статусом выводится «Подождите, пока ядро перезапускается...»;

2)Из очереди выполнения удаляются все блоки кода.

3)Выполняющей среде посылается сигнал о прерывании выполнения текущего блока, если он есть.

4)Ядро перезапускается.

5)В поле со статусом и в логгер выводится «В проекте [название] перезапущено ядро».

5.Если «Нет», то отмена действия.

6.В случае ошибки выводится сообщение об ошибке «Не удалось перезапустить ядро: [описание ошибки]».

«Очистить вывод выбранных блоков»

1.Если открытых проектов нет, то в поле со статусом, в логгер и во всплывающем сообщении об ошибке выводится: «Список проектов пуст» с кнопкой «Ок».

2.Если хотя бы один открытый проект есть, но блоки кода не выбраны, то во всплывающем

10

Соседние файлы в папке На рерайт