- •Оглавление
- •Аналитический раздел
- •Общая постановка задачи
- •Классические задачи принятия решений.
- •Многостадийный процесс
- •Задача линейного программирования
- •Задача о распределении ресурсов
- •Транспортная задача
- •Формула 11. Транспортная задача
- •Вывод по аналитическому разделу
- •Конструкторский раздел
- •Сценарий работы программы
- •Расчет функции прогнозируемой прибыли
- •Формула 13
- •Предлагаемый алгоритм работы программы
- •Алгоритмформирования групп для текущего распределения
- •Алгоритм поиска нового распределения для данного курса
- •Диаграмма классов
- •Спецификация основных классов
- •Требования к бд
- •Концептуальная модель базы данных
- •Спецификации таблиц
- •Вычисление расстояния поGps-координатам
- •1. Сферическая теорема косинусов
- •2. Формула гаверсинусов
- •Формула 16. Формула гаверсинусов
- •3. Модификация для антиподов
- •Формула 17. Формула для антиподов
- •Технологический раздел
- •Требования к вычислительной системе
- •Выбор субд
- •Выбор среды разработки
- •Выбор языка программирования
- •Используемые технологии asp.Net
- •Ado.Net
- •Пользовательский интерфейс
- •Интерфейс приложения
- •Интерфейс веб-приложения
- •Развертывание системы
- •Функциональная декомпозиция системы по уровням
- •Исследовательский раздел
- •Исследование зависимости времени работы алгоритма от числа учащихся
- •Нагрузочное тестирование
- •Вывод по исследовательскому разделу
- •Организационно-экономический раздел
- •Организация и планирование процесса разработки
- •Расчет трудоемкости выполнения работ
- •Расчет количества исполнителей
- •Календарный план-график разработки программного продукта
- •Расчет стоимости программного продукта
- •Расчет экономической эффективности
- •Промышленная экология и безопасность
- •Анализ вредных и опасных факторов
- •Освещенность
- •Электрические и магнитные поля
- •Статическое электричество
- •Электробезопасность
- •Опасность возникновения пожара
- •Вибрация
- •Травматизм
- •Микроклимат
- •Расчет системы освещенности
- •6.2.1 Расчет площади светопроемов
- •Расчет искусственного освещения
- •6.3.1 Общее освещение
- •6.3.2 Местное освещение
- •Заключение
- •Список использованных источников
Развертывание системы
Все модули системы написаны на объектно-ориентированном языке Microsoft C#, среда разработки Microsoft Visual Studio .NET 2010. Для доступа к серверу БД использовалась технология ADO .NET.
Рисунок 26. Диаграмма развертывания системы
Функциональная декомпозиция системы по уровням
Пользовательский уровень |
Функции:
Реализация: браузер | |
Уровень приложения |
Функции:
Реализация: Windows ASP.NET Web Application | |
Уровень доступа к данным |
Функции:
Реализация: MS SQL Server 2008 R2 |
Рисунок 27. Функциональная декомпозиция системы
Исследовательский раздел
Цель тестирования: Определить допустимые пределы, ограничения программы. Понять, как будет вести себя программа в тех или иных ситуациях. Выявить слабые места программы и алгоритмов. Узнать минимальные требования, необходимые для нормальной работы программы и веб-приложения.
Исследование зависимости времени работы алгоритма от числа учащихся
Данный программный продукт был разработан с целью поиска наиболее приемлемого распределения учащихся с учетом следующих критериев:
получение высокой прибыли
уменьшение числа клиентов, не вошедших в распределение
уменьшение времени работы алгоритма.
Программа должна решать поставленную задачу распределения в пределах 10 минут. Это время выбрано с учетом быстро меняющейся рыночной ситуации, т.к. в среднем образовательное учреждение набирает 10000 клиентов за 2 недели, что соответствует потоку клиентов, равному 4 человека/10 минут. При большей длительности работы алгоритма пользователь не сможет вовремя получать достоверный результат по текущей рыночной ситуации, что может привести к неправильному принятию управленческих решений.
Проведем ряд тестов для нашей программы. Будем искать зависимость времени получения результатов от количества клиентов, которые хотят записаться на курсы. Верхней планкой для числа клиентов будет взято число 100000, нижней 100. Полученные данные занесем в таблицу и построим график (см. рис. ).
В качестве входных данных возьмем клиентов, 20% из которых запишутся на 2 курс, а 10% которых запишутся на 2 и 3 курс одновременно. Таким образом, мы внесем достаточное количество зависимых клиентов в нашу базу данных, а тестируемая выборка по сложности её обработки будет соответствовать реальной выборке.
Таблица 23. Зависимость времени работы алгоритма от числа клиентов | |
Число клиентов в базе данных |
Время работы алгоритма |
110000 |
36 мин. 12 секунд |
100000 |
18 мин. 10 секунд |
90000 |
12 ми 32 секунд |
80000 |
6 мин. 33 секунд |
70000 |
7 мин. 2 секунд |
60000 |
9 мин. 3 секунд |
50000 |
4 мин. 48 секунд |
40000 |
3 мин. 18 секунд |
30000 |
4 мин. 36 секунд |
20000 |
45 секунд |
15000 |
48 секунд |
10000 |
71 секунд |
5000 |
10 секунд |
4000 |
6 секунд |
3000 |
10 секунд |
2000 |
8 секунд |
1000 |
1 секунд |
500 |
0 секунд |
Рисунок 28. Зависимость времени работы алгоритма от числа клиентов
Из данного графика видно, что разработанный алгоритм распределения имеет экспоненциальную сложность. Но при числе клиентов, меньших 90000, он показывает достаточно хороший результат, время его работы составляет меньше 10 минут. Результат показывает, что данный алгоритм может быть применен в тех образовательных учреждениях, в которых число клиентов, проживающих в одном городе, меньше 80000-90000 человек. Для сравнения в крупной компании Юниум-ФТК число клиентов в Москве варьируется в пределах 10000-20000 человек.
Для числа клиентов, меньших 5000, время работы алгоритма меньше 10 секунд. Это связано с тем, что для набора даже одной группы в некоторых ОЦ не хватает клиентов. Рекурсивный алгоритм отрабатывает гораздо быстрее вследствие уменьшения числа возможных ситуаций.