ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
( Н И У
« Б е л Г У » )
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
КАФЕДРА МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
АВТОМАТИЗИРОВАННАЯ СИСТЕМА УЧЁТА ТРУДОВЫХ
РЕСУРСОВ И ЗАРАБОТНОЙ ПЛАТЫ ДЛЯ ИД ООО
«МОНТАЖАВТОМАТИКА»
Выпускная квалификационная работа
обучающегося по направлению подготовки 02.03.02
Фундаментальная информатика и информационные технологии
очной формы обучения, группы 07001401
Жолумского Кирилла Викторовича
Научный руководитель
к.т.н., доцент
Муромцев В.В.
БЕЛГОРОД 2018
СОДЕРЖАНИЕ
ВВЕДЕНИЕ .............................................................................................................. 3
1. АНАЛИЗ ИНФОРМАЦИОННОЙ СИСТЕМЫ ИД ООО
«МОНТАЖАВТОМАТИКА» ................................................................................ 6
1.1 Обзор текущего состояния информационной системы предприятия ....... 6
1.2 Анализ модуля управления трудовыми ресурсами .................................. 10
1.3 Постановка и анализ задачи планирования трудовых ресурсов ............. 13
2. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ...................... 21
2.1 Функциональный анализ приложения ....................................................... 21
2.2 Проектирование архитектуры приложения ............................................... 23
2.3 Описание средств разработки ..................................................................... 27
3. РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ .................................................................................................... 30
3.1 Реализация уровня доступа к данным ........................................................ 30
3.2 Реализация уровня бизнес-логики .............................................................. 36
3.3 Реализация уровня представления.............................................................. 41
3.4 Тестирование и анализ результатов ........................................................... 46
ЗАКЛЮЧЕНИЕ ..................................................................................................... 51
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ............................................. 52
ПРИЛОЖЕНИЕ ..................................................................................................... 54
ВВЕДЕНИЕ
Наличие средств автоматизации производственных процессов является
обязательным критерием успешного функционирования предприятия в
условиях рыночной экономики. Внедрение системы автоматизированного
управления производственной деятельностью приводит к значительному
росту конкурентоспособности предприятия, увеличивает его рентабельность.
Таким образом, в настоящее время проблематика повышения уровня
автоматизации производства представляется особенно актуальной.
В общем виде автоматизированная система управления предприятием
представляет собой интегрированный пакет прикладного программного
обеспечения, позволяющий осуществлять централизованное управление
производством, трудовыми и материальными ресурсами, финансовыми
потоками и активами. Специфика процессов, подлежащих автоматизации,
определяется сферой деятельности конкретного предприятия. Следует также
подчеркнуть, что эффективная автоматизация производства подразумевает
оптимизацию отдельных этапов производственного цикла. Данный критерий,
в свою очередь, оказывает непосредственное влияние на снижение издержек
производства, увеличение общей результативности труда и повышение
эффективности управления.
Полная или частичная автоматизация производственной деятельности
предприятия приводит к значительному сокращению временных затрат,
необходимых для выполнения производственных задач, что позволяет
увеличить количество произведѐнной продукции. Преимуществом высокого
уровня автоматизации производственных процессов также следует назвать
общее снижение количества материальных и финансовых затрат на всех
этапах производства, которое непосредственно связано с сокращением
времени,
необходимого
персоналу
организации
выполнения профессиональных обязанностей.
для
качественного
4
Автоматическое функционирование производства снижает потребность
предприятия в работниках высокой квалификации, что приводит к
существенному уменьшению зависимости производственной деятельности от
трудовых ресурсов предприятия, и таким образом повышает устойчивость
процесса производства в целом.
Комплексная информационная система автоматизации производства
предоставляет широкие возможности для долгосрочного хранения данных
определѐнного характера, описывающих качественные и количественные
показатели производственной деятельности предприятия. В перспективе
накопленная информация может послужить материалом для проведения
различных статистических исследований, позволяющих проанализировать
эффективность функционирования производственных, управленческих и
других структурных подразделений организации. Полученная статистическая
информация также может использоваться для организации процесса
планирования потребностей производства, что позволит существенно
снизить материальные издержки путѐм более рационального распределения
финансовых затрат.
Целью выпускной квалификационной работы является повышение
уровня автоматизации процессов управления трудовыми ресурсами ИД ООО
«Монтажавтоматика».
Автоматизированная
система
учѐта
трудовых
ресурсов и заработной платы представляет собой совокупность средств,
позволяющих планировать потребности предприятия в трудовых ресурсах,
проводить анализ кадрового потенциала и рынка труда, давать оценку
эффективности труда, производить начисление заработной платы, управлять
наймом и учѐтом персонала. Оплата трудовой деятельности составляет
значительную часть общих финансовых расходов предприятия. Таким
образом, проблема эффективного использования трудовых ресурсов является
особенно актуальной.
Первая глава данной работы содержит общее описание программных
модулей, входящих в состав информационной системы предприятия, а также
5
комплексный анализ подсистемы учѐта трудовых ресурсов и заработной
платы, позволяющий определить ключевые направления автоматизации.
Вторая глава посвящена вопросам проектирования архитектуры приложения
и описанию средств разработки. В третьей главе представлены процесс
реализации основных структурных компонентов программного обеспечения
и результат тестовых испытаний разработанного приложения.
Данная выпускная квалификационная работа содержит 49 страниц, 25
рисунков и 1 приложение. При написании работы было использовано 20
литературных источников.
6
1. АНАЛИЗ ИНФОРМАЦИОННОЙ СИСТЕМЫ ИД ООО
«МОНТАЖАВТОМАТИКА»
1.1 Обзор текущего состояния информационной системы предприятия
Информационная система предприятия ИД ООО «Монтажавтоматика»
представляет собой интегрированный пакет автономных программных
модулей, позволяющих выполнять широкий спектр задач по управлению
различными элементами производственной деятельности. Модульная схема
автоматизированной системы управления производством, представленная на
рисунке 1.1 и рисунке 1.2.
Рис. 1.1. Структурная схема автоматизированной системы управления
производством (1-я часть)
7
На рисунке 1.1 представлено описание первых пяти компонентов
информационной системы предприятия: модуль финансового планирования,
бухгалтерского и управленческого учѐта; модуль управления трудовыми
ресурсами; модуль управления заказами; модуль обеспечения развития
деятельности; модуль внедрения новой продукции в производство.
Модуль финансового планирования, бухгалтерского и управленческого
учѐта содержит подсистемы, отвечающие за реализацию финансового,
налогового, управленческого и бухгалтерского учѐта, а также подсистему
расчѐта и начисления заработной платы. Данный программный компонент
предоставляет
управленческому
аппарату
предприятия
необходимую
информацию для осуществления планирования, управления и контроля над
производственной деятельностью и является своего рода центральным
ядром, концентрирующим учѐтную информацию предприятия. Процесс
ведения учѐтной деятельности включает сбор, анализ, форматирование,
передачу и приѐм информации.
Модуль управления трудовыми ресурсами включает подсистемы найма
и учѐта трудовых ресурсов, организации оплаты труда, а также правового и
информационного обеспечения трудовых ресурсов. Назначением данного
структурного компонента является реализация механизмов управленческой
деятельности, направленной на повышение производительности труда и
эффективности производства. Организация подсистемы учѐта трудовых
ресурсов напрямую затрагивает решение таких задач, как оперативнопроизводственное планирование, экономический анализ, учѐт и контроль
производственной деятельности. [4]
Модуль управления заказами включает подсистему обработки и
открытия заявок на заказы, а также подсистему отслеживания степени их
выполнения. Данный программный компонент выполняет автоматизацию
процесса обработки заказов и обеспечивает оптимизацию отдельных
компонент управления заказами. Анализ информации о заказах на тот или
иной вид продукции позволяет оценить уровень потребительского спроса,
8
осуществить планирование поставок необходимых материалов, провести
прогнозирование потребности производства в трудовых ресурсах.
Модуль по обеспечению развития производственной деятельности
предприятия отвечает за управление процессом разработки новой продукции,
и за осуществление маркетинговой деятельности. Подсистема, включающая
организацию разработки новой продукции, предназначена для решения
различных аналитических задач, связанных с определением стратегии
производства и сбыта определѐнных видов продукции. Маркетинговые
службы включают анализ коммерческих показателей внедряемых инноваций,
которые выражаются оценкой рентабельности продукции, краткосрочным и
среднесрочным прогнозированием объѐмов продаж, оценкой финансовых,
производственных возможностей предприятия и другими статистическими
показателями. [5]
Модуль внедрения новой продукции в производство, в свою очередь,
содержит подсистемы, отвечающие за разработку технического плана,
разработку оснастки и инструмента, внедрение технического плана,
калькуляцию себестоимости производства, определение плановых сроков
производства. Назначением данного программного компонента является
осуществление контроля над этапами разработки и внедрения в производство
новых видов продукции.
Рисунок 1.2 содержит описание второй части автоматизированной
системы управления производством ИД ООО «Монтажавтоматика». Вторая
часть структурной схемы включает такие разделы производственной
деятельности, как управление основным производством (оперативное
планирование и контроль выполнения оперативного плана), управление
вспомогательным производством (изготовление комплектующих изделий),
обеспечение
сбыта
готовой
продукции
и
снабжение
производства
необходимыми материальными ресурсами, информационное, техническое и
юридическое
обеспечение
производственного
административной и хозяйственной деятельностью.
процесса,
управление
9
Рис. 1.2. Структурная схема автоматизированной системы управления
производством (2-я часть)
Раздел, реализующий функции управления основным производством,
содержит системы оперативного планирования, выполнения технического
плана, контроля выполнения оперативного плана, выдачи заданий на
производство. Назначением модуля управления основным производством
являются оперативное планирование производственной деятельности, учѐт и
анализ
хода
производственного
процесса,
обеспечение
оперативного
регулирования в случае возникновения внештатных ситуаций. [2]
Модуль
управления
вспомогательным
производством
реализует
подсистемы, отвечающие за изготовление полуфабрикатов и комплектующих
10
изделий и изготовление специальной оснастки. К функциям вспомогательной
производственной деятельности относятся оснащение инструментальными
средствами, энергетическими, складскими и транспортно-логистическими
ресурсами, обеспечивающими нормальное выполнение производственного
цикла.
Модуль сбыта и снабжения охватывает процессы сбыта готовой
продукции, управления запасами, закупки материалов и комплектующих,
закупки инструмента и оснастки, анализа поставщиков и планирования
потребностей производства. Подсистема сбыта и снабжения отвечает за
удовлетворение потребностей производства в материальных ресурсах, а
также за обеспечение процесса реализации произведѐнной продукции.
Функциональное обеспечение деятельности включает в себя техническую
поддержку, юридическое обеспечение и организацию административной и
хозяйственной деятельности. Основными задачами технического отдела
являются обеспечение бесперебойного функционирования оборудования,
проведение ремонтных работ и осуществление технической модернизации
производственных линий. Цель юридического обеспечения – осуществление
контроля над соблюдением трудового законодательства и решение правовых
вопросов. Подсистема IT выполняет функцию обеспечения сотрудников
предприятия информационными сервисами, которые необходимы для
выполнения ими служебных обязанностей.
1.2 Анализ модуля управления трудовыми ресурсами
Представленный в предыдущем разделе обзор текущего состояния
информационной системы предприятия ИД ООО «Монтажавтоматика»
наглядно продемонстрировал высокий уровень автоматизации основных
элементов производства. Проведѐнное исследование позволило составить
общее представление о назначении отдельных структурных подразделений
11
предприятия и выявить закономерности в их функционировании. Однако в
соответствии с целями, сформулированными во введении, основной задачей
данной работы является увеличение эффективности управления трудовыми
ресурсами путѐм автоматизации отдельных аспектов управленческой
деятельности. Таким образом, необходимо провести детальный анализ
модуля по учѐту трудовых ресурсов и выявить в его реализации
фундаментальные упущения, возмещение которых позволит добиться
повышения эффективности управления.
Система управления трудовыми ресурсами содержит следующие
программные компоненты: найм и учѐт трудовых ресурсов, организация
оплаты труда, правовое и информационное обеспечение трудовых ресурсов
предприятия, которые представлены на рисунке 1.3.
Рис. 1.3. Модуль управления трудовыми ресурсами предприятия
Подсистема найма и учѐта трудовых ресурсов предназначена для
управления информацией о найме, приѐме, перемещениях и увольнениях
персонала, а также для организации рационального использования трудовых
ресурсов и ведения учѐтной документации. Организация системы оплаты
труда выполняет функцию объединения учѐтных данных, формирующих
сводную информацию о величине заработной платы каждого работника,
осуществляющего тот или иной вид трудовой деятельности. Правовое
обеспечение играет роль регулятора при решении правовых вопросов
12
производственной и хозяйственной деятельности, а также предоставляет
возможности консультирования по различным юридическим вопросам. [3]
Подсистема информационного обеспечения предоставляет технические
средства для ведения учѐтной деятельности, а также выполняет интеграцию
модуля управления трудовыми ресурсами с другими программными
модулями информационной системы.
Исследование схемы, представленной на рисунке 1.3, позволяет
утверждать, что средства управления трудовыми ресурсами, реализованные в
информационной системе предприятия, автоматизируют ведение только тех
аспектов учѐтной деятельности, которые связаны с обеспечением контроля
над ходом кадровых процессов. При этом фиксируется отсутствие какойлибо аналитической работы с накопленной информацией, изучение которой
могло бы послужить повышению эффективности управления посредством
организации процесса планирования трудовых ресурсов.
В условиях рыночной экономики планирование и анализ показателей
по труду приобретают серьѐзное значение, поскольку таким образом можно
более полно выявить пути минимизации издержек и задействовать
имеющиеся резервы с целью повышения эффективности производства.
Следует также подчеркнуть, что в данном случае целесообразным является
планирование именно количественных потребностей, поскольку оценка
необходимого уровня квалификации сотрудников и анализ требований к их
профессиональным качествам не могут быть проведены посредством
исследования имеющихся статистических показателей.
Итак, в процессе анализа модуля управления трудовыми ресурсами
была выявлена возможность качественного усовершенствования данного
программного компонента за счѐт включения подсистемы планирования
трудовых ресурсов.
Окончательный
вариант
информационной
системы
предприятия
представлен на рисунке 1.4 (внесѐнные изменения выделены красным
цветом).
13
Рис. 1.4. Информационная система предприятия после изменений
1.3 Постановка и анализ задачи планирования трудовых ресурсов
Опираясь на результаты проведѐнных исследований, в соответствии с
целями, сформулированными во введении, можно выделить ряд шагов,
направленных на решение задачи планирования трудовых ресурсов:
обзор текущего состояния информационной системы ИД ООО
«Монтажавтоматика»;
анализ модуля управления трудовыми ресурсами предприятия;
14
постановка и анализ задачи планирования трудовых ресурсов;
функциональный анализ приложения;
проектирование архитектуры приложения;
описание средств программирования;
реализация уровня доступа к данным;
реализация уровня бизнес-логики;
реализация уровня представления;
тестирование и анализ результатов.
Процесс планирования трудовых ресурсов состоит из двух этапов:
оценка трудовых ресурсов, имеющихся в наличии, и прогнозирование
будущих потребностей производства. [9] Оценка численности необходимой
рабочей силы производится посредством прогнозирования соответствующих
объѐмов производства и показателей производительности труда. Прогнозная
информация может быть получена с применением различных подходов к
прогнозированию,
которые
отличаются
друг
от
друга
принципами
функционирования. Наиболее распространѐнными среди них являются
методы экспертных оценок, методы экстраполяции тенденций, метод
компонент, различные статистические методы. Однако для разработки
программного
решения
по
прогнозированию
наиболее
подходящими
являются методы экстраполяции тенденций, поскольку применение данных
методов базируется на экстраполяции временных рядов и не требует
построения сложных прогнозных моделей.
Экстраполяция – это метод эмпирического исследования, основанный
на определении функциональных закономерностей в развитии объекта и
последующей
проекции
полученной
аналитической
зависимости
на
определѐнный временной отрезок в будущем с целью получения прогнозного
значения. К наиболее надѐжным методам экстраполяции относятся метод
скользящей средней, метод экспоненциального сглаживания и метод
наименьших квадратов.
15
Сущность метода наименьших квадратов состоит в минимизации
суммы квадратических отклонений между расчетными и фактическими
значениями. Расчетные значения находятся
с помощью специально
подобранного уравнения, называемого уравнением регрессии. Чем меньше
разница между действительными и расчетными значениями, тем более точен
прогноз, построенный по уравнению регрессии. Тип кривой, наиболее точно
отражающий поведение исследуемого явления, определяется посредством
наблюдений. Например, если изменение фактических значений происходит в
арифметической прогрессии, то сглаживание целесообразно производить по
прямой. Если же изменение происходит в геометрической прогрессии,
сглаживание необходимо производить по показательной функции. [7]
Результат процесса минимизации расстояний между расчѐтными и
фактическими значениями при использовании метода наименьших квадратов
наглядно продемонстрирован на рис. 1.5 (фактические значения отмечены
синим цветом, расчѐтные – красным).
Рисунок 1.5. Метод наименьших квадратов
16
Расчѐтная
формула для
прогнозирования
методом
наименьших
квадратов выглядит следующим образом:
Для расчѐта значений коэффициентов
используются следующие
формулы:
Таким образом, с помощью метода наименьших квадратов достигается
необходимый уровень сглаживания временного ряда, что позволяет отразить
общие закономерности в поведении изучаемого процесса. При этом время
выступает в уравнении регрессии в качестве переменной величины, а уровни
ряда являются функцией этой переменной.
С помощью расчѐта среднеквадратической ошибки можно опытным
путѐм определить характер функции, наиболее точно описывающей тренд.
Формула для расчѐта среднеквадратической ошибки выглядит следующим
образом:
17
Существенными недостатками метода наименьших квадратов являются
уменьшение точности прогноза при увеличении прогнозного периода и
неоднозначность в вопросе выбора подходящего уравнения регрессии.
Другим эффективным методом сглаживания временных рядов является
метод скользящих средних. Использование данного метода позволяет почти
полностью исключить случайные колебания расчѐтных значений. Эффект
погашения (сглаживания) случайных колебаний достигается за счѐт
усреднения первоначальных уровней временного ряда внутри выбранного
временного интервала. [6] Операция по вычислению среднего значения
выполняется для каждого выделенного периода времени и затрагивает все
уровни ряда. При этом период для усреднения одинаков на каждом шаге.
Таким образом, для каждого интервала скользящая средняя центрируется
относительно своей окрестности.
Плавность результирующего тренда увеличивается при расширении
интервала сглаживания, значительно сокращая количество наблюдений, что
может привести к определѐнным трудностям при прогнозировании.
Вычислительная формула при экстраполяции методом скользящих средних
выглядит следующим образом:
18
Результат сглаживания временного ряда методом скользящих средних
представлен на рис. 1.6 (фактические значения отмечены синим цветом,
сглаженные – красным):
Рис. 1.6. Метод скользящих средних
С целью проверки уровня достоверности прогноза производится расчѐт
средней относительной ошибки ε по следующей формуле:
При необходимости среднесрочного прогнозирования целесообразно
применение метода экспоненциального сглаживания. Однако в данном
случае экстраполяция возможна лишь на один прогнозный период.
19
Основными достоинствами метода экспоненциального сглаживания
являются простота вычислительных операций и возможность учѐта весовых
значений исходных данных. [6] Расчѐтная формула при прогнозировании
методом экспоненциального сглаживания выглядит следующим образом:
Значение параметра сглаживания
вычисляется по формуле 1.8:
Значением параметра сглаживания определяется степень влияния
предыдущих наблюдений на результат экстраполяции. При постепенном
увеличении значения параметра
снижается зависимость прогнозного
значения от прошлых значений временного ряда. В свою очередь, в случае
постепенного уменьшения параметра сглаживания учитывается влияние
усреднѐнных величин, полученных путѐм использования предыдущих
фактических значений временного ряда. [8]
За начальное значение
принимается либо средняя арифметическая
имеющихся фактических значений, либо исходное фактическое значение.
Процесс сглаживания фактических значений временного ряда наглядно
продемонстрирован на рисунке 1.7.
20
Рис. 1.7. Метод экспоненциального сглаживания
21
2. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Функциональный анализ приложения
Функциональная схема приложения представляет собой описание
принципов взаимодействия основных структурных модулей программного
обеспечения с указанием движения потоков данных между отдельными
компонентами. [14]
Функциональная схема программного обеспечения по планированию
трудовых ресурсов представлена на рис. 2.1:
Рис. 2.1. Функциональная схема приложения
22
Расчѐтные данные, которые необходимы для экстраполяции значений
временного ряда, поступают в модуль прогнозирования трудовых ресурсов
из базы данных предприятия. Решение задачи прогнозирования потребностей
производства в трудовых ресурсах подразумевает анализ информации о
производительности труда и объѐмах производства за определѐнный период
времени. Таким образом, экстраполяции подвергаются данные о количестве
произведѐнной продукции и коэффициенты производительности труда.
Полученные прогнозные значения позволяют определить количество рабочей
силы, необходимое для производства того или иного вида продукции в
установленных объѐмах.
Параметры, характеризующие процесс прогнозирования, задаются
пользователем. К параметрам прогноза непосредственно относятся диапазон
анализа фактических значений исследуемого явления, метод экстраполяции,
глубина прогноза. Максимально допустимый диапазон анализа значений
задаѐтся по умолчанию. Пользователь при необходимости способен изменить
его по собственному усмотрению. Конкретный метод экстраполяции также
задан по умолчанию и может быть изменѐн пользователем. Выбор метода
экстраполяции зависит, прежде всего, от целей прогнозирования. В случае
необходимости краткосрочного прогноза целесообразно использование
метода наименьших квадратов, либо метода скользящих средних. Если же
требуется прогноз на среднесрочный период, необходимо применение метода
экспоненциального сглаживания.
Модуль прогнозирования трудовых ресурсов также содержит полный
список номенклатурных позиций, по каждой из которых прогнозируется
потребность в рабочей силе. При необходимости пользователь может указать
конкретные виды продукции, по которым требуется прогноз. Временной ряд,
описывающий количество произведѐнной продукции данного вида за
определѐнный период, а также динамика потребности в рабочей силе
выводятся на экран. Анализ количественных показателей временных рядов
позволяет выявить общую тенденцию в колебаниях уровня производства,
23
которые оказывают непосредственное влияние на количество необходимой
рабочей силы.
Результат процесса прогнозирования используется при планировании
трудовых ресурсов. В частности, в зависимости от прогнозных значений
формируются показатели нехватки рабочей силы по тем или иным видам
производимой продукции. В модуле планирования трудовых ресурсов также
отображаются коэффициенты точности прогноза и прогнозные значения
уровня производства. В том случае, если величина ошибки прогноза не
устраивает пользователя, процесс прогнозирования можно повторить с
применением другого метода.
Показатели, полученные в результате процесса планирования трудовых
ресурсов, непосредственно необходимы для учѐта общих потребностей
производства в материальных ресурсах различного характера. Однако
функциональная составляющая данной подсистемы не затрагивается при
выполнении дипломной работы.
2.2 Проектирование архитектуры приложения
Процесс
установлении
проектирования
взаимоотношений
архитектуры
между
приложения
различными
состоит
в
компонентами
информационной системы. Правильно подобранный тип архитектуры
позволит разработать программное решение, соответствующее критериям
безопасности, масштабируемости и производительности. [11]
В
качестве
наиболее
подходящей
для
данного
программного
обеспечения была выбрана классическая трѐхуровневая клиент-серверная
архитектура. Выбор указанного архитектурного шаблона обусловлен тем
фактом, что в процессе разработки информационной системы предприятия
использовался многоуровневый подход к проектированию. Таким образом,
разбиение программного обеспечения на отдельные архитектурные уровни
24
значительно облегчит процесс его интеграции в информационную систему
предприятия.
Многоуровневая архитектура представляет собой тип архитектуры
программного обеспечения, позволяющий разделить механизм доступа к
данным, выполнение бизнес-процессов и управление системой ввода/вывода
представлений на отдельные логические уровни. Уровень представления
обеспечивает взаимодействие между информационной системой и конечным
пользователем. На уровне представления реализуются, главным образом,
компоненты пользовательского интерфейса, механизмы получения входных
и формирования выходных данных. Уровень бизнес-логики предназначен
для обработки данных, полученных на уровне представления. Данный
логический слой содержит компоненты для взаимодействия с базами данных
и передаѐт уровню представления результат проведѐнных вычислений.
Уровень
доступа
к
данным
реализует
классы,
необходимые
для
использования разнообразных технологий доступа к данным, хранит модели
данных и обеспечивает средства, позволяющие уровню бизнес-логики
получать необходимые данные. [12]
Следует также подчеркнуть, что уровень представления и уровень
доступа к данным не могут напрямую взаимодействовать между собой,
посредником между ними выступает уровень бизнес-логики. При этом
уровень доступа к данным является полностью автономным, то есть никак не
зависит от других уровней. Уровень бизнес-логики, в свою очередь, зависит
от уровня доступа к данным, а уровень представления непосредственно от
уровня бизнес-логики. Структурные компоненты архитектуры приложения
должны сохранять слабую связность, что влечѐт за собой необходимость
внедрения зависимостей.
Структурная
схема
архитектуры программного обеспечения по
планированию потребностей производства в трудовых ресурсах (с указанием
взаимосвязи между отдельными архитектурными слоями) представлена на
рисунке 2.2.
25
Рис. 2.2. Архитектура программного обеспечения
Данные, содержащиеся в запросе клиента, поступают на уровень
представления, где с помощью специальных средств происходит их
форматирование для обработки с помощью модулей бизнес-логики.
Компоненты пользовательского интерфейса являются стандартными htmlстраницами, содержащими поля ввода/вывода для получения входных
данных и презентации результатов вычислений. Обработка различных
клиентских запросов, формирование представлений и управление их
выводом также происходят на данном логическом уровне.
Применительно к предметной области программного обеспечения по
планированию потребностей производства в трудовых ресурсах компоненты
пользовательского интерфейса будут содержать поля для указания диапазона
анализа имеющейся выборки (даты начала и окончания анализа), метода
26
прогнозирования и глубины прогноза. После воздействия пользователя на
компонент отправки формы введѐнные данные отправляются на сервер
приложений для их последующей обработки. Компоненты бизнес-логики,
реализованные на следующем логическом уровне, содержат алгоритмы
обработки информации, введѐнной пользователем, либо содержащейся в базе
данных.
Бизнес-логика приложения по планированию трудовых ресурсов
заключается в экстраполяции значений, характеризующих производственные
потребности в трудовых ресурсах, на определѐнный период времени. Так как
в данной дипломной работе прогнозирование осуществляется посредством
обработки значений временных рядов, компоненты, описывающие бизнеслогику, будут содержать функционал экстраполяции с помощью следующих
методов: метод наименьших квадратов, метод скользящей средней, метод
экспоненциального сглаживания.
Обращение к разработанным бизнес-моделям осуществляется с
помощью специального сервиса, содержащего реализации соответствующих
интерфейсов доступа. Модули уровня бизнес-логики не могут напрямую
использовать структуры данных, описанные на более низком уровне, для
этого применяются специальные промежуточные сущности (объекты
передачи
данных).
Введение
подобных
ограничений
связано
с
необходимостью ослабления структурной зависимости между объектами
разных логических уровней. С этой же целью на уровне бизнес-логики
реализуется модуль внедрения зависимости между интерфейсом доступа к
сущностям базы данных и его конкретной реализацией, исключая таким
образом необходимость работы с механизмами подключения.
Слой доступа к данным содержит описание структуры сущностей,
хранящихся в базе данных. В нашем случае корпоративная база данных ИД
ООО «Монтажавтоматика» содержит коллекции объектов, описывающих
производственные процессы. Решение задачи прогнозирования потребностей
производства в трудовых ресурсах подразумевает использование тех
27
объектов данных, которые содержат сведения о заказах на производство
определѐнных видов продукции, а также количественную информацию о
сотрудниках предприятия, принимающих непосредственное участие в том
или ином производственном процессе.
Компоненты доступа к данным представляют собой реализацию
репозиториев, позволяющих выполнять основные операции по обращению к
таблицам базы данных (запись, редактирование, удаление, копирование).
Сервисные компоненты содержат описание интерфейсов доступа к службам,
реализованным на уровне доступа к данным.
2.3 Описание средств разработки
Технологии разработки программного обеспечения, используемые в
данной дипломной работе, активно применяются на предприятии ИД ООО
«Монтажавтоматика» при программировании информационной системы.
Таким образом, выбор средств разработки приложения обусловлен, в
частности, требованиями технологической совместимости, позволяющими
беспрепятственно интегрировать приложение в основное программное
обеспечение предприятия.
В качестве архитектурной платформы используется инфраструктура
Microsoft ASP.NET MVC 5, которая является усовершенствованной версией
платформы для разработки web-приложений ASP.NET. Преимуществами
данной технологии по сравнению с предыдущими версиями можно назвать
использование MVC в качестве архитектурного шаблона для разработки
приложения, широкие возможности в области модификации существующих
компонент, контроль за соблюдением стандартов разметки web-страниц,
поддержка модульного и автоматизированного тестирования, использование
усовершенствованной системы маршрутизации, создание улучшенного APIинтерфейса. [17]
28
Платформа ASP.NET MVC 5 реализует существенно улучшенный
вариант архитектурного шаблона MVC, который гарантирует рациональное
разбиение приложения на различные функциональные уровни. Реализация
MVC в качестве основного архитектурного шаблона позволяет ASP.NET
MVC 5 конкурировать с другими популярными web-платформами (например,
Ruby on Rails).
Возможности модификации существующих компонент, реализованные
в данной web-платформе, предусматривают создание дочерних классов,
которые наследуют функциональность стандартных реализаций. Полученная
дочерняя структура позволяет корректировать поведение наследуемых
методов, или при необходимости полностью изменять его. [18]
В платформу ASP.NET MVC 5 встроены средства, генерирующие htmlпредставления в полном соответствии со стандартами разметки web-страниц.
Отсутствие каких-либо ограничивающих требований в области htmlразметки позволяет активно применять различные готовые решения при
проектировании пользовательского интерфейса (например, Bootstrap, jQuery).
В частности, возможность использования таких известных библиотек, как
Bootstrap или jQuery, встроена в данную платформу по умолчанию. Также в
инфраструктуре платформы реализована функция контроля за выполнением
http-запросов, отправленных на сервер клиентской стороной.
Использование архитектурного шаблона MVC, подразумевающего
разбиение функциональности приложения на отдельные логические уровни,
облегчает процесс тестирования программного обеспечения. В частности,
структурные компоненты приложения реализованы в web-платформе таким
образом, чтобы обеспечить возможности для выполнения модульного и
автоматизированного тестирования. [19]
В качестве системы управления базами данных в данном проекте
используется Microsoft SQL Server, являющаяся наиболее удачным выбором
при использовании операционных систем Windows по причине еѐ глубокой
интегрированности с данным классом операционных систем. Платформа
29
SQL Server позволяет работать с массивами данных различной степени
структурированности,
обеспечивая
при
этом
необходимый
уровень
надѐжности.
Для работы с базами данных применяется технология ADO.NET Entity
Framework, которая представляет собой ORM-решение, реализованное для
платформы .NET Framework. Данная технология доступа к данным позволяет
установить соответствие между компонентами, хранящимися в базе данных,
и объектно-ориентированными сущностями. Таким образом, технология
ADO.NET Entity Framework предоставляет возможности по обращению к
объектам баз данных без использования SQL-запросов.
Технологии, применяемые в процессе разработки программного
обеспечения, представлены на рисунке 2.3.
Рис. 2.3. Средства разработки приложения
30
3. РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ
3.1 Реализация уровня доступа к данным
Уровень доступа к данным содержит модели сущностей, хранящихся в
базе данных, а также реализует объекты, позволяющие взаимодействовать с
базой данных. Логические слои приложения реализованы в виде отдельных
проектов, входящих в состав программного решения под названием MTA.
Структура программного решения проиллюстрирована на рисунке 3.1.
Рис. 3.1. Структура программного решения
Уровень доступа к данным реализован в проекте MTA.DAL, структура
которого представлена на рисунке 3.2.
Рис. 3.2. Структура проекта MTA.DAL
31
Модели данных, объекты которых хранятся в базе данных, определены
в папке Entities. Для решения задачи прогнозирования нам необходимы
следующие структуры данных: заказы на производство, спецификации
заказов, производимая продукция, производственные работники. Сущность
заказов на производство представлена классом Order.cs, который состоит из
следующих полей, описанных в листинге 3.1.
Поле Id хранит идентификатор объекта, в свойстве Date содержится
дата получения заказа на производство; в свойстве Client, в свою очередь,
хранится название организации, оформившей заказ, в свойстве Price хранится
общая стоимость заказа. С помощью даты того или иного заказа будут
формироваться значения временного ряда, которые содержат количество
заказанной и произведѐнной продукции в течение одного периода времени.
Спецификации заказов хранятся в модели OrderProduct.cs, которая
содержит
информацию
о
количестве
заказанной
продукции,
цену
реализации, номер заказа и номер продукции. В поле Id данной сущности
указан идентификатор спецификации, в поле Number хранится количество
заказанной продукции, в поле Sum содержится цена реализации; свойство
OrderId содержит номер заказа, к которому относится данная спецификация,
свойство ProductId хранит идентификатор заказанной продукции. Свойства
OrderId и ProductId являются навигационными свойствами, по которым
32
производится загрузка экземпляров соответствующих объектов. С помощью
данной сущности будет производиться расчѐт количества произведѐнной
продукции в рамках отдельного периода времени. Свойства модели
OrderProdcut.cs представлены в листинге 3.2.
Модель производимой продукции описана в листинге 3.3. Класс
Product.cs содержит информацию об отдельной номенклатурной позиции.
33
Свойство
Id
хранит
идентификатор
объекта,
свойство
Name
предназначено для хранения названия номенклатурной позиции; поле Unit
содержит единицу измерения, поле Price – стоимость единицы продукции
данного вида.
Модель, представляющая производственного работника, реализована в
классе Employee.cs и представлена в листинге 3.4:
В поле Id содержится идентификатор объекта, поля Surname и Name
предназначены для хранения фамилии и имени работника соответственно.
Для хранения взаимосвязи между работником и типом продукции, в
изготовлении которой непосредственно задействован данный работник,
предназначен класс Production.cs, описанный в листинге 3.5.
34
Соответствие между значениями, хранящимися в базе данных, и
описанными сущностями устанавливается с помощью технологии доступа к
данным EntityFramework. С этой целью в папке EF определѐн класс контекста
данных EnterpriseContext.cs, который представлен в листинге 3.6:
Свойства класса, определяющего контекст данных, возвращают
коллекции объектов определѐнного типа, которые содержат сущности
соответствующих таблиц базы данных. Конструктор класса контекста
данных в качестве параметра принимает строку подключения к базе данных
для установления соединения.
Папка Repositories содержит различные реализации репозиториев,
инкапсулирующих возможности обращения к таблицам базы данных.
Каждый класс репозитория позволяет выполнять стандартный набор
операций по добавлению, извлечению, удалению и редактированию
информации, хранящейся в базе данных.
В папке Interfaces содержатся классы IRepository.cs и IUnitOfWork.cs,
представляющие собой интерфейс доступа к репозиториям и интерфейс,
организующий унифицированное подключение к базе данных для различных
35
репозиториев, соответственно. Интерфейс IRepository.cs представлен в
листинге 3.7.
Метод GetAll возвращает коллекцию объектов определѐнного типа,
хранящихся в базе данных. Метод Get позволяет получить объект по его
идентификатору. Методы Create и Update, в свою очередь, выполняют
удаление и редактирование объектов соответственно. С помощью метода
Find можно осуществить поиск объекта в базе данных.
Интерфейс IUnitOfWork.cs позволяет централизованно подключаться к
базе данных и обращаться к различным еѐ сущностям посредством создания
экземпляров соответствующих репозиториев.
Таким образом, в данном разделе наглядно описана структура уровня
доступа к данным, включающая реализацию сущностей базы данных,
контекста данных, а также репозиториев доступа к соответствующим
таблицам базы данных. Использование интерфейсных ссылок позволяет
абстрагироваться от конкретной технологии доступа к данным, предоставляя
возможности модификации, расширения и оптимизации существующих
реализаций.
36
3.2 Реализация уровня бизнес-логики
Уровень бизнес-логики служит своеобразным посредником между
слоем доступа к данным и слоем представления. Объекты, полученные на
уровне доступа к данным и передаваемые уровнем представления, доступны
только уровню бизнес-логики. Также данный логический слой содержит
реализацию бизнес-моделей, инкапсулирующих всю вычислительную логику
приложения.
Уровень бизнес-логики реализован в проекте MTA.BLL, структура
которого представлена на рис. 3.3.
Рис. 3.3. Структура проекта MTA.BLL
Уровень представления не может использовать функциональность
уровня доступа к данным, поэтому для передачи данных на уровень
представления необходимо создание альтернативных сущностей – объектов
передачи данных. Соответствие между объектами уровня доступа к данным и
объектами передачи данных устанавливается при помощи технологии
AutoMapper. Промежуточные структуры данных, необходимые для передачи
на уровень представления, хранятся в папке DTO. В качестве примера в
листинге 3.8 приведена реализация объекта передачи данных OrderDTO.cs,
свойства которого идентичны свойствам объекта Order.cs, представленного
37
на уровне доступа к данным и описывающего данные о заказах на
производство.
Бизнес-модели приложения хранятся в папке BusinessModels и
представляют собой реализацию следующих методов прогнозирования:
метод наименьших квадратов, метод экспоненциального сглаживания, метод
скользящей средней.
Реализация метода наименьших квадратов основана на определении
значений расчѐтных коэффициентов, которые необходимы для вычисления
прогнозного значения. В данном случае экстраполяция осуществляется по
прямой, наклон которой должен выбираться таким образом, чтобы
минимизировать среднеквадратическое расстояние между расчѐтными и
фактическими значениями. Получив корректное уравнение регрессии, можно
экстраполировать значения на один или несколько временных периодов.
Вариант реализации метода наименьших квадратов, включающий
процедуру вычисления коэффициентов уравнения регрессии путѐм расчѐта
значений соответствующих сумм (сумма отрезков временного ряда, сумма
фактических значений временного ряда, сумма произведений отрезков и
значений временного ряда, сумма квадратов отрезков временного ряда) и
непосредственно расчѐт прогнозного значения представлены в листинге 3.9.
38
Листинг 3.9. Реализация метода наименьших квадратов
В переменных sumX и sumY содержатся значения суммы фактических
и расчѐтных значений временного ряда соответственно. Переменная sumXX
хранит сумму возведѐнных в квадрат фактических значений, переменная
sumXY – сумму произведений расчѐтных и фактических значений. После
расчѐта значений переменных sumX, sumY, sumXX и sumXY производится
вычисление коэффициентов уравнения регрессии. Значения коэффициентов
уравнения регрессии хранятся в переменных a и b. Результат экстраполяции
содержится в массиве forecast.
39
Реализация метода экспоненциального сглаживания содержит, главным
образом, процедуру усреднения фактических значений исследуемого явления
с учѐтом параметра сглаживания. В листинге 3.10 представлен пример
реализации метода экспоненциального сглаживания.
Листинг 3.10. Реализация метода экспоненциального сглаживания
Значение параметра сглаживания содержится в переменной parameter.
Сглаженные значения сохраняются в массив weightedValue. Результат
экстраполяции помещается в массив forecast.
40
Доступ к функциональности слоя бизнес-логики осуществляется с
помощью специального сервиса, интерфейс которого описан в листинге 3.11.
Листинг 3.11. Интерфейс доступа к слою бизнес-логики
Метод GetOrderProducts предназначен для копирования коллекции
объектов OrderProduct, которые предоставляют информацию о продукции,
содержащейся в заказах на производство. Метод GetProducts возвращает
коллекцию объектов Product, описывающих производимую продукцию.
Методы GetProductSample и GetEmployeeSample принимают в качестве
аргументов объект продукции, по которой необходим прогноз, и даты начала
и окончания анализа имеющихся заказов на производство данного вида
продукции. При этом метод GetProductSample возвращает временной ряд,
содержащий информацию о количестве произведѐнной продукции в
пределах указанного диапазона времени, а метод GetEmployeeSample –
временной ряд, предоставляющий информацию о количестве трудовых
ресурсов,
задействованных
в
процессе
производства
данного
вида
продукции. С помощью метода Forecasting осуществляется непосредственно
процесс экстраполяции значений временного ряда.
41
3.3 Реализация уровня представления
Уровень
представления
содержит
механизмы,
обеспечивающие
возможность взаимодействия между пользователем и информационной
системой. Процессы, связанные с управлением системой ввода/вывода,
обработкой входных данных и формированием представлений, выполняются
на данном логическом уровне. Функциональность уровня представления
непосредственно реализована в проекте MTA.WEB, который представляет
собой стандартное MVC-приложение. Структура проекта MTA.WEB описана
на рисунке 3.4.
Рис. 3.4. Структура проекта MTA.WEB
Модели данных, применяемые на уровне представления, хранятся в
папке Models. В ходе реализации приложения по планированию трудовых
ресурсов использовалась модель ProductViewModel.cs, свойства которой
описывают производимую продукцию. Данная модель представлена в
листинге 3.12 и состоит из полей Id, Name, Unit, Price. В поле Id хранится
идентификатор объекта, в поле Name – название продукции. Свойство Unit
42
содержит название единицы измерения, свойство Price – стоимость данного
вида продукции.
Представления, возвращаемые пользователю при обращении к методам
контроллера, хранятся в папке Views. Начальное представление реализовано
в
файле
Index.cshtml
и
возвращается
методом
Index
контроллера.
Компоненты представления Index.cshtml представлены на рисунке 3.5.
Рис. 3.5. Компоненты представления Index.cshtml
43
В поле Диапазон анализа необходимо указать временной отрезок
(начальную и конечную даты), в пределах которого будут анализироваться
фактические значения временного ряда. Максимально допустимый диапазон
анализа задаѐтся по умолчанию. На рисунке 3.6 продемонстрирован процесс
установки значений временного отрезка.
Рис. 3.6. Установка значений диапазона
Поле Метод прогнозирования предназначено для выбора метода, с
помощью которого будет осуществляться экстраполяция. Выпадающий
список содержит следующие методы прогнозирования: метод наименьших
квадратов (задаѐтся по умолчанию), метод экспоненциального сглаживания,
метод скользящей средней. Возможность выбора метода прогнозирования
демонстрируется на рисунке 3.7.
Рис. 3.7. Установка метода прогнозирования
44
В поле Глубина прогноза необходимо указать количество единичных
временных отрезков, на которые будет осуществляться прогнозирование. По
умолчанию глубина прогноза равна единице. В случае необходимости
пользователь может увеличить прогнозный
период до максимально
допустимого. На рисунке 3.8 показана возможность изменения глубины
прогноза.
Рис. 3.8. Установка глубины прогноза
Таблица, содержащая данные о количестве единиц продукции,
произведѐнных за весь период времени, также выводится на экран при
загрузке начального представления. Показатели количества произведѐнной
продукции позволяют в целом оценить динамику производства в пределах
установленного отрезка времени. Таблица, демонстрирующая показатели
производства по каждому виду номенклатурной позиции представлена на
рисунке 3.9.
Рис. 3.9. Данные о количестве произведѐнной продукции
45
При необходимости пользователь также может получить информацию
о количестве трудовых ресурсов, задействованных в процессе производства
того или иного вида продукции в пределах установленного отрезка времени.
Демонстрация количественных показателей применяемой рабочей силы
приведена на рисунке 3.10.
Рис. 3.10. Данные о количестве трудовых ресурсов
После указания всех необходимых параметров можно непосредственно
приступать к процессу экстраполяции. При воздействии пользователя на
соответствующий компонент (клавиша Прогноз) осуществляется вычисление
прогнозных значений. Результат процесса прогнозирования отправляется в
модуль планирования потребностей производства в трудовых ресурсах, за
реализацию которого отвечает представление Forecast.cshtml. В данном
представлении на экран выводятся результаты процесса прогнозирования,
описанные следующими категориями: прогноз количества произведѐнной
продукции; непосредственно прогноз количества необходимых трудовых
ресурсов; показатели дефицита рабочей силы, которые формируются в
зависимости от полученных прогнозных значений; средняя относительная
ошибка прогноза, позволяющая оценить точность экстраполяции. В том
случае, если величина ошибки прогноза не устраивает пользователя, можно
46
повторить
процесс
экстраполяции
с
применением
других
методов.
Компоненты представления Forecast.cshtml представлены на рисунке 3.11.
Рис. 3.11. Компоненты представления Forecast.cshtml
3.4 Тестирование и анализ результатов
Данные, необходимые для проведения тестовых испытаний, хранятся в
корпоративной базе данных предприятия. Процесс экстраполяции значений,
описывающих потребность в рабочей силе, осуществим лишь при наличии
данных о количестве произведѐнной продукции и о производительности
труда в пределах установленного периода времени. В свою очередь, значения
временного ряда, описывающего показатели производительности труда,
равны отношению количества произведѐнной продукции к числу работников,
задействованных в процессе производства.
Таким образом, временная выборка, непосредственно применяемая при
тестировании программного обеспечения, представляет собой описание
47
количественных характеристик производственного процесса предприятия ИД
ООО «Монтажавтоматика».
Тестовые испытания непосредственно включают оценку корректности
функционирования разработанного программного обеспечения. В связи с
этим, процесс тестирования разделѐн на три этапа, каждый из которых
демонстрирует результат прогнозирования при использовании одного из
реализованных методов. Диапазон анализа при этом принимает максимально
допустимые значения, глубина прогноза равна одному временному периоду.
Тестовые данные, описывающие количество произведѐнной продукции
в установленных временных пределах, представлены на рисунке 3.12.
Рис. 3.12. Информация о количестве произведѐнной продукции
Данные, представленные на рисунке 3.12, охватывают первые десять
номенклатурных позиций. Количественные данные описывают уровень
производства в период с 2009 до 2017 года. По умолчанию в качестве
наиболее подходящего метода прогнозирования задан метод наименьших
квадратов, глубина прогноза равна единице. Для обеспечения равных
условий в ходе тестовых испытаний значение глубины прогноза не будет
48
изменяться,
поскольку
прогнозирование
методом
экспоненциального
сглаживания возможно лишь на один временной период, в отличие от двух
других методов прогнозирования.
Тестовые данные, описывающие количество трудовых ресурсов,
задействованных в процессе производства в установленный период времени,
описаны на рисунке 3.13.
Рис. 3.13. Информация о количестве трудовых ресурсов
Таким образом, данные о количестве произведѐнной продукции и о
количестве задействованных в процессе производства трудовых ресурсах
будут использованы в процессе тестирования с целью анализа показателей
динамики производства за определѐнный период времени, а также для
оценки уровня волатильности количественных показателей используемой
рабочей силы. Результат проведѐнного анализа, в свою очередь, позволит
осуществить экстраполяцию значений временного ряда.
Сравнение результатов экстраполяции при использовании различных
методов будет проводиться по первой номенклатурной позиции.
49
Результат прогнозирования потребности в трудовых ресурсах методом
наименьших квадратов представлен на рисунке 3.14.
Рис. 3.14. Результат экстраполяции методом наименьших квадратов
Результат экстраполяции методом скользящей средней представлен на
рисунке 3.15.
Рис. 3.15. Результат экстраполяции методом скользящей средней
50
Результат прогнозирования методом экспоненциального сглаживания
представлен на рисунке 3.16.
Рис. 3.16. Результат экстраполяции методом экспоненциального
сглаживания
Сравнение значений среднеквадратической ошибки прогноза для
первой номенклатурной позиции (Щит осветительный ЩО), полученных в
результате экстраполяции различными методами, позволяет однозначно
утверждать, что в данном случае при прогнозировании трудовых ресурсов
целесообразно применение метода наименьших квадратов, поскольку
величина ошибки прогноза при этом будет минимальной.
51
ЗАКЛЮЧЕНИЕ
В результате комплексного анализа подсистемы учѐта трудовых
ресурсов и заработной платы ИД ООО «Монтажавтоматика» была выявлена
возможность качественного усовершенствования данного программного
компонента путѐм добавления модуля планирования трудовых ресурсов.
Поскольку необходимым элементом процесса планирования является
прогнозирование различных количественных показателей, вопрос выбора
оптимального метода экстраполяции приобретает первостепенное значение.
Исследование существующих методов прогнозирования позволило
сделать вывод, что в случае экстраполяции фактических значений
временного ряда целесообразно применение следующих трѐх методов: метод
наименьших квадратов, метод экспоненциального сглаживания, метод
скользящей средней. Реализация перечисленных методов непосредственно
включена в структуру программного обеспечения по планированию
потребностей производства в трудовых ресурсах.
Данные, полученные в ходе тестовых испытаний разработанного
приложения, позволяют утверждать, что в случае применения того или иного
метода экстраполяции точность прогнозирования при различных расчѐтных
значениях может сильно варьироваться. Результат тестирования, таким
образом, указывает на тот факт, что метод экстраполяции, обеспечивающий
минимальную погрешность прогнозного значения, необходимо выбирать
эмпирическим путѐм.
Итак, решение задачи планирования трудовых ресурсов основано на
выполнении следующих шагов: обзор текущего состояния информационной
системы, анализ модуля управления трудовыми ресурсами, постановка и
анализ задачи планирования трудовых ресурсов; функциональный анализ
приложения, проектирование архитектуры приложения и описание средств
программирования; реализация уровня доступа к данным, уровня бизнеслогики и уровня представления, тестирование и анализ результатов.
52
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Ерохина, Р.И. Анализ и моделирование трудовых показателей на
предприятии / Р.И. Ерохина. – Минск: Новое издание, 2009. – 322 с.
2. Шишкин, А.К. Учет, анализ, аудит на предприятии: учеб. пособие /
А.К. Шишкин, В.А. Микрюков, И.Д. Дышкант. – Москва: ЮНИТИ,
2010. – 415 с.
3. Савицкая, Г.В. Анализ хозяйственной деятельности предприятия:
учебник / Г.В. Савицкая. – Москва: ИНФРА-М, 2011. – 595 с.
4. Козлов,
А.А.
Управление
трудовыми
ресурсами
промышленных
предприятий при переходе к рынку / А.А. Козлов. – Минск, 2010. – 512с.
5. Бузырев, В.В. Планирование на предприятии / В.В. Бузырев. – Москва:
Академия, 2009. – 451 с.
6. Наумов, В.Н. Математическая модель сглаживания временного ряда
при решении задач прогнозирования / В.Н. Наумов, С.В. Наумов. –
Управленческое консультирование, 2011. –168 с.
7. Прокуратова, О.Н. Метод наименьших квадратов / О.Н. Прокуратова,
С.А. Неклюдова. – Наука и современность, 2014. – 207 с.
8. Шевченко, И.В. Некоторые модели анализа и прогнозирования
временных рядов / И.В. Шевченко. – Системная информатика, 2013. –
40 с.
9. Прогнозирование и планирование в условиях рынка / В.И. Бархатов,
А.А. Горшков, Ю.Ш. Капкаев, М.А. Усачев. – Челябинск: ЮУрГУ,
2012.– 140 с.
10. Тихонов, Э.Е. Методы прогнозирования в условиях рынка: учеб.
пособие / Э.Е. Тихонов – Невинномысск: Северо-Кавказский ГТУ,
2012.– 221 с.
11. Емельянова, Н.З. Проектирование информационных систем / Н.З.
Емельянова, Т.Л. Партыка, И.И. Попов. – Москва: Форум, 2009.– 432 c.
53
12. Мещеряков, С.В. Технологии создания информационных систем / С.В.
Мещеряков, В.М Иванов. – Москва: Политехника, 2005. – 312 c.
13. Иванова, Г.С. Технологии программирования / Г.С. Иванова. – Москва:
Изд-во МГТУ им. Баумана, 2002. – 446 c.
14. Коберн, А. Современные функциональные требования к системам / А.
Коберн; пер. с англ. – Москва: ЛОРИ, 2002. – 350 с.
15. Леффингуэлл Д. Принципы работы с требованиями к программному
обеспечению. Унифицированный подход / Д. Леффингуэлл, Д. Уидриг;
пер. с англ. – Москва: Вильямс, 2002. – 574 c.
16. Иванова, Г.С. Объектно-ориентированное программирование / Г.С.
Иванова, Т. Н. Ничушкина, Е. К. Пугачев. – Москва: Изд-во МГТУ им.
Баумана, 2001. – 741 с.
17. Магдануров Г. ASP.NET MVC Framework / Г. Магдануров, В. Юнев. –
Москва: БХВ-Петербург, 2010. – 320 c.
18. Эспозито Д. Программирование на основе Microsoft ASP.NET MVC / Д.
Эспозито. – Москва: Русская Редакция, 2012. - 464 c.
19. Фримен А. Платформа ASP.NET MVC 5 для профессионалов. А.
Фримен. – Москва: Вильямс, 2013. – 688 c.
20. Котляров, В.П. Основы тестирования программного обеспечения /
Котляров В.П., Т.В. Коликова. – Москва: Бином, 2006. – 346 c.
54
ПРИЛОЖЕНИЕ
public class LeastSquareMethod : IForecast
{
private double[] samples;
private int depth;
public LeastSquareMethod(double[] samples, int depth)
{
this.samples = samples;
this.depth = depth;
}
public double[] GetForecast()
{
double sumX = 0, sumY = 0, sumXY = 0, sumXX = 0;
for (int i = 0; i < samples.Length; i++)
{
sumX += i + 1;
sumY += samples[i];
sumXY += samples[i] * (i + 1);
sumXX += Math.Pow(i + 1, 2);
}
double a = sumXY - (sumX * sumY) / samples.Length;
a = a / (sumXX - Math.Pow(sumX, 2) / samples.Length);
double b = sumY / samples.Length - a * sumX / samples.Length;
double[] forecast = new double[depth];
for (int i = 0; i < depth; i++)
forecast[i] = a * (samples.Length + i + 1) + b;
return forecast;
}
}
55
public class ExponentialSmoothingMethod : IForecast
{
private double[] samples;
public ExponentialSmoothingMethod(double[] samples)
{
this.samples = samples;
}
public double[] GetForecast()
{
double parameter = 2 / ((double) samples.Length + 1);
double[] weightedValues = new double[samples.Length];
weightedValues[0] = 0;
for (int i = 0; i < samples.Length; i++)
weightedValues[0] += samples[i];
weightedValues[0] /= samples.Length;
for (int i = 1; i < samples.Length; i++)
weightedValues[i] = parameter * samples[i - 1] + (1 - parameter) * weightedValues[i - 1];
double[] forecast = { parameter * samples[samples.Length - 1] + (1 - parameter) *
weightedValues[samples.Length - 1] };
return forecast;
}
}
public class MovingAverageMethod : IForecast
{
private double[] samples;
private int depth;
56
public MovingAverageMethod(double[] samples, int depth)
{
this.samples = samples;
this.depth = depth;
}
public double[] GetForecast()
{
const int interval = 3;
double[] smoothedSamples = new double[samples.Length];
int index = (interval - 1) / 2;
for (int i = index; i < samples.Length - index; i++)
smoothedSamples[i] = (double)(samples[i - 1] + samples[i] + samples[i + 1]) / interval;
double[] newSamples = new double[samples.Length + depth];
double[] newSmoothedSamples = new double[samples.Length + depth];
for (int i = 0; i < samples.Length; i++)
{
newSamples[i] = samples[i];
newSmoothedSamples[i] = smoothedSamples[i];
}
double[] forecast = new double[depth];
for (int i = 0; i < forecast.Length; i++)
{
forecast[i] = newSmoothedSamples[samples.Length + i - 2];
forecast[i] += (newSamples[samples.Length + i - 1] –
newSamples[samples.Length + i - 2]) / interval;
newSamples[samples.Length + i] = forecast[i];
newSmoothedSamples[samples.Length + i - 1] = newSamples[samples.Length + i - 2];
newSmoothedSamples[samples.Length + i - 1] += newSamples[samples.Length + i - 1];
newSmoothedSamples[samples.Length + i - 1] += newSamples[samples.Length + i];
57
newSmoothedSamples[samples.Length + i - 1] /= interval;
}
return forecast;
}
}
public abstract class ForecastService : IForecastService
{
protected IUnitOfWork Database { get; set; }
public ForecastService(IUnitOfWork database)
{
Database = database;
}
protected int GetSampleLength(DateTime begin, DateTime end)
{
int length = 0;
for (int i = begin.Year; i <= end.Year; i++)
length++;
return length;
}
public IEnumerable<OrderProductDTO> GetOrderProducts()
{
var mapper = new MapperConfiguration(config => config.CreateMap<OrderProduct,
OrderProductDTO>()).CreateMapper();
IEnumerable<OrderProductDTO> products = mapper.Map<IEnumerable<OrderProduct>,
List<OrderProductDTO>>(Database.OrderProducts.GetAll());
return products;
}
58
public IEnumerable<ProductDTO> GetProducts()
{
var mapper = new MapperConfiguration(config => config.CreateMap<Product,
ProductDTO>()).CreateMapper();
IEnumerable<ProductDTO> products = mapper.Map<IEnumerable<Product>,
List<ProductDTO>>(Database.Products.GetAll());
return products;
}
public double[] GetProductSample(ProductDTO product, DateTime begin, DateTime end)
{
IEnumerable<OrderProductDTO> orderProdcuts = GetOrderProducts();
int length = GetSampleLength(begin, end);
double[] samples = new double[length];
for (int i = 0; i < samples.Length; i++)
samples[i] = 0;
int counter = 0;
for (int i = begin.Year; i <= end.Year; i++)
{
foreach (OrderProductDTO orderProduct in orderProdcuts)
{
if ((orderProduct.Order.Date.Year == i) && (orderProduct.ProductId ==
product.Id))
samples[counter] += orderProduct.Number;
}
counter++;
}
return samples;
}
59
public double[] GetEmployeeSample(ProductDTO product, DateTime begin, DateTime end)
{
int length = GetSampleLength(begin, end);
double[] samples = new double[length];
Random random = new Random();
for (int i = 0; i < samples.Length; i++)
samples[i] = random.Next(30, 100);
return samples;
}
public abstract double[,] Forecasting(DateTime begin, DateTime end, int depth);
}
public class LeastSquareForecastService : ForecastService
{
public LeastSquareForecastService(IUnitOfWork database) : base(database) { }
public override double[,] Forecasting(DateTime begin, DateTime end, int depth)
{
IEnumerable<ProductDTO> products = GetProducts();
int length = GetSampleLength(begin, end);
double[,] result = new double[3, products.Count()];
IForecastType forecast = null;
double[] productSamples = null;
double[] employeeSamples = null;
double[] forecastProductResult = null;
double[] forecastEmployeeResult = null;
double[] forecastProductivityResult = null;
double[] forecastEmployeeRequirements = null;
int counter = 0;
foreach (ProductDTO product in products)
60
{
productSamples = GetProductSample(product, begin, end);
forecast = new ForecastType(productSamples, depth);
forecastProductResult = forecast.LeastSqueraForecast.GetForecast();
employeeSamples = GetEmployeeSample(product, begin, end);
double[] productivitySamples = new double[employeeSamples.Length];
for (int i = 0; i < productivitySamples.Length; i++)
{
if (employeeSamples[i] == 0) productivitySamples[i] = 0;
else productivitySamples[i] = productSamples[i] / employeeSamples[i];
}
forecast = new ForecastType(productivitySamples, depth);
forecastProductivityResult = forecast.LeastSqueraForecast.GetForecast();
forecastEmployeeResult = new double[forecastProductivityResult.Length];
forecastEmployeeRequirements = new double[forecastEmployeeResult.Length];
for (int i = 0; i < forecastEmployeeResult.Length; i++)
{
if (forecastProductivityResult[i] == 0)
{
forecastEmployeeResult[i] = 0;
forecastEmployeeRequirements[i] = 0;
}
else
{
forecastEmployeeResult[i] = forecastProductResult[i] /
forecastProductivityResult[i];
if (forecastEmployeeResult[i] > employeeSamples[employeeSamples.Length - 1])
forecastEmployeeRequirements[i] = forecastEmployeeResult[i] –
employeeSamples[employeeSamples.Length - 1];
else forecastEmployeeRequirements[i] = 0;
61
}
}
result[0, counter] = forecastProductResult[0];
result[1, counter] = forecastEmployeeResult[0];
result[2, counter] = forecastEmployeeRequirements[0];
counter++;
}
return result;
}
}
public class ExponentialSmoothingForecastService : ForecastService
{
public ExponentialSmoothingForecastService(IUnitOfWork database): base(database) { }
public override double[,] Forecasting(DateTime begin, DateTime end, int depth)
{
IEnumerable<ProductDTO> products = GetProducts();
double[,] result = new double[products.Count(), depth];
IForecastType forecast = null;
double[] samples = null;
double[] temp = null;
int counter = 0;
foreach (ProductDTO product in products)
{
samples = GetProductSample(product, begin, end);
forecast = new ForecastType(samples);
temp = forecast.ExponentialSmoothingForecast.GetForecast();
for (int j = 0; j < depth; j++)
result[counter, j] = temp[j];
62
counter++;
}
return result;
}
}
class MovingAverageForecasstService : ForecastService
{
public MovingAverageForecasstService(IUnitOfWork database) : base(database) { }
public override double[,] Forecasting(DateTime begin, DateTime end, int depth)
{
IEnumerable<ProductDTO> products = GetProducts();
double[,] result = new double[products.Count(), depth];
IForecastType forecast = null;
double[] samples = null;
double[] temp = null;
int counter = 0;
foreach (ProductDTO product in products)
{
samples = GetProductSample(product, begin, end);
forecast = new ForecastType(samples, depth);
temp = forecast.MovingAverageForecast.GetForecast();
for (int j = 0; j < depth; j++)
result[counter, j] = temp[j];
counter++;
}
return result;
}
}
63
public class HomeController : Controller
{
private IForecastService forecastService;
public HomeController(IForecastService forecastService)
{
this.forecastService = forecastService;
}
public ActionResult Index()
{
IEnumerable<ProductDTO> productsDTO = forecastService.GetProducts();
var mapper = new MapperConfiguration(config => config.CreateMap<ProductDTO,
ProductViewModel>()).CreateMapper();
var products = mapper.Map<IEnumerable<ProductDTO>,
List<ProductViewModel>>(productsDTO);
int length = end.Date.Year - begin.Date.Year + 1;
double[] productSamples = new double[length];
double[] employeeSamples = new double[length];
double[,] productSamplesResult = new double[productsDTO.Count(),
productSamples.Length];
double[,] employeeSamplesResult = new double[productsDTO.Count(),
employeeSamples.Length];
foreach (ProductDTO product in productsDTO)
{
productSamples = forecastService.GetProductSample(product, begin, end);
employeeSamples = forecastService.GetEmployeeSample(product, begin, end);
ViewBag.productSamplesResult = productSamplesResult;
64
ViewBag.employeeSamplesResult = employeeSamplesResult;
ViewBag.begin = begin;
ViewBag.end = end;
return View(products);
}
[HttpPost]
public ActionResult Index(DateTime begin, DateTime end, int method, int depth)
{
IEnumerable<ProductDTO> productsDTO = forecastService.GetProducts();
var mapper = new MapperConfiguration(config => config.CreateMap<ProductDTO,
ProductViewModel>()).CreateMapper();
var products = mapper.Map<IEnumerable<ProductDTO>,
List<ProductViewModel>>(productsDTO);
return View("~/Views/Home/Forecast.cshtml", products);
}
public ActionResult Forecast(IEnumerable<ProductViewModel> products)
{
return View(products);
}
}
65
Выпускная
квалификационная
работа
выполнена
мной
совершенно
самостоятельно. Все использованные в работе материалы и концепции из опубликованной
научной литературы и других источников имеют ссылки на них.
«___» ________________ _____ г.
__________________________
(подпись) (Ф.И.О.)
_____________________
Отзывы:
Авторизуйтесь, чтобы оставить отзыв