Рекомендуемая категория для самостоятельной подготовки:
Дипломная работа*
Код |
260034 |
Дата создания |
23 июля 2015 |
Страниц |
102
|
Мы сможем обработать ваш заказ (!) 19 декабря в 12:00 [мск] Файлы будут доступны для скачивания только после обработки заказа.
|
Описание
Представленная работа посвящена разработке проекта, цель которого является создание облачного сервиса для работы с документами и другими типами файлов. Система состоит из серверной части, web-сайта, общей базы данных, клиентского приложения. Клиентское приложение имеет версии для стационарных версий операционных систем и мобильную версию для операционной системы Android. Серверная часть позволяет пользователям хранить на сервере свои документы и файлы любого иного типа и получать к ним доступ в любой момент из любой точки земного шара. Система рассчитана на обработку запросов от множества пользователей одновременно, для достижения этой цели была выбрана технология очередей программных потоков. Серверная и клиентская части, а так же web-сайт выполнены в среде разработки NetBeans IDE.
При н ...
Содержание
ведение 13
1 ОБЗОР СОВРЕМЕННЫХ МЕРОПРИЯТИЙ ПО РАЗРАБОТКЕ ИНТЕРНЕТ ТЕХНОЛОГИЙ 14
1.1 Обзор современных приложений по разработке программных технологий 14
1.2 Рассмотрение современных систем по разработке web-технологий 22
1.3 Необходимость применения базы данных в клиент-серверных технологиях 25
2 РАЗРАБОТКА БАЗЫ ДАННЫХ В облачных сервисов 28
2.1 Выбор и обоснование выбора современной системы управления базой данных 28
2.2 Разработка и наполнение таблиц 32
2.3 Разработка связей между таблицами 35
2.4 Внедрение базы данных в серверную и web часть проекта 38
3 РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 40
3.1 Применение языка программирования JAVA 40
3.2 Разработка web интерфейса проекта 40
3.3 Разработка серверной части 44
3.4 Разработка интерфейса 51
3.5 Разработка мобильного интерфейса 58
4 РЕАЛИЗАЦИЯ И развертывание системы облачных сервисов 65
4.1 Тестирование программного обеспечения 65
4.2 Технические требования 67
4.3 Верификация программного продукта 69
5 ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ РАЗРАБОТКИ облачных сервис 76
5.1 Общая характеристика проекта 76
Классификационная оценка проекта: 76
5.2 Расчет трудоемкости разработки программной продукции 76
5.3 Определение цены программного продукта 81
6 ОХРАНА ТРУДА 88
7 ГРАЖДАНСКИЙ ЗАЩИТА 100
ВЫВОДЫ 110
ПЕРЕЧЕНЬ ССЫЛОК 111
ПРИЛОЖЕНИЕ А Диаграмма классов серверной части 113
ПРИЛОЖЕНИЕ Диаграмма классов клиентской части 11
Введение
На сегодняшний день у каждого есть компьютер, ноутбук, а так же смартфон. IT-технологии появились в нашей жизни не так давно, но современный человек на данный момент, не может жить без них. Сейчас нельзя представить, как жить без смартфона или компьютера. Но техника не может работать вечно. Бывают такие ситуации, когда она дает сбой.
На компьютере мы сохраняем важные файлы, которые нам необходимы для работы, учебы, а также в других сферах деятельности. Можно легко представить, в какую ярость приходят люди, компьютер «взлетает» операционная система, и все файлы возможно впоследствии восстановить. Следует иметь в виду, что операционная система работает в среднем 1-3 года и мы не всегда готовы потерять столь нужные нам документы.
Существует и еще одна проблема. Не всегда удобно носить с собой флэшкарты, между работой и домом, так и каждый день, постоянно «перебрасывать» файлы туда и обратно, носить постоянно ноутбук или планшетный компьютер - это тоже не лучший вариант, но подсознательно хочется, чтобы эти файлы всегда были рядом, под рукой.
Люди часто сталкиваются с такой проблемой: не всегда хватает памяти жесткого диска на вашем компьютере, а файл необходимо сохранить на своем компьютере. И возникает такой вопрос: «Что же удалять если нужно?» Но у некоторых людей нет лишних файлов на накопителе. Вот тут на помощь нам приходят «Облачные хранилища данных».
Целью данной работы является разработка полноценного облачного сервиса, оптимизация серверной части и сайта под большую нагрузку со стороны пользователей, нормализация базы данных, а так же изучение программирования под мобильную операционную систему Android
Фрагмент работы для ознакомления
4) до будь-якої базі можна під'єднатися через легко описуваний URL.
Для управління підключеннями до бази даних був створений унікальний клас, об'єкт якого створює чергу звернень в базі даних. При відсутністю відкритих підключень створюються додаткові, що виключає можливість тривалого очікування відповідей на запити користувачів. Створений клас підключається до проекту сервера як додаткова бібліотека, що дає можливість використання даної бібліотеки в інших проектах.
Даний клас містить такі поля:
1) список вільних підключень (LinkedList <Connection>);
2) список зайнятих підключень (LinkedList <Connection>);
3) рядок підключення;
4) рядок логіна від бази даних;
5) рядок пароля від бази даних.
При створенні об'єкта даного класу конструктор виконує створення і ініціалізацію списку підключень, в тій кількості, в якому він прописаний у файлі налаштувань. Після чого при необхідності у створеного об'єкта викликається метод retrieve(), який відповідає за видачу вільних підключень клієнтам.
Сама серверна частина складається з 4-х класів, 2 з яких є основними (Cloud, Client), 2 серіалізовані (FileStructure, User).
Серіалізация являє собою – процес перекладу будь-якої структури даних в послідовність бітів. Зворотної до операції серіалізациі є операція десеріалізациі (структуризації) – відновлення початкового стану структури даних з бітової послідовності. Серіалізация використовується для передачі об'єктів по мережі і для збереження їх у файли. Серіалізовані класи повинні знаходиться в одній гілки пакетів в кожному проекті, де вони будуть серіалізовиваться і десеріалізовиваться. Тому створений окремий пакет, під назвою «ser», в який вміщено всі серіалізовані класи. Об'єкти цих класів використовуються для передачі свого стану по мережі.
Сам сервер являє собою консольний додаток, яке при запуску виконує ініціалізацію файлу налаштувань, черги підключень до бази даних, створює чергу потоків клієнтів (розмір якої залежить від обчислювальної потужності робочої станції хоста, на якому запущений сервер). Після чого відбувається спроба відкрити прослуховується порт, якщо спроба вдала на консоль виводяться доступні активні інтерфейси, які використовуються для прийняття підключень (якщо під час роботи буде активований новий інтерфейс, він так само автоматично стане доступним для прослуховування).
Рисунок 3.5 − Серверна консоль
Головним класом сервера є клас – Cloud. Для роботи з мережею були обрані такі класи:
1) ServerSocket – клас, який відповідає за прослуховування порту, при вхідному підключенні повертає об'єкт класу Socket.
2) Socket – клас, який реалізує уявлення програмного сонета – ip-адреса:tcp-порт.
3) ObjectInputStream – використовуючи адресу клієнта, який зберігається в об'єкті класу Socket, і створює потік відправки серіалізованих об'єктів.
4) ObjectOutputStream – використовуючи адресу клієнта, який зберігається в об'єкті класу Socket, і створює потік очікування серіалізованих об'єктів.
При запуску сервера на виконання та успішної ініціалізації всіх необхідних компонентів і бібліотек створюється потік, який очікує введення команди завершення роботи сервера. Очікування клієнтів відбувається в основному потоці програми. Після успішного підключення створюється об'єкт потоку, який додається в чергу потоків. Черга управляється об'єктом класу ExecutorService.
У мові програмування Java є 3 способи реалізації програмних потоків, 2 з них класичних (Thread, Runnable) і один не класичний (Callable). Для реалізації серверної частини проекту був обраний останній варіант: реалізація інтефрейса Callable. Цей інтерфейс реалізує більш ефективну роботу, якщо розглядати потоки, як взаємодія з користувачами. Даний інтерфейс дозволяє більше розмежувати роботу програмних потоків, ніж інші інтерфейси, а так само, при необхідності, задати необхідний тип повертаемого значення в об'єкт класу Future.
Клас який відповідає за взаємодію з клієнтами і є розширеним за рахунок інтерфейсу Callable називається – Client. Даний клас містить такі атрибути:
1) переданий об'єкту Socket;
2) потік відправки об'єктів;
3) потік очікування об'єктів;
4) загальний об'єкт черги підключень до бази даних;
5) об'єкт підключення до бази даних;
6) об'єкт списку результату запиту;
7) об'єкт серіалізовані класу User;
8) карта списку (ключ – ;назва файлу, значення – об'єкт класу структури файлу)
9) загальний кінцевий розмір відправляємого і прийнятого буфера пакетів;
10) загальний кінцевий формат виведення дати і часу для консольних повідомлень.
Методи даного класу відповідають за обробку та аналіз віддаленої папки користувача, обробку запитів від користувача і коректне відключення користувача від сервера при будь-якому результаті (коректне відключення по команді або обрив каналу зв'язку).
Завершення кожного об'єкта черг здійснюється за консольної команді сервера «shutdown». Всі програмні потоки закінчують свою роботу, без очікування їх коректного завершення, після чого завершуються всі підключення до бази даних.
3.4 Розробка інтерфейсу
Розробка пакету інтерфейсу розбивається на 2 етапи:
1) розробка інтерфейсу для стаціонарного комп'ютера;
2) розробка інтерфейсу під мобільний пристрій.
Клієнтська частина підключається до серверної, на якій відбувається обробка запиту користувача, взаємодія з базою даних, і видача готової відповіді назад запити користувачів. Кожна взаємодія здійснюється в своєму окремому потоці, за рахунок чого користувачі працюють не залежно один від одного.
Клієнтська програмна частина для настільних персональних комп'ютерів написана за допомогою безкоштовної середовища розробки програмного забезпечення NetBeans IDE. За якістю і можливостям останні версії NetBeans IDE не поступаються кращим комерційним інтегрованим середах розробки для мови Java, таким, як IntelliJ IDEA, підтримуючи рефакторінг, профілювання, виділення синтаксичних конструкцій кольором, автодоповнення набираються конструкцій на льоту, безліч визначених шаблонів коду і багато інших можливостей.
NetBeans IDE підтримує плагіни, дозволяючи розробникам розширювати можливості середовища. Одним з найпопулярніших плагінів є потужний дизайнер звітів iReport.
NetBeans IDE доступна в вигляді готових дистрибутивів (прекомпілеваних бінарних файлів) для платформ Microsoft Windows, Linux, FreeBSD, Mac OS X, OpenSolaris і Solaris (як для SPARC, так і для x86 - Intel і AMD). Для всіх інших платформ доступна можливість скомпілювати NetBeans самостійно з вихідних текстів.
Існує 3 основних види бібліотек для створення інтерфейсу на мові Java:
1) AWT – застаріла бібліотека графічного інтерфейсу, яка в даний час використовується вкрай рідко.
2) Swing – одна з актуальний бібліотек для створення інтерфейсів на сьогоднішній день, проте дана бібліотека довгий час не отримувала оновлень, у зв'язку з цим стабільність і безпеку даної бібліотеки знаходиться під питанням, проте вона використовує відносно малі витрати ресурсів.
3) JavaFX – одна з актуальний бібліотек для створення інтерфейсів на сьогоднішній день, часто оновлюється і отримує нові компоненти, має окремий редактор інтерфейсу і може використовувати унікальну мову розмітки «fxml», проте використовує досить велика кількість ресурсів, що може уповільнити або навіть унеможливити запуск або роботу програми на старих робочих станціях.
Для створення безпосередньо графічної складової проекту була використана бібліотека Swing.
Swing – бібліотека для створення графічного інтерфейсу для програм мовою Java. Swing був розроблений компанією Sun Microsystems. Він містить ряд графічних компонентів, таких як кнопки, поля введення, таблиці, тощо.
Архітектура Swing розроблена таким чином, що розробник може змінювати «look and feel» (L&F) вашої програми. «Look» визначає зовнішній вигляд компонентів, а «Feel» - їх поведінку. Sun's JRE надає наступні L&F:
1) CrossPlatformLookAndFeel - це рідний L&F для Java-додатків (так само називається Metal). Він використовується за умовчанням, забезпечуючи стандартну поведінку компонентів і їх зовнішній вигляд, незалежно від платформи, на якій запускається додаток.
2) SystemLookAndFeel - в цьому випадку додаток використовує L&F, яка є рідною для системи, на якій запущено додаток. Системний L&F визначається під час виконання. Для Windows використовується «Windows» L&F, який імітує особливості конкретної системи, на якій запущений - класичний Windows XP, або інші. Для Linux і Solaris використовується «GTK+», якщо встановлено GTK+ 2.2 або більш пізня версія, в іншому випадку використовується «Motif».
3) Synth – основа для створення власних L&F.
4) Multiplexing – надає можливість використання різних L&F одночасно.
Дані користувачів зберігаються в зашифрованому вигляді. Кожен пароль зашифрований хеш-функцією MD5.
MD5 – 128-бітний алгоритм хешування, призначений для створення «відбитків» або дайджестів повідомлення довільної довжини й наступної перевірки їх автентичності. Використовується в додатках криптографії та електронно-цифрових підписів для генерації ключа шифрування. Алгоритм розроблений, що б бути досить швидким на 32-бітних системах і не вимагати більших обсягів пам'яті. Далі під «словом» буде матися на увазі кількість інформації в 32 біта, а під «байтом» – 8 біт. Послідовність біт інтерпретується в природній формі - як послідовність байт, де кожна група з 8 біт є окремим байтом, причому старший біт байта йде першим. Аналогічно представляється послідовність байт, як послідовність слів, тільки молодший байт йде першим. Передбачається, що в якості вхідного потоку мається потік даних N біт. N - невід'ємне ціле (можливо 0), не обов'язково кратне 8. Для обчислення MD5 хеш-функції необхідно виконати наступні 5 кроків.
Крок 1: вирівнювання потоку. Вхідний потік вирівнюється так, що б його довжина стала конгруентної (порівнянної) з 448 по модулю 512. Вирівнювання відбувається наступним чином: до потоку додається один біт '1', а потім біти '0' до тих пір, поки довжина потоку не буде порівнянна з 448 по модулю 512. Вирівнювання відбувається завжди, навіть якщо довжина потоку була вже порівнянна з 448 по модулю 512. Таким чином до потоку додається мінімум 1 біт, максимум – 512.
Крок 2: додавання довжини. 64 бітове представлення довжини вхідного потоку (довжини потоку до вирівнюється) додається до результату попереднього кроку. Якщо довжина потоку перевершує 2^64, то додаються молодші 64 біт. Ці біти додаються як 2 32-бітових слова, молодше слово додається першим. Таким чином на цьому кроці довжина потоку стає кратною 512 бітам або 16 32-бітним словами. Далі будемо розглядати вхідний потік як масив M[0...N-1] слів довжиною N.
Крок 3: ініціалізація MD буфера. Буфер з 4 слів {A, B, C, D} використовується для обчислення хеш-функції, який ініціалізується в наступні значення: A = 0x67452301, B = 0xEFCDAB89, C = 0x98BADCFE, D = 0x10325476.
Визначаються чотири допоміжні функції, кожна з яких бере три параметри розмірів в слово і виробляє результат - слово.
Функція F для кожного біта дає наступний результат: якщо X, то Y, інакше Z.
На цьому кроці також використовується таблиця T[1..64], яка побудована за допомогою функції синуса.
Також слід визначити операцію x<<<y, як циклічний зсув x вліво на y біт. Тепер розглянемо сам алгоритм обчислення MD5 хеш-функції.
Крок 4: вивід MD5. Результат обчислення (хеш) представлений чотирма 32 бітними словами - A, B, C, D (молодшим записується A, старшим - D). На цьому обчислення 128-бітного MD5 завершується.
У алгоритму MD5 у є вразливість - можливе створення двох повідомлень з однаковою хеш-сумою, тому до кожного вхідного пароля реалізовано додавання "солі".
У криптографії сіль (модифікатор) - це рядок випадкових даних, яка подається на вхід хеш-функції разом з вихідними даними. Використовується для подовження рядка пароля, що ускладнює відновлення групи вихідних паролів за один прохід повного перебору або за допомогою попередньо побудованих райдужних таблиць. При цьому сіль не захищає від повного перебору кожного пароля окремо. Виходячи з призначення сіль повинна бути унікальною для кожного пароля з зберігається набору хешів і не є секретною, тобто зберігається поряд з хешом пароля у відкритому вигляді. Алфавіт для «солі» становить 54 символу: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, ~, !, @, #, $, %, ^, &, *, (, ), _, +, <, >, /, |.
При такій комбінації шифрування, пароль можна підібрати тільки використовуючи «Райдужні таблиці». Райдужна таблиця - спеціальний варіант таблиць пошуку, що використовує механізм розумного компромісу між часом пошуку по таблиці та займаної пам'яттю. Райдужні таблиці використовуються для розтину паролів, перетворених за допомогою складно оборотної хеш-функції, а також для атак на симетричні шифри на основі відомого відкритого тексту.
При запуску програми проекту відбувається пошук і читання файлу налаштувань (якщо він не знайден – відбувається його створення використовуючи стандартні параметри) і відкривається форма Авторизації, після чого відбувається підключення до серверної частини.
Рисунок 3.6 − Форма авторизації
Після успішної авторизації відкривається основна форма програми. Форма містить контекстне меню, з вибором різних дій, таблицю зі структурою віддаленого каталогу користувача, рядок стану завантаження або вивантаження файлу, і дві кнопки. Кнопка завантажити відкриває діалог вибору файлів (можливо множинне виділення), при успішному виборі файлів на сервер відправляється команда завантаження файлу, після чого починається цикл передачі вибраних файлів. Кнопка відкрити відправляє серверу команду вивантаження файлу з сервера в кеш клієнта після чого починається надіслати вибраний файл, після успішної передачі відбувається спроба відкрити файл, програмою яка призначена за замовчуванням на даний тип файлу. Головне вікно програми виглядає так:
Рисунок 3.6 − Головна форма програми
У концепції бібліотеки інтерфейсу «Swing» лежить взаємодія двох мов: мови програмування (Java) і мови розмітки (XML), відповідно кожна форма складається з двох фізичних файлів: файл клас форми, файл розмітки положення компонентів на формі. Так як форма створюється за допомогою візуального редактора, код файлу розмітки генерується автоматично, а при відображенні форми на екран відбувається звичайний парсінг XML сторінки – файл розмітки розглядатися не буде.
Клас форми авторизації містить такі атрибути:
1) рядок посилання на ресурс сервісу (береться з конфігураційного файлу).
Також даний клас містить конструктор, який використовує системний інтерфейс для форми, встановлює іконку вікна, а так само містить усі необхідні обробники подій кнопок та інших динамічних компонентів форми.
Клас основної форми програми містить такі атрибути:
1) карта списку, яка містить всі дані видалених файлів;
2) загальний список форматів документів;
3) загальний список форматів картинок;
4) загальний список форматів архівів;
5) загальний список форматів виконуваних файлів;
6) загальний кінцевий розмір віддаленого сховища;
7) загальний кінцевий розмір буфера пакетів;
8) загальне поле для зберігання розміру видаленого файлу;
9) загальне поле для зберігання зворотного значення розміру (необхідно для обчислення прогресу завантаження або вивантаження);
10) загальне поле типу переданого чи прийнятого значення;
11) загальний кінцевий масив рядків, який визначає розмір і найменування колонок таблиці;
12) загальна модель таблиці, для доступу до неї при заповненні;
13) загальний об'єкт діалогу вибору файлів;
14) загальний об'єкт поточного каталогу;
15) загальна рядок кореневої папки поточного користувача.
3.5 Розробка мобільного інтерфейсу
Інтерфейс мобільного додатку складається з так званих активностей. Термін Activity ще не устоявся в мові у розробників. Деякі використовують слово Активність, інші – Діяльність. Розробники зі стажем можуть сприймати Активність як форму. Прості програми складаються з однієї активності. Більш складні додатки можуть мати кілька вікон, тобто вони складаються з декількох активностей, якими треба вміти управляти і які можуть взаємодіяти між собою.
Активність, яка запускається першою, вважається головною. З неї можна запустити іншу активність. Причому не тільки ту, яка відноситься до нашого додатку, але й іншої програми. Користувачеві буде здаватися, що всі запускаються їм активності є частинами однієї програми, хоча насправді вони можуть бути визначені в різних додатках і працюють в різних процесах.
Зазвичай активність займає весь екран пристрою, але це не є обов'язковою вимогою. Можна створювати напівпрозорі і плаваючі вікна активностей. І з розвитком системи Android такий підхід набирає обертів.
Щоб створити активність, потрібно успадкувати від класу Activity і викликати метод onCreate(). В результаті ми отримаємо порожній екран, після цього в активність додають компоненти, фрагменти за допомогою розмітки.
Активність має життєвий цикл – початок, коли Android створює екземпляр активності, проміжний стан, і кінець, коли екземпляр знищується системою і звільняє ресурси. Активність може перебувати в трьох станах:
1) Активна (active або running) – активність знаходиться на передньому плані екрану. Користувач може взаємодіяти з активним вікном.
2) Призупинена (paused) – активність втратила фокус, але все ще видима користувачеві. Тобто активність знаходиться зверху і частково перекриває дану активність. Призупинена активність може бути знищена системою в критичних ситуаціях при нестачі пам'яті.
3) Зупинена (stopped) – якщо дана активність повністю закрита інший активністю. Вона більше не видима користувачеві і може бути знищена системою, якщо пам'ять необхідна для більш важливого процесу.
Якщо активність, яка була знищена системою, потрібно знову показати на екрані, вона повинна бути повністю перезавантажена і відновлена в своєму попередньому стані.
При першому запуску програми буде відкрита активність налаштувань, в якій потрібно вказати адресу хоста і серверний порт, після чого дані зберігаються у вигляді файлу з серіалізовані об'єктом.
Рисунок 3.7 − Активність налаштувань
Після збереження налаштувань буде відкрита основна активність авторизації. У правому нижньому кутку знаходиться посилання, яка відкриває адрес хоста в браузері, де користувачеві дається можливість створити новий обліковий запис. По центру активності розташовуються поля в які користувач може ввести свої дані і при необхідності запам'ятати свій логін. При невірної комбінації логіна і пароля на екрані буде виведено відповідне повідомлення. При вдалій комбінації логіна і пароля дана активність відкриває нову, в якій міститься список файлів і папок віддаленого каталогу. Після відкриття нової активності, активність авторизації очищається з пам'яті ресурсами операційної системи.
Рисунок 3.8 − Активність авторизації
Основна активність, яка відображає користувальницький каталог являє собою форму, яка має список і меню. Кнопка «назад» перевизначена так, що вона відповідає за повернення з поточного каталогу на рівень вище.
Рисунок 3.9 − Активність списку файлів і каталогів віддаленого сховища
При завантаженні або завантаження файлів відкривається зовнішнє діалогове вікно, яке відповідає за відображення прогресу виконання. Cтворюється новий Handler і запускається на виконання в окремому програмному потоці.
Рисунок 3.10 − Оповіщення про синхронізацію файлу
Дана активність формується таким кодом:
final Handler threadHandler = new Handler();
AlertDialog.Builder builder = new AlertDialog.Builder(MainForm.this);
final AlertDialog alert = builder.create();
alert.setTitle("Выгрузка " + chooseFile.getName());
prb = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
alert.setView(prb);
alert.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
threadHandler.post(new Runnable() {
@Override
public void run() {
alert.show();
}
});
// -------------------
……
// -------------------
}).start();
Рисунок 3.11 − Меню програми
Дане меню програми будується використовуючи даний код:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.update:
update(); break;
case R.id.upload:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
Список литературы
1. Цапко В.Г Безпека життєдіяльності: Навч. Посібник / В.Г. Цапко, — 2-ге вид., перероб. і доп. — К.: Знання-Прес, 2003. — 397 с.
2. Мозкова К.І. .Безпека життєдіяльності: Навчальний посібник. / К.І. Мозкова, В.Б. Гайдабус, — Суми: ВТД “Університетська книга”, 2004. — 301 с.
3. Герберт А. Java. Повне керівництво. Java SE 7 / А. Герберт, В. Шилдт, - 8-е вид. - М. Вільямс, 2012. - 1104 с.
4. Джейсон М.С. Елементарні шаблони проектування / М.С. Джейсон - М. «Вільямс», 2012. - 304 с.
5. Жидецький В.Ц. Безпека життєдіяльності. Навчальний посібник. / В.С. Джигирей, В.Ц. Жидецький. — Львів: Афіша, 2000. — 256 с.
6. Джошуа Блох. Java. Ефективне програмування - М. Лорі, 2002. - 224 с.
7. Е. Гамма Прийоми об'єктно-орієнтованого проектування. / , Р. Хелм, Р. Джонсон, Дж. Вліссідес Патерни проектування - СПб: «Пітер», 2007. - С. 366.
8. Жидецький В.Ц. Охорона праці користувачів комп’ютерів. Начальний посібник. – Вид.2-ге. – Львів: Афіша. 2000 -176с.
9. Мартін Фаулер Шаблони корпоративних додатків (Signature Series) - М. «Вільямс», 2012. - 544 с.
10. Правила охорони праці під час експлуатації електронно-обчислювальних систем.
11. Чирва В.С., Баб’як Л.Г. Безпека життєдіяльності: Навчальний посібник. — 2-ге вид. — Одеса: Глобус, 2005. — 412 с.
12. Кодекс цивiльного захисту України "Про захист населення і територій від надзвичайних ситуацій техногенного та природного характеру" № 1809-ІІІ. К., 2000. Атаманюк В. Г. Гражданская оборона. Учебник для вузов /В. Г. Атаманюк, Л. Г. Ширшев, Н. И. Акимов. Под ред. Д. И. Михайлика.М.: Высшая школа, 1986.— 207 с.
13. Гаврилов А. В Методические указания «Гражданская защита и оценка последствийчрезвычайных ситуаций». / А. А. Волошин, В. Н. Семьянинов, И. А. Пуляев Часть 1. Одесса: ОНМУ, 2012. С. 97-115.
14.Демиденко Г.П Справочник «Защита объектов народного хозяйства от оружия массового поражения». К.: Вища школа, 1987. – 256 с. / Е. П. Кузьменко и др.
15.Защита от оружия массового поражения: Справочник /Под ред.В. В. Мясникова. М., 1984.
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00349