В наши дни мобильные устройства заняли прочное место в повседневной жизни людей. Они начали свой путь в качестве телефонов, впоследствии обретая всё больше и больше функций, превратившись, в конце концов, в полезных помощников. Более того, с развитием интернета мобильные устройства стали средством получения доступа к мировым информационным ресурсам из любой точки мира. Если учесть, что информация в современном обществе является одним из наиболее востребованных ресурсов, а также обратить внимание на развитие технологий, сказывающееся на цене, качестве и технических характеристиках мобильных устройств, то совершенно естественным следствием является очень высокий спрос на мобильные устройства в современном мире.
Очень важной частью мобильного устройства является программное обеспечение. Оно может способствовать решению различных бизнес-задач, служить для обучения, для хранения важной информации, для развлечения, помогать в работе, собирать информацию, а также выполнять множество других функций.
Рынок программного обеспечения для мобильных устройств развивается очень бурно в связи с высоким спросом на мобильные устройства и, что естественно, на различного рода мобильные приложения.
В связи с тем, что пользователь заботится о сохранности своих данных, возникает необходимость в приложениях для резервного копирования и восстановления данных на мобильном устройстве.
В отличие от пользователей продукции фирмы Apple, пользователи Androidустройств вынуждены сами заботиться о сохранности своих данных.
Поэтому было решено разработать подобное приложение.
Целью данной выпускной квалификационной работы является разработка приложения, функционирующее на платформе Android, которое будет осуществлять резервное копирование данных и их восстановление из создаваемых резервных копий.
Задачами данной выпускной квалификационной работы являются:
1) анализ существующих решений;
2) анализ данных, для которых возможно создание резервной копии;
3) анализ механизмов, необходимых для осуществления цели; 4) разработка приложения.
1. Обзор существующих решений
Далеко не секрет, что приложений для резервного копирования и восстановления данных множество, поэтому было решено проанализировать данные приложения и разбить их на несколько категорий, так как приложений с одинаковой функциональностью очень много.
Мобильные системы связи
... трафик перенаправляется на BSC, а от него на мобильные станции. Через узел GGSN реализуется связь сети GSM с внешними сетями передачи данных по протоколам X.25 и IP, он играет ...
В первую категорию было решено отнести все приложения, для которых необходимо наличие root-прав. К сожалению, наличие таких прав очень часто неблагоприятно сказывается на устройстве, особенно в руках неопытных пользователей. К тому же, наличие таких прав лишает пользователя устройства гарантийного обслуживания.
Подробнее данную категорию приложений мы рассматривать не будем, так как изначально было принято решение не использовать root-права при разработке приложения.
Вторая категория приложений – это приложения, которые предназначены только для резервного копирования данных. В таких приложениях пользователь может создать резервную копию личных данных пользователя. Как правило, такие данные попадают лишь на SD-карту устройства, что является существенным недостатком: в случае утери SD-карты или ее поломки, данные, соответственно, будут потеряны. К тому же, не у всех моделей Аndroid-устройств есть слот, предназначенный для SD-карты.
Следующая категория приложений – это приложения, в которых не предусмотрено автоматическое резервное копирование данных. Существенный недостаток подобных приложений в том, что пользователю приходится самому заботиться о создании резервной копии, что, как правило, неудобно.
Кроме того, стоит заметить, что есть масса приложений, в которых нет возможности работать с некоторыми данными. Например, некоторые приложения позволяют работать только с текстовыми файлами, картинками и файлами в формате pdf. К этой же категории относятся приложения, которые используются только для создания резервной копии контактов. В том случае, если у пользователя на устройстве хранятся данные резервного копирования, данные могут быть утеряны. Такого рода приложения отнесем в четвертую категорию.
В пятую категорию приложений для создания резервных копий данных попадут приложения, обладающие чрезмерно сложным интерфейсом.
Стоит заметить, что приложение для резервного копирования данных может сразу находиться в нескольких категориях, тем самым суммируя все недостатки каждой из категорий.
Кроме того, в ходе анализа мобильных приложений, не было найдено ни одного приложения, которое позволяет при настройке резервного копирования выбрать не только типы данных (текстовые файлы, аудио, картинки), резервное копирование которых нужно осуществить, но и добавить свой тип данных к существующему набору стандартных типов данных; а также отсутствует возможность добавления дополнительного формата к уже существующему типу данных. Это существенный недостаток, так как невозможно предугадать появление нового типа или формата данных, что ведет к невозможности создания резервных копий этих данных и дальнейшей возможной потере данных.
2. Анализ данных, для которых возможно создание
резервной копии
В том случае, если пользователь устройства имеет root-права, то владелец устройства беспрепятственно может получить доступ к любым файлам и папкам мобильного устройства. Так как изначально было решено, что в разрабатываемом приложении не будут подвергаться резервному копированию те данные, к которым возможен доступ только с помощью root-прав, то необходимо проанализировать, с какими именно данными можно работать.
Естественно, к таким данным в первую очередь необходимо отнести те данные, которые принадлежат пользователю, т.е., – это все те файлы, которые пользователь какимлибо способом поместил на устройство.
База данных ‘Учет решений по уголовным делам’
... функции автоматизированной системы УЧЕТ РЕШЕНИЙ ПО УГОЛОВНЫМ ДЕЛАМ : ) ОВД; ) Должность; ) Следователь; ) Уголовное дело; ) Решение. Первичное описание информационного обеспечения (исходные данные) ОбъектАтрибутОписание атрибута1. ... преимуществом OLE является возможность использовать методы с других серверов приложений. намного удобнее использовать функции электронных таблиц, такие как Excel, ...
Далее рассмотрим некоторые папки в файловой системе операционной системы Android.
В корневой директории можно найти 3 папки, которые представляют интерес – это data, system и mnt.
Рисунок 1 — папка data.
Рассмотрим папку data, представленную на рисунке 1. К данным, которые хранятся в этой папке, относятся и данные о синхронизации и аккаунтах, и пароли к точкам доступа WiFi, и настройки VPN, и многое другое. Среди всего прочего тут можно обнаружить папки app, data и dalvik-cache – рассмотрим их назначение:
- app – сюда устанавливаются все приложения, которые пользователь скачал и установил;
- data – здесь хранятся данные приложений, их настройки и прочая информация.[5]
Обычный пользователь устройства не может получить самостоятельно доступ к папке data, так как данная папка защищена root-правами.
К счастью, разработчик, независимо от того обладает ли он root-правами при работе с устройством, может получить доступ к папке app. В связи с этим, к данным, резервную копию которых возможно создать, добавляются установочные файлы приложений.
Также у разработчика есть возможность работать с контактными данными пользователя, т.е. с номерами телефонов владельца устройства.
Заметим, что под работой с контактными данными подразумевается их получение, а также возможность добавления новых данных в список.
Рассмотрим далее папку System.
Рисунок 2 — папка system.
Папка System хранит в себе системные данные и всё необходимое для работы ОС. Рассмотрим некоторые из этих папок, которые могут представлять интерес:
- app – здесь находятся системные приложения (SMS телефон, календарь, настройки и т.п.), а так же приложения установленные производителем устройства (фирменные виджеты, живые обои и т.д.);
- fonts – здесь содержатся системные шрифты;
- media – содержит стандартные мелодии звонков, уведомлений, будильников и звуков интерфейса, а так же загрузочную анимацию (bootanimation);
- build.prop – в этом файле содержится огромное количество настроек, таких как плотность экрана, время задержки сенсора приближения, управление WiFi, имя и производитель устройства и многие другие параметры. [5]
Все эти данные являются системными и для каждого мобильного устройства они уникальны (индивидуальны), вследствие чего нет необходимости в резервном копировании этих данных
Кроме того, несмотря на то, что пользователь мобильного устройства может просмотреть содержимое этих файлов, ни пользователь, ни разработчик не могут модифицировать перечисленные выше файлы и папки. Под модификацией подразумевается не только изменение содержимого файлов, но и создание, и удаление новых файлов или папок в директории system и ее поддиректориях.
Рисунок 3 — папка mnt.
Следующая папка, которую необходимо рассмотреть – это папка mnt. В данной папке содержится несколько других папок, кроме представленной на рисунке 3, но ни одна из них не представляет интереса, в отличие от папки sdcard. В данной папке хранятся все личные файлы и папки пользователя, независимо от того, обладает ли он root-правами.
База данных: подсистема «ЗАГС»
... баз данных (например, Paradox), давая возможность пользователю как вводить данные, так и получать информацию из введенных ранее данных. ... с помощью команды File | New | Data Module. Разместим ... базу данных (в нашем случае Paradox), ввести имя, указать путь, т. е. папку, ... gt;Value/15;} 2.1 Общий принцип работы программы При запуске программы ... (пример): Муж; Жена; ЗАГС; Эти сущности взаимодействуют по ...
Проанализировав файловую систему устройства, выяснилось, что к данным, для которых можно создавать резервные копии, а также можно подвергнуть восстановлению из резервных копий, относятся:
1) личные файлы и папки пользователя;
2) список контактных данных, т.е. список номеров телефонов и сопутствующих данных;
3) установочные файлы приложений, т.е. приложения формата *.apk.
3. Анализ механизмов, необходимых для
осуществления цели
Для разработки данного приложения необходимо учитывать следующие особенности:
1) Каким образом можно получить файлы пользователя?
2) Какую утилиту использовать для архивации и распаковки данных?
3) Какой формат представления данных будет использоваться для
хранения типов данных?
4) Какой механизм позволит реализовать независимый от пользователя
вызов метода, который будет осуществлять автоматическое резервное
копирование?
5) Каким образом осуществляется синхронизация с облачным
хранилищем?
3.1. Способы получения файлов пользователя
Обычные файлы пользователя
Получить личные файлы пользователя достаточно просто. Класс File содержит несколько различных методов для получения списка файлов. На приведенной ниже диаграмме (рисунок 4) используется метод listFiles(), который возвращает список файлов в директории.
Также существует метод listFiles(FilenameFilter filenameFilter), с помощью которого можно получить список файлов в директории, удовлетворяющих некоторой «маске». Данный метод используется при автоматическом резервном копировании, когда возникает необходимость создания резервной копии определенных данных, например в формате txt.
Пример для listFiles с фильтрацией данных представлен в примере кода 1.
Стоит заметить, что метод getFiles, представленный на рисунке 4, позволяет получить все файлы в папке folder. sd FileWork.getFiles(File folder)
:FileWork folder:File file :File
Пользователь
getFiles(folder)
listFiles()
files
fileLinkedList.add(files)
loop file: fileLinkedList
opt file.isDirectory
getFiles(file)
[true]
files
resultLinkedList.add(files)
[false]
resultLinkedList.add(file)
resultLinkedList
Рисунок 4 — диаграмма взаимодействия для метода getFiles.
folder.listFiles(new FilenameFilter() {
@Override
public boolean accept(File folder, String name) {
return name.endsWith(mask);
}
});
- Пример кода 1 — пример метода listFiles с фильтрацией данных.
Приложения пользователя
Как уже говорилось выше, установочные файлы приложений пользователя находятся в папке /data/app. Но напрямую получить apk-файлы невозможно.
Данная ситуация представлена на рисунках 5, 6 и 7. Открыв приложение в режиме отладки, можно увидеть, что в отличие от корневой директории, результат вызова метода listFiles для папок /data и /data/app имеет результат равный null.
Рисунок 5 — пример попытки доступа к файлам в папке /.
Рисунок 6 — пример попытки доступа к файлам в папке /data.
Рисунок 7 — пример попытки доступа к файлам в папке /data/app.
Защита персональных данных — по юриспруденции
... по разным правовым отраслям, а затем рассмотрим пример: диплом на тему «Защита персональных данных». Дипломные работы по гражданскому праву Посвященная имущественным и связанным с ними неимущественным ... в каких областях используются эти данные. Пример: информация о служащем, собранная по месту работы. Также нужно описать виды персональных данных, законодательство, регулирующее их использование и ...
Тем не менее, доступ к apk-файлам хранящимся в папке /data/app возможен благодаря классу PackageManager, который дает возможность получить различную информацию о приложениях, в том числе получить список установленных приложений устройства. Метод queryIntentActivities возвращает список экземпляров класса ResolveInfo, с помощью которого можно получить различного рода данные, в том числе, местонахождение apk-файла или путь к директории, в которой лежат файлы-настройки приложений.
В примере ниже (пример кода 2) мы с помощью метода publicSourceDir получаем путь к apk-файлам установленных приложений, сразу же исключая попадание в резервную копию системных файлов, которые находятся в папке /system. Важно заметить, что метод publicSourceDir возвращает информацию обо всех файлах установленных приложений устройства, в том числе и системных, поэтому в приведенном ниже алгоритме мы проверяем файлы на принадлежность к системным приложениям, так как данные приложения не являются личными и предоставляются вместе с устройством.
public static LinkedList getApp(Context context){
LinkedList stringLinkedList = new LinkedList();
- PackageManager pm = context.getPackageManager();
- Intent intent = new Intent(Intent.ACTION_MAIN, null);
- intent.addCategory(Intent.CATEGORY_LAUNCHER);
LinkedList fileLinkedList = new
LinkedList();
ArrayList list =
(ArrayList)
pm.queryIntentActivities(intent,
PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo : list) {
if (!rInfo.activityInfo
- applicationInfo
- publicSourceDir
- toString().contains(«/system/»)){
fileLinkedList.add(new File(
rInfo.activityInfo
- applicationInfo
- publicSourceDir.toString()));
}
}
return fileLinkedList;
}
Пример кода 2 — получение apk-файлов.
3.2. Утилиты для архивации и распаковки данных
Для архивации данных существует несколько различных библиотек.
Самыми распространенными являются:
1) встроенная в JDK библиотека java.util.zip; 2) бесплатно распространяемая библиотека org.apache.tools.zip.
Данные библиотеки практически взаимозаменяемые. Поменять код алгоритма для архивации и разархивации данных, написанный для первой библиотеки, на код для второй и обратно не составляет никакого труда. Различия минимальны, так как необходимые классы ZipEntry, ZipEntry, ZipOutputStream почти полностью соответствуют друг другу.
Тем не менее, наблюдаются существенные различия, которые следует учитывать при выборе той или иной библиотеки.
Библиотеку org.apache.tools.zip стоит применять в тех ситуациях, когда возникают проблемы с кодировкой при архивации, так как данная библиотека позволяет установить некоторую наиболее подходящую кодировку с помощью метода setEncoding у класса ZipOutputStream;
- Второе существенное различие – время работы алгоритма, необходимое для архивации данных.
Для анализа быстродействия алгоритма использовался планшет со следующими характеристиками:
1. процессор: Tegra 3 T30L; 2. количество ядер процессора: 4; 3. частота процессора: 1200МГц; 4. объем оперативной памяти: 1024Мб.
Программы по восстановлению данных
... по архивации и восстановлению данных. Решить следующие задачи: 1. выявить причины удаления данных; 2. провести анализ по программам восстановления данных; 3. сделать вывод на основе проведенного исследования. Структура курсовой работы ... т.к. изменения, внесенными этими транзакциями, отсутствуют после восстановления базы данных из резервной копии. Наиболее плохим случаем является ситуация, когда разрушена ...
Результаты анализа приведены в таблице 1.
Таблица 1.
- Сравнение времени работы алгоритма архивации.
<�Тип файла>-файл Размер файла/ов Время
java.util.zip org.apache.tools.zip
pdf 16,3Мб 8,5с 9,2с
видео 361Мб 3минуты 9с 4минуты 3c
doc (3 файла) 3,52Мб 3с 3с
txt (5 файлов) 5,5кб 0,6с 0,8с
3.3. Форматы хранения данных
XML (eXtensible Markup Language) — расширяемый язык разметки. [4] XML
применяется для большого числа абсолютно разных задач. В том числе, он очень удобен
для хранения данных.
Преимущества:
1) поддерживает Unicode;
2) имеет строго заданный синтаксис;
3) стандартизован W3C;
4) платформонезависим.
Недостатки:
1) синтаксис XML избыточен;
2) размер существенно больше, чем у других форматов (JSON, YAML).
Пример:
Pupkin
Novosibirsk
Demakova
+79139130000
9045798749
Пример кода 3 – пример данных в формате XML.
JSON (JavaScript Object Notation) — текстовый формат обмена данными.[2]
Преимущества:
1) поддерживает Unicode;
2) лаконичен;
3) удобочитаем.
Недостатки:
1) менее распространён как формат хранения;
2) выгрузка офисных форматов зачастую возможна только в XML;
3) в JDK нет встроенных средств для работы с JSON.
Пример:
{ «addresses»: [
{ «name»: «Pupkin»,
«city»: «Novosibirsk»,
«street»: «Demakova»,
«phones»: { «mobile»: «+79139130000» },
«documents»: { «driving permit»: «123DP» }
}
]
}
Пример кода 4 – пример данных в формате JSON.
Исходя из приведенных выше данных, было решено, что JSON наиболее подходящий формат для данного приложения. Несмотря на некоторые минусы данного формата, это никак не повлияет на работу приложения. К тому же, так как необходимо хранить в файлах небольшие объемы данных, при использовании JSON удастся существенно уменьшить размеры файлов.
3.4. AlarmManager
AlarmManager – это класс из Android SDK, который предоставляет возможность выполнить некоторое событие в фоновом режиме в назначенное время. Событие может быть совершено единожды после запуска, или же многократно, через некоторое время после запуска, или сразу же после запуска.
Стоит заметить, что после запуска AlarmManager он продолжает работать до тех пор, пока устройство не будет выключено или не отменят запуск, то есть он работает независимо от того, открыто или закрыто приложение.
Примеры кода для запуска и отмены представлены ниже (примеры кода 5 и 6).
public void SetAlarm(Context context) {
AlarmManager am = (AlarmManager) context.
getSystemService(Context.ALARM_SERVICE);
- Intent intent = new Intent(context, Test.class);
- PendingIntent pi = PendingIntent.getBroadcast(context,
0, intent, 0);
- am.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), 1000, pi); }
Экономическая эффективность использования системы «Умный Дом» в жилищной сфере
... момент возгорания в квартире или доме находились люди, интеллектуальная система «умного дома», в первую очередь, активирует звуковую ... Цель выпускной квалификационной работы – эффективность использования системы «Умный Дом» в жилищной сфере. Для достижения цели ... умным» домом следует понимать систему, которая обеспечивает безопасность и ресурсосбережение (в том числе и комфорт) для всех пользователей. ...
Пример кода 5 — пример запуска AlarmManager.
public void CancelAlarm(Context context) {
Intent intent = new Intent(context, Test.class);
- PendingIntent sender = PendingIntent.getBroadcast(context, 0,
intent, 0);
AlarmManager alarmManager = (AlarmManager)
context.getSystemService(Context.ALARM_SERVICE);
- alarmManager.cancel(sender); }
Пример кода 6 — пример отмены AlarmManager.
Стоит заметить, что при реализации события для AlarmManager мы реализуем некоторый класс (в примере это класс Test), который «привязываем» к нашему «будильнику», тем самым исключается возможность запуска следующего события из класса Test, пока предыдущее событие не наступит или не будет отменено. Таким образом, исключается вероятность запуска двух или более механизмов для автоматического резервного копирования.
BroadcastReceiver
Это компонент для получения внешних событий и реакции на них. Класс BroadcastReceiver является базовым для класса, в котором должны происходить получение и обработка сообщений, посылаемых клиентским приложением с помощью вызова метода sendBroadcast().
Данный компонент необходим при работе с AlarmManager. В приведенном выше примере класс Test наследуется от BroadcastReceiver для того, чтобы реализовать абстрактный метод onReceive, который вызывается в AlarmManager. Очень важно понимать, что сам AlarmManager ничего не делает, кроме как запускает некоторое событие единожды или многократно. Вся логика вызываемого события лежит в наследуемом от BroadcastReceiver классе и полностью зависит от разработчика. Пример реализации метода onReceive представлен в примере кода 7.
public class Test extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast toast = Toast.makeText(getApplicationContext(),
«Пора покормить кота!»,
Toast.LENGTH_SHORT);
- Toast.show();
}
}
Пример кода 7 — пример метода onReceive.
3.5. Синхронизация с облачным хранилищем
Ответ на последний вопрос, связанный с синхронизацией с облачным хранилищем, можно легко найти в документации того облачного хранилища, с которым будет происходить взаимодействие. Большинство облачных хранилищ на данный момент предоставляют для разработчика хорошо задокументированное API. Поэтому данный вопрос не вызовет осложнений.
Свойства облачного хранилища, используемого при реализации
Для реализации данной работы было решено использовать Dropbox в качестве облачного хранилища. Это обусловлено двумя причинами:
1) С точки зрения пользователя.
Среди пользователей облачных хранилищ данное облачное хранилище имеет большую популярность.
Любой пользователь при регистрации может получить несколько гигабайт бесплатного места. Данное облачное хранилище имеет глобальный охват, а также имеет «шаговую» доступность для пользователя. Пользователь может пользоваться Dropbox, используя и персональный компьютер, и мобильное устройство.
2) С точки зрения разработчика.
Для разработчиков, которые планируют работать с Dropbox, предоставляется Sync API.
Исследование и разработка методов и алгоритмов резервного копирования ...
... системы резервного копирования – процесс весьма сложный и трудоемкий. Известно, что используемые алгоритмы резервного копирования имеют ряд существенных недостатков, в частности не предоставляют выбора соотношений основных характеристик процессов резервного копирования: времени создания копий, восстановления данных, ...
Отмечается, что Sync API позволяет работать приложениям с сервисом Dropbox как с локальным хранилищем на устройстве. Разработчикам не будет нужды вникать в тонкости синхронизации данных. При этом они смогут создавать приложения, обменивающиеся данными между различными устройствами, в том числе и между различными платформами. Также можно работать с данными даже и без Интернетсоединения, так как при подключения к сети интернет произойдет автоматическая синхронизация с сервисом Dropbox.[6]
Следовательно, разработчика уже не должны волновать проблемы, связанные с сетевой передачей данных, такие как возможность потери данных, необходимость в повторной передаче тех данных, которые были «потеряны».
Кроме того, разработчикам предоставляется класс DbxAccountManager, с помощью которого можно с легкостью работать с учетными записями пользователя. Пользователю достаточно один раз авторизоваться и разрешить приложению пользоваться данной учетной записью.
Класс DbxFile позволяет открывать и создавать, читать файл и записывать информацию в файл так же, как это происходит и при работе с обычными файлами, что очень удобно для разработчиков.
4. Инструменты разработки
Для разработки мобильных приложений на платформе Android были использованы:
1) IntelliJ IDEA — коммерческая интегрированная среда разработки программного обеспечения на многих языках программирования, в частности Java, JavaScript, Python, и др., разработанная компанией JetBrains. [3] Для реализации выпускной квалификационной работы была использована версия Community Edition;
2) Java Development Kit (JDK) — бесплатно распространяемый комплект разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE); [1]
3) Android SDK — эмулятор операционной системы Android, который можно поставить на обычный ПК, независимо от того, какая операционная система на нем стоит (программа практически кроссплатформенная).
[7]
5. Функциональность приложения
5.1 Функциональные требования
Описание системы
Система должна представлять собой приложение, функционирующее на платформе Android, которое дает пользователю возможность создавать резервную копию данных со своего Android-устройства и восстанавливать эти данные, а так же позволяет настраивать и осуществлять автоматическое резервное копирование данных.
Функциональные требования
1) Система должна предоставлять возможность выбора файлов, находящихся на устройстве пользователя, для самостоятельного резервного копирования;
2) система должна создавать резервную копию данных, выбранных пользователем, в облачном хранилище, предоставленном пользователю;
3) система должна восстанавливать данные на любом мобильном устройстве, которое функционирует на платформе Android;
4) система должна позволять настраивать механизм автоматического резервного копирования, а также запускать и останавливать механизм по желанию пользователя;
5) система должна позволять добавлять собственные типы данных (текстовые данные, аудио-файлы), а также удалять их при необходимости;
6) система должна позволять пользователю добавлять новые форматы в список данных, если их нет в сохраненных форматах, а также удалять ненужный формат по желанию пользователя;
Методы защиты информации от несанкционированного доступа и копирования
... защиты информации относятся: Программы идентификации аутентификации пользователей КС; Программы разграничения доступа пользователе к ресурсам КС; Программы от несанкционированного доступа , копирования изменения и использования. Под идентификацией пользователя, применительно к обеспечению безопасности КС, ... нение информации (документов, баз данных) на носителях в зашифрованном ви ...
7) после запуска автоматического резервного копирования, система должна создавать резервную копию данных тех типов, которые выбрал пользователь;
8) система должна запускать восстановление данных по последней резервной копии.
5.2. Диаграммы вариантов использования
uc
Создать резервную
копию данных
Настроить автоматическое
резервное копирование
Пользователь данных
Восстановить данные
Рисунок 8 — контекстная диаграмма вариантов использования.
Если рассматривать контекстную диаграмму вариантов использования, представленную на рисунке 8, более подробно, то получим соответствующие диаграммы вариантов использования, приведенные на рисунках 9, 10 и 11. uc 1: Настроить автоматическое резервное копирование данных
Выбрать типы
данных Удалить тип данных
Создать формат
данных
Удалить формат
данных
Создать тип данных
Авторизоваться
Пользователь
«include»
Выбрать облачное
хранилище
Запуск механизма
автоматического резервного
копирования данных
Выбрать
дополнительные
настройки
Сохранить типы
данных
Отмена автоматического
резервного копирования
Рисунок 9 — диаграмма для варианта использования «Настоить автоматическое
резервное копирование» uc 2: Восстановить данные
Восстановить данные
«include»
Авторизоваться Пользователь
Выбрать облачное
хранилище
Рисунок 10 — диаграмма для варианта использования «Восстановить данные»
uc 3: Создать резервную копию данных
Посмотреть
Выбрать содержимое папки
файлы/папки «extend»
Создать резервную Создать резервную копию с
копию помощью механизма
«extend» автоматического резервного Пользователь копирования
«extend»
Создать резервную
копию
самостоятельно
«include»
Выбрать облачное
хранилище Авторизоваться
Рисунок 11 — диаграмма для варианта использования «Создать резервную копию
данных»
5.3. Сценарии вариантов использования
Вариант использования «Cоздать резервную копию»
a. Выбрать файлы/папки
Предшествующие условие – пользователь находится в окне для самостоятельного резервного копирования данных.
Таблица 2.
Сценарий варианта использования «Выбрать файлы/папки».
Пользователь Система
1. Запрашивает данные,
которые находятся в устройстве
2. Предоставляет список
файлов и папок устройства
3. Выбирает данные для
создания резервной копии
4. Сохраняет список
выбранных данных в памяти
b. Создать резервную копию самостоятельно
Предшествующие условие – пользователь выбрал данные, выбрал облачное хранилище.
Таблица 3.
Сценарий варианта использования «Создать резервную копию самостоятельно».
Пользователь Система
1. Выбирает пункт меню
«Создать резервную копию»
2. Создает резервную копию
данных, которые выбрал пользователь,
отправляет данные на сервер, сообщает
пользователю о результате
c. Создать резервную копию с помощью механизма автоматического резервного копирования
Предшествующее условие – пользователь запустил автоматическое резервное копирование данных.
Таблица 4.
Сценарий варианта использования «Создать резервную копию с помощью
механизма автоматического резервного копирования».
Пользователь Система
1. Создает резервную копию
данных, используя информацию из
файла, где находятся перечень типов
данных и их форматов, которые выбрал
пользователь, отправляет данные на
сервер, сообщает пользователю о
результате один раз в некоторый
промежуток времени.
d. Посмотреть содержимое папки
Предшествующее условие – пользователь выбирает файлы и папки для самостоятельного резервного копирования данных.
Таблица 5.
Сценарий варианта использования «Посмотреть содержимое папки».
Пользователь Система
1. Выбирает папку,
содержимое которой необходимо
просмотреть
2. Запрашивает список
файлов и папок в выбранной папке
3. Предоставляет список
файлов и папок e. Выбрать облачное хранилище Предшествующее условие – пользователь выбрал данные для создания резервной копии и нажал кнопку «Далее»
Таблица 6.
Сценарий варианта использования «Выбрать облачное хранилище».
Пользователь Система
1. Предоставляет список облачных
хранилищ
2. Выбирает облачное хранилище
из списка
f. Авторизоваться Предшествующее условие – пользователь выбрал облачное хранилище для автоматического или самостоятельного резервного копирования данных или для восстановления данных
Таблица 7.
Сценарий варианта использования «Авторизоваться».
Пользователь Система
1. Предоставляет форму, в
которую необходимо внести данные,
необходимые для авторизации
2. Вводит необходимые для
авторизации данные
3. Проверяет подлинность
данных, выводит сообщение о
результате Альтернатива: в случае автоматической настройки резервного копирования, необходимые для авторизации данные сохраняются приложением.
Вариант использования «Восстановить данные»
a. Восстановить данные
Предшествующее условие – пользователь выбрал облачное хранилище, в котором находятся данные.
Таблица 8.
Сценарий варианта использования «Восстановить данные».
Пользователь Система
1. Выбирает пункт подменю
«Восстановить данные из облачного
хранилища»
2. Нажимает кнопку запуска
восстановления данных
3. Запускает функцию
восстановления данных, сообщает о
результате
Альтернатива: в приложении нет сохраненных данных об облачном хранилище, в котором находятся данные для восстановления или же пользователь использовал несколько облачных хранилищ. В таком случае пользователю будет предоставлен вариант использования «Выбрать облачное хранилище», после чего 2й пункт данного варианта использования вступает в силу.
b. Выбрать облачное хранилище
Таблица 9.
Сценарий варианта использования «Выбрать облачное хранилище».
Пользователь Система
1. Выбирает пункт меню
«Восстановить данные»
2. Предоставляет список
облачных хранилищ
3. Выбирает облачное
хранилище из списка
Вариант использования «Настроить автоматическое резервное
копирование»
a. Выбрать дополнительные настройки
Предшествующее условие – пользователь выбрал типы данных для автоматического резервного копирования и нажал «Продолжить» в меню.
Таблица 10.
Сценарий варианта использования «Выбрать дополнительные настройки».
Пользователь Система
1. Предоставляет список
дополнительных настроек
2. Выбирает настройки
согласно своим предпочтениям,
выбирает пункт меню «Сохранить»
3. Предоставляет диалог для
подтверждения сохранения проделанной
работы
4. Нажимает кнопку
«Сохранить»
5. Сохраняет данные
настроек в памяти
Альтернатива: пользователь нажимает кнопку «Отмена». В таком случае данные не будут сохранены в памяти.
b. Сохранить типы данных
Предшествующее условие – пользователь модифицировал типы данных.
Таблица 11.
Сценарий варианта использования «Сохранить типы данных».
Пользователь Система
1. Пользователь выбирает
пункт меню «Сохранить»
2. Пользователю
предоставляется диалог для
подтверждения сохранения результата
проделанной работы
3. Пользователь нажимает
кнопку «Сохранить»
4. Система сохраняет
текущий список типов данных с
форматами данных в файле
Альтернатива: пользователь нажимает кнопку «Отмена», в таком случае сохранение данных в файл не происходит.
c. Создать формат данных
Предшествующее условие – пользователь находится в окне настройки автоматического резервного копирования.
Таблица 12.
Сценарий варианта использования «Создать формат данных».
Пользователь Система
1. Выбирает тип данных, в
который необходимо добавить новый
формат
2. Предоставляет
пользователю окно для подробного
рассмотрения типа данных
3. Пользователь выбирает
пункт меню «Добавить новый формат»
4. Предоставляет диалог с
возможностью ввода данных
5. Вводит необходимые
данные
6. Нажимает «Подтвердить»
7. Проверяет данные на
отсутствие повторов, добавляет новый
формат данных в соответствующий тип
данных, в случае успеха сообщает
пользователю о результатах
d. Удалить формат данных
Предшествующее условие – пользователь находится в окне настройки автоматического резервного копирования.
Таблица 13.
Сценарий варианта использования «Удалить формат данных».
Пользователь Система
1. Выбирает тип данных, из
которого необходимо удалить
определенный формат
2. Предоставляет
пользователю окно для подробного
рассмотрения типа данных
3. Выбирает формат данных
для удаления долгим нажатием на
формат
4. Удаляет данный формат из
выбранного типа данных, сообщает
пользователю о результатах
e. Выбрать типы данных
Предшествующее условие – пользователь настраивает автоматическое резервное копирование данных.
Таблица 14.
Сценарий варианта использования «Выбрать типы данных».
Пользователь Система
1. Загружает данные из файла
2. Предоставляет список
типов данных с соответствующими
форматами
3. Выбирает типы данных
для создания резервной копии
f. Создать тип данных
Предшествующее условие – пользователь настраивает автоматическое резервное копирование данных.
Таблица 15.
Сценарий варианта использования «Создать тип данных».
Пользователь Система
1. Выбирает пункт меню
«Добавить тип данных»
2. Предоставляет диалог для
создания нового типа данных
3. Вводит название нового
типа данных, нажимает кнопку
«Создать»
4. Система сохраняет новый
тип данных в памяти
Альтернатива: пользователь нажимает кнопку «Отмена», в таком случае новый тип данных не сохраняется в памяти.
g. Удалить тип данных
Предшествующее условие – пользователь настраивает автоматическое резервное копирование данных.
Таблица 16.
Сценарий варианта использования «Удалить тип данных».
Пользователь Система
1. Длинным нажатием на
элемент списка пользователь выбирает
тип данных, который нужно удалить
2. Предоставляет диалог для
подтверждения удаления выбранного
типа данных
3. Нажимает кнопку
«Удалить»
4. Система удаляет
выбранный тип данных из памяти
Альтернатива: пользователь нажимает кнопку «Отмена», в таком случае выбранный тип данных не удаляется из памяти.
h. Выбрать облачное хранилище
Предшествующее условие – пользователь находится в окне выбора дополнительных настроек, нажимает кнопку «Далее».
Таблица 17.
Сценарий варианта использования «Выбрать облачное хранилище».
Пользователь Система
1. Загружает из файла список
облачных хранилищ
2. Предоставляет список
облачных хранилищ
3. Выбирает облачное
хранилище из списка
4. Сохраняет необходимую
информацию об облачном хранилище
i. Запуск механизма автоматического резервного копирования
Предшествующее условие – пользователь выбрал все необходимые настройки.
Таблица 18.
Сценарий варианта использования «Запуск механизма автоматического резервного
копирования».
Пользователь Система
1. Нажимает кнопку
«Запуск»
2. Сохраняет все
необходимые данные в файлах
3. Запускает механизм
автоматического резервного
копирования данных
j. Отмена автоматического резервного копирования данных
Предшествующее условие – пользователь запустил механизм автоматического резервного копирования данных.
Таблица 19.
Сценарий варианта использования «Отмена автоматического резервного
копирования данных».
Пользователь Система
1. Выбирает пункт меню
«Настроить автоматическое резервное
копирование»
2. Сообщает пользователю о
том, что пользователь запустил
механизм автоматического резервного
копирования данных и предлагает
пользователю продолжить или отменить
автоматическое резервное копирование
3. Выбирает
«Приостановить»
4. Останавливает
автоматическое резервное копирование
данных
Альтернатива: пользователь нажимает кнопку «Отмена». В этом случае пользователь вернется в главное меню и автоматическое резервное копирование не прекратит работу.
6. Разработка приложения
Результатом разработки является приложение для резервного копирования данных, работающее на платформе Android.
Скриншоты приложения (рисунки 15-18), а также некоторые диаграммы (рисунки 12-14) и примеры кода (пример кода 8) представлены ниже.
Диаграммы классов
class CloudStorageWork
BroadcastReceiver
+ onReceive(Intent, Context) : void
CloudStorageWork
+ cancelAlarm(Context) : void
+ getDataInCloudStorage() : LinkedList
+ getInstance(Context, Activity) : void
- getPortionFile() : LinkedList
+ onReceive(Intent, Context) : void
+ setAlarm(Context) : void
+ setDataInCloudStorage(File, String) : void
DropboxCloudStorageWork
- APP_KEY: String
- APP_SECRET: String
- dbxAcctMgr: DbxAccountManager
+ getDataInCloudStorage() : LinkedList
+ getInstance(Context, Activity) : void
+ setDataInCloudStorage(File, String) : void
Рисунок 12 — диаграмма классов для работы с облачным хранилищем.
На данной диаграмме приведены классы, которые используются для автоматического резервного копирования.
CloudStorageWork – абстрактный класс для работы с облачным хранилищем.
Методы setAlarm, cancelAlarm и onReceive предназначены для автоматического резервного копирования.
Методы setAlarm и cancelAlarm были представлены выше в качестве примеров кода 5 и 6.
Методы getInstance, setDataInCloudStorage и getDataInCloudStorage являются абстрактными и реализуются в наследнике класса CloudStorageWork.
Класс DropboxCloudStorageWork реализует работу с облачным хранилищем Dropbox. Для работы с данным облачным хранилищем разработчикам предоставлено Sync API, содержащее все необходимые классы для работы с Dropbox. Один из таких классов можно увидеть на диаграмме в качестве атрибута – это класс DbxAccountManager, который необходим для работы с аккаунтами пользователей.
В случае реализации варианта использования «Выбрать облачное хранилище», разработчику необходимо создать новый класс с именем наподобие <�название облачного хранилища>CloudStorageWork и наследовать его от класса CloudStorageWork, реализуя абстрактные методы, необходимые для работы с новым облачным хранилищем, используя предоставленные им API.
Класс DropboxCloudStorageWork используется как для автоматического резервного копирования, так и для самостоятельного резервного копирования данных пользователем.
Рассмотрим методы CloudStorageWork подробнее:
1) getInstance – метод, в котором реализуется доступ к облачному хранилищу пользователя. В том случае, если пользователь уже авторизован, каждый новый доступ к облачному хранилищу возможен без участия пользователя. В том же случае, если пользователь еще не авторизовался на данном устройстве через приложение, то пользователю будут предоставлены необходимые данные для авторизации;
2) setDataInCloudStorage – метод, в котором реализуется отправка файлов в облачное хранилище;
3) getDataInCloudStorage – метод, в котором реализуется получение данных из облачного хранилища;
4) setAlarm – метод, необходимый для запуска автоматического резервного копирования;
5) cancelAlarm – метод, необходимый для отмены автоматического резервного копирования данных;
6) getPortionFile – метод, который возвращает «порции» файлов по типам, которые пользователь выбрал для автоматического резервного копирования. PortionFile – это небольшой вспомогательный класс, который содержит только список файлов;
7) onReceive – метод, в котором реализуется механизм автоматического резервного копирования. Для реализации используются методы getInstance и setDataInCloudStorage.
Стоит заметить, что для реализации автоматического резервного копирования используется паттерн «Шаблонный метод». Шаблонным методом в данном случае является метод onReceive.
Необходимость в данном паттерне основана на том, что независимо от облачного хранилища, сам алгоритм автоматического резервного копирования остается неизменным. Реализуя данный паттерн, мы не только избавляемся от дублирования кода, имея четкий алгоритм, в котором возникает необходимость реализации только конкретных частей, зависящих только от предоставленного облачным хранилищем API, но и предоставляем возможность разработчику в будущем добавить в приложение возможность работы пользователя с любым другим облачным хранилищем без изменения уже существующего программного кода.
Рисунок 13 — диаграмма классов для типов данных.
Класс DataType необходим для сохранения типов данных, информацию о
которых пользователь ввел при создании, а так же при автоматическом резервном
копировании данных, при котором информация о типах, которые выбрал
пользователь, берется из соответствующего файла.
Данный класс наследуется от Parcelable для того, чтобы его можно было передавать от одного Activity в другое.
Диаграмма взаимодействия.
Рисунок 14 — диаграмма взаимодействия метода onReceive.
Почти вся необходимая информация о данном методе была предоставлена выше, при описании диаграммы классов. Осталось рассмотреть метод getPortionFile.
Метод getPortionFile использует несколько методов класса FileWork:
1) getJson – метод, который читает данные из фала в формате JSON;
2) getListFilePortion – метод, который делит передаваемый в качестве параметра список файлов на «порции» следующим образом: если суммарный объем нескольких файлов не превышает 10Мб, то они составляют одну порцию, если же размер одного файла больше либо равен 10Мб, то он составляет одну порцию. Это необходимо в связи с тем, что большие «порции», т.е. больше 10Мб, архивируются дольше, чем несколько небольших. Кроме того, это уменьшает вероятность потери данных при отправке на облачное хранилище.
Код данного метода продемонстрирован ниже, в примере кода под номером 8:
public static LinkedList
getListFilePortion(LinkedList files){
LinkedList portionFiles = new
LinkedList();
- for (int i = 0;
- i <
- files.size();
- i++){
PortionFile portionFile = new PortionFile();
- portionFile.files.add(files.get(i));
- double size = files.get(i).length();
- while (i+1 <
- files.size() && size / 1024 <
- 10240){
i++;
- portionFile.files.add(files.get(i));
- size +=files.get(i).length();
}
portionFiles.add(portionFile);
}
return portionFiles; }
Пример кода 8 — код метода getListFilePortion.
Скриншоты приложения
Рисунок 15 — главное меню приложения. Рисунок 16 — окно для самостоятельного резервного копирования данных.
Рисунок 17 — окно для редактирования типа данных.
Рисунок 18 — окно для настройки резервного копирования данных.
7. Руководство пользователя
Приложение BackUpService предназначено для резервного копирования данных и их восстановления на мобильном устройстве. Данное приложение предназначено для использования пользователями мобильных устройств функционирующих на платформе Android.
Далее во всем руководстве пользователя будет описана работа с планшетом. Вследствие чего некоторые детали, связанные с внешним видом приложения, могут отличаться.
Версия ОС на Android-устройстве должна быть не ниже, чем 3. Информацию о версии устройства можно узнать через настройки устройства во вкладке «О планшете».
Рисунок 19 — главное меню.
Зайдя в главное меню, которое представлено на рисунке 19, можно увидеть 3 кнопки, а именно «Создать резервную копию самостоятельно», «Настроить автоматическое резервное копирование» и «Восстановить данные». Рассмотрим функции каждой более подробно.
Создать резервную копию самостоятельно
Рисунок 20 — главное меню.
Выбираем пункт меню «Создать резервную копию самостоятельно» и попадаем в окно для самостоятельного создания резервной копии.
Рисунок 21 — окно «Создать резервную копию самостоятельно».
В данном окне можно выбрать файлы и папки, резервную копию которых хотелось бы создать.
Рисунок 22 — окно «Создать резервную копию самостоятельно».
Во вкладке «Все файлы», выделенной красным цветом, можно просмотреть файлы и папки вашего устройства.
Рисунок 23 — окно «Создать резервную копию самостоятельно».
Во вкладке «Выбранные файлы» находятся те файлы и папки, которые были выбраны для создания резервной копии.
Рисунок 24 — окно «Создать резервную копию самостоятельно».
Для того чтобы создать резервную копию необходимо нажать на значок, который на изображении выше выделен желтым цветом. Тогда появится меню, в котором необходимо выбрать «Создать резервную копию»
Если резервная копия создается впервые, тогда приложение предложит авторизоваться и попросит разрешение для доступа к облачному хранилищу.
Настроить автоматическое резервное копирование
Рисунок 25 — главное меню.
Для того, чтобы настроить автоматическое резервное копирование и запустить его, необходимо выбрать пункт главного меню «Настроить автоматическое резервное копирование».
Рисунок 26 — окно «Настроить автоматическое резервное копирование».
Красным цветом на рисунке 26 выделена вкладка со всеми представленными типами данных.
Оранжевым выделена вкладка, в которой представлен список данных, в котором будет перечень выбранных в данный момент типов данных.
Желтым цветом выделено меню текущего окна приложения.
Рисунок 27 — окно «Настроить автоматическое резервное копирование».
Данное меню предлагает следующее: сохранить текущие результаты работы, добавить новый тип данных к существующему списку и запустить автоматическое резервное копирование.
Запуская автоматическое резервное копирование, пользователь дает команду приложению создавать резервную копию тех типов, которые были выбраны.
Если был удален, добавлен или изменен тип данных, но проделанная работа не была сохранена, то есть не был выбран пункт меню «Сохранить», то результат будет утерян. Кроме того, перед запуском автоматического резервного копирования тоже необходимо сохранить выбранные файлы, выбрав пункт меню «Сохранить».
Рисунок 28 – диалог создания нового типа данных.
Для того чтобы создать новый тип данных, необходимо выбрать пункт меню «Добавить новый тип данных». Сразу же появится диалоговое окно с полем для ввода имени нового типа данных.
Для того чтобы редактировать тип данных, необходимо длинным нажатием выбрать элемент списка с типами данных.
Рисунок 29 — окно «Редактировать тип данных».
На рисунке 29 изображен скриншот окна для редактирования типа данных.
Оранжевым цветом выделено имя типа данных, а желтым один из форматов данного типа данных.
Светло-зеленым выделено меню данного окна.
Голубым цветом выделены пункты меню. Данное меню предлагает сохранить проделанную работу, добавить новый формат данных и удалить текущий формат.
Для добавления нового формата используется диалог, аналогичный диалогу для добавления нового типа данных, изображенного на рисунке 28.
Если пользователь создает резервную копию впервые, то ему, так же, как и при самостоятельном резервном копировании, будет предложено авторизоваться.
Восстановить данные
Рисунок 30 — главное меню.
Выбирая пункт главного меню, выделенный красным цветом на рисунке 30, можно восстановить данные. В том случае, если пользователь не был авторизован, то ему будет предложено авторизоваться, после чего данные сами будут восстановлены на устройстве.
ЗАКЛЮЧЕНИЕ
В результате проделанной работы была выполнена поставленная цель, а именно, разработан эволюционный прототип приложения для резервного копирования данных и их восстановления.
Кроме того, все задачи данной выпускной квалификационной работы были выполнены и описаны в данном отчете.
Самыми трудоемкими задачами оказались те, которые непосредственно связаны с поиском и анализом информации, а также с написанием некоторых тестовых примеров.
К сожалению, приложение на данный момент не работает с такими данными как контакты пользователей. Кроме того, на данный момент не реализован вариант использования «Выбрать облачное хранилище».
К счастью, система разработана таким образом, что в дальнейшем разработчику не придется переписывать программный код приложения. Для реализации данного варианта использования разработчику необходимо лишь добавить новый подкласс к уже существующему, реализовав только необходимые методы, используя API, предоставленный облачным хранилищем.
Кроме того, хотелось бы реализовать вариант использования, связанный с дополнительными настройками автоматического резервного копирования. Было бы неплохо, если пользователь, к примеру, сможет настраивать частоту создания резервных копий.
Поэтому, в дальнейших планах работы над приложением находится реализация этих вариантов использования.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
[Электронный ресурс]//URL: https://urveda.ru/bakalavrskaya/vosstanovlenie-dannyih/
1. Java Development Kit [Электронный ресурс]// Википедия : свободная энцикл. Электрон. дан.-[Б.м., б.г.].-URL: http://ru.wikipedia.org/wiki/Java_Development_Kit (дата обращения: 10.06.2013).
2. JSON [Электронный ресурс]// Википедия : свободная энцикл.- Электрон. дан.-[Б.м., б.г.].-URL: http://ru.wikipedia.org/wiki/JSON (дата обращения: 01.06.2014).
3. IntelliJ IDEA [Электронный ресурс]// Википедия : свободная энцикл.- Электрон. дан.-[Б.м., б.г.].-URL: http://ru.wikipedia.org/wiki/IntelliJ_IDEA (дата обращения: 01.06.2014).
4. XML [Электронный ресурс]// Википедия : свободная энцикл.- Электрон. дан.-[Б.м., б.г.].-URL: http://ru.wikipedia.org/wiki/XML (дата обращения: 01.06.2014).
5. [Конкурс] Android изнутри или просто о сложном [Электронный ресурс]// mobile review.- Электрон. дан.-[Б.м.], 2013гг.- URL: review.com/articles/12029/ (дата обращения: 01.06.2014).
6. Полезные советы, хитрости и способы использования Dropbox [Электронный ресурс]// webtun.com.- Электрон. дан.-[Б.м.], 2013гг.-URL: tricks-and-tips-about-dropbox.html (дата обращения: 1.06.2014).
7. Что такое Android SDK – коротко и информативно SDK [Электронный ресурс]// ipodman.ru.- Электрон. дан.-[Б.м., б.г.].-URL: takoe-android-sdk—korotko-i-informativno-110.html (дата обращения: 10.06.2013).