inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/b639eeb6-6a43-4952-a48d... · web viewІншими...

103
ЗМІСТ ВСТУП...................................................... 7 1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБГРУНТУВАННЯ ТЕХНІЧНОГО ЗАВДАННЯ НА РОБОТУ............................. 10 1.1 Суть технічної проблеми..............................10 1.1.1 Контекстна реклама............................... 10 1.1.2 Реклама в соціальних мережах.....................11 1.2 Існуючі способи вирішення технічної проблеми.........13 1.2.1 Система «Яндекс.Метрика».........................14 1.2.2 Система «Google Analytics».......................15 1.3 Висновки по розділу.................................. 16 2 РОЗРОБКА АРХІТЕКТУРИ СИСТЕМИ...........................18 2.1 Поняття архітектури програмного забезпечення.........18 2.2 Оцінка успішності кінцевої архітектури продукту......21 2.3 Якість програмного забезпечення......................24 2.4 Розробка архітектури програмного забезпечення........26 3 АНАЛІЗ ТА ВИБІР ТЕХНОЛОГІЙ РОЗРОБКИ....................28 3.1 Мова програмування Java..............................28 3.2 Фреймворк Spring..................................... 31 3.3 Бібліотека Hibernate................................. 33 4 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ......................35 4.1 Розробка структури системи...........................35 4.2 Розробка діаграм станів системи......................36 4.3 Проектування бази даних..............................38 5 РОЗРОБКА ДОКУМЕНТІВ НА СУПРОВОДЖЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ.............................................. 40 5.1 Інструкція програмісту...............................40

Upload: others

Post on 29-Jan-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

ЗМІСТВСТУП..................................................................................................................................7

1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБГРУНТУВАННЯ ТЕХНІЧНОГО ЗАВДАННЯ НА РОБОТУ......................................................................10

1.1 Суть технічної проблеми......................................................................................10

1.1.1 Контекстна реклама.....................................................................................10

1.1.2 Реклама в соціальних мережах...................................................................11

1.2 Існуючі способи вирішення технічної проблеми...............................................13

1.2.1 Система «Яндекс.Метрика».......................................................................14

1.2.2 Система «Google Analytics»........................................................................15

1.3 Висновки по розділу.............................................................................................16

2 РОЗРОБКА АРХІТЕКТУРИ СИСТЕМИ................................................................18

2.1 Поняття архітектури програмного забезпечення...............................................18

2.2 Оцінка успішності кінцевої архітектури продукту...........................................21

2.3 Якість програмного забезпечення.......................................................................24

2.4 Розробка архітектури програмного забезпечення.............................................26

3 АНАЛІЗ ТА ВИБІР ТЕХНОЛОГІЙ РОЗРОБКИ....................................................28

3.1 Мова програмування Java....................................................................................28

3.2 Фреймворк Spring.................................................................................................31

3.3 Бібліотека Hibernate..............................................................................................33

4 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ...................................................35

4.1 Розробка структури системи................................................................................35

4.2 Розробка діаграм станів системи.........................................................................36

4.3 Проектування бази даних.....................................................................................38

5 РОЗРОБКА ДОКУМЕНТІВ НА СУПРОВОДЖЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ...............................................................................................................40

5.1 Інструкція програмісту.........................................................................................40

5.2 Інструкція користувачеві.....................................................................................40

6 ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ............................................44

7 ОХОРОНА ПРАЦІ....................................................................................................48

7.1 Аналіз небезпечних та шкідливих виробничих факторів у виробничому приміщенні.....................................................................................................................49

Page 2: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

6

7.2 Карта умов праці...................................................................................................53

7.3 Рекомендації щодо покращення умов праці......................................................55

7.4 Розрахунок точковим методом локалізованого штучного освітлення............55

ВИСНОВКИ.......................................................................................................................60

ЛІТЕРАТУРА.....................................................................................................................61

ДОДАТКИ..........................................................................................................................64

Додаток А (Обов’язковий). Архітектура системи..........................................................65

Додаток Б (Обов’язковий). UML – діаграма послідовності завантаження кампанії до соц.мережі .........................................................................................................................66

Додаток В (Обов’язковий). UML – діаграма варіантів використання.........................67

Додаток Г (Обов’язковий). ERD – схема бази даних.....................................................68

Додаток Д (Додатковий). Завдання для розрахунку розділу охорони праці...............69

Додаток Е (Обов’язковий). Лістинг програми................................................................70

Page 3: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

7

ВСТУП

Актуальність даної роботи підтверджується необхідністю швидкого

управління контекстною рекламою у соціальних мережах з використанням єдиної

централізованої системи, яка реалізує в собі як можливість перегляду статистики

рекламних компаній в різних соц. мережах, так і можливість створення нових

рекламних компаній з різноманітним таргетингом відповідно до цільової категорії.

Тому, враховуючи постійних ріст попиту на контекстну рекламу в соціальних

мережах, розробка подібної системи є напрочуд актуальною і така система може

мати великий попит у різноманітних рекламних фірм.

Проникнення Інтернету в повсякденне життя більшості активних людей

змінило відношення до інформації. За минулі десятиліття були сформовані нові

навички та моделі поведінки, підтримувані тим, що новини в Інтернеті свіжіші і

різноманітніші, картинки і анекдоти безкоштовні і нескінченні, опису товарів і

відгуки покупців більші, ніж у магазинах, та, крім того, є можливість знайти кращі

ціни.

Інтернет сформував у більшості користувачів уміння шукати і знаходити

потрібну інформацію. Саме це дало принципову можливість створити нову модель

інтерактивної двонаправленої рекламної комунікації – контекстну рекламу, коли

спочатку користувач запитує в пошуковій системі те, що йому потрібно, а у

відповідь отримує потрібну інформацію та рекламні оголошення, пов’язані з його

запитом. Відвідувач із задоволенням переглядає сам те, що йому необхідно,

переходить по посиланнях на сайти продавців і здійснює покупки.

Феноменальне зростання популярності контекстної реклами пов’язане з тим,

що вона корисна для користувачів і ефективна для рекламодавців. На даний момент

в світі не існує універсальної системи з управління контекстною рекламою в

соціальних мережах. Існують сервіси за допомогою яких можна відслідкувати

основні показники проходження кампанії – це сервіси “Яндекс.Метрика” та “Google

Analytics”[1].

Page 4: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

8

Яндекс.Метрика — безкоштовний сервіс, призначений для оцінювання

відвідуваності веб-сайтів та аналізу поведінки користувачів. Сервіс інтегровано з

Яндекс.Директом та Яндекс.Маркетом і дозволяє групувати відвідувачів ресурсу за

декількома параметрами [2].

Google Analytics (скорочено GA) - безкоштовний сервіс, що надається Google

для створення детальної статистики відвідувачів веб-сайтів. Статистика збирається

на сервері Google, користувач тільки розміщує JS-код на сторінках свого сайту.

Безкоштовна версія обмежена 10 мільйонами переглядів сторінок на місяць.

Користувачам з активним акаунтом Google AdWords надається можливість

відстеження необмеженого числа переглядів сторінок [3].

Google AdWords — сервіс контекстної реклами від компанії Google,

орієнтований на рекламодавців. Надає зручний інтерфейс і набір інструментів для

створення ефективних рекламних оголошень. AdWords — флагманський рекламний

проект Google та основне джерело прибутків компанії [4].

Разом із зростанням попиту рекламодавців на контекстну рекламу, зростає

попит на технологічні рішення у реалізації управління контекстною рекламою у

вигляді готової програмної системи.

Метою даної роботи є аналіз розробки систем управління контекстною

рекламою та підвищення ефективності такої розробки.

Об’єктом даного дослідження є процес таргетування контекстної реклами в

соціальних мережах.

Предмет – методи та засоби розробки систем управління контекстною

рекламою.

Задачами даної роботи є дослідження існуючих програмних рішень

управління рекламними кампаніями у соц. мережах, дослідження існуючих підходів

до реалізації складних систем з розподіленою архітектурою та вибір найбільш

ефективної архітектури системи, розроблення програмного модуля взаємодії із

зовнішніми сервісам як частини системи таргетування контекстної реклами в

соціальних мережах.

Page 5: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

9

Головним науково-технічним результатом роботи є розробка системи

управління контекстною рекламою в соціальних мережах, яка за рахунок ефективної

організації обміну та збереження даних забезпечує підвищення швидкодії та

розширення функціональних можливостей процесу таргетування контекстної

реклами в соціальних мережах.

Практичною цінністю даної роботи є створення програмного додатку для

створення, редагування та завантаження рекламних кампанії та їх статистики у соц.

мережах.

Дана робота була апробована у доповіді на XLII регіональній науково-

технічній конференції професорсько-викладацького складу, співробітників та

студентів університету з участю працівників науково-дослідних організацій та

інженерно-технічних працівників підприємств м. Вінниці та видана до друку.[5]

Page 6: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

10

1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБГРУНТУВАННЯ

ТЕХНІЧНОГО ЗАВДАННЯ НА РОБОТУ

1.1 Суть технічної проблеми

З'явившись в 1998 році, контекстна реклама раз і назавжди змінила

рекламний ринок і дала величезний імпульс до розвитку інтернет-економіки.

Технології контекстної реклами в даний момент можна вважати вершиною

рекламних технологій.

Основне завдання управління контекстною рекламою – зосередження усіх

можливих механізмів впливу на рекламну кампанію, збір та систематизація

статистичних даних використання даної кампанії в одному місці, що б забезпечило

підвищення швидкодії управління та збільшення кількості рекламних кампанії

якими рекламодавець може управляти одночасно.

1.1.1 Контекстна реклама

Контекстна реклама – платне інтерактивне неособисте звернення,

здійснюване за допомогою електронних видів зв’язку, що відповідає поточним

запитам і інтересам глядача, просуває ідеї, товари, послуги від імені інвестора [6].

Що ж таке контекстна реклама в дійсності? Якщо ви хоча б раз шукали

комерційну інформацію в мережі, то не могли не помітити, що деякі посилання в

результатах пошукової машини відрізняються від інших. Як правило, вони

розташовані зверху або збоку від основного списку посилань і помічені як

«Контекстні оголошення» або «Рекламні посилання». Подібні посилання, що

представляються глядачеві саме в той момент, коли він виявив інтерес до товару чи

послуги або намір купити їх і почав пошук необхідної для цього інформації, і є

контекстна реклама.

Таким чином, з точки зору користувачів, контекстна реклама - це комунікація

в ситуації, коли рекламне повідомлення запитуване зацікавленим глядачем. Інтереси

Page 7: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

11

аудиторії визначаються за допомогою різних семантичних і поведінкових

технологій, які враховують задоволення як короткострокових, так і довгострокових

потреб аудиторії.

1.1.2 Реклама в соціальних мережах

Незважаючи на те що з контекстною рекламою частіше за все пов’язують

пошукові системи, вона поступово набирає популярність використання у соціальних

мережах. Основною перевагою реклами в соціальних мережах в порівнянні з

контекстною рекламою в пошукових системах і пошуковим просуванням сайтів - це

налаштування дуже точного таргетингу [7]:

- Країна, місто / регіон (Якщо ваша компанія надає послуги тільки в

Києві, то ви не будете платити за рекламу користувачам з інших міст.) Райони,

станції метро, вулиці (Оголошення буде показуватися людям, які живуть або

працюють в зазначеному районі (вулиці, метро)).

- Посади (Якщо ви пропонуєте курси підвищення кваліфікації для

бухгалтерів, то ви можете націлити тільки на бухгалтерів.)

- Стать, вік, сімейний стан

- Інтереси, захоплення, улюблені фільми, книги, ігри

- Категорії груп, групи

- Навчальні заклади, роки закінчення школи, роки закінчення ВУЗу

Також до переваги реклами в соціальних мережах можна віднести точне і

швидке інформування цільової аудиторії про вашу компанію, продукті, акціях та

новинки. Така реклама особливо підійде у випадках, коли потрібно і можна

виділити вузьку цільову аудиторію. Наприклад: Фітнес-клуб або ресторан біля

метро Мінська може показувати оголошення людям певного віку, які живуть або

працюють біля метро Мінська. Ефект від такої реклами буде проявлятися не тільки в

переходах на сайт, але і в інформуванні користувачів про існування такого фітнес-

клуба/ресторана. Програма Work and Travel, наприклад, може бути цікава всім

студентам 4 курсу. Додатково можна вказати і таргетинг по району, де знаходиться

Page 8: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

12

офіс компанії. Тематичні семінари можна пропонувати людям з відповідними

інтересами. Якщо ваші послуги цікаві широкому колу людей, то реклама в

соціальних мережах може використовуватися для збільшення впізнаваності бренду,

а не як реклама, спрямована на продажу.

Основною ділянкою розміщення реклами є такі соціальні мережі як

“ВКонтакте”, “Facebook”, “Twitter” та “Linkedin”. Приклад контекстної реклами

“ВКонтакте” та “Facebook” зображено на рис. 1.1.

Ціна за тисячу показів і за перехід на цих сайтах – не фіксована. Показ

оголошень відбувається за принципом аукціону – оголошення з більшою ставкою за

тисячу показів показуються в першу чергу. У разі оплати за кліки, в першу чергу

будуть показуватись оголошення з найбільшою ставкою за клік, помноженої на

CTR.

Рисунок 1.1 – Приклад контекстної реклами у “ВКонтакте” (зліва), та “Facebook”

(справа)

CTR(англ. Click-through rate, Рейтинг кліків або Клікабельність) —

відношення числа кліків на оголошення до його показів. Вимірюється у відсотках

[8]. Формула розрахунку (1.1):

CTR = (число кліків / число показів)*100% (1.1)

Page 9: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

13

Наприклад, якщо рекламне оголошення було показано 100 раз, а клікнули по

ньому тільки один раз, то показник CTR буде дорівнювати 1%.

Можна сказати, що це ККД (коефіцієнт корисної дії) оголошення, що

визначає ефективність його роботи та ефективність рекламної кампанії загалом. Чим

вищий CTR, тим точніше оголошення відповідає запиту і тим нижчою для

рекламодавця буде ціна виходу на гарантовані покази.

Слід зазначити, що показник більший за 2% вважаться успішним, і загалом

рекламну кампанію з таким показником можна вважати успішною.

Найвищий CTR може забезпечити контекстна реклама в пошукових

системах, коли оголошення рекламодавців відображаються в залежності від

пошукових запитів користувачів.

Великий вплив на CTR реклами мають її розмір, яскравість, контрастність і

місце розташування на web-сторінці.

Проте потрібно мати на увазі, що для іміджевої реклами значення CTR

набагато менш важливе, ніж кількість користувачів, які її побачать, і ту увагу, яку

вони їй приділять.

1.2 Існуючі способи вирішення технічної проблеми

Протягом всього періоду проекту з реклами в соціальних мережах можна

відслідковувати основні показники за допомогою сервісів “Яндекс.Метрики” або

“Google Analytics” [1].

В кінці кожного місяця за допомогою цих сервісів можна отримати звіт з

розміщення реклами в соціальних мережах:

кількість переходів, середній CTR;

візуалізація оголошень контекстної реклами в соціальних мережах;

рекомендації щодо збільшення ефективності кампанії по рекламі сайту

в соціальних мережах.

Page 10: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

14

1.2.1 Система «Яндекс.Метрика»

Яндекс.Метрика — безкоштовний сервіс, призначений для оцінювання

відвідуваності веб-сайтів та аналізу поведінки користувачів, аналог Google Analytics.

Яндекс.Метрика стала загальнодоступною 24 квітня 2009 року.

Лічильник Яндекс.Метрики працює за принципом звичайного лічильника

відвідувань: JS-код встановлюється веб-майстром на сторінках сайту та збирає дані

про кожне відвідування.

Сервіс інтегровано з Яндекс.Директом та Яндекс.Маркетом і дозволяє

групувати відвідувачів ресурсу за декількома параметрами.

Яндекс.Метрика вимірює конверсію сайту (пропорції, залежності числа

покупок від кількості відвідувачів та відвідувань сайту) та інтернет-реклами [9]. Під

час розрахунку конверсії сервіс оцінює, яка частка відвідувачів сайту досягла

"мети", тобто:

дійшла до певної сторінки, відвідування якої можна розцінювати як

досягнення результату;

переглянула певну кількість сторінок, яка є показником успішності

кампанії;

виконала певну дію (клік на кнопку, завантаження прайс-листа тощо).

Лічильнику Яндекс.Метрики може бути задано до 10 "цілей". Метрика

дозволяє не враховувати небажані переходи (власні переходи, з певних IP-адрес,

певних джерел) і модифікувати вхідні дані, видаляючи з URL задані параметри.

Яндекс.Метрика надає дані за поточний день. Звіти оновлюються з

періодичністю один раз на 5 хвилин.

Є функція моніторингу доступності сайту з можливістю отримувати SMS-

повідомлення, коли сайт недоступний користувачам.

Для створення детальних звітів у сервіс вбудовано спеціальний "Конструктор

звітів".

Page 11: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

15

Лічильник Яндекс.Метрики також сумісний з AJAX- і Flash-сайтами. Також з

7 квітня 2008 року дані з Яндекс.Метрики стали впливати на вартість переходу за

рекламними посиланнями на сайтах у Рекламній мережі Яндекса.

1.2.2 Система «Google Analytics»

Google Analytics (скорочено GA) - безкоштовний сервіс, що надається Google

для створення детальної статистики відвідувачів веб-сайтів. Статистика збирається

на сервері Google, користувач тільки розміщує JS-код на сторінках свого сайту.

Безкоштовна версія обмежена 10 мільйонами переглядів сторінок на місяць.

Користувачам з активним акаунтом Google AdWords надається можливість

відстеження необмеженого числа переглядів сторінок.

Google AdWords — сервіс контекстної реклами від компанії Google,

орієнтований на рекламодавців. Надає зручний інтерфейс і набір інструментів для

створення ефективних рекламних оголошень. AdWords — флагманський рекламний

проект Google та основне джерело прибутків компанії [4].

З програмою AdWords рекламодавець може вибрати місце показу

оголошення, установити прийнятний бюджет, оцінити ефективність оголошення.

Оголошення відображаються на веб-сайті Google і на сайтах партнерів компанії,

учасників програми AdSense, причому враховуються зацікавлення користувачів

інтернету при показі реклами. Якщо встановлено ставку ціни за клік, рекламодавець

сплачуватиме лише в разі натискання на оголошенні.

Особливістю сервісу Google Analytics є те, що вебмайстер може оптимізувати

рекламні та маркетингові кампанії Google AdWords за допомогою аналізу даних,

отриманих за допомогою сервісу Google Analytics, про те звідки приходять

відвідувачі, як довго вони залишаються на сайті і де вони знаходяться географічно.

Сервіс інтегрований з Google AdWords. Користувачі бачать групи оголошень

і віддачу від ключових слів в звітах. Також доступні додаткові можливості

включаючи поділ відвідувачів на групи.

Page 12: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

16

Користувачі сервісу можуть визначити цілі та послідовності переходів.

Метою може виступати сторінка завершення продажів, показ певних сторінок, або

завантаження файлів. Використовуючи цей інструмент, маркетологи можуть

визначати, яка з рекламних кампаній є успішною, і знаходити нові джерела цільової

аудиторії.

Сервіс Google є продовженням аналітичної системи Urchin on Demand

компанії Urchin Software (Google викупила Urchin Software Corp. В квітні 2005

року). Google все ще надає окремий додаток Urchin. Клієнти Urchin забезпечуються

такою ж підтримкою програмного продукту, як і до покупки корпорацією Google,

нова бета-версія програми вийшла в жовтні 2007 року. В сервіс привнесені ідеї

Adaptive Path, чий продукт, Measure Map, був викуплений і отримав назву Google

Analytics в 2006 році.

Відкрита реєстрація в сервісі під маркою Google була відкрита в листопаді

2005 року. Однак через величезний наплив відвідувачів, нові реєстрації були

припинені через кілька днів. У міру нарощування потужностей, Google ввів

реєстрацію за запрошеннями. Починаючи з середину серпня 2006 року сервіс став

доступний для всіх бажаючих. Нова версія користувальницького інтерфейсу була

випущено 17 травня 2007 року.

Будь-який користувач може додати до 50 профілів сайтів. Кожен профіль

зазвичай відповідає одному сайту.

Google Analytics показує основну інформацію «на панелі інструментів»,

більш детальну інформацію можна отримати у вигляді звіту. У даний момент

доступно 80 видів звітів, що налаштовуються.

1.3 Висновки по розділу

Основним недоліком існуючих систем є те, що вони пропонують лише

статистику використання рекламних компаній і не надають можливості зміни

структури самої компанії безпосередньо у системі. Для того щоб змінити стратегію

Page 13: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

17

проведення рекламної компанії рекламодавець(інвестор) повинен увійти, під тим

логіном з якого була створена реклама, у відповідну соціальну мережу де ця

компанія наразі розміщена. У випадку коли рекламодавець створив одну або

декілька компаній, такий спосіб управління є прийнятним та не викликає особливих

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

кількістю рекламних компаній, якими в залежності від їх ефективності потрібно так

чи інакше управляти. Для підвищення швидкодії доцільним може бути розміщення

рекламних компаній окремого інвестора у одній системі, яка може синхронізуватися

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

необхідності заходити на кожну з соц. мереж окремо. Це значно підвищило б

швидкодію та зручність в управлінні контекстною рекламою.

Оскільки рекламодавець завжди прагне охопити якнайбільше коло людей

який може зацікавити реклама, він розміщує свої кампанії відразу у декількох

соціальних мережах. Тому ще важливою характеристикою, яка б суттєво спростила

йому життя, є інвертованість рекламних компаній різних соціальних мереж. Таким

чином, ввівши основні дані реклами ми можемо створити подібну рекламну

компанію відразу на декількох соціальних мережах, попередньо уточнивши

специфічні параметри окремих соц. мереж, або залишивши їх стандартними.

Наразі не існує єдиної системи яка б уміщувала у собі вище перераховану

функціональність. Тому, враховуючи постійних ріст попиту на контекстну рекламу

в соціальних мережах, розробка подібної системи є напрочуд актуальною і така

система може мати великий попит у різноманітних рекламних фірм.

Page 14: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

18

2 РОЗРОБКА АРХІТЕКТУРИ СИСТЕМИ

2.1 Поняття архітектури програмного забезпечення

Архітектура програмного забезпечення (англ. software architecture) – це

структура програми чи обчислювальної системи, що включає програмні

компоненти, зовнішні властивості цих компонентів, а також відносини між ними [9].

Цей термін також може бути застосованим до документування архітектури

програмного забезпечення. Документування ПЗ спрощує процес комунікації між

зацікавленими особами (англ. stakeholders), дозволяє зафіксувати прийняті на ранніх

етапах проектування рішення щодо високорівневим дизайном системи та дозволяє

повторно використовувати компоненти цього дизайну та шаблони в інших проектах.

Галузь комп’ютерних наук з моменту свого формування стикнулася з

проблемами, зв’язаними зі складністю програмних систем. Раніше проблеми

складності вирішувались розробниками шляхом правильного вибору структур

даних, розробки алгоритмів та застосування концепції розмежування повноважень.

Хоча термін «архітектура програмного забезпечення» є відносно новим для індустрії

ПЗ, фундаментальні принципи цієї галузі застосовувалися піонерами розробки ПЗ

починаючи з середини 1980-х років. Перші спроби усвідомити та пояснити

програмну архітектуру системи були вкрай неточними та мали вади з

організованістю, часто представляючи собою діаграми блоків поєднані лініями. В

1990-і роки було зроблено спроба визначити та систематизувати основні аспекти

даної дисципліни. В цей час було розроблено початковий набор шаблонів

проектування, стилів дизайну, передового досвіду (best-practices), мов описання та

формальна логіка.

Фундаментальною ідеєю дисципліни програмної архітектури є ідея зниження

складності системи шляхом абстракції та розмежування повноважень. На

сьогоднішній день немає згоди у відношенні чіткого визначення терміну

«архітектура програмного забезпечення».

Page 15: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

19

Початок архітектурі ПЗ як концепції було покладено в науково-дослідницький

роботі Едсгере Дейкстри у 1968 році та Девіда Парнаса на початку 1970-х [10]. Ці

вчені підкреслили, що структура системи ПЗ має важливе значення та, що побудова

правильної структури є критично важливим етапом створення програмного

продукту.

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

важливу роль науково-дослідні установи. Мери Шоу та Девид Герлан з університету

Carnegie Mellon написали книгу під назвою "Архітектура програмного забезпечення:

перспективи нової дисципліни у 1996 році", в якій висунули концепції архітектури

програмного забезпечення, такі як компоненти, з’єднувачі, стилі та інші. У

каліфорнійському університеті інституті Ірвайна по дослідженню ПЗ в першу чергу

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

архітектури.

Першим стандартом програмної архітектури є стандарт IEEE 1471: ANSI /

IEEE 1471–2000: Рекомендації по описанню переважно программних систем. Його

було прийнято у 2007 році, під назвою ISO / IEC 42010:2007 [11].

Архітектура ПЗ є реалізацією нефункціональных вимог до системи, у той час

проектування ПЗ є реалізацією функціональних вимог.

Архітектура ПЗ, яку також можна представити у вигляді розробки стратегії –

це діяльність, що зв’язана з визначенням глобальних обмежень, що накладаються на

проектування системи, такиі як вибір парадигми програмування, архітектурних

стилів, стандарти розробки ПЗ, що засновані на використанні компонентів,

принципи проектування та обмеження, що накладаються державним

законодавством. Детальне проектування, розробка тактики – це діяльність зв’язана з

визначенням локальних обмежень проекту, такі як шаблони проектування,

архітектурні моделі, ідіоми програмування й рефакторингу. Згідно гіпотези

«напруги/околу» (Intension/Locality Hyphotysis), різниця між архітектурним і

детальним проектуванням визначаєтся критерієм околу (Locality Criteria), згідно

якому твердження, що дизайн ПЗ не є локальним (а є архітектурним) істино тоді і

тільки тоді, коли програма, яка задовольняє цьому критерію може бути розширена в

Page 16: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

20

програму, яка не задовольняє йому. Наприклад, стиль додатку клієнт–сервер є

архітектурним стилем (стратегічним дизайном), тому що програма, яка побудована

на цьому принципі, може бути розширена в програму, яка не є клієнт–сервером,

шляхом додавання peer–to–peer вузлів [12].

Архітектура є проектуванням (дизайном), але не всякий дизайн є

архітектурним дизайном. На практиці, архітектор визначає межу між архітектурою

програмного забезпечення (архітектурним дизайном) і детальним дизайном

(неархітектурним проектуванням). Не існує універсальних правил чи інструкцій,

щодо створення архітектури ПЗ, але є багато розповсюджених способів розробки

програмних модулів та їх зв’язків:

Blackboard;

Кліент-серверна модель (client-server) ;

Архітектури, побудовані навколо бази даних (database-centric

architecture) ;

Розподілені обчислення (distributed computing) ;

Подієва архітектура (event-driven architecture) ;

Front end and back end;

Неявні виклики (implicit invocations);

Монолітний додаток (monolithic application) ;

Peer-to-peer;

Пайпи та фільтри (pipes and filters) ;

Плагіни (Plugin);

Rule evaluation;

Пошуко-орієнтовані архітектури;

Сервіс-орієнтовані архітектури;

Shared nothing architecture;

Software componentry;

Структуровані.

Три-рівнева.

Page 17: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

21

2.2 Оцінка успішності кінцевої архітектури продукту

На сьогодні, в контексті відсутності чітких правил про правильний шлях

створення системи, під архітектурою ПЗ розуміють суміш науки та мистецтва.

Аспект мистецтва складається в тому, що будь-яка комерційна система припускає

присутність застосовності та місії. Те, які ключові цілі має система, описується за

допомогою сценаріїв та нефункціональних вимог до неї. Атрибути якості системи

включають поняття відмовостійкість, збереження зворотної сумісності,

розширюваність, надійність, придатність до сервісного обслуговування

(maintainability), доступність, безпечність, зручність користування та інші якості. З

точки зору користувача програмної архітектури, вона дає напрямок руху та

вирішення задач зв’язаних з членами команди розробки, тестування, підтримки,

кінцевих користувачів продукту. В цьому сенсі архітектура програмного

забезпечення насправді об’єднує різні точки зору на систему. Це є основним

аргументом на користь необхідності створення архітектури до етапу реалізації ПЗ.

Для оцінки кінцевої архітектури, як правило, роблять аналіз за наведеними

нижче характеристиками, та найточнішу оцінку дає системі час – якщо система

проявила здатність до розширення та набуття нових функціональних можливостей –

то, в даному випадку, йдеться про вдалу архітектуру.

Найважливіші характеристики системи:

Час відгуку (response time) – проміжок часу, який потрібно системі, щоб

обробити запит ззовні, подібний клацання на кнопці графічного інтерфейсу або

викликом функції API сервера.

Швидкість реагування (responsiveness) – швидкість підтвердження запиту. Ця

характеристика в багатьох випадках дуже важлива, оскільки інтерактивна система,

нехай навіть володіє нормальним часом відгуку, але не відрізняється високою

швидкістю реагування, завжди викликає справедливі нарікання користувачів. Якщо,

перш ніж прийняти черговий запит, система повинна повністю завершити обробку

поточного, параметри часу відгуку і швидкості реагування, по суті, збігаються.

Якщо ж система здатна підтвердити отримання запиту раніше, її швидкість

Page 18: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

22

реагування вище. Наприклад, застосування динамічного індикатора стану процесу

копіювання підвищує швидкість реагування екранного інтерфейсу, хоча ніяк не

позначається на значенні часу відгуку.

Час затримки (latency) – мінімальний інтервал часу до отримання будь-якого

відгуку (навіть якщо від системи більш нічого не потрібно). Параметр набуває

особливої важливості у розподілених системах. Якщо наказати програмі нічого не

робити і повідомити про те, коли вона закінчить це «байдикування», на

персональному комп’ютері відповідь буде отримано практично миттєво. Якщо ж

програма виконується на віддаленій машині, доведеться почекати, ймовірно, не

менше кількох секунд, поки запит і відповідь пройдуть по ланцюжку мережевих

з’єднань. Знизити час затримки розробнику прикладної програми не під силу.

Фактор затримки – головна причина, що спонукає мінімізувати кількість віддалених

викликів.

Пропускна здатність (thmughput) – кількість даних (операцій), переданих

(виконуваних) в одиницю часу. Якщо, наприклад, тестується процедура копіювання

файлу, пропускна здатність може вимірюватися кількістю байтів в секунду. У

корпоративних додатках звичайним заходом продуктивності служить число

транзакцій в секунду (transactions per second - tps), але є одна проблема – транзакції

розрізняються за ступенем складності. Для конкретної системи необхідно

розглядати суміш «типових» транзакцій. У контексті розглянутих термінів під

продуктивністю можна розуміти один з двох параметрів – час відгуку або пропускну

здатність, зокрема ту, яка більшою мірою відповідає природі ситуації. Іноді буває

важко судити про продуктивність, якщо, наприклад, використання деякого рішення

підвищує пропускну здатність, одночасно збільшуючи час відгуку. З точки зору

користувача, значення швидкості реагування може виявитися важливішим, ніж час

відгуку, так що поліпшення швидкості реагування ціною втрати пропускної

здатності чи зростання часу відгуку цілком здатне підвищити продуктивність.

Завантаження (load) – значення, що визначає ступінь «тиску» на систему і

вимірюється, скажімо, кількістю одночасно підключених користувачів. Параметр

завантаження зазвичай служить контекстом для подання інших функціональних

Page 19: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

23

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

схоже на це: "час відгуку на запит становить 0,5 секунди для 10 користувачів та 2

секунди для 20 користувачів".

Чутливість до завантаження (load sensitivity) – вираз, що задає залежність часу

відгуку від завантаження. Припустимо, що система А володіє часом відгуку, що

дорівнює 0,5 секунди для 10-20 користувачів, а система В – часом відгуку в 0,2

секунди для 10 користувачів та 2 секунди для 20 користувачів. Це дає підставу

стверджувати, що система А володіє меншою чутливістю до завантаження, ніж

система В. Можна скористатися і терміном погіршення (degradation), щоб

підкреслити факт меншої стійкості параметрів системи В.

Ефективність (efficiency) – питома продуктивність у перерахунку на одну

одиницю ресурсу. Наприклад, система з двома процесорами, здатна виконати 30 tps,

більш ефективна в порівнянні з системою, оснащеної чотирма аналогічними

процесорами і володіє продуктивністю в 40 tps.

Потужність (capacity) - найбільше значення пропускної здатності чи

завантаження. Це може бути як абсолютний максимум, так і деяке число, при якому

величина продуктивності все ще перевершує заданий прийнятний поріг.

Здатність до масштабування (scalability) – властивість, що характеризує

поведінку системи при додаванні ресурсів (зазвичай апаратних). Масштабованої

прийнято вважати систему, продуктивність якої зростає пропорційно обсягу

набутих ресурсів (скажімо, удвічі при подвоєнні кількості серверів). Вертикальне

масштабування (vertical scalability, scaling up) – це збільшення потужності окремого

сервера (наприклад, за рахунок збільшення обсягу оперативної пам’яті).

Горизонтальне масштабування (horizontal scalability, scaling out) – це нарощування

потенціалу системи шляхом додавання нових серверів.

Не слід переоцінювати роль архітектури в кінцевому продукті – цей аспект є

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

надає продукт. На ринку ПЗ існує багато прикладів, коли архітектурно не

вивершений продукт набуває небаченої популярності, в той час, як, інший –

Page 20: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

24

довершений з точки зору внутрішнього устрою продукт – залишається непоміченим

для користувачів.

2.3 Якість програмного забезпечення

Якість програмного забезпечення - характеристика програмного

забезпечення (ПО) як ступеня його відповідності вимогам. При цьому вимоги

можуть трактуватись доволі широко, що породжує цілий ряд незалежних визначень

поняття. Найчастіше використовується визначення ISO 9001, відповідно до якого

якість є "ступінь відповідності властивих характеристик вимогам" [14].

Якість коду може визначатися різними критеріями. Деякі з них мають

значення тільки з точки зору людини. Наприклад, те, як відформатований текст

програми, абсолютно не важливо для комп'ютера, але може мати серйозне значення

для подальшого супроводу. Багато з наявних стандартів оформлення коду, що

визначають специфічні для використовуваної мови угоди і задають ряд правил, що

поліпшують читаність коду, мають своєю метою полегшити майбутнє супровід ПЗ,

що включає налагодження та оновлення. Існують і інші критерії, що визначають, чи

"добре" написаний код, наприклад, такі, як:

структурованість - ступінь логічного розбиття коду на ряд керованих

блоків;

читаність коду;

легкість підтримки, тестування, налагодження, виправлення помилок;

низька складність коду;

низьке використання ресурсів: пам'яті та процесорного часу;

коректна обробка виняткових ситуацій;

мале число попереджень при компіляції;

До методів покращення якості коду відносять рефакторинг.

Page 21: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

25

Рефакторинг (англ. refactoring) — перетворення програмного коду, зміна

внутрішньої структури програмного забезпечення для полегшення розуміння коду і

легшого внесення подальших змін без зміни зовнішньої поведінки самої

системи[15]. Слово «рефакторинг» пішло від терміну «факторинг» в структурному

програмуванні, який означав декомпозицію програми на максимально автономні та

елементарні частини.

Підстави для проведення рефакторингу:

код дублюється;

підпрограма занадто довга;

цикл занадто довгий, або рівень вкладеності тіла циклу занадто

великий;

клас має багато обов’язків, слабо пов’язаних між собою;

інтерфейс класу не забезпечує достатній рівень абстракції;

функція має занадто багато параметрів;

потрібно одночасно змінювати кілька паралельних ієрархій класів;

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

клас не виконує ніяку роботу самостійно, а тільки передоручає

обов’язки іншим класам;

назва класу чи методу має ім’я, яке недостатньо точно відповідає

змісту;

клас має занадто багато відкритих (public) членів;

нестатичний клас складається тільки з даних або тільки з методів;

в ланцюжку викликів методів передається багато зайвих даних;

занадто поширене використання глобальних змінних;

Прийоми рефакторингу:

1. Прийоми, що дозволяють розбити код на дрібніші, зрозуміліші частини:

відокремлення методу (Extract Method);

відокремлення базового класу (Extract Superclass).

2. Прийоми, що дозволяють забезпечити додаткову абстракцію:

Page 22: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

26

Інкапсуляція поля (Encapsulate Field) — замінює прямий доступ до поля

на доступ через методи-аксесори (або властивості в C#);

Узагальнення типу (Generalize Type) — заміна типів, з якими працює

клас, на більш узагальнені;

Заміна блоків перевірки типів на шаблони «Стан» State) або «Стратегія»

(Strategy);

Заміна умовних операторів поліморфізмом;

Створення поля або локальної змінної (Introduce Field/Introduce Local

Variable).

3. Прийоми, що змінюють назви членів та їх розташування:

Переміщення методу/поля (Move Method/Field) в інші класи або файли

коду;

Перейменування члена (Rename) — зміна імені, з автоматичною

заміною всіх посилань на старе ім’я в коді;

Переміщення члену до базового/дочірнього класу (Pull Up/Push Down).

2.4 Розробка архітектури програмного забезпечення

Для даної системи була обрана трирівнева архітектура, яка передбачає

наявність наступних компонентів програми:

Клієнтський рівень – частина система, з якою взаємодіє користувач (User

Interface);

Сервер додатків (Base Logic), який вміщує в собі основну логіку програми та

надає клієнтському рівню доступ до своїх функцій через жорстко встановлений

інтерфейс. Він також підключений до рівню роботи з базою даних (Data Base

Server).

Рівень роботи з базою даних (Data Layer) – частина системи, яка забезпечує

безпосередню роботу з даними, їх запис в базу даних(Data Base) та зчитування

потрібної інформації з неї.

Page 23: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

27

Дана архітектура надає такі переваги:

- масштабованість;

- ізольованість рівнів один від одного дозволяє;

- швидко і простими засобами переконфігурувати систему при

виникненні збоїв або при плановому обслуговуванні на одному з рівнів;

висока безпека;

висока надійність;

низькі вимоги до швидкості каналу (мережі) між терміналами і сервером

додатків;

Недоліками є такі особливості:

більш висока складність створення додатків;

складніша в розгортанні і адмініструванні;

високі вимоги до продуктивності серверів додатків і сервера бази

даних, а, значить, і висока вартість серверного обладнання;

високі вимоги до швидкості каналу (мережі) між сервером бази

даних і серверами додатків.

Дані недоліки не являються критичними для задачі, яку потрібно виконати.

У додатку А показана архітектура програмного забезпечення комп’ютерної

системи таргетування контекстної реклами. Дана діаграма ілюструє на які

функціональні підсистеми розділена програма.

Page 24: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

28

3 АНАЛІЗ ТА ВИБІР ТЕХНОЛОГІЙ РОЗРОБКИ

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

системи ставить розробник. Основними вимогами до розроблюваної системи можна

назвати такі:

кросплатформеність;

розширюваність;

робота з доступом в мережу;

швидкодія;

високий рівень абстракції компонентів;

робота з сервером бази даних;

мультимедійна спрямованість продукту;

необхідність подальшої підтримки продукту;

Отже до розгляду було запропоновано такі стеки технологій:

1) Java SDK 1.6 + J2EE Framework+ JSP 2.2 + Tomcat 7.2;

2) Spring Framework + Spring MVC + Spring Batch + Spring Integration;

3) Hibernate Framework 4.3.0. + MySQL 5.6.2;

4) NetBeans 7.2.1 + Apache Maven 3.0.5;

5) JUnit 4.x.

3.1 Мова програмування Java

Мова Java виникла в 1991 році. Її розробили Джеймс Гослінг, Патрік Ноут,

Крис Варт, Ед Франк і Майкл Шерідан із компанії Sun Microsystem. Спочатку мова

називалася Oak і лише в 1995 році перейменована на Java [16]. Стимулом

виникнення мови був зовсім не Internet, а потреба в незалежній від платформи мові,

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

електронних пристроїв різноманітних користувачів. І лише під час розробки деталей

мови виявилось, що незалежної від платформи мови потребує Web. Власне Internet

сприяв висуненню мови Java на передову лінію програмування та її успіху.

Page 25: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

29

Java запозичила синтаксис у мов C та С++. Проте Java не є Internet-версією

C++, оскільки несумісна з нею. Розробники мови характеризують її як:

проста;

безпечна;

переносна;

об’єктно-орієнтована;

стійка;

багатопотокова;

архітектурно незалежна;

інтерпретована;

високоефективна;

розподілена.

Розглянемо коротко наведені характеристики.

Проста. Вважається, що вивчення Java спрощується, якщо програміст

знайомий з принципами об’єктно-орієнтованого програмування. Оскільки Java

виникла на основі C++, то програмістам С++ не знадобиться багато зусиль для

переходу на Java. Крім того, деякі заплутані концепції С++ були вилучені із Java

або спрощені.

Безпечна. Мова забезпечує захист, обмежуючи Java-програму середовищем її

виконання, і не дозволяє їй отримати доступ до інших частин машини. Це

стосується Java-аплетів, які динамічно завантажуються із мережі і виконуються під

управлінням Web-браузера.

Переносна. Java-програма може виконуватися на комп’ютерах, які працюють

під управлінням різних операційних систем. Безпечність і переносність програм

досягається за допомогою використання байт-коду. Внаслідок компіляції Java-

програми отримуємо високо-оптимізований набір команд, призначений для

виконання віртуальною машиною Java, JVM (Java Virtual Machine). Це спрощує її

виконання різноманітними середовищами. Єдиною вимогою є реалізація JVM для

кожної платформи.

Page 26: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

30

Об’єктно-орієнтована. Java – повністю об’єктно-орієнтована мова програму-

вавня. Неможливо створити програму поза межами класу.

Стійка. Мережне середовище ставить підвищені вимоги щодо надійності

виконуваних програм. Java-програма повинна виконуватися надійно і передбачувано

у різних середовищах. Java – мова зі строгою типізацією даних. Перевірка програми

здійснюється як на етапі компіляції, так і у процесі її виконання. Найтиповішими

помилками, зокрема управління пам’яттю та помилки часу виконання усуненні в

Java. Зокрема Java сама управляє розподілом і звільненням пам’яті, а виявлення

помилок забезпечується об’єктно-орієнтованим обробленням виняткових ситуацій.

Багатопотокова. Java підтримує багатопотокове програмування, що дає змогу

створювати програми, які паралельно виконують різні потоки команд. Це,

відповідно, дає змогу створювати інтерактивні мережні програми й ефективно

використовувати час процесора.

Архітектурно незалежна. Написане одного разу виконується скрізь, у будь-

який час і завжди. Для досягнення цієї цілі розробники зробили деякі жорсткі

обмеження у мові та віртуальній Java-машині.

Інтерпретована та високоефективна. Java дає змогу створювати міжплатфор-

мові програми завдяки їх компіляції у проміжковий байт-код, який може інтерпре-

туватися в будь-якій системі, забезпеченій віртуальною Java-машиною.

Розподілена. Java розроблена для розподіленого Internet-середовища. Java-

програма може обробляти протоколи TCP/IP та здійснювати доступ до ресурсів із

використанням URL. Більше того технологія RMI (Remote Method Invocation)

вносить новий рівень абстракції в програмування на основі клієнт-сервера,

забезпечуючи віддалений виклик методів об’єкта, який виконується на іншому

комп’ютері [16].

Page 27: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

31

3.2 Фреймворк Spring

Spring - це легковаговий відкритий фреймворк, що спрощує розробку

корпоративних (J2EE) додатків і націлений на використання простих JavaBean

(звичайний Java клас, який ні від кого не успадковується і максимум, що робить - це

реалізує який-небудь інтерфейс) об'єктів .

Основні концепції Spring:

Легковагий. 2.5 мегабайт і програма не залежить від класів Spring-а,

тобто ми ніде не робимо наслідування від Spring і ніяк від нього не залежимо,

максимум ми можемо реалізовувати який-небудь інтерфейс. Виходить, що наш

додаток реалізує логіку, а за додатковими сервісами ми просто звертаємося до

Spring, викликаючи його методи. Причому виклик робиться таким чином, що ми в

основному викликаємо теж інтерфейси, а реалізація у цих інтерфейсів може бути

різна, тобто Spring пропонує кілька реалізацій для різних платформ, наприклад,

різна реалізація доступу до даних ітд. Також Spring можна використовувати в

маленьких додатках.

Інверсія контролю (або ін'єкція залежностей) (англ. IoC). Класи не

створюють своїх залежностей, вони їх отримують (через метод setter можна

отримати будь-який сервіс). Залежність? Тобто один клас залежить від іншого

класу. Наприклад, який-небудь наш сервіс виконує відправку пошти. Виходить, що

наш сервіс залежить від сервісу відправки пошти. У IoC суть полягає в тому, що ми

не створюємо сервіс відправки пошти (new MailService і далі виклик методів), а ми

його отримуємо. По суті ми отримуємо на вхід, наприклад, через setter або як

завгодно, але ми отримуємо Service і далі робимо з ним, що завгодно. Цікаво тут, те,

що ми можемо отримати будь MailService.

Аспектно-орієнтований. Використовується AspectJ. У Spring є своя

реалізація АОП, але все ж краще використовувати AspectJ. Якщо коротко, то АОП -

це виділення наскрізної функціональності в окремі модулі. Наприклад,

функціональність, яка займається управлінням транзакцією, тобто ця

функціональність виноситься в окремий модуль і додаток до функціональності теж

Page 28: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

32

виноситься в окремий модуль. Потім визначаємо, що такий-то і такий-то метод

будуть брати участь у транзакції. Тобто це дозволяє локалізувати все, що пов'язано з

наскрізною функціональністю в одному місці.

Spring - це контейнер об'єктів. Це означає, що Spring зберігає в собі

об'єкти, створює і управляє їх життєвим циклом. По суті це означає, що ми ніде не

викликаємо оператор new (через Spring не викликає конструктор, тобто не

використовуємо new). Якщо нам знадобився якийсь об'єкт, то потрібно звертатися

до контейнера Spring і він його видає. Як він його видає - це все можна

налаштувати. Наприклад, або через new, або буде видавати Singleton, або буде

видавати з пулу об'єктів. IoC працює завдяки тому, що всі об'єкти знаходяться в

одному контейнері.

Фреймворк. Значить, що є можливість, компонувати складні додатки з

простих компонент, що налаштовуються в конфігураційних файлах. Також

фреймворк спрощує виконання та управління J2EE функціями в додатку (транзакції,

повідомлення, веб).

Архітектура Spring представлена схемою, зображеною на рис. 3.1 та включає

в себе наступні компоненти:

IoC – головний модуль;

AOP – Spring може підключитись до програми у будь якій точці та виконати

там потрібний код;

Service Abstraction – абстрагуємося завдяки тому, що ми викликаємо

інтерфейси Spring-а і викликаємо його методи для роботи. За рахунок цього

він абстрагується від усього іншого (Web remoting, EJB, JMS, Scheduling

ітп);

ORM – JPA, Hibernate технології для роботи з базами даних;

WEB – класи, які допомагают спростити розробку Web (авторизація, доступ

до бінів Spring-а із web);

MVC – створює web.

Page 29: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

33

Рисунок 3.1 – Архітектурна схема фреймворка Spring

3.3 Бібліотека Hibernate

Hibernate — засіб відображення між об'єктами та реляційними структурами

(object-relational mapping, ORM) для платформи Java. Hibernate є вільним

програмним забезпеченням, яке поширюється на умовах GNU Lesser General Public

License. Hibernate надає легкий для використання каркас (фреймворк) для

відображення між об'єктно-орієнтованою моделлю даних і традиційною реляційною

базою даних.

Метою Hibernate є звільнення розробника від значних типових завдань із

програмування взаємодії з базою даних. Розробник може використовувати Hibernate

як при розробці з нуля, так і для вже існуючої бази даних.

Hibernate піклується про зв'язок класів з таблицями бази даних (і типів даних

мови програмування із типами даних SQL), і надає засоби автоматичної побудови

SQL запитів й зчитування/запису даних, і може значно зменшити час розробки, який

Page 30: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

34

зазвичай витрачається на ручне написання типового SQL і JDBC коду. Hibernate

генерує SQL виклики і звільняє розробника від ручної обробки результуючого

набору даних, конвертації об'єктів і забезпечення сумісності із різними базами

даних.

Hibernate забезпечує прозору підтримку збереження даних, тобто їхньої

персистентності (англ. persistence) для «POJO»-об'єктів, себто для звичайних Java-

об'єктів; єдина сувора вимога до класу, що зберігається — конструктор за

замовчанням (Для коректної поведінки у деяких застосуваннях потрібно приділити

особливу увагу до методів equals() і hashCode().

Колекції об'єктів даних, як правило, зберігаються у вигляді колекцій Java-

об'єктів, таких як набір (Set) і список (List). Підтримуються узагальнені класи

(Generics), введені в Java 5. Hibernate може бути налаштований на «ледачі»

(відкладені) завантаження колекцій. Відкладені завантаження є варіантом за

замовчуванням, починаючи з Hibernate 3.

Зв'язані об'єкти можуть бути налаштовані на каскадні операції. Наприклад,

батьківський клас, Album (музичнй альбом), може бути налаштований на каскадне

збереження і/або видалення свого нащадка Track. Це може скоротити час розробки і

забезпечити цілісність. Функція перевірки зміни даних (dirty checking) дозволяє

уникнути непотрібного запису дій в базу даних, виконуючи SQL оновлення тільки

при зміні полів персистентних об'єктів.

Hibernate може використовуватись як у самостійних програмах Java, так і в

програмах Java EE, що виконуються на сервері (наприклад, сервлети чи EJB session

beans). Також він може включатись як додаткова можливість до інших мов

програмування. Наприклад, Adobe інтегрував Hibernate у дев'яту версію ColdFusion

(що запускається на серверах з підтримкою додатків J2EE) з рівнем абстракції нових

функцій і синтаксису, доданих до CFML.

Page 31: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

35

4 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

4.1 Розробка структури системи

Згідно із завданням на бакалаврську дипломну роботу система, що

розробляється повинна мати графічний інтерфейс, модуль звертання до соціальної

мережі та інтеграційний модуль, який зв’язує два вищеназвані. Загальна структура

системи матиме вигляд наведений на рисунку 4.1.

Структура системи визначає її основні структурні елементи. Вона будується

на основі діаграми варіантів використання і визначення основних функцій.

Розроблювана система складається з наступних модулів:

програмний модуль роботи з графічним інтерфейсом;

програмний модуль сервісів системи;

програмний модуль бізнес-логіки;

програмний модуль інтеграції із зовнішніми сервісами (соціальними

мережами).

У свою чергу модуль бізнес логіки розділяється на:

програмний модуль бізнес-об’єктів;

програмний модуль бізнес-компонентів;

програмний модуль роботи з базою даних.

Модуль графічного інтерфейсу (Web App Module) відповідає за відображення

графічного інтерфейсу користувачу, передачу запитів від користувача до модуля

сервісів, обробку та відображення відповіді сервісів на запити. Він містить у собі

набір інтерактивних web-сторінок, які поєднуючись утворюють графічну оболонку

системи (GUI).

Модуль сервісів (Service App Module) містить у собі контролери обробки

запитів з графічного інтерфейсу. Він являється посередником між користувачем та

головною логікою співставляючи відповідні дії користувача на графічному

інтерфейсі до програмних функцій бізнес логіки.

Page 32: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

36

Модуль бізнес-логіки (Business App Module) призначений для обробки

бізнес-об’єктів, роботи з базою даних, запитів до модулю інтеграції з зовнішніми

сервісами.

Модуль інтеграції (Social Integration Module) із зовнішніми сервісами

забезпечує завантаження рекламних даних до соціальних мереж, їх вивантаження,

редагування, видалення, збір статистики що до проходженню рекламних кампаній

та їх рейтинг.

Лістинг модулів системи представлений у додатку Е.

«system»Програма

«subsystem»Модуль графічного

інтерфейсу

«subsystem»Модуль сервісів

«subsystem»Модуль бізнес-логіки

«subsystem»Модуль інтеграції із

зовнішніми сервісами

«subsystem»Модуль бізнес-

об'єктів

«subsystem»Модуль бізнес-

компонентів

«subsystem»Модуль роботи з

базою даних

Рисунок 4.1 – Структура системи

4.2 Розробка діаграм станів системи

Діаграми станів системи включають в себе такі види діаграм:

діаграма послідовності;

діаграма прецендентів.

Page 33: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

37

На діаграмах послідовностей буде показано обмін повідомленнями (тобто

виклик методів) між декількома об’єктами у окремій обмеженій часом ситуації.

Об’єкти є екземплярами класів. Основний наголос на діаграмах послідовностей

робиться на порядок і моментах часу, у які повідомлення надсилаються об’єктам.

На діаграмах послідовностей об’єкти буде показано вертикальними

штриховими лініями з назвою об’єкта над ними. Вісь часу також має вертикальний

напрямок, її спрямовано вниз, повідомлення, які надсилаються від одного об’єкта до

іншого, буде позначено стрілками з назвами операції і параметрів. Діаграма

послідовності зображена у додатку Б.

Діаграма прецедентів — в UML, діаграма, на якій зображено відношення між

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

використання. Діаграма прецедентів є графом, що складається з множини акторів,

прецедентів (варіантів використання) обмежених границею системи (прямокутник),

асоціацій між акторами та прецедентами, відношень серед прецедентів, та

відношень узагальнення між акторами. Діаграми прецедентів відображають

елементи моделі варіантів використання.

Суть даної діаграми полягає в наступному: проектована система

представляється у вигляді безлічі сутностей чи акторів, взаємодіючих із системою за

допомогою так званих варіантів використання. Варіант використання (use case)

служить для опису сервісів, що система надає актору. Іншими словами, кожен

варіант використання визначає деякий набір дій, чинений системою при діалозі з

актором. При цьому нічого не говориться про те, яким чином буде реалізована

взаємодія акторів із системою.

У мові UML є кілька стандартних видів відношень між акторами і варіантами

використання:

асоціації (association relationship);

включення (include relationship);

розширення (extend relationship);

узагальнення (generalization relationship).

Page 34: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

38

При цьому загальні властивості варіантів використання можуть бути

представлені трьома різними способами, а саме — за допомогою відношень

включення, розширення і узагальнення.

Відношення асоціації – одне з фундаментальних понять у мові UML і в тій чи

іншій мірі використовується при побудові всіх графічних моделей систем у формі

канонічних діаграм.

Включення (include) у мові UML — це різновид відношення залежності між

базовим варіантом використання і його спеціальним випадком. При цьому

відношенням залежності (dependency) є таке відношення між двома елементами

моделі, при якому зміна одного елемента (незалежного) приводить до зміни іншого

елемента (залежного). Відношення розширення (extend) визначає взаємозв'язок

базового варіанта використання з іншим варіантом використання, функціональна

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

умов. Діаграма прецендентів системи зображена у додатку В.

4.3 Проектування бази даних

Перед тим як створювати таблиці, форми та інші об'єкти, потрібно задати

структуру бази даних. Добра структура бази даних є основою для створення

адекватної вимогам, ефективної бази даних. Сам процес проектування бази даних

являє собою складний процес проектування відображення опису предметної області

у схему внутрішньої моделі даних. Перебіг цього процесу є послідовністю більш

простих процесів проектування менш складних відображень. Ця послідовність у

процесі проектування весь час уточнюється, вдосконалюється таким чином, щоб

були визначені об'єкти, їх властивості та зв'язки, які будуть потрібні майбутнім

користувачам системи.

Етапи проектування (створення) бази даних можна розділити на такі:

визначення мети створення бази даних;

визначення таблиць, що їх повинна містити база даних;

Page 35: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

39

визначення необхідних у таблиці полів;

завдання індивідуального значення кожному полю;

визначення зв'язків між таблицями;

відновлення структури бази даних;

додавання даних і створення запитів, форм, звітів та інших об'єктів

бази даних;

Відповідно до зв’язку об’єктів та запитів у соціальній мережі Facebook

представлених діаграмою, зображеною на рисунку 4.2, було спроектовано базу

даних MySQL зображену у вигляді ERD – діаграми у додатку Г.

Рисунок 4.2 – Діаграма об’єктів у соц. мережі Facebook5

Page 36: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

40

5 РОЗРОБКА ДОКУМЕНТІВ НА СУПРОВОДЖЕННЯ ПРОГРАМНОГО

ЗАБЕЗПЕЧЕННЯ

5.1 Інструкція програмісту

Дана програмна система написана на мові програмування Java у середовищі

NetBeans 7.2.1. Система має головний Web-модуль, який виконується на стороні

сервера. За допомогою даного модуля здійснюється керування усіма функціями

системи через графічний інтерфейс.

Програма знаходиться на диску на якій є всі необхідні файли для роботи з

даною програмою.

Для запуску усієї системи, апаратне забезпечення, на якому власне і буде

здійснюватися запуск системи повинен мати встановлену Java Virtual Machine з

підтримкою Java Spring Framework під Apache Tomcat 7.0.26.

Мінімальна конфігурація комп’ютера необхідна для роботи програми:

Платформа: Windows, Linux, MacOS;

Разрядність системи: 32/64/86 bit;

Процессор з тактовой частотою не менше 1 ГГц;

ОЗП: 1 Гб і більше;

Реляційна база даних : MySQL, PostgreSQL, Oracle;

Web-броузер: Mozilla Firefox, Chrome, Opera, Internet Explorer;

Для запуску системи необхідно стартувати локальний сервер Apache Tomcat

із задеплоєними у папку Catalina ресурсами проекту.

5.2 Інструкція користувачеві

Для запуску системи необхідно відкрити web-браузер та ввести у його адресній стрічці наступну адресу: http :// localhost :8080/ appservice / , після чого на

Page 37: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

41

Рисунок 5.1 – Вікно завантаження рекламних кампаній

екрані монітора ви побачите головне вікно програми зображене на рисунку 5.1 з

якого ви можете здійснювати завантаження власних рекламних кампаній за

вибраними ознаками (статус, ідентифікатор у соц.мережі).

Щоб створити нове оголошення необхідно натиснути на напис, у вигляді

посилання Create page, після чого відкриється нове вікно на сторінці браузера

(рисунок 5.2), де буде можливість введення основних параметрів рекламного

оголошення. Для завершення створення оголошення і отримання кінцевого

результату, потрібно перейти на сторінку Upload page (рисунок 5.3) і завантажити

створені кампанії на відповідну соціальну мережу.

Page 38: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

42

Рисунок 5.2 – Вікно створення рекламної кампанії

Page 39: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

43

Рисунок 5.3 – Вікно завантаження рекламної кампанії

У разі успішного створення заданого рекламного оголошення, користувачу у

відповідь повернеться ідентифікаційний номер реклами на відповідній соціальній

мережі.

Page 40: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

44

6 ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

Тестування програмного забезпечення - процес дослідження програмного

забезпечення (ПО) з метою отримання інформації про якість продукту.

Існуючі на сьогоднішній день методи тестування ПО не дозволяють

однозначно і повністю виявити всі дефекти і встановити коректність

функціонування аналізованої програми, тому всі існуючі методи тестування діють в

рамках формального процесу перевірки досліджуваного або розроблюваного ПЗ.

Такий процес формальної перевірки або верифікації може довести, що

дефекти відсутні з точки зору використовуваного методу. (Тобто немає ніякої

можливості точно встановити або гарантувати відсутність дефектів у програмному

продукті з урахуванням людського фактора, присутнього на всіх етапах життєвого

циклу ПЗ).

Існує безліч підходів до вирішення задачі тестування та верифікації ПЗ, але

ефективне тестування складних програмних продуктів - це процес надзвичайно

творчий, не зводиться до прямування строгим і чітким процедурам або створення

таких.

Існує кілька ознак, за якими прийнято робити класифікацію видів тестування.

Зазвичай виділяють такі:

По об'єкту тестування:

Функціональне тестування (functional testing);

Тестування продуктивності (performance testing);

Навантажувальне тестування (load testing);

Стрес-тестування (stress testing)

Тестування стабільності (stability / endurance / soak testing);

Юзабіліті-тестування (usability testing);

Тестування інтерфейсу користувача (UI testing);

Тестування безпеки (security testing);

Тестування локалізації (localization testing);

Page 41: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

45

За ступенем автоматизації:

Ручне тестування (manual testing);

Автоматизоване тестування (automated testing);

Напівавтоматизоване тестування (semiautomated testing).

За ступенем ізольованості компонентів:

Компонентне (модульне) тестування (component / unit testing);

Інтеграційне тестування (integration testing);

Системне тестування (system / end-to-end testing).

Оскільки система складається переважно з модулів, було обрано інтеграційне

автоматизоване тестування функціональності та стабільності за допомогою

спеціального фреймворку для тестування JUnit.

JUnit — бібліотека для тестування програмного забезпечення для мови Java.

Створений Кентом Беком і Еріком Ґаммою, JUnit є представником родини

фреймворків xUnit для різних мов програмування, яка бере початок у SUnit Кента

Бека для Smalltalk. JUnit породив екосистему розширень — JMock, EasyMock,

DbUnit, HttpUnit, Selenium тощо.

Досвід одержаний при роботі з JUnit був важливим у розробці концепцій

тестування програмного забезпечення.

Функціональність

junit.framework.Assert

assertEquals

assertFalse

assertNotNull

assertNull

assertNotSame

assertSame

assertTrue

junit.framework.TestCase extends junit.framework.Assert

run

Page 42: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

46

setUp

tearDown

Приклад такого тестування наведено нижче: import org.apache.log4j.Logger;import org.junit.*;import java.io.IOException;import java.util.Date;import java.util.concurrent.TimeUnit;

import static junit.framework.Assert.*;/** * Tests AdCampaignOperations */public class TestAdCampaignOperations extends AbstractExtendedFacebookApiTest { private static AdCampaignOperations adCampaignOperation; private static AdCampaignOperations adRTBCampaignOperation; private static Long CAMPAIGN_ID; private static Logger logger = Logger.getLogger(TestAdCampaignOperations.class); /** * Sets the parameters */ @BeforeClass public static void setUp() { adRTBCampaignOperation = extendedRTBFacebookTemplate.getAdCampaignOperation(); adCampaignOperation = extendedFacebookTemplate.getAdCampaignOperation(); AdCampaign campaign = adCampaignOperation.createCampaign(ACCOUNT_ID, "My First campaignCCC", 100, 0, 0, 0, 0); CAMPAIGN_ID = campaign.getId(); System.out.println("Campaign ID is " + CAMPAIGN_ID); }

/** * Prints out results */ @AfterClass public static void after() { System.out.println("In After"); System.out.println("Campaign ID is " + CAMPAIGN_ID); adCampaignOperation.deleteCampaign(CAMPAIGN_ID); }

@Test public void testCreateAdCampaignWithValidData() throws IOException { long accountId = ACCOUNT_ID; String name = "test"; long dailyBudget = 100L; logger.info("all attributes - valid"); AdCampaign campaign = adCampaignOperation.createCampaign(accountId, name, dailyBudget,

0L, 0L, 0L, 0); try { TestCase.assertEquals("testCreateAdCampaignWithValidData error: ", campaign.getDailyBudget(), dailyBudget); } finally { adCampaignOperation.deleteCampaign(campaign.getId()); } }

Page 43: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

47

Даний тест перевіряє чи коректно завантажилась компанія до соціальної

мережі та чи відповідає її бюджет до необхідного. Результат роботи тесту зображено

на рисунку 6.1.

Рисунок 6.1 – Результат роботи автоматизованого тесту

Page 44: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

48

7 ОХОРОНА ПРАЦІ

Основи охорони праці – технічна дисципліна, яка вивчаться з ціллю оволодіння

майбутніми спеціалістами знаннями та напрацювання навичок з організаційних та

правових питань охорони праці, з аспектів виробничої санітарії та гігієни праці,

техніки безпеки та пожежної безпеки, що відповідає державним стандартам освіти.

Крім того, метою вивчення дисципліни є формування активної позиції стосовно

прикладної реалізації принципу пріоритетності охорони життя та здоров’я

працівників по відношенню до результатів трудового процесу.

Еволюційно склалося, що охорона праці як галузь науки виникла на перетині

соціально-правових, медичних та технічних наук, науки про людину. Так як

основним об'єктом охорони праці є саме людина під час трудової діяльності, то під

час розробки вимог виробничої санітарії використовуються результати досліджень

ряду медичних і біологічних дисциплін.

Метою роботи є проведення атестації робочого місця за умовами праці, яке

знаходиться в приміщені, що пов'язане з напрямком майбутнього спеціаліста після

завершення вищого учбового закладу.

У даній роботі з «Основ охорони праці» з використанням нормативної

літератури здійснюється аналіз шкідливих та небезпечних виробничих чинників у

виробничому приміщенні (описання і класифікація потенційно шкідливих та

небезпечних чинників, визначення можливих причини виникнення цих чинників і

короткий опис їхньої дії на організм людини); здійснюється заповнення карти умов

праці (оцінка факторів виробничого і трудового процесів, гігієнічна оцінка умов

праці, оцінка технічного і організаційного рівня, атестація робочого місця);

вказуються рекомендації щодо поліпшення умов праці, а також здійснюється

розрахунок та вибір методів захисту від домінуючого шкідливого або небезпечного

виробничого фактору. Завдання на роботу представлено у додатку Д.

Page 45: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

49

7.1 Аналіз небезпечних та шкідливих виробничих факторів у виробничому

приміщенні

Під час роботи в даному приміщенні, виникають ряд небезпечних і

шкідливих виробничих факторів, що регламентуються [17].

Шкідливий виробничий фактор – це небажане явище, яке супроводжує

виробничий процес і вплив якого на працюючого може призвести до погіршення

самопочуття, зниження працездатності, захворювання, виробничо зумовленого чи

професійного, і навіть смерті, як результату захворювання.

Небезпечний виробничий фактор – це небажане явище, яке супроводжує

виробничий процес і дія якого за певних умов може призвести до травми або іншого

раптового погіршення здоров’я працівника (гострого отруєння, гострого

захворювання) і навіть до раптової смерті.

Часто всі несприятливі виробничі чинники об’єднують в єдине поняття –

небезпечний та шкідливий виробничий фактор.

Визначальними ознаками небезпечних та шкідливих виробничих факторів є:

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

нормального функціонування органів працівника; можливість порушення

нормального стану елементів виробничого процесу, в результаті якого можуть

виникати аварії, вибухи, пожежі, травматизм.

Вказане приміщення характеризується небезпечними та шкідливими

виробничими факторами фізичної, хімічної, біологічної та психофiзiологiчної груп

[18], які класифікуються так:

а) Фізичні небезпечні i шкідливі виробничі фактори:

підвищений рівень інфразвуку, шуму, ультразвуку та вібрації;

підвищений рівень електромагнітних випромінювань;

високе значення напруги в електричній мережі;

підвищена або понижена температура, вологість і швидкість руху

повітря робочої зони;

підвищена інтенсивність теплового випромінювання;

Page 46: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

50

недостатність або відсутність природного освітлення;

недостатня освітленість робочої зони;

пряма або відбита блискучість.

б) Хімічні небезпечні i шкідливі фактори – шкідливі хімічні речовини.

в) Біологічні небезпечні i шкідливі виробничі фактори – немає.

г) Психофiзiологiчнi небезпечні i шкідливі виробничі фактори:

фізичні перевантаження – немає.

нервово-психiчнi перевантаження: перенапруження аналізаторів;

монотонність праці.

Вкажемо можливі причини виникнення вказаних чинників і стисло опишемо

їхній вплив на організм людини.

Підвищений рівень шуму і вібрації робочої зони спричиняється роботою

таких елементів комп'ютерів, як жорсткий диск, вентилятори блоку живлення,

охолодження мікропроцесора, швидкісні CD-ROM (DVD-ROM), механічні сканери,

пересувні механічні частини принтера, що може викликати швидку стомленість

працюючого, погіршення слуху, нервові розлади.

Підвищений рівень інфразвуку спричиняється вентиляторами та іншими

рухомими елементами обладнання з частотою рухів менше 20 Гц або 1200 об/хв, що

супроводжується вiдчуттям обертання, розхитування, почуттям тревоги, страху,

бiллю у вухах, порушенням роботи органiв рiвноваги.

Підвищений рівень ультразвуку може бути викликаний як супутній фактор

при експлуатації технологічного і вентиляційного устаткування, що може викликати

зсуви у станi неpвової, серцево-судинної, дихальної, ендокринної системах

органiзму, у обмiнi речовин та терморегуляцiї працівника.

Підвищений рівень електромагнітних випромінювань радіочастотного

діапазону спричиняється вимірювальними та контролюючими пристроями,

дослідницькими установками, а також ЕОМ, що може викликати катаракту, при якій

помутніння розвивається на мембрані кришталика, підвищену частоту захворювання

глаукомою, а під дією підвищеної концентрації пилу поблизу екрана дисплея

Page 47: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

51

підвищується імовірність виникнення дерматитів обличчя (прищі, екземи, свербіж

шкіри).

Підвищений рівень електромагнітних випромінювань промислової частоти

спричиняється струмоведучими частинами працюючих електроустановок, що може

викликати порушення регуляції фізіологічних функцій організму, внаслідок дії

електричного поля на різні відділи нервової системи і на структури головного і

спинного мозку.

Високе значення напруги в електричній мережі спричиняється

використанням ЕОМ, світильників, копіювальної техніки, кондиціонерів, що може

викликати больовий шок, знепритомніння, одержання опіків при щільному контакті

зі струмоведучими частинами.

Підвищена або понижена температура повітря робочої зони спричиняється

тим, що робота ПК приводить до підвищення температури в приміщенні, тому що

високопродуктивна техніка працює на надвисоких частотах, що викликає сильне

нагрівання елементів. Це може викликати перегрів або переохолодження організму

працівника.

Підвищена або понижена відносна вологість повітря робочої зони

спричиняється різною кількістю води, що випаровується у приміщенні,

метрологічними умовами поза приміщенням, що може викликати зменшення або

збільшення тепловіддачі організмом людини, що сприяє його перегріванню або

переохолодженню.

Підвищена або понижена швидкість руху повітря робочої зони

спричиняється нераціональними параметрами системи вентиляції або її відсутністю,

що може викликати порушення реакції терморегуляції організму людини.

Підвищена інтенсивність теплового випромінювання спричиняється теплом,

що потрапляє у виробниче приміщення від обладнання, опалювальних приладів,

людей тощо, що може викликати перегрівання організму людини.

Недостатність або відсутність природного освітлення спричиняється

відсутністю або недостатніми розмірами віконних пройм, а також наявністю

конфронтуючих будинків та споруд. Відсутність або недостатність природного

Page 48: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

52

освітлення приводить до напруження зору, послабляє увагу, приводить до настання

передчасної стомленості.

Недостатня освітленість робочої зони спричиняється відсутністю або

недостатністю природного освітлення, нераціональним розташуванням світильників

та ламп штучного освітлення тощо. Недостатня освітленість може стати причиною

низької продуктивності праці, оскільки очі працівника перенапружуються, при

цьому стає складно відрізнити оброблювані предмети.

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

неплоскою зовнішньою поверхнею екрану монітора, що може призвести до швидкої

втоми органів зору працюючого.

Шкідливі хімічні речовини в повітрі робочої зони спричиняються виділенням

пилу, озону, оксидів азоту й аероіонізації під час роботи за комп'ютером. У

приміщеннях із ПК оператори піддаються впливу пилу, що притягається до

працівника і сильно наелектризованого обладнання. Основними джерелами озону на

комп'ютеризованих місцях є електронно-променеві трубки відеотерміналів та

лазерні принтери. При роботі ПК виникає іонізація середовища, що приводить до

фізико-хімічних змін у структурі речовин. У деяких людей вплив сильної

запиленості приміщення може викликати алергію. Оксиди азоту чинять подразливу

дію на органи дихання, викликаючи кашель, блювоту, іноді головний біль. Озон є

дуже сильним окисником і при концентрації вище ніж 0,1 мг/м3 шкідливо впливає на

здоров’я людини. Озон можна виявити за запахом, або за сухістю та подразненням

слизових оболонок. При більших концентраціях появляються головні болі,

нездужання. При тривалій роботі в високоіонізованому повітряному середовищі

може виникнути сильна перевтома, що може послабити захисні властивості

організму та імунітет до інших захворювань.

Перенапруження аналізаторів спричиняється інтенсивною роботою за ЕОМ,

що призводить до швидкої втоми органів зору працюючого і навіть до погіршення

зору.

Монотонність праці спричиняється розвитком напівавтоматичного

виробництва і автоматизованих систем керування, оскільки основними функціями

Page 49: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

53

працівника за таких умов стають нескладні, одноманітні рухи, які повторюються

тисячі разів за зміну, або функції спостереження, керування і контролю за роботою

системи і призводить до швидкої втоми працівника, зниження функціональних

можливостей організму та інтересу до роботи, сонливості. Монотонність викликає

також у працюючого гіподинамію, підвищену текучість кадрів, розвиток неврозів.

7.2 Карта умов праці

Карта умов праці потрібна з метою проведення атестації робочого місця за

умовами праці. В таблиці 7.1 наведено оцінку факторів виробничого і трудового

процесів.

Таблиця 7.1 - Оцінка факторів виробничого і трудового процесів

Фактори виробничого середовища і трудового

процесу

Нормативне значення

(ГДР, ГДК)

Фак

тичн

е з

наче

ння 3-й клас: шкідливі

умови і характер праці

ни-жнє

вер-хнє

І ступінь

ІІ ступінь

ІІІ ступінь

Шкідливі хімічні речовини:1-й клас небезпеки – –2-й клас небезпеки 4 5,57 +3-й, 4-й класи небезпеки – –Вібрація 76 78 +Шум 50 29Інфразвук 110 58Ультразвук 110 60Неіонізуючі випромінювання: радіочастотний діапазон 3 9 + діапазон промислової частоти 5 3,32

Page 50: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

54

Продовження таблиці 7.1

Фактори виробничого середовища і трудового

процесу

Нормативне значення

(ГДР, ГДК)

Фак

тичн

е з

наче

ння 3-й клас: шкідливі

умови і характер праці

ни-жнє

вер-хнє

І ступінь

ІІ ступінь

ІІІ ступінь

оптичний діапазон 0 0Мікроклімат у приміщенні: температура повітря, С 15 21 26 швидкість руху повітря, м/с 0,4 0,5 + відносна вологість повітря, % 75 61

інтенсивність теплового випромінювання, Вт/м² 140 203 +

Виробниче освітлення: розряд зорових робіт 4 4 КПО для природного освітлення, % 1,5 1,6

освітленість для штучного освітлення, лк 200 78 +

Кількість факторів – – – 5 1 0

1. Гігієнічна оцінка умов праці:

Підвищена концентрація шкідливої хімічної речовини 2-го класу

небезпеки – 1 ст.

Підвищений рівень вібрації – 1 ст.

Підвищений рівень неіонізуючих випромінювань радіочастотного

діапазону – 1 ст.

Підвищена швидкість руху повітря в холодний період року – 1 ст.

Підвищена інтенсивність теплового випромінювання – 1 ст.

Недостатня освітленість робочої зони штучним освітленням – 2 ст.

2. Оцінка технічного й організаційного рівня:

Технічний рівень робочого місця не відповідає нормативним вимогам.

3. Атестація робочого місця:

Робоче місце атестовано за другим ступенем шкідливості.

Page 51: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

55

7.3 Рекомендації щодо покращення умов праці

З метою забезпечення чистоти повітря робочої зони потрібно доповнити

природну вентиляцію механічною.

Для забезпечення допустимих параметрів вібрації в приміщенні потрібно

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

вибору маси та жорсткості системи, що коливається.

З метою забезпечення нормованих параметрів неіонізуючих випромінювань

радіочастотного діапазону в приміщенні необхідно застосувати захист часом або

відстанню.

Для забезпечення нормованих параметрів швидкості руху повітря в

приміщенні потрібно зменшити число обертів вентилятора.

Для забезпечення нормованих параметрів інтенсивності теплового

випромінювання в приміщенні потрібно використати кондиціювання повітря.

Для забезпечення нормованих параметрів освітленості для штучного

освітлення в приміщенні потрібно збільшити потужність/кількість ламп в

освітлювальних установках.

7.4 Розрахунок точковим методом локалізованого штучного освітлення

Вихідні дані: розміри локальної ділянки приміщення (м): 8 × 5 × 3,3.

З точки зору задач зорової роботи, згідно [17] знаходимо, що вони

відносяться до ІV розряду зорових робіт. Вибираємо контраст об’єкта з фоном –

великий, а характеристику фону – середню, яким відповідає підрозряд зорових робіт

г.

Нормативні значення коефіцієнта природного освітлення (КПО) та

мінімальні значення освітленості при штучному освітленні приведені в таблиці 7.2.

Page 52: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

56

Таблиця 7.2 – Нормативні значення коефіцієнта природного освітлення та мінімаль-

ні освітленості при штучному освітленні

Хар

акте

рист

ика

зоро

вої р

обот

и

Най

менш

ий

розм

ір о

б’єк

та

розр

ізне

ння,

мм

Розр

яд з

оров

ої

робо

тиП

ідро

зряд

зор

ової

ро

боти

Кон

трас

т об

’єкт

а ро

зріз

ненн

я з

фон

ом

Хар

акте

рист

ика

фон

у

Освітленість при штучному

освітленні, лк

КПО для бокового

освітлення, %

При

родн

ого

Сум

іщен

ого

комбіноване

зага

льне

всьо

го у т. ч. від загального

Середньої точності 0,5-1 IV г великий сере-

дній 300 150 150 1,5 0,9

Відповідно до рекомендацій [19] розрахунок загального локалізованого

штучного освітлення проведемо за допомогою точкового методу. В цьому методі

початково приймається, що світовий потік в кожному світильнику рівний 1000 лк.

Світловий потік ламп світильників загального локалізованого штучного

освітлення визначається за формулою:

eEК

Ф ЗЛ

1000

 [лм], (7.1)

де Е – нормована освітленість при загальному штучному освітленні, лк;

Кз – коефіцієнт запасу (для виробничих приміщень К3 = 1,3...1,5);

– коефіцієнт, що враховує відбиту складову освітленості;

е – сумарна умовна освітленість від найближчих світильників в контрольній

точці, лк.

Сумарна освітленість від найближчих світильників в контрольній точці

визначається за номограмами в залежності від відстані до світильника d та висоти

світильника над робочою поверхнею h.

Висоту світильника над робочою поверхнею знайдемо за формулою:

Page 53: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

57

h = H – hз – hр [м], (7.2)

де hз – висота звісу світильника (hз = 0,15 м);

hр – висота умовної робочої поверхні (hр = 0,8 м).

Знайдемо відстань між рядами світильників за формулою

Lp = b / np [м], (7.3)

де b – ширина приміщення, м;

np – кількість рядів світильників, шт.

Для забезпечення рівномірності освітлення розташовуємо світильники в

nр = 2 ряди.

Підставляючи відомі значення у формули (7.2, 7.3) одержимо:

Згідно таблиці 5.2 Е = 150 лк.

Вибираємо коефіцієнт запасу К3 = 1,3...1,5 = 1,4.

Для загального штучного освітлення приймаємо  = 1…1,2 = 1,1.

Контрольна точка А освітлюється чотирма світильниками, що пронумеровані

числами 1…4 і показані на рисунку 7.1.

Cумарна освітленість від найближчих світильників в контрольній точці e

визначається за допомогою просторових ізолюксів в залежності від співвідношень

величин d і h.

Page 54: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

58

2 4 2

1,25

2,5 5

1,25 2

8

Рисунок 7.1. Схема розташування контрольної точки А відносно світильників

Дані, щодо визначення сумарної умовної освітленості від найближчих

світильників в контрольній точці e для світильників УПД, оформимо у вигляді

таблиці 7.3.

Визначимо світловий потік для кожної лампи

NФФл

[лм], (7.4)

де N – кількість ламп, шт.

4 2

13

А

Page 55: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

59

Таблиця 7.3 – Дані, щодо визначення сумарної умовної освітленості від

найближчих світильників в контрольній точці

Номер світильника Відстань d, м Умовна освітленість e,

лк

1 2,358 17,5

2 2,358 17,5

3 2,358 17,5

4 2,358 17,5

e = 70

Відповідно до рисунка 7.1 N = 4 шт.

Після підстановки відомих значень у формули (7.1, 7.4) отримаємо:

Відповідно до [19] за отриманим значенням вибираємо лампу Б-60 з

Фл = 715лм.

Page 56: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

60

ВИСНОВКИ

В даній роботі було розглянуто існуючі системи управляння контекстною

рекламою у соціальних мережах та виокремлено їх головні недоліки. Після аналізу

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

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

кампаніями у різноманітних соціальних мережах.

Проведено аналіз основних функції що повинна виконувати система, обрано

мову програмування, технологічні рішення для створення системи, розроблено

архітектуру та структуру програми, діаграму використання та діаграму

послідовності. Спроектовано схему бази даних та проведено тестування

розробленого програмного додатку.

З використанням нормативної літератури було здійснено аналіз шкідливих та

небезпечних виробничих факторів у виробничому приміщенні (описання і

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

причини виникнення цих факторів і короткий опис їхньої дії на організм

працівника); карта умов праці; рекомендації щодо покращення умов праці, а також

здійснено розрахунок точковим методом локалізованого штучного освітлення.

Page 57: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

61

ЛІТЕРАТУРА

1 Яндекс.Метрика Vs. Google Analytics. [Електронний ресурс]: Яндекс.Метрика

Vs. Google Analytics. – Временно.нет // Временно.нет. – Режим доступу:

http://vremenno.net/seo/metrika-vs-google-analytics/ – Назва з екрану.

2 Яндекс.Метрика. [Електронний ресурс]: Яндекс.Метрика. – Вікіпедія //

Вікіпедія. – Режим доступу: http://uk.wikipedia.org/wiki/Яндекс.Метрика –

Назва з екрану.

3 Google Analytics. [Електронний ресурс]: Google Analytics – Вікіпедія //

Вікіпедія. – Режим доступу: http://ru.wikipedia.org/wiki/Google_Analytics –

Назва з екрану.

4 Огляд AdWords. [Електронний ресурс]: Огляд AdWords. – AdWords довідка //

Google. – Режим доступу: https://support.google.com/adwords/bin/answer.py?

hl=uk&answer=1704410&topic=1713894&ctx=topic – Назва з екрану.

5 Технологія розробки інформаційних систем таргетування контекстної реклами

в соціальних мережах // ВНТУ – ВНТУ . – Режим доступу:

http://conf.vntu.edu.ua/allvntu/2013/inaeksu/txt/topolyuk.pdf – Назва з екрану.

6 Контекстна реклама. [Електронний ресурс]: Контекстна реклама – Рекламне

агентство Метастудія // Рекламне агентство Метастудія. – Режим доступу:

http://www.metastudio.com.ua/ua/uslugi/sozdanie_i_reklama_veb-sajtov/internet-

reklama/kontekstnaja_reklama/ – Назва з екрану.

7 Точная реклама. [Електронний ресурс]: Точная реклама – ВКонтакте //

ВКонтакте. – Режим доступу: http://vk.com/ads?section=target – Назва з екрану

8 Рейтинг кліків. [Електронний ресурс]: Рейтинг кліків – Вікіпедія // Вікіпедія.

– Режим доступу: http://uk.wikipedia.org/wiki/Рейтинг кліків – Назва з екрану

9 Конверсія. [Електронний ресрурс]: Конверсія – Вікіпедія // Вікіпедія. – Режим

доступу: http://uk.wikipedia.org/wiki/Конверсія – Назва з екрану

10 Архітектура програмного забезпечення [Електронний ресурс]: Архітектура

програмного забезпечення – Вікіпедія // Вікіпедія. – Режим доступу:

Page 58: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

62

http://uk.wikipedia.org/wiki/Архітектура_програмного_ забезпечення – Назва з

екрану

11 Чернецки К. Порождающее программирование. Методы, инструменты,

применение / Чернецки К., Айзенекер У. – СПб.: Питер, 2005. – 730 с.

12 ISO / IEC 42010:2007 Software engineering – Product quality – Part 4: Quality in

use metrics [Електронний ресурс]: International Organization for Standardization /

International Electrotechnical Commission – 2004. – C.105. – Режим доступу:

http://www.management.uz/images/file/ISO9126-4.pdf – Назва з екрану.

13 Эммерих В. Конструирование распределенных объектов. Методы и средства

программирования интероперабельных объектов в архитектурах OMG/

CORBA, Microsoft COM и Java RMI / Эммерих В. – М.: Мир, 2010. – 510 с.

14 ISO 9001:2008 Системы менеджмента качества. Требования [Електронний

ресурс]: Международной Организации по Стандартизации / Международной

Организации по Стандартизации. – 2008. – Режим доступу:

http://smk.nspu.ru/file.php/1/GOST_R_ISO/_9001-2008.pdf – Назва з екрану.

15 Рефакторинг [Електронний ресурс]: Рефакторинг – Вікіпедія // Вікіпедія. –

Режим доступу: http://uk.wikipedia.org/wiki/ Рефакторинг – Назва з екрану.

16 Бернакевич І. Є. Програмування мовою Java: використання фундаментальних

класів: Тексти лекцій. / Бернакевич І. Є., Вагін П.П. – Львів: Видавничий

центр ЛНУ імені Івана Франка, 2010. – 48 с.

17 ДСТУ 2293-99. Охорона праці. Терміни і визначення.

18 ПДК 4617-88. Список ПДК вредных веществ в воздухе рабочей зоны.

19 ДСН 3.3.6.039-99. Санітарні норми виробничої та загальної вібрацій.

20 ДСН 3.3.6-037-99. Державні санітарні норми виробничого шуму, ультразвуку

та інфразвуку.

21 ДСН 239-96. Санітарні норми і правила захисту населення від впливу

електромагнітних випромінювань.

22 ДСН 3.3.6.042-99. Санітарні норми мікроклімату виробничих приміщень.

23 ДБН В.2.5-28-2006. Природне і штучне освітлення.

Page 59: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

63

24 Порядок проведення атестації робочих місць за умовами праці (Затверджено

постановою КМУ від 1 серпня 1992 року № 442).

Page 60: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

64

ДОДАТКИ

Page 61: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

 

Користувачі

Компоненти графічного інтерфейсу

 

Контролери обробки запитів з графічного інтерфейсу

Бізнес-логіка

Інтерфейси сервісу сервера

Бізнес-об’єкти

Компоненти доступу до баз данихЗасоби зв’язку із зовнішніми сервісами

База даних Зовнішні сервіси

Ком

унікації

Управління операціям

и

Безпека

65

Додаток А (Обов’язковий)

Архітектура системи

Page 62: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

66

Додаток Б (Обов’язковий)

UML – діаграма послідовності завантаження кампанії до соц.мережі

Кори

стув

ач Іт

ерф

ейс

Мод

уль

голо

вної

лог

іки

База

дан

их

Нат

исне

ння

кноп

ки U

ploa

dВи

клик

фу

нкці

ї за

вант

ажен

няЗа

пит

дани

х пр

о ка

мпан

ію

Фор

мува

ння

бізн

ес-о

б'єк

та

камп

анії

Відо

браж

ення

ст

атус

зб

ереж

ення

Отр

иман

ня

дани

х з

табл

иць

Мод

уль

робо

ти

з баз

ою д

аних

Оно

влен

ня м

одел

і да

них

Фор

мува

ння

запи

ту д

ля

зава

нтаж

ення

да

них

з БД

Фор

мува

ння

моде

лі

водо

браж

ення

ст

атус

у

Мод

уль

інте

грац

ії Fa

cebo

ok A

PI

Викл

ик

функ

ції

зава

нтаж

ення

Ві

дпра

влен

я за

питу

зб

ереж

ення

да

них

Отр

иман

ня

відп

овід

і про

ст

атус

зб

ереж

ення

Збер

ежен

ня

дани

х пр

о ка

мпан

ію т

а її

розм

іщен

ня у

ме

реж

іФ

орму

ванн

я по

відо

млен

ня

про

стат

ус

збер

ежен

ня

Page 63: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

67

Додаток В (Обов’язковий)

UML – діаграма варіантів використання

Кор

исту

вач

Вказ

ати

ім'я

камп

анії

Вибр

ати

карт

инку

для

ка

мпан

ї

Ств

орит

и ре

клам

ну

камп

анію

Від

прав

ити

рекл

амну

ка

мпан

ію

<inc

lude>

Чита

ння

БДЗапи

с в

БД

Сис

темн

ий

прог

рамі

ст

Пер

евір

ка Б

Д

Тест

уван

ня П

З

Мон

ітори

нг П

З

<ext

end>

Інте

рфей

с

Запи

т до

ін

терф

ейсу

Зава

нтаж

ити

рекл

амну

ка

мпан

ію Вказ

ати

бюдж

ет

камп

анї

<inc

lude>

Ввес

ти за

голо

вок

камп

анї

Вибр

ати

тарг

етин

г для

ці

льов

ої а

удит

орії

<inc

lude>

<inc

lude>

Фор

мува

ння

запи

ту д

о

соці

льно

ї мер

ежі

<use

s>

<inc

lude>

Face

book

API

Шаб

лон

запи

тів

База

дан

их<e

xten

d>

<ext

end>

<ext

end>

<ext

end>

<ext

end>

<ext

end>

Вибр

ати

міс

то

прож

иван

няВи

брат

и кр

аїну

пр

ожив

ання

Вказ

ати

вік

Вказ

ати

унів

ерси

тет

<inc

lude>

<inc

lude>

<inc

lude>

<inc

lude>

<ext

end>

Вказ

ати

id к

апан

ії

Вказ

ати

стат

ус

капа

нії

<inc

lude>

<inc

lude> Вв

ести

тіл

о к

ампа

нї

<inc

lude>

<ext

end>

Шаб

лон

стат

усів

Обр

обит

и ві

дпов

ідь

соці

альн

ої м

ереж

і

<inc

lude>

<ext

end>

<ext

end>

<ext

end>

<inc

lude>

<use

s>

Page 64: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

68

Додаток Г (Обов’язковий)

ERD – схема бази даних

Page 65: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

69

Додаток Д (Додатковий)

Завдання для розрахунку розділу охорони праці

Фактори виробничого середовища Норматив Фактичне значення

Призначення приміщення розробкаСклад повітря робочої зони

ПДК 4617-88

Шкідлива речовина пил зерновийКонцентрація шкідливої речовини в повітрі робочої зони, мг/м3

5,57

Віброакустичні коливанняВид вібрації ДСН 3.3.6

.039-99локальна

Еквівалентний рівень віброприскорення, дБ 78Еквівалентний рівень шуму, дБА ДСН

3.3.6-037-99

29Рівень інфразвуку, дБ 58Рівень ультразвуку, дБ 60

Неіонізуючі випромінювання

ДС

Н 2

39-9

6Напруженість електричного поля радіочастотного діапазону, В/м

9

Напруженість електричного поля промислової частоти, кВ/м

3,32

Довжина хвилі випромінювання оптичного діапазону, нм

Сан

ПиН

 580

4-91

0

Тривалість впливу випромінювання оптичного діапазону, с

0

Доза опромінення оптичного діапазону, Дж 0Мікроклімат

ДС

Н 3

.3.6

.042

-99Енерговитрати, Вт 207

Період року холоднийТемпература повітря для постійних робочих місць, С

26

Відносна вологість повітря, % 61Швидкість руху повітря, м/с 0,5Iнтенсивність теплового випромінювання, Вт/м² 203

Виробниче освітлення

ДБН

В.2

.5-2

8-20

06

Найменший розмір об’єкта розрізнення, мм 0,78Контраст об’єкта розрізнення з фоном великийХарактеристика фону середнійКПО для бокового, природного освітлення, % 1,6Освітленість для загального штучного освітлення, лк

78

Варіант розрахункового завдання 70

Page 66: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

70

Додаток Е (Обов’язковий)

Лістинг програми

CreationPage.jsp<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<spring:eval expression="@applicationProps['application.version']" var="applicationVersion"/>

<spring:url value="/resources/{applicationVersion}" var="resourceUrl"> <spring:param name="applicationVersion" value="${applicationVersion}"/></spring:url>

<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Create Page</title> <link rel="shortcut icon" href="${resourceUrl}/images/favicon.ico"> <link rel="stylesheet" type="text/css" href="${resourceUrl}/resources/css/login.css"/> <link rel="stylesheet" type="text/css" href="${resourceUrl}/resources/css/testpage.css"/> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> <script type="text/javascript" src="${resourceUrl}/testScripts.js"></script> </head> <body class="bodyCls"> <div id="resultBody" class="theme_rounded create" style="height: 975px;"> <h1>Create page</h1> <div class="create_content" style="height: 835px;"> <fieldset class="campaign_create"> <legend>Campaign create</legend> <input name="campaignId" placeholder="Campaign id" id="created_campaignId"/> <input name="accountId" placeholder="Account id" id="accountId"/> <input name="name" placeholder="Campaign name" id="campaignName"/> <input name="dailyBudget" placeholder="Daily budget" id="dailyBudget"/> <input name="lifetimeBudget" placeholder="Life Time Budget" id="lifetimeBudget"/><br /> <input type="button" value="Create campaign" onclick="createCampaignHandler('create');"/> <input type="button" value="Update campaign" onclick="createCampaignHandler('update');"/> </fieldset> <div class="created_campaign"></div> <form:form method="POST" id="myForm" commandName="adgroup" enctype="multipart/form-data"> <fieldset class="campaign_create" style="height: 500px;"> <legend>AdGroup create</legend> <label>AdGroupId : <form:input id="adgroupId" path="adgroupId" /></label> <label>CampaignID : <form:input id="campaignId" path="campaignId" /></label> <label>AdGroupName : <form:input id="adgroupName" path="adgroupName" /></label> <label>MaxBid : <form:input id="maxBid" path="maxBid" /></label> <fieldset class="campaign_create cretive"> <legend>Creative</legend> <label>Title : <form:input id="creativeTitle" path="creativeTitle" /></label> <label>Body : <form:input id="creativeBody" path="creativeBody" /></label> <spring:bind path="adgroup.creativeImage"> <label>Creative image : <input type="file" id="fileToUpload" onchange="check_file()" name="${status.expression}"/></label> </spring:bind> </fieldset> <fieldset class="campaign_create cretive" style="height: 200px;"> <legend>Targeting</legend> <label>Country : <form:input id="targetingCountry" path="targetingCountry" /></label> <label>Region : <form:input id="targetingRegion" path="targetingRegion" /></label> <label>City : <form:input id="targetingCity" path="targetingCity" /></label> <label>Zip : <form:input id="targetingZip" path="targetingZip" /></label> <label>Keyword : <form:input id="targetingKeyWord" path="targetingKeyWord" /></label>

Page 67: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

71

<label>College : <form:input id="collegeName" path="collegeName" /></label> </fieldset> <input type="button" onclick="createAdgroupHandler('create');" value="Create/Update" /> <div style="margin-top: 15px;" class="created_adgroup">${result}</div> </fieldset> <fieldset class="campaign_create cretive" style="height: 175px;"> <legend>Statistic report create</legend> <label>Profile id : <input id="reportprofileId" placeholder="Enter profile id in target"/></label> <label>Start time : <input id="reportStartTime" placeholder="Enter date (MM/dd/yy)"/></label> <label>End time : <input id="reportEndTime" placeholder="Enter date (MM/dd/yy)"/></label> <label>Include zero values : <input id="includeZeroValues" type="checkbox"/></label> <input type="button" value="Generate report" onclick="generateReport();"/> <div style="margin-top: 3px;" id="reportUrl"></div> </fieldset> </form:form> </div> <a class="navigate_link" href="<c:url value="downloadpage.html"/>">Download page</a> <a class="navigate_link" href="<c:url value="uploadpage.html"/>">Upload page</a> <a class="navigate_link" href="<c:url value="scheduling.html"/>">Scheduling page</a> <a class="navigate_link" href="<c:url value="syncpage.html"/>">Sync page</a> </div> </body></html>

UploaudPage.jsp<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<spring:eval expression="@applicationProps['application.version']" var="applicationVersion"/>

<spring:url value="/resources/{applicationVersion}" var="resourceUrl"> <spring:param name="applicationVersion" value="${applicationVersion}"/></spring:url>

<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Upload Page</title> <link rel="shortcut icon" href="${resourceUrl}/images/favicon.ico"> <link rel="stylesheet" type="text/css" href="${resourceUrl}/resources/css/login.css"/> <link rel="stylesheet" type="text/css" href="${resourceUrl}/resources/css/testpage.css"/> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> <script type="text/javascript" src="${resourceUrl}/testScripts.js"></script> </head> <body class="bodyCls"> <div id="resultBody" style="height: 590px;" class="theme_rounded create"> <h1>Upload page</h1> <div class="create_content" style="height: 445px;"> <fieldset style="height: 65px;" class="campaign_create"> <legend>All campaigns in Account</legend> <input style="width: 350px;" name="accountId" placeholder="Account id" id="accountId"/><br /> <input type="button" value="Upload" onclick="uploadAllCampaignsInAccount();"/> </fieldset> <div class="uploaded_campaigns"></div> <fieldset class="campaign_create" style="height: 65px;"> <legend>All campaigns in Profiles</legend> <input style="width: 350px;" placeholder="Profile ids (id1, id2 ...) " id="profileIds"/><br/> <input type="button" value="Upload" onclick="uploadAllCampaignsInProfiles();"/> </fieldset> <div class="uploaded_campaigns_profiles"></div> <fieldset class="campaign_create" style="height: 65px;"> <legend>All campaigns in Profile</legend> <input style="width: 350px;" placeholder="Profile id" id="profileId"/><br/>

Page 68: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

72

<input type="button" value="Upload" onclick="uploadAllCampaignsInProfile();"/> </fieldset> <div class="uploaded_campaigns_profile"></div> <fieldset class="campaign_create" style="height: 90px;"> <legend>Specific Campaigns</legend> <input style="width: 240px;" placeholder="Account id" id="accountId1"/> <input style="width: 240px;" placeholder="Account id" id="accountId2"/><br/> <input style="width: 240px;" placeholder="Camnpaign ids (id1, id2 ...)" id="campaignIds1"/> <input style="width: 240px;" placeholder="Camnpaign ids (id1, id2 ...)" id="campaignIds2"/><br /> <input type="button" value="Upload" onclick="uploasSpecificCampaings();"/> </fieldset> <div class="uploaded_specific_campaigns"></div> </div> <a class="navigate_link" href="<c:url value="downloadpage.html"/>">Download page</a> <a class="navigate_link" href="<c:url value="createpage.html"/>">Create page</a> <a class="navigate_link" href="<c:url value="scheduling.html"/>">Scheduling page</a> <a class="navigate_link" href="<c:url value="syncpage.html"/>">Sync page</a> </div> </body></html>

DownloadPage.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<spring:eval expression="@applicationProps['application.version']" var="applicationVersion"/>

<spring:url value="/resources/{applicationVersion}" var="resourceUrl"> <spring:param name="applicationVersion" value="${applicationVersion}"/></spring:url>

<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Kenshoo Social Download Page</title> <link rel="shortcut icon" href="${resourceUrl}/images/favicon.ico"> <link rel="stylesheet" type="text/css" href="${resourceUrl}/resources/css/login.css"/> <link rel="stylesheet" type="text/css" href="${resourceUrl}/resources/css/testpage.css"/> <script type="text/javascript" src="${resourceUrl}/testScripts.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body class="bodyCls"> <div id="resultBody" style="height: 705px;" class="theme_rounded"> <h1>Downloading result body</h1> <textarea class="content"></textarea> <input type="text" placeholder="Enter Account id (example id1,id2,id3)" id="accountIds" name="accountIds"><input type="button" onclick="downloadHandler('getAccountInfo')" value="Get data"/> <input type="text" placeholder="Enter Campaign ids (example id1,id2,id3)(optional)" id="campaignIds" name="campaignIds"><input onclick="downloadHandler('getCampaignsInfo')" type="button" value="Get data"/> <input type="text" placeholder="Enter Profile id" id="profileId" name="profileId"><input onclick="downloadHandler('getProfileInfo')" type="button" value="Get data"/>

<fieldset> <legend>Select download type</legend> <input type="button" value="Active Campaigns" onclick="downloadHandler('downloadActiveCampaigns');"/> <input type="button" value="Active and Paused Campaigns" onclick="downloadHandler('downloadActiveAndPausedCampaigns');"/> <input type="button" value="All Campaigns Information" onclick="downloadHandler('getAllCampaignInformationInEngine');"/> <input type="button" value="All Campaigns" onclick="downloadHandler('downloadAllCampaigns');"/> <input type="button" value="Selective Campaigns By Id" onclick="downloadHandler('downloadSelectiveCampaignsById');"/> </fieldset> <fieldset style="height: 130px;"> <legend>Select download statistic type</legend> <input style="width: 150px; margin-left: 5px;" type="text" placeholder="Enter date (MM/dd/yy)" id="statisticDate"/>

Page 69: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

73

<input type="button" value="Campaigns by Account id" onclick="downloadStatisticHandler('statisticCampaignsByAccountid');"/> <input type="button" value="Campaigns by campaign id" onclick="downloadStatisticHandler('statisticCampaignsBycCampaignid');"/> <input type="button" value="AdGroups by Account id" onclick="downloadStatisticHandler('statisticAdGroupsByAccountid');"/> <input type="button" value="AdGroups by Campaign id" onclick="downloadStatisticHandler('statisticAdGroupsByCampaignid');"/> <input type="button" value="Adgroup Reach Estimates by Account id" onclick="downloadStatisticHandler('statisticAdgroupReachEstimatesByAccountid');"/> <input type="button" value="Adgroup Reach Estimates by Campaign id" onclick="downloadStatisticHandler('statisticAdgroupReachEstimatesByCampaignid');"/> </fieldset> <a class="navigate_link" href="<c:url value="createpage.html"/>">Create page</a> <a class="navigate_link" href="<c:url value="uploadpage.html"/>">Upload page</a> <a class="navigate_link" href="<c:url value="scheduling.html"/>">Scheduling page</a> <a class="navigate_link" href="<c:url value="syncpage.html"/>">Sync page</a> </div> </body></html>

CreatePageController.java

import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.http.converter.FormHttpMessageConverter;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.http.converter.StringHttpMessageConverter;import org.springframework.stereotype.Controller;import org.springframework.util.LinkedMultiValueMap;import org.springframework.util.MultiValueMap;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.client.RestTemplate;import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.net.URI;import java.util.ArrayList;import java.util.List;

/** * * @author Andrew Topolyuk */@Controllerpublic class CreatePageController {

private static final Logger logger = Logger.getLogger(CreatePageController.class.getName());

@Value("${APP_LB}") private String applicationServiceBaseUrl;

@Autowired private RestTemplate restTemplate;

@RequestMapping(value = "/createpage.html", method = RequestMethod.GET) public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) { ModelAndView model = new ModelAndView("createpage"); model.addObject("adgroup", new CreateAdgroupFormFields()); return model; }

Page 70: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

74

@RequestMapping(value = "/createpage.html", method = RequestMethod.POST) public ModelAndView handleFacebookAdgroup( @ModelAttribute("adgroup") CreateAdgroupFormFields fileds) { try { URI uri = new URI(applicationServiceBaseUrl + "/services/createUpdateFacebookAdgroup");

Integer maxBid = (fileds.getMaxBid() != null) ? fileds.getMaxBid() : 0; logger.info("Recieved MaxBid : " + maxBid); String zip = (fileds.getTargetingZip() != null) ? fileds.getTargetingZip().toString() : "null"; logger.info("Recieved Zip : " + zip); MultiValueMap<String, Object> params = new LinkedMultiValueMap<String, Object>(); params.add("adgroupId", fileds.getAdgroupId()); params.add("adgroupName", fileds.getAdgroupName()); params.add("campaignId", fileds.getCampaignId()); params.add("collegeName", fileds.getCollegeName()); params.add("creativeBody", fileds.getCreativeBody()); params.add("creativeTitle", fileds.getCreativeTitle()); params.add("maxBid", maxBid.toString()); params.add("targetingCity", fileds.getTargetingCity()); params.add("targetingCountry", fileds.getTargetingCountry()); params.add("targetingKeyWord", fileds.getTargetingKeyWord()); params.add("targetingRegion", fileds.getTargetingRegion()); params.add("targetingZip", zip); params.add("creativeImage", new sun.misc.BASE64Encoder().encode(fileds.getCreativeImage().getBytes())); params.add("creativeImagePath", fileds.getCreativeImage().getOriginalFilename());

List<HttpMessageConverter<?>> conventers = new ArrayList<HttpMessageConverter<?>>(); conventers.add(new FormHttpMessageConverter()); conventers.add(new StringHttpMessageConverter()); restTemplate.setMessageConverters(conventers);

String result = restTemplate.postForObject(uri, params, String.class);

ModelAndView model = new ModelAndView("createpage", "result", "Result : " + result); return model;

} catch (Exception ex) { logger.error("Error processing Facebook AdGroup to service", ex); } return null; }

}

AdCampaignTempaite.javaimport java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.codehaus.jackson.JsonNode;import org.springframework.social.ApiException;import org.springframework.social.support.URIBuilder;import org.springframework.util.LinkedMultiValueMap;import org.springframework.util.MultiValueMap;import org.springframework.util.StringUtils;import org.springframework.web.client.RestTemplate;

/** * AdCampaignOperations implementation. Refer to <a * href="http://developers.facebook.com/docs/reference/ads-api/adcampaign/">Ad

Page 71: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

75

* Campaign</a> * * @author Andrew Topolyuk */public class AdCampaignTemplate extends AbstractAdFacebookOperation implements AdCampaignOperations {

private static final String DAILYBUDGETSTR = "daily_budget"; private static final String LIFETIMEBUDGETSTR = "lifetime_budget"; private static final String CAMPAIGNSTATUSSTR = "campaign_status"; private static final String ADCAMPAIGNSSTR = "/adcampaigns"; private static final String DATASTR = "data"; private static final String DATEFORMATSTR = "&date_format=U"; private static final String OFFSETSTR = "offset"; private static final String ENDTIME = "end_time"; private static final String STARTTIME = "start_time";

/** * Constructor * * @param extendedGraphApi extended graph API * @param restTemplate test template for requests * @param isAuthorizedForUser yes or not */ public AdCampaignTemplate(ExtendedGraphApi extendedGraphApi, RestTemplate restTemplate, boolean isAuthorizedForUser) { super(isAuthorizedForUser); this.extendedGraphApi = extendedGraphApi; this.restTemplate = restTemplate; }

/** * Method to create the Campaign for a Account * * @param accountid The account Id for which the Campaign need to be created * @param name The name of the Campaign * @param dailyBudget The daily budget for the campaign * @param lifetimeBudget The lifetime budget of the campaign * @return the newly added Campaign * @throws ApiException if there is an error while communicating with * Facebook. */ @Override public AdCampaign createCampaign(long accountid, String name, long dailyBudget, long lifetimeBudget, long endDate, long startDate, int status) { MultiValueMap<String, Object> params = new LinkedMultiValueMap<String, Object>(); params.add("redownload", "1"); params.add("name", name); if (endDate > 0L) { params.add(ENDTIME, "" + endDate); } if (startDate > 0L) { params.add(STARTTIME, "" + startDate); } if (dailyBudget > 0) { params.add(DAILYBUDGETSTR, "" + dailyBudget); } if (lifetimeBudget > 0) { params.add(LIFETIMEBUDGETSTR, "" + lifetimeBudget); } if (status > 0) { params.add(CAMPAIGNSTATUSSTR, "" + status); } else { params.add(CAMPAIGNSTATUSSTR, "1"); } URIBuilder uriBuilder = URIBuilder.fromUri(ExtendedGraphApi.GRAPH_API_URL + ACT + accountid + ADCAMPAIGNSSTR); JsonNode jsonNode = this.restTemplate.postForObject(uriBuilder.build(), params, JsonNode.class);

Page 72: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

76

String id = jsonNode.get("id").getValueAsText(); JsonNode dataNode = jsonNode.get(DATASTR); JsonNode campaignNode = dataNode.get("campaigns"); JsonNode valueNode = campaignNode.get("" + id); return this.extendedGraphApi.deserializeData(valueNode, AdCampaign.class); }

/** * Delete the given Campaign */ @Override public boolean deleteCampaign(long campaignId) { this.extendedGraphApi.delete("" + campaignId); return true; } /** * Fetch the Campaign informations for the given Campaign Ids * * @param adCampaignId The array of Campaign ID * @param includeRemainingBudget whether to include the remaining budget in * the response * @return The array of Campaign information * @throws ApiException if there is an error while communicating with * Facebook. */ @Override public AdCampaign[] fetchCampaigns(Long[] adCampaignId, boolean includeRemainingBudget) { MultiValueMap<String, Object> params = new LinkedMultiValueMap<String, Object>(); params.add("include_budget_remaining", includeRemainingBudget ? "1" : "0"); AdCampaign[] campaigns = new AdCampaign[adCampaignId.length]; String campainIds = StringUtils.arrayToCommaDelimitedString(adCampaignId); URIBuilder uriBuilder = URIBuilder.fromUri(ExtendedGraphApi.GRAPH_API_URL + "?ids=" + campainIds + DATEFORMATSTR); JsonNode dataNode = this.restTemplate.getForObject(uriBuilder.build().toString(), JsonNode.class, params); for (int i = 0; i < adCampaignId.length; i++) { long campaignId = adCampaignId[i]; JsonNode tempNode = dataNode.get("" + campaignId); campaigns[i] = this.extendedGraphApi.deserializeData(tempNode, AdCampaign.class);

} return campaigns; }

@Override public AdCampaign updateCampaign(AdCampaign adCampaign) { if (adCampaign != null) { MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>(); createAdCampaignValueMap(adCampaign, params, "1");

long campaignId = adCampaign.getId();

URIBuilder uriBuilder = URIBuilder.fromUri(ExtendedGraphApi.GRAPH_API_URL + campaignId); JsonNode jsonNode = this.restTemplate.postForObject(uriBuilder.build(), params, JsonNode.class);

JsonNode dataNode = jsonNode.get(DATASTR); JsonNode campaignNode = dataNode.get("campaigns"); JsonNode valueNode = campaignNode.get("" + campaignId);

return this.extendedGraphApi.deserializeData(valueNode, AdCampaign.class); } return null; }

private void createAdCampaignValueMap(AdCampaign adCampaign, MultiValueMap<String, String> params, String redownload) {

Page 73: inmad.vntu.edu.uainmad.vntu.edu.ua/portal/static/B639EEB6-6A43-4952-A48D... · Web viewІншими словами, кожен варіант використання визначає

77

params.add("redownload", redownload);

if (adCampaign.getDailyBudget() > 0) { params.add(DAILYBUDGETSTR, "" + adCampaign.getDailyBudget()); } else if (adCampaign.getLifetimeBudget() > 0) { params.add(LIFETIMEBUDGETSTR, "" + adCampaign.getLifetimeBudget()); } if (adCampaign.getName() != null) { params.add("name", "" + adCampaign.getName()); } if (adCampaign.getCampaignStatus() > 0) { params.add(CAMPAIGNSTATUSSTR, "" + adCampaign.getCampaignStatus()); }if (adCampaign.getStartTime() > 0) { params.add("start_time", "" + adCampaign.getStartTime()); } if (adCampaign.getEndTime() > 0) { params.add(ENDTIME, "" + adCampaign.getEndTime()); } else { params.add(ENDTIME, "0"); } if (adCampaign.getBudgetRemaining() > 0) { params.add("include_budget_remaining", "1"); } }