ФЕДЕРАЛЬНОЕ_ГОСУДАРСТВЕННОЕ_АВТОНОМНОЕ_ОБРАЗОВАТЕЛЬНОЕ_УЧРЕЖДЕНИЕ_ВЫСШЕГО_ОБРАЗОВАНИЯ_
«БЕЛГОРОДСКИЙ_ГОСУДАРСТВЕННЫЙ_НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ_УНИВЕРСИТЕТ»
( Н И У _ « Б е л Г У » )
ИНСТИТУТ_ИНЖЕНЕРНЫХ_ТЕХНОЛОГИЙ_И_ЕСТЕСТВЕННЫХ_НАУК
КАФЕДРА_ИНФОРМАЦИОННЫХ_СИСТЕМ_И_РОБОТОТЕХНИЧЕСКИХ_СИСТЕМ
АВТОМАТИЗАЦИЯ_ПРОЦЕССА_КРАУЛИНГА
Выпускная_квалификационная_работа_студента_
очной_формы_обучения
направления_подготовки_09.03.02_Информационные_системы_и_технологии
4_курса_группы_07001407
Пичугина_Никиты_Игоревича
Научный_руководитель
к.т.н.,_доцент_Щербинина_Н.В.
БЕЛГОРОД_2018
РЕФЕРАТ
Автоматизация_процесса_краулинга._–
_Пичугин_Никита_Игоревич,_выпускная_квалификационная_работа_бакалавр
а._–
_Белгород,_Белгородский_государственный_национальный_исследовательский
_университет_(НИУ_«БелГУ»),_количество_страниц_58,_включая_приложени
е_76,_количество_рисунков_22,_количество_таблиц_7,_количество_использова
нных_источников_30.
КЛЮЧЕВЫЕ_СЛОВА:_информационная_подсистема,_процесс_краулера
,_техническая_оптимизация_сайта.
ОБЪЕКТ_ИССЛЕДОВАНИЯ:_процессы_технической_оптимизации_сайт
ов.
ПРЕДМЕТ_ИССЛЕДОВАНИЯ:_средства_краулинга_сайта.
ЦЕЛЬ_РАБОТЫ:_совершенствование_процессов_автоматизации_краули
нга_сайтов.
ЗАДАЧИ_ИССЛЕДОВАНИЯ:_анализ_методов_и_средств_извлечения_и
нформации_со_сторонних_webсайтов;_выбор_метода_и_средств_извлечения_информации;_программная_реа
лизация_метода_извлечения_информации;_сравнение_и_тестирование_разрабо
танного_приложения.
МЕТОДЫ_ИССЛЕДОВАНИЯ:_методы_моделирования_бизнеспроцессов,_методы_проектирования_информационных_систем,_оценка_окупае
мости_подсистемы,_методы_технической_оптимизации_сайтов.
ПОЛУЧЕННЫЕ_РЕЗУЛЬТАТЫ:_в_результате_работы_была_спроектиро
вана_и_реализована_информационная_подсистема_автоматизации_процесса_к
раулинга_для_деятельности_организации_ООО_«Продвижение».
2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ .................................................................................................................. 4
1
Аналитическая_часть ........................................................................................... 7
1.1_Техникоэкономическая_характеристика_предметной_области_предприятия................ 7
1.2
Экономическая_сущность_задачи .............................................................. 10
1.3_Обоснование_необходимости_и_цели_использования_вычислительной_т
ехники_для_решения_задачи................................................................................ 10
1.4_Постановка_задачи ......................................................................................... 17
1.5_Анализ_существующих_разработок_и_обоснование_выбора_технологии_
проектирования ...................................................................................................... 20
2
Обоснование_проектных_решений .................................................................. 25
2.1_Обоснование_проектных_решений_по_техническому_обеспечению...... 25
2.2_Обоснование_проектных_решений_по_информационному_обеспечению
.................................................................................................................................. 26
2.3_Обоснование_проектных_решений_по_программному_обеспечению .... 27
2.4_Обоснование_проектных_решений_по_технологическому_обеспечению
.................................................................................................................................. 29
2.5_Обоснование_выбора_программных_средств ............................................. 31
3
Проектная_часть ................................................................................................. 33
3.1_Информационное_обеспечение_задачи_информационной_подсистемы_ав
томатизации_процесса_краулинга ....................................................................... 33
3.2_Программное_обеспечение_задачи_информационной_подсистемы ........ 38
3.3_Технологическое_обеспечение_задачи ........................................................ 41
3.4_Описание_контрольного_примера_реализации_подсистемы.................... 42
3.5_Расчет_экономической_эффективности ....................................................... 51
ЗАКЛЮЧЕНИЕ ......................................................................................................... 60
СПИСОК_ИСПОЛЬЗОВАННЫХ_ИСТОЧНИКОВ ............................................. 62
ПРИЛОЖЕНИЕ_А .................................................................................................... 65
ПРИЛОЖЕНИЯ_Б..................................................................................................... 68
3
ВВЕДЕНИЕ
Современный_сайт_на_просторах_сети_Интернет_–
_это,_прежде_всего,_источник_уникальной_и_полезной_информации._Люди_в
_сети_ищут_ответы_на_свои_повседневные_вопросы._Если_ваш_ресурс_в_сос
тоянии_дать_исчерпывающие_ответы,_то_его_популярность_не_заставит_себя
_долго_ждать.
Однако_в_основные_задачи_контента_на_сайте_входит_не_только_донес
ение_информации_до_посетителя_и_повышение_его_общей_грамотности_и_у
ровня_образованности,_но_и_для_привлечения_клиентов_или_с_целью_извлеч
ения_прибыли._Это_условие_должно_обязательно_учитываться_в_процессе_п
одготовки_контента_для_сайта.
Источники_получения_контента_подразделяются_на_заимствованные_и_
оригинальные._Но,_несмотря_на_то,_что_сторонний_используемый_материал_
имеет_много_недостатков,_с_точки_зрения_поискового_продвижения,_больши
нство_web-сайтов_используют_данный_подход_к_своему_содержимому.
Самые_грубые_ошибки,_которые_происходят_при_создании_webсайтов_–
_это_технические._Такие_ошибки_могут_быть_выявлены_только_определённ
ыми_методами_или_краулерами_сайтов._Не_все_ИТ_специалисты_имеют_опы
т_в_выявление_такого_вида_ошибок,_поэтому_для_упрощение_выявлении_их
_разработали_краулер_способный_выявлять_и_перебирать_страницы_сайтов._
Однако_не_один_из_разработанных_на_данный_момент_краулеров_не_может_
производить_анализ_сайта_и_выводить_отчет,_а_также_они_являются_платны
ми._Поэтому_на_данный_момент_актуальность_разработки_данной_подсистем
ы_является_очень_актуальным.
4
Целью_выпускной_квалификационной_работы_является_оптимизация_w
eb-сайтов_за_счет_автоматизации_процесса_краулинга._
Объектом_исследования_является_техническая_оптимизация_сайта._В_к
ачестве_предмета_исследования_рассматривается_средства_краулеров_сайтов.
Для_достижения_поставленной_цели_были_определены_следующие_зад
ачи:
− анализ_методов_и_средств_извлечения_информации_со_сторонних
_web-сайтов;
− выбор_метода_и_средств_извлечения_информации;
− программная_реализация_метода_извлечения_информации;
− сравнение_и_тестирование_разработанного_приложения.
Выпускная_квалификационная_работа_состоит_из_трех_частей,_реализу
ющие_поставленные_задачи.
В_первой_главе_описаны_теоретические_обоснования_усовершенствован
ия_деятельности_специалиста_по_поисковому_продвижению,_подробно_описа
на_характеристика_деятельности_и_организационная_структура_управления_
ООО_«Продвижения»._
Вторая_глава_содержит_обоснование_проектных_решений_по_техническ
ому,_информационному,_программному_и_технологическому_обеспечению_за
дачи_по_автоматизации_процесса_краулинга.
В_третьей_главе_описан_процесс_проектирования_и_разработки_инфор
мационной_подсистемы_автоматизации_процесса_краулинга_для_деятельно
сти_организации,_представлены_результаты_работы_информационной_подс
истемы_и_рассчитана_экономическая_эффективность.
В_результате_выполнения_выпускной_квалификационной_работы_разра
ботана_информационная_подсистема_автоматизации_процесса_краулинга_для
_деятельности_организации_ООО_«Продвижение».
5
Данная_работа_состоит_из_страницы,_42_рисунка,_7_таблиц,_33_литера
турных_источников_и_2_приложений.
_
6
1 Аналитическая_часть
1.1_Техникоэкономическая_характеристика_предметной_области_предприятия
1.1.1_Характеристика_предприятия
Компания_«Продвижение»_занимает_первое_место_среди_компаний_по
_разработке,_продвижение_сайтов_и_настройки_контекстной_рекламы_в_Белг
ороде.
Организационно-правовая_форма_предприятия_–
_общество_с_ограниченной_ответственностью.
Во_главе_предприятия_стоит_генеральный_директор,_руководящий_все
ми_отделами_и_финансовоэкономической_деятельностью._Управление_предприятием_осуществляется_в
_соответствии_с_законодательством_РФ_и_уставом_предприятия._Численност
ь_сотрудников_ООО_«Продвижения»_составляет_15_человек.
К_основному_виду_текущей_деятельности_организации_настройка_конт
екстной_рекламы_в_Яндексе_Директе_и_в_Google_Adwords,_разработка_прод
ающих_и_оптимизированных_сайтов_для_максимальной_эффективности_инте
рнетмаркетинга._К_ряду_основных_деятельностей_большую_часть_занимает_SEO
_продвижение.
ООО_«Продвижение»_располагается_в_городе_Белгород.
1.1.2_Характеристика_организационной_структуры_управления_ООО_«
Продвижение»
7
Под_организационной_структурой_управления_предприятием_понимает
ся_состав_(перечень)_отделов,_служб,_подразделений_в_аппарате_управления
_предприятием,_характер_соподчиненности,_взаимодействия,_координационн
ые_и_информационные_связи,_порядок_распределения_функций_управления_
по_различным_уровням_и_подразделениям_[2].
ООО_«Продвижение»_имеет_линейнофункциональную_организационную_структуру_управления_предприятием.
Линейнофункциональная_структура_управления_характеризуется_тем,_что_во_главе_к
аждого_структурного_подразделения_стоит_руководитель,_осуществляющий_
все_функции_управления_и_руководство_подчиненными_работниками,_а_им_
оказывают_помощь_функциональные_органы.
Структура_управления_организацией_ООО_«Продвижения»_представле
на_на_рисунке_1.1.
Рисунок_1.1_–_Структура_управления_ООО_«Продвижение»
Суть_линейнофункциональной_организационной_структуры_управления_состоит_в_том,_чт
о_выполнение_отдельных_функций_по_конкретным_вопросам_возлагается_на
_специалистов.
8
Элементами_структуры_являются_отдельные_работники_и_службы_апп
арата_управления,_отношения_между_ними_поддерживаются_благодаря_связя
м,_которые_носят_линейный_и_функциональный_характер.
Линейные_звенья_принимают_решения,_а_функциональные_подразделе
ния_информируют_и_осуществляют_вопросы_и_подготовку_соответствующи
х_решений,_освобождают_линейных_руководителей_от_планирования,_финан
совых_расчетов,_программ,_необходимых_планов_для_принятия_решений.
Линейнофункциональная_структура_управления_имеет_следующий_ряд_преимуществ:
_
¯ быстрое_осуществление_действий_по_распоряжениям_и_указаниям,_о
тдающимся_вышестоящими_руководителями_нижестоящим;
¯ рациональное_сочетание_линейных_и_функциональных_взаимосвязей,
_стабильность_полномочий_и_ответственности_за_персоналом,
¯ единство_и_четкость_распорядительства;_
¯ более_высокая_оперативность_принятия_и_выполнения_решений;_
¯ личная_ответственность_каждого_руководителя_за_результаты_деятел
ьности;
¯ профессиональное_решение_задач_специалистами_функциональных_с
лужб.
Основные_проблемы_краулеров_является_скорость_парсинга_и_хранени
я_просканированной_информации._В_большинстве_сайтов_стоит_блокировка
_на_парсинг_страниц,_поскольку_это_создает_большую_нагрузку_на_сервер_
и_на_сам_сайт._Нормой_парсинга_страниц_–_это_56_ссылок_в_секунду,_но_на_некоторых_сайтов_возможно_еще_меньше,_поск
ольку_есть_вероятность_блокированием_системой_управления_сайтом._С_хра
нением_просканированных_данных_стоит_сложнее_цель,_на_данный_момент
9
_все_существующие_краулеры_хранят_все_данные_в_ОЗУ,_даже_при_сохран
ении_данных_на_диск_они_всеравно_при_запуске_помещаются_в_оперативную_память,_что_затрачивает_бо
льшие_ее_объемы,_в_среднем_на_120000_ссылок_необходимо_4гб_ОЗУ.
1.2 Экономическая_сущность_задачи
Целью_выпускной_квалификационной_работы_является_автоматизация_
процесса_краулинга_в_компании_ООО_«Продвижение».
Разрабатываемая_подсистема_позволит_упростить_процессы_техническо
й_оптимизации_сайтов,_путем_сканирования_и_представление_в_виде_отчета
_о_результатах.
В_результате_выпускной_квалификационной_работы_ожидается_автом
атизация_процесса_краулинга_для_анализа_контента_сайта_в_виде_подсистем
ы,_которая_позволит_устранить_недостатки_традиционного_анализа_контента
_сайта.
Для_решения_поставленной_цели_можно_выделить_следующие_задачи:
¯ анализ_деятельности_seo-специалиста_по_технической_оптимизации;
¯ изучение_процессов_и_технологий_существующих_программных_сре
дств_автоматизации_процесса_краулинга_с_целью_выделения_основных_фун
кциональных_возможностей_системы;
¯ усовершенствование_процесса_автоматизации_процесса_деятельности
_организации_с_использованием_информационной_подсистемы.
1.3_Обоснование_необходимости_и_цели_использования_вычислительно
й_техники_для_решения_задачи_
Для_проектирования_информационной_подсистемы_автоматизации_про
цесса_краулинага_для_деятельности_ООО_«Продвижение»_изучены_выполня
10
емые_функции_seoспециалиста_и_рассмотрен_процесс_технической_оптимизации_сайтов.
Основной_задачей_seoспециалиста_является_анализ_оптимизирующего_сайта_на_различные_технич
еские_ошибки,_после_его_разработки.
Контекстная_диаграмма_seo-оптимизации_сайта_1.2
U SED AT:
AU TH OR : N ikit a Pichugin
D ATE: 28. 05.2018
W OR KIN G
PR OJ ECT:
R EV: 05. 06.2018
D RAFT
N ikit a Pichugin
R EADER
D ATE C ON TEXT:
TOP
R ECOMMEND ED
N OTES: 1 2 3 4 5 6 7 8 9 10
PU BLI CATION
Договор
на
услуги
Актуальные
методики
оптимизации
Чек-листы
Текст
задания
Оптимизированный
сайт
SEO-оптимизация коммерческого сайта
0?
Страший
SEO-специалист
0
Система
управления
проектами
Младший
SEO-специалист
N OD E:
TITLE:
SEO-оптимизация коммерческого сайта
N UMBER:
A-0
Рисунок_1.2_–_Контекстная_диаграмма_seoоптимизации_коммерческого_сайта
Все_проекты_по_поисковому_продвижению_сайта_регулируются_догов
ором_на_услуги_продвижения,_составленным_ранее_аккаунтменеджером,_актуальными_методиками,_и_составленными_чек-листами.
11
Управление_распределением_информационных_потоков_осуществляется
_сотрудниками_организации_и_вспомогательными_системами_управления_пр
оектами._Старший_seoспециалист_отвечает_за_организацию,_координацию,_руководство,_контроль_
и_реализацию_работ_по_поисковому_продвижению._Младший_seoспециалист_подчиняется_и_выполняет_задания_и_поручения_старшего_seoспециалиста_организации,_а_также_взаимодействует_с_базовыми_или_технич
ескими_задачами.[1]
Входными_потоками_фирмы_являются_данные,_необходимые_для_орга
низации_для_правильной_постановки_задачи_и_выполнения._К_таким_данны
м_относятся_текст_задания,_в_котором_согласованы_разделы_или_запросы,_к
оторые_необходимо_продвинуть_по_поисковым_системам,_информационносправочная_информация_об_организациях.
12
Декомпозиция_процесса_seoоптимизации_коммерческого_сайта_представлена_на_рисунке_1.3.
U SED AT:
AU TH OR : N ikit a Pichugin
D ATE: 28. 05.2018
W OR KIN G
PR OJ ECT:
R EV: 05. 06.2018
D RAFT
N ikit a Pichugin
R EADER
D ATE C ON TEXT:
R ECOMMEND ED
PU BLI CATION
N OTES: 1 2 3 4 5 6 7 8 9 10
Договор на
услуги
Актуальные методики
оптимизации
Текст
задания
A-0
Чек-листы
Технический
оптимзированный
сайт
Поставленные
задачи
Сбор схематического ядра
0?
5
Запуск проекта
0?
1
Техническая оптимизация
Базово
опмитимизированный
сайт
0?
Технически и
семантически
проработанный
сайт
3
Базовая оптимизация
0?
Анализ конкуренции
2
0?
4
Страш ий
SEO-специалист
Младший
SEO-специалист
Система
управления
проектами
N OD E:
TITLE:
Оптимизированный
сайт
SEO-оптимизация коммерческого сайта
N UMBER:
A0
Рисунок_1.3_–_Декомпозиция_контекстной_диаграммы
В_процессе_продвижения_сайта_в_поисковых_системах_разделяется_на
_4_сущности._Запуск_проекта_проставить_базовые_чеклисты_для_проверки_сайта_на_способность_ранжирования_в_поисковых_сист
емах._Техническая_оптимизация_выявляет_ошибки_допущены_разработчикам
и_в_процессе_разработки_сайта._Сбор_семантического_ядра_позволяет_проан
ализировать_весь_охват_аудитории_и_спрос_на_определённую_услугу_или_то
вар._Анализ_конкуренции_позволяет_выявить_упущенные_и_недостающие_ре
шения_для_повышения_конверсии_и_привлечения_клиентов_на_сайт.[1]
Декомпозиция_процесса_«Техническая_оптимизация»_представлена_на_рисун
ке_1.4.
13
D RAFT
R ECOMMEND ED
PU BLI CATION
N OTES: 1 2 3 4 5 6 7 8 9 10
A0
Чек-листы
Базово
опмитимизированный
сайт
Сайт с
оптимизированными
внешними ссылками
Анализ и закрытие в нешних ссылок
0?
1
Актуальные
методики
оптимизации
Краулинг сайта
0?
2
Просканированный
сайт
Сайт с
закрытыми
дублями
Технический
оптимзированный
сайт
Закрытие дублей страниц
0?
Удаление 404 ссылок
Младший
SEO-специалист
Страший
SEO-специалист
N OD E:
3
0?
4
Система
управления
проектами
TITLE:
Техническая оптимизация
N UMBER:
A3
Рисунок_1.4_–_Декомпозиция_процесса_«Техническая_оптимизация»_
Первым_шагом_технической_оптимизации_сайта_является_анализ_внеш
них_ссылок_на_сайте,_в_результате_которого_осуществляется_проверка_и_за
крытия_ссылок._После_первичной_обработки_выполняется_краулинг_сайта_с
_целью_последующего_распределения_задач_на_исправление_технических_о
шибок,_допущенных_при_разработке._Одним_из_базовых_технических_ошиб
ок_является_наличие_дублей_страниц_сайта,_которые_закрываются_от_поиск
овых_систем._Последним_этапом_является_удаление_404_ошибок_на_сайте._[
3]_
Организация_и_технология_процесса_краулинга_в_digitalagency_ООО_«Продвижение»_осуществляется_seo-
14
оптимизатором_вручную_или_платными_программными_приложениями_и_об
ладает_следующими_характеристиками:
¯ написание_отчетов_о_сделанном_аудите_сайта;
¯ анализ_и_выявления_технических_ошибок,_
¯ отсутствуют_средства_представления_информации_в_ввиду_графиков
;
¯ отсутствуют_бесплатные_программные_средства_для_быстрой_провер
ки_и_аудита_сайта;
Совершенно_очевидно,_что_традиционная_схема_проверки_технических
_ошибок_сайта_не_способна_выявить_быстрое_решение._В_деятельности_раз
личных_организаций_при_ведении_экспрессаудита_сайта_или_выявление_технических_ошибок,_как_правило,_через_неко
торое_время_возникают_следующие_проблемы:
¯ бесплатное_использование_дополнительного_программного_обеспече
ния_для_автоматизации_процесса_краулинга;
¯ невозможность_обеспечить_быструю_передачу_входящих_документов
_и_информации;
¯ большие_затраты_времени_на_подготовку_и_согласование_отчетов;
Перечисленные_проблемы_и_недостатки_организации_и_технологии_ра
боты_специалиста_по_поисковому_продвижение_позволяют_сделать_вывод_о
_необходимости_разработки_информационной_подсистемы_с_целью_обеспече
ния_повышения_оперативности_и_качества_работы_с_отчетами_о_аудитах_и_
предоставление_бесплатного_использования_программного_обеспечения_для_
автоматизирования_процесса_краулинга.
15
1.4_Постановка_задачи
1.4.1_Цель_и_назначение_автоматизированного_варианта_решения_зада
чи
К_автоматизированным_информационным_подсистемам_относится_упо
рядоченная_совокупность_экономикоматематических_методов_и_моделей,_технических_и_программных_средств,_
организованных_на_базе_новой_информационной_технологии_в_решении_тех
нических_задач_seo-специалистов.
Цель_создания_информационной_подсистемы_процесса_краулинга_конт
ента_сайта_является_обеспечение_повышения_качества_страниц,_при_оптими
зации,_а_также_нахождение_всех_технический_ошибок,_сокращение_сроков_
прохождения_аналитики,_формирование_отчетности_для_аккаунтменеджеров.
Информационная_подсистема_процесса_краулинга_направлена_на_упор
ядочение_работы_со_страницами_сайта_и_обеспечение_следующих_функцион
альных_возможностей:
− сканирование_всех_ссылок_сайта;
− проверка_ответа_сервера;
− сканирование_мета-тегов_сайта;
− проверка_на_дубли_страниц;
− анализ_контента_сайта;
− получение_отчетности_результатов_анализа_сайта;
− результат_выводит_в_виде_диаграмм;
− реализация_поиска_страниц_и_метатегов_просканированных_страниц_сайта.
Таким_образом,_для_повышения_уровня_эффективности_технической_о
птимизации_ООО_«Продвижения»_необходимо_создать_профессионально_сп
17
роектированную_и_выполненную_подсистему_сканирования_сайта_на_провер
ку_технические_ошибки_сайтов.
1.4.2_Общая_характеристика_организации_решения_задачи_на_ЭВМ
Автоматизация_процессов_краулинга_основывается_на_технологии_«кл
иент-сервер»._Принцип_технологии_«клиентсервер»_состоит_в_распределении_функций_стандартного_интерактивного_пр
иложения_на_группы:
− презентационная_логика_–_функции_ввода_и_отображения_данных;
− бизнес-логика_–
_прикладные_функции,_определяющие_основные_алгоритмы_решения_
задач_приложения;
− процессор_управления_данными_–
_функции_хранения_и_управления_информационными_ресурсами;
− логика_обработки_данных_–
_функции_обработки_данных_внутри_приложения;
− служебные_функции,_играющие_роль_связок_между_функциями_первы
х_четырех.
Хранилище_данных_и_файлы_сервера_находятся_на_стационарном_выд
еленном_компьютере,_выполняющим_функцию_сервера_баз_данных,_которы
й_управляет_данными_и_выполняет_запросы_клиентских_приложений._Клиен
тские_приложения_предоставляют_интерфейс._Приложения_должны_быть_ус
тановлены_на_персональные_компьютеры_с_доступом_к_сети_интернет._
Методика_разработки_подсистемы_включает_в_себя_выполнение_следу
ющих_этапов:
− изучение_деятельности_seo-специалиста_ООО_«Продвижения»;
18
− выявление_необходимых_функций_подсистемы_для_автоматизаци
и_организации_процесса_краулинга_и_выявление_на_технические
_ошибки;
− проектирование_и_анализ_функциональных_диаграмм;
− проектирование_подсистемы_анализа_страницы_сайта;
− разработка_информационной_подсистемы.
Для_результативного_решения_поставленной_задачи_необходимо_соотв
етствующее_техническое_обеспечение._Под_техническим_обеспечением_пони
мают_состав,_формы_и_способы_различных_технических_устройств,_необход
имых_для_выполнения_информационных_процедур:_сбора,_регистрации,_пер
едачи,_хранения,_обработки_и_использования_информации_[5].
Техническое_обеспечение_данного_проекта_имеет_в_своем_составе_ЭВ
М,_монитор,_манипулятор_типа_мышь,_клавиатуру.
При_выборе_ЭВМ_следует_руководствоваться_рядом_характеристик._К
_основным_характеристикам_вычислительной_техники_относят_эксплуатацио
ннотехнические_характеристики:_объем_памяти,_надежность,_стоимость,_быстро
действие,_точность_вычислений._Существенное_значение_имеют_и_другие_х
арактеристики,_такие_как:_программная_совместимость,_универсальность,_га
бариты,_вес_и_энергопотребление._Именно_от_этих_значений_перечисленных
_параметров_ЭВМ_зависит_возможность_работы_с_необходимым_программн
ым_обеспечением.
Для_решения_задач_обработки_данных_наиболее_подходят_ПЭВМ,_кот
орые_характеризуются_относительно_невысокой_стоимостью,_легко_конфигу
рируемыми,_обладают_простой_системой_обучения,_хорошей_производитель
ностью_и_походящими_характеристиками_надежности,_и_объемом_памяти._
Чтобы_реализовать_комплекс_поставленных_задач,_при_выборе_ПЭВМ
_необходимо_учитывать_тактовую_частота_процессора,_объем_и_скорость_ра
19
боты_жесткого_диска,_объем_оперативной_памяти,_наличие_периферийных_у
стройств_и_другие_технические_характеристики._
Значительными_требованием_к_информационному_обеспечению_служи
т_уровень_хранения_данных_в_подсистеме,_построенный_на_основе_совреме
нной_реляционной_СУБД._Для_обеспечения_целостности_данных_должны_и
спользоваться_встроенные_механизмы_СУБД._Средства_операционной_систе
мы_и_СУБД_должны_обеспечивать_документирование_и_протоколирование_
обрабатываемой_в_системе_информации._
Для_решения_поставленной_задачи_подходит_диалоговый_режим_взаи
модействия_пользователя_с_вычислительной_системой,_который_обеспечивае
т_возможность_оперативного_вмешательства_пользователя_в_процесс_обрабо
тки_данных._Диалоговый_режим_характеризуется_отсутствием_жестко_закре
пленной_последовательности_операций_обработки_данных._
Важными_критериями_при_разработке_подсистемы_автоматизации_про
цесса_краулинга_является_структура_и_функциональность_разрабатываемой_
системы,_а_также_предоставление_хранимой_информации_базы_данных_в_об
ъективной_форме.
1.5_Анализ_существующих_разработок_и_обоснование_выбора_техноло
гии_проектирования
В_последние_годы_алгоритмы_поисковых_систем_стали_намного_эффе
ктивнее_различать_и_находить_ошибки,_допущенные_в_результате_разработк
и_или_оптимизирования_сайта._Существует_несколько_программных_разрабо
ток_систем_автоматизирования_процесса_краулинга_и_анализа_контента_сайт
а_на_технические_ошибки_сайта,_которые_похоже_между_собой._Для_выявл
ения_функциональных_решений_подсистемы_необходимо_проанализировать_
существующие_программные_средства._
Для_анализа_и_оценки_программных_средств_выделили_критерии:_
20
а) функциональные_возможности_(от_1_до_5_баллов);
б) открытость_(1_балл_–_нет,_5_баллов_–_есть);
в) свободная_лицензия_(1_балл_–_нет,_5_баллов_–_есть);
г) простота_внедрения_и_использования_(от_1_до_5_баллов);
д) масштабируемость_(от_1_до_5_баллов).
Система_автоматизирования_процесса_краулинга_–
_программный_комплекс,_который_обеспечивает_процесс_сканирование_сайт
а,_выявление_технических_ошибок_сайта,_а_также_контроль_просканированн
ых_документов_сайта.
Наиболее_распространенными_для_малых_предприятий_являются_Screa
ming_Frog_Seo_Spider,_Comparser_и_Xenus_Link_Sleuth.
Первой_отечественной_системой_автоматизации_документооборота_явл
яется_система_«Screaming_Frog_Seo_Spider»,_разработанная_командой_разраб
отчиков._Система_ориентирована_на_полное_автоматизирование_процесса_кр
аулинга,_анализа_всего_контента_сайта_на_технические_ошибки,_поддержку_
других_известных_сервисов_для_аналитики_и_выявлений_проблем_сайта.
Система_«Comparser»__также_является_автоматизирующей_системой_краулинга,_с_выявлением_раз
личных_технических_ошибок,_однако_имеет_ряд_других_функций,_позволяю
щих_подойти_к_решению_технических_ошибок_другими_методами._Создал_
данное_приложение_один_российский_разработчик_Александр_Алаев.
Xenus_Link_Sleuth_–
_программная_обеспечение_являющееся_самым_ранним_продуктом_из_всех_
перечисленных_ранее._Изначально_программа_являлась_приложением_провер
яющая_вебсайты_на_битые_ссылки._Все_что_являлось_ссылкой_на_сайте_сканировалось
_и_в_дальнейшем_могло_быть_отсортировано_и_выгружено_в_формат_CSV._
В_дальнейшем_компания_Lick_Sleuth_выпустили_обновление_позволяющая_с
21
мотреть_не_только_ссылки,_но_искать_страницы_с_большой_отдачей_времен
и,_создавать_карту_сайта_и.т.д._
Сравнительная_характеристика_программных_средств_представлена_в_т
аблице_1.1.
Таблица_1.1_–_Сравнительная_характеристика_программных_средств_
Критерий_оценки
Название_СЭД
Screaming_Frog_Seo_
Spider
Compar
ser
Xenus_Link_Sl
euth
5
4
3
4
4
4
2
3
4
4
3
2
4
21
3
16
1
13
Функциональные_возможност
и
Открытость
Свободная_лицензия
Простота_внедрения_и_исполь
зования
Масштабируемость
Сумма
Процесс_краулига_предполагает_учет_больших_объемов_информации,_
хранение_и_обработку_входящей,_внутренней_и_исходящих_метаданных,_проверку_на_технический_ошибки,_что_обуславливает_широкое_при
менение_программ._Все_описанные_выше_системы_автоматизирование_проце
сса_краулига_являются_очень_крупными_и_слишком_универсальными.
Отличиями_разрабатываемой_подсистемы_от_других_систем_автоматиз
ации_процесса_краулинга_являются_функциональные_возможности,_спроекти
рованные_под_деятельность_организации,_масштабируемость_и_бесплатное_с
опровождение._Подсистема_проста_во_внедрении_и_использовании,_не_потр
ебует_дополнительного_обучения.
Технология_проектирования_ИС_представляет_собой_совокупность_мет
одов_и_средств_проектирования_ИС,_а_также_организации_и_управления,_вн
едрения_и_модернизации_системы.
Проектирование_ИС_охватывает_три_основные_области:
22
− проектирование_объектов_данных,_которые_будут_реализованы_в
_базе_данных;
− проектирование_программ,_экранных_форм,_отчетов,_которые_бу
дут_обеспечивать_выполнение_запросов_к_данным;
− учет_конкретной_среды_или_технологии,_а_именно:_топологии_с
ети,_конфигурации_аппаратных_средств,_используемой_архитекту
ры,_параллельной_обработки,_распределенной_обработки_данных.
Существуют_разные_модели_жизненного_цикла:_каскадная,_итерационн
ая,_спиральная._Все_они_включают_одинаковые_стадии,_но_различаются_пос
ледовательностью_перемещения_от_стадии_к_стадии._К_данным_стадиям_от
носятся:_формирование_требований_к_системе,_проектирование,_реализация,
_тестирование,_эксплуатация.
Для_проектирования_подсистемы_автоматизации_процесса_круалинга_в
ыбрана_Vобразная_модель,_которая_позволяет_сконцентрировать_внимание_на_провер
ке_результатов_разработки,_точно_спланировать_свойства_программного_обе
спечения_на_различных_этапах_проектирования.
На_рисунке_1.7_представлен_жизненный_цикл_V-образной_модели.
Рисунок_1.5_–_Жизненный_цикл_V-образной_модели
23
Vобразная_модель_жизненного_цикла_подсистемы_имеет_следующий_ряд_пре
имуществ:
− планирование_действий_происходит_с_ранних_стадий_разработки;
− упрощение_отслеживания_хода_процесса_разработки,_так_как_зав
ершение_каждой_фазы_является_контрольной_точкой;
− обеспечение_аттестации_и_верификации_не_только_программного
_продукта,_но_и_всех_полученных_внутренних_и_внешних_данн
ых.
Вывод_по_первому_разделу
В_разделе_рассмотрена_организационная_структура_управления_ООО_«
Продвижение»_и_характеристика_его_видов_деятельности,_произведен_сбор_
необходимой_информации_о_деятельности_seoспециалиста_ООО_«Продвижение»,_построена_контекстная_диаграмма_орган
изации,_выявлены_цели_и_функциональное_назначение_разрабатываемой_под
системы,_необходимые_для_обеспечения_повышения_оперативности_и_качес
тва_работы_технической_оптимизации_сайта,_а_также_выбрана_технология_п
роектирования_подсистемы.
24
2 Обоснование_проектных_решений
2.1_Обоснование_проектных_решений_по_техническому_обеспечению
Техническое_обеспечение_представляет_собой_совокупность_объединен
ных_и_взаимодействующих_технических_средств_(ТС),_предназначенных_для
_автоматизированной_обработки_данных,_а_также_включает_методические_м
атериалы_и_персонал_по_разработке,_внедрению_и_эксплуатации_технически
х_средств_[6].
Одной_из_важнейших_компонентов_информационной_системы_являетс
я_комплекс_технических_средств_(КТС),_состоящий_из_средств_подготовки,_
регистрации,_сбора,_передачи,_хранения,_обработки,_вывода_и_воспроизведе
ния_информации.
Технические_средства_должны_соответствовать_следующим_требовани
ям:
− быть_информационно_совместимыми_между_собой_и_обслужива
ющим_персоналом;
− структура_КТС_должна_соответствовать_структуре_управления_о
бъектом,_обеспечивая_автоматизированное_управление_выполняе
мых_функций;
− для_обеспечения_быстрого_решения_задач_ТС_должны_быть_кач
ественной_конструкции,_иметь_удобный_интерфейс_для_работы_
пользователя;
− должен_выполняться_принцип_экономичности_выбора_и_использ
ования_ТС.
Необходимое_для_функционирования_информационной_подсистемы_ав
томатизации_процесса_краулинга_техническое_обеспечение_имеется_в_орган
изации._Конфигурация_компьютера_с_частотой_процессора_не_менее_1,6_Гг
25
ц,_жестким_диском_от_120Гб_и_объемом_оперативной_памяти_не_менее_4Гб
._Для_одновременной_работы_пользователей_подсистемы_организация_имеет
_локальную_корпоративную_сеть_на_основе_сервера_и_принтер_для_вывода_
информации.
2.2_Обоснование_проектных_решений_по_информационному_обеспечен
ию
Информационное_обеспечение_(ИО)_–
_важнейшая_обеспечивающая_подсистема_автоматизированной_информацион
ной_системы,_предназначенная_для_снабжения_пользователей_информацией,
_характеризующей_состояние_управляемого_объекта_и_являющейся_основой
_для_принятия_управленческих_решений._ИО_представляет_собой_определен
ную_совокупность_средств_и_методов_построения_информационной_системы
_экономического_объекта_[7].
Главным_принципом_создания_ИС_является_решение_задачи_удовлетв
орения_информационных_потребностей_пользователя_и_системы_управления
_объектом.
Создание_ИО_проходит_следующие_этапы:
− исследование_информационных_потоков;
− разработка_системы_классификации_и_кодирования;
− разработка_унифицированных_форм_представления_данных_в_ин
формационной_базе;
− накопление_массивов_данных_и_работа_с_ними.
ИО_определяет_размещение_формы_организации_информации_в_систе
ме,_представляя_собой_совокупность_методов_и_средств_построения_и_реал
изации_информационной_базы.
Проектные_решения_по_информационному_обеспечению_обосновываю
тся_с_точки_зрения_внешнего_и_внутримашинного_обеспечения.
26
Внешнее_(немашинное)_ИО_учитывает_принципы_автоматизации_инфо
рмационных_процессов_и_состоит_из_системы_классификации_и_кодировани
я,_нормативносправочных_документов,_оперативных_документов,_методических_и_инструк
тивных_материалов._В_соответствии_с_организационной_структурой_управле
ния_осуществляется_движение_этих_документов.
Внутримашинное_ИО_включает_информационные_массивы,_составляю
щие_информационную_базу_системы_и_пакеты_программ.
ИО_реализуется_в_виде_банков_данных_и_банков_знаний,_в_основе_по
строения_которых_лежат_модели_накопления_данных_и_представления_знан
ий._Эти_процессы_должны_быть_формализованы_на_концептуальном_и_логи
ческом_уровнях.
2.3_Обоснование_проектных_решений_по_программному_обеспечению
Программное_обеспечение_(ПО)_–
_совокупность_программных_средств,_выполненных_вычислительной_систем
ой_и_обеспечивающих_работу_комплекса_её_технических_средств,_реализаци
ю_целей_и_задач_информационной_системы_[7].
Состав_программного_обеспечения_показан_на_рисунке_2.1.
Рисунок_2.1_–_Состав_программного_обеспечения
27
К_выбираемому_программному_обеспечению_в_данном_случае_относит
ся_среда_программирования_и_программы_функционального_назначения.
Основным_назначение_ОС_является_осуществление_вычислительного_п
роцесса_в_вычислительной_системе,_рациональное_управление_данными,_зад
аниями,_задачами,_процессами_и_распределение_вычислительных_ресурсов_
между_решаемыми_задачами,_а_также_обеспечение_связи_человека_с_компь
ютером.
Операционная_система_–
_комплекс_системных_и_управляющих_программ,_обеспечивающих_управлен
ие_аппаратными_средствами_компьютера_и_предназначенных_для_эффективн
ого_использования_всех_ресурсов_вычислительной_системы_[8].
Автоматизация_задачи_предполагается_на_операционной_системе_Micro
soft_Windows,_так_как_она_установлена_в_качестве_рабочей_станции_органи
зации.
Пакеты_прикладных_программ_представляют_собой_совокупность_прог
рамм,_совместимых_между_собой_и_обеспечивающих_решение_задач_из_обл
асти_знаний_пакета._Могут_быть_программы_общего_назначения_и_програм
мы_функционального_назначения_[7].
К_программам_общего_назначения_можно_отнести_системы_программи
рования_на_языках_высокого_уровня,_систему_управления_базами_данных_(
СУБД),_программыредактора_текстов,_изображений,_издательские_системы._Они_реализуют_тип
овые_режимы_работы_вычислительной_системы.
Предпочтение_для_разработки_клиентской_части_информационной_под
системы_автоматизации_процесса_краулинга_было_отдано_изученной_в_проц
ессе_обучения_в_университете_системе_объектноориентированного_программирования_JavaFX,_которая_представляет_собой_и
нструмент_быстрой_разработки_приложений_и_интегрированную_среду_прог
28
раммирования._Интегрированная_среда_программирования_обеспечивает_выс
окую_скорость_визуальной_разработки,_позволяет_эффективно_использовать_
компоненты,_улучшенные_инструментами_и_разномасштабными_средствами_
доступа_к_базе_данных.
2.4_Обоснование_проектных_решений_по_технологическому_обеспечен
ию
Технологический_процесс_обработки_данных_–
_комплекс_технических_средств,_предназначенный_для_работы_информацион
ной_системы,_а_также_соответствующая_документация_на_эти_средства_и_те
хнологические_процессы_[9].
Технологический_процесс_реализуется_различными_инструментальным
и_средствами_и_определенными_методами_сбора,_обработки_и_передачи_рез
ультативной_информации_пользователю_для_выполнения_функций_управлен
ия.
Под_технологической_операцией_понимается_законченная_заключитель
ная_часть_операции,_обеспечивающая_условия_для_начала_следующей_техно
логической_операции.
По_цели_и_месту_выполнения_технологический_процесс_можно_раздел
ить_на_четыре_класса_операций,_отличающихся_трудовыми_затратами,_связа
нными_с_их_реализацией_и_распределением_ошибок,_вносимых_в_технологи
ческий_процесс.
Первый_класс_операций_характеризуется_получением_первичной_инфо
рмации,_отражающей_содержание_процессов_обработки_документации_орган
изации._А_именно_к_таким_операциям_относится_получение_количественной
_характеристики_показателей,_регистрация_и_сбор_первичной_информации._
29
Операции_этого_класса_наиболее_трудоемкие_(трудовые_затраты_на_выполн
ение_операций_составляю_до_50%_процентов_всех_работ),_дорогостоящие_и
_дающие_наибольший_процент_ошибок_в_получаемых_данных.
Целью_второго_класса_операций_служит_ввод_данных_в_ЭВМ_и_загру
зка_данных_в_информационную_базу._В_состав_класса_входят_операции_при
ема,_ввода_данных,_контроля_ошибок,_загрузка_данных_в_информационную
_базу_и_ведение_информационной_базы._Операции_отличаются_высокой_тру
доемкостью_и_множеством_ошибок.
Операции_третьего_класса_предназначены_для_выполнения_обработки_
данных_базы_по_алгоритмам_и_получение_результативной_информации._Опе
рации_этого_класса_характеризуются_наибольшей_степенью_автоматизации_
процессов,_наименьшей_трудоемкостью_и_наименьшим_количеством_допуск
аемых_ошибок.
Четвертый_класс_технологических_операций_имеют_целью_обеспечени
е_достоверности_и_получение_определенных_отчетов_по_документам,_подле
жащих_группировке_по_определенным_ключевым_признакам_и_анализ_полу
ченных_данных_с_последующей_распечаткой_отчетных_документов._К_осно
вным_операциям_относятся_анализ_и_контроль_полученных_результатов,_вы
явление_и_исправление_ошибок_по_причине_неправильности_введенных_исх
одных_данных,_сбоев_в_работе_машины,_ошибок_пользователя_оператора_и
ли_программиста.
Недостатки_технической_оптимизации_будут_устранены_с_внедрением
_разрабатываемой_информационной_подсистемы_автоматизации_процесса_кр
аулинга._В_подсистеме_вся_информация_о_входящих,_внутренних_и_исходя
щих_данных_будет_расположена_в_единой_информационной_базе._Подсисте
ма_будет_иметь_возможность_парсить_все_ссылки_сайта,_а_также_анализиро
вать_код_ответа_сервера,_упрощение_сбора_метатегов_и_анализа_полученной_обработанной_информации_в_виде_отчетных_ф
орм._Все_перечисленное_позволит_сократить_и_упростить_процесс_техничес
30
кой_оптимизации_сайта,_снизится_время_анализа_оптимизации,_тем_самым_
увеличивается_производительность_работы_seo-специалиста.
2.5_Обоснование_выбора_программных_средств
При_создании_и_проектировании_информационной_подсистемы_автом
атизации_процесса_краулинга_предполагается_использование_следующих_тех
нологий:
− сase-технологии;
− объектно-ориентированной_технологии;
− дополнительных_фреймворков;
− среды_программирования.
CASEтехнология_представляет_собой_методологию_проектирования_информацион
ной_системы,_а_также_набор_инструментальных_средств,_позволяющих_в_на
глядной_форме_моделировать_предметную_область,_анализировать_модель_н
а_всех_этапах_разработки_и_сопровождения_информационной_подсистемы,_р
азрабатывать_приложения_в_соответствии_с_информационными_потребностя
ми_пользователя.
Проведя_анализ_программных_средств,_и_учитывая_специфику_разраб
отки_и_преимущества_продуктов,_решено_использовать_для_реализации_кли
ентского_приложения_язык_Java_и_фреймворк_JavaFX.
Вывод_по_второму_разделу
Необходимость_покупки_дополнительного_оборудования_отсутствует,
_так_как_в_организации_имеется_необходимое_оборудование_для_функциони
рования_информационной_подсистемы._Описаны_требования_к_информацио
нной_подсистеме,_выбраны_и_обоснованы_проектные_решения_по_информац
31
ионному,_программному,_технологическому_обеспечению._Данные_по_разде
лу_позволили_перейти_к_разработке_информационной_подсистемы_автомати
зации_процесса_краулинга_для_организации_ООО_«Продвижение».
32
3 Проектная_часть_
3.1_Информационное_обеспечение_задачи_информационной_подсистем
ы_автоматизации_процесса_краулинга_
3.1.1_Информационная_модель_и_ее_описание
Под_информационной_моделью_понимается_модель_объекта,_представл
енная_в_виде_информации,_описывающей_существенные_для_данного_рассм
отрения_параметры_и_переменные_величины_объекта,_связи_между_ними,_в
ходы_и_выходы_объекта_и_позволяющая_путем_подачи_на_модель_информа
ции_об_изменениях_входных_величин_моделировать_возможные_состояния_
объекта_[10].
Проведя_анализ_техникоэкономической_составляющей_организации,_была_разработана_информацион
ная_модель_«Как_есть»_и_выявлены_недостатки_технической_оптимизации_с
айта._[13]
Разработка_информационной_модели_предполагает_моделирование_нов
ого_варианта_организации_технической_оптимизации_сайта_ООО_«Продвиже
ние»_–
_информационной_модели_«Как_должно_быть»._Описание_автоматизации_пр
оцесса_краулинга_производится_с_использованием_известной_и_широко_исп
ользуемой_методологии_функционального_моделирования_IDEFO.
Предлагаемая_модель_seoоптимизации_коммерческого_сайта_представлена_на_рисунке_3.1.
33
U SED AT:
AU TH OR : N ikit a Pichugin
D ATE: 28. 05.2018
W OR KIN G
PR OJ ECT:
R EV: 05. 06.2018
D RAFT
N ikit a Pichugin
R EADER
D ATE C ON TEXT:
TOP
R ECOMMEND ED
PU BLI CATION
N OTES: 1 2 3 4 5 6 7 8 9 10
Договор
на
услуги
Актуальные
методики
оптимизации
Чек-листы
Текст
задания
Оптимизированный
сайт
SEO-оптимизация коммерческого сайта
0?
Страший
SEO-специалист
0
Система
управления
проектами
Младший
SEO-специалист
N OD E:
TITLE:
SEO-оптимизация коммерческого сайта
Автоматизированная
подсистема
краулинга
N UMBER:
A-0
Рисунок_3.1_–_Предлагаемая_модель_seo-оптимизации_коммерческого_сайта
На_рисунке_3.2_представлена_функциональная_декомпозиция_второго_
уровня_подсистемы_–_процесса_seoоптимизации_коммерческого_сайта,_состоящего_из_обработки_текста_задани
я_и_формирования_оптимизирования_сайта._На_данной_контекстной_диаграм
ме_автоматизированная_система_краулинга_входит_только_техническую_опт
имизацию,_именно_этот_процесс_является_одним_из_самых_важных_в_проце
ссе_продвижения_сайта_в_поисковой__выдаче.
34
U SED AT:
AU TH OR : N ikit a Pichugin
D ATE: 28. 05.2018
W OR KIN G
PR OJ ECT:
R EV: 05. 06.2018
D RAFT
N ikit a Pichugin
R EADER
D ATE C ON TEXT:
R ECOMMEND ED
N OTES: 1 2 3 4 5 6 7 8 9 10
Договор на
услуги
PU BLI CATION
Актуальные методики
оптимизации
Текст
задания
A-0
Чек-листы
Технический
оптимзированный
сайт
Поставленные
задачи
Сбор схематического ядра
0?
5
Запуск проекта
0?
1
Техническая оптимизация
Базово
опмитимизированный
сайт
0?
3
Технически и
семантически
проработанный
сайт
Базовая оптимизация
0?
Анализ конкуренции
2
0?
4
Страший
SEO-специалист
Система
управления
проектами
N OD E:
TITLE:
Младший
SEO-специалист
SEO-оптимизация коммерческого сайта
Оптимизированный
сайт
Автоматизированная
подсистема
краулинга
N UMBER:
A0
Рисунок_3.2_–_Диаграмма_декомпозиции_процесса_seoоптимизации_коммерческого_сайта.
Автоматизация_деятельности_специалиста_по_поисковому_продвижени
ю_происходит_на_этапах_«Технического_оптимизации»._Более_подробный_п
роцесс_автоматизации_процесса_краулинга._Информационная_подсистема_ав
томатизации_процесса_краулинга_в_процессе_парсинга_сайта_получает_инфо
рмацию_о_различных_типах_ошибках_и_не_корректно_заполненных_данных.
_Самой_распространённой_проблемой_технической_оптимизации_–
_это_дубли_страниц._Это_может_возникать_в_процессе_разработки_или_не_з
акрытия_различных_настроек_в_файле_robots.txt,_представлена_реализация_н
а_рисунке_3.3
35
U SED AT:
AU TH OR : N ikit a Pichugin
D ATE: 28. 05.2018
W OR KIN G
PR OJ ECT:
R EV: 05. 06.2018
D RAFT
N ikit a Pichugin
R EADER
D ATE C ON TEXT:
R ECOMMEND ED
N OTES: 1 2 3 4 5 6 7 8 9 10
PU BLI CATION
A0
Чек-листы
Базово
опмитимизированный
сайт
Сайт с
оптимизированными
внешними ссылками
Анализ и закрытие в нешних ссылок
0?
1
Актуальные
методики
оптимизации
Краулинг сайта
0?
2
Просканированный
сайт
Сайт с
закрытыми
дублями
Технический
оптимзированный
сайт
Закрытие дублей страниц
0?
Удаление 404 ссылок
Младший
SEO-специалист
Страший
SEO-специалист
N OD E:
0?
Система
управления
проектами
TITLE:
3
4
Автоматизированная
подсистема
краулинга
Техническая оптимизация
N UMBER:
A3
Рисунок_3.3_–_Декомпозиция_процесса_«Техническая_оптимизация»
Результатом_проведенной_работы_является_модернизация_процесса_кра
улинга_путем_использования_информационной_подсистемы_для_парсинга_ст
раниц_сайта_и_обработки,_анализа_полученных_данных._Это_позволит_реши
ть_проблему_с_скоростью_обработки_информации,_получение_оценки_качест
ва_оптимизации_сайта_на_уровне_технических_ошибок,_а_также_ускорит_пр
оизводительность_специалиста_по_поисковому_продвижению.
3.1.2_Характеристика_данных_полученных_при_парсинге_сайта
Входной_оперативной_информацией_для_информационной_подсистемы
_являются_ссылки_страниц_и_код_ответа_сервера._Краулер_сканирует_все_сс
36
ылки,_находящиеся_на_странице_сайта,_собирает_их_в_память,_после_обхода
_каждой_ссылки_он_заносит_их_в_таблицу,_которая_будет_представлена_пос
ле_сканирования._Код_ответ_сервера_–
_это_часть_первой_строки_ответа_сервера_по_протоколу_HTTP,_одна_из_сам
ых_встречаемых_в_интернете_это_404_ошибка_сервера,_значащая,_что_запро
шенный_ресурс_не_найден,_но_в_будущем_возможно_появится._Также_на_вт
ором_месте_–
_это_301_код_сервера_или_другими_словами_редирект._Он_позволяет_перена
править_пользователя_на_другой_ресурс,_а_также_расценивается_поисковым
и_роботами,_что_страница_существует_и_не_удаляет_из_кеша_«поисковиков»
.
Входной_информацией_для_анализа_контента_сайта_служит_метатеги_Title,_H1._Одни_из_самых_важных_тегов_находящееся_на_странице_сай
та,_по_которым_поисковый_робот_и_пользователь_могут_понять,_что_находи
ться_на_странице_и_дать_точный_ответ_на_забитый_в_поиске_запрос.
Для_регистрации_входящих_ссылок_присваивается_уникальный_номер_
и_страницы,_поступившего_при_сканировании_сайта._В_последствии_можно
_узнать_на_какой_стадии_краулер_просканировал_определённую_ссылку.
Для_обновления_входной_информации_подсистемы_автоматизации_про
цесса_краулинга_необходимо_предусмотреть_возможность_корректировки_ил
и_пересканирования_сайта._Например,_добавление_диапазона_сканирования_
или_сканирования_определённых_ссылок.
3.1.4_Характеристика_выходной_и_результативной_информации
В_информационной_подсистеме_процесса_краулинга_выходной_инфор
мацией_являются_отчет_о_анализе_и_мониторинга_ошибок_сайта._Который_
в_последствии_возможно_сохранить_и_передать_на_обработку.
37
Данные_о_входящем_документе_поступают_в_результате_просканиров
анных_ссылок,_найденных_на_сайте._Ссылки_сканируются_исходя_из_основн
ого_домена,_поскольку_если_сайт_имеет_внешние_ссылки,_может_быть_прос
канированы_другие_данные_исходящих_ссылок.
Данные_об_исходящих_документах_формируются_из_колонок_«Title»,_
«Код_ответа_сервера»,_«H1»._Самые_важные_данные_для_технической_опти
мизации_и_проработки_семантического_ядра,_по_которым_специалист_по_по
исковому_продвижению_может_оценить_оптимизацию_сайта.
Результативными_документами_информационной_подсистемы_является
_аналитическая_отчетность_по_трем_видам_потоков_данных._Эти_отчеты_по
лучаются_в_результате_обработки_информации_из_из_колонок_«Title»,_«Код
_ответа_сервера»,_«H1»._Сравнение_идет_по_количеству_просканированных_
страниц_сайта_и_найденных_ошибок_на_сайте.
3.2_Программное_обеспечение_задачи_информационной_подсистемы
3.2.1_Структурная_схема_пакета_и_описание_программных_модулей
Разрабатываемая_информационная_подсистема_автоматизирует_процесс
_краулинга:_просмотр_метатега_Title_и_H1,_внутренних_и_исходящих_страниц,_выполнения_анализа_са
йта_на_основе_полученных_данных.
Все_действия_программного_продукта_можно_разделить_на_служебные
_и_основные_функции_управления_и_обработки._Служебные_функции_призв
аны_обеспечить_безопасность_ввода,_обработки_и_хранения_информации,_об
легчить_работу_с_системой_и_сделать_её_приспособленной_для_пользователя
._Основные_функции_отражают_особенности_процесса_обработки_информац
ии,_получения_результатов.
38
Иерархия_функций_управления_и_обработки_данных_информационной
_подсистемы_автоматизации_процесса_краулинга_представлена_в_виде_дерев
а_функций_на_рисунке_3.4.
Рисунок_3.4_–_Дерево_функций_информационной_подсистемы
Основными_функциями_информационной_подсистемы_автоматизации_
процесса_краулинга_является_парсинг_страниц_и_метатегов,_анализ_полученных_данныъ,_а_также_формирование_отчетности._К_сл
ужебным_функциям_относится_вход_в_подсистему_и_помощь_в_работе_с_ин
формационной_подсистемой.
На_данном_этапе_разработки_информационной_подсистемы_выбран_ди
алоговый_режим_взаимодействия_пользователя_с_подсистемой,_который_обе
39
спечивает_возможность_оперативного_вмешательства_человека_в_процесс_об
работки_данных._
Сценарий_диалога_информационной_подсистемы_с_пользователем_сост
оит_из_следующих_составляющих:_основных_и_сервисных_меню.
Основные_меню,_которые_видит_пользователь_до_выполнения_основн
ых_функций,_и_предполагают_обязательные_действия_пользователя_при_раб
оте_с_подсистемой.
Процесс_проектирования_программного_обеспечения_начинается_с_уто
чнения_и_определения_структурных_компонентов_и_связей_между_ними.
Выделяют_следующие_исполняемые_модули:
¯ модули,_которые_предназначены_для_ввода,_обработки,_хранения_и_
выдачи_информации,
¯ управляющие_модули,_обеспечивающие_интерфейс_с_пользователем
_и_переход_к_другим_модулям.
¯ модули,_которые_выполняют_дополнительные_функции.
Описание_программных_модулей_информационной_подсистемы_предст
авлено_в_таблице_3.1.
Таблица_3.1_–_Модули_информационной_подсистемы_
№ Наименование_модуля
Функции_модуля_информационной_подсистемы
1 Модуль_пользователя_инф Из_данного_модуля_осуществляется_переход_ко_всем_мод
ормационной_подсистемы_ улям_информационной_подсистемы_автоматизации_проце
сса_краулинга
2 Модуль_получения_инфор Включает_информацию_по_входящим,_внутренним_и_исх
мации_о_документах_орга одящим_страницам.
низации
3 Модуль_парсинга_страниц Содержит_вводные_начальные_ссылки,_которые_необходи
мо_парсить._
4 Модуль_анализа_контента_ Включает_функции_анализа_контента_сайта_по_полученн
сайта
ым_просканированным_данным.
5 Модуль_работы_с_отчетам Предназначение_модуля_состоит_в_создании_отчета_по_о
и_по_обработке_данных
бработке_входящих,_внутренних_и_исходящих_данным._
40
3.3_Технологическое_обеспечение_задачи
Технологическое_обеспечение_задачи_включает_сбор_и_регистрацию_и
нформации,_передачу,_обработку,_хранение,_поиск,_анализ_и_подготовку_пр
инятия_решения.
Схема_работы_системы_отображает_управление_операциями_и_потокам
и_данных_в_системе._Схема_работы_системы_состоит_из_следующих_симво
лов:
¯ символов_данных,_указывающих_на_наличие_данных;
¯ символов_процесса,_указывающих_операции,_которые_следует_выпо
лнить_над_данными,_а_также_определяющий_логический_путь,_которого_сле
дует_придерживаться;
¯ линейных_символов,_указывающих_потоки_данных_между_процесса
ми_или_носителя_данных,_а_также_поток_управления_между_процессами;
¯ специальных_символов,_используемых_для_облегчения_написания_и_
чтения_блок-схемы_[14].
Для_начала_сканирования_сайта_на_технические_ошибки_необходимо_
выбрать_в_меню_«Новый»_и_заполнить_поле_основным_доменом_и_добавит
ь_несколько_внутренних_страниц_сайта,_для_более_корректного_краулинга_с
айта._Если_данные_введены_корректно,_то_происходит_краулинг_сайта_по_в
сем_ссылкам,_которые_находятся_на_страницах_сайта,_иначе_могут_возникн
уть_ошибки_при_сканировании._Важно,_что_все_ссылки_необходим_брать_и
сключительного_одного_домена,_чтобы_в_последствии_не_были_просканиров
аны_внешние_ссылки_сайтов.
41
Для_людей_плохо_видящих_и_других_категории_людей_с_ограниченны
ми_возможностями_здоровья_есть_возможность_настройки_отображения_ссы
лок_любым_удобным_цветом._
_
3.4_Описание_контрольного_примера_реализации_подсистемы
После_запуска_информационной_подсистемы_автоматизации_процесса_
краулинга_необходимо_ввести_ссылки_главного_домена_и_внутренних_стран
иц_как_это_представлено_на_рисунке_3.5.
Рисунок_3.5_–_Ввод_главного_домена_и_внутренних_страниц
42
При_вводе_некорректных_или_неполных_данных_в_поля_осуществляет
ся_вызов_информационного_окна_об_ошибке,_представленного_на_рисунке_3
.6.
Рисунок_3.6_–_Неправильный_ввод_данных_домена
После_успешного_запуска_подсистемы_открывается_новое_и_главное_д
иалоговое_окна,_которое_представляет_визуализацию_процесса_краулинга._П
осле_успешного_краулинга_сайта_мы_можем_увидеть_таблицу_с_ссылками,_
размещенными_на_сайте_и_их_мета-тегами._
Главное_окно_подсистемы_автоматизации_процесса_краулинга_предста
влено_на_рисунке_3.7.
43
Рисунок_3.7_–_Главное_окно_информационной_подсистемы
Для_осуществления_открытия_страницы_в_режиме_браузера_необходим
о_нажать_два_раза_на_ссылку,_пример_представлен_на_рисунке_3.8._
44
Рисунок_3.8_–_Окно_открытия_страницы_в_режиме_браузера
Каждая_ссылка_подсвечивает_исходя_того_находиться_ли_она_выбранн
ой_странице_или_нет,_что_позволяет_определить_внутренние_ссылки_страни
цы,_пример_представлен_на_рисунке_3.9.
45
Рисунок_3.9_–_Окно_отображение_связей_между_ссылками
Для_настройки_отображения_ссылок_и_связи_между_ними,_необходим
о_выбрать_«Настройки»_в_главном_меню,_есть_возможность_любой_цвет,_п
одходящий_пользователю,_пример_представлен_на_рисунке_3.10.
Рисунок_3.10_–_Окно_настройки_отображения_ссылок
46
После_введение_правильных_данных_домена_и_ссылок_внутренних_ста
ниц_сайта_запускаем_процесс_краулинга._Робот_обходит_все_страницы,_кото
рые_найдет,_кроме_внешних_ссылок._Выводит_информацию_о_каждой_прос
канированной_странице,_а_именно:_метатеги_Title_и_H1,_номер_ссылки,_код_ответа_сервера._Справа_диаграммы_пок
азывают_наличие_ссылок_с_кодом_ответа_200_имеют_красный_цвет,_404_си
ний,_3хх_зеленый_эта_визуализация_позволяет_пользователю_сразу_обратить
_внимание_на_просканированные_данные_и_проанализировать_процесс_крау
линга,_представлено_на_рисунке_3.11.
Рисунок_3.11_–_Окно_просканированного_сайта_
После_успешного_сканирования_сайта,_можно_добавить_отдельные_сс
ылки_для_повторного_сканирования_(поддомены,_внешние_ссылки,_не_проск
анированные_внутренние_ссылки)._Так_же_во_время_процесса_сканирования
_краулером_можно_приостановить_процесс,_для_этого_необходимо_выбрать_
в_верхней_части_меню_«Пауза»_и_так_же_можно_возобновить_процесс_на_п
рошлом_месте,_представлено_на_рисунке_3.12.
47
Рисунок_3.12_–_Ввод_дополнительный_ссылок
Перед_началом_сканирования_или_при_повторном_сканировании_сайта
_краулером,_есть_возможность_выделение_диапазона_сканирования._Диапазо
н_можно_выбирать_от_и_до_количества_сканируемых_ссылок,_одна_из_особ
енности_от_других_краулеров_–
_это_возможно_выделения_диапазона_по_вложенности,_что_позволяет_видеть
_несколько_вложенностей,_а_не_все_(например,_определенные_группы,_но_н
е_товары,_вложенные_в_них),_представлено_рисунок_3.13.
48
Рисунок_3.13_–_Окно_выделение_диапазона_сканирования
Если_есть_необходимость_просканировать_именно_те_страницы,_котор
ые_необходимы,_то_необходимо_добавить_их_в_файл_формата_CSV_в_один_
столбик,_после_на_окне_добавления_ссылок_на_сайт,_необходимо_нажать_на
_кнопку_«Обзор»_и_выбрать_файл_CSV,_представлено_на_рисунке_3.14.
49
Рисунок_3.14_–_Форма_«Документация_организации»
После_окончания_сканирования_всего_сайта,_есть_функция_оценки_сай
та_по_шкале_от_0_до_100._Оценка_происходит_по_найденным_ошибкам_в_п
роцессе_сканирования_краулером_(например,_открытые_фильтры,_дублирова
ния_метатегов,_количество_страниц_с_ответом_сервера_4хх,_3хх.)._Алгоритм_оценки_
работает_в_соотношении_просканированных_страниц_и_найденных_ошибок._
После_получения_оценки,_есть_возможность_формирования_файла_PDF,_пре
дставлено_на_рисунке_3.15.
50
Рисунок_3.15_–_Результат_поиска_внутреннего_документа
_Таким_образом,_были_протестированы_функциональные_возможности
_информационной_подсистемы_автоматизации_процесса_краулинга_для_деят
ельности_организации_ООО_«Продвижение».
3.5_Расчет_экономической_эффективности
Основными_задачами_разработки_информационной_подсистемы_являли
сь_уменьшение_объема_непроизводительной_работы_по_технической_оптими
зации_сайта,_обеспечение_увеличение_скорости_анализа_контента_сайта_и_с
оздание_отчета,_создаваемых_в_организации,_а_также_осуществление_контро
ля_своевременного_исполнения_аудита_или_поставленных_сроков_задач.
Экономический_эффект_от_внедрения_информационной_подсистемы_м
ожно_оценить_на_основании_прямой_и_косвенной_эффективности._
Прямой_экономический_эффект_–_экономия_материальнотрудовых_ресурсов_и_денежных_средств,_полученная_в_результате_сокращен
ия_расхода_основных_и_вспомогательных_материалов_вследствие_автоматиза
ции_работ._
51
Косвенный_эффект_–
_экономия_средств_в_процессе_производства,_проявляющаяся_в_конечном_р
езультате_хозяйственной_деятельности_предприятия._
Осуществить_оценку_проекта_на_степень_его_реализуемости_–
_это_значит_оценить_социальноэкономический_эффект_проекта_на_той_стадии,_когда_мало_достоверной_ин
формации,_поэтому_и_оценки_должны_быть_интервальными.
Поскольку_в_подсистеме_автоматизации_процесса_краулинга_используе
тся_централизованное_хранение_информации,_то_увеличится_скорость_обраб
отки_информации,_что_приведет_к_росту_производительности_труда_seoоптимизатора._Календарный_планграфик_проектирования_информационной_подсистемы_включает_этапы,_пред
ставленные_в_таблице_3.2.
Таблица_3.2_–_Календарный_план-график_проектирования_подсистемы
Этап
Предпроектные_исследования
Проектирование
Разработка_и_отладка_программного_кода
Тестирование_системы
Внедрение_проекта
Итого:
Длительность
1,5_недели
1,5_недели
1,5_недели
1_неделя
1_неделя
7_недель
Единовременные_затраты_(Зк),_связанные_с_разработкой_и_внедрением
_данной_информационной_подсистемы,_будут_состоять_из_заработной_платы
_разработчика_ПП_(Ззп),_накладных_расходов_(Зн),_капитальных_затрат_(К),
_включающих_затраты_на_приобретение_вычислительной_техники_(Квт),_пр
иобретение_пакетов_прикладных_программ_(Кппп)_и_операционных_систем_
(Кос)._Единовременные_затраты_вычисляются_по_формуле_3.1.
Зк = К + Ззп = Кппп +_Кос + Квт + Ззп ,_
52
(3.1)
Накладные_расходы_(Зн),_связанные_с_проектированием_и_отладкой_и
нформационной_подсистемы,_в_том_числе_стоимость_расходных_материалов
_представлены_в_таблице_3.3.
Таблица_3.3_–_Накладные_расходы
Материалы
Бумага_А4
Картридж_для_принтера
USB-Flash_накопитель
Итого
Потребность,_шт.
1упак.
1_шт.
1_шт.
Стоимость,_руб.
180
1945
275
2400
Дополнительные_затраты_на_покупку_оборудования_не_потребуются,_т
ак_как_все_сотрудники_обеспечены_компьютерами.
Заработная_плата_разработчика_ПО_определяется_по_формуле_3.2.
(3.2)
Ззп = Зср.дн ∙ ,
где_Зср.дн_–
_среднедневная_зарплата_разработчика_ПО,_рассчитанная_на_основе_его_мес
ячного_оклада_и_числа_рабочих_дней_в_месяце;
Т_–_суммарная_длительность_дней_на_разработку_системы.
Так_как_в_неделе_5_рабочих_дней,_то_суммарная_длительность_дней_
на_разработку_равна
Т_=_7_недель_•_5рабочих_дней_=_35_рабочих_дней
Ставка_социального_налога_состоит_из_отчислений_в_Фонд_медицинск
ого_страхования_(5,1%),_отчислений_в_Пенсионный_фонд_(22%),_отчислени
й_в_Страховой_фонд_(2,9%)._Ставка_единого_социального_налога_на_фонд_
оплаты_труда_равна
22%+2,9%+5,1%_=_30%
Приняли_Зср.дн_равной_600_руб._Исходя_из_этого,_сумма_заработной_п
53
латы_с_учетом_ставки_единого_социального_налога_для_разработчика_на_пе
риод_работ_составит
Ззп = Зср ∙
(3.3)
∙ 1,3 = 600 ∙ 35 ∙ 1,3 = 27300_руб.,
Общая_сумма_единовременных_затрат_(Зк)
Зк=2400+27300=_29700_руб.
В_ходе_эксплуатации_подсистемы_будут_возникать_постоянные_затрат
ы,_представленные_в_таблице_3.4.
Таблица_3.4_–_Постоянные_затраты_системы
Постоянные_затраты
Затраты_на_ремонт_оборудования
Затраты_на_электроэнергию
Амортизационные_отчисления
Итого
Стоимость,_руб/год
2917,5
2738,54
3890
9546,04
Ремонт_и_обслуживание_подсистемы_включает_в_себя_администрирова
ние_и_сопровождение_(затраты_на_поддержку,_услуги_по_сопровождению_р
аботы_системы)._Ремонт_и_обслуживание_системы_составит_15%_в_год_от_
стоимости_технического_обеспечения._
Срем =
(3.4)
∙ 0,15,
Основным_сотрудником,_производящий_анализ_и_разработку_стратегии
_продвижения_сайта,_является_seoоптимизатор._Стоимость_оборудования_рабочего_места_seoоптимизатора_можно_оценить_по_остаточной_стоимости_так,_как_указано_в_
таблице_3.5.
Таблица_3.5_–_Стоимость_технического_средства
Оборудование
Системный_блок
2_Монитора
Сумма,_руб
53200
24300
54
Клавиатура,_мышь
Итого
2650
80150
Затраты_на_ремонт_компьютера_делопроизводителя_организации_соста
вляют
Срем=53200·0,15=7980_руб./год
Затраты_на_электроэнергию_можно_рассчитать_по_формуле_3.5.
(3.5)
!эл = Цэ ∙ Фд ∙ &,_
где_Цэ_–_стоимость_1_кВт/ч_электроэнергии;_
Фд_–_действительный_годовой_фонд_времени_работы_ЭВМ_в_часах;
М_–_мощность_ЭВМ_в_кВт/ч_электроэнергии.
Поправочный_коэффициент_для_расчета_действительного_годового_фо
нда_работы_ЭВМ_равен_0,95,_так_как_компьютер_работает_не_полные_8_ча
сов.
Фд_=_237_рабочих_дней_8часов/день_·_0,95_=_1801,2_ч
Сэл_=_3,62·1801,2·0,42_=_2738,54_рублей/год
Согласно_утвержденной_классификации_ОС_по_амортизационным_груп
пам_компьютерная_техника_относится_к_3ей_амортизационной_группе._Срок_эксплуатации_ЭВМ_составляет_35_лет._Норма_начисления_амортизации_на_вычислительную_технику_=_100
%_/_5_лет_=_20%_в_год.
!ам =
(3.6)
∙ 0,20,_
где_P_–_стоимость_ЭВМ.
Сам_=_53200*0,2_=_10640_руб.
Получим:_С_экс_=_7980+2738,54+10640=21358,54_руб.
В_среднем_на_сбор,_фиксацию,_обработку_и_анализ_информации,_а_та
кже_на_ручное_составление_необходимой_отчетности_в_месяц_тратится_672
55
_часа_рабочего_времени,_что_составляет_в_денежном_выражении_65520_руб.
_(21_рабочий_день_*_600_руб._дневная_ставка_*_1,30_ставка_единого_социа
льного_налога_*_4_человека).[20]
Затраты_до_внедрения_информационной_подсистемы_составляют_65520
_руб._в_месяц.
Прямые_затраты_после_внедрения_подсистемы_составят_168_часов_(21
_рабочий_день*8_часов),_что_в_денежном_выражении_равно_16380_руб._(21
_рабочий_день_*_600_руб._дневная_ставка*1,3_ставка_социального_налога)._
В_среднем_прямая_экономия_на_заработной_плате_и_обязательных_отчислен
ий_с_фонда_оплаты_труда_составит_49140_рублей_в_месяц_(65520_руб._–
_16380_руб.),_что_в_годовом_выражении_примерно_равно_589680_руб._(4914
0_руб._*_12_месяцев).
Поскольку_в_первом_году_6_месяцев_выпадает,_так_как_именно_в_это
_время_велась_работа_по_разработке_и_внедрению_подсистемы,_то_сумма_с
оставит_
589680/12*8_=393120_руб.
Расчет_экономического_эффекта_произведен_на_основании_чистого_ди
сконтированного_дохода_(ЧДД),_определенного_как_сумма_текущих_эффекто
в_за_весь_расчетный_период,_приведенная_к_начальному_шагу.
Под_дисконтированием_понимается_способ_приведения_будущей_стои
мости_инвестируемых_средств_к_их_текущей_стоимости.
Дисконтная_ставка_–
_процентная_ставка,_по_которой_осуществляется_приведение_будущей_стоим
ости_инвестируемых_средств_к_их_текущей_стоимости._Норма_дисконта_опр
еделяется_по_формуле_3.7.
(3.7)
н *_в
,
( = Е+,в
56
где_(_–
_норма_дисконта,_равная_приемлемой_для_инвестора_норме_дохода_на_капи
тал;_
Ен__–_ставка_рефинансирования,_устанавливаемая_Центробанком_РФ;
в_–_прогнозируемый_уровень_инфляции.
С_27_марта_2017_года_ставка_рефинансирования_составляет_9,75_проц
ентов_годовых_(информация_Банка_России_от_24_марта_2017_г.)._Согласно_
прогнозам_Министерства_экономического_развития,_уровень_инфляции_в_Ро
ссии_будет_составлять_7_%,_то_норма_дисконта
α =_(0,_0975-0,07)/1,07=0,026_
Инвестиции_представляют_собой_вложения_капитала_в_различные_объ
екты_предпринимательской_деятельности_с_целью_получения_прибыли,_а_та
кже_сохранения_и_увеличения_капитала._Чистый_дисконтированный_доход_
определяется_как_сумма_текущих_эффектов_за_весь_расчётный_период_и_вы
числяется_по_формуле_3.8._[23]
ЧДД = ∑6178(Д1 −
1
(3.8)
+
)∙_(+,4)
5 _,
где_Д1 _–_доходы_t-го_периода;
1
_–_расходы_t-го_периода;
(_–
_норма_дисконта,_равная_приемлемой_для_инвестора_норме_дохода_на_капи
тал;
t_–_годы.
Индекс_доходности_вычисляется_по_формуле_3.9.
ИД =
+
(+,4)5
+
5
∑<
5:+ ; ∙(+,4)5
∑55:+ Д5 ∙
_,
(3.9)
Дисконтный_множитель_вычисляется_по_формуле_3.10.
57
ДМ =
8
(8>?)5
_,
(3.10)
Экономические_показатели_информационной_подсистемы_представлен
ы_в_таблице_3.6.
Таблица_3.6_–
_Экономические_показатели_разработанной_информационной_подсистемы
_
Инвестиции
Экономия
Расходы
Дисконтный_мно
житель
Текущий_эффект
Дисконтированный_эффект
ЧДД
0_год
29700
1_год
294840
9546,04
Периоды
2_год
3_год
589680
9546,04
4_год
5_год
589681
9546,04
589682
9546,04
589683
9546,04
1
-29700
0,99122
0,98253
383573,96 580133,96
0,9739
580134,96
0,96536
580135,96
0,95688
580136,96
-29700
380206,18 569999,02
564993,44
560040,05
555121,45
-29700
350506,18 920505,20
1485498,64 2045538,69
2600660,14
Индекс_доходности_строится_из_тех_же_элементов,_что_и_чистый_дис
контированный_доход._Индекс_доходности_больше_единицы,_так_как_чисты
й_дисконтированный_доход_положителен._На_рисунке_3.34_приведен_графи
к,_показывающий_величину_ЧДД_нарастающим_итогом_за_5_лет_использова
ния_информационной_подсистемы._[23]
58
Чистый дисконтированный доход
3000000
Величина ЧДД
2500000
2000000
1500000
1000000
500000
0
1
2
3
-500000
4
5
6
года
Рисунок_3.16_–_График_срока_окупаемости_подсистемы
Подсистема_окупится_уже_в_первый_год_после_ее_внедрения._Эконом
ия_от_внедрения_информационной_подсистемы_во_много_раз_превышает_ра
сходы,_поэтому_чистый_и_дисконтированный_эффекты_видны_уже_в_течени
е_первого_года_эксплуатации._Представленный_расчет_можно_считать_прибл
изительным.
Вывод_по_третьему_разделу
Была_описана_созданная_информационная_подсистема_автоматизации_
процесса_краулинга,_ее_структура_и_работа._Представлена_модель_«Как_дол
жно_быть»_по_усовершенствованию_процессов_технической_оптимизации_са
йтов,_выявлены_основные_и_служебные_функции_подсистемы,_предоставлен
а_схема_работы_программы,_наглядно_предоставлены_и_протестированы_рез
ультаты_работы_информационной_подсистемы_автоматизации_процесса_крау
линга,_а_также_рассчитана_экономическая_эффективность_подсистемы_для_
ООО_«Продвижение».
59
ЗАКЛЮЧЕНИЕ
Для_достижения_поставленной_цели_выпускной_квалификационной_ра
боты_было_определено_техникоэкономическое_состояние_предприятия_и_проанализирована_деятельность_se
oоптимизатора,_выявлены_проблемы_и_недостатки_автоматизации_техническо
й_оптимизации_сайта,_определена_цель_и_назначение_автоматизированного_
варианта_решения_задачи,_проведен_анализ_существующих_разработок_и_об
основание_выбора_технологии_проектирования_информационной_подсистемы
.
Проведено_обоснование_проектных_решений_по_техническому,_инфор
мационному,_программному,_технологическому_обеспечению,_а_также_выбр
аны_программные_средства._В_процессе_проектирования_была_обоснована_н
еобходимость_создания_информационной_подсистемы_автоматизирующую_п
роцесс_краулинга_и_сформулированы_требования_к_ней.
Была_описана_созданная_информационная_подсистема,_ее_структура_и
_функциональные_возможности._Были_наглядно_представлены_результаты_р
аботы_информационной_подсистемы_автоматизации_процесса_краулинга._По
сле_чего,_была_рассчитана_экономическая_эффективность_подсистемы_для_
ООО_«Продвижение».
Результатом_выпускной_квалификационной_работы_стала_информацио
нная_подсистема_автоматизации_процесса_краулинга_для_анализа_контента_
сайта.
Информационная_подсистема_автоматизации_процесса_краулинга_удов
летворяет_установленным_требованиям_организации_и_планируется_к_внедр
ению_во_внутренние_процессы_технической_оптимизации_сайта_специалисто
м_по_поисковому_продвижению.
60
Цель_выпускной_квалификационной_работы_достигнута_в_полном_объ
еме.
Поставленные_задачи_выпускной_квалификационной_работы_были_усп
ешно_решены:
¯ проведено_исследование_деятельности_организации_по_технической_
автоматизации_сайта;
¯ определен_путь_решения_проблем_и_недостатков_в_работе_seoоптимизатора_организации;
¯ спроектирована_информационная_подсистема;
¯ реализована_информационная_подсистема;
¯ протестирована_информационная_подсистема_автоматизации_процесс
а_краулинга_для_анализа_контента_сайта.
Это_позволило_решить_ряд_проблем_в_деятельности_специалиста_по_п
оисковому_продвижению:
¯
ускорение_в_анализе_технической_оптимизации_сайта;
¯
выделение_диапазона_по_вложенностям_сайта;
¯
составления_аккаунтменеджеру_оценки_о_состоянии_технической_части_сайта;
¯
составление_отчета_о_дублирующийся_страниц_сайта._
61
СПИСОК_ИСПОЛЬЗОВАННЫХ_ИСТОЧНИКОВ
1.
Ашманов,_И.С._Оптимизация_и_продвижение_сайта_в_поисковых
_системах_/_А.С._Иванов._–_Санкт-Петербург.:_Питер
2.
,_2013.–_464_с.
Баскакова,_О._В._Экономика_предприятия_(организации)_/_О.В._
Баскакова,_О.В._Сейко._–_М.:_Издательскоторговая_корпорация_«Дашков_и_К»,_2013.–_372_с.
3.
Неелова,_Н.В._SEMBOOK._Энциклопедия_поискового_продвижен
ия_/_Е.С._Кондюкова._–_Екатеринбург.:_ГОУ_ВПО_УГТУ-УПИ,_2006.–
_116_с.
4.
ГОСТ_Р._15489-1-
2007_Система_стандартов_по_информатизации,_библиотечному_и_издательск
ому_делу._Управление_документами._Общие_требования._–
_M.:_Стандартинформ,_2007.–_34_с.
5.
Ясенев,_В.Н._Автоматизированные_информационные_системы_в_
экономике:_учебнометодическое_пособие_[Электронный_ресурс]_/_В.Н._Ясенев._–
_Н._Новгород,_2007.–
_Режим_доступа:_http://www.iee.unn.ru/files/2014/09/Kniga-slajdy.pdf.
6.
ГОСТ_2.601-
2013_Единая_система_конструкторской_документации._Эксплуатационные_до
кументы._–_M.:_Стандартинформ,_2014.–_36_с.
7.
Гвоздева,_В.А._Основы_построения_автоматизированных_информ
ационных_систем/_В.А._Гвоздеева,_И.Ю._Лаврентьева._–
_М.:_ИД_«Форум»:_ИНФРА-М,_2009.–_320_с._
8.
Морозевич,_А.Н._Основы_информатики_/_А.Н._Морозевич,_Н.Н._
Говядинова._–_Мн:_Новое_знание,_2003.–_543_с.
62
9.
Моисеенко,_Е.В._Информационные_технологии_в_экономике_[Эл
ектронный_ресурс]_/_Е.В._Моисеенко,_Е.Г._Лаврушина._–
_Владивосток:_Издательство_ВГУЭС,_2004.–
_Режим_доступа:_www.vvsu.ru/files/579B03E9-4BE4-4A07-98F4E386FCEA1E8B.pdf.
10.
ГОСТ_34._003-
90_Информационная_технология_(ИС)._Комплекс_стандартов_на_автоматизир
ованные_системы._Автоматизированные_системы._Термины_и_определения._
–_М.:_Стандартинформ,_2009.–_26_с.
11.
ГОСТ_19.701-
90_ЕСПД._Схемы_алгоритмов,_программ,_данных_и_систем._Условные_обоз
начения_и_правила_выполнения._–_М.:_Стандартинформ,_2010.–_21_с.
12.
ГОСТ_7.32-2001_Отчет_о_научно-
исследовательской_работе._Структура_и_правила_оформления._–
_М.:_Стандарт,_2002.–_27_с.
13.
ГОСТ_7.1-
2003_Библиографическая_запись._Библиографическое_описание._Общие_треб
ования_и_правила_составления._–_М.:ИПК_Издательство_стандартов,_2004.–
_57_с.
14.
ГОСТ_19.102-77_ЕСПД_Стадии_разработки._–
_М.:Стандартинформ,_2010.–_3_с.
15.
Рогожин,_М.Ю._Документационное_обеспечение_управления:_уче
бно-практическое_пособие/М.Ю._Рогожин._–_Тк_Велби,_Издво_Проспект,_2008.–_384_с.
16.
Таненбаум,_Э._Современные_операционные_системы_[Электронн
ый_ресурс]_/_Э._Таненбаум,_Х._Бос._–_СПб.:_Питер,_2015.–
_Режим_доступа:_http://math.kubsu.ru/Debian_Tanenbaum.pdf.
17.
Гахов,_Р.П._Методы_и_средства_проектирования_информационны
х_систем_и_технологий:_учебно63
методический_комплекс_[Электронный_ресурс]_/_Р.П._Гахов,_2013._Режим_д
оступа:http://pegas.bsu.edu.ru/course/view.php?id=5906.
18.
Пшенко,_А.В._Документационное_обеспечение_управления_/_А.В.
_Пшенко,_Л.А._Доронина._–_М.:_Издательский_центр_«Академия»,_2014.–
_224_с._
19.
Хоменко,_А.Д._Работа_с_базами_данных_в_JavaFX/_А.Д._Хоменк
о,_С.Е._Ададуров._–_СПб.:_БХВ-Петербург,_2006.–_496_с.
20.
Могилев,_А.В._Информатика:_учебное_пособие_/А.В._Могилев,_Н
.И._Пак,_А.В._Хеннер._–_М.:_Издательский_центр_«Академия»,_2004.–
_843_с.
21.
Маторин,_С.И._Теория_систем_и_системный_анализ_/_C.И._Мато
рин,_О.А._Зимовец._–_Белгород:_Изд-во_НИУ_«БелГУ»,_2012.–_288_с.
22.
Файзрахманов,_Р.А._Проектирование_автоматизированных_инфор
мационных_систем_на_основе_объектноориентированного_подхода:_учебное_пособие_[Электронный_ресурс]_/_Р.А._
Файзрахманов,_А.В._Архипов._–_Пермь:_Изд-ва_Перм._гос._техн._Унта,_2011.–_Режим_доступа:_http://elib.pstu.ru/docview/?id=2719.pdf.
23.
Брябин,_В.М._Программное_обеспечение_персональных_ЭВМ_/_В
.М._Брябин._–_М.:_Наука,_1989.–_272с.
24.
Лопатникова,_Е.А._Делопроизводство:_образцы_документов_с_ко
мментариями_/Е.А._Лопатникова._–_М.:Омега-Л,_2008.–_319_c.
25.
Михелев,_В.М._База_данных_и_СУБД:_учебное_пособие_/_В.М._
Михелев._–_Белгород:_Изд-во_БелГУ,_2007.–_200с.
26.
_Полякова,_Л.Н._Основы_Java:_Курс_лекций:_учебное_пособие_/_
Л.Н._Полякова._–_М.:_ИНТУИТ.РУ,_2004.–_368_с.
27.
Смирнова,_Е.П._Делопроизводство_для_секретаря/_Е.П._Смирнова
,_Ю.А._Петрова._–_Саратов:_Корпорация_«Диполь»,_2012.–_165с.
28.
Соколов,_В.С._Документационное_обеспечение_управления_/_В.С.
_Соколов_–_М.:_ФОРУМ_–_ИНФРА-М,_2005.–_233с.
64
29.
_Коберн,_А._Быстрая_разработка_программного_обеспечения_/_А.
_Коберн._–_М.:_Лори,_2013.–_336_с.
30.
_Федоренко,_Ю.П._Алгоритмы_и_программы_на_Java_/_Ю._П._Ф
едоренко._–_М.:_ДМК_Пресс,_2010.–_544с.
ПРИЛОЖЕНИЕ_А
Контекстная_диаграмма_seo-оптимизации_сайта_А.1
U SED AT:
AU TH OR : N ikit a Pichugin
D ATE: 2 8. 05.2018
W OR KIN G
PR OJ ECT:
R EV:
D RAF T
N ikit a Pichugin
0 5. 06.2018
R EADER
D ATE C ON TEXT:
TOP
R ECO MMEND ED
N OTES: 1 2 3 4 5 6 7 8 9 10
PU BLI CATIO N
Договор
на
услуги
Актуальные
методики
оптимизации
Чек-листы
Текст
задания
Оптимизированный
сайт
SEO-оптимизация коммерческого сайта
0 ?
Страший
SEO-специалист
0
Система
управления
проектами
Младший
SEO-специалист
N OD E:
TITLE:
SEO-оптимизация коммерческого сайта
N UMBER:
A-0
Рисунок_А.1_–_Контекстная_диаграмма_seoоптимизации_коммерческого_сайта
65
Декомпозиция_процесса_seoоптимизации_коммерческого_сайта_представлена_на_рисунке_А.2.
U SED AT:
AU TH OR : N ikit a Pichugin
D ATE: 28. 05.2018
W OR KIN G
PR OJ ECT:
R EV:
D RAF T
N ikit a Pichugin
05. 06.2018
R EADER
D ATE C ON TEXT:
R ECOMMEND ED
PU BLI CATION
N OTES: 1 2 3 4 5 6 7 8 9 10
Договор на
услуги
А ктуальные методики
оптимизации
Текст
задания
A-0
Чек-лис ты
Технический
оптимзированный
с айт
Поставленные
задачи
Сбор схематического ядра
0 ?
5
Запу ск проекта
0 ?
1
Техническая оптимизация
Базово
опмитимизированный
сайт
0 ?
3
Технически и
семантически
проработанный
сайт
Базовая оптимизация
0 ?
А нализ конкуренции
2
0 ?
4
Страш ий
SEO-специалист
Система
управления
проектами
N OD E:
TITLE:
Оптимизированный
с айт
Младший
S EO-с пециалист
SEO-оптимизация коммерческого сайта
N UMBER:
A0
Рисунок_А.2_–_Декомпозиция_контекстной_диаграммы
Декомпозиция_процесса_«Техническая_оптимизация»_представлена_на_рисун
ке_А.3.
66
D RAFT
R ECOMMEND ED
N OTES: 1 2 3 4 5 6 7 8 9 10
PU BLICATION
A0
Чек-листы
Базово
опмитимизированный
сайт
Сайт с
оптимизированными
внешними ссылками
Анализ и закрыт ие в нешних ссылок
0?
1
Актуальные
методики
оптимизации
Краулинг сайта
0?
2
Просканированный
сайт
Сайт с
закрытыми
дублями
Технический
оптимзированный
сайт
Закрытие дублей страниц
0?
Удаление 404 ссылок
Младший
SEO-специалист
Страший
SEO-специалист
N OD E:
3
0?
4
Система
управления
проектами
TITLE:
Техническая оптимизация
N UMBER:
A3
Рисунок_А.3_–_Декомпозиция_процесса_«Техническая_оптимизация»
67
ПРИЛОЖЕНИЯ_Б
package_wsa.gui;
import_javafx.application.Platform;
import_javafx.beans.InvalidationListener;
import_javafx.beans.Observable;
import_javafx.beans.property.SimpleObjectProperty;
import_javafx.collections.FXCollections;
import_javafx.collections.ObservableList;
import_javafx.collections.ObservableMap;
import_javafx.concurrent.Worker;
import_javafx.fxml.FXML;
import_javafx.fxml.FXMLLoader;
import_javafx.geometry.Insets;
import_javafx.scene.Scene;
import_javafx.scene.chart.PieChart;
import_javafx.scene.control.*;
import_javafx.scene.layout.Background;
import_javafx.scene.layout.BackgroundFill;
import_javafx.scene.layout.CornerRadii;
import_javafx.scene.paint.Color;
import_javafx.scene.text.TextAlignment;
import_javafx.scene.web.WebView;
import_javafx.stage.Modality;
import_javafx.stage.Stage;
import_wsa.API.Wrap;
import_wsa.Settings;
import_wsa.exceptions.EventFrame;
import_wsa.session.*;
import_java.io.IOException;
import_java.net.URI;
import_java.nio.file.Path;
import_java.util.List;
public_class_TabFrame_extends_Tab_{
____private_Dominio_dom;
____private_Path_path;
____private_GestoreDownload_gd;
____private_DataGate_dg_=_null;
____private_Scene_rootScene;
____private_boolean_pausedByUser_=_false;
____private_boolean_paused_=_false;
____private_TableView<Wrap<String,_Integer>>_entersTable_=_new_TableView<>();
____private_TableView<Wrap<String,_Integer>>_exitTable_=_new_TableView<>();
68
____private_TableColumn<Wrap<String,_Integer>,_String>_classEnters_=_new_TableColumn<>("n°_ссылк
и");
____private_TableColumn<Wrap<String,_Integer>,_Integer>_valueEnters_=_new_TableColumn<>("страни
цы");
____private_TableColumn<Wrap<String,_Integer>,_String>_classExit_=_new_TableColumn<>("n°_ссылки"
);
____private_TableColumn<Wrap<String,_Integer>,_Integer>_valueExit_=_new_TableColumn<>("страницы
");
____Stage_entST_=_new_Stage();
____Stage_exitST_=_new_Stage();
____{
________entST.setTitle("Входящие_ссылки");
________exitST.setTitle("Исходящие_ссылки");
________entersTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
________exitTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
________classEnters.setCellValueFactory(param_->_param.getValue().key);
________valueEnters.setCellValueFactory(param_->_param.getValue().val);
________classExit.setCellValueFactory(param_->_param.getValue().key);
________valueExit.setCellValueFactory(param_->_param.getValue().val);
________entersTable.getColumns().add(classEnters);
________entersTable.getColumns().add(valueEnters);
________exitTable.getColumns().add(classExit);
________exitTable.getColumns().add(valueExit);
________entST.setScene(new_Scene(entersTable));
________exitST.setScene(new_Scene(exitTable));
____}
____private_ObservableList<Wrap<String,_Integer>>_entersWrapList_=_FXCollections.observableArrayList
();
____private_ObservableList<Wrap<String,_Integer>>_exitWrapList_=_FXCollections.observableArrayList();
____private_ContextMenu_contestuale_=_new_ContextMenu();
____{
________try{
____________FXMLLoader_loader_=_new_FXMLLoader(getClass().getResource("./tabFrame.fxml"));
____________loader.setController(this);
____________rootScene_=_new_Scene(loader.load());
____________this.setContent(rootScene.getRoot());
________}catch_(Exception_ex){
____________ex.printStackTrace();
____________new_EventFrame(ex,_Platform::exit);_
________}
____}
____public_TabFrame(Dominio_dominio,_List<Seed>_s,_Path_p,_Integer_m,_boolean_run){
69
________this.dom_=_dominio;___//_Il_dominio_di_visita
________this.path_=_p;__//_Il_path_di_visita
________this.setText("Preparazione_visita_in_corso");
________Thread_t_=_new_Thread(()_->_{
____________try_{
________________this.gd_=_new_GestoreDownload(dominio,_s,_path,_m,_this);__//_Inizializza_gestore.
____________}_catch_(Exception_e)_{
________________Platform.runLater(()->_new_EventFrame(e,_null));
________________Platform.runLater(()->_this.setText("Неудачный_визит"));
________________return;
________________//TODO_notify_the_users_about_IOExceptions.
____________}
____________if(dominio_==_null)_this.dom_=_Dominio.getDomainSneaky(gd.getDomain().toString());
____________Platform.runLater(()_->_this.setText(dom_!=_null_?_dom.toString()_:_"Неизвестно"));
____________this.tableData.setItems(gd.getDataStruct().getDataList());__
____________tableData.getItems().addListener((InvalidationListener)_observable_->_{
________________long_visitati_=_tableData.getItems().stream().filter(page_>_page.getExc()_==_null).count();
________________long_errori_=_tableData.getItems().stream().filter(page_>_page.getExc()_!=_null).count();
________________long_indom_=_tableData.getItems().stream().filter(Page::getPageLink).count();
________________Platform.runLater(()_->_{
____________________labelVisitati.setText(String.valueOf(visitati));
____________________labelErrori.setText(String.valueOf(errori));
____________________labelDominio.setText(String.valueOf(indom));
________________});
________________if_(gd.getPageWithMaxPointers().get()_!=_null_&&_dominio_==_null)_{____________
_______________________________//in_caso_di_recupero_visita
____________________Platform.runLater(()_->_{
________________________labelMaxPointers.setText(gd.getPageWithMaxPointers().getValue().ptrNumbe
rs().toString());
________________________Tooltip_tt_=_new_Tooltip(gd.getPageWithMaxPointers().getValue().getURI().t
oString());
________________________labelMaxPointers.setTooltip(tt);
____________________});
________________}
____________});
____________gd.getPageWithMaxLinks().addListener(observable_->_{
________________labelMaxLinks.setText(gd.getPageWithMaxLinks().getValue().linksNumber().toString());
________________Tooltip_tt_=_new_Tooltip(gd.getPageWithMaxLinks().getValue().getURI().toString());
________________labelMaxLinks.setTooltip(tt);
____________});
____________gd.getPageWithMaxPointers().addListener(observable_->_{
70
________________labelMaxPointers.setText(gd.getPageWithMaxPointers().getValue().ptrNumbers().toStri
ng());
________________Tooltip_tt_=_new_Tooltip(gd.getPageWithMaxPointers().getValue().getURI().toString())
;
________________labelMaxPointers.setTooltip(tt);
____________});
__
____________this.pieEntranti.setData(gd.getEntrantiPieData());
____________this.pieUscenti.setData(gd.getUscentiPieData());
____________this.entersTable.setItems(entersWrapList);
____________this.exitTable.setItems(exitWrapList);
____________gd.getEntrantiPieData().addListener((InvalidationListener)_observable_->_{
________________entersWrapList.clear();
________________if_(gd_!=_null)
____________________gd.getEntrantiPieData().forEach(data_>_entersWrapList.add(new_Wrap<>(data.getName(),_(int)_data.getPieValue())));
____________});
____________gd.getUscentiPieData().addListener((InvalidationListener)_observable_->_{
________________exitWrapList.clear();
________________if_(gd_!=_null)
____________________gd.getUscentiPieData().forEach(data_>_exitWrapList.add(new_Wrap<>(data.getName(),_(int)_data.getPieValue())));
____________});
____________if_(run)_this.run();_/*_Avvia_la_visita_se_true_*/
________});
________t.start();
____
________this.setOnCloseRequest(e_->_{
____________MainFrame.getMainFrame().getTabs().remove(this);
____________new_EventFrame(e,_Alert.AlertType.WARNING,
____________________ButtonType.CANCEL,
____________________this::dispose,_()->_MainFrame.getMainFrame().getTabs().add(this));
________});
____}
____GestoreDownload_getWorker(){return_this.gd;}
____public__Worker.State_getStato(){
________return_gd.getStato();
____}
____private_void_cancel(){
________if_(gd_==_null)_return;
________if_(gd.getStato()_!=_null_&&_gd.getStato()_==_Worker.State.CANCELLED)_return;
________gd.cancel();
________Platform.runLater(()_->{
71
____________pausa.setDisable(true);
____________cancella.setDisable(true);
________});
____}
____public_boolean_isPaused(){
________if_(!paused_&&_!pausedByUser)_return_false;
________return_true;
____}
____public_void_pause(){
________if_(gd_==_null)_return;
________if_(gd.getStato()_!=_null_&&_gd.getStato()_==_Worker.State.CANCELLED)_return;
________gd.pause();
________paused_=_true;
________Platform.runLater(()->_{
____________pausa.setText("Avvia");
____________if(gd.getStato()_==_Worker.State.SUCCEEDED_&&_!pausedByUser){
________________pausa.setDisable(true);}
________});
____}
____public_void_start()_{
________if_(gd_==_null_||_gd.getStato()_==_Worker.State.CANCELLED)_return;
________if(gd.getStato()_==_Worker.State.SUCCEEDED_&&_!pausedByUser)__return;
________gd.start();
________paused_=_false;
________pausedByUser_=_false;
________pausa.setText("Pausa");
________pausa.setDisable(false);
____}
____public_void_enablebuttons(){
________if(gd_==_null_||_gd.getStato()_==_Worker.State.CANCELLED)_return;
________System.out.println("heyyyyyyy");
________gd.start();
________pausa.setText("пауза");
________pausa.setDisable(true);
____}
____public_Dominio_getDom(){
________return_this.dom;
____}
____void_dispose(){
________try_{
____________gd.cancel();
________}
________catch_(Exception_e){return;}
________dom_=_null;
________gd_=_null;
72
____}
____private_void_run(){
________System.out.println(gd.getStato());
________if_(gd.getStato()_!=_Worker.State.READY)_return;
________//TODO_unire_il_metodo_con_start()
________Thread_laucher_=_ThreadUtilities.CreateThread(()_->_this.gd.start());
________laucher.setDaemon(true);
________laucher.setName("Посмотреть_профиль");
________laucher.start();
________System.out.println("Запущенный_профиль");
____}
____public_void_addSeed(Seed_seed){
________this.gd.addSeed(seed);
____}
____public_ObservableList<Page>_getData(){
________return_FXCollections.unmodifiableObservableList(gd.getDataList());
____}
____public_ObservableMap<URI,_Page>_getDatamap(){
________return_FXCollections.unmodifiableObservableMap(gd.getResults());
____}
____private_void_loadInNewWindow(String_url){
________WebView_ww_=_new_WebView();
________Stage_stg_=_new_Stage();
________stg.setTitle(url);
________stg.setScene(new_Scene(ww));
________ww.getEngine().load(url);
________stg.show();
____}
____private_enum_links_{puntati,_puntanti}__
____private_void_showSelectedInNewWindow(links_tipo){
________Page_selectedElement_=_tableData.getSelectionModel().getSelectedItem();_//_Pagina_seleziona
ta.
________TableView<URI>_tabella_=_new_TableView<>();
________tabella.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
________TableColumn<URI,_String>_uriCol_=_new_TableColumn<>("URI");
________uriCol.setCellValueFactory(param_>_new_SimpleObjectProperty<>(param.getValue().toString()));
________TableColumn<URI,_Boolean>_uriStat_=_new_TableColumn<>("Загружено");
________tabella.getColumns().add(uriCol);
________tabella.getColumns().add(uriStat);
________ObservableList<URI>_data_=_FXCollections.observableArrayList();
_____
73
________if_(tipo_==_links.puntanti)_{
____________data.addAll(selectedElement.getPtr());
____________uriStat.setCellValueFactory(param_->
____________________new_SimpleObjectProperty<>(selectedElement.getPtr().contains(param.getValue()
))
____________);
____________selectedElement.getPtrMap().addListener((InvalidationListener)_observable_->_{
________________data.clear();
________________data.addAll(selectedElement.getPtr());
____________});
________}else{
____________data.addAll(selectedElement.getPtd());
____________uriStat.setCellValueFactory(param_->
____________________new_SimpleObjectProperty<>(selectedElement.getPtd().contains(param.getValue(
)))
____________);
____________selectedElement.getPtdMap().addListener((InvalidationListener)_observable_->_{
________________uriCol.setVisible(false);
________________uriCol.setVisible(true);
____________});
________}
________tabella.setItems(data);
________Stage_st_=_new_Stage();
________st.setScene(new_Scene(tabella));
________st.initModality(Modality.APPLICATION_MODAL);
________st.setTitle((tipo_==_links.puntanti?_"Я_точно"_:_"правильно_сделал_")_+_tabella.getItems().si
ze());
________st.show();
____}
____@Override
____public_String_toString(){
________return_this.dom.getURI().toString();
____}
____private_@FXML___PieChart________pieEntranti;
____{
________pieEntranti.setLegendVisible(false);
________pieEntranti.setLabelsVisible(false);
________pieEntranti.setAnimated(false);
________pieEntranti.setOnMouseClicked(e_->_{
____________if_(e.getClickCount()_==_2){
________________entST.show();
____________}
74
________});
____}
____private_@FXML___PieChart________pieUscenti;
____{
________pieUscenti.setLegendVisible(false);
________pieUscenti.setLabelsVisible(false);
________pieUscenti.setAnimated(false);
________pieUscenti.setOnMouseClicked(e_->_{
____________if_(e.getClickCount()_==_2){
________________exitST.show();
____________}
________});
____}
____private_@FXML___ToolBar_________toolbarTab;
____private_@FXML___TableView<Page>_tableData;
____private_@FXML_TableColumn<Page,_URI>_domColumn;
____private_@FXML_TableColumn<Page,_Boolean>_followColumn;
____private_@FXML_TableColumn<Page,_String>_statusColumn;
____private_@FXML_TableColumn<Page,_Integer>_linksNumColumn;
____{
________domColumn.setCellValueFactory(param_>_new_SimpleObjectProperty<>(param.getValue().getURI()));
________followColumn.setCellValueFactory(param_>_new_SimpleObjectProperty<>(param.getValue().getPageLink()));
________statusColumn.setCellValueFactory(param_>_new_SimpleObjectProperty<>(param.getValue().getExc()==_null_?_""_:_param.getValue().getExc().getM
essage()));
________linksNumColumn.setCellValueFactory(param_>_new_SimpleObjectProperty<>(param.getValue().linksNumber()));
________//_Menu_contestuale.
________MenuItem_info_=_new_MenuItem("Информация");
________info.setOnAction(e_->_{
____________if_(tableData.getSelectionModel().getSelectedItem()_!=_null)
________________new_InfoFrame(tableData.getSelectionModel().getSelectedItem()).show();
________});
________MenuItem_getPuntanti_=_new_MenuItem("Цель_этой_страницы.");
________getPuntanti.setOnAction(event_->_showSelectedInNewWindow(links.puntanti));
________MenuItem_getPuntati_=_new_MenuItem("Укажите_на_эту_страницу.");
________getPuntati.setOnAction(event_->_showSelectedInNewWindow(links.puntati));
________contestuale.getItems().addAll(info,_getPuntanti,_getPuntati);
________tableData.setContextMenu(contestuale);
________tableData.setOnMouseClicked(e_->{
____________Page_pagina_=_tableData.getSelectionModel().getSelectedItem();
75
____________if_(e.getClickCount()_==_2_&&_pagina_!=_null){
________________if_(pagina.getExc()_!=_null){
____________________new_EventFrame(e,
____________________________Alert.AlertType.WARNING,
____________________________"Страница_была_загружен_с_ошибками.\n"_+
____________________________________"Открыть_все-равно?",
____________________________ButtonType.CANCEL,
____________________________()_>_loadInNewWindow(tableData.getSelectionModel().getSelectedItem().getURI().toString())
____________________);
________________}else_if_(pagina.linksNumber()_==_0_&&_pagina.getPageLink()){
____________________new_EventFrame(e,
____________________________Alert.AlertType.WARNING,
____________________________"На_странице_0_ссылок.\n"_+
____________________________________"Обычно_это_означает_файл_\n"_+
____________________________________"мультимедиа.\n"_+
____________________________________"Открыть_все-равно?",
____________________________ButtonType.CANCEL,
____________________________()_>_loadInNewWindow(tableData.getSelectionModel().getSelectedItem().getURI().toString())
____________________);
________________}else{
____________________loadInNewWindow(tableData.getSelectionModel().getSelectedItem().getURI().toSt
ring());
________________}
____________}
________});
____}
____private_@FXML___Label___________labelVisitati;
____private_@FXML___Label___________labelErrori;
____private_@FXML___Label___________labelDominio;
____private_@FXML___Label___________labelMaxLinks;
____private_@FXML___Label___________labelMaxPointers;
____private_MenuItem_pausa;
____private_MenuItem_cancella;
____private_@FXML___MenuButton______menuButtonAzioni;
____{
________aggiungiSeed.setOnAction(e_->_new_VisitFrame(this).show());
________pausa_=_new_MenuItem("Пауза");
________pausa.setOnAction(e_->_{
____________if_(gd.getStato()_==_Worker.State.CANCELLED)_return;
____________if_(!paused){
________________System.out.println("Пауза");
76
________________pausedByUser_=_true;
________________pause();
____________}else{
________________System.out.println("Продолжить");
________________start();
____________}
________});
________cancella_=_new_MenuItem("Четкое_сканирование");
________cancella.setOnAction(e_->_{
____________new_EventFrame(e,_Alert.AlertType.WARNING,_"Удаление_посещения\n"_+
____________________"Осановить?Или_продолжить\n"_+
____________________"для_загрузки_страниц._Отменить",_ButtonType.CANCEL,_this::cancel);
________});
________MenuItem_operazioni_=_new_MenuItem("Операции");
________operazioni.setOnAction(event_->_{
____________OperationsFrame_of_=_new_OperationsFrame();
____________of.show();
____________of.select(1);
________});
________menuButtonAzioni.getItems().addAll(aggiungiSeed,_pausa,_operazioni,_new_SeparatorMenuIte
m(),_cancella);
____}
____{
________tableData.getSelectionModel().selectedItemProperty().addListener((observable,_oldValue,_newV
alue)_->_{
____________domColumn.setVisible(false);
____________domColumn.setVisible(true);
________});
____}
____private_void_updateNull(TableCell_cell){
________cell.setText(null);
________cell.setGraphic(null);
________cell.setBackground(null);
____}
____public_void_forceTableRefresh(){
________domColumn.setVisible(false);
________domColumn.setVisible(true);
____}
____{
________domColumn.setCellFactory(param_->
________________new_TableCell<Page,_URI>(){
____________________@Override
____________________public_void_updateItem(URI_item,_boolean_empty){
________________________super.updateItem(item,_empty);
_______________________________________________if_(item_==_null){
77
____________________________updateNull(this);
____________________________return;
________________________}
_______________________
________________________setText(item.toString());
________________________setBackground(null);
________________________if_(param.getTableView().getSelectionModel().getSelectedItem()_==_null)_re
turn;
________________________Page_data_=_param.getTableView().getSelectionModel().getSelectedItem();_
//_prendo_la_pagina_per_comodit?.
________________________if_(data.getPtr().contains(item)_&&_!data.getPtd().contains(item)){
____________________________setBackground(new_Background(new_BackgroundFill(Settings.config().C
R_PTD.get(),_new_CornerRadii(0),_Insets.EMPTY)));
________________________}else_if(!data.getPtr().contains(item)_&&_data.getPtd().contains(item)){
____________________________setBackground(new_Background(new_BackgroundFill(Settings.config().C
R_PTR.get(),_new_CornerRadii(0),_Insets.EMPTY)));
________________________}else_if(data.getPtr().contains(item)_&&_data.getPtd().contains(item)){
____________________________this.setBackground(new_Background(new_BackgroundFill(Settings.confi
g().CR_PTDandPTR.get(),_new_CornerRadii(0),_Insets.EMPTY)));
________________________}
____________________}
________________});
________statusColumn.setCellFactory(param_->
________________new_TableCell<Page,String>(){
____________________@Override
____________________public_void_updateItem(String_item,_boolean_emtpy)_{
________________________super.updateItem(item,emtpy);
________________________if(item_==_null){
____________________________this.setText(null);
____________________________this.setBackground(null);
________________________}
________________________else{
____________________________if(item.equalsIgnoreCase("")){
________________________________this.setText("Загружено");
________________________________this.setTextFill(Color.GREEN);
________________________________this.setTextAlignment(TextAlignment.CENTER);
____________________________}
____________________________else{
________________________________this.setText(item);
________________________________this.setTextFill(Color.RED);
________________________________this.setTextAlignment(TextAlignment.CENTER);
____________________________}
78
________________________}
____________________}
________________}
________);
________followColumn.setCellFactory(param_->
________________new_TableCell<Page,_Boolean>(){
____________________@Override
____________________public_void_updateItem(Boolean_item,_boolean_empty){
________________________super.updateItem(item,_empty);
____________________if_(item_==_null){
____________________________updateNull(this);
____________________________return;
________________________}______________________
________________________setText(item_?_"DA"_:_"Net");
________________________setBackground(null);
________________________if_(item_&&_Settings.config().CR_FOLLOW.getValue()){
____________________________setTextFill(Color.GREEN);
________________________}else_if_(!item_&&_Settings.config().CR_FOLLOW.getValue()){
____________________________setTextFill(Color.RED);
________________________}
____________________}
________________});
____}
}
package_wsa;
import_javafx.beans.property.ObjectProperty;
import_javafx.beans.property.SimpleBooleanProperty;
import_javafx.beans.property.SimpleObjectProperty;
import_javafx.scene.paint.Color;
import_javafx.scene.paint.CycleMethod;
import_javafx.scene.paint.LinearGradient;
import_javafx.scene.paint.Stop;
import_lombok.Cleanup;
import_lombok.Getter;
import_lombok.NonNull;
import_lombok.experimental.Accessors;
import_java.io.BufferedReader;
import_java.io.File;
import_java.nio.file.Files;
import_java.util.ArrayList;
import_java.util.HashMap;
79
import_java.util.List;
import_java.util.Random;
public_class_Settings_{
____static_class_Setting{
________private_String_ID;________private_String_Value;
________Setting(String_id,_String__value){
____________ID__=_id;
____________Value_=_value;
________}
____}
____private_static_File_file_=_new_File("./Configure.ini");
____@Accessors(fluent=true)_@Getter(lazy_=_true)_private_static_final_Settings_config_=_new_Settings(
file);
____public__HashMap<String,_Setting>_settings_=_new_HashMap<>();
____public__Integer_RES_GRABBER_MILLIS_=_1000;
____public_final__SimpleBooleanProperty_CR_FOLLOW_=_new_SimpleBooleanProperty(true);
____public__boolean_RUN_WITH_LOGO_=_false;
____public__ObjectProperty<Color>_CR_PTD_=_new_SimpleObjectProperty<>(Color.VIOLET);_
____public__ObjectProperty<Color>_CR_PTR_=_new_SimpleObjectProperty<>(Color.YELLOW);__
____private__ObjectProperty<Stop[]>_stops_=_new_SimpleObjectProperty<>(new_Stop[]{
____________new_Stop(0,_CR_PTR.get()),
____________new_Stop(1,_CR_PTD.get())
____});
____public__ObjectProperty<LinearGradient>_CR_PTDandPTR_=_new_SimpleObjectProperty<>(
____________new_LinearGradient(0,_0,_1,_1,_true,_CycleMethod.NO_CYCLE,_stops.get())
____);
____private_Settings(File_conf){
________if(conf.exists())_{
____________try_(BufferedReader_file_=_Files.newBufferedReader(conf.toPath())){
________________file.lines();
________________return;
____________}_catch_(Exception_e)_{}
________}
____}
____public_boolean_save(){return_false;}
____public_<T>_T_getSetting(String_id){
________return_null;
____}
____public_void_addSetting(Setting_setting_){
80
____}
}
package_wsa.API;
import_java.util.concurrent.Semaphore;
import_java.util.concurrent.atomic.AtomicBoolean;
import_java.util.function.Predicate;
public_class_ConditonSemaphore<T>_{
____private_volatile_Semaphore_semaforo_=_null;
____private_Predicate<T>_condition_=_null;
____private_T_conditionedobject_=_null;
____private_int_numeromaxthread_=_0;
____private_final_AtomicBoolean_disabled_=_new_AtomicBoolean(false);
____private_boolean_negated;
____public_ConditonSemaphore(Predicate<T>_pred_,_T_conditionedObject,_int_numeromaxthreads,_bo
olean_negate){
________semaforo_=_new_Semaphore(0);
________condition_=_pred;
________conditionedobject_=_conditionedObject;
________numeromaxthread_=_numeromaxthreads;
________negated_=_negate;
____}
____public_void_acquire()_throws_InterruptedException_{
________if(disabled.get())_return;
________if(negated)_{
____________if_(!condition.test(conditionedobject))_{
________________System.out.println("Locked__"_+_conditionedobject.toString());
________________semaforo.acquire();
____________}
________}
________else_{
____________if_(condition.test(conditionedobject))_{
________________System.out.println("Locked__"_+_conditionedobject.toString());
________________semaforo.acquire();
____________}
________}
____}
____public_void_release(){
________if(disabled.get())_return;
________if(negated)_{
____________if_(condition.test(conditionedobject))_{
________________semaforo.release(numeromaxthread_+_1);
________________semaforo_=_new_Semaphore(0);
____________}
81
________}
________else_{
____________if_(!condition.test(conditionedobject))_{
________________semaforo.release(numeromaxthread_+_1);
________________semaforo_=_new_Semaphore(0);
____________}
________}
____}
____private_void_releaseForced(){
________semaforo.release(numeromaxthread_+_1);
________semaforo_=_new_Semaphore(0);
____}
____public_void_Disable(){
________disabled.set(true);
________this.releaseForced();
____}
____public_void_Enable(){
________disabled.set(false);
____}
}
82
Обозначение
Наименование
Дополнительные
сведения
Текстовые_документы
1._11070002.09.03.02.420.ПЗВКР
Пояснительная_записка
98_с.
Графические_документы
2._11070002.09.03.02.420.ДМВКР Демонстрационные_материалы_(презе
12_сл.
нтация)
Демонстрационные_материалы
12_лист_*5_экз.
_(пл._ф._А4)
Другие_документы
3.
Документы_на_компакт-диске
1_CD
11070002.09.03.02.420.ПЗВКР
Изм. Лист. Номер_докум. Подп. Дата
Разработка_информационной_п Лит. Лист Листов
Разработала Степанченко_В.С.
одсистемы_документационного У
Щербинина_Н.В.
Проверила
99
100
_обеспечения_управленческой_
Нестерова_Е.В.
Н.контр.
НИУ_«БелГУ»
деятельности_организации_ОО
гр.07001306
Утвердил Гахов_Р.П.
О_«ДомРемСтрой»
Ведомость_ВКР
83
Выпускная_квалификационная_работа_выполнена_мной_совершенно_са
мостоятельно._Все_использованные_в_работе_материалы_и_концепции_из_оп
убликованной_научной_литературы_и_других_источников_имеют_ссылки_на_
них.
«___»________________________г.
____________________
Пичугин_Н.И.
(подпись)
(Ф.И.О.)
84
Отзывы:
Авторизуйтесь, чтобы оставить отзыв