ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра систем автоматизации управления
ВЫПУСКНАЯ
КВАЛИФИКАЦИОННАЯ РАБОТА
на тему
Разработка модуля проектирования
виртуальных лабораторных стендов
Пояснительная записка
Киров 2020
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра систем автоматизации управления
Допускаю к защите
Заведующий кафедрой САУ
___________________
/Ланских Ю.В./
(подпись)
(Ф.И.О)
Разработка модуля проектирования
виртуальных лабораторных стендов
Пояснительная записка выпускной квалификационной работы
ТПЖА.090302.036 ПЗ
Разработал студент
группы ИТб-4301-01-00
/ Дождиков И.С./
(подпись)
Руководитель, к.т.н., доцент
(Ф.И.О)
/Ланских Ю.В./
(подпись)
25 июня 2020
25 июня 2020
(Ф.И.О)
Консультанты:
по организационноэкономическому разделу, к.т.н.,
доцент
/ Ланских Ю.В./
(подпись)
Нормоконтролер, к.т.н., доцент
(Ф.И.О)
/ Ланских Ю.В./
(подпись)
Киров 2020
25 июня 2020
(Ф.И.О)
25 июня 2020
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Кафедра ___САУ_____________
УТВЕРЖДАЮ
Зав. кафедрой _Ланских Ю.В.__
«___» _____________ 20 ___ г.
ЗАДАНИЕ
НА ВЫПУСКНУЮ КВАЛИФИКАЦИОННУЮ РАБОТУ
Студенту ___группы ИТб-4301-01-00 Дождикову Игорю Сергеевичу, номер
зачетной книжки Д10-ФАВТ-2016-36_____________________________________________
___________________________________________________________________________________
Тема: __Разработка модуля проектирования виртуальных лабораторных
стендов________________________________________________________________
__________________________________________________________________________________
(Утверждена приказом по университету от _________ № __________ )
1. Исходные данные к ВКР язык программирования C# 7.3, платформа .NET
Framework 4.5.2, ЭВМ офисного назначения с ОС Microsoft Windows 10,
Microsoft Office 2010, Git 2.23.0, Microsoft Visual Studio Community 2019 16.3.0;
системные требования к рабочему месту пользователя: ЭВМ офисного назначения
с установленной платформой .NET Framework версии 4.5.2 или выше, не менее
100 Мбайт объема оперативной памяти, не менее 50 Мбайт свободного места на
жестком
диске,
процессор
с
частотой
не
менее
1
ГГц___________________________________________________________________
2. Содержание расчетно-пояснительной записки
(перечень подлежащих
разработке вопросов) __обзор современного состояния предметной области
виртуальных лабораторных стендов, проектирование модуля проектирования
виртуальных лабораторных стендов, разработка модуля проектирования САПР
LabCAD,
технико-экономическое
обоснование
разработки
модуля
проектирования__________________________________________________________________
__________________________________________________________________________________
__________________________________________________________________________________
3. Задание по организационной и экономической части проекта _расчет затрат на
создание программного обеспечения, цены продукта; расчет выручки и прибыли
от реализации программного продукта;_расчёт затрат, связанных с покупкой,
внедрением и использованием программного обеспечения________________________
4. Задание по экологии и технике безопасности __________________________________
__________________________________________________________________________________
__________________________________________________________________________________
__________________________________________________________________________________
5. Прочие разделы _______________________________________________________
_______________________________________________________________________
6. Перечень графического материала (с точным указанием обязательных чертежей)
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
7. Руководитель и консультант по ВКР (с указанием фамилии, имени, отчества,
места работы и должности)
___________________________________________________________________________________
___________________________________________________________________________________
а) руководитель проекта _Ланских Юрий Владимирович, ФГБОУ ВО
«Вятский государственный университет» (ВятГУ), доцент кафедры Систем
автоматизации управления ________________________________________________________
б) консультант по организационно-экономической части _Ланских Юрий
Владимирович, ФГБОУ ВО «Вятский государственный университет» (ВятГУ),
доцент кафедры Систем автоматизации управления________________________________
в) консультант по технике безопасности ____________________________________
___________________________________________________________________________________
г) консультант по ___________________________________________________________
___________________________________________________________________________________
д) консультант по ___________________________________________________________
____________________________________________________________________________________
8. Дата выдачи задания 20 апреля 2020 года_________________________________
Руководитель _____________________________ (подпись)
Студент
_____________________________ (подпись)
КАЛЕНДАРНЫЙ ГРАФИК
работы над ВКР на весь период проектирования с указанием
объема выполнения и трудоемкости отдельных этапов по месяцам
1._Обзор предметной области и формирование требований – 30.04.2020_______
2._ Проектирование модуля проектирования виртуальных лабораторных стендов
– 08.05.2020__________________________________________________________
3._ Разработка модуля проектирования – 15.05.2020________________________
4._Технико-экономическое обоснование разработки модуля – 22.05.2020_______
5._Оформление расчетно-пояснительной записки ‒ 29.05.2020________________
6. Даты: предзащиты ВКР _01.06.2020_ защиты _09.07.2020__
Руководитель ______________________ (подпись)
Студент
______________________ (подпись)
Реферат
Дождиков
И.С.
Разработка
модуля
проектирования
виртуальных лабораторных стендов: ТПЖА.090302.036 ПЗ:
Выпускная квалификационная работа / ВятГУ, каф. САУ; рук. Ю.В.
Ланских. – Киров, 2020. ПЗ 150 с., 86 рис., 11 табл., 8 источников,
13 прил.; програм. докум. 10 л.
ПРОЕКТИРОВАНИЕ,
РАЗРАБОТКА,
СИСТЕМА
АВТОМАТИЗИРОВАННОГО
ПРОЕКТИРОВАНИЯ,
МОДЕЛЬ,
ВИРТУАЛЬНЫЙ ЛАБОРАТОРНЫЙ СТЕНД, МОДУЛЬ, ОБЪЕКТ
МОДЕЛИ,
ПЕРЕМЕННАЯ
ОБЪЕКТА,
ПОВЕДЕНИЕ
ОБЪЕКТА,
ВИЗУАЛЬНЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ.
Объект исследования и разработки – модуль проектирования
виртуальных лабораторных стендов.
Цель работы – уменьшение использования временных и иных видов
ресурсов, связанных с разработкой виртуальных лабораторных стендов, за
счет автоматизации данного процесса модулем проектирования виртуальных
лабораторных стендов.
Изучена предметная область и определена концепция модели для
виртуальных лабораторных стендов, разработаны диаграммы IDEF0, IDEF3,
DFD модуля проектирования виртуальных лабораторных стендов, описаны
модели данных, спроектирован синтаксис нижнего уровня визуального языка
программирования LabScript, произведено моделирование модуля с
использованием языка UML. На основе результатов проектирования
разработана программная реализация модуля проектирования виртуальных
лабораторных стендов и демонстрационный стенд. Произведено техникоэкономическое обоснование разработки модуля.
1
Документация общая
2
Вновь разработанная
экз.
Наименование
Кол-во
листов
Формат
строки
Обозначение
Примеч
3
4
ТПЖА.090302.036 ПЗ
Пояснительная записка
150
в том числе
5
6 А4
страниц формата А4
110
7 А3
страниц формата А3
40
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Изм Лист
докум.
Разраб.
Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр
Ланских Ю.В.
Н.контр
Ланских Ю.В.
Утв.
Ланских Ю.В.
Подпись Дата
ТПЖА.090302.036 ДДП
Литер
Разработка модуля
проектирования виртуальных
лабораторных стендов
Лист
Листов
1
1
Кафедра САУ
Группа ИТб-4301-01-00
Содержание
Введение....................................................................................................... 4
1 Обзор современного состояния предметной области виртуальных
лабораторных стендов ............................................................................................ 5
1.1 Описание предметной области ........................................................ 5
1.2 Определение цели и задач проекта ................................................. 7
1.3 Формирование требований .............................................................. 8
1.4 Обзор существующих аналогов программной реализации ........ 10
1.4.1 Графическая среда Simulink ................................................. 10
1.4.2 Программное обеспечение LabVIEW .................................. 11
1.4.3 Программный комплекс JMCAD ......................................... 13
1.5 Выводы к разделу 1 ........................................................................ 14
2
Проектирование
модуля
проектирования
виртуальных
лабораторных стендов .......................................................................................... 16
2.1 Определение концепции модели ................................................... 16
2.1.1 Объект модели........................................................................ 17
2.1.2 Переменная объекта............................................................... 20
2.1.3 Поведение объекта ................................................................. 22
2.1.4 Цикл работы модели .............................................................. 23
2.2 Разработка функциональных моделей .......................................... 24
2.3 Разработка моделей данных........................................................... 27
2.4 Визуальный язык программирования LabScript .......................... 30
2.4.1 Синтаксис LabScript for Behaviour ...................................... 31
2.4.2 Обработка ошибок ................................................................. 34
2.5 Моделирование с использованием языка UML ........................... 35
2.6 Выводы к разделу 2......................................................................... 46
Изм Лист
докум.
Разраб.
Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр
Ланских Ю.В.
Н.контр
Ланских Ю.В.
Ланских Ю.В.
Утв.
Подпись Дата
ТПЖА.090302.036 ПЗ
Литер
Разработка модуля
проектирования виртуальных
лабораторных стендов
Лист
2
Листов
150
Кафедра САУ
Группа ИТб-4301-01-00
3 Разработка модуля проектирования САПР LabCAD ....................... 47
3.1 Выбор языка программирования.................................................. 47
3.2 Программная реализация модуля ................................................. 48
3.3 Разработка демонстрационного стенда «Модель температуры
микроклимата теплицы» ....................................................................................... 55
3.4 Выводы к разделу 3 ....................................................................... 59
4
Технико-экономическое
обоснование
разработки
модуля
проектирования ..................................................................................................... 60
4.1 Расчет затрат на создание программного обеспечения, цены
продукта ................................................................................................................. 60
4.2 Расчет выручки и прибыли от реализации программного
продукта ................................................................................................................. 71
4.3 Расчёт затрат, связанных с покупкой, внедрением и
использованием программного обеспечения ..................................................... 73
4.4 Выводы к разделу 4 ....................................................................... 79
Заключение ................................................................................................ 80
Приложение А (обязательное). Модель модуля в нотации IDEF0 ...... 81
Приложение Б (обязательное). Модель модуля в нотации IDEF3 ....... 88
Приложение В (обязательное). Модель модуля в нотации DFD ......... 95
Приложение Г (обязательное). Диаграмма сериализации .................... 99
Приложение Д (обязательное). Диаграммы активности ..................... 102
Приложение Ж (обязательное). Диаграммы последовательности .... 105
Приложение И (обязательное). Диаграммы классов ........................... 109
Приложение К (обязательное). Диаграмма компонентов ................... 130
Приложение Л (обязательное). Фрагменты исходного кода .............. 135
Приложение М (обязательное). Авторская справка ............................ 145
Приложение Н (обязательное). Перечень принятых определений и
терминов .............................................................................................................. 147
Приложение П (обязательное). Перечень принятых обозначений и
сокращений ......................................................................................................... 149
Приложение Р (справочное). Библиографический список ................. 150
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
3
Введение
Важное место в жизни современного человека занимает
использование
различного
рода
аппаратно-программных
средств.
Программное обеспечение участвует в решении широкого круга задач: от
простого набора текста до управления объектами ядерной энергетики. Одним
из направлений использования программ является автоматизация различных
процессов с целью минимизации затрачиваемых ресурсов.
В данной работе пойдет речь об автоматизации проектирования
виртуальных лабораторных стендов через создание модуля проектирования
виртуальных лабораторных стендов.
Вся работа разбита на несколько структурированных разделов с
целью подачи информации в удобном для читателя виде.
Первый раздел, «Обзор современного состояния предметной области
виртуальных лабораторных стендов», содержит комплексные сведения о
предметной области и объекте разработки для осуществления процессов
проектирования и кодирования.
Второй
раздел,
«Проектирование
модуля
проектирования
виртуальных лабораторных стендов», посвящен идейным основам модуля и
вопросам проектирования.
Третий раздел, «Разработка модуля проектирования САПР LabCAD»,
описывает результаты кодирования модуля и разработку демонстрационного
стенда.
Четвертый раздел, «Технико-экономическое обоснование разработки
модуля проектирования», посвящен экономическим вопросам разработки
модуля.
Каждый раздел сопровождается графическим материалом для
лучшего понимания соответствующих аспектов разработки модуля
проектирования виртуальных лабораторных стендов.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
4
1 Обзор современного состояния предметной области
виртуальных лабораторных стендов
Для разработки модуля проектирования необходимо рассмотреть
соответствующую предметную область виртуальных лабораторных стендов,
сформировать правильное направление разработки конечного продукта,
определить требования к разрабатываемому модулю и, конечно, рассмотреть
уже имеющиеся аналоги для подчеркивания необходимости реализации
данной программы.
1.1 Описание предметной области
В настоящее время с учетом наличия у образовательных учреждений
комплекса ЭВМ особое значение в образовательном процессе имеет
использование различного рода программных решений, ориентированных на
повышение качества получения знаний, в том числе за счет создания
виртуальных моделей реальных процессов и явлений.
Последние можно назвать следующим понятием – виртуальные
лабораторные стенды.
Виртуальный лабораторный стенд (ВЛС, стенд) ‒ это
многофункциональный программно-методический комплекс, моделирующий
действие изучаемых явлений, приборов, механизмов и технических средств
[1].
Преимущества виртуальных лабораторных стендов перед реальными
состоят в следующем:
отсутствие
необходимости
приобретения
дорогостоящего
оборудования и реактивов;
возможность моделирования процессов, протекание которых
принципиально невозможно в лабораторных условиях;
безопасность проведения опытов в виртуальной среде;
возможность быстрого проведения серии опытов с различными
значениями входных параметров;
возможность
использования
виртуальной
лаборатории
в
дистанционном обучении.
Виртуальные лабораторные стенды в основе своей содержат
совокупность математических моделей, описывающих в определенной
степени точности протекающие в реальном мире процессы и явления. Но эти
модели не взаимодействуют с пользователем сами по себе, так как, по сути,
представляют собой лишь математические зависимости между входными и
выходными
моделируемыми
величинами,
а
обслуживаются
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
5
специализированной программой. Обслуживающая программа может
выступать как в роли отдельного исполняемого файла или веб-приложения
со встроенными в них математическими моделями, так и программойинтерпретатором, в которую подгружаются модели, закодированные в
специальном формате, доступном для чтения и исполнения данной
программой.
Понятие
«встроенный»
здесь
имеет
значение
внедрения
формализованного описания математической модели непосредственно в
программный код обслуживающей программы.
Программа уже за счет использования различного вида
пользовательских
интерфейсов
осуществляет
взаимодействие
с
пользователем, принимая от него входные данные и выводя рассчитанные на
основе математических моделей выходные значения.
Сам процесс разработки ВЛС может занимать продолжительное время
и требует от разработчика ВЛС не только глубокого понимания предметной
области, но и наличия достаточно высоких навыков программирования для
программной реализации виртуального лабораторного стенда, либо наличия
значительных финансовых ресурсов для включения в процесс разработки
специализированной фирмы по разработке программного обеспечения.
Данную проблему позволяют решить системы автоматизированного
проектирования виртуальных лабораторных стендов.
Говоря о понятиях «система автоматизированного проектирования» и
«автоматизированное проектирование», необходимо понимать, что
вкладывается вообще в понятие «проектирование».
Проектирование – процесс составления описания, необходимого для
создания в заданных условиях еще несуществующего объекта, на основе
первичного описания этого объекта и (или) алгоритма его функционирования
[2, с. 5].
Проектирование представляет собой достаточно сложный вид
человеческой
деятельности,
который
невозможен
без
наличия
соответствующих глубоких знаний и способности к творческому поиску,
который, однако, включает в себя выполнение некоторой рутинной работы.
Данный процесс можно оптимизировать по использованию
различного рода ресурсов за счет его автоматизации при помощи ЭВМ. Это
достигается путем рационального распределения функций между
проектировщиком и ЭВМ, причем на проектировщика возлагаются, как
правило, задачи творческого характера, тогда как на ЭВМ – задачи,
допускающие решение с помощью некоторого определенного алгоритма.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
6
Выполнением формализованных задач процесса проектирования в
настоящее время занимаются системы автоматизированного проектирования
(САПР). САПР – это системы, реализующие автоматизированное
проектирование [3, с. 12-13]. Классификация САПР возможна по множеству
критериев, причем, в большинстве случаев конкретная классификация носит
условный характер.
Таким образом, САПР для проектирования виртуальных
лабораторных стендов представляет собой автоматизированную систему,
позволяющую пользователю разработать виртуальный лабораторный стенд
для моделирования объектов и процессов реального мира в соответствии с
требованиями пользователя на проблемно-ориентированном уровне с
описаниями алгоритмов на визуальном языке программирования при
наличии базовых навыков программирования.
Под визуальным языком программирования в настоящей работе
понимается совокупность графических или текстографических объектов,
манипулируя которыми пользователь задает логику работы модели.
Следует заметить, что понятия «модель» и «виртуальный
лабораторный стенд» в рамках данной работы являются синонимами.
1.2 Определение цели и задач проекта
Система автоматизированного проектирования представляет собой
совокупность взаимосвязанных подсистем или модулей, каждый из которых
предназначен для решения конкретного списка подзадач в рамках единой
задачи, которую должна решать САПР. Целью данной работы является
уменьшение использования временных и иных видов ресурсов, связанных с
разработкой виртуальных лабораторных стендов, за счет автоматизации
данного процесса модулем проектирования ВЛС. Данный модуль должен
предоставить пользователю необходимый интерфейс для обеспечения
процесса проектирования ВЛС, а также средства для получения описания
моделируемой системы и для конвертации описания моделируемой системы
в файл. Задачи, которые необходимо выполнить для достижения
поставленной цели:
1) рассмотреть
аналоги
для
формирования
особенностей
разрабатываемого модуля;
2) спроектировать модуль проектирования ВЛС:
а) определить концепцию модели, разрабатываемой в модуле
проектирования ВЛС;
б) разработать функциональные модели модуля в нотациях IDEF0,
IDEF3, DFD;
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
7
в) определить
структуры
данных,
с
которыми
будет
взаимодействовать модуль проектирования ВЛС для сохранения
и загрузки моделей;
г) определить грамматику визуального языка программирования
LabScript;
д) разработать объектно-ориентированные модели организации
архитектуры модуля с использованием языка UML.
3) разработать программную реализацию модуля проектирования
ВЛС:
а) выбрать язык программирования;
б) реализовать модуль с использованием выбранного языка
программирования;
в) разработать демонстрационный пример.
4) произвести технико-экономическое обоснование разработки
модуля проектирования:
а) рассчитать затраты на создание модуля и на его цену;
б) рассчитать выручку и прибыль от реализации;
в) рассчитать затраты, связанные с покупкой, внедрением и
использованием модуля проектирования ВЛС.
1.3 Формирование требований
Модуль проектирования виртуальных лабораторных стендов (ВЛС)
является частью системы автоматизированного проектирования LabCAD,
которая состоит из следующих модулей: модуль обслуживания, модуль
интерпретатора, модуль компилятора. Модуль обслуживания предназначен
для выполнения служебных операций с системой, например, поиск
актуальных обновлений модулей и их загрузка. Модуль интерпретатора
предназначен для выполнения процесса симуляции, при котором
обучающийся может взаимодействовать со ВЛС и получать результаты
реакции ВЛС на действия обучающегося. Модуль компилятора предназначен
для создания из файла стенда исполняемого автономного приложения.
Для модуля определена одна группа пользователей – преподаватели,
заинтересованные в уменьшении временных и иных видов затрат на
разработку ВЛС при наличии базовых навыков разработки программных
систем. Соответственно, с точки зрения преподавателей модуль
проектирования ВЛС должен обеспечивать автоматизацию процесса
создания ВЛС в части определения структуры стенда и использования
расширений, содержащих необходимый набор функций для реализации ВЛС
в рамках конкретной предметной области.
К используемым модулем данным предъявляются следующие
требования: они должны поддерживаться языком программирования C# 7.3,
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
8
поддерживать сериализацию и десериализацию для обеспечения процесса
сохранения и загрузки ВЛС.
Далее следует описать функционал модуля проектирования ВЛС.
Преподаватель при взаимодействии с модулем может работать с
моделями: создавать новые модели и загружать уже существующие. Каждая
модель состоит из двух частей: метаданных модели, включающих в себя
краткие сведения о модели (название модели, версия модели, автор модели,
краткое описание модели) и данные о полях проектирования, и совокупности
взаимосвязанных между собой объектов модели.
Связь между объектами модели подразумевает то, что они
предоставляют некоторые свои переменные и доступ к публичным функциям
связанным с ними объектам.
Преподаватель может работать с расширениями, то есть группами
объектов модели конкретной предметной области, которые он будет
использовать в своем проекте: подключать и отключать их.
Преподаватель может взаимодействовать с полями проектирования
для размещения объектов модели в пределах данных полей, установления
связей между объектами (доступно только для проектирования логики),
изменения размеров объектов. Всего имеются два вида полей
проектирования: поле проектирования логики и поле проектирования
интерфейса.
Поле проектирования логики предназначено для организации
внутренней структуры ВЛС и организации взаимодействия объектов модели
между собой.
Поле проектирования интерфейса предназначено для формирования
графического интерфейса ВЛС, предоставляемого обучающемуся.
Преподаватель может менять как переменные объектов (добавлять
новые, удалять и модифицировать имеющиеся, за исключением
программных
переменных,
которые
предоставляют
разработчики
расширений и которые необходимы для правильного функционирования
объектов модели), так и добавлять поведение объектам.
Поведение объекта представляет собой иерархическую древовидную
структуру простых конструкций (присваивание значения переменной объекта
модели, вызов функции объекта) и управляющих конструкций (циклов,
условий), вложенных в программы, с помощью которых пользователь может
реализовать логику работы объекта в рамках проектируемого ВЛС, что
является дополнением к базовому функционалу объекта, заложенного в него
разработчиком расширения.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
9
Преподаватель в конце процесса проектирования может сохранить
модель в виде файла в удобном для него месте.
С учетом выбранной платформы разработки .NET Framework работа
данного модуля возможна только на ЭВМ под управлением ОС Windows и с
наличием платформы .NET Framework. В настоящей работе будет
использована версия 4.5.2 указанной платформы разработки.
1.4 Обзор существующих аналогов программной реализации
При поиске имеющихся на рынке программных аналогов,
предоставляющих средства для создания виртуальных лабораторных
стендов, были найдены следующие программные системы: Simulink,
LabVIEW, JMCAD, VisSim. Последние две системы, согласно датам выхода
последних версий и активности на официальных сайтах, перестали
развиваться, поэтому могут не рассматриваться как конкуренты в данной
области. Однако программа JMCAD разработана украинским разработчиком,
что делает ее наиболее близкой к программам отечественного производства,
поэтому она также будет рассмотрена наравне с первыми двумя из
найденных. Сравнение данных систем можно рассмотреть по следующим
критериям: стоимость, разграничение интерфейсов пользователя и
разработчика, возможность расширения стандартной библиотеки, целевые
платформы, использование визуальных языков программирования,
ориентация на создание обучающих программных систем.
1.4.1 Графическая среда Simulink
Simulink – это графическая среда имитационного моделирования,
позволяющая при помощи блок-диаграмм в виде направленных графов,
строить динамические модели, включая дискретные, непрерывные и
гибридные, нелинейные и разрывные системы.
Она позволяет использовать уже готовые библиотеки блоков для
моделирования электросиловых, механических и гидравлических систем, а
также применять развитый модельно-ориентированный подход при
разработке систем управления, средств цифровой связи и устройств
реального времени.
Средства моделирования Simulink основываются на программных
средствах MATLAB, но позволяют обойтись без использования в явном виде
языка MATLAB и создавать модели из стандартных блоков в графическом
виде.
Экранная форма интерфейса Simulink представлена на рисунке 1.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
10
Рисунок 1 – Экранная форма интерфейса Simulink
Графическая среда Simulink имеет следующие достоинства:
настройка пользовательского интерфейса для модели;
возможность расширения стандартной библиотеки элементов;
поддержка основных платформ (Microsoft Windows, Linux, macOS);
наличие визуального языка программирования, представленного в
виде соответствующих элементов в стандартной библиотеке, а также
расширениях;
наличие необходимых средств для реализации обучающих
программных систем.
Недостатки у графической среды следующие:
высокая стоимость (версия для академического использования: 275
долларов в год; 550 долларов - бессрочно);
относительная
сложность
организации
взаимодействия
пользовательского интерфейса с моделью;
ограниченные возможности визуального языка программирования.
Последней версией графической среды является Simulink R2020a.
1.4.2 Программное обеспечение LabVIEW
LabVIEW – это среда разработки и платформа для выполнения
программ, созданных на графическом языке программирования «G» фирмы
National Instruments (США).
LabVIEW используется в системах сбора и обработки данных, а также
для управления техническими объектами и технологическими процессами.
Идеологически LabVIEW очень близка к SCADA-системам, но в отличие от
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
11
них в большей степени ориентирована на решение задач не столько в области
АСУ ТП, сколько в области АСНИ.
Графический язык программирования «G», используемый в LabVIEW,
основан на архитектуре потоков данных. Последовательность выполнения
операторов в таких языках определяется не порядком их следования (как в
императивных языках программирования), а наличием данных на входах
этих операторов. Операторы, не связанные по данным, выполняются
параллельно в произвольном порядке.
Экранная форма интерфейса LabVIEW представлена на рисунке 2.
Рисунок 2 – Экранная форма интерфейса LabVIEW
Среда разработки LabVIEW обладает следующими достоинствами:
разграничение интерфейсов пользователя и разработчика;
возможность расширения стандартной библиотеки инструментов;
поддержка платформы Microsoft Windows;
наличие визуального языка программирования.
Среда разработки LabVIEW имеет следующие недостатки:
высокая стоимость (базовая версия стоит 400 долларов в год);
сложности при интерпретации и разработке программ при
использовании визуального языка программирования;
ориентация на разработку систем контрольно-измерительных
приборов.
Последней версией среды разработки является LabVIEW 2020.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
12
1.4.3 Программный комплекс JMCAD
JMCAD (JMCADRTS, JMCADRTC) – это программный комплекс для
моделирования и симуляции (анализа динамики и проектирования) сложных
динамических систем.
Программный комплекс имеет три отдельных независимых блока
JMCAD, JMCADRTS, JMCADRTC. JMCAD – основной блок для создания и
редактирования моделей. JMCADRTS – блок для запуска модели в режиме
работы. JMCADRTC – блок для запуска интерфейса контроля и управления
моделью.
Экранная форма интерфейса JMCAD представлена на рисунке 3.
Рисунок 3 – Экранная форма интерфейса JMCAD
Программный комплекс JMCAD может быть рассмотрен как
программа, имеющая следующие достоинства:
бесплатность;
разграничение интерфейсов пользователя и разработчика;
возможность расширения стандартной библиотеки элементов за
счет написания своих;
мультиплатформенность;
встроенный визуальный язык программирования, представленный в
виде соответствующих элементов стандартной библиотеки;
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
13
наличие необходимых
программных систем.
средств
для
разработки
обучающих
К недостаткам программного комплекса JMCAD относятся
ограниченные возможности визуального языка программирования.
Последней версией программного комплекса является JMCAD-09.130.
1.5 Выводы к разделу 1
В данном разделе в ходе анализа предметной области были разобраны
понятия виртуального лабораторного стенда и САПР для ВЛС, а также
рассмотрены особенности виртуальных лабораторных стендов.
В процессе определения задач проекта было решено в качестве
подготовительной работы рассмотреть аналоги для определения
особенностей разрабатываемого модуля, затем спроектировать модуль
проектирования ВЛС и непосредственно реализовать модуль в рамках
поставленной цели; оценить экономические затраты, выручку, а также
прибыль от реализации модуля проектирования.
Для комплексного рассмотрения аналогов программной реализации
была составлена следующая таблица (таблица 1).
Таблица 1 ‒ Сравнение аналогов
Критерий
сравнения
Simulink
1
LabVIEW
2
JMCAD
3
4
Стоимость
275 долларов в год; 400 долларов в год
550 долларов бессрочно
бесплатная
Разграничение
интерфейсов
пользователя и
разработчика
имеется,
но имеется
требуется знание
языка MATLAB
имеется
Возможность
расширения
стандартной
библиотеки
имеется
имеется
Целевые
платформы
Microsoft Windows, Microsoft Windows
Linux, macOS
Изм Лист
докум.
Подпись Дата
имеется
мультиплатформенная
ТПЖА.090302.036 ПЗ
Лист
14
Продолжение таблицы 1
1
2
Использование
имеется,
визуальных языков возможности
программирования ограничены
Ориентация
создание
обучающих
программных
систем
на
имеется
3
но
4
имеется,
но имеется,
большие
схемы возможности
сложны
для ограничены
восприятия
в первую очередь
ориентирована на
разработку
контрольноизмерительных
систем
но
имеется
Изучение аналогов показало, что требуется реализовать модуль,
который поддерживал бы изначальное разделение модели на внутреннее
логическое представление работы модели и внешнее представление, видимое
пользователю при интерпретации или выполнения исполняемого файла
модели; имел визуальный язык программирования, удобный в
использовании, который бы позволял организовывать не только работу на
уровне математических моделей, но и был способен в целом организовывать
работу модели как самостоятельной программы, способной к
взаимодействию с пользователем; имел более низкую цену по сравнению с
аналогами.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
15
2 Проектирование модуля проектирования виртуальных
лабораторных стендов
После принятия решения о необходимости разработки модуля следует
произвести проектирование структуры программы. Помимо разработки
функциональных моделей и объектно-ориентированных моделей на языке
UML, определения структуры данных для сохранения и загрузки модели, в
настоящей работе имеет большое значение формирование концепции модели
и описание визуального языка программирования, с помощью которого
будет осуществляться процесс разработки модели в данной САПР.
2.1 Определение концепции модели
Чтобы перейти к проектированию модуля, необходимо задаться
вопросом о том, что же представляет собой модель в рамках данного модуля.
Конечно, ранее уже давалось замечание о том, что понятия «модель» и
«виртуальный лабораторный стенд» являются синонимами, а определение
последнего было дано в анализе предметной области. Однако погружение в
архитектуру модуля проектирования виртуальных лабораторных стендов
требует более детального понимания модели.
Модель – это совокупность связанных тем или иным способом
объектов модели, имеющих список привязанных переменных объекта,
ориентированных на взаимодействие с объектами модели и пользователем
через задаваемое с помощью визуального языка программирование
поведение, предназначенная для моделирования процесса, явления или
объекта конкретной предметной области.
Именно на создание модели с последующим ее сохранением в виде
файла специального формата ориентирован весь процесс проектирования в
данном модуле. Дальнейшие действия по работе с моделью предполагают
либо продолжение редактирования содержимого модели с целью перевода ее
в состояние, при котором пользователь модуля сочтет уровень соответствия
модели своим ожиданиям допустимым, либо передача файла модели другим
модулям для интерпретации или компиляции.
Следует отметить, что процесс выполнения модели имеет в своей
основе понятие цикла работы модели.
Перед рассмотрением цикла работы модели важно еще раз обратиться
к определению модели и разобрать на более детальном уровне ключевые
компоненты модели: «объект модели», «переменная объекта», «поведение
объекта».
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
16
2.1.1 Объект модели
Объект модели (объект) – это семантически и программно
обособленная единица модели, несущая в себе часть информации в форме
переменных объекта и часть логики работы модели в форме поведения
объекта.
Объект модели содержит также служебную информацию: уникальный
идентификатор объекта, изображение объекта, название объекта, список
ассоциаций объекта, контейнер логики, список связанных объектов, базовый
тип объекта, флаги активности, редактирования переменных и поведения
объекта, заголовок объекта. В настоящий момент не нужно вдаваться в
смысл каждого из элементов служебной информации объекта, необходимо
лишь иметь ввиду, что такие понятия в рамках данной САПР существуют и
будут раскрываться по мере необходимости.
Каждый объект модели состоит из нескольких частей, состав которых
– разный, в зависимости от типа объекта. Можно выделить следующий
общий вид объекта модели по составу частей (рисунок 4).
Вход объекта
Заголовок объекта
Выход объекта
Тело объекта
Рисунок 4 ‒ Общий вид объекта по составу частей
Следует сразу отметить, что на рисунке изображены только части,
которые имеют наибольшее значение для рассмотрения в рамках данного
пункта.
Как видно из рисунка 4, объект в своем общем виде состоит из
четырех частей, которые связаны линиями передачи данных. Вход объекта
содержит входные переменные, и на него поступает информация от других
объектов. Заголовок объекта содержит переменные общего назначения для
хранения промежуточных значений, полученных в результате обработки
данных в объекте, часть логики в форме программ, связанных с событиями:
запуска модели и обновления состояния модели. Выход объекта содержит
выходные переменные, и с него информация поступает на входы других
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
17
объектов. Тело объекта содержит список публичных функций, доступных
для исполнения самим объектом и связанными с ними объектами.
Связь между объектами подразумевает, что объекты могут передавать
данные между своими входами и выходами, а также вызывать публичные
функции друг друга, и в графической форме представлена в виде линии.
Также связь в рамках данной САПР называется ассоциацией.
Всего существует четыре типа объектов, которые называются
базовыми типами объектов: объект общего назначения, объект ввода, объект
ввода, объект вывода, объект данных.
Первый тип объекта соответствует по составу рисунку 4. Он
непосредственно не взаимодействует с пользователем, а, как и объект
данных, взаимодействует только с другими объектами.
Объекты ввода и вывода предназначены не только для
взаимодействия с другими объектами, но и получения данных от
обучающегося и передачи ему результатов обработки за счет того, что
помимо контейнера логики имеют и контейнер интерфейса.
Контейнеры представляют собой графическое представление объекта
на поле проектирования, и с помощью их пользователь модуля
проектирования может взаимодействовать с объектами. Всего существует
два типа контейнеров: контейнер логики и контейнер интерфейса. Контейнер
логики является основным контейнером объекта модели, с помощью него
пользователь модуля изменяет список переменных объекта и задает
поведение объекту. Контейнер интерфейса предназначен для отображения
объекта в виде некоторого элемента управления, называемого объектом
интерфейса, расположенного на представлении интерфейса стенда, с
которым уже может взаимодействовать обучающийся.
Объект интерфейса может содержать программы, обрабатывающие
события, специфичные для данного объекта (например, событие «Клик» для
объекта интерфейса «Кнопка»).
Состав частей объектов ввода и вывода представлен на рисунках 5 и 6
соответственно.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
18
Заголовок объекта
Выход объекта
Тело объекта
Объект интерфейса
Рисунок 5 ‒ Состав частей объекта ввода
Вход объекта
Заголовок объекта
Тело объекта
Объект интерфейса
Рисунок 6 ‒ Состав частей объекта вывода
Объект данных предназначен исключительно для хранения данных,
поэтому имеет только заголовок объекта, но при этом он автоматически с
момента создания в неявном виде связан со всеми объектами модели.
Базовые типы объектов не могут использоваться сами по себе, а на их
основе должны быть уже созданы объекты, входящие в состав определенных
расширений, ‒ объекты расширений (рисунок 7).
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
19
Уровень САПР
Объект модели
Объект общего
назначения
Объект ввода
Объект вывода
Объект данных
Уровень расширений
Объект
расширения А
Объект
расширения Б
Объект
расширения В
Объект
расширения Г
Рисунок 7 ‒ Два уровня реализации объектов в данной САПР
Именно за счет расширений, которые представляют собой
совокупность объектов модели конкретной предметной области, возможно
создание различных по своей направленности моделей.
Однако сразу следует обратить внимание на то, что объекты
расширений можно называть объектами модели и одним из базовых типов
объектов, соответствующих данному объекту расширений, с тем замечанием,
что они имеют некоторые дополнительный функционал, позволяющий
отнести объект модели к конкретной предметной области.
2.1.2 Переменная объекта
Вторым базовым понятием, после «объект модели», является такой
элемент данного САПР, как «переменная объекта».
Переменная объекта (переменная) – это программный контейнер,
инкапсулирующий в себе значение данной переменной с дополнительной
служебной информацией для корректной обработки переменной в контексте
модели и для обеспечения взаимодействия с ней пользователя, и содержащий
в себе совокупность методов по выполнению служебных операций с
переменной.
В зависимости от типа переменной совокупность служебной
информации и методов может быть различной, но для всех типов
переменных характерен следующий список метаинформации о переменной:
название переменной, описание переменной, тип данных переменной.
Классификация переменных представлена на рисунке 8.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
20
Переменная объекта
По типу создания
По типу данных
По назначению
Программные
Логические
Логики
Пользовательские
Целые
Интерфейса
По направлению
передачи данных
Общего назначения
Дробные
Ввода
Текстовые
Вывода
Содержащие
текстовый файл
Содержащие файл
изображения
Рисунок 8 ‒ Классификация переменных объекта
По типу создания переменные делятся на программные и
пользовательские. Программные переменные создаются разработчиком
расширений и изначально внедрены в программный код объектов
расширений, поэтому не могут быть удалены, и изменять можно лишь само
значение переменной объекта, а в некоторых случаях – и оно доступно
только для чтения. Пользовательские переменные создаются пользователем
во время разработки модели и могут быть редактироваться и удаляться в
процессе работы над моделью. Причем пользователь может изменять часть
служебной информации о пользовательской переменной: название
переменной и ее описание.
По типу данных переменные делятся на логические (принимаются
значения True или False), целые, дробные, текстовые, содержащие текстовый
файл и содержащие файл изображения. Последние два типа хранят путь к
файлу формата «.txt» и форматов «.jpg», «.bmp», «.png» соответственно
относительно расположения файла модели.
По назначению переменные делятся на переменные интерфейса и
переменные логики. Первые всегда относятся к программным переменным и
расположены в заголовке объекта. Они необходимы для задания свойств
объектам интерфейса. Вторые переменные расположены в одной из трех
частей объекта модели: вводе, выводе или заголовке объекта. Они
используются для формирования логики работы модели.
Переменные логики также делятся по направлению передачи данных
на переменные общего назначения, переменные ввода и переменные вывода.
Отдельного внимания здесь заслуживают переменные ввода и вывода, так
как их механизм работы отличается от механизма работы переменной общего
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
21
назначения. Если переменная общего назначения предназначена для
хранения промежуточных данных объекта, то другие два типа переменных
предназначены для реализации обмена данных между объектами и
представляют собой ссылочные типы данных. Ссылочный характер
переменной вывода проявляется в том, что при задании ей значения, это
значение будет задано для всех переменных ввода, связанных с ней. В свою
очередь, ссылочный характер переменных ввода проявляется в том, что они
связаны с переменной вывода, и их значение является копией значения
соответствующей переменной вывода, за исключением случаев явного
вмешательства в работу механизма связей с помощью поведения объекта.
Переменным ввода нельзя явно задать значение, они доступны в этом
контексте только для чтения. Одна переменная ввода может ссылаться
только на одну переменную вывода, с другой стороны, одна переменная
вывода может иметь несколько связанных с ней переменных ввода. Причем
обе эти переменные должны относиться в случае связи к разным объектам
модели. Также важно заметить, что связать можно лишь переменные, типы
данных которых совпадают.
2.1.3 Поведение объекта
После введения переменной объекта необходимо каким-то образом
предоставить пользователю возможность формировать логику работы
модели на уровне отдельных объектов. Здесь добавляется понятие
«поведение объекта».
Поведение объекта – совокупность программ объекта модели,
которые реализуют определенные алгоритмы обработки полученных
объектом данных, сохранения результатов обработки и (или) передачи их
другим объектам и пользователю.
Программа – это последовательность конструкций нижнего уровня
визуального языка программирования LabScript, LabScript for Behaviour.
Подробнее о языке будет рассмотрено в пункте «Визуальный язык
программирования LabScript».
Каждая программа привязана к определенному событию, обработкой
которого она занимается. Всего существует два типа событий: системные и
события интерфейса. Системные события представлены всего двумя
событиями: «Старт», которое генерируется для каждого объекта модели при
ее запуске на исходном большом цикле работы модели, «Обновление»,
которое генерируется для каждого объекта в ходе промежуточного большого
цикла работы модели. Программы, обрабатывающие данные события,
расположены в заголовке объекта модели. События интерфейса являются
специфичными для каждого объекта модели и реализованы в объекте
интерфейса, связанного с данным объектом. Соответственно, там же и
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
22
располагаются программы для обработки этих событий. Подробнее о цикле
работы модели и его видах рассказано в следующем пункте.
2.1.4 Цикл работы модели
Выполнение модели модулем интерпретации или как отдельного
исполняемого файла связано с циклом работы модели.
Цикл работы модели – строго
выполнения программ объектов модели.
заданная
последовательность
В связи с тем, что были выделены два типа событий, можно выделить
и два типа циклов работы модели: большой цикл работы модели, связанный с
обработкой системных событий, малый цикл работы модели, связанный с
обработкой событий интерфейса. Если больших циклов работы модели
может быть только два, то малых циклов может быть столько же, сколько и
объектов интерфейса имеется у модели.
Схематично оба эти типа циклов можно изобразить следующим
образом (рисунок 9).
Рисунок 9 ‒ Циклы работы модели
На рисунке 9 сплошными линиями показаны передача управления, а
пунктирными – обмен данными. Под передачей управления от объекта к
объекту подразумевается обращение к объекту для выполнения его
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
23
программ, соответствующих типу большого цикла работы модели. Передача
управления от пользователя к объекту заключается во взаимодействии
пользователя с объектом интерфейса, что приводит к генерации
соответствующего события и вызова программы обработки данного события.
Под передачей управления от объекта к пользователю подразумевается
завершение обработки события, связанного с объектом интерфейса, и
предоставлению пользователю возможности следующего взаимодействия с
объектами интерфейса. Следует рассмотреть подробнее каждый из циклов
работы модели.
Начать рассмотрение можно с большого цикла работы модели, как
основополагающего. Существует строгая последовательность передачи
управления: первым делом происходит выполнение программ, содержащихся
в объектах ввода, далее – в объектах общего значения, и, в конечном счете, –
в объектах вывода. Это связано логически с тем, что данные на начальном
этапе проходят через процесс получения, затем – через процесс обработки,
результаты которого передаются процессу отправки результатов обработки
данных. Именно такой последовательности подчиняется большой цикл
работы модели. Исключением из данного правила являются объекты данных,
которые непосредственно не участвуют в циклах работы модели, однако к
ним могут обращаться другие объекты в ходе получения управления для
сохранения или получения данных. Выделяются два типа больших циклов
работы модели: исходный большой цикл работы модели и промежуточный
большой цикл выполнения модели. Первый предназначен для выполнения
программ, связанных с системным событием «Старт» при запуске модели на
исполнение. Промежуточный большой цикл работы модели предназначен
для выполнения программ, связанных с системным событием «Обновление»
при итерационном характере работы модели после выполнения исходного
большого цикла до окончания процесса выполнения модели.
Отдельным видом циклов работы модели выступает малый цикл
работы модели. Его особенность в том, что он выполняется независимо от
большого цикла работы модели и для того объекта модели, у которого было
сгенерировано событие объекта интерфейса. То есть цикл начинается с того,
что пользователь передает управление объекту интерфейса, далее после
выполнения
соответствующей
программы
управление
передается
пользователю, и цикл завершается.
2.2 Разработка функциональных моделей
В качестве следующего этапа проектирования модуля выступает
разработка функциональных моделей с использованием методологий IDEF0,
IDEF3, DFD.
Контекстная диаграмма IDEF0 представлена в приложении А, лист 82.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
24
На контекстной диаграмме в качестве входов в блок модуля
выступают файл модели при его наличии, описание предметной области
ВЛС, файлы расширений, необходимые для реализации ВЛС в рамках
указанной предметной области.
В качестве управления выступают инструкции по эксплуатации
модуля и требования, которыми должна соответствовать ВЛС, чтобы
поддерживалась целостность и непротиворечивость объектов ВЛС.
В качестве механизмов выступают непосредственно пользователь
модуля и программная реализация модуля.
На выходе в процессе проектирования ВЛС можно получить файл
модели.
Декомпозиция контекстной
приложении А, лист 83.
диаграммы
IDEF0
представлена
в
На диаграмме декомпозиции можно видеть, что процесс
проектирования состоит из трех подпроцессов: подготовки рабочего
пространства, непосредственно процедуры проектирования ВЛС и
сохранения результатов.
Подготовка рабочего пространства (приложение А, лист 84) включает
в себя подключение необходимых для процесса проектирования расширений
и подготовку модели, то есть загрузку модели, либо создание новой при
отсутствии файла модели.
Процедура проектирования ВЛС (приложение А, лист 85) состоит из
трех подпроцессов, необходимых для разработки ВЛС: проектирования
содержимого ВЛС, изменение списка расширений и изменения информации
о ВЛС – и подпроцесса оценки качества созданной модели с точки зрения
пользователя, при котором возможно возвращение на предыдущие
подпроцессы для исправления найденных замечаний.
Отдельно следует сказать о подпроцессе проектирования
содержимого ВЛС (приложение А, лист 86). Данный подпроцесс
декомпозируется на четыре стадии: задания состава объектов ВЛС путем
удаления и добавления новых объектов расширений на поле проектирования
логики, изменения интерфейсной части ВЛС, которую будет видеть
обучающийся в процессе выполнения модели, установления связей между
объектами, задания (изменения) переменных объектов и изменения
поведения объектов.
Подпроцесс сохранения результатов (приложение А, лист 87)
необходим для формирования модели из совокупности объектов модели и
информации о ВЛС, которая потом сохраняется в виде файла.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
25
Контекстная диаграмма IDEF3 представлена в приложении Б, лист 89.
На диаграмме декомпозиции (приложение Б, лист 90) представлено
три идущих последовательно элемента поведения: подготовка рабочего
пространства, проектирование ВЛС, сохранение результатов.
Подготовка рабочего пространства (приложение Б, лист 91) включает
последовательное выполнение двух элементов поведения: подключения
расширений и подготовки модели.
Проектирование ВЛС (приложение Б, лист 92) происходит
следующим образом. Начинается процесс проектирования содержимого
модели, после которого осуществляется оценка качества проектирования: в
случае наличия недочетов происходит возвращение к началу проектирования
с изменением списка подключенных расширений и информации о ВЛС при
необходимости.
Проектирование содержимого ВЛС (приложение Б, лист 93)
представляет собой последовательность элементов поведения: определение
списка объектов, изменение интерфейса ВЛС, установление связей между
объектами, изменение переменных объектов и изменение поведения
объектов.
При сохранении результатов (приложение Б, лист 94) сначала
формируется модель, далее происходит сохранение модели в файл.
Контекстная диаграмма DFD представлена в приложении В, лист 96.
Модель модуля DFD представляет собой обобщенное отображение
архитектуры программной реализации модуля.
На контекстной диаграмме DFD отображено взаимодействие модуля
проектирования ВЛС с пользователем и с внешним хранилищем, под
которым подразумевается в общем случае энергонезависимый носитель
информации.
Модуль проектирования ВЛС разбит на несколько менеджеров
(приложение В, лист 97): менеджер модели, менеджеров проектирования,
менеджер расширений, менеджер строки состояния, менеджер консоли.
Менеджер представляет собой бизнес-логику, отделенную от интерфейса.
Особое внимание заслуживает блок «Элементы управления», который
объединяет в себе всю совокупность элементов пользовательского
интерфейса со специфичной для них логикой обработки действий
пользователя. В элементы управления входит и механизм проектирования
поведения объекта. Также в ходе проектирования используются следующие
хранилища: хранилище с информацией о ВЛС, хранилище со списком
объектов и хранилище с объектами ввода и вывода.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
26
Менеджер модели предназначен для осуществления процесса
загрузки, сохранения файла модели, создания новой модели путем указания
информации о ВЛС, изменения информации о ВЛС.
Менеджер расширений предназначен для подключения и отключения
расширений, а также для передачи описаний типов объектов элементам
интерфейса для их создания. Кроме того, он позволяет посмотреть
информацию о расширении. Имеет хранилище подключенных расширений.
Менеджеры проектирования (приложение В, лист 98) предназначены
для осуществления непосредственно процесса проектирования. Они состоят
из следующих менеджеров: менеджер поля проектирования логики,
менеджер поля проектирования интерфейса, менеджер переменных логики.
Менеджер поля проектирования логики предназначен для
организации логики работы модели через организацию взаимосвязей между
объектами и определение состава данных объектов.
Менеджер поля проектирования интерфейса предназначен для
расположения объектов интерфейса для формирования дизайна интерфейса
ВЛС.
Менеджер переменных логики предназначен для редактирования
переменных логики объектов.
Менеджер консоли (приложение В, лист 97) предназначен для
формирования обратной связи с пользователем через консоль.
Менеджер строки состояния (приложение В, лист 97) предназначен
для формирования обратной связи с пользователем через строку состояния.
2.3 Разработка моделей данных
Модели
данных
являются
неотъемлемой
частью
любой
информационной системы. В рамках данной работы все модели данных
можно разделить на две большие группы: модели данных, используемые при
работе модуля, и модели данных, используемые для сохранения и загрузки
модели.
Первая группа моделей данных непосредственно связана с классами,
поэтому будет отображена на диаграмме классов.
Вторая группа моделей данных является производной от первой
группы моделей данных с тем отличием, что эти данные пригодны для
сохранения и загрузки на энергонезависимый носитель информации.
В ходе выбора способа хранения модели было принято решение
разработать собственный формат хранения данных в связи с тем, чтобы
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
27
повысить скорость процесса сохранения и загрузки данных и управлять
данными процессами на более низком уровне.
Основой для реализации вышеупомянутого стало использование
механизма бинарной сериализации и десериализации, предоставляемого
платформой .NET Framework, с дополнением его разработанным в рамках
выпускной квалификационной работы механизма восстановления ссылочной
целостности данных, о котором будет сказано при проектировании функции
«Загрузить модель» в пункте 2.5.
Диаграмма сериализации моделей данных представлена в приложении
Г.
Всю структуру сериализуемых данных можно описать с точки зрения
иерархии.
Коренным объектом иерархии сериализации является модель, которая
включает в себя метаданные о модели и совокупность объектов расширений.
Объекты расширений имеют некоторый базовый набор данных,
содержащихся в каждом объекте модели. К ним относятся
идентификационный номер объекта, имя объекта, базовый тип объекта,
идентификационный номер расширения, с которым связан данный объект,
флаги редактирования алгоритма поведения и переменных объекта,
состояние активности, список ассоциаций, контейнер логики объекта и
заголовок объекта.
Ассоциации хранят в себе идентификационные номера связанных
объектов, логическую переменную, указывающую на наличие линии, и
линию, при ее наличии. Линия хранится только у одной ассоциации из пары
для избегания дублирования.
Линия хранит в себе: масштаб линии, начальную и конечную точки
линии в оригинальном масштабе (масштабе по умолчанию), список точек для
создания пути между объектами.
Контейнер логики объекта является производным от контейнера.
Контейнер в общем случае хранит следующие данные: идентификационные
номер родительского объекта, к которому он прикреплен, объект интерфейса,
который оборачивается данным контейнером, масштаб, размер и положение
при оригинальном масштабе.
Объект интерфейса должен быть пригодным для сохранения и
загрузки. Разработчик может реализовать свой алгоритм сохранения и
загрузки объекта интерфейса или воспользоваться готовым классом,
позволяющим сохранить размеры и положение объекта интерфейса.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
28
Заголовок
объекта
хранит
информацию
об
уникальном
идентификаторе объекта модели, к которому он привязан, программы
обработки событий «Старт» и «Обновление», список переменных общего
назначения.
Помимо заголовка, в зависимости от базового типа объекта, объект
модели может иметь и другие части: вход объекта и выход объекта, для
которых сохраняются списки выходных и выходных переменных
соответственно.
Переменная объекта в общем случае хранит следующие данные:
уникальный идентификатор переменной, имя переменной, краткое описание
переменной, уникальный идентификатор объекта модели, с которой она
связана, направление передачи данных, тип данных переменной, данные
переменной. Для входной переменной также хранится информация о
наличии выходной переменной, с которой она связана, в виде уникального
идентификатора, при наличии связанной выходной переменной, и
логического значения, указывающего на наличие связи. Для выходной
переменной – логическое значение, отображающее непустое состояние
списка уникальных идентификаторов входных переменных, связанных с ней,
и сам список, при его наличии.
Программа хранит в себе последовательность конструкций. В
зависимости от типа конструкций они хранят различный набор данных:
конструкция присваивания хранит выражение операнда переменной, которой
присваивается новое значение, и выражение, значение которого
присваивается; конструкция вызова хранит в себе выражение операнда
вызова; управляющая конструкция содержит тип управляющей конструкции
(условие «ЕСЛИ», подусловие «ИЛИ_ЕСЛИ», подусловие «ИНАЧЕ» или
цикл «ПОКА»), условие выполнения конструкции в виде логического
выражения и список конструкций.
Выражение в общем случае хранит информацию о типе
дополнительной функции и типе данных выражения. Арифметическое
выражение хранит информацию о типах арифметических операций и список
самих операндов. Логическое выражение хранит тип логической операции и
список логических операндов.
Выражения операнда делятся на три типа, в зависимости от которого
формируется разный набор сохраняемых данных: выражение операнда
константы, выражение операнда вызова и выражение операнда переменной.
Выражение операнда константы хранит информацию о типе данных
константы и значение самой константы. Выражение операнда вызова хранит
информацию о вызываемой функции. Функция обладает следующим
набором данных для сохранения: название функции, краткое описание
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
29
функции, возможность возвращения значения, указывающая на наличие или
отсутствие возвращаемого типа данных, возвращаемый тип данных, списки
имен и типов данных аргументов.
Выражение операнда переменной в общем случае хранит
информацию о том, доступно ли значение переменной только для чтения.
Выделяются два типа выражений операнда переменной: выражение операнда
логической переменной и выражение операнда переменной интерфейса.
Выражение операнда логической переменной хранит информацию о
переменной и объекте в виде уникальных идентификаторов, направлении
передачи данных переменной. Выражение операнда переменной интерфейса
содержит уникальный идентификатор объекта и название свойства, с
которым связан операнд.
2.4 Визуальный язык программирования LabScript
Ранее упоминалось, что одним из ключевых компонентов модели
является поведение объекта.
Реализация его возможна за счет нижнего уровня разработанного
визуального языка программирования под названием LabScript. Всего у
данного языка имеется два уровня реализации: верхний и нижний.
Верхний уровень называется LabScript for Objects и представляет
собой подмножество языка программирования для манипуляции объектами
модели: созданием и удалением их, организацией системы связей. В связи с
тем, что модуль может иметь в своем составе различный список
подключенных расширений, то и состав графических объектов верхнего
уровня языка может существенно различаться. Именно под этим верхним
уровнем подразумевается тот механизм работы с объектами, о котором в том
или ином виде было рассказано в других разделах выпускной
квалификационной работы. Больший интерес с учетом вышесказанного в
рамках данного пункта имеет нижний уровень визуального языка
программирования LabScript.
Нижний уровень называется LabScript for Behaviour и предназначен
для формирования программ для обработки событий в объекте модели. Если
верхний уровень языка представляет собой совокупность графических
элементов, то нижний уровень визуального языка программирования имеет в
своем составе уже текстографические элементы. Это означает, что при
проектировании программ на LabScript for Behaviour возрастает роль
текстовых обозначений, но при этом ими можно манипулировать, как
графическими элементами.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
30
2.4.1 Синтаксис LabScript for Behaviour
Имеет смысл записать упрощенный синтаксис подмножества языка в
расширенной форме Бэкуса-Наура:
Программа = {Конструкция}.
Конструкция = Управляющая конструкция | Конструкция вызова |
Конструкция присваивания.
Управляющая конструкция = Цикл | Условие.
Условие = Условие «ЕСЛИ», {Условие «ИЛИ_ЕСЛИ»}, [Условие
«ИНАЧЕ»].
Условие «ЕСЛИ» = «ЕСЛИ », Логическое выражение, « , ТО:»,
{Конструкция}.
Условие «ИЛИ_ЕСЛИ» = «ИЛИ_ЕСЛИ », Логическое выражение, « ,
ТО:», {Конструкция}.
Условие «ИНАЧЕ» = «ИНАЧЕ:», {Конструкция}.
Цикл = «ПОКА », Логическое выражение, « , ДЕЛАТЬ:»,
{Конструкция}.
Конструкция вызова = (Дополнительная функция, «(», Выражение
операнда вызова, «)») | Выражение операнда вызова.
Конструкция присваивания = Выражение операнда переменной, « = »,
(Выражение операнда | Арифметическое выражение).
Арифметическое выражение = (Дополнительная функция, «(»,
Исходное арифметическое выражение, «)») | Исходное арифметическое
выражение.
Исходное арифметическое выражение = «(», (Арифметический
операнд,
Арифметическая
операция){(Арифметический
операнд,
Арифметическая операция)}, Арифметический операнд, «)».
Дополнительная функция = «ЭКСПОНЕНТА» | «КВАДРАТ» |
«КОРЕНЬ» | «ЛОГ-10» | «ЛОГ-N» | «СИНУС» | «КОСИНУС» | «ТАНГЕНС» |
«КОТАНГЕНС» | «ЦЕЛОЕ» | «ДРОБНОЕ» | «ТЕКСТ».
Арифметический операнд = Арифметическое выражение | Выражение
операнда.
Арифметическая операция = « + », « - », « / », « * ».
Логическое выражение = (Дополнительная функция, «(», Исходное
логическое выражение, «)») | Исходное логическое выражение.
Исходное логическое выражение = «(», (Выражение, Упрощенная
логическая операция, Выражение) | (Группа операндов «И» | Группа
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
31
операндов «ИЛИ» | Группа операндов «>» | Группа операндов «<» | Группа
операндов «>=» | Группа операндов «<=»), «)».
Логический операнд = Логическое выражение | Выражение операнда.
Группа операндов «И» = (Логический операнд, « И »){ (Логический
операнд, « И »)}, Логический операнд.
Группа операндов «ИЛИ» = (Логический операнд, « ИЛИ »){
(Логический операнд, « ИЛИ »)}, Логический операнд.
Группа операндов «>» = (Логический операнд, « > »){ (Логический
операнд, « > »)}, Логический операнд.
Группа операндов «<» = (Логический операнд, « < »){ (Логический
операнд, « < »)}, Логический операнд.
Группа операндов «>=» = (Логический операнд, « >= »){ (Логический
операнд, « >= »)}, Логический операнд.
Группа операндов «<=» = (Логический операнд, « <= »){ (Логический
операнд, « <= »)}, Логический операнд.
Упрощенная логическая операция = « == », « != ».
Выражение операнда = (Дополнительная функция, «(», Исходное
выражение операнда, «)») | Исходное выражение операнда.
Исходное выражение операнда = Выражение операнда константы |
Выражение операнда вызова | Выражение операнда переменной.
Выражение операнда константы = Целое число | Дробное число |
Логическое значение | Текст | Файл | Изображение.
Логическое значение = «True» | «False».
Текст = «”», Строка, «”».
Файл = «[txt]”», Путь к текстовому файлу, «”».
Изображение = «[img]”», Путь к изображению, «”».
Выражение операнда вызова = Название объекта, «.», Название
функции, «(», Список аргументов, «)».
Список аргументов = [{Выражение операнда, «, »}, Выражение
операнда].
Выражение операнда переменной = Название объекта, «.», Название
переменной.
Назначение выше представленного синтаксиса нижнего уровня языка
заключается в том, что он используется для формирования правил
построения элементов подмножества языка и для представления программ,
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
32
хранящихся в оперативной памяти, в текстовом виде, пригодном для
восприятия их пользователем.
Упрощенным данный синтаксис можно назвать потому, что
некоторые нетерминалы, указанные в РБНФ, не раскрываются явным
образом. Причина этого в том, что данные нетерминалы реализуются на
более низком уровне, чем логика работы визуального языка
программирования, за счет средств языка программирования C#. Для
каждого нераскрытого нетерминала будет дано пояснение в следующем
абзаце.
Всего существует восемь нетерминалов, для которых нет описания в
вышеуказанном синтаксисе: «Целое число», «Дробное число», «Текст»,
«Путь к текстовому файлу», «Путь к изображению», «Название объекта»,
«Название переменной», «Название функции». Нетерминал «Целое число»
соответствует объекту типа Int32 языка программирования C#; «Дробное
число» ‒ объекту типа Double языка программирования C#; «Текст» ‒
объекту типа String языка программирования C#; «Путь к текстовому файлу»
‒ объекту типа String языка программирования C#, при этом строка является
валидной с точки зрения относительного пути к файлу формата «.txt»; «Путь
изображению» ‒ объекту типа String языка программирования C#, при этом
строка является валидной с точки зрения относительного пути к файлам
форматов «.bmp», «.png», «.jpg»; «Название объекта», «Название
переменной» и «Название функции» ‒ объектам типа String языка
программирования C# и обозначают соответствующие названия объектов
модели, переменных объектов, функций объекта. Под функциями объекта
подразумеваются публичные функции объекта, доступные для использования
в поведении объекта.
Следует заметить, что в синтаксисе языка отсутствуют элементы
отделения конструкций друг от друга, так как данное подмножество
фигурирует как подмножество визуального языка программирования,
поэтому конструкции изначально отделены друг от друга на программном
уровне – хранятся в различных объектах структур данных. Представление
программ и их составных частей на нижнем уровне языка в виде
программных классов можно увидеть на диаграмме классов, о которой
сказано в пункте 2.5.
Еще важным моментом является то, что любая структура
подмножества LabScript for Behaviour является наследником класса
исполняемого элемента, то есть имеет в своей функциональности метод для
запуска механизма исполнения. Данный метод в текущей версии имеет
пустое тело и будет реализован в ходе разработки модуля интерпретации.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
33
2.4.2 Обработка ошибок
Все ошибки, которые связаны с программами, созданными на
LabScript for Behaviour, можно разделить на ошибки процесса
проектирования и ошибки процесса исполнения. Последние могут
возникнуть только на этапе исполнения модели, поэтому будут выявляться
модулем интерпретации либо в ходе исполнения файла модели в формате
«.exe». В настоящей работе будут рассмотрены лишь ошибки процесса
проектирования.
Обработка ошибок процесса проектирования, как синтаксических, так
и семантических, нижнего уровня языка LabScript осуществляется за счет
механизмов, реализованных как в элементах управления, представляющих
собой графическое отображение операндов, так и в Мастере действий,
связанным непосредственно с проектированием целых конструкций и
выражений. Каждый элемент управления операндом генерирует пустое
возвращаемое значение операнда в случае найденных ошибок на уровне
операнда, в результате Мастер действий имеет информацию об операндах,
сгенерировавших ошибку, и об ошибках на уровне конструкции или
выражения и принимает конечное решение о списке найденных ошибок
исходя из конкретной ситуации.
Для удобства пользователей было принято решение выводить все
найденные ошибки в виде отдельного окна в форме списка. Каждая ошибка
характеризуется объектом возникновения ошибки, кодом ошибки и текстом
ошибки.
Все ошибки, которые могут быть найдены при существующем
механизме поиска ошибок, представлены в таблице 2.
Таблица 2 ‒ Классификация ошибок
Объект
возникновения
ошибки
Код
ошибки
1
Конструкция
или выражение
Изм Лист
докум.
Текст ошибки
2
3
1.1
Отсутствуют операнды
1.2
Конструкция или выражение имеет неправильный формат
1.3
Должно быть, как минимум, два операнда
1.4
Типы данных операндов не совпадают
1.5
Для логических данных доступны только операции 'И' и
'ИЛИ'
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
34
Продолжение таблицы 2
1
Операнд
Операция
2
3
2.1
Операнд не имеет значения или неправильно задан
2.2
Тип операнда не соответствует типу конструкции или
выражения
2.3
Функция должна
выражении
2.4
Первый операнд не может иметь функцию
2.5
В арифметическом выражении можно использовать только
целые и дробные числа
2.6
В логическом выражении с число операндов, больше 2,
можно использовать только логический тип данных
2.7
Функция должна возвращать непустое значение в качестве
аргумента указанной функции
2.8
Тип данных аргумента не совпадает с указанным
3.1
Операция имеет неправильный формат
3.2
Операция не выбрана
3.3
Для строк доступна только операция сложения
3.4
Операции не совпадают
возвращать
непустое
значение
в
2.5 Моделирование с использованием языка UML
Для моделирования модуля проектирования ВЛС были использованы
диаграммы
вариантов
использования,
диаграмм
активности,
последовательности, состояний, классов и компонентов.
Рассмотрение результатов моделирования следует начать с диаграмм
вариантов использования, как диаграмм, задающих основные функции,
доступные пользователям разрабатываемого модуля.
Контекстная
диаграмма
представлена на рисунке 10.
Изм Лист
докум.
Подпись Дата
модели
вариантов
использования
ТПЖА.090302.036 ПЗ
Лист
35
Рисунок 10 – Контекстная диаграмма модели вариантов использования
Актерами модуля проектирования ВЛС являются пользователь
(преподаватель) и модуль обслуживания. Модуль обслуживания обладает
единственным вариантом использования – это непосредственно запуск
модуля проектирования ВЛС. Список вариантов использования, доступных
пользователю: функции по работе с расширениями, функции по работе с
моделью, функции по проектированию содержимого модели, которые
включают в себя три большие подгруппы функций – функции по работе с
объектами, переменными и поведением, – просмотр информации о модуле,
закрытие модуля после окончания процесса проектирования.
Работа с расширениями (рисунок 11) подразумевает под собой
подключение, просмотр информации о расширении (разработчик
расширения, версия расширения, краткое описание расширения), отключение
расширений.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
36
Рисунок 11 – Работа с расширениями
Работа с моделью (рисунок 12) включает в себя следующие варианты
использования: создание, загрузку, изменение информации, сохранение
модели.
Рисунок 12 – Работа с моделью
Работа с объектами (рисунок 13) включает в себя следующие
варианты использования: группу функций по работе с полем
проектирования, создание объекта модели, группу функций по работе с
контейнером объекта, группу функций по работе с ассоциацией, удаление
объекта модели.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
37
Рисунок 13 – Работа с объектами
Работа с полем проектирования (рисунок 14) состоит из следующих
вариантов использования: изменение масштаба поля проектирования (есть
три вариации масштаба: 50 процентов, 100 процентов, 150 процентов) и
перемещение по полю проектирования с помощью полос прокрутки или с
помощью курсора мыши через зажатие ее левой кнопки.
Рисунок 14 – Работа с полем проектирования
Работа с контейнером (рисунок 15) включает в себя следующие
варианты использования: выделение контейнера, изменение размеров
контейнера за счет вертикальных и горизонтальных якорей, перемещение
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
38
контейнера по полю проектирования за счет зажатия левой кнопки мыши при
нахождении курсора над контейнером, снятие выделение с контейнера.
Выделение контейнера нужно для совершения над ним различных
манипуляций и просмотра списка переменных логики или интерфейса в
зависимости от типа контейнера.
Рисунок 15 – Работа с контейнером
При работе с ассоциацией (рисунок 16) доступны следующие
варианты использования: создание ассоциации между объектами, изменение
ассоциации, то есть изменение формы линии, которая представляет собой
графическое отображение ассоциации на поле проектирования логики,
удаление ассоциации.
Рисунок 16 – Работа с ассоциацией
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
39
Работа с переменными (рисунок 17), состоит из следующих вариантов
использования: получения списка переменных при выделении контейнера
объекта, задания значения переменной при наличии такой возможности;
создания
пользовательской
переменной
логики;
редактирование
пользовательской переменной логики; удаления пользовательской
переменной логики. Список переменных при получении отображается в виде
таблицы свойств, и тип отображаемых переменных соответствует типу
выделенного контейнера объекта. Для создания переменной необходимо
указать название переменной, направление передачи данных, тип данных
переменной и краткое описание переменной. Редактировать у переменной
можно лишь название переменной и краткое описание.
Рисунок 17 – Работа с переменными
Работа с поведением объекта (рисунок 18) включает в себя получение
дерева поведения из структур данных в оперативной памяти для
возможности просмотра и редактирования данного дерева пользователем,
работу с конструкциями нижнего уровня языка LabScript, очищения
поведения объекта от всех конструкций, сохранение дерева поведения в виде
совокупности программ, каждая из которых связана с определенным
событием.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
40
Рисунок 18 – Работа с поведением объекта
Работа с конструкциями (рисунок 19) состоит из создания
конструкции, получения конструкции, группы функций по работе с
операндами, изменения типа операции между операндами, группы функций
по работе с выражениями, перемещения конструкции, удаления конструкции,
сохранения конструкции. Получение конструкции представляет собой
отображение конструкции в виде совокупности операндов и операций между
ними для просмотра и редактирования пользователем. Перемещение
конструкции заключается в изменении положения конструкции относительно
соседних конструкций в рамках одного уровня вложенности. Сохранение
конструкции
представляет
собой
преобразование
графического
представления конструкции в виде совокупности операндов и операций в
совокупность структур данных в оперативной памяти. Можно заметить, что
группы функции по работе с операндами и по работе с выражениями связаны
двумя отношениями. Это позволяет реализовать механизм произвольной
вложенности конструкций и выражений.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
41
Рисунок 19 – Работа с конструкциями
Работа с операндами (рисунок 20) включает в себя добавление,
изменение и удаление операнда. При добавлении операнда происходит
добавление операции, за исключением случаев создания конструкции вызова
и аргументов операнда вызова. При удалении операнда происходит удаление
расположенной слева от него операции.
Рисунок 20 – Работа с операндами
Работа с выражениями (рисунок 21) включает получение выражения,
группу функций по работе с операндами, изменение операции между
операндами, сохранение выражения. На рисунке 21 отображены не все
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
42
перечисленные варианты использования, так как часть из них уже
существует на рисунке 19. Получение и сохранение выражения аналогичны
получению и сохранению конструкции.
Рисунок 21 – Работа с выражениями
После идентификации набора функций, которые позволяет выполнять
модуль проектирования ВЛС, необходимо рассмотреть подробнее часть из
вышеперечисленных функций на основе диаграмм активности и
деятельности. В качестве демонстрации результатов проектирования
предлагаются к изучению функции: «Сохранить модель», «Загрузить
модель», «Создать модель».
Функция «Сохранить модель» осуществляет процесс сериализации
модели в файл с расширением «.lab». Вначале производится выбор
месторасположения файла, далее – сохранение модели. При успешном
выполнении обоих действий выводится сообщение об успехе. В противном
случае выводятся сообщения об ошибках. Диаграммы активности и
последовательности для данной функции представлены на рисунке Д.1 и в
приложении Ж, лист 106 соответственно.
Функция «Загрузить модель» проверяет наличие текущей
несохраненной модели, в случае наличия последней выводит
соответствующее предупреждение. Если успешно пройден первый этап
выполнения функции, то осуществляется выбор файла модели через диалог
выбора, при успешном выборе файла, осуществляет процесс загрузки. Если
процесс загрузки произведен успешно, то выводится сообщение об успехе. В
остальных случаях выводятся сообщения об ошибках. Говоря о процессе
загрузки, можно отметить, что это составной процесс, состоящий из двух
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
43
последовательных этапов: первичной загрузки, осуществляемой за счет
стандартного механизма десериализации, и вторичной загрузки,
осуществляемой за счет реализации разработанного интерфейса ILoadable.
При первом этапе происходит создание объектов модели и заполнение их
первичной информацией, которая содержит информацию о связях между
структурами данных. На втором этапе происходит восстановление
ссылочной целостности между структурами данных путем замены
уникальных идентификаторов на ссылки на объекты классов в оперативной
памяти. Диаграммы активности и последовательности для данной функции
представлены на рисунке Д.2 и в приложении Ж, лист 107 соответственно.
Функция «Создать модель» осуществляет вывод окна ввода
информации о ВЛС и при вводе корректных данных создает пустую модель,
в противном случае выводит сообщение об ошибке. Диаграммы активности и
последовательности для данной функции представлены на рисунке Д.3 и в
приложении Ж, лист 108 соответственно.
Диаграмма состояний для данного модуля представлена на рисунке
22. Для того чтобы избежать путаницы в состояниях, было принято решение
представить ее в общем виде, где состояние «{действие}» соответствует
какому-либо состоянию выполнения действия из списка доступных
пользователю функций на диаграммах вариантов использования. Вход в
основной цикл работы программы осуществляется через инициализацию
модуля; далее пользователь выполняет те или иные действия согласно
процессу проектирования и получает обратную связь от программы в виде
сообщений об успехе (частный случай сообщений об успехе – отсутствие
сообщений) или сообщений об ошибке; выход осуществляется путем
нажатия кнопки закрытия модуля.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
44
Рисунок 22 – Диаграмма состояний
Диаграммы классов модуля представлены в приложении И. Можно
заметить, что все классы разбиты на две большие группы: классы интерфейса
модуля и классы структур данных. Это сделано с той целью, что классы
структур данных будут использоваться и в других модулях разрабатываемой
САПР. Поэтому физически они также будут выполнены в виде двух
динамических библиотек.
Рассматривая контекстную диаграмму классов интерфейса модуля,
можно сказать, что основным классом в иерархии вложенности классов
играет класс модуля проектирования. Он включает в себя ссылку на объект
класса основного окна проектирования. Окно проектирования включает в
себя менеджеры и связанные с ними классы.
Контекстная диаграмма компонентов модуля представлена на рисунке
К.1.
Далее можно рассмотреть декомпозицию каждой библиотеки с точки
зрения организации хранения исходного кода. Диаграммы декомпозиции для
библиотеки модуля и библиотеки структур данных представлены на
рисунках К.2 и К.3 соответственно. На диаграммах не отображены
зависимости между компонентами для удобства восприятия ввиду большого
числа компонентов на них.
Последняя диаграмма ввиду большого числа компонентов разбита
лишь на каталоги. Декомпозиция каталогов представлена на рисунках К.4,
К.5, К.6.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
45
2.6
Выводы к разделу 2
В ходе выполнения процесса проектирования была проведена
комплексная работа по формализации идей, положенных в основу модуля, во
множество графических диаграмм, представляющих различные аспекты
архитектуры модуля.
Особое место в проектировании заняло описание синтаксиса нижнего
уровня реализации визуального языка программирования LabScript for
Behaviour, который является фундаментальным средством для реализации
логики работы модели в рамках данного модуля.
Также можно отметить разработку своего формата хранения данных
модели, для чего были разработаны диаграммы сериализации модели.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
46
3 Разработка модуля проектирования САПР LabCAD
После того, как этап проектирования пройден, необходимо
приступать к программной реализации модуля с учетом выбранного языка
программирования.
3.1 Выбор языка программирования
Важным моментом при разработке программного обеспечения
является выбор инструмента реализации – языка программирования. Среди
множества существующих в настоящий момент языков были выбраны для
сравнения языки C, Java, Python, C++ и C# как одни из наиболее
используемых в настоящее время [4].
В качестве критериев сравнения выбраны: опыт использования языка,
порог вхождения, наличие средств для разработки графического
пользовательского интерфейса, скорость работы программ в рамках
решаемой
задачи,
поддержка
объектно-ориентированного
программирования. Под порогом вхождения подразумевается количество
затраченных усилий на освоение языка на базовом уровне относительно
других сравниваемых языков программирования.
Таблица результатов сравнения представлена ниже (таблица 3).
Таблица 3 ‒ Сравнение языков программирования
Критерий
сравнения
1
Язык программирования
C
Java
2
Python
3
4
C++
C#
5
6
Опыт
использования языка
5 мес.
3 мес.
60 мес.
0 мес.
42 мес.
Порог
вхождения
высокий
средний
низкий
высокий
средний
Средства для
разработки
графическог
о пользовательского
интерфейса
имеются
имеются
имеются
имеются
имеются
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
47
Продолжение таблицы 3
1
Скорость
работы
программ
рамках
решаемой
задачи
2
3
4
допустимая
допустимая
отсутствует
имеется
5
6
недопустимая
допустимая
допустимая
имеется
имеется
имеется
в
Поддержка
объектноориентированного
программирования
Можно сразу убрать из вариантов выбора языки программирования C
и Python, так как первый не поддерживает объектно-ориентированное
программирование [5], которое является основополагающим в данной работе,
а второй имеет низкую скорость выполнения программ по сравнению с
другими перечисленными языками [6], что неприемлемо для
разрабатываемого модуля.
Из оставшихся языков следует выбрать язык программирования C#,
что связано с тем, что необходимо разработать наукоемкий проект в
короткие сроки одним разработчиком. В этих условиях встает необходимость
использовать язык, на котором имеется опыт разработки, более того, язык
программирования C# имеет значительные преимущества перед C++ в
контексте скорости разработки; на языке Java опыт разработки
незначительный, что может сказаться на качестве конечного продукта с
учетом поставленных рамок.
3.2 Программная реализация модуля
В ходе кодирования была разработана программная реализация
модуля проектирования виртуальных лабораторных стендов.
Весь интерфейс модуля можно разделить на несколько форм:
Изм Лист
форма главного окна;
форма изменения информации о ВЛС;
форма редактирования переменной;
форма просмотра информации о расширении;
форма информации о модуле;
форма отключения расширений;
форма редактирования поведения объекта;
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
48
форма Мастера действий;
форма информации об ошибках.
Следует остановиться подробнее на каждой форме.
Форма главного окна представляет собой основную форму модуля
проектирования САПР, с которой работает пользователь в процессе
проектирования. В общем виде она выглядит следующим образом (рисунок
23).
Рисунок 23 – Форма главного окна
Она включает в себя область главного меню, область строки
состояния, область дерева расширений, область консоли и область
проектирования. Область главного меню предоставляет основные действия
по работе с моделью, расширениями и информацией о модуле. Область
строки состояния выводит некоторую справочную информацию о состоянии
модуля, например, масштаб текущего выбранного поля проектирования.
Область дерева расширений (рисунок 24) необходима для отображения
подключенных расширений, с которыми может работать пользователь.
Область консоли (рисунок 25) предназначена для вывода некоторых
выполняемых операций и результатов их выполнения. Область
проектирования предназначена непосредственно для осуществления
процесса проектирования. Она делится на область проектирования логики
(рисунок 26) и область проектирования интерфейса (рисунок 27), каждая из
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
49
которых состоит из двух частей: поля проектирования и область менеджера
переменных.
Рисунок 24 – Область дерева расширений
Рисунок 25 – Область консоли
Рисунок 26 – Область проектирования логики
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
50
Рисунок 27 – Область проектирования интерфейса
Форма изменения информации о ВЛС (рисунок 28) предназначена как
для создания новой модели, так и для редактирования информации о текущей
модели.
Рисунок 28 – Форма изменения информации о ВЛС
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
51
Форма редактирования переменной (рисунок 29) предназначена для
создания переменной логики и изменения информации о имеющейся
переменной логики.
Рисунок 29 – Форма редактирования переменной
Форма просмотра информации о расширении (рисунок 30) позволяет
увидеть краткую информацию о подключенном расширении.
Рисунок 30 – Форма просмотра информации о расширении
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
52
Форма информации о модуле (рисунок 31) выводит краткую
справочную информацию о модуле проектирования.
Рисунок 31 – Форма информации о модуле
Форма отключения расширений (рисунок 32) предназначена для
отключения подключенных расширений путем выбора их из списка.
Рисунок 32 – Форма отключения расширений
Форма редактирования поведения объекта (рисунок 33) позволяет
изменять поведение выбранного объекта.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
53
Рисунок 33 – Форма редактирования поведения объекта
Форма Мастера действий (рисунок 34) предназначена для создания и
редактирования конструкций и выражений.
Рисунок 34 – Форма Мастера действий
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
54
Форма информации об ошибках (рисунок 35) позволяет увидеть
список ошибок, возникших при создании или редактировании конструкции
или выражения.
Рисунок 35 – Форма информации об ошибках
В качестве демонстрации результатов кодирования в приложении Л
приведены фрагменты исходного кода модуля проектирования.
3.3 Разработка демонстрационного стенда «Модель температуры
микроклимата теплицы»
В
качестве
демонстрации
практической
применимости
разработанного модуля проектирования виртуальных лабораторных стендов
была создана модель температуры микроклимата теплицы. Под температурой
в контексте разработанного стенда следует понимать температуру воздуха.
Всего было выбрано два основных процесса для моделирования:
изменение температуры окружающей среды;
изменение температуры микроклимата теплицы.
С учетом того, что температура окружающей среды и температура
микроклимата теплицы представляют собой физические величины,
относительно медленно изменяющиеся в течение суток, были введены два
вида виртуального времени: виртуальное время суток и вспомогательное
виртуальное время, ‒ для достижения необходимой для работы с моделью
скорости изменения температур.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
55
Виртуальное время среды измеряется в часах и минутах и
предназначено для вывода в удобном для обучающегося виде и расчета
скорости прироста температуры. Вспомогательное виртуальное время
измеряется в часах и предназначено для расчета температуры окружающей
среды.
Следует отметить, что наименования единиц времени в рамках
текущей модели не отличаются от наименований единиц измерения
реального времени, но эти единицы численно не равны друг другу.
Минимальной единицей виртуального времени в контексте данной модели
является минута, и она связана с тиками с помощью коэффициента
ускорения, который принят за 5. То есть за один тик виртуальное время
изменяется на 5 минут. Тик – это период времени между двумя
последовательными во времени большими циклами работы модели.
Диапазон изменения первого вида виртуального времени
соответствует диапазону изменения реального времени (24 часа). Диапазон
измерения второго ограничен в 12 часов. Сущность ограничения
вспомогательного виртуального времени в 12 часов заключается в том, что
для получения полного времени суток переменная величины меняет знак
изменения направления при достижении границ диапазона.
Температура микроклимата теплицы в данной модели зависит от
температуры окружающей среды, коэффициента открытия форточек теплицы
и виртуального времени среды. В свою очередь, температура окружающей
среды является зависимой величиной от вспомогательного виртуального
времени.
Для простоты модели были введены три состояния открытия
форточек: закрыты, открыты наполовину, полностью открыты.
Далее следует рассмотреть математические модели выбранных
процессов.
Для температуры окружающей среды эмпирическим путем была
подобрана следующая формула:
𝑇окр =
12.5
+ 12.5,
1 + 𝑒 −𝐻всп+8
(1)
где 𝑇окр – температура окружающей среды, °C (𝑇окр ∈ [12.5,24.78]);
𝐻всп – вспомогательное виртуальное время, час. (𝐻всп ∈ [0,12]).
Согласно формуле (1), температура изменяется по сигмоидальному
закону, что позволяет добиться плавности изменения температуры.
Для температуры микроклимата теплицы эмпирическим путем была
подобрана следующая формула:
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
56
1
0
𝑇тепл
= 𝑇тепл
+ ∆𝑇тепл ,
(2)
1
где 𝑇тепл
– температура микроклимата теплицы в момент времени (t+1) тик,
°C;
0
𝑇тепл
– температура микроклимата теплицы в момент времени t тик, °C;
∆𝑇тепл – скорость изменения температуры, °C/тик;
Скорость изменения температуры рассчитывается следующим образом:
∆𝑇тепл = (𝑘форточек + 0.02) ∗ 𝑉изм + (0.98 − 𝑘форточек ) ∗ 𝑉прироста ,
(3)
где 𝑘форточек – коэффициент открытия форточек (𝑘форточек ∈ [0,1]);
𝑉изм – скорость изменения температуры, °C/тик;
𝑉прироста – скорость прироста температуры, °C/тик.
Согласно формуле (3), процесс изменения температуры микроклимата
теплицы состоит из двух подпроцессов: подпроцесса установления
равновесия температуры микроклимата теплицы с температурой
окружающей среды при открытых форточках и подпроцесса прироста
температуры микроклимата теплицы вследствие парникового эффекта.
Скорость изменения температуры рассчитывается по следующей
формуле:
𝑉изм = (𝑇окр − 𝑇тепл ) ∗ 0.5.
Скорость
формуле:
прироста
𝑉прироста
температуры
рассчитывается
(4)
по
(𝐻 − 7)2
(0.5 −
) ∗ 0.5, если 𝐻 ∈ [2,14]
={
,
98
0, если 𝐻 ∉ [2,14]
следующей
(5)
где 𝐻 – виртуальное время среды, час.
На основании данных формул был реализован демонстрационный
стенд со следующим содержанием (рисунки 36, 37).
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
57
Рисунок 36 – Спроектированная логика демонстрационного стенда
Рисунок 37 – Спроектированный интерфейс демонстрационного стенда
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
58
На рисунке 36 можно отметить объект «МодельТемпературы»,
который и содержит реализации математических моделей.
3.4 Выводы к разделу 3
В ходе программной реализации модуля был разработан модуль
проектирования в виде динамической библиотеки САПР LabCAD с
использованием языка программирования C#.
Весь интерфейс был разбит на несколько взаимосвязанных форм,
центральной из которых является форма главного окна.
Разработан
демонстрационный
микроклимата теплицы.
стенд
температуры
воздуха
При кодировании были использованы Интернет-ресурсы [7-8].
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
59
4 Технико-экономическое
модуля проектирования
обоснование
разработки
Важное значение при разработке программного продукта имеет
экономическое обоснование необходимости создания продукта, которое
включает в себя расчет затрат на создание ПО, цены копии продукта, расчет
выручки и прибыли от реализации заданного количества копий программы,
расчет затрат, связанных с покупкой, внедрением и использованием ПО.
Следует заметить, что под фирмой в данном случае подразумевается
группа, сформированная в рамках инженерного центра ВУЗа и состоящая из
руководителя и инженера-программиста.
Целевая аудитория продукта – преподаватели образовательных
учреждений основного общего и среднего (полного) общего образования,
среднего профессионального образования, высшего образования.
Территория охвата продукта – Российская Федерация.
4.1 Расчет затрат на создание программного обеспечения, цены
продукта
Профессионально-квалификационный состав группы разработчиков
ПО представлен в таблице 4.
Таблица 4 – Профессионально-квалификационный
разработчиков ПО
состав
группы
Наименование
должности
Численность,
чел.
Базовая ставка Повышающий
заработной
коэффициент
платы, руб.
Месячный
оклад, руб.
Руководитель
проекта
1
16000
1,5
24000
Инженерпрограммист
1
12500
1,5
18750
Для выполнения расчетов затрат и цены необходимо произвести
определение трудоемкости выполнения работ по созданию ПО (таблица 5).
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
60
Таблица 5 – Трудоемкость выполнения работ
Наименование
работы
Время выполнения, час.
Занятость команды, час.
Минимальное
Максимальное
2
3
1
Расчетное
Руководитель
Инженерпрограммист
5
6
4
Изучение задания
8
24
14.4
7.2
7.2
Подбор и изучение
литературы
40
64
49.6
19.9
29.7
Анализ проблемы и
существующих
алгоритмов
40
64
49.6
19.9
29.7
Разработка
общих
принципов
построения
программы
и
методов
представления
данных
40
64
49.6
19.9
29.7
Финансовоэкономическое
обоснование
создания ПО
20
32
24.8
24.8
0
Проведение
маркетинговых
исследований
20
32
24.8
24.8
0
Выбор
системы
управления данными,
операционной
системы,
инструментария
16
40
25.6
12.8
12.8
Разработка
структуры
программного
обеспечения
40
64
49.6
16
33.6
40
64
49.6
8
41.6
Разработка
пользовательского
интерфейса
16
40
25.6
5
20.6
Написание
программы
240
320
272
0
272
Разработка
алгоритмов
Изм Лист
докум.
новых
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
61
Продолжение таблицы 5
1
2
3
4
5
6
Отладка,
тестирование,
корректировка
программы,
устранение
выявленных ошибок,
выполнение
64
80
70.4
0
70.4
Разработка
документации
24
40
30.4
0
30.4
8
16
11.2
5
6.2
Копирование ПО и
подготовка его к
реализации
40
64
49.6
40
9.6
Копирование
документации
инструкции
пользователя
16
40
25.6
25.6
0
672
1048
822.4
228.9
593.5
Написание
инструкции
пользователя
русском языке
Всего
для
на
и
для
Для удобства работы с данными таблицы 5, их необходимо
сгруппировать по комплексам выполняемых работ (таблица 6).
Таблица 6 – Комплексы работ по созданию ПО
Наименование
комплекса работ
Обозначение
1
Расчетное время
выполнения, час.
2
Занятость команды, час.
Руководитель
3
Инженерпрограммист
4
5
1 Создание
математического
обеспечения и
написания
программы
Вмо
446.4
48.9
397.5
2 Отладка,
тестирование,
выполнение
Вм
70.4
0
30.4
3 Прочие затраты
по разработке ПО
Впр
164
84.6
79.4
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
62
Продолжение таблицы 6
1
2
3
4
5
4 Маркетинговые
исследования
Вми
24.8
24.8
0
5 Оформление
программного
продукта
Воф
116.8
70.6
46.2
Всего
Впо
822.4
228.9
593.5
На основании таблицы 6 будет производиться расчет затрат на
создание ПО.
Затраты на выплату зарплаты руководителям при создании
математического обеспечения и написание программы рассчитываются по
следующей формуле:
рук
ЗПмо
рук
рук
Ррук ∗ Вмо ∗ Ом
=
,
Д с ∗ Др
(6)
где Ррук – число руководителей;
рук
Вмо – время на создание математического обеспечения и написание
программы, затраченное руководителем, час.;
рук
Ом – месячный оклад руководителя, руб.;
Дс – длительность смены, час.;
Др – среднее число рабочих дней в месяце, дней.
На основании формулы (6) можно получить следующее значение:
рук
ЗПмо
рук
рук
Ррук ∗ Вмо ∗ Ом
1 ∗ 48.9 ∗ 24000
=
=
= 6985.71 руб.
Дс ∗ Др
8 ∗ 21
Затраты на выплату зарплаты программистам при создании
математического обеспечения и написание программы рассчитываются по
следующей формуле:
ЗПмо
п
Рп ∗ Впмо ∗ Опм
=
,
Д с ∗ Др
(7)
где Рп – число программистов;
Впмо – время на создание математического обеспечения и написание
программы, затраченное программистом, час.;
Опм – месячный оклад программиста, руб.;
Дс – длительность смены, час.;
Др – среднее число рабочих дней в месяце, дней.
На основании формулы (7) можно получить следующее значение:
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
63
ЗПмо
п
Рп ∗ Впмо ∗ Опм 1 ∗ 397.5 ∗ 18750
=
=
= 44363.84 руб.
Дс ∗ Др
8 ∗ 21
Затраты на заработную плату работников, участвующих в создании
математического обеспечения и написании программы, рассчитываются по
следующей формуле:
мо
ЗПмо = ЗПмо
рук + ЗПп ,
(8)
где ЗПмо
рук – затраты на выплату зарплаты руководителям при создании
математического обеспечения и написания программы, руб.;
ЗПмо
п – затраты на выплату зарплаты программистам при создании
математического обеспечения и написания программы, руб.
На основании формулы (8) можно получить следующее значение:
мо
ЗПмо = ЗПмо
рук + ЗПп = 6985.71 + 44363.84 = 51349.55 руб.
Фонд оплаты труда работников, участвующих в создании
математического обеспечения и написания программы, рассчитывается по
следующей формуле:
ФОТмо = ЗПмо + П + Врк ,
(9)
где ЗПмо – затраты на выплату зарплаты работникам при создании
математического обеспечения и написания программы, руб.;
П – премия, предусмотренная для работников, участвующих в создании
ПО, руб. (20% от ЗПмо );
Врк – выплаты по районному коэффициенту (установлены для г. Кирова
в размере 15% от (ЗПмо + П)).
На основании формулы (9) можно получить следующее значение:
ФОТмо = 51349.55 + 10269.91 + 9242.92 = 70862.38 руб.
Затраты на выплату зарплаты руководителям при создании ПО
рассчитываются по следующей формуле:
рук
ЗПпо
рук
рук
Ррук ∗ Впо ∗ Ом
=
,
Д с ∗ Др
(10)
где Ррук – число руководителей;
рук
Впо – время на создание ПО, затраченное руководителем, час.;
рук
Ом – месячный оклад руководителя, руб.;
Дс – длительность смены, час.;
Др – среднее число рабочих дней в месяце, дней.
На основании формулы (10) можно получить следующее значение:
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
64
рук
ЗПпо
рук
рук
Ррук ∗ Впо ∗ Ом
1 ∗ 228.9 ∗ 24000
=
=
= 32700 руб.
Дс ∗ Др
8 ∗ 21
Затраты на выплату зарплаты программистам при создании ПО
рассчитываются по следующей формуле:
ЗПпо
п
Рп ∗ Вппо ∗ Опм
=
,
Дс ∗ Др
(11)
где Рп – число программистов;
Вппо – время на создание ПО, затраченное программистом, час.;
Опм – месячный оклад программиста, руб.;
Дс – длительность смены, час.;
Др – среднее число рабочих дней в месяце, дней.
На основании формулы (11) можно получить следующее значение:
ЗПпо
п
Рп ∗ Вппо ∗ Опм 1 ∗ 593.5 ∗ 18750
=
=
= 66238.84 руб.
Дс ∗ Др
8 ∗ 21
Затраты на заработную плату работников, участвующих в создании
ПО, рассчитываются по следующей формуле:
по
ЗПоб = ЗПпо
рук + ЗПп ,
(12)
где ЗПпо
рук – затраты на выплату зарплаты руководителям при создании ПО,
руб.;
ЗПпо
п – затраты на выплату зарплаты программистам при создании ПО,
руб.
На основании формулы (12) можно получить следующее значение:
по
ЗПоб = ЗПпо
рук + ЗПп = 32700 + 66238.84 = 98938.84 руб.
Общий фонд оплаты труда работников, участвующих в создании ПО,
рассчитывается по следующей формуле:
ФОТоб = ЗПоб + П + Врк ,
(13)
где ЗПмо – затраты на выплату зарплаты работникам при создании
математического обеспечения и написания программы, руб.;
П – премия, предусмотренная для работников, участвующих в создании
ПО, руб. (20% от ЗПоб );
Врк – выплаты по районному коэффициенту (установлены для г. Кирова
в размере 15% от (ЗПоб + П)).
На основании формулы (13) можно получить следующее значение:
ФОТоб = 98938.84 + 19787.77 + 17808.99 = 136535.60 руб.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
65
Затраты на создание математического обеспечения и написание
программы, рассчитываются по следующей формуле:
Змо = ЗПмо + П + Врк + Ссн ∗ ФОТмо + Нр ,
(14)
где ЗПмо – Затраты на заработную плату работников, участвующих в
создании математического обеспечения и написании программы, руб.;
П – премия, предусмотренная для работников, участвующих в создании
ПО, руб. (20% от ЗПмо );
Врк – выплаты по районному коэффициенту (установлены для г. Кирова
в размере 15% от (ЗПмо + П));
Ссн – общая ставка страховых взносов (30% и ФСС СН 0.2%);
ФОТмо – фонд оплаты труда работников, участвующих в создании
математического обеспечения и написания программы, руб.;
Нр - накладные расходы организации, где разрабатывается ПО (затраты
на отопление, освещение, на содержание административноуправленческого персонала и др.) (120% от ЗПмо ).
На основании формулы (14) можно получить следующее значение:
Змо = ЗПмо + П + Врк + Ссн ∗ ФОТмо + Нр = 51349.55 +
10269.9 + 9242.92 + 0.32 ∗ 70862.38 + 61619.46 = 155157.79 руб.
Стоимость одного часа эксплуатации компьютера рассчитывается по
следующей формуле:
Т1с ∗ Тк ∗ Кнр
См =
,
Дс ∗ Др
(15)
где Т1с – минимальная заработная плата, законодательно установленный
размер на текущий момент, руб.;
Тк – повышающий коэффициент, соответствующий ставке инженерапрограммиста;
Кнр – коэффициент, учитывающий накладные и другие расходы,
связанные с работой компьютера (можно принять равным 3% от Т1с );
Дс – длительность смены, час.;
Др – среднее число рабочих дней в месяце, дней.
На основании формулы (15) можно получить следующее значение:
Т1с ∗ Тк ∗ Кнр
12130 ∗ 1.5 ∗ 1.03
См =
=
= 111.55 руб.
Д с ∗ Др
8 ∗ 21
Затраты, связанные с работой компьютера при разработке ПО,
рассчитываются по следующей формуле:
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
66
Зком = (Вм + Внп ) ∗ См ,
(16)
где Вм – время, затраченное на отладку, тестирование, выполнение
программы, час.;
Внп – время, затраченное на написание программы, час.;
См – стоимость одного часа эксплуатации компьютера, руб.
На основании формулы (16) можно получить следующее значение:
Зком = (Вм + Внп ) ∗ См = (70.4 + 272) ∗ 111.55 = 38194.72 руб.
Затраты на разработку ПО рассчитываются по следующей формуле:
Зрп = Змо + Зком + Зпр ,
(17)
где Змо – затраты на создание математического обеспечения и написание
программы, руб.;
Зком – затраты, связанные с работой компьютера при разработке ПО,
руб.;
Зпр – прочие затраты, связанные с разработкой ПО (изучение задания,
литературы, патентов, анализ проблемы и существующих алгоритмов,
проведение экономических расчетов и др.), их можно принять в размере
20% от Змо , руб.
На основании формулы (17) можно получить следующее значение:
Зрп = Змо + Зком + Зпр = 155157.79 + 38194.72 + 31031.56 =
= 224384.07 руб.
Результатом расчетов является смета затрат на создание ПО (таблица
7).
Таблица 7 – Смета затрат на создание ПО
Наименование статьи затрат
Буквенное
обозначение
1
Сумма, руб.
2
мо
3
Зарплата программистов
ЗПп
Зарплата руководителей
ЗПрукмо
6985.71
ЗПмо
51349.55
Премия
П
10269.90
Выплаты по районному коэффициенту
Врк
9242.92
Страховые взносы с ФОТ
Ссн
22675.96
Накладные расходы
Нр
61619.46
Итого затрат на создание ПО и написание программы
Змо
155157.79
Итого зарплаты, израсходованной
обеспечения и написание программы
Изм Лист
докум.
Подпись Дата
на
создание
математического
44363.84
ТПЖА.090302.036 ПЗ
Лист
67
Продолжение таблицы 7
1
2
3
Затраты, связанные с работой компьютера при разработке ПО
Зком
38194.72
Прочие затраты, связанные с разработкой ПО
Зпр
31031.56
Итого затрат на разработку ПО
Зрп
224384.07
Налоги, включаемые в затраты на создание программы
Нсп
20480.34
Затраты на оформление программного продукта
Зоф
33657.61
Затраты на маркетинговые исследования
Зми
22438.41
Всего затрат на создание ПО
Зсп
300960.43
Следует заметить, что налоги, включаемые в затраты на создание
программы, составляют 15% от общего фонда оплаты работников, затраты на
оформление программного продукта и на маркетинговые исследования
составляют 15% и 10% от общих затрат на разработку ПО соответственно.
Далее необходимо рассчитать проектные цены.
При продаже одной копии ПО получить значения цен создания и
реализации можно следующим образом.
Величина прибыли рассчитывается по следующей формуле:
Пр = Зсп ∗ Ур ,
(18)
где Зсп – общие затраты на разработку ПО, руб.;
Ур – уровень рентабельности программного продукта (20%).
На основании формулы (18) можно получить следующее значение:
Пр = Зсп ∗ Ур = 300960.43 ∗ 0.2 = 60192.09 руб.
Цена создания рассчитывается по следующей формуле:
Цс = Зсп + Пр,
(19)
где Зсп – общие затраты на разработку ПО, руб.;
Пр – величина прибыли, руб.
На основании формулы (19) можно получить следующее значение:
Цс = Зсп + Пр = 300960.43 + 60192.09 = 361152.52 руб.
Розничная цена ПО рассчитывается по следующей формуле:
Цр = Цс + НДС + Тн,
(20)
где Цс – цена создания, руб.;
НДС – налог на добавленную стоимость (20%);
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
68
Тн – торговая наценка при реализации ПО через специализированные
магазины (торговых посредников) (10%).
На основании формулы (20) можно получить следующее значение:
Цр = Цс + НДС + Тн = 361152.52 + 72230.50 + 36115.25 =
= 469498.27 руб.
При реализации нескольких копий ПО формулы расчета цен
отличаются.
Затраты на одно копирование рассчитывается по следующей формуле:
Зкоп =
(Вкоп + Впод ) ∗ См
+ Цн + Здок ,
60
(21)
где Вкоп – время одного копирования ПО, мин.;
Впод – время подготовки (форматирования) носителя информации,
мин.;
См – стоимость одного часа эксплуатации компьютера, руб.;
Цн – розничная цена носителя информации, используемого под
копию ПО, руб.;
Здок – затраты на копирование или печатание сопроводительной
документации (инструкции для пользователя и др.) и приобретение
упаковки для хранения этой документации и носителя информации
(20% от минимальной заработной платы), руб.
На основании формулы (21) можно получить следующее значение:
(2 + 4) ∗ 111.55
(Вкоп + Впод ) ∗ См
+ Цн + Здок =
+ 65 +
60
60
+2426 = 2502.16 руб.
Зкоп =
Планируется рассмотреть цены для 5, 10, 20, 50, 100, 150 копий ПО.
Цена создания для нескольких копий рассчитывается по следующей
формуле:
Зсп
Цс = (
+ Зкоп ) ∗ (1 + Ур ),
𝑁коп
(22)
где Зсп – общие затраты на разработку ПО, руб.;
𝑁коп – количество копий, снимаемых с оригинала ПО, шт.;
Зкоп – затраты на одно копирование, руб.;
Ур – уровень рентабельности программного продукта (20%).
Розничная цена ПО для нескольких копий рассчитывается по
следующей формуле
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
69
Цр = Цс ∗ (1 + НДС) ∗ (1 + Тн),
(23)
где Цс – цена создания, руб.;
НДС – налог на добавленную стоимость (20%);
Тн – торговая наценка при реализации ПО через специализированные
магазины (торговых посредников) (10%).
Для примера можно рассчитать цену создания и цену реализации ПО
для пяти копий.
На основании формулы (22) можно получить следующее значение
цены создания для пяти копий:
Зсп
300960.43
Цс = (
+ Зкоп ) ∗ (1 + Ур ) = (
+ 2502.16) ∗
5
𝑁коп
∗ (1 + 0.2) = 75233.10 руб.
На основании формулы (23) можно получить следующее значение
розничной цены ПО для пяти копий:
Цр = Цс ∗ (1 + НДС) ∗ (1 + Тн) = 75233.10 ∗ (1 + 0.2) ∗
∗ (1 + 0.1) = 99307.69 руб.
По аналогии можно рассчитать цены создания и розничные цены ПО
для другого количества копий. В итоге получается следующая таблица
(таблица 8).
Таблица 8 – Зависимость между минимальной ценой и числом реализуемых
копий ПО
Число
копий
реализуемых Цена создания, руб.
Розничная цена, руб.
1
361152.52
469498.27
5
75233.10
99307.69
10
39117.84
51635.55
20
21060.22
27799.49
50
10225.64
13497.84
100
6614.12
8730.64
150
5410.28
7141.57
Планируется продать 100 копий, соответственно, итоговая цена ПО
будет составлять 8730.64 рублей. Решение основано на том, что продукт
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
70
будет продаваться на территории Российской Федерации, в результате, за
счет охвата значительного количества образовательных организаций,
величина спроса будет иметь немалое значение.
4.2 Расчет выручки и прибыли от реализации программного
продукта
После расчета затрат и цен нужно определить предполагаемую сумму
выручки и прибыли от продажи программного продукта.
Валовая выручка от реализации ПО по рыночной цене (без учета
торговой наценки) рассчитывается по следующей формуле:
ВРбр = Ц′р ∗ 𝑁коп ,
(24)
где Ц′р – цена реализации разработанного ПО (без учета наценки), руб.;
𝑁коп – количество копий, снимаемых с оригинала ПО, шт..
На основании формулы (24) можно получить следующее значение:
ВРбр = Ц′р ∗ 𝑁коп = 7936.94 ∗ 100 = 793694 руб.
Объем выручки от продажи ПО по цене создания рассчитывается по
следующей формуле:
ВРн = Цс ∗ 𝑁коп ,
(25)
где Цс – цена создания, руб.;
𝑁коп – количество копий, снимаемых с оригинала ПО, шт.
На основании формулы (25) можно получить следующее значение:
ВРн = Цс ∗ 𝑁коп = 6614.12 ∗ 100 = 661412 руб.
Величина прибыли от продажи всех копий программного продукта
рассчитывается по следующей формуле:
Пвалов = ВРн − Зоб ,
(26)
где ВРн – объем выручки от продажи ПО по цене создания, руб.;
Зоб – общие затраты на создание и копирование всех реализуемых ПО,
руб.
На основании формулы (26) можно получить следующее значение:
Пвалов = ВРн − Зоб = 661412 − 551176.43 = 110235.57 руб.
Балансовая прибыль, которую может получить фирма (организация),
разрабатывающая и реализующая ПО, рассчитывается по следующей
формуле:
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
71
Пб = Пвалов + 𝑉д − 𝑉р ,
(27)
где Пвалов – прибыль до налогообложения, руб.;
𝑉д – прочие доходы (по ценным бумагам, от долевого участия в
совместных проектах и др., можно принять в размере 3% от Пр), руб.;
𝑉р – прочие расходы (выплаты по экономическим санкциям и др., можно
принять в размере 0,5% от Пр), руб.
На основании формулы (27) можно получить следующее значение:
Пб = Пвалов + 𝑉д − 𝑉р = 110235.57 + 1805.76 − 300.96 =
= 111740.37 руб.
Чистая прибыль рассчитывается по следующей формуле:
Пч = Пб − Нпр ,
где Пб – балансовая прибыль,
которую может получить
(организация), разрабатывающая и реализующая ПО, руб.;
Нпр – налог на прибыль (20%), руб.
(28)
фирма
На основании формулы (28) можно получить следующее значение:
Пч = Пб − Нпр = 111740.37 − 22348.08 = 89392.29 руб.
“Чистая” прибыль расходуется фирмой по следующим направлениям:
на техническое развития (фонд накопления);
на создание фонда потребления;
на выплату дивидендов, если фирма является акционерным
обществом;
на благотворительные и экологические цели;
на прочие цели.
Больше всего (50%) планируется расходовать чистую прибыль на
фонд накопления в связи с необходимостью поддержания продукта; далее
планируется отвести 30% чистой прибыли на социальные нужды, что
обусловлено необходимостью проведения оздоровительных мероприятий для
сотрудников фирмы, выплаты премий; на прочие цели запланировано
использовать оставшиеся средства (20%).
Так как фирма не является акционерным обществом, а представляет
собой группу, сформированную в рамках инженерного центра ВУЗа, то
выплаты под дивидендам отсутствуют.
Так как воздействие на экологию от деятельности
незначительно, выплаты на экологические цели не планируются.
фирмы
Фирма не занимается благотворительной деятельностью, поэтому
выплаты в этом направлении не производятся.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
72
Таким образом, можно свести все показатели в одну таблицу (таблица
9).
Таблица 9 – Итоговый расчет формирования и использования выручки и
прибыли
Наименование показателя
Обозначение
Сумма, тыс. руб.
Валовая выручка от реализации
ПО (всех копий) по рыночной
цене (без торговой наценки)
ВРбр
793.694
Налог
на
стоимость
НДС
132.282
Выручка от продажи ПО по цене
создания
ВРн
661.412
Общие затраты на создание и
копирование всех реализуемых
ПО
Зоб
551.176
Прибыль от продаж всех копий
ПО
Пвалов
110.236
Доходы от внереализационных
операций
Vд
1.806
Расходы от внереализационных
операций
Vр
0.301
Балансовая прибыль
Пб
111.740
Налог на прибыль
Нпр
22.348
“Чистая” прибыль – всего
Пч
89.392
добавленную
“Чистая”
прибыль
техническое развитие
–
на
44.696
“Чистая”
прибыль
–
на
образование фонда потребления
26.818
“Чистая” прибыль – на выплату
дивидендов
0
“Чистая”
прибыль
благотворительные
экологические цели
0
–
на
и
“Чистая” прибыль – на другие
цели
17.878
4.3 Расчёт затрат, связанных с покупкой,
использованием программного обеспечения
При анализе эффективности
приобретаемой
программы следует рассчитать следующие показатели:
внедрением
и
компьютерной
капитальные затраты на приобретение и внедрение ПО;
текущие затраты пользователя, связанные с применением
программы,
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
73
экономию от использования компьютерной программы;
срок окупаемости капитальных затрат.
Общее время эксплуатации компьютера
рассчитываются по следующей формуле:
в
течение
Тоб = Дс ∗ 𝑆 ∗ Др ∗ Нм ∗ Кис ,
года
(29)
где Дс – длительность смены, час.;
𝑆 – число смен работы компьютера;
Др – среднее число рабочих дней в месяце, дней;
Нм – число месяцев в году;
Кис – средний коэффициент использования компьютера в течение года
(0.8).
На основании формулы (29) можно получить следующее значение:
Тоб = Дс ∗ 𝑆 ∗ Др ∗ Нм ∗ Кис = 8 ∗ 1 ∗ 21 ∗ 12 ∗ 0.8 = 1612.8 час.
Планируется, что преподаватель будет использовать программу в
сумме около 15 часов каждый месяц.
Величина затрачиваемого компьютерного времени на решение задач
с помощью купленной программы рассчитывается по следующей формуле:
Тм = Вмес
∗ М,
з
(30)
где Вмес
– время решения задач с помощью приобретенного ПО в течение
з
одного дня, час.;
М – количество месяцев использования купленного ПО в течение года,
мес.
На основании формулы (30) можно получить следующее значение:
Тм = Вмес
∗ М = 15 ∗ 12 = 180 час.
з
Можно принять, что
составляет 30000 рублей.
цена
компьютера
офисного
назначения
Капитальные вложения на создание рабочего места пользователя ПО
(без учета износа) рассчитываются по следующей формуле:
Крм =
(𝑆 ∗ Цпл + Змеб ) ∗ Тм
Тоб
,
(31)
где 𝑆 – размер площади, которую занимают компьютерный стол и
специалист, работающий с помощью компьютера, кв. м.;
Цпл – рыночная цена 1 кв. м. площади на момент покупки ПО, руб.;
Змеб – затраты на приобретение мебели (компьютерный стол, кресло
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
74
для пользователя, стол для принтера и др., их можно принять 15% от
Цком ), руб.;
Тм – время использования компьютера в течение года для решения
всех задач с помощью приобретенной программы, час.;
Тоб – общее время эксплуатации компьютера в течение года, час.
На основании формулы (31) можно получить следующее значение:
Крм =
(𝑆 ∗ Цпл + Змеб ) ∗ Тм
Тоб
=
(4 ∗ 43709 + 4500) ∗ 180
=
1612.8
= 20015.18 руб.
Капитальные затраты на техническое оснащение рабочего места
пользователя ПО рассчитываются по следующей формуле:
Ктех =
(Цком + Цтех ) ∗ (1 + Ктр ) ∗ (1 − Киз ) ∗ Тм
Тоб
,
(32)
где Цком – рыночная цена компьютера определенной модели на момент
покупки программы, руб.;
Цтех – цена дополнительного технического оснащения компьютера
(стоимость принтера, звуковой карты, проигрывателя и др., их можно
принять в размере 50% от Цком ), руб.;
Ктр – коэффициент, учитывающий затраты на транспортировку и
отладку компьютера и других технических средств; рекомендуется
принять в размере 0,01-0,05 от Цком (данные расходы определяются в
том случае, если приобретается новая ПЭВМ. Если же будет
использоваться действующий компьютер, то Ктр = 0);
Киз – коэффициент, учитывающий степень износа действующего
компьютера, на котором будут решаться задачи с помощью купленного
ПО; его можно определить укрупненно, путем сопоставления
фактического и проектного (обычно не более 5 лет) сроков службы
ПЭВМ; в случае приобретения нового компьютера Киз = 0.;
Тм – время использования компьютера в течение года для решения
всех задач с помощью приобретенной программы, час.;
Тоб – общее время эксплуатации компьютера в течение года, час.
На основании формулы (32) можно получить следующее значение:
Ктех =
(Цком + Цтех ) ∗ (1 + Ктр ) ∗ (1 − Киз ) ∗ Тм
Тоб
=
3
(30000 + 15000) ∗ (1 + 0) ∗ (1 − ) ∗ 180
5
=
= 2008.93 руб.
1612.8
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
75
Капитальные затраты
на приобретение
рассчитываются по следующей формуле:
и
внедрение
Кпо = Цпо + Крм + Ктех + Кпр ,
ПО
(33)
где Цпо – затраты на покупку ПО (принимаются равными рыночной цене
программы), руб.;
Крм – капитальные вложения на создание рабочего места пользователя
ПО, руб.;
Ктех – капитальные вложения на техническое оснащение рабочего
места пользователя ПО, руб.;
Кпр – прочие капитальные вложения, связанные с внедрением ПО (10%
от Цпо ), руб.
На основании формулы (33) можно получить следующее значение:
Кпо = Цпо + Крм + Ктех + Кпр = 8730.64 + 20015.18 + 2008.93 +
+873.06 = 31627.81 руб.
Таким образом, можно представить данные в виде таблицы (таблица
10).
Таблица 10 – Капитальные затраты на покупку и внедрение ПО
Наименование затрат
Обозначение
Сумма, тыс. руб.
Затраты на покупку ПО
Цпо
8.731
Затраты
на
рабочего места
создание Крм
20.015
Затраты на техническое Ктех
оснащение рабочего места
2.009
Прочие
затраты
0.873
капитальные Кпр
Итого
Кпо
31.628
Годовые текущие затраты пользователя, связанные с применением
программы, рассчитываются по следующей формуле:
Зтек = Тм ∗ См +
Цпо
,
Тс
(34)
где Тм – время использования компьютера в течение года для решения
всех задач с помощью приобретенной программы, час.;
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
76
См – стоимость одного часа эксплуатации компьютера, руб.;
Цпо – затраты на покупку ПО (принимаются равными рыночной цене
программы), руб.;
Тс – планируемый срок использования приобретенной компьютерной
программы (с учетом морального износа не более 5 лет), час.
На основании формулы (34) можно получить следующее значение:
Зтек = Тм ∗ См +
Цпо
8730.64
= 180 ∗ 111.55 +
=
3
Тс
= 22989.21 руб.
Стоимость одного часа эксплуатации компьютера взята как стоимость
одного часа эксплуатации компьютера разработчика, так как в обоих случаях
считается, что будет задействован компьютер офисного назначения со
сходными характеристиками.
При решении задачи без использования разработанной программы
потребуется участие двух человек: преподавателя, составляющего
требования к ВЛС и математическую модель ВЛС, и программиста,
разрабатывающего ВЛС на основании требований и математической модели.
В этом случае можно считать, что общее время работы над созданием
ВЛС увеличится минимум в 2 раза в связи с увеличением объема работ,
причем 50-80% времени уйдет на разработку ВЛС.
Время, затраченное преподавателем на
использования разработанной программы, равно:
разработку
ВЛС
без
разработку
ВЛС
без
Ввлс
преп = 180 ∗ 2 ∗ 0.5 = 180 час.
Время, затраченное программистом на
использования разработанной программы, равно:
Ввлс
п = 180 ∗ 2 ∗ 0.5 = 180 час.
Фонд оплаты труда работников, участвующих в решении задач без
использования разработанной программы, рассчитанный по минимальному
уровню зарплаты, можно найти, основываясь на формулах (6)-(9):
преп
п
Рпреп ∗ Ввлс
+ Рп ∗ Ввлс
преп ∗ Ом
п ∗ Ом
ФОТм =
+ П + Врк =
Дс ∗ Д р
1 ∗ 180 ∗ 12130 + 1 ∗ 180 ∗ 12130
+ 5198.57 + 4678.71 =
8 ∗ 21
= 35870.14 руб.
=
Затраты на решение задач без применения компьютерной программы
рассчитываются по следующей формуле:
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
77
Зр =
Р ∗ Вуч ∗ Ом
+ П + Врк + Есн ,
Дс ∗ Др
(35)
где Р – число работников, участвующих в решении задач ручным способом,
чел.;
Вуч – время участия каждого работника в решении задач ручным
способом в течение года, час.;
Ом – месячный оклад работника в соответствии с его категорией или
тарифным разрядом, руб.;
П – премия, предусмотренная для работников, участвующих в решении
задач ручным способом (20% от ЗПоб ), руб.;
Врк – выплаты по районному коэффициенту (установлены для г. Кирова
в размере 15% от (ЗПоб + П)), руб.;
Есн – единый социальный налог (30%);
Дс – длительность смены, час.;
Др – среднее число рабочих дней в месяце, дней.
На основании формулы (35) можно получить следующее значение:
Зр =
Р ∗ Вуч ∗ Ом
+ П + Врк + Есн =
Д с ∗ Др
2 ∗ 180 ∗ 12130
+ 5198.57 + 4678.71 + 7797.86 = 43668 руб.
8 ∗ 21
Годовая экономия на текущих расходах, которую может получить
фирма от применения программного обеспечения, рассчитывается по
следующей формуле:
=
Эг = Зр − Зтек ,
(36)
где Зр – затраты на решение задач, действующим способом (обычно
ручным), руб.;
Зтек – годовые текущие затраты пользователя, связанные с применением
программы, руб.
На основании формулы (36) можно получить следующее значение:
Эг = Зр − Зтек = 43668 − 22989.21 = 20678.79 руб.
Срок окупаемости капитальных затрат на покупку и внедрение
компьютерной программы рассчитывается по следующей формуле:
Ток =
Кпо
,
Эг
(37)
где Кпо – капитальные затраты на приобретение и внедрение ПО, руб.;
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
78
Эг – годовая экономия на текущих расходах, которую может получить
фирма от применения программного обеспечения, руб.
На основании формулы (37) можно получить следующее значение:
Ток =
Кпо 31627.81
=
= 1.5 лет.
Эг
20678.79
4.4 Выводы к разделу 4
Итоговые значения расчетов приведены в таблице ниже (таблица 11).
Таблица 11 – Финансово-экономические
использования ПО
Наименование показателя
Единица измерения
показатели
создания
и
Значение показателя
1 Показатели фирмы-разработчика ПО
1.1 Число специалистов,
участвующих в разработке
компьютерной программы
чел.
2
1.2 Время создания ПО
чел.мес.
4.89
1.3 Число копий ПО,
предполагаемых к реализации
шт.
100
1.4 Затраты на создание ПО
тыс.руб.
300.960
1.5 Розничная цена одной копии
тыс.руб.
8.731
1.6 Уровень рентабельности
%
20
1.7 Балансовая прибыль от
продажи ПО
тыс.руб.
111.740
1.8 "Чистая" прибыль
тыс.руб.
89.392
2. Показатели фирмы-покупателя ПО
2.1 Капитальные затраты на
покупку и внедрение ПО
тыс.руб.
31.628
2.2 Годовые текущие расходы,
связанные с использованием ПО
тыс.руб.
22.989
2.3 Годовая экономия от
применения ПО
тыс.руб.
20.679
2.4 Расчетный срок окупаемости
капитальных затрат
лет
1.5
На основании данных таблицы 11 можно сделать вывод, что создание
и приобретение программы экономически выгодно, капитальные затраты на
покупку и внедрение продукта окупятся за 1.5 года.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
79
Заключение
В ходе данной выпускной квалификационной работы был разработан
модуль
проектирования
виртуальных
лабораторных
стендов
с
использованием языка программирования C#. Весь процесс разработки был
разбит на несколько последовательных этапов для достижения конечной
цели: обзора предметной области виртуальных лабораторных стендов,
проектирования модуля, программной реализации и технико-экономического
обоснования разработки модуля.
Обзор предметной области и сравнение аналогов позволили выделить
конкурентные особенности, которые были далее реализованы в модуле:
разграничение логики и интерфейса, наличие визуального языка
программирования, удобного в использовании и обладающего достаточным
функционалом для проектирования моделей.
В ходе проектирования была определена концепция стенда,
разработаны функциональные модели, модели данных, произведено
проектирование с использованием языка UML. Особое внимание было
уделено разработке нижнего уровня визуального языка программирования
LabScript.
Программная реализация модуля была продемонстрирована
экранными формами графического пользовательского интерфейса и
фрагментами исходного кода модуля. Также в дополнение к программной
реализации был разработан демонстрационный стенд «Модель температуры
микроклимата теплицы» с целью отражения практической применимости
разработанного модуля.
Было
произведено
экономическое
обоснование
разработки
программного продукта: расчет затрат на создание продукта, розничной цены
одной копии продукта, выручки и прибыли от реализации продукции,
расходов от внедрения и эксплуатации программы. В результате было
выяснено, что затраты пользователя на покупку и внедрение решения
окупятся за 1.5 года. Причем цена модуля оказалась ниже цен за аналоги, что
является также достоинством модуля.
Следует отметить, что разработка данного модуля является лишь
первым шагом к созданию автоматизированной системы проектирования,
которая позволит преподавателям повысить качество подачи учебного
материала за счет использования разработанных в соответствии с
требованиями учебного курса и с небольшими затратами времени и средств
виртуальными лабораторными стендами.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
80
Приложение А
(обязательное)
Модель модуля в нотации IDEF0
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
81
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Контекстная диаграмма
IDEF0
Лист 82
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма декомпозиции
IDEF0
Лист 83
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма «Подготовить
рабочее пространство»
Лист 84
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма «Произвести
проектирование ВЛС»
Лист 85
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Диаграмма
«Проектировать
содержимое ВЛС»
Лит.
Лист 86
Масса
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма «Сохранить
результаты»
Лист 87
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Приложение Б
(обязательное)
Модель модуля в нотации IDEF3
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
88
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Контекстная диаграмма
IDEF3
Лист 89
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма декомпозиции
IDEF3
Лист 90
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма «Подготовить
рабочее пространство»
Лист 91
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма «Произвести
проектирование ВЛС»
Лист 92
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Диаграмма
«Проектировать
содержимое ВЛС»
Лит.
Лист 93
Масса
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма «Сохранить
результаты»
Лист 94
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Приложение В
(обязательное)
Модель модуля в нотации DFD
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
95
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Контекстная диаграмма
DFD
Лист 96
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма декомпозиции
DFD
Лист 97
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Диаграмма «Менеджеры
проектирования»
Лист 98
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Приложение Г
(обязательное)
Диаграмма сериализации
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
99
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Утв.
Ланских Ю.В.
Масса
Масштаб
Диаграмма сериализации
(часть 1)
Лист 100
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Утв.
Ланских Ю.В.
Масса
Масштаб
Диаграмма сериализации
(часть 2)
Лист 101
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Приложение Д
(обязательное)
Диаграммы активности
Рисунок Д.1 – Сохранить модель
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
102
Рисунок Д.2 – Загрузить модель
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
103
Рисунок Д.3 – Создать модель
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
104
Приложение Ж
(обязательное)
Диаграммы последовательности
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
105
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Диаграмма «Сохранить
модель»
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 106
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Диаграмма «Загрузить
модель»
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 107
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Диаграмма «Создать
модель»
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 108
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Приложение И
(обязательное)
Диаграммы классов
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
109
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Контекстная диаграмма
классов интерфейса модуля
Лист 110
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Содержимое классов
интерфейса модуля
(часть 1)
Лит.
Масса
Лист 111
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
интерфейса модуля
(часть 2)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 112
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
интерфейса модуля
(часть 3)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 113
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
интерфейса модуля
(часть 4)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 114
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
интерфейса модуля
(часть 5)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 115
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
интерфейса модуля
(часть 6)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 116
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
интерфейса модуля
(часть 7)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 117
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
интерфейса модуля
(часть 8)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 118
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Лит.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Масса
Масштаб
Контекстная диаграмма
классов структур данных
Лист 119
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
структур данных
(часть 1)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 120
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Содержимое классов
структур данных
(часть 2)
Лит.
Масса
Лист 121
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
структур данных
(часть 3)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 122
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Содержимое классов
структур данных
(часть 4)
Лит.
Масса
Лист 123
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
структур данных
(часть 5)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 124
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Содержимое классов
структур данных
(часть 6)
Лит.
Масса
Лист 125
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
структур данных
(часть 7)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 126
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Перв. применение
Справ.
Подп. и дата
дубл.
Инв.
Взам. инв.
Подп. и дата
подп.
Инв.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Содержимое классов
структур данных
(часть 8)
Масштаб
Кафедра САУ
Группа ИТб-4301-01-00
Листов 150
Масса
Лист 127
Лит.
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Содержимое классов
структур данных
(часть 9)
Лит.
Масса
Лист 128
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Инв.
подп.
Подп. и дата
Взам. инв.
Инв.
дубл.
Подп. и дата
Справ.
Перв. применение
ТПЖА 090302.036 ПЗ
ТПЖА 090302.036 ПЗ
Изм Лист
докум. Подпись Дата
Разраб. Дождиков И.С.
Пров.
Ланских Ю.В.
Т.контр. Ланских Ю.В.
Н.контр. Ланских Ю.В.
Ланских Ю.В.
Утв.
Содержимое классов
структур данных
(часть 10)
Лит.
Масса
Лист 129
Масштаб
Листов 150
Кафедра САУ
Группа ИТб-4301-01-00
Приложение К
(обязательное)
Диаграммы компонентов
Рисунок К.1 – Контекстная диаграмма компонентов
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
130
Рисунок К.2 – Диаграмма компонентов библиотеки модуля
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
131
Рисунок К.3 – Диаграмма компонентов библиотеки структур данных
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
132
Рисунок К.4 – Диаграмма компонентов каталогов «Variable», «Module»,
«Model», «Object», «Variable», «Extension»
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
133
Рисунок К.5 – Диаграмма компонентов каталога «Interface»
Рисунок К.6 – Диаграмма компонентов каталога «Programming»
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
134
Приложение Л
(обязательное)
Фрагменты исходного кода
Листинг М.1 – Исходный код класса менеджера модели
using
using
using
using
using
using
using
using
LabCAD.DataStructures.Model;
LabCAD.DataStructures.Object.ObjectCAD;
System;
System.Collections.Generic;
System.Drawing;
System.IO;
System.Runtime.Serialization.Formatters.Binary;
System.Windows.Forms;
namespace LabCAD.Modules.DesignModule
{
/// <summary>
/// Класс для работы с моделью
/// </summary>
public class ModelManager
{
/// <summary>
/// Состояние сохраненности модели на диске
/// </summary>
public bool IsSavedModel { get; private set; } = true;
/// <summary>
/// Информация о модели
/// </summary>
public ModelInfo CurrentModelInfo { get; private set; }
/// <summary>
/// Загрузить модель
/// </summary>
public void LoadModel()
{
if (IsSavedModel)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Файлы модели(*.lab)|*.lab";
if (dialog.ShowDialog() == DialogResult.OK && dialog.FileName != "")
{
LoadFromFile(dialog.FileName);
}
}
else
{
DialogResult messageBox = MessageBox.Show("При загрузке модели потеряется
текущая несохраненная модель. Все равно загрузить?", "Внимание",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (messageBox == DialogResult.OK)
{
IsSavedModel = true;
LoadModel();
}
}
}
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
135
/// <summary>
/// Сохранить модель
/// </summary>
public void SaveModel()
{
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "Файлы модели(*.lab)|*.lab";
if (dialog.ShowDialog() == DialogResult.OK && dialog.FileName != "")
{
SaveIntoFile(dialog.FileName);
}
else
{
MessageBox.Show("Необходимо выбрать файл для сохранения", "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// Создать модель
/// </summary>
/// <param name="info">Информация о модели</param>
public void CreateModel(ModelInfo info)
{
if (!IsSavedModel)
{
DialogResult messageBox = MessageBox.Show("При создании модели потеряется
текущая несохраненная модель. Все равно создать?", "Внимание",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (messageBox != DialogResult.OK)
{
return;
}
}
MainWindow window = ((DesignModule)DesignModule.Current).MainWindow;
window.LogicPanelManager.Initialize(info.LogicPanelData.PanelSize.Width,
info.LogicPanelData.PanelSize.Height, true);
window.InterfacePanelManager.Initialize(info.InterfacePanelData.PanelSize.Width,
info.InterfacePanelData.PanelSize.Height, true);
window.LogicPanelManager.Scale = 1.0f;
window.InterfacePanelManager.Scale = 1.0f;
CurrentModelInfo = info;
IsSavedModel = false;
window.ConsoleManager.AddLine("-> Модель \"" + CurrentModelInfo.Name + "\"
создана.", MessageTypes.Simple);
window.UpdateModelMenu();
}
/// <summary>
/// Задать инфомацию о модели
/// </summary>
/// <param name="info">Информация о модели</param>
public void SetModelInfo(ModelInfo info)
{
MainWindow window = ((DesignModule)DesignModule.Current).MainWindow;
window.LogicPanelManager.Initialize(info.LogicPanelData.PanelSize.Width,
info.LogicPanelData.PanelSize.Height, false);
window.InterfacePanelManager.Initialize(info.InterfacePanelData.PanelSize.Width,
info.InterfacePanelData.PanelSize.Height, false);
CurrentModelInfo = info;
IsSavedModel = false;
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
136
window.ConsoleManager.AddLine("-> Информация о модели изменена.",
MessageTypes.Simple);
}
/// <summary>
/// Загрузить модель из файла
/// </summary>
/// <param name="filePath">Путь к файлу модели</param>
private void LoadFromFile(string filePath)
{
MainWindow window = ((DesignModule)DesignModule.Current).MainWindow;
try
{
window.ConsoleManager.AddLine("-> Загрузка модели...",
MessageTypes.Simple);
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Binder = MyBinder.GetMyBinder();
Model model;
Model.Clear();
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
model = (Model)binaryFormatter.Deserialize(fs);
}
model.Load(window.LogicPanelManager.Panel,
window.InterfacePanelManager.Panel, new object[] { window.LogicPanelManager,
window.InterfacePanelManager });
IsSavedModel = true;
CurrentModelInfo = model.ModelInfo;
window.ConsoleManager.AddLine("-> Модель \"" + CurrentModelInfo.Name +
"\" загружена.", MessageTypes.Simple);
if(window.IsOpenLogic)
((DesignModule)DesignModule.Current).MainWindow.StateLineManager.SetText("Масштаб: " +
((int)Math.Round(window.LogicPanelManager.Scale * 100)).ToString() + "%",
TypeLineText.Scale);
else
((DesignModule)DesignModule.Current).MainWindow.StateLineManager.SetText("Масштаб: " +
((int)Math.Round(window.InterfacePanelManager.Scale * 100)).ToString() + "%",
TypeLineText.Scale);
window.UpdateModelMenu();
}
catch (Exception ex)
{
window.LogicPanelManager.ClearAll();
window.InterfacePanelManager.ClearAll();
IsSavedModel = true;
CurrentModelInfo = null;
window.ConsoleManager.AddLine("-> При загрузке модели произошла ошибка: "
+ ex.ToString(), MessageTypes.Error);
}
}
/// <summary>
/// Сохранить модель в файл
/// </summary>
/// <param name="filePath">Путь к файлу модели</param>
private void SaveIntoFile(string filePath)
{
MainWindow window = ((DesignModule)DesignModule.Current).MainWindow;
try
{
window.ConsoleManager.AddLine("-> Сохранение модели...",
MessageTypes.Simple);
BinaryFormatter binaryFormatter = new BinaryFormatter();
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
137
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
binaryFormatter.Serialize(fs, PackModel());
}
IsSavedModel = true;
window.ConsoleManager.AddLine("-> Модель \"" + CurrentModelInfo.Name +
"\" сохранена.", MessageTypes.Simple);
}
catch (Exception ex)
{
window.ConsoleManager.AddLine("-> При сохранении модели произошла ошибка:
" + ex.ToString(), MessageTypes.Error);
}
}
/// <summary>
/// Запаковать модель
/// </summary>
/// <returns>Объект модели</returns>
private Model PackModel()
{
MainWindow window = ((DesignModule)DesignModule.Current).MainWindow;
List<object> objects = new List<object>();
CurrentModelInfo.LogicPanelData.PanelSize = new
Size(window.LogicPanelManager.Width, window.LogicPanelManager.Height);
CurrentModelInfo.LogicPanelData.PanelScale = window.LogicPanelManager.Scale;
CurrentModelInfo.InterfacePanelData.PanelSize = new
Size(window.InterfacePanelManager.Width, window.InterfacePanelManager.Height);
CurrentModelInfo.InterfacePanelData.PanelScale =
window.InterfacePanelManager.Scale;
foreach (ObjectCAD i in window.LogicPanelManager.Objects)
objects.Add((object)i);
return new Model(DesignModule.Current.Version, CurrentModelInfo, objects);
}
}
}
Листинг М.2 – Исходный код функции генерации конструкции или
выражения в Мастере действий
/// <summary>
/// Получить исполняемый элемент
/// </summary>
/// <returns>Исполняемый элемент</returns>
public ExecutionElement GetExecutionElement()
{
ExecutionElement executionElement = null;
List<Expression> operandExpressions = new List<Expression>();
List<ArithmeticExpressionType> expressionOperations = new
List<ArithmeticExpressionType>();
switch (HandlerType)
{
case HandlerType.Setting:
VariableOperandExpression variableOperandExpression =
((VariableOperandHandler)Elements[0]).GetVariableOperand();
Expression value = null;
if (OperandsCount == 2)
{
if (Elements[2].GetType() == typeof(VariableOperandHandler))
value =
((VariableOperandHandler)Elements[2]).GetVariableOperand();
else if (Elements[2].GetType() ==
typeof(ExpressionOperandHandler))
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
138
value =
((ExpressionOperandHandler)Elements[2]).GetExecutionElement();
else if (Elements[2].GetType() == typeof(ConstOperandHandler))
value =
((ConstOperandHandler)Elements[2]).GetConstOperandExpression();
else if (Elements[2].GetType() == typeof(FunctionOperandHandler))
value =
((FunctionOperandHandler)Elements[2]).GetFunctionOperandExpression();
executionElement = new SetStructure(variableOperandExpression,
value);
}
else if (OperandsCount > 2)
{
for (int i = 2; i < Elements.Count; i++)
{
if (Elements[i].GetType() == typeof(VariableOperandHandler))
{
operandExpressions.Add(((VariableOperandHandler)Elements[i]).GetVariableOperand());
}
else if (Elements[i].GetType() ==
typeof(ExpressionOperandHandler))
operandExpressions.Add(((ExpressionOperandHandler)Elements[i]).GetExecutionElement());
else if (Elements[i].GetType() == typeof(Operation))
expressionOperations.Add(GetArithmeticExpressionType(((Operation)Elements[i]).GetValue())
);
else if (Elements[i].GetType() ==
typeof(ConstOperandHandler))
operandExpressions.Add(((ConstOperandHandler)Elements[i]).GetConstOperandExpression());
else if (Elements[i].GetType() ==
typeof(FunctionOperandHandler))
operandExpressions.Add(((FunctionOperandHandler)Elements[i]).GetFunctionOperandExpression
());
}
executionElement = new SetStructure(variableOperandExpression,
new ArithmeticExpression(expressionOperations, operandExpressions, FunctionType.None));
}
break;
case HandlerType.Arithmetic:
foreach (var i in Elements)
{
if (i.GetType() == typeof(VariableOperandHandler))
{
operandExpressions.Add(((VariableOperandHandler)i).GetVariableOperand());
}
else if (i.GetType() == typeof(ExpressionOperandHandler))
operandExpressions.Add(((ExpressionOperandHandler)i).GetExecutionElement());
else if (i.GetType() == typeof(Operation))
expressionOperations.Add(GetArithmeticExpressionType(((Operation)i).GetValue()));
else if (i.GetType() == typeof(ConstOperandHandler))
operandExpressions.Add(((ConstOperandHandler)i).GetConstOperandExpression());
else if (i.GetType() == typeof(FunctionOperandHandler))
operandExpressions.Add(((FunctionOperandHandler)i).GetFunctionOperandExpression());
}
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
139
executionElement = new ArithmeticExpression(expressionOperations,
operandExpressions, FunctionType.None);
break;
case HandlerType.Logic:
foreach (var i in Elements)
{
if (i.GetType() == typeof(VariableOperandHandler))
{
operandExpressions.Add(((VariableOperandHandler)i).GetVariableOperand());
}
else if (i.GetType() == typeof(ExpressionOperandHandler))
operandExpressions.Add(((ExpressionOperandHandler)i).GetExecutionElement());
else if (i.GetType() == typeof(ConstOperandHandler))
operandExpressions.Add(((ConstOperandHandler)i).GetConstOperandExpression());
else if (i.GetType() == typeof(FunctionOperandHandler))
operandExpressions.Add(((FunctionOperandHandler)i).GetFunctionOperandExpression());
}
executionElement = new
LogicExpression(GetLogicExpressionType(((Operation)Elements[1]).GetValue()),
operandExpressions, FunctionType.None);
break;
case HandlerType.Calling:
executionElement = new
CallStructure((FunctionOperandExpression)GetExecutionElement(Elements[0]));
break;
default:
executionElement = GetExecutionElement(Elements[0]);
break;
}
return executionElement;
}
Листинг М.3 – Исходный код класса объекта модели
using
using
using
using
using
using
using
LabCAD.DataStructures.Interface.ElementBox;
LabCAD.Modules.DesignModule;
System;
System.Collections.Generic;
System.Drawing;
System.Runtime.Serialization;
System.Windows.Forms;
namespace LabCAD.DataStructures.Object.ObjectCAD
{
/// <summary>
/// Типы базовый объектов
/// </summary>
public enum PrimitiveObjectType
{
InputObject,
OutputObject,
SimpleObject,
DataObject
}
[Serializable]
/// <summary>
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
140
/// Представляет собой базовый абстрактный класс объекта, содержащий основные
параметры и методы объекта
/// </summary>
public abstract class ObjectCAD : ISerializable, ILoadable, IDrawable
{
public static Dictionary<UInt64, ObjectCAD> Objects = new Dictionary<ulong,
ObjectCAD>(); // список объектов для вторичной загрузки
protected static List<UInt64> _idList = new List<UInt64>(); //список занятых Id
/// <summary>
/// Конструктор объекта САПР
/// </summary>
/// <param name="primitiveType">Базовый тип объекта</param>
/// <param name="isBehaviorChange">Возможность изменять алгоритм поведения
объекта</param>
/// <param name="isVariablesEdit">Возможность редактировать переменные</param>
/// <param name="extensionId">ID расширения данного объекта САПР</param>
/// <param name="panel">Панель проектирования логики</param>
/// <param name="image">Изображение объекта</param>
/// <param name="pos">Позиция объекта</param>
/// <param name="size">Размер объекта</param>
protected ObjectCAD(PrimitiveObjectType primitiveType, bool isBehaviorChange,
bool isVariablesEdit, Guid extensionId, Control panel, Bitmap image, Point pos, Size
size)
{
PrimitiveType = primitiveType;
IsBehaviorChange = isBehaviorChange;
IsVariablesEdit = isVariablesEdit;
ExtensionId = extensionId;
try
{
for (UInt64 i = 1; ; i++)
{
if (!_idList.Contains(i))
{
this.Id = i;
_idList.Add(i);
break;
}
}
}
catch (Exception ex)
{
throw new OutOfMemoryException("Вышли за максимальный размер Id");
}
Name = "Объект" + Id.ToString();
LogicBox = new LogicElementBox(this, panel, new LogicElementImage(size, Name,
image), pos, 1.0);
Image = image;
Associations = new List<Association>();
UsedObjects = new List<ulong>();
}
protected ObjectCAD(SerializationInfo info, StreamingContext context)
{
Id = info.GetUInt64("Id");
_idList.Add(Id);
Name = info.GetString("Name");
PrimitiveType = (PrimitiveObjectType)info.GetInt16("PrimitiveType");
IsActive = info.GetBoolean("IsActive");
IsBehaviorChange = info.GetBoolean("IsBehaviorChange");
IsVariablesEdit = info.GetBoolean("IsVariablesEdit");
ExtensionId = Guid.Parse(info.GetString("ExtensionId"));
LogicBox = (LogicElementBox)info.GetValue("LogicBox",
typeof(LogicElementBox));
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
141
Associations = (List<Association>)info.GetValue("Associations",
typeof(List<Association>));
Objects.Add(Id, this);
UsedObjects = (List<UInt64>)info.GetValue("UsedObjects",
typeof(List<UInt64>));
}
/// <summary>
/// Id объекта
/// </summary>
public UInt64 Id
{
get;
private set;
}
/// <summary>
/// Имя объекта
/// </summary>
public String Name
{
get;
set;
}
/// <summary>
/// Примитивный тип объекта
/// </summary>
public PrimitiveObjectType PrimitiveType
{
get;
private set;
}
/// <summary>
/// Возможность изменения алгоритма поведения объекта
/// </summary>
public Boolean IsBehaviorChange
{
get;
private set;
}
/// <summary>
/// Состояние активности объекта
/// </summary>
public Boolean IsActive
{
get;
set;
}
/// <summary>
/// Возможность изменения переменных объекта
/// </summary>
public Boolean IsVariablesEdit
{
get;
private set;
}
/// <summary>
/// Уникальный идентификатор расширения, к которому относится данный объект
/// </summary>
public Guid ExtensionId
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
142
{
get;
private set;
}
/// <summary>
/// Заголовок объекта
/// </summary>
public Head Head { get; set; }
/// <summary>
/// Контейнер объекта логики
/// </summary>
public LogicElementBox LogicBox
{
get;
private set;
}
/// <summary>
/// Список ассоциаций
/// </summary>
public List<Association> Associations
{
get;
set;
}
/// <summary>
/// Изображение объекта
/// </summary>
public virtual Bitmap Image { get; }
/// <summary>
/// Существование других объектов в алгоритме поведения текущего объекта
/// </summary>
public List<UInt64> UsedObjects { get; set; }
public virtual void GetObjectData(SerializationInfo info, StreamingContext
context)
{
info.AddValue("Id", Id);
info.AddValue("Name", Name);
info.AddValue("PrimitiveType", (int)PrimitiveType);
info.AddValue("IsActive", IsActive);
info.AddValue("IsBehaviorChange", IsBehaviorChange);
info.AddValue("IsVariablesEdit", IsVariablesEdit);
info.AddValue("LogicBox", LogicBox);
info.AddValue("Associations", Associations);
info.AddValue("ExtensionId", ExtensionId);
info.AddValue("UsedObjects", UsedObjects);
}
public virtual void Load(Panel logicPanel, Panel interfacePanel, object[]
arguments)
{
Head.Load(logicPanel, interfacePanel, new object[] { this });
LogicBox.Load(logicPanel, interfacePanel, new object[] { this });
foreach (Association i in Associations)
i.Load(logicPanel, interfacePanel, null);
((LogicPanelManager)arguments[0]).AddObject(this);
}
/// <summary>
/// Очистка списка Id
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
143
/// </summary>
public static void ClearIds()
{
_idList.Clear();
}
/// <summary>
/// Освобождение соответствующего Id
/// </summary>
public void RemoveId()
{
_idList.Remove(this.Id);
}
}
}
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
144
Приложение М
(обязательное)
Авторская справка
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
145
АВТОРСКАЯ СПРАВКА
Я,
_______ Дождиков Игорь Сергеевич_________________________________________
автор выпускной квалификационной работы
_______Разработка
модуля
проектирования
виртуальных
лабораторных
стендов__________________________________________________________________
________________________________________________________________________
________________________________________________________________________
сообщаю, что мне известно о персональной ответственности автора за разглашение
сведений, подлежащих защите законами РФ о защите объектов интеллектуальной
собственности.
Одновременно сообщаю, что:
1. При подготовке к защите (опубликованию) выпускной квалификационной работы
не использованы источники (документы, отчеты, диссертации, литература и т.п.),
имеющие гриф секретности или "Для служебного пользования" ВятГУ или другой
организации.
2. Данная работа не связана с незавершенными исследованиями или уже с
завершенными, но еще официально не разрешенными к опубликованию ВятГУ или
другими организациями.
3. Данная работа не содержит коммерческую информацию, способную нанести
ущерб интеллектуальной собственности ВятГУ или другой организации.
4. Данная работа не является результатом НИР или ОКР, выполняемой по договору
с организацией.
5. В предлагаемом к опубликованию тексте нет данных по незащищенным объектам
интеллектуальной собственности других авторов.
6. Согласен на использование результатов своей работы безвозмездно в ВятГУ для
учебного процесса, а также на размещение своей работы в электронной информационнообразовательной среде ВятГУ.
7. Использование моей выпускной квалификационной работы в научных
исследованиях оформляется в соответствии с законодательством РФ о защите
интеллектуальной собственности.
Автор
___________________
/личная подпись/
__________________
/И. О. Фамилия/
"____"___________ 20_____ г.
Сведения по авторской справке подтверждаю:
Заведующий кафедрой
___________________
/личная подпись/
_______________
/И. О. Фамилия/
"____"___________ 20_____ г.
146
Приложение Н
(обязательное)
Перечень принятых определений и терминов
В настоящей работе используются следующие определения:
виртуальный лабораторный стенд (ВЛС, стенд) – это
многофункциональный программно-методический комплекс, моделирующий
действие изучаемых явлений, приборов, механизмов и технических средств;
проектирование – процесс составления описания, необходимого для
создания в заданных условиях еще несуществующего объекта, на основе
первичного описания этого объекта и (или) алгоритма его
функционирования;
система автоматизированного проектирования (САПР) – это
система, реализующая автоматизированное проектирование;
модуль САПР – логически связанная совокупность программных
компонентов, выполняющая конкретные функции в рамках САПР;
визуальный язык программирования – совокупность графических
или текстографических объектов, манипулируя которыми пользователь
задает логику работы модели;
модель – это совокупность связанных тем или иным способом
объектов модели, имеющих список привязанных переменных объекта,
ориентированных на взаимодействие с объектами модели и пользователем
через задаваемое с помощью визуального языка программирование
поведение, предназначенная для моделирования процесса, явления или
объекта конкретной предметной области;
объект модели (объект) – это семантически и программно
обособленная единица модели, несущая в себе часть информации в форме
переменных объекта и часть логики работы модели в форме поведения
объекта;
ассоциация – связь между объектами модели;
линия – графическое представление ассоциации на поле
проектирования логики;
контейнер ‒ графическое представление объекта на поле
проектирования, с помощью которого пользователь модуля проектирования
может взаимодействовать с объектами;
объект интерфейса – элемент управления графического
пользовательского интерфейса, связанный с контейнером интерфейса;
переменная объекта (переменная) – это программный контейнер,
инкапсулирующий в себе значение данной переменной с дополнительной
служебной информацией для корректной обработки переменной в контексте
модели и для обеспечения взаимодействия с ней пользователя, и содержащий
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
147
в себе совокупность методов по выполнению служебных операций с
переменной;
поведение объекта – совокупность программ объекта модели,
которые реализуют определенные алгоритмы обработки полученных
объектом данных, сохранения результатов обработки и (или) передачи их
другим объектам и пользователю;
программа – это последовательность конструкций нижнего уровня
визуального языка программирования LabScript, LabScript for Behaviour;
цикл работы модели – строго заданная последовательность
выполнения программ объектов модели;
диаграмма сериализации – диаграмма представления структур
данных, в которые происходит сериализация объектов классов;
верхний уровень реализации визуального языка программирования
LabScript, LabScript for Objects ‒ подмножество визуального языка
программирования LabScript для манипуляции объектами модели: созданием
и удалением их, организацией системы связей;
нижний уровень реализации визуального языка программирования
LabScript, LabScript for Behaviour ‒ подмножество визуального языка
программирования LabScript для формирования программ для обработки
событий в объекте модели;
конструкция – минимальная независимая синтаксическая единица
подмножества LabSript for Behaviour;
выражение – составная часть конструкций и других выражений,
формирующая порядок вычисления значений;
операнд – составная часть конструкций и выражений, над которыми
производятся операции;
операция – действие, производимое над операндами с целью
получения результата вычислений;
тик – это период времени между двумя последовательными во
времени большими циклами работы модели.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
148
Приложение П
(обязательное)
Перечень принятых обозначений и сокращений
В настоящей работе используются следующие сокращения:
ПЗ – пояснительная записка;
ДДП – ведомость дипломного проекта;
ЭВМ – электронно-вычислительная машина;
ВЛС – виртуальный лабораторный стенд;
САПР – система автоматизированного проектирования;
АСУ
ТП
–
автоматизированная
система
управления
технологическим процессом;
АСНИ ‒ автоматизированная система научных исследований;
UML – Unified Modeling Language, унифицированный язык
моделирования;
IDEF0 – ICAM DEFinition for Function Modeling, методология
функционального моделирования и графическая нотация, предназначенная
для формализации и описания бизнес-процессов;
IDEF3 – integrated DEFinition for Process Description Capture Method,
методология моделирования и стандарт документирования процессов,
происходящих в системе;
DFD – data flow diagrams, диаграммы потоков данных;
РБНФ ‒расширенная Бэкус-Наурова форма;
ПО – программное обеспечение;
ВУЗ – высшее учебное заведение;
ДПЛ – плакат.
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
149
Приложение Р
(справочное)
Библиографический список
1. Виртуальные стенды [Электронный ресурс] // Учебная техника и
наглядные пособия от производителя, 2020. URL: https://stendlab.ru/virtualnyelaboratornye-stendy (дата обращения: 05.05.2020).
2. Саликаев, Ю. Р. Математические модели и САПР электронных
приборов и устройств [Текст]: учебное пособие /Ю. Р. Саликаев – Томск:
ТУСУР, 2006. – 182 с.
3. Норенков, И.П. Основы автоматизированного проектирования
[Текст]: учеб./ И.П. Норенков – 2 изд., перераб. и доп. – М: Изд-во МГТУ им.
Н.Э. Баумана, 2002. – 336 с.: ил.
4. TIOBE Index for May 2020 [Электронный ресурс] // TIOBE – The
Software Quaity Company, 2020. URL: https://tiobe.com/tiobe-index/ (дата
обращения: 19.05.2020).
5. Псевдо ООП в C [Электронный ресурс] // Хабр, 2020. URL:
https://habr.com/ru/post/263547/ (дата обращения: 19.05.2020).
6. Python ‒ это медленно. Почему? [Электронный ресурс] // Блог
компании
RUVDS.COM,
2020.
URL:
https://habr.com/ru/company/ruvds/blog/418823/ (дата обращения: 19.05.2020).
7. Руководство по языку C# [Электронный ресурс] // Хранилище
документации Майкрософт, 2020. URL: https://docs.microsoft.com/ru-ru/ (дата
обращения: 23.05.2020).
8. Как не наступить на грабли, работая с сериализацией [Электронный
ресурс]
//
Блог
компании
PVS-Studio,
2020.
URL:
https://habr.com/ru/company/pvs-studio/blog/304734/
(дата
обращения:
23.05.2020).
Изм Лист
докум.
Подпись Дата
ТПЖА.090302.036 ПЗ
Лист
150
Отзывы:
Авторизуйтесь, чтобы оставить отзыв